]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
bash-5.0 distribution sources and documentation bash-5.0
authorChet Ramey <chet.ramey@case.edu>
Mon, 7 Jan 2019 14:27:52 +0000 (09:27 -0500)
committerChet Ramey <chet.ramey@case.edu>
Mon, 7 Jan 2019 14:27:52 +0000 (09:27 -0500)
528 files changed:
ABOUT-NLS
CHANGES
COMPAT
CWRU/changelog
INSTALL
MANIFEST
Makefile.in
NEWS
POSIX
README
aclocal.m4
alias.c
alias.h
array.c
array.h
arrayfunc.c
arrayfunc.h
assoc.c
bashhist.c
bashhist.h
bashintl.h
bashjmp.h
bashline.c
bashline.h
braces.c
builtins.h
builtins/Makefile.in
builtins/alias.def
builtins/bind.def
builtins/break.def
builtins/builtin.def
builtins/cd.def
builtins/command.def
builtins/common.c
builtins/common.h
builtins/complete.def
builtins/declare.def
builtins/echo.def
builtins/evalfile.c
builtins/evalstring.c
builtins/exec.def
builtins/exit.def
builtins/fc.def
builtins/fg_bg.def
builtins/getopts.def
builtins/hash.def
builtins/help.def
builtins/history.def
builtins/kill.def
builtins/let.def
builtins/mapfile.def
builtins/printf.def
builtins/pushd.def
builtins/read.def
builtins/return.def
builtins/set.def
builtins/setattr.def
builtins/shopt.def
builtins/source.def
builtins/test.def
builtins/trap.def
builtins/type.def
builtins/ulimit.def
builtins/wait.def
command.h
config-top.h
config.h.in
configure
configure.ac
copy_cmd.c
cross-build/qnx.cache [new file with mode: 0644]
doc/FAQ
doc/bash.0
doc/bash.1
doc/bash.html
doc/bash.info
doc/bash.pdf
doc/bash.ps
doc/bashref.dvi
doc/bashref.html
doc/bashref.info
doc/bashref.pdf
doc/bashref.ps
doc/bashref.texi
doc/builtins.0
doc/builtins.1
doc/builtins.ps
doc/rbash.ps
doc/version.texi
error.c
eval.c
examples/INDEX.html
examples/INDEX.txt
examples/bash-completion/README [new file with mode: 0644]
examples/bash-completion/bash-completion-2.5.tar.xz [new file with mode: 0644]
examples/functions/arrayops.bash [new file with mode: 0644]
examples/functions/autoload
examples/functions/autoload.v4 [new file with mode: 0644]
examples/functions/autoload.v4.t [new file with mode: 0644]
examples/loadables/Makefile.in
examples/loadables/README
examples/loadables/basename.c
examples/loadables/cat.c
examples/loadables/dirname.c
examples/loadables/fdflags.c [new file with mode: 0644]
examples/loadables/finfo.c
examples/loadables/head.c
examples/loadables/id.c
examples/loadables/ln.c
examples/loadables/mkdir.c
examples/loadables/necho.c
examples/loadables/pathchk.c
examples/loadables/print.c
examples/loadables/printenv.c
examples/loadables/push.c
examples/loadables/realpath.c
examples/loadables/rm.c [new file with mode: 0644]
examples/loadables/seq.c [new file with mode: 0644]
examples/loadables/sleep.c
examples/loadables/stat.c [new file with mode: 0644]
examples/loadables/tee.c
examples/loadables/template.c
examples/loadables/tty.c
examples/loadables/uname.c
examples/loadables/whoami.c
execute_cmd.c
execute_cmd.h
expr.c
externs.h
findcmd.c
findcmd.h
flags.c
flags.h
general.c
general.h
hashcmd.c
hashlib.c
include/shmbutil.h
include/stdc.h
include/typemax.h
input.c
input.h
jobs.c
jobs.h
lib/glob/Makefile.in
lib/glob/glob.c
lib/glob/glob_loop.c
lib/glob/gm_loop.c [new file with mode: 0644]
lib/glob/gmisc.c
lib/glob/sm_loop.c
lib/glob/smatch.c
lib/glob/strmatch.h
lib/malloc/malloc.c
lib/malloc/mstats.h
lib/malloc/stats.c
lib/readline/Makefile.in
lib/readline/bind.c
lib/readline/callback.c
lib/readline/colors.c
lib/readline/compat.c
lib/readline/complete.c
lib/readline/display.c
lib/readline/doc/hstech.texi
lib/readline/doc/hsuser.texi
lib/readline/doc/rltech.texi
lib/readline/doc/rluser.texi
lib/readline/doc/version.texi
lib/readline/emacs_keymap.c
lib/readline/examples/rlcat.c
lib/readline/funmap.c
lib/readline/histexpand.c
lib/readline/histfile.c
lib/readline/histlib.h
lib/readline/history.c
lib/readline/history.h
lib/readline/histsearch.c
lib/readline/input.c
lib/readline/isearch.c
lib/readline/keymaps.c
lib/readline/keymaps.h
lib/readline/kill.c
lib/readline/macro.c
lib/readline/mbutil.c
lib/readline/misc.c
lib/readline/nls.c
lib/readline/parens.c
lib/readline/parse-colors.c
lib/readline/readline.c
lib/readline/readline.h
lib/readline/rlconf.h
lib/readline/rlmbutil.h
lib/readline/rlprivate.h
lib/readline/rltty.c
lib/readline/savestring.c
lib/readline/search.c
lib/readline/shell.c
lib/readline/signals.c
lib/readline/terminal.c
lib/readline/text.c
lib/readline/tilde.c
lib/readline/undo.c
lib/readline/util.c
lib/readline/vi_keymap.c
lib/readline/vi_mode.c
lib/readline/xfree.c
lib/readline/xmalloc.c
lib/sh/Makefile.in
lib/sh/casemod.c
lib/sh/clock.c
lib/sh/eaccess.c
lib/sh/getenv.c
lib/sh/mbschr.c
lib/sh/mbscmp.c
lib/sh/pathcanon.c
lib/sh/pathphys.c
lib/sh/shmbchar.c
lib/sh/shquote.c
lib/sh/snprintf.c
lib/sh/strcasecmp.c
lib/sh/strtrans.c
lib/sh/timeval.c
lib/sh/ufuncs.c
lib/sh/unicode.c
lib/sh/utf8.c [new file with mode: 0644]
lib/sh/zread.c
lib/tilde/Makefile.in
lib/tilde/shell.c
lib/tilde/tilde.c
locale.c
make_cmd.c
make_cmd.h
nojobs.c
parse.y
parser-built
parser.h
patchlevel.h
pathexp.c
pathexp.h
pcomplete.c
pcomplete.h
po/LINGUAS
po/Makefile.in.in
po/af.gmo
po/af.po
po/bash.pot
po/bg.gmo
po/bg.po
po/ca.gmo
po/ca.po
po/cs.gmo
po/cs.po
po/da.gmo
po/da.po
po/de.gmo
po/de.po
po/el.gmo
po/el.po
po/en@boldquot.gmo
po/en@boldquot.po
po/en@quot.gmo
po/en@quot.po
po/eo.gmo
po/eo.po
po/es.gmo
po/es.po
po/et.gmo
po/et.po
po/fi.gmo
po/fi.po
po/fr.gmo
po/fr.po
po/ga.gmo
po/ga.po
po/gl.gmo
po/gl.po
po/hr.gmo
po/hr.po
po/hu.gmo
po/hu.po
po/id.gmo
po/id.po
po/it.gmo
po/it.po
po/ja.gmo
po/ja.po
po/lt.gmo
po/lt.po
po/nb.gmo
po/nb.po
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/pt.gmo [new file with mode: 0644]
po/pt.po [new file with mode: 0644]
po/pt_BR.gmo
po/pt_BR.po
po/ro.gmo
po/ro.po
po/ru.gmo
po/ru.po
po/sk.gmo
po/sk.po
po/sl.gmo
po/sl.po
po/sr.gmo
po/sr.po
po/sv.gmo
po/sv.po
po/tr.gmo
po/tr.po
po/uk.gmo
po/uk.po
po/vi.gmo
po/vi.po
po/zh_CN.gmo
po/zh_CN.po
po/zh_TW.gmo
po/zh_TW.po
print_cmd.c
redir.c
shell.c
shell.h
sig.c
subst.c
subst.h
support/Makefile.in
support/bashbug.sh.in [new file with mode: 0644]
support/config.guess [changed mode: 0644->0755]
support/config.rpath
support/config.sub [changed mode: 0644->0755]
support/man2html.c
support/shobj-conf
test.c
tests/alias.right
tests/alias.tests
tests/alias3.sub [new file with mode: 0644]
tests/alias4.sub [new file with mode: 0644]
tests/arith-for.right
tests/arith-for.tests
tests/arith.right
tests/arith.tests
tests/arith8.sub [new file with mode: 0644]
tests/array.right
tests/array.tests
tests/array22.sub [new file with mode: 0644]
tests/array23.sub [new file with mode: 0644]
tests/array24.sub [new file with mode: 0644]
tests/array25.sub [new file with mode: 0644]
tests/array26.sub [new file with mode: 0644]
tests/array27.sub [new file with mode: 0644]
tests/array5.sub
tests/assoc.right
tests/assoc.tests
tests/assoc10.sub [new file with mode: 0644]
tests/assoc9.sub [new file with mode: 0644]
tests/case.right
tests/case.tests
tests/case2.sub [new file with mode: 0644]
tests/case3.sub [new file with mode: 0644]
tests/case4.sub [new file with mode: 0644]
tests/casemod.right
tests/comsub-posix.tests
tests/comsub.right
tests/comsub.tests
tests/comsub1.sub
tests/comsub2.sub
tests/comsub4.sub [new file with mode: 0644]
tests/cond-regexp2.sub
tests/cond.tests
tests/coproc.tests
tests/dollar-at-star
tests/dollar-at-star4.sub
tests/dollar-at7.sub [new file with mode: 0644]
tests/dollar-star8.sub [new file with mode: 0644]
tests/dollar-star9.sub [new file with mode: 0644]
tests/dollar.right
tests/dstack2.tests
tests/dynvar.right [new file with mode: 0644]
tests/dynvar.tests [new file with mode: 0644]
tests/errors.right
tests/errors.tests
tests/errors5.sub
tests/errors6.sub
tests/errors7.sub [new file with mode: 0644]
tests/errors8.sub [new file with mode: 0644]
tests/exec.right
tests/exec12.sub
tests/exec7.sub
tests/execscript
tests/exp.right
tests/exp.tests
tests/exp10.sub [new file with mode: 0644]
tests/exp11.sub [new file with mode: 0644]
tests/exp12.sub [new file with mode: 0644]
tests/exp5.sub
tests/exp7.sub
tests/exp8.sub
tests/extglob.right
tests/extglob.tests
tests/extglob1a.sub
tests/extglob3.sub
tests/extglob4.sub
tests/extglob5.sub [new file with mode: 0644]
tests/getopts5.sub
tests/glob.right
tests/glob.tests
tests/glob1.sub
tests/glob2.sub [new file with mode: 0644]
tests/glob3.sub [new file with mode: 0644]
tests/glob4.sub [new file with mode: 0644]
tests/globstar2.sub
tests/heredoc.right
tests/heredoc.tests
tests/heredoc3.sub
tests/heredoc4.sub [new file with mode: 0644]
tests/histexp.right
tests/histexp.tests
tests/histexp3.sub
tests/histexp5.sub [new file with mode: 0644]
tests/histexp6.sub [new file with mode: 0644]
tests/history.right
tests/history.tests
tests/history3.sub [new file with mode: 0644]
tests/ifs.right
tests/ifs.tests
tests/ifs1.sub [new file with mode: 0644]
tests/intl.right
tests/jobs.right
tests/jobs.tests
tests/jobs1.sub
tests/jobs4.sub
tests/jobs6.sub [new file with mode: 0644]
tests/more-exp.tests
tests/nameref.right
tests/nameref11.sub
tests/nameref15.sub
tests/nameref19.sub [new file with mode: 0644]
tests/nameref20.sub [new file with mode: 0644]
tests/nameref21.sub [new file with mode: 0644]
tests/new-exp.right
tests/new-exp.tests
tests/new-exp1.sub
tests/new-exp10.sub
tests/new-exp11.sub [new file with mode: 0644]
tests/new-exp2.sub
tests/nquote1.right
tests/nquote1.tests
tests/parser.right
tests/parser.tests
tests/posix2syntax.sub [new file with mode: 0644]
tests/posixexp.right
tests/posixexp.tests
tests/posixexp1.sub
tests/posixexp2.sub
tests/posixexp2.tests
tests/posixexp3.sub [new file with mode: 0644]
tests/posixexp4.sub [new file with mode: 0644]
tests/posixexp5.sub [new file with mode: 0644]
tests/posixexp6.sub [new file with mode: 0644]
tests/posixexp7.sub [new file with mode: 0644]
tests/posixpat.tests
tests/printf.right
tests/printf.tests
tests/printf3.sub
tests/procsub.right [new file with mode: 0644]
tests/procsub.tests [new file with mode: 0644]
tests/procsub1.sub [new file with mode: 0644]
tests/quote.right
tests/quote.tests
tests/quote1.sub
tests/quote2.sub [new file with mode: 0644]
tests/read.tests
tests/redir.right
tests/redir.tests
tests/redir11.sub
tests/redir4.sub
tests/redir5.sub
tests/redir6.sub
tests/redir8.sub
tests/rsh.right
tests/rsh.tests
tests/rsh1.sub [new file with mode: 0644]
tests/rsh2.sub [new file with mode: 0644]
tests/run-all
tests/run-dynvar [new file with mode: 0644]
tests/run-glob-test
tests/run-minimal
tests/run-nquote4
tests/run-procsub [new file with mode: 0644]
tests/run-varenv
tests/set-x.right
tests/set-x.tests
tests/shopt.right
tests/test-glue-functions
tests/test.right
tests/test.tests
tests/test1.sub [new file with mode: 0644]
tests/tilde.tests
tests/trap.right
tests/trap.tests
tests/trap2.sub
tests/trap6.sub [new file with mode: 0644]
tests/type.right
tests/type3.sub
tests/unicode3.sub
tests/varenv.right
tests/varenv.tests [new file with mode: 0644]
tests/varenv10.sub [new file with mode: 0644]
tests/varenv11.sub [new file with mode: 0644]
tests/varenv12.sub [new file with mode: 0644]
tests/varenv13.sub [new file with mode: 0644]
tests/varenv14.sub [new file with mode: 0644]
tests/varenv15.in [new file with mode: 0644]
tests/varenv15.sub [new file with mode: 0644]
tests/varenv9.sub [new file with mode: 0644]
tests/version
tests/version.mini
tests/vredir.right
tests/vredir.tests
trap.c
trap.h
variables.c
variables.h
version.c
xmalloc.c
y.tab.c
y.tab.h

index 47d5e39f0e1a0e94d55613496dc65eb016be95cf..3cc828658cb4e15936879ef318fb7b9150b9be3e 100644 (file)
--- a/ABOUT-NLS
+++ b/ABOUT-NLS
-Notes on the Free Translation Project
-*************************************
+Notes on the Free Translation Project
+***************************************
 
-   Free software is going international!  The Free Translation Project
-is a way to get maintainers of free software, translators, and users all
-together, so that will gradually become able to speak many languages.
-A few packages already provide translations for their messages.
+Free software is going international!  The Free Translation Project is a
+way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
 
-   If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
+   If you found this 'ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU 'gettext' internally,
 itself available at your nearest GNU archive site.  But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
+need to install GNU 'gettext' prior to configuring, installing or using
 this package with messages translated.
 
    Installers will find here some useful hints.  These notes also
 explain how users should proceed for getting the programs to use the
 available translations.  They tell how people wanting to contribute and
-work at translations should contact the appropriate team.
+work on translations can contact the appropriate team.
 
-   When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used.  The information can be found in the
-`intl/VERSION' file, in internationalized packages.
+1.1 INSTALL Matters
+===================
 
-Quick configuration advice
-==========================
-
-   If you want to exploit the full power of internationalization, you
-should configure it using
-
-     ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed.  So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation.  Future versions of GNU `gettext' will
-very likely convey even more functionality.  So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
-   So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-INSTALL Matters
-===============
-
-   Some packages are "localizable" when properly installed; the
-programs they contain can be made to speak your own native language.
-Most such packages use GNU `gettext'.  Other packages have their own
-ways to internationalization, predating GNU `gettext'.
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language.  Most such
+packages use GNU 'gettext'.  Other packages have their own ways to
+internationalization, predating GNU 'gettext'.
 
    By default, this package will be installed to allow translation of
 messages.  It will automatically detect whether the system already
-provides the GNU `gettext' functions.  If not, the GNU `gettext' own
-library will be used.  This library is wholly contained within this
-package, usually in the `intl/' subdirectory, so prior installation of
-the GNU `gettext' package is _not_ required.  Installers may use
-special options at configuration time for changing the default
-behaviour.  The commands:
-
-     ./configure --with-included-gettext
-     ./configure --disable-nls
-
-will respectively bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
-   When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this.  This might be not what is desirable.  You
-should use the more recent version of the GNU `gettext' library.  I.e.
-if the file `intl/VERSION' shows that the library which comes with this
-package is more recent, you should use
+provides the GNU 'gettext' functions.  Installers may use special
+options at configuration time for changing the default behaviour.  The
+command:
 
-     ./configure --with-included-gettext
+     ./configure --disable-nls
 
-to prevent auto-detection.
+will _totally_ disable translation of messages.
 
-   The configuration process will not test for the `catgets' function
-and therefore it will not be used.  The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
+   When you already have GNU 'gettext' installed on your system and run
+configure without an option for your new package, 'configure' will
+probably detect the previously built and installed 'libintl' library and
+will decide to use it.  If not, you may have to to use the
+'--with-libintl-prefix' option to tell 'configure' where to look for it.
 
-   Internationalized packages have usually many `po/LL.po' files, where
+   Internationalized packages usually have many 'po/LL.po' files, where
 LL gives an ISO 639 two-letter code identifying the language.  Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package.  However, the environment variable `LINGUAS'
+translations have been forbidden at 'configure' time by using the
+'--disable-nls' switch, all available translations are installed
+together with the package.  However, the environment variable 'LINGUAS'
 may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
+'LINGUAS' should then contain a space separated list of two-letter
 codes, stating which languages are allowed.
 
-Using This Package
-==================
+1.2 Using This Package
+======================
 
-   As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination.  Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code.  For example, let's
-suppose that you speak German and live in Germany.  At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
+As a user, if your language has been installed for this package, you
+only have to set the 'LANG' environment variable to the appropriate
+'LL_CC' combination.  If you happen to have the 'LC_ALL' or some other
+'LC_xxx' environment variables set, you should unset them before setting
+'LANG', otherwise the setting of 'LANG' will not have the desired
+effect.  Here 'LL' is an ISO 639 two-letter language code, and 'CC' is
+an ISO 3166 two-letter country code.  For example, let's suppose that
+you speak German and live in Germany.  At the shell prompt, merely
+execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in
+'sh') or 'export LANG=de_DE' (in 'bash').  This can be done from your
+'.login' or '.profile' file, once and for all.
 
    You might think that the country code specification is redundant.
 But in fact, some languages have dialects in different countries.  For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
+example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil.  The
 country code serves to distinguish the dialects.
 
-   The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc.  On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
+   The locale naming convention of 'LL_CC', with 'LL' denoting the
+language and 'CC' denoting the country, is the one use on systems based
+on GNU libc.  On other systems, some variations of this scheme are used,
+such as 'LL' or 'LL_CC.ENCODING'.  You can get the list of locales
+supported by your system for your language by running the command
+'locale -a | grep '^LL''.
 
    Not all programs have translations for all languages.  By default, an
 English message is shown in place of a nonexistent translation.  If you
 understand other languages, you can set up a priority list of languages.
 This is done through a different environment variable, called
-`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
+'LANGUAGE'.  GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG'
+for the purpose of message handling, but you still need to have 'LANG'
 set to the primary language; this is required by other parts of the
-system libraries.  For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+system libraries.  For example, some Swedish users who would rather read
+translations in German than English for when Swedish is not available,
+set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'.
+
+   Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from 'no' to 'nb' recently (in 2003).  During the
+transition period, while some message catalogs for this language are
+installed under 'nb' and some older ones under 'no', it's recommended
+for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and
+older translations are used.
 
-   In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect.  For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
+   In the 'LANGUAGE' environment variable, but not in the 'LANG'
+environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to
+denote the language's main dialect.  For example, 'de' is equivalent to
+'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese
+as spoken in Portugal) in this context.
 
-Translating Teams
-=================
+1.3 Translating Teams
+=====================
 
-   For the Free Translation Project to be a success, we need interested
+For the Free Translation Project to be a success, we need interested
 people who like their own language and write it well, and who are also
 able to synergize with other translators speaking the same language.
 Each translation team has its own mailing list.  The up-to-date list of
 teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
+'http://translationproject.org/', in the "Teams" area.
 
    If you'd like to volunteer to _work_ at translating messages, you
 should become a member of the translating team for your own language.
 The subscribing address is _not_ the same as the list itself, it has
-`-request' appended.  For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
+'-request' appended.  For example, speakers of Swedish can send a
+message to 'sv-request@li.org', having this message body:
 
      subscribe
 
-   Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around.  If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation@iro.umontreal.ca' to reach the
+   Keep in mind that team members are expected to participate _actively_
+in translations, or at solving translational difficulties, rather than
+merely lurking around.  If your team does not exist yet and you want to
+start one, or if you are unsure about what to do or how to get started,
+please write to 'coordinator@translationproject.org' to reach the
 coordinator for all translator teams.
 
    The English team is special.  It works at improving and uniformizing
-the terminology in use.  Proven linguistic skill are praised more than
-programming skill, here.
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
 
-Available Packages
-==================
+1.4 Available Packages
+======================
 
-   Languages are not equally supported in all packages.  The following
-matrix shows the current state of internationalization, as of May 2003.
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of Jun 2014.
 The matrix shows, in regard of each package, for which languages PO
 files have been submitted to translation coordination, with a
 translation percentage of at least 50%.
 
-     Ready PO files       am az be bg ca cs da de el en en_GB eo es
-                        +-------------------------------------------+
-     a2ps               |       []          [] [] []                |
-     aegis              |                      ()                   |
-     anubis             |                                           |
-     ap-utils           |                                           |
-     bash               |                      []             [] [] |
-     batchelor          |                                           |
-     bfd                |                   []                   [] |
-     binutils           |                   []                   [] |
-     bison              |                   [] []                [] |
-     bluez-pin          |                []                   []    |
-     clisp              |                                           |
-     clisp              |                      []    []          [] |
-     coreutils          |             []    [] []                [] |
-     cpio               |                   [] []                [] |
-     darkstat           |                   ()                   [] |
-     diffutils          |             [] [] [] [] []          [] [] |
-     e2fsprogs          |                []    []                   |
-     enscript           |             []    [] []        []         |
-     error              |             []    [] []        []      [] |
-     fetchmail          |             [] () [] [] []             [] |
-     fileutils          |                   [] []                [] |
-     findutils          |             []    [] [] []          [] [] |
-     flex               |             []    [] []                [] |
-     gas                |                                        [] |
-     gawk               |             []    [] []                [] |
-     gcal               |             []                            |
-     gcc                |                   []                   [] |
-     gettext            |       []    []    [] []                [] |
-     gettext-runtime    |       []    []    [] []                [] |
-     gettext-tools      |                      []                [] |
-     gimp-print         |                [] [] []        []      [] |
-     gliv               |                                           |
-     glunarclock        |    []             [] []                   |
-     gnucash            |                      ()        []         |
-     gnucash-glossary   |                   [] ()                [] |
-     gnupg              |             [] ()    [] []          [] [] |
-     gpe-calendar       |                      []                   |
-     gpe-conf           |                      []                   |
-     gpe-contacts       |                      []                   |
-     gpe-edit           |                                           |
-     gpe-login          |                      []                   |
-     gpe-ownerinfo      |                      []                   |
-     gpe-sketchbook     |                      []                   |
-     gpe-timesheet      |                                           |
-     gpe-today          |                      []                   |
-     gpe-todo           |                      []                   |
-     gphoto2            |                [] [] []                [] |
-     gprof              |                   []                   [] |
-     gpsdrive           |                      ()    ()          () |
-     grep               |          [] []       [] []             [] |
-     gretl              |                                        [] |
-     hello              |             []    [] [] []          [] [] |
-     id-utils           |                   [] []                   |
-     indent             |             []       []             [] [] |
-     jpilot             |                [] [] []                [] |
-     jwhois             |                                        [] |
-     kbd                |                [] [] [] []             [] |
-     ld                 |                   []                   [] |
-     libc               |             [] [] [] [] []             [] |
-     libgpewidget       |                      []                   |
-     libiconv           |             []    [] []             [] [] |
-     lifelines          |                   [] ()                   |
-     lilypond           |                   []                      |
-     lingoteach         |                                           |
-     lingoteach_lessons |                      ()                () |
-     lynx               |             [] [] [] []                   |
-     m4                 |                [] [] [] []                |
-     mailutils          |             []                         [] |
-     make               |                   [] []                [] |
-     man-db             |             [] () [] []                () |
-     mysecretdiary      |                   [] []                [] |
-     nano               |             [] () [] []                [] |
-     nano_1_0           |             [] () [] []                [] |
-     opcodes            |                   []                   [] |
-     parted             |             [] [] [] []                [] |
-     ptx                |             []    [] []             [] [] |
-     python             |                                           |
-     radius             |                                           |
-     recode             |       []          [] [] []          [] [] |
-     screem             |                                           |
-     sed                |             []    [] []             [] [] |
-     sh-utils           |                   [] []                [] |
-     sharutils          |             [] [] [] [] []             [] |
-     sketch             |                   [] ()                [] |
-     soundtracker       |                   [] []                [] |
-     sp                 |                      []                   |
-     tar                |                [] [] []                [] |
-     texinfo            |                [] [] []             []    |
-     textutils          |             []    [] []                [] |
-     tin                |                      ()        ()         |
-     util-linux         |             [] [] [] []                [] |
-     vorbis-tools       |                [] []                   [] |
-     wastesedge         |                      ()                   |
-     wdiff              |             []    [] []                [] |
-     wget               |          [] [] [] [] [] []             [] |
-     xchat              |             []          []             [] |
-     xpad               |                                           |
-                        +-------------------------------------------+
-                          am az be bg ca cs da de el en en_GB eo es
-                           0  1  4  2 31 17 54 60 14  1   4   12 56
-     
-                          et fa fi fr ga gl he hr hu id it ja ko
-                        +----------------------------------------+
-     a2ps               | []    [] []                   ()    () |
-     aegis              |                                        |
-     anubis             |          []                            |
-     ap-utils           |          []                            |
-     bash               |          []             []             |
-     batchelor          |             []                         |
-     bfd                |          []                      []    |
-     binutils           |          []                      []    |
-     bison              | []       []                [] []       |
-     bluez-pin          |          [] []          [] []          |
-     clisp              |                                        |
-     clisp              |          []                            |
-     coreutils          | []       []                   [] []    |
-     cpio               |          []    []       []          [] |
-     darkstat           |          () []          [] []          |
-     diffutils          |       [] []    [] []    [] []    []    |
-     e2fsprogs          |                                        |
-     enscript           |          []          []                |
-     error              |       [] [] []          []             |
-     fetchmail          |                                  []    |
-     fileutils          | []       []             []    [] []    |
-     findutils          | []    [] [] [] []    [] [] [] [] [] [] |
-     flex               |          []                         [] |
-     gas                |          []                            |
-     gawk               |          []       []                   |
-     gcal               |          []                            |
-     gcc                |          []                            |
-     gettext            |          []                      [] [] |
-     gettext-runtime    |          []                []    [] [] |
-     gettext-tools      |                                  []    |
-     gimp-print         |          []                      []    |
-     gliv               |          ()                            |
-     glunarclock        |             [] []       []       []    |
-     gnucash            |                               []       |
-     gnucash-glossary   |                               []       |
-     gnupg              | []    [] []    []          [] [] []    |
-     gpe-calendar       |                            []          |
-     gpe-conf           |                                        |
-     gpe-contacts       |          []                            |
-     gpe-edit           |          []                []          |
-     gpe-login          |          []                            |
-     gpe-ownerinfo      |          []             [] []          |
-     gpe-sketchbook     |          []                            |
-     gpe-timesheet      |          [] []             []          |
-     gpe-today          |          [] []                         |
-     gpe-todo           |          []                []          |
-     gphoto2            |          []             []       []    |
-     gprof              |          []                []          |
-     gpsdrive           |          ()             []    () ()    |
-     grep               | []    [] [] [] [] [] [] [] [] [] []    |
-     gretl              |          []                            |
-     hello              | [] [] [] [] [] [] [] [] [] [] [] [] [] |
-     id-utils           |          []             [] []          |
-     indent             | []    [] []    []       [] [] [] []    |
-     jpilot             |          []                      ()    |
-     jwhois             |          []             [] [] []       |
-     kbd                |          []                            |
-     ld                 |          []                            |
-     libc               |       [] []    []       []       [] [] |
-     libgpewidget       |          [] []             []          |
-     libiconv           |       [] [] [] []    [] [] [] []       |
-     lifelines          |          ()                            |
-     lilypond           |          []                            |
-     lingoteach         |          []                []          |
-     lingoteach_lessons |                                        |
-     lynx               | []                      []    [] []    |
-     m4                 |          []    []          []    []    |
-     mailutils          |                                        |
-     make               |          []    [] [] []          [] [] |
-     man-db             |          []                   () ()    |
-     mysecretdiary      |          []                []          |
-     nano               |          []    []          [] []       |
-     nano_1_0           |          []    []          [] []       |
-     opcodes            |          []                []          |
-     parted             |          []    []                []    |
-     ptx                | []    [] [] [] []       [] []          |
-     python             |                                        |
-     radius             |                                        |
-     recode             |          []    [] []    [] [] []       |
-     screem             |                                        |
-     sed                | []       [] [] []       [] [] [] []    |
-     sh-utils           | []    [] []             []    [] []    |
-     sharutils          | []       []    []       []       []    |
-     sketch             |          []                            |
-     soundtracker       |          []    []    []                |
-     sp                 |          []                      ()    |
-     tar                | []    [] []    []    [] [] [] [] []    |
-     texinfo            |          []       [] []          []    |
-     textutils          |          []    []       []       [] [] |
-     tin                | []       ()                            |
-     util-linux         | []    [] []             []    () []    |
-     vorbis-tools       |          []                            |
-     wastesedge         |          ()                            |
-     wdiff              | []       []    []       [] []          |
-     wget               | []    [] []    [] [] [] []       []    |
-     xchat              | []       []                      []    |
-     xpad               |                                        |
-                        +----------------------------------------+
-                          et fa fi fr ga gl he hr hu id it ja ko
-                          20  1 15 73 14 24  8 10 30 31 19 31  9
-     
-                          lg lt lv ms nb nl nn no pl pt pt_BR ro
-                        +----------------------------------------+
-     a2ps               |          []    []    () () ()  []   [] |
-     aegis              |                ()                      |
-     anubis             |          []                         [] |
-     ap-utils           |                         ()             |
-     bash               |                                []      |
-     batchelor          |                                        |
-     bfd                |                                        |
-     binutils           |                                        |
-     bison              |          []    []              []   [] |
-     bluez-pin          |                                     [] |
-     clisp              |                                        |
-     clisp              |                []                      |
-     coreutils          |                         []             |
-     cpio               |                []       []     []      |
-     darkstat           |          []    []              []   [] |
-     diffutils          |          []             []     []      |
-     e2fsprogs          |                                        |
-     enscript           |                []              []      |
-     error              |                []              []      |
-     fetchmail          |                         ()     ()      |
-     fileutils          |                         []             |
-     findutils          |                []       []     []   [] |
-     flex               |                                []      |
-     gas                |                                        |
-     gawk               |                                []      |
-     gcal               |                                        |
-     gcc                |                                        |
-     gettext            |                         []             |
-     gettext-runtime    |                         []             |
-     gettext-tools      |                                        |
-     gimp-print         |                []                      |
-     gliv               |                                []      |
-     glunarclock        |          []                            |
-     gnucash            |                                        |
-     gnucash-glossary   |                []          []          |
-     gnupg              |                                        |
-     gpe-calendar       |                            []       [] |
-     gpe-conf           |                            []       [] |
-     gpe-contacts       |                            []          |
-     gpe-edit           |                            []       [] |
-     gpe-login          |                            []       [] |
-     gpe-ownerinfo      |                            []       [] |
-     gpe-sketchbook     |                            []       [] |
-     gpe-timesheet      |                            []       [] |
-     gpe-today          |                            []       [] |
-     gpe-todo           |                            []       [] |
-     gphoto2            |                                        |
-     gprof              |                                []      |
-     gpsdrive           |                ()    ()        ()      |
-     grep               |                         [] []  []   [] |
-     gretl              |                                        |
-     hello              |       [] [] [] [] [] [] []     []   [] |
-     id-utils           |                []              []   [] |
-     indent             |                []              []   [] |
-     jpilot             |                ()    ()                |
-     jwhois             |                []              []   [] |
-     kbd                |                                        |
-     ld                 |                                        |
-     libc               |             []       [] []     []      |
-     libgpewidget       |                            []       [] |
-     libiconv           |                                []   [] |
-     lifelines          |                                        |
-     lilypond           |                []                      |
-     lingoteach         |                                        |
-     lingoteach_lessons |                                        |
-     lynx               |                []              []      |
-     m4                 |                []       []     []   [] |
-     mailutils          |                                        |
-     make               |                []              []      |
-     man-db             |                                []      |
-     mysecretdiary      |                                []      |
-     nano               |          []    []       []          [] |
-     nano_1_0           |          [] []    []    []             |
-     opcodes            |                []              []   [] |
-     parted             |                   []       []  []      |
-     ptx                |             [] []    [] [] []  []   [] |
-     python             |                                        |
-     radius             |                                        |
-     recode             |                         []     []   [] |
-     screem             |                                        |
-     sed                |                                []   [] |
-     sh-utils           |             []                         |
-     sharutils          |                []                      |
-     sketch             |                                []      |
-     soundtracker       |                                        |
-     sp                 |                                        |
-     tar                |          [] []       [] []     []   [] |
-     texinfo            |                                     [] |
-     textutils          |             []                         |
-     tin                |                                        |
-     util-linux         |                []              []      |
-     vorbis-tools       |                []                   [] |
-     wastesedge         |                                        |
-     wdiff              |          []             []     []   [] |
-     wget               |                []       []          [] |
-     xchat              |       []       []                      |
-     xpad               |                                     [] |
-                        +----------------------------------------+
-                          lg lt lv ms nb nl nn no pl pt pt_BR ro
-                           0  0  2 11  7 26  3  4 18 15  34   34
-     
-                          ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
-                        +-------------------------------------------+
-     a2ps               | []    []    []    [] []                   | 16
-     aegis              | ()                                        |  0
-     anubis             |                   [] []                   |  5
-     ap-utils           |                      ()                   |  1
-     bash               | []                                        |  7
-     batchelor          |                                           |  1
-     bfd                |             []    []           []         |  7
-     binutils           |             []    []           []         |  7
-     bison              | []          []                            | 13
-     bluez-pin          |                                           |  7
-     clisp              |                                           |  0
-     clisp              |                                           |  5
-     coreutils          | []    []    []    []                 []   | 14
-     cpio               | []          []                 []         | 13
-     darkstat           |             []                 ()    ()   |  9
-     diffutils          | []          []    []                 []   | 21
-     e2fsprogs          |                   []                      |  3
-     enscript           | []          []    []                      | 11
-     error              |    []             []                 []   | 14
-     fetchmail          |                   []                      |  7
-     fileutils          | []    []    []    []           []    []   | 15
-     findutils          | [] [] []    []    []           []         | 27
-     flex               | []          []    []                      | 10
-     gas                |                   []                      |  3
-     gawk               |             []    []                      |  9
-     gcal               |             []    []                      |  4
-     gcc                |                   []                      |  4
-     gettext            | [] [] []    []    []                 []   | 15
-     gettext-runtime    | [] [] []    []    []                 []   | 16
-     gettext-tools      |    [] []                                  |  5
-     gimp-print         |    []       []                            | 10
-     gliv               |                                           |  1
-     glunarclock        | []          []             []             | 11
-     gnucash            |    []                                []   |  4
-     gnucash-glossary   |    []       []                       []   |  8
-     gnupg              |    []       []    []                 []   | 16
-     gpe-calendar       |                                      []   |  5
-     gpe-conf           |                                           |  3
-     gpe-contacts       |                                      []   |  4
-     gpe-edit           |                                      []   |  5
-     gpe-login          |                                      []   |  5
-     gpe-ownerinfo      |                                      []   |  7
-     gpe-sketchbook     |                                      []   |  5
-     gpe-timesheet      |                                      []   |  6
-     gpe-today          |                                      []   |  6
-     gpe-todo           |                                      []   |  6
-     gphoto2            |             []                 []         |  9
-     gprof              |             []    []                      |  7
-     gpsdrive           |    []       []                            |  3
-     grep               | []    []          [] []                   | 24
-     gretl              |                                           |  2
-     hello              | [] []       []    [] []                   | 33
-     id-utils           | []          []    []                      | 11
-     indent             | [] []       []    []                      | 19
-     jpilot             |             []    []    []     []    []   | 10
-     jwhois             | ()          ()    []                 []   | 10
-     kbd                |             []    []                      |  8
-     ld                 |             []    []                      |  5
-     libc               |    []       []    []           []         | 20
-     libgpewidget       |                                           |  6
-     libiconv           | [] [] []    []    [] []                   | 21
-     lifelines          |             []                            |  2
-     lilypond           |             []                            |  4
-     lingoteach         |                                           |  2
-     lingoteach_lessons |                                ()         |  0
-     lynx               | []          []    [] []                   | 14
-     m4                 | []          []                 []         | 15
-     mailutils          |                                           |  2
-     make               | []          []    []           []         | 15
-     man-db             |             []                            |  6
-     mysecretdiary      |             []    []                      |  8
-     nano               | []          []       []                   | 15
-     nano_1_0           | []          []       []                   | 15
-     opcodes            |             []    []                      |  9
-     parted             |             []    []                      | 13
-     ptx                | []          []    []                      | 22
-     python             |                                           |  0
-     radius             |                                           |  0
-     recode             | []    []    []    []                      | 19
-     screem             |             []                            |  1
-     sed                |    [] []    []    [] []                   | 20
-     sh-utils           | []    []          []                      | 13
-     sharutils          | []          []    []                 []   | 16
-     sketch             |             []                            |  5
-     soundtracker       |             []                            |  7
-     sp                 |                   []                      |  3
-     tar                |    [] []    []    []           []         | 24
-     texinfo            | []          []    []           []         | 13
-     textutils          | []    []    []    []                 []   | 15
-     tin                |                                           |  1
-     util-linux         |             []    []                      | 14
-     vorbis-tools       | []                                        |  7
-     wastesedge         |                                           |  0
-     wdiff              | [] []       []    []                      | 17
-     wget               | [] [] []    []    [] []              []   | 25
-     xchat              |    [] []    []                            | 11
-     xpad               |                                           |  1
-                        +-------------------------------------------+
-       50 teams           ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
-       97 domains         32 19 16  0 56  0 48 10  1  1  12    23    913
+     Ready PO files       af am an ar as ast az be bg bn bn_IN bs ca crh cs
+                        +---------------------------------------------------+
+     a2ps               |                       []                []     [] |
+     aegis              |                                                   |
+     anubis             |                                                   |
+     aspell             |                []                       []     [] |
+     bash               |                          []             []     [] |
+     bfd                |                                                   |
+     binutils           |                                         []        |
+     bison              |                                                   |
+     bison-runtime      |                []                                 |
+     buzztrax           |                                                [] |
+     ccd2cue            |                                                   |
+     ccide              |                                                   |
+     cflow              |                                                   |
+     clisp              |                                                   |
+     coreutils          |                                         []     [] |
+     cpio               |                                                   |
+     cppi               |                                                   |
+     cpplib             |                                         []        |
+     cryptsetup         |                                                [] |
+     datamash           |                                                   |
+     denemo             |                                         []     [] |
+     dfarc              |                                         []        |
+     dialog             |       []                                []     [] |
+     dico               |                                                   |
+     diffutils          |                                                [] |
+     dink               |                                         []        |
+     direvent           |                                                   |
+     doodle             |                                                [] |
+     dos2unix           |                                                   |
+     dos2unix-man       |                                                   |
+     e2fsprogs          |                                         []     [] |
+     enscript           |                                         []        |
+     exif               |                                                [] |
+     fetchmail          |                                         []     [] |
+     findutils          |                                                [] |
+     flex               |                                         []        |
+     freedink           |                                         []     [] |
+     fusionforge        |                                                   |
+     gas                |                                                   |
+     gawk               |                                         []        |
+     gcal               |                                         []        |
+     gcc                |                                                   |
+     gdbm               |                                                   |
+     gettext-examples   | []             []        []             []     [] |
+     gettext-runtime    |                          []             []     [] |
+     gettext-tools      |                          []             []        |
+     gjay               |                                                   |
+     glunarclock        |                []        []                    [] |
+     gnubiff            |                                                [] |
+     gnubik             |          []                                       |
+     gnucash            |          ()              ()             []        |
+     gnuchess           |                                                   |
+     gnulib             |                                                [] |
+     gnunet             |                                                   |
+     gnunet-gtk         |                                                   |
+     gold               |                                                   |
+     gphoto2            |                                                [] |
+     gprof              |                          []                       |
+     gramadoir          |                                                   |
+     grep               |                          []             []     [] |
+     grub               |                                         []        |
+     gsasl              |                                                   |
+     gss                |                                                   |
+     gst-plugins-bad    |                          []                    [] |
+     gst-plugins-base   |                          []             []     [] |
+     gst-plugins-good   |                          []             []     [] |
+     gst-plugins-ugly   |                          []             []     [] |
+     gstreamer          |                []        []             []     [] |
+     gtick              |                                                [] |
+     gtkam              |                       []                       [] |
+     gtkspell           | []             []     []                []     [] |
+     guix               |                                                   |
+     guix-packages      |                                                   |
+     gutenprint         |                                         []        |
+     hello              |                                         []        |
+     help2man           |                                                   |
+     help2man-texi      |                                                   |
+     hylafax            |                                                   |
+     idutils            |                                                   |
+     iso_15924          |                                                [] |
+     iso_3166           | []          []        [] [] []  []   [] [] []  [] |
+     iso_3166_2         |                                                   |
+     iso_4217           |                                                [] |
+     iso_639            |             [] []     [] [] []  []      [] []  [] |
+     iso_639_3          |                []                          []     |
+     iso_639_5          |                                                   |
+     jwhois             |                                                   |
+     kbd                |                                                [] |
+     klavaro            |          []              [] []          []     [] |
+     ld                 |                          []                       |
+     leafpad            |                       [] []             []     [] |
+     libc               |                          []             []     [] |
+     libexif            |                       ()                          |
+     libextractor       |                                                   |
+     libgnutls          |                                                [] |
+     libgphoto2         |                                                [] |
+     libgphoto2_port    |                                                [] |
+     libgsasl           |                                                   |
+     libiconv           |                          []                    [] |
+     libidn             |                                                [] |
+     liferea            |          []    []                       []     [] |
+     lilypond           |                                         []     [] |
+     lordsawar          |                                         []        |
+     lprng              |                                                   |
+     lynx               |                                         []     [] |
+     m4                 |                                                [] |
+     mailfromd          |                                                   |
+     mailutils          |                                                   |
+     make               |                                                [] |
+     man-db             |                                         []     [] |
+     man-db-manpages    |                                                   |
+     midi-instruments   |          []                             []     [] |
+     minicom            |                                                [] |
+     mkisofs            |                                                [] |
+     myserver           |                                                [] |
+     nano               |                          []             []     [] |
+     opcodes            |                                                   |
+     parted             |                                                [] |
+     pies               |                                                   |
+     pnmixer            |                                                   |
+     popt               |                                                [] |
+     procps-ng          |                                                   |
+     procps-ng-man      |                                                   |
+     psmisc             |                                                [] |
+     pspp               |                                         []        |
+     pushover           |                                                [] |
+     pwdutils           |                                                   |
+     pyspread           |                                                   |
+     radius             |                                         []        |
+     recode             |                       []                []     [] |
+     recutils           |                                                   |
+     rpm                |                                                   |
+     rush               |                                                   |
+     sarg               |                                                   |
+     sed                |                []        []             []     [] |
+     sharutils          |                                                [] |
+     shishi             |                                                   |
+     skribilo           |                                                   |
+     solfege            |                                         []     [] |
+     solfege-manual     |                                                   |
+     spotmachine        |                                                   |
+     sudo               |                                         []     [] |
+     sudoers            |                                         []     [] |
+     sysstat            |                                                [] |
+     tar                |                          []             []     [] |
+     texinfo            |                                         []     [] |
+     texinfo_document   |                                         []     [] |
+     tigervnc           |                          []                       |
+     tin                |                                                   |
+     tin-man            |                                                   |
+     tracgoogleappsa... |                                                   |
+     trader             |                                                   |
+     util-linux         |                                                [] |
+     ve                 |                                                   |
+     vice               |                                                   |
+     vmm                |                                                   |
+     vorbis-tools       |                                                [] |
+     wastesedge         |                                                   |
+     wcd                |                                                   |
+     wcd-man            |                                                   |
+     wdiff              |                                         []     [] |
+     wget               |                                                [] |
+     wyslij-po          |                                                   |
+     xboard             |                                                   |
+     xdg-user-dirs      | []    []    [] []     [] []     []      [] []  [] |
+     xkeyboard-config   |                          []             []     [] |
+                        +---------------------------------------------------+
+                          af am an ar as ast az be bg bn bn_IN bs ca crh cs
+                           4  0  2  5  3 11   0  8 25  3   3    1 55  4  74
+
+                          da  de  el en en_GB en_ZA eo es et eu fa fi  fr 
+                        +--------------------------------------------------+
+     a2ps               | []  []  []     []         [] [] []       []  []  |
+     aegis              | []  []                       []              []  |
+     anubis             | []  []                       []          []  []  |
+     aspell             | []  []         []         [] []          []  []  |
+     bash               |                           [] []              []  |
+     bfd                | []                           []          []  []  |
+     binutils           |                              []          []  []  |
+     bison              | []  []  []                [] [] []       []  []  |
+     bison-runtime      | []  []  []                [] [] []       []  []  |
+     buzztrax           | []  []                                   []  []  |
+     ccd2cue            | []  []                    []                 []  |
+     ccide              | []  []                    [] []          []  []  |
+     cflow              | []  []                    []             []  []  |
+     clisp              | []  []     []                []              []  |
+     coreutils          | []  []                       [] []           []  |
+     cpio               | []  []                       []          []  []  |
+     cppi               | []  []                    []             []  []  |
+     cpplib             | []  []                    [] []          []  []  |
+     cryptsetup         | []  []                       []          []  []  |
+     datamash           | []  []                    []                 []  |
+     denemo             | []                                               |
+     dfarc              | []  []                    [] []          []  []  |
+     dialog             | []  []  []                [] []    [] [] []  []  |
+     dico               | []  []                                   []  []  |
+     diffutils          | []  []  []                [] []              []  |
+     dink               | []  []                    [] []          []  []  |
+     direvent           | []  []                    []                 []  |
+     doodle             | []  []                    []             []      |
+     dos2unix           | []  []                    [] []              []  |
+     dos2unix-man       |     []                       []              []  |
+     e2fsprogs          | []  []                    [] []              []  |
+     enscript           | []  []         []         []             []  []  |
+     exif               | []  []                    [] []          []  []  |
+     fetchmail          | []  ()  []     []         [] []              []  |
+     findutils          | []  []  []                [] [] []       []  []  |
+     flex               | []  []                    [] []          []  []  |
+     freedink           | []  []  []                [] []    []    []  []  |
+     fusionforge        |     []                       []              []  |
+     gas                |                              []          []  []  |
+     gawk               | []  []                       []          []  []  |
+     gcal               | []  []                       []              []  |
+     gcc                |     []                                           |
+     gdbm               | []  []                    []             []  []  |
+     gettext-examples   | []  []  []                [] []          []  []  |
+     gettext-runtime    | []  []                    [] []          []  []  |
+     gettext-tools      | []  []                       []          []  []  |
+     gjay               |     []                    []             []  []  |
+     glunarclock        | []  []                    []             []  []  |
+     gnubiff            |     ()                    []             []  ()  |
+     gnubik             | []  []                    []             []  []  |
+     gnucash            | []  ()  ()     ()            ()          ()  ()  |
+     gnuchess           |     []                    [] []              []  |
+     gnulib             | []  []                    [] [] []       []  []  |
+     gnunet             |                              []                  |
+     gnunet-gtk         |     []                                           |
+     gold               |                              []          []  []  |
+     gphoto2            | []  ()                    []                 []  |
+     gprof              | []  []                    [] []          []  []  |
+     gramadoir          | []  []                    []             []  []  |
+     grep               | []  []                    [] [] []       []  []  |
+     grub               | []  []                       []          []  []  |
+     gsasl              | []  []                    []             []  []  |
+     gss                | []  []                    []             []  []  |
+     gst-plugins-bad    | []  []                                       []  |
+     gst-plugins-base   | []  []  []                   []          []  []  |
+     gst-plugins-good   | []  []  []                   []    []    []  []  |
+     gst-plugins-ugly   | []  []  []                [] []    []    []  []  |
+     gstreamer          | []  []  []                   []    []    []  []  |
+     gtick              | []  ()                    []             []  []  |
+     gtkam              | []  ()                    [] []          []  []  |
+     gtkspell           | []  []  []                [] []    []    []  []  |
+     guix               | []                        []                     |
+     guix-packages      |                                                  |
+     gutenprint         | []  []                                   []  []  |
+     hello              | []  []  []                [] [] []       []  []  |
+     help2man           | []  []  []                [] []          []  []  |
+     help2man-texi      |     []                       []              []  |
+     hylafax            |     []                       []                  |
+     idutils            | []  []                    []             []  []  |
+     iso_15924          | []  ()                    [] []    ()    []  ()  |
+     iso_3166           | []  ()  []                [] [] [] ()    []  ()  |
+     iso_3166_2         | []  ()                             ()        ()  |
+     iso_4217           | []  ()  []                   [] [] ()    []  ()  |
+     iso_639            | []  ()                    [] []    ()    []  ()  |
+     iso_639_3          |     ()                             ()        ()  |
+     iso_639_5          |     ()                             ()        ()  |
+     jwhois             |     []                    [] []          []  []  |
+     kbd                | []  []  []                [] []              []  |
+     klavaro            | []  []  []                [] []    []        []  |
+     ld                 | []                           []          []  []  |
+     leafpad            | []  []  []                [] []    []    []  []  |
+     libc               | []  []                       []          []  []  |
+     libexif            | []  []         ()            []              []  |
+     libextractor       |     []                                           |
+     libgnutls          |     []                    []             []  []  |
+     libgphoto2         | []  ()                                       []  |
+     libgphoto2_port    | []  ()                       []    []    []  []  |
+     libgsasl           | []  []                    []             []  []  |
+     libiconv           | []  []                    [] [] []       []  []  |
+     libidn             | []  []                    []             []  []  |
+     liferea            | []  ()  []                   []    []    []  []  |
+     lilypond           | []  []  []                [] []              []  |
+     lordsawar          | []  []                                           |
+     lprng              |                                                  |
+     lynx               | []  []                    []    []       []  []  |
+     m4                 | []  []  []                []             []  []  |
+     mailfromd          |                                              []  |
+     mailutils          |     []                       []          []  []  |
+     make               | []  []                       []          []  []  |
+     man-db             | []  []                    []                 []  |
+     man-db-manpages    |     []                                       []  |
+     midi-instruments   | []  []  []                [] [] []    [] []  []  |
+     minicom            | []  []                       []          []  []  |
+     mkisofs            |                           []             []  []  |
+     myserver           |     []                    []             []  []  |
+     nano               | []  []                    [] []    []    []  []  |
+     opcodes            | []  []                       []          []  []  |
+     parted             | []  []                                       []  |
+     pies               |     []                                           |
+     pnmixer            |     []                                       []  |
+     popt               | []  []                    [] []          []  []  |
+     procps-ng          |     []                                       []  |
+     procps-ng-man      |     []                                       []  |
+     psmisc             | []  []  []                []       []    []  []  |
+     pspp               |     []                       []              []  |
+     pushover           |     ()                    [] []              []  |
+     pwdutils           | []  []                                       []  |
+     pyspread           | []  []                                       []  |
+     radius             |                              []              []  |
+     recode             | []  []  []                [] []          []  []  |
+     recutils           |     []                       []          []  []  |
+     rpm                | []  []                    []             []  []  |
+     rush               |     []                                   []  []  |
+     sarg               | []                                           []  |
+     sed                | []  []  []                [] [] []       []  []  |
+     sharutils          |     []                    []    []           []  |
+     shishi             |     []                                   []  []  |
+     skribilo           | []                           []              []  |
+     solfege            | []  []                    [] [] []    [] []  []  |
+     solfege-manual     |     []                    [] [] []           []  |
+     spotmachine        | []  []                    []             []  []  |
+     sudo               | []  []                    [] []          []  []  |
+     sudoers            | []  []  []                []             []  []  |
+     sysstat            | []  []                    [] []          []  []  |
+     tar                | []  []                    [] [] []       []  []  |
+     texinfo            | []  []                    [] []              []  |
+     texinfo_document   |     []                    [] []              []  |
+     tigervnc           | []  []  []                []             []  []  |
+     tin                | []  []                          []           []  |
+     tin-man            |                []                                |
+     tracgoogleappsa... | []  []                    []             []  []  |
+     trader             | []  []         []         []             []  []  |
+     util-linux         | []  []                       []              []  |
+     ve                 |     []                    [] []          []  []  |
+     vice               | ()  ()                                       ()  |
+     vmm                |     []                                   []      |
+     vorbis-tools       | []  []                    []                 []  |
+     wastesedge         | []                                               |
+     wcd                |     []                    [] []          []      |
+     wcd-man            |     []                                           |
+     wdiff              | []  []                    [] [] []       []  []  |
+     wget               |     []                    [] [] []       []  []  |
+     wyslij-po          |     []                    []             []  []  |
+     xboard             | []  []                       []              []  |
+     xdg-user-dirs      | []  []  []                [] [] [] [] [] []  []  |
+     xkeyboard-config   | []  []  []                [] []          []  []  |
+                        +--------------------------------------------------+
+                          da  de  el en en_GB en_ZA eo es et eu fa fi  fr 
+                          119 131 32  1   6     0   94 95 22 13  4 102 139
+
+                          ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+                        +-------------------------------------------------+
+     a2ps               |                   []          []    [] []       |
+     aegis              |                                     []          |
+     anubis             |                   [] []       []    []          |
+     aspell             | []                []          []    [] []       |
+     bash               |                      []       []    [] []       |
+     bfd                |                               []       []       |
+     binutils           |                               []    [] []       |
+     bison              |                   []                            |
+     bison-runtime      | []    []          [] []    [] []    [] []       |
+     buzztrax           |                                                 |
+     ccd2cue            |                      []                         |
+     ccide              |                   [] []                         |
+     cflow              | []                []          []                |
+     clisp              |                                                 |
+     coreutils          |                      []                []       |
+     cpio               | []                [] []       []    [] []       |
+     cppi               |       []          [] []             [] []       |
+     cpplib             |                               []       []       |
+     cryptsetup         |                                     []          |
+     datamash           |                                                 |
+     denemo             |                                     []          |
+     dfarc              |                   [] []             []          |
+     dialog             | [] [] []          [] []    [] [] [] [] []       |
+     dico               |                                                 |
+     diffutils          |                      []       []    [] []       |
+     dink               |                      []                         |
+     direvent           |                      []                         |
+     doodle             | []                                  []          |
+     dos2unix           |                      []                []       |
+     dos2unix-man       |                                                 |
+     e2fsprogs          |                      []       []                |
+     enscript           | []                []          []                |
+     exif               |       []          []          [] [] [] []       |
+     fetchmail          |                               []    [] []       |
+     findutils          | []    []          [] []       []    [] []       |
+     flex               | []                                              |
+     freedink           |                   [] []       []    []          |
+     fusionforge        |                                                 |
+     gas                |                               []                |
+     gawk               |                               []    () []       |
+     gcal               |                                                 |
+     gcc                |                                                 |
+     gdbm               |                                                 |
+     gettext-examples   | []    []          [] []       []    [] []       |
+     gettext-runtime    | []    []          [] []       []    [] []       |
+     gettext-tools      |                               []    [] []       |
+     gjay               |       []                                        |
+     glunarclock        | []    []          [] []       []    []          |
+     gnubiff            |                      []       []    ()          |
+     gnubik             |       []          []                []          |
+     gnucash            |          () () ()    ()             ()          |
+     gnuchess           |                                                 |
+     gnulib             | []    []             []             [] []       |
+     gnunet             |                                                 |
+     gnunet-gtk         |                                                 |
+     gold               |                               []    []          |
+     gphoto2            |                      []       []    [] []       |
+     gprof              | []                   []       []    []          |
+     gramadoir          | []                   []       []                |
+     grep               | []    []          [] []       []    [] []       |
+     grub               |       []             []             []          |
+     gsasl              | []                [] []       []    []          |
+     gss                | []                [] []       []    []          |
+     gst-plugins-bad    |                   [] []       []                |
+     gst-plugins-base   |       []          [] []       []                |
+     gst-plugins-good   |       []          [] []       []    [] []       |
+     gst-plugins-ugly   |       []          [] []       []    [] []       |
+     gstreamer          |       []          [] []       []    []          |
+     gtick              | []    []             []       []    []          |
+     gtkam              |                      []       [] [] [] []       |
+     gtkspell           | []    []    []    [] [] []    [] [] [] []       |
+     guix               |                                                 |
+     guix-packages      |                                                 |
+     gutenprint         |       []             []             []          |
+     hello              | []    []          [] []       []                |
+     help2man           |                   []                [] []       |
+     help2man-texi      |                                                 |
+     hylafax            |                               []                |
+     idutils            |                      []       []                |
+     iso_15924          |       []             []    [] [] [] []          |
+     iso_3166           | []    [] [] [] [] [] []    [] [] [] [] []    [] |
+     iso_3166_2         |                               []    []          |
+     iso_4217           |                   [] []       [] [] [] []       |
+     iso_639            | []    [] []       [] []       [] [] [] []       |
+     iso_639_3          |       []                            []          |
+     iso_639_5          |                                                 |
+     jwhois             |       []             []       []    []          |
+     kbd                |                      []       []    []          |
+     klavaro            |       []          [] []             []       [] |
+     ld                 | []                            []    [] []       |
+     leafpad            | []    []    []    [] []       []    [] ()       |
+     libc               |       []          []          []    [] []       |
+     libexif            |                                     []          |
+     libextractor       |                                                 |
+     libgnutls          |                                     []          |
+     libgphoto2         |                                     [] []       |
+     libgphoto2_port    |                                     [] []       |
+     libgsasl           | []                   []       []    []          |
+     libiconv           | []    []          [] []       []    [] []       |
+     libidn             |                   [] []       []    []          |
+     liferea            |       []    []       []             [] []       |
+     lilypond           |                                     []          |
+     lordsawar          |                                                 |
+     lprng              |                               []                |
+     lynx               |                      []       []    [] []       |
+     m4                 | []    []          []          []       []       |
+     mailfromd          |                                                 |
+     mailutils          |                                                 |
+     make               |                   []          []    [] []       |
+     man-db             |                               []       []       |
+     man-db-manpages    |                               []       []       |
+     midi-instruments   |       []    []    [] [] []    [] [] [] []       |
+     minicom            |                      []       []       []       |
+     mkisofs            |                               []    []          |
+     myserver           |                                     []          |
+     nano               | []    []          [] []             [] []       |
+     opcodes            | []                            []    []          |
+     parted             |       []             []       []    [] []       |
+     pies               |                                                 |
+     pnmixer            |                   []                []          |
+     popt               | []    [] []       [] []    [] [] [] [] []       |
+     procps-ng          |                                                 |
+     procps-ng-man      |                                                 |
+     psmisc             |                   [] []       []    []          |
+     pspp               |       []                               []       |
+     pushover           |                                     []          |
+     pwdutils           |                               []                |
+     pyspread           |                                                 |
+     radius             |                               []                |
+     recode             | []    []    []    [] []       []    []          |
+     recutils           |                                                 |
+     rpm                |                               []                |
+     rush               |       []                                        |
+     sarg               |                                                 |
+     sed                | []    []          [] []       []    [] []       |
+     sharutils          |                                                 |
+     shishi             |                                                 |
+     skribilo           |                      []                         |
+     solfege            |       []                            []          |
+     solfege-manual     |                                                 |
+     spotmachine        |                                                 |
+     sudo               |       []          []                [] []       |
+     sudoers            |                   []                [] []       |
+     sysstat            |                   [] []       []       []       |
+     tar                | []                [] []       []    [] []       |
+     texinfo            |                   []          []    []          |
+     texinfo_document   |                   [] []             []          |
+     tigervnc           |                                                 |
+     tin                |                                                 |
+     tin-man            |                                                 |
+     tracgoogleappsa... |       []    []    [] []                         |
+     trader             |                   [] []                         |
+     util-linux         |                                        []       |
+     ve                 |                                     []          |
+     vice               |                      ()             ()          |
+     vmm                |                                                 |
+     vorbis-tools       |                   []          []                |
+     wastesedge         |                                     []          |
+     wcd                |                                                 |
+     wcd-man            |                                                 |
+     wdiff              |       []             []             []          |
+     wget               |                   [] []             [] []       |
+     wyslij-po          |       []          []          []                |
+     xboard             |                                                 |
+     xdg-user-dirs      | [] [] [] [] [] [] [] []    [] [] [] [] []    [] |
+     xkeyboard-config   |       []          [] []       []    [] []       |
+                        +-------------------------------------------------+
+                          ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+                          35  2 47  4  8  2 60 71  2  6 81 11 87 57  0  3
+
+                          kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 
+                        +--------------------------------------------------+
+     a2ps               |                                  []          []  |
+     aegis              |                                              []  |
+     anubis             |                                  []    []    []  |
+     aspell             |                            []                []  |
+     bash               |                                        []    []  |
+     bfd                |                                                  |
+     binutils           |                                                  |
+     bison              |                                              []  |
+     bison-runtime      |          []    [] []             []    []    []  |
+     buzztrax           |                                                  |
+     ccd2cue            |                                                  |
+     ccide              |                   []                         []  |
+     cflow              |                                              []  |
+     clisp              |                                              []  |
+     coreutils          |                                        []    []  |
+     cpio               |                                              []  |
+     cppi               |                                                  |
+     cpplib             |                                              []  |
+     cryptsetup         |                                              []  |
+     datamash           |                                        []    []  |
+     denemo             |                                                  |
+     dfarc              |                      []                      []  |
+     dialog             |       []       [] []             []    []    []  |
+     dico               |                                                  |
+     diffutils          |                   []                   []    []  |
+     dink               |                                              []  |
+     direvent           |                                              []  |
+     doodle             |                                              []  |
+     dos2unix           |                                        []    []  |
+     dos2unix-man       |                                              []  |
+     e2fsprogs          |                                              []  |
+     enscript           |                                              []  |
+     exif               |    []             []                         []  |
+     fetchmail          |                                              []  |
+     findutils          |                                        []    []  |
+     flex               |                                              []  |
+     freedink           |                                        []    []  |
+     fusionforge        |                                                  |
+     gas                |                                                  |
+     gawk               |                                              []  |
+     gcal               |                                                  |
+     gcc                |                                                  |
+     gdbm               |                                                  |
+     gettext-examples   |          []       []             [] [] []    []  |
+     gettext-runtime    |    []                                  []    []  |
+     gettext-tools      |    []                                            |
+     gjay               |                                                  |
+     glunarclock        |                   []                         []  |
+     gnubiff            |                                              []  |
+     gnubik             |                                        []    []  |
+     gnucash            | () ()          () ()          ()       () () []  |
+     gnuchess           |                                        []    []  |
+     gnulib             |                                              []  |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gold               |                                                  |
+     gphoto2            |                                              []  |
+     gprof              |                                  []          []  |
+     gramadoir          |                                              []  |
+     grep               |                                        []    []  |
+     grub               |                []                      []    []  |
+     gsasl              |                                              []  |
+     gss                |                                                  |
+     gst-plugins-bad    |                   []                   []    []  |
+     gst-plugins-base   |                   []                   []    []  |
+     gst-plugins-good   |                [] []                   []    []  |
+     gst-plugins-ugly   |                   []             [] [] []    []  |
+     gstreamer          |                []                      []    []  |
+     gtick              |                                              []  |
+     gtkam              |                                        []    []  |
+     gtkspell           |          []    [] []       []    []    []    []  |
+     guix               |                                                  |
+     guix-packages      |                                                  |
+     gutenprint         |                                              []  |
+     hello              |                   []                   []    []  |
+     help2man           |                                        []        |
+     help2man-texi      |                                                  |
+     hylafax            |                                              []  |
+     idutils            |                                              []  |
+     iso_15924          |                () []                         []  |
+     iso_3166           | [] [] []       () [] [] []    []       []    []  |
+     iso_3166_2         |                ()                            []  |
+     iso_4217           |                () []                   []    []  |
+     iso_639            | [] []          () []    []    []             []  |
+     iso_639_3          | []             ()             []                 |
+     iso_639_5          |                ()                                |
+     jwhois             |                   []                         []  |
+     kbd                |                                              []  |
+     klavaro            |                                        []    []  |
+     ld                 |                                                  |
+     leafpad            |    []    []    [] []                         []  |
+     libc               |    []                                        []  |
+     libexif            |                                              []  |
+     libextractor       |                                              []  |
+     libgnutls          |                                  []          []  |
+     libgphoto2         |                                              []  |
+     libgphoto2_port    |                                              []  |
+     libgsasl           |                                              []  |
+     libiconv           |                []                            []  |
+     libidn             |                                              []  |
+     liferea            |                [] []                         []  |
+     lilypond           |                                              []  |
+     lordsawar          |                                                  |
+     lprng              |                                                  |
+     lynx               |                                              []  |
+     m4                 |                                              []  |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               |    []                                        []  |
+     man-db             |                                              []  |
+     man-db-manpages    |                                              []  |
+     midi-instruments   |    [] []       []          []    []       [] []  |
+     minicom            |                                        []        |
+     mkisofs            |                                              []  |
+     myserver           |                                                  |
+     nano               |                                  []    []    []  |
+     opcodes            |                                              []  |
+     parted             |    []                                        []  |
+     pies               |                                                  |
+     pnmixer            |                                              []  |
+     popt               | [] []             []                   []    []  |
+     procps-ng          |                                                  |
+     procps-ng-man      |                                                  |
+     psmisc             |                                              []  |
+     pspp               |                []                            []  |
+     pushover           |                                                  |
+     pwdutils           |                                              []  |
+     pyspread           |                                                  |
+     radius             |                                              []  |
+     recode             |                                        []    []  |
+     recutils           |                                              []  |
+     rpm                |                                              []  |
+     rush               |                                              []  |
+     sarg               |                                                  |
+     sed                |                                        []    []  |
+     sharutils          |                                              []  |
+     shishi             |                                                  |
+     skribilo           |                                                  |
+     solfege            |                                        []    []  |
+     solfege-manual     |                                              []  |
+     spotmachine        |                                              []  |
+     sudo               |    []                                  []    []  |
+     sudoers            |    []                                  []    []  |
+     sysstat            |                                        []    []  |
+     tar                |          []                            []    []  |
+     texinfo            |                                              []  |
+     texinfo_document   |                                              []  |
+     tigervnc           |                                              []  |
+     tin                |                                                  |
+     tin-man            |                                                  |
+     tracgoogleappsa... |                   []                   []    []  |
+     trader             |                                        []        |
+     util-linux         |                                              []  |
+     ve                 |                                              []  |
+     vice               |                                              []  |
+     vmm                |                                              []  |
+     vorbis-tools       |                                              []  |
+     wastesedge         |                                              []  |
+     wcd                |                                              []  |
+     wcd-man            |                                              []  |
+     wdiff              |                                              []  |
+     wget               |                                        []    []  |
+     wyslij-po          |                                              []  |
+     xboard             |                                              []  |
+     xdg-user-dirs      | [] [] [] []    [] [] [] []    []       []    []  |
+     xkeyboard-config   |    []          []                            []  |
+                        +--------------------------------------------------+
+                          kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 
+                           5 15  4  6  0 13 23  3  3  3  4 11  2 42  1 125
+
+                          nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr 
+                        +------------------------------------------------+
+     a2ps               |          []     []  []   [] []       []    []  |
+     aegis              |                     []      []                 |
+     anubis             |          []                 []             []  |
+     aspell             |          []         []   [] []    [] []    []  |
+     bash               |          []         []      []    [] []    []  |
+     bfd                |                             []             []  |
+     binutils           |                             []             []  |
+     bison              |          []         []                     []  |
+     bison-runtime      |          []     []  []   [] []       [] [] []  |
+     buzztrax           |                     []                         |
+     ccd2cue            |                     []                     []  |
+     ccide              |          []                 []             []  |
+     cflow              |          []         []                     []  |
+     clisp              |                             []                 |
+     coreutils          |          []                 []       []    []  |
+     cpio               |          []                 []             []  |
+     cppi               |          []         []                     []  |
+     cpplib             |                     []      []             []  |
+     cryptsetup         |          []         []                     []  |
+     datamash           |                     []                     []  |
+     denemo             |                                                |
+     dfarc              |          []         []                     []  |
+     dialog             |          []         []   [] []    [] []    []  |
+     dico               |          []                                    |
+     diffutils          |          []         []                     []  |
+     dink               |                                                |
+     direvent           |          []         []                     []  |
+     doodle             |                                         [] []  |
+     dos2unix           |          []         []      []             []  |
+     dos2unix-man       |          []         []                         |
+     e2fsprogs          |          []                                    |
+     enscript           |          []         []   [] []       []    []  |
+     exif               |          []         []   [] []    []       []  |
+     fetchmail          |          []                 []          []     |
+     findutils          |          []         []      []    [] []    []  |
+     flex               |          []         []   [] []             []  |
+     freedink           |          []         []      []       []    []  |
+     fusionforge        |                                                |
+     gas                |                                                |
+     gawk               |          []                                    |
+     gcal               |                                                |
+     gcc                |                                                |
+     gdbm               |          []         []                     []  |
+     gettext-examples   |          []     []  []   [] []    [] []    []  |
+     gettext-runtime    | []       []     []  []   [] []    [] []    []  |
+     gettext-tools      |          []         []   [] []    [] []    []  |
+     gjay               |                                            []  |
+     glunarclock        |          []         []   []       [] []    []  |
+     gnubiff            |                                            []  |
+     gnubik             |          []         []               []    []  |
+     gnucash            |          ()     ()  ()   () ()             []  |
+     gnuchess           |                     []                     []  |
+     gnulib             |          []         []      []       []    []  |
+     gnunet             |                                                |
+     gnunet-gtk         |                                                |
+     gold               |                                                |
+     gphoto2            |          []         []   [] []             []  |
+     gprof              |                     []   [] []             []  |
+     gramadoir          |                                   []       []  |
+     grep               |          []         []      []    [] []    []  |
+     grub               |          []         []      []       []    []  |
+     gsasl              |          []                       []       []  |
+     gss                |          []              []       []       []  |
+     gst-plugins-bad    |          []         []      []    []       []  |
+     gst-plugins-base   |          []         []      []    [] []    []  |
+     gst-plugins-good   |          []         []   [] []    [] []    []  |
+     gst-plugins-ugly   |          []         []   [] []    [] []    []  |
+     gstreamer          |          []         []   [] []    [] []    []  |
+     gtick              |          []         []      []    []       []  |
+     gtkam              |       [] []         []      []    []       []  |
+     gtkspell           |          []     []  []   [] []    [] [] [] []  |
+     guix               |                                                |
+     guix-packages      |                                                |
+     gutenprint         |                                   [] []        |
+     hello              |          []         []      []    [] []    []  |
+     help2man           |          []         []      []             []  |
+     help2man-texi      |          []                                    |
+     hylafax            |                                                |
+     idutils            |          []                 []             []  |
+     iso_15924          |          []     ()       [] []       []    []  |
+     iso_3166           | [] [] [] []     ()  []   [] [] [] [] [] [] []  |
+     iso_3166_2         |          []     ()                         []  |
+     iso_4217           | []       []     ()       [] [] []    []    []  |
+     iso_639            |    [] [] []     ()       [] [] [] [] []    []  |
+     iso_639_3          |       []        ()                             |
+     iso_639_5          |                 ()                         []  |
+     jwhois             |          []         []   []                []  |
+     kbd                |          []                 []                 |
+     klavaro            |       [] []         []      []       []        |
+     ld                 |                                                |
+     leafpad            | []       []     []  []      []    [] []    []  |
+     libc               |          []                 []    []           |
+     libexif            |          []         ()            []           |
+     libextractor       |          []                                    |
+     libgnutls          |          []                                    |
+     libgphoto2         |          []                                    |
+     libgphoto2_port    |          []         []      []    []       []  |
+     libgsasl           |          []              []       []       []  |
+     libiconv           |          []         []            [] []    []  |
+     libidn             |          []         []                     []  |
+     liferea            |          []     []  []   [] ()    []    []     |
+     lilypond           |                                                |
+     lordsawar          |                                                |
+     lprng              |          []                                    |
+     lynx               |                     []      []                 |
+     m4                 |          []         []   [] []             []  |
+     mailfromd          |          []                                    |
+     mailutils          |          []                                    |
+     make               |          []         []      []                 |
+     man-db             |          []                 []             []  |
+     man-db-manpages    |          []                 []             []  |
+     midi-instruments   |          []     []  []   [] []    [] []    []  |
+     minicom            |          []         []   [] []                 |
+     mkisofs            |          []                 []             []  |
+     myserver           |                                      []    []  |
+     nano               |          []         []   [] []       []    []  |
+     opcodes            |                                                |
+     parted             |          []         []      []    [] []    []  |
+     pies               |          []                                    |
+     pnmixer            |                             []                 |
+     popt               |          []     []  []      []       []    []  |
+     procps-ng          |          []                                    |
+     procps-ng-man      |          []                                    |
+     psmisc             |          []         []      []             []  |
+     pspp               |          []                 []                 |
+     pushover           |                                                |
+     pwdutils           |          []                                    |
+     pyspread           | []                  []                         |
+     radius             |          []                 []                 |
+     recode             |          []     []  []   [] []    [] []    []  |
+     recutils           |                     []                     []  |
+     rpm                |          []                                    |
+     rush               |          []         []                     []  |
+     sarg               |                     []      []                 |
+     sed                |          []     []  []   [] []    [] []    []  |
+     sharutils          |          []         []                     []  |
+     shishi             |          []                                []  |
+     skribilo           |                                            []  |
+     solfege            |          []         []      []                 |
+     solfege-manual     |          []         []                         |
+     spotmachine        |                     []                     []  |
+     sudo               |          []         []      []    [] []    []  |
+     sudoers            |          []         []               []    []  |
+     sysstat            |          []         []      []    []       []  |
+     tar                |          []         []      []       []    []  |
+     texinfo            |          []         []      []                 |
+     texinfo_document   |          []         []                         |
+     tigervnc           |                     []      []             []  |
+     tin                |                             []                 |
+     tin-man            |                                                |
+     tracgoogleappsa... |          []         []      []             []  |
+     trader             |                             []             []  |
+     util-linux         |          []         []                         |
+     ve                 |          []         []                     []  |
+     vice               |                                                |
+     vmm                |                                                |
+     vorbis-tools       |          []                          []    []  |
+     wastesedge         |                                                |
+     wcd                |                                                |
+     wcd-man            |                                                |
+     wdiff              |          []         []      []       []    []  |
+     wget               |          []         []      []    []       []  |
+     wyslij-po          | []       []         []                     []  |
+     xboard             |          []                 []             []  |
+     xdg-user-dirs      | [] [] [] []  [] []  []   [] []    [] [] [] []  |
+     xkeyboard-config   |          []         []      []       []        |
+                        +------------------------------------------------+
+                          nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr 
+                           7  3  6 114  1 12  88   32 82  3 40 45  7 101
+
+                          sv  sw ta te tg th tr uk  ur vi  wa wo zh_CN
+                        +----------------------------------------------+
+     a2ps               | []              [] [] []     []              |
+     aegis              |                              []              |
+     anubis             | []                 [] []     []              |
+     aspell             | []                    []     []  []     []   |
+     bash               | []                    []     []         []   |
+     bfd                | []                    []     []              |
+     binutils           | []                    []     []              |
+     bison              | []                    []     []         []   |
+     bison-runtime      | []              [] [] []     []         []   |
+     buzztrax           | []                           []         []   |
+     ccd2cue            |                       []     []         []   |
+     ccide              | []                    []     []         []   |
+     cflow              | []                    []     []         []   |
+     clisp              |                                              |
+     coreutils          | []                    []     []              |
+     cpio               | []                 [] []     []         []   |
+     cppi               | []                    []     []         []   |
+     cpplib             | []                 [] []     []         []   |
+     cryptsetup         |                       []     []         []   |
+     datamash           | []                    []     []              |
+     denemo             |                                         []   |
+     dfarc              | []                           []              |
+     dialog             | []  []          []           []  []     []   |
+     dico               |                       []                     |
+     diffutils          | []                 [] []     []         []   |
+     dink               | []                                           |
+     direvent           |                       []     []              |
+     doodle             | []                           []              |
+     dos2unix           | []                    []     []         []   |
+     dos2unix-man       | []                    []                []   |
+     e2fsprogs          | []                    []     []         []   |
+     enscript           | []                 [] []     []              |
+     exif               | []                 [] []     []         []   |
+     fetchmail          | []                 []        []         []   |
+     findutils          | []                 [] []     []         []   |
+     flex               | []                 []        []         []   |
+     freedink           | []              []           []              |
+     fusionforge        |                                              |
+     gas                |                       []                     |
+     gawk               | []                           []         []   |
+     gcal               | []                 []                   []   |
+     gcc                | []                                           |
+     gdbm               |                       []     []              |
+     gettext-examples   | []                 [] []     []         []   |
+     gettext-runtime    | []                 [] []     []         []   |
+     gettext-tools      | []                 [] []     []         []   |
+     gjay               |                 []           []         []   |
+     glunarclock        | []                           []  []     []   |
+     gnubiff            | []                           []              |
+     gnubik             | []                    []     []         []   |
+     gnucash            |        () ()              () ()         []   |
+     gnuchess           |                       []     []         []   |
+     gnulib             | []                    []     []         []   |
+     gnunet             |                                              |
+     gnunet-gtk         |                                              |
+     gold               |                       []     []              |
+     gphoto2            | []                    []     []         []   |
+     gprof              | []                 [] []     []              |
+     gramadoir          | []                           []         []   |
+     grep               | []              []    []     []         []   |
+     grub               | []                 [] []     []              |
+     gsasl              | []                    []     []         []   |
+     gss                | []                           []         []   |
+     gst-plugins-bad    | []                 [] []     []         []   |
+     gst-plugins-base   | []                 [] []     []         []   |
+     gst-plugins-good   | []                 [] []     []         []   |
+     gst-plugins-ugly   | []                 [] []     []         []   |
+     gstreamer          | []                 [] []     []         []   |
+     gtick              |                       []     []         []   |
+     gtkam              | []                    []     []         []   |
+     gtkspell           | []              [] [] []     []  []     []   |
+     guix               |                                              |
+     guix-packages      |                                              |
+     gutenprint         |                    [] []     []         []   |
+     hello              | []              [] [] []     []         []   |
+     help2man           |                       []     []         []   |
+     help2man-texi      |                       []                     |
+     hylafax            |                              []              |
+     idutils            |                       []     []         []   |
+     iso_15924          | []              () [] []     ()         []   |
+     iso_3166           | []        []    () [] []     ()  []     []   |
+     iso_3166_2         |                 () [] []     ()         []   |
+     iso_4217           | []              () [] []     ()         []   |
+     iso_639            | []     [] []    () [] []     ()  []     []   |
+     iso_639_3          |        []       () [] []     ()              |
+     iso_639_5          |                 ()    []     ()              |
+     jwhois             | []                 []        []         []   |
+     kbd                | []                    []     []         []   |
+     klavaro            | []                    []  [] []     []  []   |
+     ld                 | []                 [] []     []         []   |
+     leafpad            | []              [] [] []     []         []   |
+     libc               | []                 [] []     []         []   |
+     libexif            | []                           []         ()   |
+     libextractor       |                       []     []              |
+     libgnutls          | []                    []     []         []   |
+     libgphoto2         | []                    []     []              |
+     libgphoto2_port    | []                    []     []         []   |
+     libgsasl           | []                    []     []         []   |
+     libiconv           | []                    []     []  []     []   |
+     libidn             | ()                    []     []         []   |
+     liferea            | []                 [] []     []         []   |
+     lilypond           |                              []              |
+     lordsawar          |                                              |
+     lprng              |                              []              |
+     lynx               | []                 [] []     []              |
+     m4                 | []                           []         []   |
+     mailfromd          |                       []     []              |
+     mailutils          |                              []              |
+     make               | []                    []     []         []   |
+     man-db             | []                           []         []   |
+     man-db-manpages    | []                                      []   |
+     midi-instruments   | []              [] [] []     []         []   |
+     minicom            | []                           []              |
+     mkisofs            |                       []     []         []   |
+     myserver           |                              []              |
+     nano               | []                    []     []         []   |
+     opcodes            |                       []     []         []   |
+     parted             | []                 [] []     []         []   |
+     pies               |                       []     []              |
+     pnmixer            |                       []     []         []   |
+     popt               | []     []       [] [] []     []         []   |
+     procps-ng          |                       []     []              |
+     procps-ng-man      |                       []                     |
+     psmisc             | []                    []     []         []   |
+     pspp               |                    [] []                []   |
+     pushover           | []                                           |
+     pwdutils           | []                           []              |
+     pyspread           |                       []                     |
+     radius             |                       []     []              |
+     recode             | []                 []        []         []   |
+     recutils           | []                    []     []              |
+     rpm                | []                    []     []         []   |
+     rush               |                       []     []              |
+     sarg               |                                              |
+     sed                | []                 [] []     []         []   |
+     sharutils          | []                    []     []         []   |
+     shishi             |                              []         []   |
+     skribilo           | []                    []                     |
+     solfege            | []                 []        []         []   |
+     solfege-manual     |                    []                        |
+     spotmachine        | []                    []     []              |
+     sudo               | []                 [] []     []         []   |
+     sudoers            | []                    []     []         []   |
+     sysstat            | []                 [] []     []         []   |
+     tar                | []                 [] []     []         []   |
+     texinfo            |                    [] []     []              |
+     texinfo_document   |                       []                     |
+     tigervnc           | []                    []                []   |
+     tin                |                                         []   |
+     tin-man            |                                              |
+     tracgoogleappsa... | []              []    []     []         []   |
+     trader             | []                                           |
+     util-linux         | []                    []     []         []   |
+     ve                 | []                    []     []         []   |
+     vice               | ()                 ()                        |
+     vmm                |                                              |
+     vorbis-tools       | []                           []              |
+     wastesedge         |                                              |
+     wcd                |                       []     []         []   |
+     wcd-man            |                       []                     |
+     wdiff              | []                    []     []         []   |
+     wget               |                       []     []         []   |
+     wyslij-po          |                       []     []              |
+     xboard             |                       []                []   |
+     xdg-user-dirs      | []     [] []    [] [] []     []         []   |
+     xkeyboard-config   | []                 [] []     []              |
+                        +----------------------------------------------+
+                          sv  sw ta te tg th tr uk  ur vi  wa wo zh_CN
+                          106  1  4  3  0 13 51 115  1 125  7  1  100 
+
+                          zh_HK zh_TW
+                        +-------------+
+     a2ps               |             | 30
+     aegis              |             |  9
+     anubis             |             | 19
+     aspell             |             | 29
+     bash               |        []   | 23
+     bfd                |             | 11
+     binutils           |             | 12
+     bison              |        []   | 18
+     bison-runtime      |        []   | 38
+     buzztrax           |             |  9
+     ccd2cue            |             | 10
+     ccide              |             | 17
+     cflow              |             | 16
+     clisp              |             | 10
+     coreutils          |             | 18
+     cpio               |             | 20
+     cppi               |             | 17
+     cpplib             |        []   | 19
+     cryptsetup         |             | 14
+     datamash           |             | 11
+     denemo             |             |  5
+     dfarc              |             | 17
+     dialog             |        []   | 42
+     dico               |             |  6
+     diffutils          |             | 22
+     dink               |             | 10
+     direvent           |             | 11
+     doodle             |             | 12
+     dos2unix           |        []   | 18
+     dos2unix-man       |             |  9
+     e2fsprogs          |             | 15
+     enscript           |             | 21
+     exif               |             | 27
+     fetchmail          |             | 19
+     findutils          |             | 29
+     flex               |        []   | 19
+     freedink           |             | 24
+     fusionforge        |             |  3
+     gas                |             |  5
+     gawk               |             | 13
+     gcal               |             |  8
+     gcc                |             |  2
+     gdbm               |             | 10
+     gettext-examples   |  []    []   | 40
+     gettext-runtime    |  []    []   | 35
+     gettext-tools      |        []   | 24
+     gjay               |             |  9
+     glunarclock        |        []   | 27
+     gnubiff            |             |  9
+     gnubik             |             | 19
+     gnucash            |        ()   |  6
+     gnuchess           |             | 11
+     gnulib             |             | 23
+     gnunet             |             |  1
+     gnunet-gtk         |             |  1
+     gold               |             |  7
+     gphoto2            |        []   | 19
+     gprof              |             | 21
+     gramadoir          |             | 14
+     grep               |        []   | 31
+     grub               |             | 21
+     gsasl              |        []   | 19
+     gss                |             | 17
+     gst-plugins-bad    |             | 21
+     gst-plugins-base   |             | 27
+     gst-plugins-good   |             | 32
+     gst-plugins-ugly   |             | 34
+     gstreamer          |        []   | 32
+     gtick              |             | 19
+     gtkam              |             | 24
+     gtkspell           |  []    []   | 48
+     guix               |             |  2
+     guix-packages      |             |  0
+     gutenprint         |             | 15
+     hello              |        []   | 30
+     help2man           |             | 18
+     help2man-texi      |             |  5
+     hylafax            |             |  5
+     idutils            |             | 14
+     iso_15924          |        []   | 23
+     iso_3166           |  []    []   | 58
+     iso_3166_2         |             |  9
+     iso_4217           |  []    []   | 28
+     iso_639            |  []    []   | 46
+     iso_639_3          |             | 10
+     iso_639_5          |             |  2
+     jwhois             |        []   | 20
+     kbd                |             | 17
+     klavaro            |             | 30
+     ld                 |        []   | 15
+     leafpad            |        []   | 39
+     libc               |        []   | 24
+     libexif            |             | 10
+     libextractor       |             |  5
+     libgnutls          |             | 13
+     libgphoto2         |             | 10
+     libgphoto2_port    |        []   | 19
+     libgsasl           |             | 18
+     libiconv           |        []   | 29
+     libidn             |             | 17
+     liferea            |             | 29
+     lilypond           |             | 11
+     lordsawar          |             |  3
+     lprng              |             |  3
+     lynx               |             | 19
+     m4                 |        []   | 22
+     mailfromd          |             |  4
+     mailutils          |             |  6
+     make               |             | 19
+     man-db             |             | 15
+     man-db-manpages    |             | 10
+     midi-instruments   |        []   | 43
+     minicom            |        []   | 17
+     mkisofs            |             | 13
+     myserver           |             |  9
+     nano               |        []   | 30
+     opcodes            |             | 12
+     parted             |        []   | 23
+     pies               |             |  4
+     pnmixer            |             |  9
+     popt               |        []   | 36
+     procps-ng          |             |  5
+     procps-ng-man      |             |  4
+     psmisc             |        []   | 22
+     pspp               |             | 13
+     pushover           |             |  6
+     pwdutils           |             |  8
+     pyspread           |             |  6
+     radius             |             |  9
+     recode             |             | 31
+     recutils           |             | 10
+     rpm                |        []   | 13
+     rush               |             | 10
+     sarg               |             |  4
+     sed                |        []   | 35
+     sharutils          |             | 13
+     shishi             |             |  7
+     skribilo           |             |  7
+     solfege            |             | 21
+     solfege-manual     |             |  9
+     spotmachine        |             | 11
+     sudo               |             | 26
+     sudoers            |             | 22
+     sysstat            |             | 23
+     tar                |        []   | 30
+     texinfo            |             | 17
+     texinfo_document   |             | 13
+     tigervnc           |             | 14
+     tin                |        []   |  7
+     tin-man            |             |  1
+     tracgoogleappsa... |        []   | 22
+     trader             |             | 12
+     util-linux         |             | 13
+     ve                 |             | 14
+     vice               |             |  1
+     vmm                |             |  3
+     vorbis-tools       |             | 13
+     wastesedge         |             |  3
+     wcd                |             |  8
+     wcd-man            |             |  3
+     wdiff              |        []   | 23
+     wget               |             | 21
+     wyslij-po          |             | 14
+     xboard             |             | 10
+     xdg-user-dirs      |  []    []   | 68
+     xkeyboard-config   |        []   | 28
+                        +-------------+
+       89 teams           zh_HK zh_TW
+      166 domains           7    42    2809
 
    Some counters in the preceding matrix are higher than the number of
 visible blocks let us expect.  This is because a few extra PO files are
@@ -594,32 +1350,30 @@ used for implementing regional variants of languages, or language
 dialects.
 
    For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer.  There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
-   If May 2003 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
-matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-Using `gettext' in new packages
-===============================
-
-   If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package.  Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library.  This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
+which it applies should also have been internationalized and distributed
+as such by its maintainer.  There might be an observable lag between the
+mere existence a PO file and its wide availability in a distribution.
+
+   If Jun 2014 seems to be old, you may fetch a more recent copy of this
+'ABOUT-NLS' file on most GNU archive sites.  The most up-to-date matrix
+with full percentage details can be found at
+'http://translationproject.org/extra/matrix.html'.
+
+1.5 Using 'gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU 'gettext' in your
+package.  Of course you have to respect the GNU Lesser General Public
+License which covers the use of the GNU 'gettext' library.  This means
+in particular that even non-free programs can use 'libintl' as a shared
+library, whereas only free software can use 'libintl' as a static
+library or use modified versions of 'libintl'.
 
    Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations.  The
+the use of 'gettext' the only thing missing are the translations.  The
 Free Translation Project is also available for packages which are not
 developed inside the GNU project.  Therefore the information given above
 applies also for every other Free Software Project.  Contact
-`translation@iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
-
+'coordinator@translationproject.org' to make the '.pot' files available
+to the translation teams.
diff --git a/CHANGES b/CHANGES
index 43cb1341a90a67429e8da9883dc7c137e4739321..262fd6568add843b7dffbd461e3166e4e7278090 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,820 @@
+This document details the changes between this version, bash-5.0-release, and
+the previous version, bash-5.0-rc1.
+
+1. Changes to Bash
+
+a. Tilde expansion isn't performed on indexed array subscripts, even for
+   backwards compatibility.
+
+b. The shell doesn't exit in posix mode if the eval builtin gets a parse
+   error when run by the command builtin.
+
+c. Fixed a bug that caused a shell comment in an alias to not find the end
+   of the alias properly.
+
+d. Reverted a change from April, 2018 that caused strings containing
+   backslashes to be flagged as glob patterns.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-rc1, and
+the previous version, bash-5.0-beta2.
+
+1. Changes to Bash
+
+a. Fix to initial word completion detection code.
+
+b. Fixed a bug that caused issues with assignment statements containing ^A in
+   the value assigned when IFS contains ^A.
+
+c. Added a fallback to fnmatch() when strcoll can't correctly deal with
+   bracket expression character equivalence classes.
+
+d. Fixed a bug that caused $BASH_COMMAND to contain the trap handler command
+   when running a trap handler containing [[ or (( commands.
+
+e. Fixed a bug that caused nameref assignments in the temporary environment
+   to potentially create variables with invalid names.
+
+f. Fixed a bug that caused `local -' to turn off alias expansion in scripts.
+
+g. Fixed a parser issue with a command string containing EOF after an invalid
+   command as an argument to a special builtin not causing a posix-mode shell
+   to exit.
+
+h. Made a slight change to the FNV-1 string hash algorithm used for associative
+   arrays (corrected the initial seed).
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+a. The `select' command now supports command forms without a word list
+   following `in'.
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-beta2, and
+the previous version, bash-5.0-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug that could cause a seg fault while parsing a subshell command
+   inside a command substitution.
+
+b. Fixed several small memory leaks uncovered by coverity.
+
+c. Fixed a problem with command substitution inside an interactive shell that
+   could cause the parent to receive a SIGHUP.
+
+d. Fixed a problem with using `*' and `@' as subscripts when assigning values
+   to an associative array with assoc_expand_once enabled.
+
+e. Fixed a bug that could cause a huge memory allocation when completing a
+   word beginning with an invalid tilde expansion.
+
+f. Cleaned up some incompatiblities with bash-4.4 when expanding indexed array
+   subscripts used in arithmetic expansions when assoc_expand_once is enabled.
+
+g. The ${parameter@a} expansion will display attributes even if `parameter' is
+   unset.
+
+h. Fixed a bug that caused the output of `set' to cut off some variables before
+   printing the value.
+
+i. Treat a failure to assign a variable when using the ${x:=value} expansion
+   as an expansion error, so non-interactive posix-mode shells exit
+
+j. Fixed a problem when expanding $* in a context where word splitting is not
+   performed when IFS is NULL.
+
+k. Temp files used to store here documents are forced readable, no matter what
+   the user's umask says.
+
+l. Fixed a problem where an interrupted brace expansion could cause the shell
+   to attempt to free an invalid memory location.
+
+m. Make sure to check for any terminating signals after running a trap
+   handler; don't wait until the next time we process traps.
+
+n. Fixed a bug that caused "return" to act like a special builtin with respect
+   to variable assignments even when preceded by "command".
+
+o. POSIX-mode shells now return failure if the cd builtin fails due to the
+   absolute directory name being longer than PATH_MAX, instead of trying
+   again with a relative pathname.
+
+p. Fixed a problem with FUNCNAME occasionally being visible when not executing
+   a shell function.
+
+q. Fixed a problem with the expansions performed on the WORD in the case
+   command.
+
+r. Fixed a slight POSIX compatibility when removing "IFS whitespace" during
+   word splitting and the read builtin.
+
+s. Fixed a problem with expanding an array with subscript `*' when all the
+   elements expand to the empty string, and making sure the expansion honors
+   the `:' specifier.
+
+2. Changes to Readline
+
+a. Fixed a bug with adding multibyte characters to an incremental search string.
+
+b. Fixed a bug with redoing text insertions in vi mode.
+
+c. Fixed a bug with pasting text into an incremental search string if bracketed
+   paste mode is enabled. ESC cannot be one of the incremental search
+   terminator characters for this to work.
+
+d. Fixed a bug with anchored search patterns when performing searches in vi
+   mode.
+
+3. New Features in Bash
+
+a. Associative and indexed arrays now allow subscripts consisting solely of
+   whitespace.
+
+b. `checkwinsize' is now enabled by default.
+
+c. The `localvar_unset' shopt option is now visible and documented.
+
+d. The `progcomp_alias' shopt option is now visible and documented.
+
+e. The signal name processing code now understands `SIGRTMIN+n' all the way
+   up to SIGRTMAX.
+
+f. There is a new `seq' loadable builtin.
+
+g. Trap execution now honors the (internal) max invocations of `eval', since
+   traps are supposed to be executed as if using `eval'.
+
+h. The $_ variable doesn't change when the shell executes a command that forks.
+
+i. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though
+   conforming applications aren't supposed to use them.
+
+j. POSIX mode now enables the `shift_verbose' option.
+
+4. New Features in Readline
+
+a. Readline now allows application-defined keymap names; there is a new public
+   function, rl_set_keymap_name(), to do that.
+
+b. The "Insert" keypad key, if available, now puts readline into overwrite
+   mode.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-beta, and
+the previous version, bash-5.0-alpha.
+
+1.  Changes to Bash
+
+a. Fixed a bug that allowed subshells to "inherit" enclosing loops -- this
+   is where POSIX says the subshell is not "enclosed" by the loop.
+
+b. Added more UTF-8-specific versions of multibyte functions, and optimized
+   existing functions if the current locale uses UTF-8 encoding.
+
+c. In POSIX mode, assignments preceding regular builtins should not persist
+   when the builtin completes.
+
+d. Added additional checks to special array assignment (e.g., BASH_ALIASES)
+   so it can't be used to bypass validity checks performed in other places.
+
+e. The `!!' history expansion now refers to the previous history entry as
+   expected, even if used on the second or subsequent line of a multi-line
+   history entry.
+
+f. Fixed a bug that could cause the shell to dereference a NULL pointer if
+   the environment (`environ') is set to NULL.
+
+g. Bash uses slightly better integer overflow handling for brace sequence
+   expansion on systems where ints are 32 bits and intmax_t is 64 bits.
+
+h. Fixed a bug setting attributes for a variable named as an argument to
+   `declare' that also appears as a nameref in the temporary environment.
+
+i. Fixed several bugs that could cause assignments to namerefs to create
+   variables with invalid names.
+
+j. Fixed a bug that could result in the SIGINT handler being set incorrectly
+   in asynchronous subshells.
+
+k. Fixed a bug that could cause `bash -t' to not execute the specified command.
+
+l. Fixed several bugs that caused the shell to operate on the wrong variable
+   when using namerefs with the same name as a global variable in shell
+   functions.
+
+m. Internal changes to how the shell handles variables with invalid names in
+   the initial environment and to prevent variables with invalid names from
+   being added to the environment instead of passing them on to children.
+
+n. Changes to make sure that an expansion that results in a quoted null string
+   is reflected in the expansion, even if the word expands to nothing.
+
+o. Changes to make sure that $* and ${array[*]} (and $@/${array[@]}) expand
+   the same way after the recent changes for POSIX interpretation 888.
+
+p. Saving and restoring the positional parameters at function entry and exit
+   is considerably more efficient; noticeably so when there are large numbers
+   of positional parameters.
+
+q. Fixed a bug that caused `lastpipe' and `pipefail' to return an incorrect
+   status for the pipeline if there was more than one external command in a
+   loop body appearing in the last pipeline element.
+
+r. Fixed a bug that caused value conversion errors with the printf builtin's
+   %u and %f conversion specifications and invalid constants.
+
+2.  Changes to Readline
+
+a. Added more UTF-8-specific versions of multibyte functions, and optimized
+   existing functions if the current locale uses UTF-8 encoding.
+
+b. Fixed a problem with bracketed-paste inserting more than one character and
+   interacting with other readline functions.
+
+c. Fixed a bug that caused the history library to attempt to append a history
+   line to a non-existent history entry.
+
+d. If using bracketed paste mode, output a newline after the \r that is the
+   last character of the mode disable string to avoid overwriting output.
+
+e. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better
+   handle multibyte characters.
+
+f. Fixed a redisplay problem that caused an extra newline to be generated on
+   accept-line when the line length is exactly the screenwidth.
+
+3.  New Features in Bash
+
+a. Bash no longer allows variable assignments preceding a special builtin that
+   changes variable attributes to propagate back to the calling environment
+   unless the compatibility level is 44 or lower.
+
+b. You can set the default value for $HISTSIZE at build time in config-top.h.
+
+c. The `complete' builtin now accepts a -I option that applies the completion
+   to the initial word on the line.
+
+d. The internal bash malloc now uses mmap (if available) to satisfy requests
+   greater than 128K bytes, so free can use mfree to return the pages to the
+   kernel.
+
+e. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup
+   unless it's in debugging mode, as the documentation has always said, but
+   will dynamically create them if a script references them at the top level
+   without having enabled debugging mode.
+
+f. The localvar_inherit option will not attempt to inherit a value from a
+   variable of an incompatible type (indexed vs. associative arrays, for
+   example).
+
+g. The `globasciiranges' option is now enabled by default; it can be set to
+   off by default at configuration time.
+
+4.  New Features in Readline
+
+a. The history expansion library now understands command and process
+   substitution and extended globbing and allows them to appear anywhere in a
+   word.
+
+b. The history library has a new variable that allows applications to set the
+   initial quoting state, so quoting state can be inherited from a previous
+   line.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.0-alpha, and
+the previous version, bash-4.4-release.
+
+1.  Changes to Bash
+
+a. Fixed a bug that could cause traps in background jobs to give the terminal
+   to the wrong process group.
+
+b. Fixed a bug that caused `kill -l 0' to print an out-of-range error.
+
+c. Fixed a problem that could result in here-documents being displayed in
+   the wrong order.
+
+d. Fixed a number of out-of-bounds and free memory read errors found via
+   fuzzing.
+
+e. Fixed a subshell inheritance problem that could cause a subshell to wait for
+   the wrong process.
+
+f. Fixed a bug that caused SHLVL to be incremented one too many times when
+   creating subshells.
+
+g. A job dying due to SIGINT can now interrupt sourcing a file in a shell with
+   job control enabled.
+
+h. Fixed a spurious warning about unterminated ${ or $( constructs during
+   word completion.
+
+i. The shell no longer runs traps if a signal arrives while reading command
+   substitution output.
+
+j. Fixed an arithmetic expansion error that could allow ++var++ as valid
+   syntax.
+
+k. Fixed an error that allowed out-of-bounds references to the directory stack.
+
+l. The shell does a better job of saving multi-line history entries with
+   embedded comments.
+
+m. Fixed a bug that could cause quoted bracket expressions in regular expression
+   arguments to `[[' to not match correctly.
+
+n. Fixed a bug that could cause an IFS character in a word to result in an
+   extra '\001' character in the expansion.
+
+o. A trailing backslash in a glob pattern can match a trailing backslash in the
+   string.
+
+p. Fixed a memory leak in the process creation code path when job control is
+   enabled.
+
+q. Fixed a bug that caused `printf' to output broken surrogate pairs for
+   Japanese locales.
+
+r. Fixed a bug that caused a SIGINT generated from `kill' in a dot script to
+   kill an interactive shell.
+
+s. Fixed a bug that could cause the `read' builtin to not fully read a
+   multibyte character.
+
+t. Fixed a bug that could cause identifiers to be evaluated in conditional
+   arithmetic expressions even when evaluation is suppressed.
+
+u. Fixed a bug that could result in command substitution, when executed in a
+   context where word splitting is not performed, to leave a stray '\001'
+   character in the string.
+
+v. Fixed a bug that could cause history expansion to be disabled in a non-
+   interactive shell even if `-o histexpand' is supplied at startup.
+
+w. Fixed a bug that caused `read -N' to strip leading whitespace IFS characters.
+
+x. Fixed a bug that caused spurious tilde expansion in arithmetic expressions.
+
+y. If indirect expansion attempts to indirectly reference through an unset
+   variable, report an error.
+
+z. Added a guard to prevent the shell from looping while receiving an endless
+   stream of SIGTTIN at shell startup.
+
+aa. Fixed a bug with parsing here documents inside a command substitution when
+    looking for the closing delimiter.
+
+bb. Fixed a bug that caused printf to not quote all <blank> characters in the
+    current locale when using the `%q' format specifier.
+
+cc. Fixed a bug with bash's internal buffered I/O system that caused the input
+    pointer to not be reset when read(2) returned an EOF.
+
+dd. Bash now installs its SIGWINCH signal handler with SA_RESTART, so it will
+    not interrupt open/read/write system calls.
+
+ee. The ERR trap now reports line numbers more reliably.
+
+ff. The shell no longer tries to manipulate the terminal process group if a
+    command or process substitution is killed by SIGTERM when job control is
+    enabled.
+
+gg. Fixed a bug that caused extglob patterns to match filenames beginning with
+    a period.
+
+hh. File descriptors open for writing to here documents are no longer available
+    to subshells.
+
+ii. Make sure word completion doesn't perform command or process substitution.
+
+jj. Fixed a bug with parsing $$'...' inside a command substitution.
+
+kk. Fixed a bug that caused bash to remove backslash-newline pairs from the
+    body of a here-document with a quoted delimiter inside a command
+    substitution.
+
+ll. Fixed a bug that could cause the shell to hang when adding a pid to the
+    table of background process exit statuses.
+
+mm. Fixed a bug that could cause 0x01 characters to be doubled in the output
+    of process substitution.
+
+nn. Restricted shells now clear the hash table before making the PATH variable
+    read-only.
+
+oo. There are a number of changes to the expansion of $* and $@ in contexts
+    where word splitting does not occur (quoted and unquoted), with IFS set
+    to NULL or a non-standard value, mostly to deal with the consequences of
+    the behavior defined in Posix interpretation 888.
+
+pp. There are a number of changes to nameref variable handling to avoid
+    creating variables with invalid names.
+
+qq. A non-interactive posix mode shell no longer exits when an assignment
+    statement fails if the assignment is utimately being performed by the
+    `command' builtin.
+
+rr. When using character class names for globbing, don't allow case
+    insensitivity, even if nocaseglob is enabled.
+
+ss. Fixed a bug that allowed some redirections to stay in place if a later
+    redirection failed.
+
+tt. Fixed a bug in how command and process substitutions are recognized within
+    other parameter expansions.
+
+uu. Fixed a bug that caused bash to loop under certain circumstances when
+    performing arithmetic expansion on a variable whose value is an invalid
+    expression.
+
+vv. Fixed a bug that could cause bash to expand aliases inappropriately while
+    parsing compound commands like `case'.
+
+ww. Fixed a bug that could cause `read -N' to fail to read complete multibyte
+    characters, even when the sequences are incomplete or invalid, with or
+    without readline.
+
+xx. Fixed a bug that could cause `case' to fail to match patterns containing
+    0x01 characters.
+
+yy. Fixed a bug that caused exported functions to contain stray 0x01 characters.
+
+zz. Fixed some inconsistencies with how the history number is handled in the
+    various prompt strings.
+
+aaa. Fixed a bug that could cause a core dump if READLINE_LINE was unset
+     inside a shell function bound to a key sequence with `bind -x'.
+
+bbb. Fixed a bug that could cause bash to not read a token terminator correctly
+     if a command substitution was used inside an arithmetic `for' command.
+
+ccc. Fixed problems that could occur with a fatal arithmetic expansion error
+     in a context (like prompt expansion) where you can't jump back to the
+     top level.
+
+ddd. Expression errors in arithmetic `for' commands are treated more like
+     shell syntax errors.
+
+eee. Fixed a parser synchronization error resulting from a syntax error
+     followed immediately by an EOF.
+
+fff. When executing a shell function, the first line in the function ($LINENO)
+     is line 1 instead of line 0, as Posix requires.
+
+ggg. In Posix mode, bash will canonicalize the value of PWD it inherits from
+     the environment and use that to set its idea of the current directory.
+
+hhh. If LINENO is exported, bash needs to regenerate its value each time it
+     constructs the environment.
+
+iii. Fixed a bug with restoring the SIGINT handler when using `wait -n'.
+
+jjj. Make sure the `coproc' command returns an appropriate status if the NAME
+     argument is invalid.
+
+kkk. Fixed a problem with arithmetic expressions containing array references
+     that contain arithmetic expressions with syntax errors.
+
+lll. The `select' command and help builtin will use $COLUMNS before the window
+     size returned from the kernel as the terminal width.
+
+mmm. `read -n 0' and `read -N 0' now try a zero-length read in an attempt to
+     detect file descriptor errors.
+
+nnn. The `read' builtin now does a better job of acting on signals that don't
+     interrupt read(2).
+
+ooo. Fixed some cases where `printf -v' did not return failure status on a
+     variable assignment error.
+
+ppp. Fixed temporary environment propagation back to the current environment
+     so that it doesn't happen for special builtins run by the `command'
+     builtin.
+
+qqq. Fixed a bug when searching for the end of a here-document delimiter in a
+     command substitution.
+
+rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail.
+
+sss. Fixed a bug that could cause reserved words to not be recognized in a
+     for statement without the `in' inside a command substitution.
+
+ttt. Fixed a bug that could cause a double-free in a timed command with an
+     expansion error.
+
+uuu. Fixed a bug that could cause a core dump if a script switches from a UTF-8
+     locale to a different locale after displaying a lone surrogate character.
+
+vvv. Fixed cases where bash prematurely removed FIFOs attached to process
+     substitutions.
+
+www. Fixed a problem with calculating the size of the table that stores exit
+     statuses from background processes when the child process resource limit
+     is very large.
+
+xxx. Fixed a memory leak with functions using `return' when using FIFOs for
+     standard input.
+
+yyy. `wait' without arguments attempts to wait for all active process
+     substitution processes.
+
+zzz. Fixed a bug where an indirect parameter was subjected to word splitting
+     when trying to find the indirected variable name.
+
+aaaa. Fixed a bug that could allow restricted shell users to add commands to
+      the hash table.
+
+bbbb. When using the `!(patlist)' extended globbing operator, a filename
+      beginning with a `.' that doesn't match any of the patterns is not
+      returned as a match if leading dots must be matched explicitly.
+
+cccc. Fixed a bug that could cause line number and source file information for
+      a function definition to be incorrect if there are multiple definitions.
+
+dddd. Fixed a bug that could cause builtins like `readonly' to behave
+      differently when applied to arrays and scalar variables within functions.
+
+eeee. Fixed a bug that could cause alias expansion to add an extra space to
+      a quoted string that begins outside the alias expansion.
+
+ffff. Fixed a bug that could result in unwanted alias expansion after timing
+      the null command.
+
+gggg. Fixed a bug that could cause a core dump if a timestamp in a history
+      file overflowed a time_t.
+
+hhhh. Restricted shells can no longer redirect from /dev/tcp or /dev/udp, since
+      the kernel calls make those file descriptors read-write.
+
+iiii. Fixed a problem with splitting double-quoted words for programmable
+      completion when the double quote immediately follows another word
+      delimiter.
+
+jjjj. Fixed a bug resulting in a use-after-free if two file descriptors share
+      the same input buffer.
+
+kkkk. The error message resulting from ${x:?} and ${x?} now differs depending
+      on whether the variable is null or unset.
+
+llll. In Posix mode, the shell exits if a variable assignment fails and precedes
+      an empty simple command (after expansion).
+
+mmmm. Fixed a timing problem with SIGALRM that could cause the read builtin to
+      drop characters.
+
+nnnn. Added code to deal with kill(2) failing to send the shell a fatal signal
+      due to Linux pid namespace peculiarities.
+
+oooo. Fixed a bug that made \C-@ (NUL) unusable in key sequences used for
+      `bind -x' commands.
+
+pppp. Fixed a bug that could cause SIGINT recursion when running an external
+      command in a trap the shell takes after a command exits due to SIGINT.
+
+qqqq. Make sure the shell turns off job control before running the command-
+      not-found handle, so the command doesn't try to manipulate process
+      groups.
+
+rrrr. Fixed a problem with timing process substitutions that caused the shell
+      to print timing information for the calling command.
+
+ssss. Fixed a bug that caused backquotes in a here-document delimiter to mark
+      the delimiter as quoted (inhibiting expansion of the here-document
+      contents).
+
+tttt. Fixed several problems with 0x01 and 0x177 in case pattern lists and
+      conditional command pattern matches.
+
+uuuu. Fixed a bug that could cause the pattern matching engine to not recognize
+      locale-specific character classes.
+
+vvvv. The auto-configuration now tests for /dev/stdin and /dev/fd independently.
+
+wwww. The `globstar' code now skips over symbolic links to directories,
+      preventing them from being scanned twice.
+
+xxxx. When running `bind -x' commands, bash now sets READLINE_POINT based on
+      the number of characters in the readline line buffer, not the number of
+      bytes.
+
+yyyy. Fixed a problem that could cause recursive trap evaluation of the RETURN
+      trap when using `eval return'.
+
+zzzz. Fixed a bug with expanding 0x01 in an unquoted here-document.
+
+aaaaa. The process substitution code now closes and unlinks FIFOs when the
+       process on the other side exits, in order to prevent SIGPIPE or
+       waiting until a FIFO opened for read has a writer.
+
+bbbbb. Fixed a bug with recursive calls to the parser overwriting the token in
+       an {id}>foo construct.
+
+ccccc. After a Posix discussion, the pattern matching engine just skips over
+       invalid character classes in bracket expressions, instead of matching
+       them like individual characters in the expression.
+
+ddddd. Fixed a posix-mode problem with variable scoping when creating variables
+       from assignment statements preceding special builtins.
+
+eeeee. Fixed a bug that could cause patterns containing backslashes to not be
+       run through the pattern matching engine.
+
+fffff. Fixed a bug that could cause redirections to compound commands to not
+       be `undone' if the file descriptor in the redirection was closed when
+       the redirection was initially processed.
+
+ggggg. Fixed a bug that could cause buffer corruption when using `bind -x' in
+       a command execute as a result of a key binding installed by `bind -x'.
+
+2.  Changes to Readline
+
+a. Added a guard to prevent nested macros from causing an infinite expansion
+   loop.
+
+b. Instead of allocating enough history list entries to hold the maximum list
+   size, cap the number allocated initially.
+
+c. Added a strategy to avoid allocating huge amounts of memory if a block of
+   history entries without timestamps occurs after a block with timestamps.
+
+d. Added support for keyboard timeouts when an ESC character is the last
+   character in a macro.
+
+e. There are several performance improvements when in a UTF-8 locale.
+
+f. Readline does a better job of preserving the original set of blocked
+   signals when using pselect() to wait for input.
+
+g. Fixed a bug that caused multibyte characters in macros to be mishandled.
+
+h. Fixed several bugs in the code that calculates line breaks when expanding
+   prompts that span several lines, contain multibyte characters, and contain
+   invisible character seqeuences.
+
+i. Fixed several bugs in cursor positioning when displaying lines with prompts
+   containing invisible characters and multibyte characters.
+
+j. When performing case-insensitive completion, Readline no longer sorts the
+   list of matches unless directed to do so.
+
+k. Fixed a problem with key sequences ending with a backslash.
+
+l. Fixed out-of-bounds and free memory read errors found via fuzzing.
+
+m. Fixed several cases where the mark was set to an invalid value.
+
+n. Fixed a problem with the case-changing operators in the case where the
+   lower and upper case versions of a character do not have the same number
+   of bytes.
+
+o. Handle incremental and non-incremental search character reads returning EOF.
+
+p. Handle the case where a failing readline command at the end of a multi-key
+   sequence could be misinterpreted.
+
+q. The history library now prints a meaningful error message if the history
+   file isn't a regular file.
+
+r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace
+   a multibyte character.
+
+s. The key binding code now attempts to remove a keymap if a key unbinding
+   leaves it empty.
+
+t. Fixed a line-wrapping issue that caused problems for some terminal
+   emulators.
+
+u. If there is a key bound to the tty's VDISCARD special character, readline
+   disables VDISCARD while it is active.
+
+v. Fixed a problem with exiting bracketed paste mode on terminals that assume
+   the bracketed paste mode character sequence contains visible characters.
+
+w. Fixed a bug that could cause a key binding command to refer to an
+   uninitialized variable.
+
+3.  New Features in Bash
+
+a. The `wait' builtin can now wait for the last process substitution created.
+
+b. There is an EPOCHSECONDS variable, which expands to the time in seconds
+   since the Unix epoch.
+
+c. There is an EPOCHREALTIME variable, which expands to the time in seconds
+   since the Unix epoch with microsecond granularity.
+
+d. New loadable builtins: rm, stat, fdflags.
+
+e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment.
+
+f. When supplied a numeric argument, the shell-expand-line bindable readline
+   command does not perform quote removal and suppresses command and process
+   substitution.
+
+g. `history -d' understands negative arguments: negative arguments offset from
+   the end of the history list.
+
+h. The `name' argument to the `coproc' reserved word now undergoes word
+   expansion, so unique coprocs can be created in loops.
+
+i. A nameref name resolution loop in a function now resolves to a variable by
+   that name in the global scope.
+
+j. The `wait' builtin now has a `-f' option, which signfies to wait until the
+   specified job or process terminates, instead of waiting until it changes
+   state.
+
+k. There is a define in config-top.h that allows the shell to use a static
+   value for $PATH, overriding whatever is in the environment at startup, for
+   use by the restricted shell.
+
+l. Process substitution does not inherit the `v' option, like command
+   substitution.
+
+m. If a non-interactive shell with job control enabled detects that a foreground
+   job died due to SIGINT, it acts as if it received the SIGINT.
+
+n. The SIGCHLD trap is run once for each exiting child process even if job
+   control is not enabled when the shell is in Posix mode.
+
+o. A new shopt option: localvar_inherit; if set, a local variable inherits the
+   value of a variable with the same name at the nearest preceding scope.
+
+p. `bind -r' now checks whether a key sequence is bound before binding it to
+   NULL, to avoid creating keymaps for a multi-key sequence.
+
+q. A numeric argument to the line editing `operate-and-get-next' command
+   specifies which history entry to use.
+
+r. The positional parameters are now assigned before running the shell startup
+   files, so startup files can use $@.
+
+s. There is a compile-time option that forces the shell to disable the check
+   for an inherited OLDPWD being a directory.
+
+t. The `history' builtin can now delete ranges of history entries using
+   `-d start-end'.
+
+u. The `vi-edit-and-execute-command' bindable readline command now puts readline
+   back in vi insertion mode after executing commands from the edited file.
+
+v. The command completion code now matches aliases and shell function names
+   case-insensitively if the readline completion-ignore-case variable is set.
+
+w. There is a new `assoc_expand_once' shell option that attempts to expand
+   associative array subscripts only once.
+
+x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended
+   debugging mode is active. The old behavior of unconditionally setting them
+   is available as part of the shell compatibility options.
+
+y. The `umask' builtin now allows modes and masks greater than octal 777.
+
+z. The `times' builtin now honors the current locale when printing a decimal
+   point.
+
+aa. There is a new (disabled by default, undocumented) shell option to enable
+    and disable sending history to syslog at runtime.
+
+4.  New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+   Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+   commands, which move the cursor to the same column in the next, or previous,
+   physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+   characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+   respond to signals that readline catches while waiting for input using
+   a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+   inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+   inputrc file. Allowable operators are equality and inequality; string
+   variables may be compared to a value; boolean variables must be compared to
+   either `on' or `off'; variable names are separated from the operator by
+   whitespace.
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-4.4-release, and
 the previous version, bash-4.4-rc2.
 
@@ -21,7 +838,6 @@ e.  Fixed several potential buffer overflow issues in the word expansion code.
 3.  New Features in Bash
 
 4.  New Features in Readline
-
 ------------------------------------------------------------------------------
 This document details the changes between this version, bash-4.4-rc2, and
 the previous version, bash-4.4-beta2.
diff --git a/COMPAT b/COMPAT
index 9959b962fd15b729c747511edb98d062d0c0f1c0..ce6a791cbecca5451e04a07cfec3301d760a6071 100644 (file)
--- a/COMPAT
+++ b/COMPAT
@@ -2,9 +2,9 @@ Compatibility with previous versions
 ====================================
 
 This document details the incompatibilities between this version of bash,
-bash-4.4, and the previous widely-available versions, bash-3.x (which is
-still the `standard' version for Mac OS X), 4.1/4.2 (which are still
-standard on a few Linux distributions), and bash-4.3, the current
+bash-5.0, and the previous widely-available versions, bash-3.x (which is
+still the `standard' version for Mac OS X), 4.2/4.3 (which are still
+standard on a few Linux distributions), and bash-4.4, the current
 widely-available version.  These were discovered by users of bash-2.x
 through 4.x, so this list is not comprehensive.  Some of these
 incompatibilities occur between the current version and versions 2.0 and
@@ -391,6 +391,20 @@ above.
     argument to `declare' or a similar builtin expands to a word that looks
     like a compound array assignment (e.g. declare w=$x where x='(foo)').
 
+60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended
+    debugging mode is active. The old behavior of unconditionally setting
+    BASH_ARGC and BASH_ARGV is available at compatibility levels less than
+    or equal to 44.
+
+61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt
+    to break or continue loop execution inherited from the calling context.
+
+62. Bash-5.0 doesn't allow variable assignments preceding builtins like
+    export and readonly to modify variables with the same name in preceding
+    contexts (including the global context) unless the shell is in posix
+    mode, since export and readonly are special builtins.
+
+
 Shell Compatibility Level
 =========================
 
@@ -446,10 +460,22 @@ compat43 set
          (declare -a foo='(1 2)')
        - word expansion errors are considered non-fatal errors that cause the
          current command to fail, even in Posix mode
-       - when executing a shell function, the loop state (while/until/etc.) is
-         not reset, so `break' or `continue' in a shell function will break or
-         continue loops in the calling context.  Bash-4.4 and later reset the
-         loop state to prevent this.
+       - when executing a shell function, the loop state (while/until/etc.)
+         is not reset, so `break' or `continue' in that function will break
+         or continue loops in the calling context. Bash-4.4 and later reset
+         the loop state to prevent this.
+
+compat44 set
+       - the shell sets up the values used by BASH_ARGV and BASH_ARGC so
+         they can expand to the shell's positional parameters even if extended
+         debug mode is not enabled
+       - a subshell inherits loops from its parent contenxt, so `break'
+         or `continue' will cause the subshell to exit
+       - variable assignments preceding builtins like export and readonly
+         that set attributes continue to affect variables with the same
+         name in the calling environment even if the shell is not in posix
+         mode
+
 
 -------------------------------------------------------------------------------
 
index f37159d8b855271932305cde365a5823ca8ae4a9..c33023fc092eed005789f5893f6dd7fd855e7c3a 100644 (file)
-                                2/14/2011
+                                9/15/2016
                                 ---------
-[bash-4.2 released]
+[bash-4.4 released]
 
-                                  2/15
+                                  9/17
                                   ----
-lib/glob/gmisc.c
-       - fix wmatchlen and umatchlen to avoid going past the end of the
-         string on an incomplete bracket expression that ends with a
-         NUL.  Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
+builtins/common.c
+       - display_signal_list: if 0 is supplied as an argument to kill -l,
+         display a signal-out-of-range error.  Fixes bug reported by
+         Martijn Dekker <martijn@inlv.org>
 
-                                  2/16
+                                  9/18
                                   ----
-subst.h
-       - new string extract flag value: SX_WORD.  Used when calling
-         extract_dollar_brace_string to skip over the word in
-         ${param op word} from parameter_brace_expand
-
-subst.c
-       - change parameter_brace_expand to add SX_WORD to flags passed to
-         extract_dollar_brace_string
-       - change parameter_brace_expand to use SX_POSIXEXP for all non-posix
-         word expansion operators that treat single quotes as special, not
-         just % and #
-       - change extract_dollar_brace_string to initialize dolbrace_state to
-         DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use
-         DOLBRACE_QUOTE.  Fixes bug reported by Juergen Daubert <jue@jue.li>
-
-doc/{bash.1,bashref.texi}
-       - document the exact expansions here strings undergo
+print_cmd.c
+       - print_heredoc_bodies: take a list of redirections, all here documents,
+         and print the here-document bodies including the ending delimiter,
+         followed by a newline
+       - print_redirection_list: print the heredoc headers the first time
+         through the list of redirections so we print them in the same left-
+         to-right order they're supplied; print the bodies and delimiters with
+         print_heredoc_bodies after we print all the redirections if we're
+         not printing a list of commands (printing_connection == 0).  Fix for
+         problem reported by Isabella Parakiss <izaberina@gmail.com>
+       - print_deferred_heredocs: don't print heredoc headers, since they're
+         now printed in print_redirection_list
+       - print_deferred_heredocs: use print_heredoc_bodies
 
-                                  2/17
+                                  9/20
                                   ----
-lib/readline/vi_mode.c
-       - make sure that `dd', `cc', and `yy' call vidomove_dispatch from
-         rl_domove_read_callback.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
+builtins/mapfile.def
+       - readarray: update usage synopsis to include -d delim.  Report and
+         fix from jhankins@homewood.k12.al.us
 
-lib/readline/callback.c
-       - make sure _rl_internal_char_cleanup is called after the
-         vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char.
-         Companion to above fix
+test.c
+       - test_binop: if op[0] == '-', make sure op[1] != 0 before checking
+         op[2] or op[3].  Fixes out-of-bounds read reported by Franco
+         Costantini <franco.costantini.20@gmail.com>
 
-doc/{bash.1,bashref.texi}
-       - make sure that the text describing the rhs of the == and =~
-         operators to [[ states that only the quoted portion of the pattern
-         is matched as a string
+parse.y
+       - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0
+         before checking word[2] and calling test_unop.  Fixes out-of-bounds
+         read reported by Franco Costantini <franco.costantini.20@gmail.com>
+       - make sure to check all instances of the return value of the
+         simple_command production before trying to hook redirections onto it,
+         since it can potentially return NULL.
+         Reported by Franco Costantini <franco.costantini.20@gmail.com>
 
-                                  2/18
+                                  9/21
                                   ----
-lib/glob/gmisc.c
-       - better fix for umatchlen/wmatchlen: keep track of the number of
-         characters in a bracket expression as the value to increase
-         matchlen by if the bracket expression is not well-formed.  Fixes
-         bug reported by Clark Wang <dearvoid@gmail.com>
+parse.y
+       - token_is_assignment: make sure to check that the return value from
+         assignment() finds the `=' we just added at index I to avoid false
+         positives from g=g=g=g=g=g=().  Reported by Franco Costantini
+         <franco.costantini.20@gmail.com>
 
-subst.c
-       - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag
-         in the word flags.  We will not perform word splitting or quote
-         removal on the result, so we do not want to add quoted nulls if
-         we see "" or ''.  Fixes bug reported by Mike Frysinger
-         <vapier@gentoo.org>
+                                  9/22
+                                  ----
+parse.y
+       - token_is_assignment: if we're not using the bash malloc (which has
+         guard bytes after the requested allocation size), use a new
+         buffer so we can make sure it's big enough to hold the current
+         token and at least two additional characters.  Reported by
+         Franco Costantini <franco.costantini.20@gmail.com>
 
-                                  2/19
+                                  9/23
                                   ----
-variables.c
-       - new function, int chkexport(name), checks whether variable NAME is
-         exported and remakes the export environment if necessary.  Returns
-         1 if NAME is exported and 0 if not
-       - call chkexport(name) to get tzset to look at the right variable in
-         the environment when modifying TZ in sv_tz.  Don't call tzset if
-         chkexport doesn't indicate that the variable is exported
+execute_command.c
+       - execute_in_subshell: call without_job_control for both job control
+         and non-job-control builds to avoid waiting for last_made_pid
+         inherited from parent shell.  Related to fix from 8/4 to
+         initialize_subshell.  Fixes bug reported by Martijn Dekker
+         <martijn@inlv.org>
 
-variables.h
-       - new extern declaration for chkexport
+builtins/declare.def
+       - local_builtin: allow `local --help' to work even when not executing
+         a function. Suggestion from Norm Abramovitz <norm@starkandwayne.com>
+
+                                  9/25
+                                  ----
+builtins/printf.def
+       - bexpand: if passed a null or empty string, return a newly-allocated
+         empty string (so the return value can always be freed) instead of
+         NULL.
+       - printstr: if passed a null string, treat it as if it were an empty
+         string so any precision or fieldwidth arguments are handled
+         correctly.  Report from isabella parakiss <izaberina@gmail.com>
 
+subst.c
+       - skip_matched_pair: make the flags argument of 1 affect whether or
+         not backslash can quote characters in the string, so it affects
+         all quoting mechanisms
 
-{parse.y,builtins/printf.def}
-       - call sv_tz before calling localtime() when formatting time strings
-         in prompt strings or using printf.  Fixes bug reported by
-         Dennis Williamson <dennistwilliamson@gmail.com>
+arrayfunc.c
+       - unbind_array_element: now takes a third (flags) argument; flags&1
+         means to not expand an associative array index. This is only called
+         from a shell builtin context, which means the argument should have
+         already undergone word expansion, so it should be ok.  Will still
+         be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid
+         globbing
+       - valid_array_reference: pass second flags argument to skipsubscript;
+         still set to 0 by all callers
 
-execute_cmd.c
-       - modify fix of 2/9 to add casts when those variables are passed to
-         functions; some compilers throw errors instead of warnings.  Report
-         and fix from Joachim Schmitz <jojo@schmitz-digital.de>
+arrayfunc.h
+       - unbind_array_element: updated prototype
 
-support/shobj-conf
-       - add a stanza for nsk on the Tandem from Joachim Schmitz
-         <jojo@schmitz-digital.de>
+builtins/set.def
+       - unset_builtin: add third argument of 1 to unbind_array_element calls
+         [TEMPORARILY DISABLED]
+       - unset_builtin: call valid_array_reference with second arg of 1 to
+         handle unmatched pairs of quotes and [/]
 
-{shell,lib/readline/shell}.c
-       - Tandem systems should use getpwnam (getlogin()); for some reason
-         they don't do well with using getuid().  Fix from Joachim Schmitz
-         <jojo@schmitz-digital.de>
+array.c
+       - array_reference: optimize access locality as well as sequential
+         access by adding ability to start from last-accessed element and move
+         backwards or forwards depending on the desired index.  Inspired by
+         report from Tom McCurdy <tom.j.mccurdy@gmail.com> and followup from
+         Christian Franke <Christian.Franke@t-online.de>
 
-                                   3/1
-                                   ---
 variables.c
-       - make sure that the return value from find_variable is non-null
-         before trying to use it in chkexport.  Fixes bug reported by
-         Evangelos Foutras <foutrelis@gmail.com>
-
-                                   3/3
-                                   ---
-parse.y
-       - when adding $$ to the current token buffer in read_token_word(),
-         don't xmalloc a buffer for two characters and then strcpy it, just
-         copy the characters directly into the token buffer.  Fix from
-         Michael Whitten <mfwitten@gmail.com>
+       - all_array_variables: include associative arrays, not just indexed
+         arrays.  Reported by Grisha Levit <grishalevit@gmail.com>
 
 execute_cmd.c
-       - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to
-         be expanded, so "" doesn't add CTLNUL.  Similar to fix of 2/18 to
-         expand_string_for_rhs.  Fixes bug reported by Nathanael D. Noblet
-         <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
-
-parse.y
-       - fix extended_glob case of read_token_word to allocate an extra
-         space in the buffer for the next character read after the extended
-         glob specification if it's a CTLESC or CTLNUL.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-       - fix shell expansions case of read_token_word to allocate an extra
-         space in the buffer for the next character read after the shell
-         expansion if it's a CTLESC or CTLNUL.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-       - TENTATIVE: fix read_token_word to reduce the amount of buffer space
-         required to hold the translated and double-quoted value of $"..."
-         strings.  Report and fix from Michael Witten <mfwitten@gmail.com>
-       - change code around got_character and got_escaped_character labels to
-         make sure that we call RESIZE_MALLOCED_BUFFER before adding the
-         CTLESC before a CTLESC or CTLNUL, and before adding the character if
-         we're not adding a CTLESC.  Report and fix from
-         Michael Witten <mfwitten@gmail.com>
-
-subst.c
-       - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that
-         parameter expansion is on rhs of assignment statement.  That inhibits
-         word splitting
-       - change param_expand to call string_list_dollar_at with quoted == 1
-         if PF_ASSIGNRHS is set, so it will quote IFS characters in the
-         positional parameter before separating them with the first char of
-         $IFS.  This keeps the rhs from being split inappropriately.  Fixes
-         bug reported by Andres Perera <andres.p@zoho.com>
-
-                                   3/4
-                                   ---
-lib/readline/bind.c
-       - add a missing free of `names' in rl_function_dumper.  Bug report
-         and fix from Michael Snyder <msnyder@vmware.com>
+       - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK),
+         decrement the shell level so we don't end up incrementing it twice.
+         We should decrement the shell level for an implicit exec like an
+         explicit one.  Reported by Stephane Chazelas
+         <stephane.chazelas@gmail.com>
 
-                                   3/5
-                                   ---
-lib/readline/rltty.c
-       - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
-         if rl_instream is not set, like rl_prep_terminal
+builtins/exec.def
+       - exec_builtin: don't bother to decrement the shell level if we are
+         already in a `(command)' subshell.  Reported by Stephane Chazelas
+         <stephane.chazelas@gmail.com>
 
-                                   3/6
-                                   ---
-lib/readline/display.c
-       - fix rl_message to use a dynamically-allocated buffer instead of a
-         fixed-size buffer of 128 chars for the `local message prompt'.  Bug
-         report and fix from Micah Cowan <micah@cowan.name>
+lib/readline/macro.c
+       - macro_level: count of macro nesting level, maintained by
+         _rl_push_executing_macro and _rl_pop_executing macro
+       - _rl_with_macro_input: if current nesting level exceeds
+         MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal
+         and return to the top level.  Reported by Christian Klomp
+         <christianklomp@gmail.com>
+
+lib/readine/history.c
+       - add_history: if allocating the history list for the first time,
+         make sure the max history list size isn't so large that it will
+         cause allocation errors.  Cap it at MAX_HISTORY_INITIAL_SIZE
+         (8192).  Reported by Sean Zha <freeman_cha@hotmail.com>
 
-                                   3/7
-                                   ---
 jobs.c
-       - add sentinel to wait_sigint_handler so it only sets wait_sigint_received
-         if waiting_for_child is non-zero; otherwise, it restores the old
-         SIGINT handler and sends itself the SIGINT
-       - set waiting_for_child around the calls to waitchld that use it to
-         synchronously wait for a process
-       - change logic that decides whether or not the child process blocked
-         or handled SIGINT based on whether or not waitpid returns -1/EINTR
-         and the shell receives a SIGINT and the child does not exit.  If
-         the child later exits due to SIGINT, cancel the assumoption that it
-         was handled
-       - instead of testing whether or not the child exited due to SIGINT
-         when deciding whether the shell should act on a SIGINT it received
-         while waiting, test whether or not we think the child caught
-         SIGINT.  If it did, we let it go (unless the shell has it trapped);
-         if it did not catch it, the shell acts on the SIGINT.  Fix from
-         Linus Torvalds <torvalds@linux-foundation.org>, bug report originally
-         from Oleg Nesterov <oleg@redhat.com>
-
-                                   3/8
-                                   ---
-shell.c
-       - initialize no_line_editing to 1 if READLINE is not defined -- we
-         can't have line editing without readline
+       - wait_for: if a foreground job with job control enabled is killed by a
+         SIGINT and sourcelevel != 0, act as if we received the SIGINT so the
+         file sourcing can be terminated.  Reported by PePa
+         <peterkelly@passchier.net>
 
-                                  3/12
+                                  9/26
                                   ----
-lib/readline/signals.c
-       - add SIGHUP to the set of signals readline handles
-
-lib/readline/doc/rltech.texi
-       - document that SIGHUP is now part of the set of signals readline
-         handles
+subst.c
+       - read_comsub: only warn once for null bytes in command substitution
+         output, instead of once for every null byte
 
-lib/readline/input.c
-       - if _rl_caught_signal indicates that read() was interrupted by a
-         SIGHUP or SIGTERM, return READERR or EOF as appropriate
-       - call rl_event_hook, if it's set, if call to read in rl_getc
-         returns -1/EINTR.  If rl_event_hook doesn't do anything, this
-         continues the loop as before.  This handles the other fatal
-         signals
+arrayfunc.c
+       - array_variable_part: now takes a `flags' argument; changed all callers
+         to initially pass 0
+       - array_variable_name: now takes a `flags' argument; changed all callers
+         to initially pass 0
+       - array_variable_name: pass `flags' argument to skipsubscript instead
+         of just passing 0
 
-execute_cmd.c
-       - add a couple of QUIT; calls to execute_disk_command and
-         execute_simple_command to improve responsiveness to interrupts
-         and fatal signals
+arrayfunc.h
+       - array_variable_{name,part}: added new argument to prototypes
 
-input.c
-       - rearrange getc_with_restart so that the return values from read()
-         are handled right
+                                  9/29
+                                  ----
+bashline.c
+       - bash_directory_completion_hook: don't bother to try and expand a
+         ${ or $( that isn't complete; expand_prompt_string will complain.
+         Fixes reports from John Passaro <john.a.passaro@gmail.com> and
+         Valentin Bajrami <valentin.bajrami@gmail.com>
 
-parse.y
-       - don't need to set terminate_immediately in yy_stream_get, since
-         getc_with_restart checks for terminating signals itself
-       - since readline returns READERR on SIGHUP or SIGTERM, don't need
-         to set terminate_immediately.  Still doesn't handle other
-         signals well -- will have to check that some more
+lib/readline/history.c
+       - _hs_append_history_line: use a strategy that attempts to avoid
+         realloc copying memory to a newly-allocated block if the history
+         line we're appending to gets `too long' (currently 256 bytes).
+         We reallocate in powers of 2 starting at 512, and rely on realloc
+         not allocating a new block and copying into it if the size is the
+         same as the last call to realloc.  Addresses issue raised by
+         Hubert Schmid <h.schmid@gmx.de>
 
-bashline.c
-       - new function, bash_event_hook, for rl_event_hook.  Just checks for
-         terminating signals and acts on them using CHECK_TERMSIG.
-       - set rl_event_hook to bash_event_hook
+trap.h
+       - check_signals: new extern declaration
+       - trapped_signal_received: new extern declaration
 
 builtins/read.def
-       - take out setting terminate_immediately; add calls to CHECK_TERMSIG
-         after read calls
-
-doc/{bash.1,bashref.texi}
-       - move the text describing the effect of negative subscripts used to
-         reference indexed array elements to the paragraphs describing
-         ${parameter[subscript]}, since that's where they are implemented.
-         Pointed out by Christopher F. A. Johnson <cfajohnson@gmail.com>
+       - read_builtin: if one of the zread* functions returns < 0 (which
+         usually only happens in Posix mode), make sure we call check_signals()
+         before eventually calling run_pending_traps() because zread() isn't
+         going to call it
+       - include trap.h for correct extern functions and variable declarations
 
-arrayfunc.[ch],subst.c
-       - array_expand_index now takes a new first argument: a SHELL_VAR *
-         of the array variable being subscripted.  Can be used later to fully
-         implement negative subscripts
+lib/sh/zread.c
+       - zread: if executing a builtin, call check_signals_and_traps() for
+         backwards compatibility.  If not, call check_signals() only, because
+         we don't want to run traps during, for instance, reading command
+         substitution output.  Fixes race condition bug reported by Luiz Angelo
+         Daros de Luca <luizluca@gmail.com>
 
-                                  3/14
+                                  9/30
                                   ----
-lib/glob/glob.c
-       - fix mbskipname to not turn the directory entry name into a wide char
-         string if the conversion of the pattern to a wide char string fails
-       - fix mbskipname to call skipname if either the pattern or the filename
-         can't be converted into a wide-char string
+subst.c
+       - command_substitute: reset parse_and_execute_level to 0 in the child
+         process, since it's independent of the other parse_and_execute
+         calls.  Adds command substitution inside other parse_and_execute
+         calls optimizations to suppress forks, as suggested by
+         Martijn Dekker <martijn@inlv.org>
 
-lib/glob/xmbsrtowcs.c
-       - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and
-         short-circuit with failure in that case.  Fixes bug reported by
-         Roman Rakus <rrakus@redhat.com>
+                                  10/3
+                                  ----
+configure.ac
+       - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted
+         if the shobj-conf script isn't run.  Fixes `make install' bug with
+         a minimal config reported by Andrew Tomazos <andrewtomazos@gmail.com>
 
-                                  3/15
+                                  10/5
                                   ----
-bashline.c
-       - new variable, bash_filename_quote_characters to store the value
-         assigned to rl_filename_quote_characters so it can be restored
-         if changed.
-       - change bashline_reset and attempt_shell_completion to restore
-         rl_filename_quote_characters if not set to default
+support/shobj-conf
+       - darwin: set compatibility_version for a shared build of the readline
+         library (the standalone readline distribution shares this file) to
+         $(SHLIB_MAJOR)$(SHLIB_MINOR).  Recommendation from Max Horn
+         <max@quendi.de>
 
-                                  3/22
+                                  10/6
                                   ----
-lib/glob/glob.c
-       - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
-         fails to convert the pathname to a wide-character string
+array.h
+       - array_first_index: new convenience define
 
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs2: change to fix problem with leading '\\' (results in
-         nms == 0, which causes it to short-circuit with failure right
-         away).  Fixes bug pointed out by Werner Fink <werner@suse.de>
-       - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
-         next single-byte character and going on
-       - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
-         bytes; try to avoid calls to realloc (even if they don't actually
-         result in more memory being allocated)
+array.c
+       - ADD_AFTER: new define, complement of ADD_BEFORE
+       - UNSET_LASTREF: now takes an array as an argument, prepping for move
+         of lastref pointer into the array struct
+       - array_insert: check whether we are adding at the beginning of the
+         array and take a fast path if so
+       - array_insert: use same strategy as array_reference to find the place
+         to insert, starting from the last-referenced element and moving
+         forward or back from there; use ADD_AFTER if moving backward
+       - array_insert: if replacing an existing element, just replace the
+         value with new->value instead of the entire element
+       - array_reference: short-circuit quickly if looking for an element
+         before the first assigned index
+       - array_reference: if we don't find the element, leave lastref pointing
+         to the closest element under the assumption we will be assigning or
+         looking for something close
+       - array_reference: take advantage of ordered indexes to short-circuit
+         when looking for element that is not set
 
-                                  3/24
+                                  10/7
                                   ----
-doc/{bash.1,bashref.texi}
-       - slightly modify BASH_SUBSHELL description based on complaint from
-         Sam Liddicott <sam@liddicott.com>
+array.c
+       - array_remove: short-circuit if asked to remove index after max
+         index or before first index
 
-                                  3/25
-                                  ----
-trap.c
-       - change free_trap_strings to not call free_trap_string for signals
-         that are being ignored, like reset_or_restore_signal_handlers.
-         Fixes bug reported by Satoshi Takahashi <blue3waters@gmail.com>
+                                  10/10
+                                  -----
+lib/malloc/malloc.c
+       - internal_realloc: if we are requesting reallocation to the same size
+         as the block's current size, short-circuit and return `mem' right
+         after doing bounds check
+       - internal_realloc: if we are reducing the size of an allocation, and
+         the new size fits in the next lower bin, just keep the same block
+         and adjust the size, so we can avoid some copies
 
-                                  3/26
-                                  ----
-lib/readline/rltypedefs.h
-       - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
-         suggested by Tom Tromey <tromey@redhat.com>
+parse.y
+       - set_line_mbstate: keep track of the allocated size of
+         shell_input_line_property, only request reallocation if the size
+         increases, but don't let it get too big
 
-lib/readline/rlstdc.h
-       - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
-         config.h.in to here because declaration of rl_message in
-         readline.h uses the defines.  This makes it hard for another packages
-         to use after the header files are installed, since config.h is not
-         one of the installed files.  Suggested by Tom Tromey
-         <tromey@redhat.com>
+                                  10/11
+                                  -----
+jobs.c
+       - wait_for_background_pids: make sure we wait for pid in
+         last_procsub_child since it's not found in any job -- still needs
+         more work to wait for multiple process substitutions
 
-                                  3/27
-                                  ----
-print_cmd.c
-       - change indirection_string from a static buffer to a dynamic one
-         managed by indirection_level_string(), so we don't end up truncating
-         PS4.  Suggested by Dennis Williamson <dennistwilliamson@gmail.com>
+subst.c
+       - process_substitute: if make_child fails, make sure we call
+         restore_pipeline to undo the previous save_pipeline()
 
-lib/readline/shell.c
-       - change sh_set_lines_and_columns to use static buffers instead of
-         allocating the buffers to pass to setenv/putenv
+                                  10/15
+                                  -----
+subst.c
+       - process_substitute,command_substitute: leave subshell_level (reflected
+         as $BASH_SUBSHELL) intact for any exit trap instead of decrementing
+         it.  Suggested by Martijn Dekker <martijn@inlv.org>
 
-lib/readline/terminal.c
-       - change _rl_get_screen_size to not call sh_set_lines_and_columns if
-         ignore_env == 0
-       - _rl_sigwinch_resize_terminal: new function to just retrieve terminal
-         size, ignoring environment
+builtins/evalstring.c
+       - optimize_subshell_command: new function, framework for optimizing
+         out forks for command that have already forked and are executing
+         in a subshell. Not used yet
 
-lib/readline/rlprivate.h
-       - new external declaration for _rl_sigwinch_resize_terminal() (currently
-         unused)
+expr.c
+       - readtok: if we have a post-increment or post-decrement, and the
+         previous token is not a string, check whether the previous token is
+         a number that results from a pre-increment or pre-decrement, and
+         make that an error.  Report from Conrad Hoffmann <ch@bitfehler.net>
 
-lib/readline/signals.c
-       - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
-       - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
-         leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
-       - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
-         Should fix hang when sending multiple repeated SIGWINCH reported by
-         Henning Bekel <h.bekel@googlemail.com>
+                                  10/16
+                                  -----
+aclocal.m4
+       - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE
+         with existing set of preprocessor defines, so it can work when
+         cross-compiling.  Suggested by Felix Janda <felix.janda@posteo.de>
 
-                                  3/29
-                                  ----
-lib/sh/snprintf.c
-       - include math.h for any defines for isinf/isnan
-       - use code from gnulib documentation to implement isinf/isnan if they
-         are not defined
+                                  10/19
+                                  -----
+variables.c
+       - get_bashpid: BASHPID is no longer readonly; assignments to it are
+         just ignored.
 
-configure.in
-       - don't check for isinf or isnan; c99 says they're macros anyway
+doc/{bash.1,bashref.texi}
+       - BASHPID: note that assignments are ignored and unsetting BASHPID
+         causes it to lose its special properties
 
-config.h.in
-       - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
-         by snprintf.c
+                                  10/28
+                                  -----
+builtins/pushd.def
+       - popd_builtin: make sure to check the normalized stack offset
+         (i.e., negatives counting back from the end of the stack) is within
+         bounds before trying to free that stack entry.  Report from
+         Fernando Muñoz <fernando@null-life.com>
 
-                                   4/2
-                                   ---
-braces.c
-       - brace_gobbler: fix to understand double-quoted command substitution,
-         since the shell understands unquoted comsubs.  Fixes bug reported
-         by Michael Whitten <mfwitten@gmail.com>
+lib/readline/histfile.c
+       - chown: protect calls with HAVE_CHOWN.  Fixes for MinGW{64,32} from
+         J. Peter Mugaas <jpmugaas@suddenlink.net>
 
-lib/readline/display.c
-       - include <pc.h> on MDOS
-       - get and set screen size using DJGPP-specific calls on MSDOS
-       - move cursor up clear screen using DJGPP-specific calls
-       - don't call tputs on DJGPP; there is no good terminfo support
+lib/readline/colors.c
+       - S_ISDIR: add define if missing
+       - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined.
+         Fixes for MinGW{64,32} from J. Peter Mugaas <jpmugaas@suddenlink.net>
 
-lib/readline/terminal.c
-       - include <pc.h> on MDOS
-       - get and set screen size using DJGPP-specific calls on MSDOS
-       - use DJGPP-specific initialization on MSDOS, zeroing all the
-         _rl_term_* variables
-       - don't call tputs on DJGPP; there is no good terminfo support
-         DJGPP support from Eli Zaretskii  <eliz@gnu.org>
+bashhist.c
+       - current_command_line_comment: set to the most recent line in a
+         possibly multi-line command that contains a shell comment; set in
+         maybe_add_history and bash_add_history to either the current
+         command number or -2
+       - maybe_add_history: set current_command_line_comment for first line
+         of command
+       - bash_add_history: chars_to_add set to "\n" if the current command line
+         is one greater than the previous line containing a comment
+         (current_command_line_comment).  Fixes complaint from back in
+         January, 2016 from Dave Rutherford <dave@evilpettingzoo.com>
+
+array.h
+       - lastref: move last-referenced pointer into each array struct, so all
+         arrays can have reference locality
 
-                                   4/6
-                                   ---
+array.c
+       - array_create: set lastref element to 0
+       - array_copy: if copying the lastref in array a, set the new lastref
+         in the copy to the same element
+       - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF,
+         UNSET_LASTREF: change to use new array `lastref' member
 
-config-top.h
-       - change DEFAULT_PATH_VALUE to something more useful and modern
+pathexp.c
+       - quote_string_for_globbing: if quoting for a regexp, make sure to
+         skip and copy a leading `^' in a bracket expression, and skip and
+         copy a subsequent `]' (after an optional `^'), so that leading
+         bracket doesn't close the bracket expression.  Report from
+         Stephane Chazelas <stephane.chazelas@gmail.com>
 
-                                   4/8
-                                   ---
-tests/printf2.sub
-       - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
-         Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
+                                  10/29
+                                  -----
+subst.c
+       - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for
+         $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes
+       - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${,
+         process substitution
+       - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for
+         $(
+       - extract_dollar_brace_string: use skipsubscript to skip over the
+         array subscript in ${var[sub]} (non-quoted case uses string_extract,
+         which already uses skipsubscript).  Tagged for bash-5.0
 
-                                  4/11
-                                  ----
-include/chartypes.h
-       - fix a couple of dicey defines (though ones that don't cause any
-         compiler warnings) in IN_CTYPE_DOMAIN
+                                  10/30
+                                  -----
+variables.c
+       - EPOCHSECONDS: new dynamic variable, time in seconds since Unix
+         epoch; assignments are ignored.  Can be used on systems where
+         strftime() doesn't support '%s'
+       - EPOCHREALTIME: new dynamic variable, time in seconds since Unix
+         epoch with microsecond granularity
 
-doc/{bashref.texi,bash.1}
-       - add note referring to duplicating file descriptors in sections
-         describing redirecting stdout and stderr and appending to stdout
-         and stderr.  Suggested by Matthew Dinger <mdinger.bugzilla@gmail.com>
+doc/{bash.1,bashref.texi}
+       - EPOCHSECONDS documentation
+       - EPOCHREALTIME documentation
 
-pcomplete.c
-       - it_init_helptopics: new function to support completing on help topics,
-         not just builtins
-       - it_helptopics: new programmable completion list of help topics
-       - build list of helptopic completions in gen_action_completions on
-         demand
+execute_cmd.c
+       - decpoint: moved to locale.c, renamed locale_decpoint; changed callers
 
-pcomplete.h
-       - new extern declaration for it_helptopics
+{bashintl,externs}.h
+       - locale_decpoint: extern declaration or #define if support for
+         localeconv() not there
 
-builtins/complete.def
-       - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
-         since there are more help topics than just builtins.  Suggested by
-         Clark Wang <dearvoid@gmail.com>
+                                  10/31
+                                  -----
+lib/malloc/malloc.c
+       - posix_memalign: add new posix-mandated interface
 
-                                  4/12
-                                  ----
-print_cmd.c
-       - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS
-         before ending the body of the command, so heredocs get attached to
-         the right command instead of to the loop.  From gentoo bug 363371
-         http://bugs.gentoo.org/show_bug.cgi?id=363371
+examples/loadables/rm.c
+       - rm: minimal loadable builtin, removes files and directories, only
+         handles -r and -f options.  Original from Tim Ruehsen
+         <tim.ruehsen@gmx.de>, heavily rewritten for inclusion as loadable
 
-execute_cmd.c
-       - change coproc_pidchk to unset the appropriate shell variables when
-         the (currently single) known coproc pid terminates
-       - cleanup and new functions to fully support multiple coprocesses when
-         and if I decide to go there
+examples/loadables/Makefile.in
+       - rm: add rules to build rm as one of the `other' targets
 
-                                  4/13
+examples/loadables/stat.c
+       - stat: new loadable builtin that takes a filename and loads the info
+         returned by stat(2) into an associative array specified by the -A
+         argument (default STAT)
+
+                                  11/1
                                   ----
-print_cmd.c
-       - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS
-         after call to make_command_string_internal before printing closing
-         `}'
-       - fix make_command_string_internal to add a call to
-         PRINT_DEFERRED_HEREDOCS after recursive call to
-         make_command_string_internal in case cm_subshell before printing
-         closing `)'
+variables.c
+       - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets
+         $0 on assignment.  From a suggestion from  Rocky Bernstein <rocky@gnu.org>
+         a few years ago
 
-                                  4/14
+doc/{bash.1,bashref.texi}
+       - BASH_ARGV0: document
+
+                                  11/2
                                   ----
-print_cmd.c
-       - change overlapping strcpy in named_function_string to memmove
+lib/glob/sm_loop.c
+       - parse_collsym: make sure to not return an out-of-bounds read if a
+         collating symbol is unterminated.  Fixes OOB read reported by
+         Jerzy Kramarz <op7ica@gmail.com>
+       - brackmatch: after incrementing p, before checking whether it's a
+         character range, check whether *p was NULL before the increment
+         and short-circuit the bracket expression if it is
 
-sig.h
-       - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
-         restores an old signal mask
+jobs.c
+       - discard_last_procsub_child: new function, safely discards
+         last_procsub_child and sets it to NULL
 
-trap.c
-       - set_signal: instead of setting the signal handler to SIG_IGN while
-         installing the new trap handler, block the signal and unblock it
-         after the new handler is installed.  Fixes bug reported by Roman
-         Rakus <rrakus@redhat.com>
+subst.c
+       - process_substitute: call discard_last_procsub_child instead of
+         calling discard_pipeline directly.  Fixes bug reported by
+         Christian Weisgerber <naddy@mips.inka.de>
 
-                                  4/15
+                                  11/3
                                   ----
-doc/{bash.1,bashref.texi}
-       - make it clear that enabling monitor mode means that all jobs run in
-         separate process groups
+shell.h
+       - EX_DISKFALLBACK: new special return status available to builtins;
+         means to attempt to execute a disk command with the same name as
+         the builtin
 
-                                  4/18
-                                  ----
-builtins/fc.def
-       - update fix of 4/15/2010 to not take saved_command_line_count into
-         account when stepping down the history list to make sure that
-         last_hist indexes something that is valid.  Fixes bug reported by
-         <piuma@piumalab.org>
+examples/loadables/rm.c
+       - if we see the -i option, return EX_DISKFALLBACK
 
-                                  4/19
-                                  ----
-builtins/fc.def
-       - fc_gethnum: make sure the calculation to decide the last history
-         entry is exactly the same as fc_builtin.  Fixes bug uncovered by
-         fix of 4/18 to stop seg fault
+execute_cmd.c
+       - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK,
+         try running execute_disk_command instead 
 
-                                  4/22
+bashline.c
+       - shell_expand_line: use expand_word to expand the readline line
+         buffer, which allows us to pass flags with the word. If a numeric
+         argument is supplied, do not perform quote removal (pass
+         Q_HERE_DOCUMENT since here-doc quoting does the right thing) and
+         do not perform command or process subsitution.  From a suggestion
+         by Dabrien 'Dabe' Murphy <dabe@dabe.com> based on an old bug-bash
+         discussion
+
+subst.c
+       - expand_word_internal: note that we have added a quoted IFS char to
+         istring by setting sentinel has_quoted_ifs.  Usually we only add
+         one if we are not going to be performing word splitting, but we
+         will not perform word splitting if there's no expansion, so we need
+         to take care of that case
+       - expand_word_internal: when performing final word split, if there are
+         no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs()
+         to remove any quoted ifs characters we added while processing
+       - remove_quoted_ifs: new function, removes CTLESC chars preceding
+         (single-byte) chars in IFS. Used when we are not performing word
+         splitting.  Fixes bug reported by Martijn Dekker <martijn@inlv.org>
+
+                                  11/4
                                   ----
-lib/readline/terminal.c
-       - change _rl_enable_meta_key to set a flag indicating that it sent the
-         enable-meta sequence
-       - _rl_disable_meta_key: new function to turn off meta mode after we
-         turned it on with _rl_enable_meta_key
+lib/readline/macro.c
+       - _rl_peek_macro_key: return the next character from the current
+         keyboard macro; the next character from the `next' keyboard macro,
+         if there is one, if at the end of the current macro; or 0 to
+         indicate that we are at the end of a keyboard macro sequence
 
 lib/readline/rlprivate.h
-       - extern declaration for _rl_disable_meta_key
+       - _rl_peek_macro_key: extern declaration
 
-configure.in
-       - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited
-         from the environment.  Fixes HP/UX build problem reported by
-         "Daniel Richard G." <skunk@iSKUNK.ORG>
+lib/readline/readline.c
+       - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro,
+         which should cause the keyboard timeout for ESC to kick in.  The
+         previous test didn't run the timeout code if executing from a macro,
+         even if we had read the last character of the macro.  Fixes bug
+         reported by Clark Wang <clarkw@vmware.com>
 
-                                  4/26
-                                  ----
-config-top.h
-       - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy
-         to enable via configure option or editing this file
+lib/glob/sm_loop.c
+       - GMATCH: allow trailing backslash in pattern to explicitly match a
+         backslash that is the last character in the string.  Bug report from
+         Stephane Chazelas <stephane.chazelas@gmail.com>
 
-                                  4/29
+                                  11/5
                                   ----
-lib/sh/eaccess.c
-       - freebsd provides faccessat, with the same misfeature as their eaccess
-         and access implementations (X_OK returns true for uid==0 regardless
-         of the actual file permissions), so reorganize code to check the
-         file permissions as with eaccess.  Report and fix from Johan Hattne
-         <johan.hattne@utsouthwestern.edu>
+builtins/common.c
+       - display_signal_list: if displaying a signal name corresponding to an
+         exit status > 128, don't display the SIG prefix at all.  Old code
+         made displaying the SIG prefix dependent on JOB_CONTROL define.
+         Report and fix from Martijn Dekker <martijn@inlv.org>
 
-                                   5/2
-                                   ---
-doc/{bash.1,bashref.texi}
-       - add forward reference to `Pattern Matching' from `Pathname
-         Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
+execute_cmd.c
+       - execute_subshell_builtin_or_function: call without_job_control even
+         if JOB_CONTROL is not defined. Similar to fix from 9/23.
+         Report from Martijn Dekker <martijn@inlv.org>
 
-                                   5/5
-                                   ---
-pcomplib.c
-       - the bash_completion project now distributes over 200 completions
-         for various programs, with no end in sight, so increase the value
-         of COMPLETE_HASH_BUCKETS from 32 to 128
+execute_cmd.c
+       - execute_simple_command: free memory allocated and passed to
+         make_child in the child process if JOB_CONTROL is defined
+       - execute_command_internal: free memory allocated and passed to
+         make_child in the child process created to run a () subshell or a
+         compound command within a pipeline if JOB_CONTROL is defined
+       - execute_coproc: free memory allocated and passed to make_child in
+         the child process if JOB_CONTROL is defined
+       - execute_disk_command: free memory allocated and passed to
+         make_child in the child process if JOB_CONTROL is defined.  This
+         series of fixes is the result of reports from
+         Eduardo A. Bustamante López <dualbus@gmail.com>
 
-pathexp.c
-       - quote_string_for_globbing: make sure CTLESC quoting CTLESC is
-         translated into \<CTLESC> even if the flags include QGLOB_REGEXP.
-         We don't want to process the second CTLESC as a quote character.
-         Fixes bug reported by Shawn Bohrer <sbohrer@rgmadvisors.com>
+                                  11/6
+                                  ----
+lib/sh/unicode.c
+       - u32toutf16: fix to prevent outputting broken surrogate pairs for
+         Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively).
+         Report and fix from Koichi MURASE <myoga.murase@gmail.com>
 
-                                   5/6
-                                   ---
-builtins/printf.def
-       - change PRETURN to not call fflush if ferror(stdout) is true
-       - if a call to one of the stdio functions or printstr leaves
-         ferror(stdout) true, and PRETURN is going to be called, let PRETURN
-         print the error message rather than doubling up the messages.  Fixes
-         problem reported by Roman Rakus <rrakus@redhat.com>
+builtins/trap.def
+       - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler
+         to sigint_sighandler if the shell is interactive and sourcing a
+         file (interactive_shell && sourcelevel) or running a trap
+         (interactive_shell && running_trap) even if it's not currently
+         interactive.  Report from Martijn Dekker <martijn@inlv.org>
 
-                                   5/9
-                                   ---
-doc/{bash.1,bashref.texi}
-       - add note to the effect that lists inside compound command can be
-         terminated by newlines as well as semicolons.  Suggested by
-         Roman Byshko <rbyshko@gmail.com>
+builtins/read.def
+       - check for and read multibyte characters in all cases, not just when
+         we are reading a specific number of characters, as long as
+         mb_cur_max > 1
 
-                                  5/10
-                                  ----
 subst.c
-       - remove_quoted_nulls: fix problem that caused it to skip over the
-         character after a CTLNUL, which had the effect of skipping every
-         other of a series of CTLNULs.  Fixes bug reported by
-         Marten Wikstrom <marten.wikstrom@keystream.se>
+       - expand_word_internal: some improvements to code that converts istring
+         into a WORD_LIST * to avoid multiple allocations and copies of
+         istring, which is already malloc'ed memory -- reduce number of malloc
+         and free calls
 
-                                  5/11
-                                  ----
-subst.c
-       - extract_process_subst: add SX_COMMAND flag to call to
-         extract_delimited_string, since we're expanding the same sort of
-         command as command substitution.  Fixes bug reported in Ubuntu
-         bug 779848
+test.c
+       - unary_test: make sure if we test -v array[@] or array[*] that we
+         free the return value from array_value
 
-                                  5/12
+                                  11/8
                                   ----
-configure.in
-       - set the prefer_shared and prefer_static variables appropriately
-         depending on the value of $opt_static_link
+expr.c
+       - expcond: make sure to set `noeval' before reading tokens depending on
+         the result of the conditional test, since readtok() can evaluate
+         identifiers (and recursively those containing expressions).  Report
+         and fix from Koichi MURASE <myoga.murase@gmail.com>
 
-aclocal.m4
-       - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the
-         libraries it's searching for if the prefer_shared variable is "no".
-         Fixes problem reported by Cedric Arbogast <arbogast.cedric@gmail.com>
+builtins/evalstring.c
+       - should_suppress_fork: make sure to check for traps on EXIT and
+         ERR, since any_signals_trapped() only checks for `real' signals,
+         not the fake shell ones.  Fixes bug reported by Werner Fink
+         <werner@suse.de>
+       - optimize_subshell_command: ditto
 
-                                  5/13
+                                  11/9
                                   ----
-lib/readline/readline.c
-       - _rl_internal_teardown: add call to _rl_disable_meta_key to make the
-         meta key active only for the duration of the call to readline()
-       - _rl_internal_setup: move call to _rl_enable_meta_key here from
-         readline_initialize_everything so the meta key is active only for
-         the duration of the call to readline().  Suggestion from Miroslav
-         Lichvar <mlichvar@redhat.com>
+eval.c
+       - reader_loop: change so that we don't reset the SIGINT handler every
+         time through the command loop in an interactive shell if the signal
+         is trapped (as the comment noted).  Reported by Report from Martijn
+         Dekker <martijn@inlv.org>
 
-builtins/help.def
-       - help_builtin: change strncmp to strcmp so that `help read' no longer
-         matches `readonly'.  Suggested by Clark Wang <dearvoid@gmail.com>
+subst.c
+       - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and
+         restore this_command_name while temporarily setting it for use in
+         error messages.  Fixes use-after-free error reported by
+         Jerzy Kramarz <op7ica@gmail.com>
+       - string_extract_verbatim: make sure when we increment i by 2 due to
+         a CTLESC or CTLESC-CTLNUL that we don't read past the end of the
+         string. This can happen if the string ends with an odd number of
+         CTLESC chars. Fixes oob-read error reported by
+         Jerzy Kramarz <op7ica@gmail.com>
 
-config.h.in
-       - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
-         for libintl
+                                  11/11
+                                  -----
+configure.ac,aclocal.m4
+       - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just
+         a stub function like on several Linux distributions
 
 lib/malloc/malloc.c
-       - internal_free: don't use the cached value of memtop when deciding
-         whether or not to adjust the break and give memory back to the kernel
-         when using the GNU C library, since glibc uses sbrk for its own
-         internal purposes.  From Debian bug 614815, reported by Samuel
-         Thibault <samuel.thibault@gnu.org>
+       - malloc_usable_size: return the maximum number of bytes available for
+         a particular memory allocation (size of block allocated for it)
 
-aclocal.m4
-       - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
-         to avoid warning about not using AC_LANG_SOURCE
-
-                                  5/14
-                                  ----
-bashline.[ch]
-       - two new functions, bashline_set_event_hook and bashline_reset_event_hook,
-         to set rl_event_hook to bash_event_hook and back to NULL, respectively
-       - don't set rl_event_hook unconditionally
-
-sig.c
-       - termsig_sighandler: if the shell is currently interactive and
-         readline is active, call bashline_set_event_hook to cause
-         termsig_handler to be called via bash_event_hook when the shell
-         returns from the signal handler
-
-                                  5/15
-                                  ----
-lib/readline/display.c
-       - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0
-         for UTF-8 combining characters.  Added workaround dependent on
-         MACOSX.  Fixes problem pointed out by Thomas De Contes
-         <d.l.tDecontes@free.fr>
-
-                                  5/16
-                                  ----
-lib/readline/rlmbutil.h
-       - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
-         characters on systems where wcwidth is broken (e.g., Mac OS X).
-
-lib/readline/{complete,display,mbutil}.c
-       - use WCWIDTH instead of wcwidth
-
-                                  5/17
-                                  ----
-lib/readline/display.c
-       - update_line: after computing ofd and nfd, see whether the next
-         character in ofd is a zero-width combining character.  If it is,
-         back ofd and nfd up one, so the base characters no longer compare
-         as equivalent.  Fixes problem reported by Keith Winstein
-         <keithw@mit.edu>
-
-lib/readline/nls.c
-       - _rl_utf8locale: new flag variable, set to non-zero if the current
-         locale is UTF-8
-       - utf8locale(): new function, returns 1 if the passed lspec (or the
-         current locale) indicates that the locale is UTF-8.  Called from
-         _rl_init_eightbit
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_utf8locale
-
-locale.c
-       - locale_utf8locale: new flag variable, set to non-zero if the current
-         locale is UTF-8 (currently unused)
-       - locale_isutf8(): new function, returns 1 if the passed lspec (or the
-         current locale) indicates that the locale is UTF-8.  Should be called
-         whenever the locale or LC_CTYPE value is modified
-
-aclocal.m4
-       - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
-         zero-width characters like unicode combining characters as having
-         display length 1; define WCWIDTH_BROKEN in this case
-
-config.h.in
-       - WCWIDTH_BROKEN: new define
-
-lib/readline/rlmbutil.h
-       - change WCWIDTH macro to use _rl_utf8locale and the full range of
-         Unicode combining characters (U+0300-U+036F)
-
-                                  5/19
-                                  ----
-lib/readline/rlprivate.h
-       - _rl_search_context: new member, prevc, will hold character read
-         prior to lastc
-
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if the character causes us to index into
-         another keymap, save that character in cxt->prevc
-       - _rl_isearch_dispatch: if we index into another keymap, but don't
-         find a function that's special to i-search, and the character that
-         caused us to index into that keymap would have terminated the
-         search, push back cxt->prevc and cxt->lastc to make it appear as
-         if `prevc' terminated the search, and execute lastc as a command.
-         We have to push prevc back so we index into the same keymap before
-         we read lastc.  Fixes bug report from Davor Cubranic
-         <cubranic@stat.ubc.ca>
-
-                                  5/20
-                                  ----
-expr.c
-       - expr_bind_variable: pay attention to the return value from
-         bind_variable and check whether or not we should error out due to
-         a readonly or noassign variable.  Fixes bug reported by Eric
-         Blake <eblake@redhat.com>
-
-                                  5/26
-                                  ----
-
-lib/readline/search.c
-       - include histlib.h for ANCHORED_SEARCH defines
-       - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for
-         the duration of a history search
-       - rl_history_search_reinit: takes a new flags variable, defines whether
-         or not the search is anchored; assigned to rl_history_search_flags
-       - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to
-         beginning of search string; otherwise search string is unmodified
-       - rl_history_search_internal: set rl_point appropriately based on
-         whether or not rl_history_search_flags includes ANCHORED_SEARCH
-       - rl_history_substr_search_forward: new function, for non-anchored
-         substring search forward through history for string of characters
-         preceding rl_point
-       - rl_history_substr_search_backward: new function, for non-anchored
-         substring search backward through history for string of characters
-         preceding rl_point.  Original code from Niraj Kulkarni
-         <kulkarniniraj14@gmail.com>
-
-lib/readline/readline.h
-       - extern declarations for rl_history_substr_search_{for,back}ward
-
-lib/readline/funmap.c
-       - history-substring-search-forward: new bindable command, invokes
-         rl_history_substr_search_forward
-       - history-substring-search-backward: new bindable command, invokes
-         rl_history_substr_search_backward
-
-lib/readline/doc/{rluser.texi,readline.3}
-       - document history-substring-search-forward and
-         history-substring-search-backward
-
-                                  5/27
-                                  ----
-{nojobs,jobs}.c
-       - add support for DONT_REPORT_SIGTERM so that the shell doesn't print
-         a message when a job exits due to SIGTERM since that's the default
-         signal sent by the kill builtin.  Suggested by Marc Herbert
-         <mark.herbert@gmail.com>
-
-config-top.h
-       - DONT_REPORT_SIGTERM: new user-modifiable setting.  Commented out
-         by default
-
-                                  5/28
-                                  ----
-lib/readline/bind.c
-       - _rl_skip_to_delim: skip to a closing double quote or other delimiter,
-         allowing backslash to quote any character, including the delimiter
-       - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline
-         code
-       - rl_parse_and_bind: allow quoted strings as the values of string
-         variables.  Variable values without double quotes have trailing
-         whitespace removed (which still allows embedded whitespace, for
-         better or worse).  Fixes problem with string variables not matching
-         in `set' command if values happen to have trailing spaces or tabs
-         (debian bash bug #602762), but introduces slight incompatibility.
-
-                                  5/29
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify unset description to specify that without options, a
-         variable, then a shell function if there is no variable by that
-         name, is unset.  Fixes discrepancy reported by Mu Qiao
-         <qiaomuf@gentoo.org>
-
-                                  6/4
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify description of LINES and COLUMNS (and checkwinsize shopt
-         option) to make it clear that only interactive shells set a
-         handler for SIGWINCH and update LINES and COLUMNS.  Original
-         report submitted by Jonathan Nieder <jrnieder@gmail.com>
-
-arrayfunc.c
-       - expand_compound_array_assignment: defer expansion of words between
-         parens when performing compound assignmnt to an associative array
-         variable
-       - assign_compound_array_list: perform the same expansions when doing
-         a compound array assignment to an associative array variable as
-         when doing a straight array index assignment.  The idea is that
-               foo=( [ind1]=bar [ind2]=quux)
-         is the same as
-               foo[ind1]=bar ; foo[ind2]=quux
-
-         This fixes problems with double-expansion and quote removal being
-         performed on the array indices
-
-                                  6/13
-                                  ----
-doc/{bash.1,bashref.texi}
-       - Add a little text to make it clear that the locale determines how
-         range expressions in glob patterns are handled.
-
-
-                                  6/21
-                                  ----
-builtins/read.def
-       - display a message and return error status if -a is used with an
-         existing associative array.  Fixes bug reported by Curtis Doty
-         <curtis@greenkey.net>
-
-                                  6/24
-                                  ----
-{jobs,nojobs}.c
-       - non-interactive shells now react to the setting of checkwinsize
-         and set LINES and COLUMNS after a foreground job exits.  From a
-         suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
-
-doc/{bash.1,bashref.texi}
-       - checkwinsize: remove language saying that only interactive shells
-         check the window size after each command
-
-lib/readline/histfile.c
-       - history_backupfile: new file, creates a backup history file name
-         given a filename (appending `-')
-       - history_do_write: when overwriting the history file, back it up
-         before writing.  Restore backup file on a write error.  Suggested
-         by chkno@chkno.net
-
-bashline.c
-       - find_cmd_name: two new arguments, return the start and end of the
-         actual text string used to find the command name, without taking
-         whitespace into account
-       - attempt_shell_completion: small changes to make sure that completion
-         attempted at the beginning of a non-empty line does not find a
-         programmable completion, even if the command name starts at point
-       - attempt_shell_completion: small change to make sure that completion
-         does not find a progcomp when in whitespace before the command
-         name
-       - attempt_shell_completion: small change to make sure that completion
-         does not find a progcomp when point is at the first character of a
-         command name, even when there is leading whitespace (similar to
-         above).  Fixes problems noted by Ville Skytta <ville.skytta@iki.fi>
-
-subst.c
-       - brace_expand_word_list: since the individual strings in the strvec
-         returned by brace_expand are already allocated, don't copy them to
-         newly-allocated memory when building the WORD_LIST, just use them
-         intact
-
-locale.c
-       - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change
-         the locale to avoid a function call every time we need to read it
-
-shell.h
-       - new struct to save shell_input_line and associated variables:
-         shell_input_line_state_t
-       - add members of sh_parser_state_t to save and restore token and the
-         size of the token buffer
-
-parse.y
-       - {save,restore}_input_line_state: new functions to save and restore
-         shell_input_line and associated variables
-       - {save,restore}_parser_state: add code to save and restore the token
-         and token buffer size
-       - xparse_dolparen: call save_ and restore_input_line_state to avoid
-         problems with overwriting shell_input_line when we recursively
-         call the parser to parse a command substitution.  Fixes bug
-         reported by Rui Santos <rsantos@grupopie.com>
-
-include/shmbutil.h
-       - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
-         similar macros
-
-lib/glob/smatch.c
-       - rangecmp,rangecmp_wc: change to take an additional argument, which
-         forces the use of strcoll/wscoll when non-zero.  If it's 0, a new
-         variable `glob_asciirange' controls whether or not we use strcoll/
-         wscoll.  If glob_asciirange is non-zero, we use straight
-         C-locale-like ordering. Suggested by  Aharon Robbins
-         <arnold@skeeve.com>
-
-                                  6/30
-                                  ----
-execute_cmd.c
-       - execute_pipeline: make sure the lastpipe code is protected by
-         #ifdef JOB_CONTROL.  Fixes problem reported by Thomas Cort
-         <tcort@minix3.org>
-
-                                   7/2
-                                   ---
-lib/readline/complete.c
-       - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around
-         completion functions that touch the file system.  Idea from Jan
-         Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
-         team
-
-lib/readline/signals.c
-       - rl_signal_handler: if we're in callback mode, don't interrupt
-         immediately on a SIGWINCH
-
-                                   7/3
-                                   ---
-bashline.c
-       - set_directory_hook: and its siblings are a new set of functions to
-         set, save, and restore the appropriate directory completion hook
-       - change callers to use {set,save,restore}_directory_hook instead of
-         manipulating rl_directory_rewrite_hook directly
-       - dircomplete_expand: new variable, defaults to 0, if non-zero causes
-         directory names to be word-expanded during word and filename
-         completion
-       - change {set,save,restore}_directory_hook to look at dircomplete_expand
-         and change rl_directory_completion_hook or rl_directory_rewrite_hook
-         appropriately
-
-bashline.h
-       - extern declaration for set_directory_hook so shopt code can use it
-
-                                   7/6
-                                   ---
-builtins/shopt.def
-       - globasciiranges: new settable shopt option, makes glob ranges act
-         as if in the C locale (so b no longer comes between A and B).
-         Suggested by Aharon Robbins <arnold@skeeve.com>
-
-                                   7/7
-                                   ---
-doc/{bash.1,bashref.texi}
-       - document new `globasciiranges' shopt option
-
-                                   7/8
-                                   ---
-builtins/shopt.def
-       - direxpand: new settable option, makes filename completion expand
-         variables in directory names like bash-4.1 did.
-       - shopt_set_complete_direxpand: new function, does the work for the
-         above by calling set_directory_hook
-
-doc/{bash.1,bashref.texi}
-       - document new `direxpand' shopt option
-
-                                  7/15
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: when adding character to search string, use
-         cxt->lastc (which we use in the switch statement) instead of c,
-         since lastc can be modified earlier in the function
-
-                                  7/18
-                                  ----
-lib/readline/rlprivate.h
-       - _rl_search_context: add another member to save previous value of
-         (multibyte) lastc: pmb is to mb as prevc is to lastc
-
-lib/readline/isearch.c:
-       - _rl_isearch_dispatch: if a key sequence indexes into a new keymap,
-         but doesn't find any bound function (k[ind].function == 0) or is
-         bound to self-insert (k[ind].function == rl_insert), back up and
-         insert the previous character (the one that caused the index into a
-         new keymap) and arrange things so the current character is the next
-         one read, so both of them end up in the search string.  Fixes bug
-         reported by Clark Wang <dearvoid@gmail.com>
-       - _rl_isearch_dispatch: a couple of efficiency improvements when adding
-         characters to the isearch string
-
-                                  7/24
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
-         appropriately when in a multibyte locale
-
-doc/{bash.1,bashref.texi}
-       - correct description of {x}>file (and other redirection operators
-         that allocate a file descriptor) to note the the fd range is
-         greater than or equal to 10.  Fixes problem reported by
-         Christian Ullrich 
-
-lib/readline/signals.c
-       - rl_signal_handler: don't interrupt immediately if in callback mode
-
-lib/readline/callback.c
-       - rl_callback_read_char: install signal handlers only when readline
-         has control in callback mode, so readline's signal handlers aren't
-         called when the application is active (e.g., between the calls to
-         rl_callback_handler_install and rl_callback_read_char).  If the
-         readline signal handlers only set a flag, which the application
-         doesn't know about, the signals will effectively be ignored until
-         the next time the application calls into the readline callback
-         interface.  Fixes problem of calling unsafe functions from signal
-         handlers when in callback mode reported by Jan Kratochvil
-         <jan.kratochvil@redhat.com>
-
-execute_cmd.c
-       - fix_assignment_words: when in Posix mode, the `command' builtin
-         doesn't change whether or not the command name it protects is an
-         assignment builtin.  One or more instances of `command'
-         preceding `export', for instance, doesn't make `export' treat its
-         assignment statement arguments differently.  Posix interpretation
-         #351
-
-doc/{bash.1,bashref.texi}
-       - document new Posix-mode behavior of `command' when preceding builtins
-         that take assignment statements as arguments
-
-builtins/printf.def
-       - printstr: if fieldwidth or precision are < 0 or > INT_MAX when
-         supplied explicitly (since we take care of the `-' separately),
-         clamp at INT_MAX like when using getint().  Fixes issue reported
-         by Ralph Coredroy <ralph@inputplus.co.uk>
-
-                                  7/25
-                                  ----
-lib/readline/chardefs.h
-       - isxdigit: don't define if compiling with c++; declared as a c++
-         template function.  Fixes bug reported by Miroslav Lichvar
-         <mlichvar@redhat.com>
-
-builtins/printf.def
-       - getint: if garglist == 0, return whatever getintmax returns (0).
-         Fixes bug reported  by Ralph Coredroy <ralph@inputplus.co.uk>
-
-                                  7/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - minor changes to the descriptions of the cd and pushd builtins
-
-lib/sh/zread.c
-       - zsyncfd: change variable holding return value from lseek to
-         off_t.  Bug report and fix from Gregory Margo <gmargo@pacbell.net>
-
-                                   8/1
-                                   ---
-expr.c
-       - don't check for division by 0 when in a context where no evaluation
-         is taking place.  Fixes bug reported by dnade.ext@orange-ftgroup.com
-
-                                   8/6
-                                   ---
-execute_cmd.c
-       - execute_command_internal: the parent branch of the subshell code
-         (where the child calls execute_in_subshell) should not close all
-         open FIFOs with unlink_fifo_list if it's part of a shell function
-         that's still executing.  Fixes bug reported by Maarten Billemont
-         <lhunath@lyndir.com>
-
-                                   8/9
-                                   ---
-builtins/common.c
-       - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
-
-builtins/return.def
-       - return_builtin: just call get_exitstat to get the return status,
-         let it handle proper parsing and handling of arguments.  Fixes
-         issue most recently raised by Linda Walsh <bash@tlinx.org>.
-         Reverses change from 9/11/2008 (see above)
-
-                                  8/16
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clean up `set -e' language to make it clearer that any failure of
-         a compound command will cause the shell to exit, not just subshells
-         and brace commands
-
-                                  8/17
-                                  ----
-configure.in
-       - make the various XXX_FOR_BUILD variables `precious' to autoconf to
-         avoid stale data
-       - change how CC_FOR_BUILD is initialized when cross-compiling and not,
-         but do not change behavior
-       - initialize CFLAGS_FOR_BUILD to -g when cross-compiling
-       - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty
-         when cross-compiling
-       - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when
-         CFLAGS not inherited from environment (like effect of old
-         auto_cflags variable)
-       - substitute LIBS_FOR_BUILD into output Makefiles
-         [changes inspired by bug report from Nathan Phillip Brink
-         <ohnobinki@ohnopublishing.net> -- gentoo bug 378941]
-
-builtins/Makefile.in   
-       - substitute LIBS_FOR_BUILD from configure, not strictly initialized
-         to $(LIBS)
-
-                                  8/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - minor changes to the here string description to clarify the
-         expansions performed on the word
-
-support/shobj-conf
-       - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
-         to darwin stanzas.  Fixes readline bug reported by Vincent
-         Sheffer <vince.sheffer@apisphere.com>
-
-lib/sh/strtrans.c
-       - ansic_wshouldquote: check a string with multi-byte characters for
-         characters that needs to be backslash-octal escaped for $'...'
-       - ansic_shouldquote: if is_basic fails for one character, let
-         ansic_wshouldquote examine the rest of the string and return what
-         it returns.  From a patch sent by Roman Rakus <rrakus@redhat.com>
-
-                                  8/30
-                                  ----
-lib/sh/strtrans.c
-       - ansic_quote: changes to quote (or not) multibyte characters.  New
-         code converts them to wide characters and uses iswprint to check
-         valid wide chars.  From a patch sent by Roman Rakus
-         <rrakus@redhat.com>
-
-                                   9/7
-                                   ---
-lib/sh/shquote.c
-       - sh_backslash_quote: change to be table-driven so we can use a
-         different table if we want to
-       - sh_backslash_quote: takes a second char table[256] argument;
-
-externs.h
-       - sh_backslash_quote: add second argument to function prototype
-
-bashline.c,braces.c,parse.y,builtins/printf.def
-       - change callers of sh_backslash_quote to add second argument
-
-bashline.c
-       - filename_bstab: table of characters to pass to sh_backslash_quote;
-         characters with value 1 will be backslash-quoted
-       - set_filename_bstab: turn on characters in filename backslash-quote
-         table according to passed string argument
-       - call set_filename_bstab every time rl_filename_quote_characters is
-         assigned a value
-       - bash_quote_filename: call sh_backslash_quote with filename_bstab
-         as second argument.  This allows other characters in filenames to
-         be quoted without quoting, for instance, a dollar sign in a shell
-         variable reference
-
-                                   9/8
-                                   ---
-bashline.c
-       - complete_fullquote: new variable, controls table passed to
-         sh_backslash_quote.  If non-zero (the default), the standard set
-         of shell metacharacters -- as in bash versions up to and including
-         bash-4.2 -- gets backslash-quoted by the completion code.  If zero,
-         sh_backslash_quote gets the table with the characters in the
-         variable reference removed, which means they are removed from the
-         set of characters to be quoted in filenames
-
-                                  9/10
-                                  ----
-bashline.c
-       - bash_filename_stat_hook: new function, designed to expand variable
-         references in filenames before readline passes them to stat(2)
-         to determine whether or not they are a directory
-
-                                  9/15
-                                  ----
-builtins/declare.def
-       - if assign_array_element fails due to a bad (or empty) subscript, mark
-         it as an assignment error and don't attempt any further processing
-         of that declaration.  Fixes segfault bug reported by Diego Augusto
-         Molina <diegoaugustomolina@gmail.com>
-
-                                  9/19
-                                  ----
-expr.c
-       - exppower: replace the simple exponentiation algorithm with an
-         implementation of exponentiation by squaring.  Inspired by report
-         from Nicolas ARGYROU <nargy@yahoo.com>
-
-bashline.c
-       - bash_quote_filename: check for rtext being non-null before
-         dereferencing it
-       - set_saved_history: operate_and_get_next assumes that the previous
-         line was added to the history, even when the history is stifled and
-         at the max number of entries.  If it wasn't, make sure the history
-         number is incremented properly.  Partial fix for bug reported by
-         gregrwm <backuppc-users@whitleymott.net>
-
-doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
-       - minor editorial changes inspired by suggestions from
-         Roger Zauner <rogerx.oss@gmail.com>
-
-                                  9/20
-                                  ----
-lib/intl/localealias.c
-       - read_alias_file: close resource leak (fp) when returning on error
-
-                                  9/22
-                                  ----
-execute_command.c
-       - execute_intern_function: implement Posix interpretation 383 by making
-         it an error to define a function with the same name as a special
-         builtin when in Posix mode.
-         http://austingroupbugs.net/view.php?id=383#c692
-
-                                  9/25
-                                  ----
-doc/{bash.1,bashref.texi}
-       - formatting and some content changes from Benno Schulenberg
-         <bensberg@justemail.net>
-       - document new posix-mode behavior from interp 383 change of 9/22
-
-                                  9/30
-                                  ----
-execute_cmd.c
-       - shell_execve: add strerror to error message about executable file
-         that shell can't execute as a shell script.  From suggestion by
-         daysleeper <daysleeper@centrum.cz>
-
-                                  10/1
-                                  ----
-bashhist.c
-       - maybe_add_history: act as if literal_history is set when parser_state
-         includes PST_HEREDOC, so we save the bodies of here-documents just
-         as they were entered.  Fixes bug reported by Jonathan Wakely
-         <bugs@kayari.org>
-       - bash_add_history: make sure that the second and subsequent lines of
-         a here document don't have extra newlines or other delimiting
-         chars added, since they have the trailing newline preserved, when
-         `lithist' is set and history_delimiting_chars isn't called
-
-execute_cmd.c
-       - execute_command_internal: avoid fd exhaustion caused by using
-         process substitution in loops inside shell functions by using
-         copy_fifo_list and close_new_fifos ().  Fixes debian bash bug
-         642504
-
-lib/readline/complete.c
-       - new variable, rl_filename_stat_hook, used by append_to_match.  If
-         filename completion is desired, and rl_filename_stat_hook points
-         to a function, call that function to expand the filename in an
-         application-specific way before calling stat.
-
-bashline.c
-       - bash_default_completion: if variable completion returns a single
-         match, use bash_filename_stat_hook and file_isdir to determine
-         whether or not the variable name expands to a directory.  If it
-         does, set the filename_append_character to `/'.  This is not
-         perfect, so we will see how it works out.  Adds functionality
-         requested by Peter Toft <pto@linuxbog.dk> and Patrick Pfeifer
-         <patrick@pfeifer.de>
-       - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things
-         like $HOME/Downloads (after completion) have a slash appended.
-         In general, this causes the stat hook to be called whenever
-         filename completion is appended.  Adds functionality requested by
-         Patrick Pfeifer <patrick@pfeifer.de>
-
-lib/readline/readline.h
-       - new extern declaration for rl_filename_stat_hook
-
-lib/readline/doc/rltech.texi
-       - rl_directory_rewrite_hook: now documented
-       - rl_filename_stat_hook: document
-
-pcomplete.c
-       - gen_action_completions: in the CA_DIRECTORY case, turn off
-         rl_filename_completion_desired if it was off before we called
-         rl_filename_completion_function and we didn't get any matches.
-         Having it on causes readline to quote the matches as if they
-         were filenames.  Adds functionality requested by many,
-         including Clark Wang <dearvoid@gmail.com>
-
-assoc.[ch]
-       - assoc_replace: new function, takes the same arguments as
-         assoc_insert, but returns the old data instead of freeing it
-       - assoc_insert: if the object returned by hash_insert doesn't have
-         the same value for its key as the key passed as an argument, we
-         are overwriting an existing value.  In this case, we can free the
-         key.  Fixes bug reported by David Parks <davidparks21@yahoo.com>
-
-                                  10/5
-                                  ----
-print_cmd.c
-       - indirection_level_string: small change to only re-enable `x'
-         option after calling decode_prompt_string if it was on before.  In
-         normal mode, it will be, but John Reiser <jreiser@bitwagon.com>
-         has a novel use for that code in conjunction with a pre-loaded
-         shared library that traces system call usage in shell scripts
-
-                                  10/10
-                                  -----
-Makefile.in
-       - Fix from Mike Frysinger <vapier@gentoo.org> to avoid trying to
-         build y.tab.c and y.tab.h with two separate runs of yacc if
-         parse.y changes.  Problem with parallel makes
-       - Fix from Mike Frysinger <vapier@gentoo.org> to avoid subdirectory
-         builds each trying to make version.h (and all its dependencies)
-
-lib/sh/Makefile.in
-       - remove some dependencies on version.h where it doesn't make sense
-
-variables.c
-       - initialize_shell_variables: while reading the environment, a shell
-         running in posix mode now checks for SHELLOPTS being readonly (it
-         gets set early on in main()) before trying to assign to it.  It
-         saves an error message and the variable gets parsed as it should.
-         Fixes bug reported by Len Giambrone <Len.Giambrone@intersystems.com>
-
-                                  10/14
-                                  -----
-doc/{bash.1,bashref.texi}
-       - add to the "duplicating file descriptors" description that >&word
-         doesn't redirect stdout and stderr if word expands to `-'
-       - add to the "appending standard output and standard error"
-         description a note that >&word, where word is a number or `-',
-         causes other redirection operators to apply for sh and Posix
-         compatibility reasons.  Suggested by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-                                  10/15
-                                  -----
-pcomplete.c
-       - change pcomp_filename_completion_function to only run the filename
-         dequoting function in the cases (as best as it can figure) where
-         readline won't do it via rl_filename_completion_function.  Based
-         on reports from <lolilolicon@gmail.com>
-
-                                  10/19
-                                  -----
-bashline.c
-       - attempt_shell_completion: add call to set_directory_hook() to make
-         sure the rewrite functions are correct.  It's cheap and doesn't
-         hurt
-       - command_word_completion_function: if completing a command name that
-         starts with `.' or `..', temporarily suppress the effects of the
-         `direxpand' option and restore the correct value after calling
-         rl_filename_completion_function.  If it's enabled, the directory
-         name will be rewritten and no longer match `./' or `../'.  Fixes
-         problem reported by Michael Kalisz <michael@kalisz.homelinux.net>
-
-                                  10/22
-                                  -----
-builtins/history.def
-       - push_history: make sure remember_on_history is enabled before we
-         try to delete the last history entry -- the `history -s' command
-         might not have been saved.  Fixes bug reported by
-         lester@vmw-les.eng.vmware.com
-
-lib/readline/complete.c
-       - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN
-         instead of straight return; add same call at end of function.
-         Placeholder for future work in deinstalling signal handlers when
-         readline is not active
-
-                                  10/25
-                                  -----
-expr.c
-       - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1
-         for DIV and MOD and avoid SIGFPE.  Bug report and pointer to fix
-         from Jaak Ristioja <jaak.ristioja@cyber.ee>
-       - expassign: same changes for arithmetic overflow for DIV and MOD
-
-                                  10/28
-                                  -----
-subst.c
-       - parameter_brace_expand: allow pattern substitution when there is an
-         expansion of the form ${var/} as a no-op: replacing nothing with
-         nothing
-       - parameter_brace_patsub: don't need to check for PATSUB being NULL;
-         it never is
-
-flags.c
-       - if STRICT_POSIX is defined, initialize history_expansion to 0, since
-         history expansion (and its treatment of ! within double quotes) is
-         not a conforming posix environment.  From austin-group issue 500
-
-lib/readline/histexpand.c
-       - history_expand: when processing a string within double quotes
-         (DQUOTE == 1), make the closing double quote inhibit history
-         expansion, as if the word were outside double quotes.  In effect,
-         we assume that the double quote is followed by a character in
-         history_no_expand_chars.  tcsh and csh seem to do this.  This
-         answers a persistent complaint about history expansion
-
-                                  10/29
-                                  -----
-make_cmd.c
-       - make_arith_for_command: use skip_to_delim to find the next `;'
-         when breaking the string between the double parens into three
-         separate components instead of a simple character loop.  Fixes
-         bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  11/2
-                                  ----
-Makefile.in
-       - make libbuiltins.a depend on builtext.h to serialize its creation
-         and avoid conflict between multiple invocations of mkbuiltins.
-         Fix from Mike Frysinger <vapier@gentoo.org>
-
-                                  11/5
-                                  ----
-findcmd.c
-       - user_command_matches: if stat(".", ...) returns -1, set st_dev
-         and st_ino fields in dotinfo to 0 to avoid same_file matches
-       - find_user_command_in_path: check stat(2) return the same way
-
-lib/glob/glob.c
-       - glob_vector: don't call strlen(pat) without checking pat == 0
-       - glob_dir_to_array: make sure to free `result' and all allocated
-         members before returning error due to malloc failure
-       - glob_vector: make sure to free `nextname' and `npat' on errors
-         (mostly when setting lose = 1)
-       - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
-         sure we free `subdir'
-       - glob_filename: when expanding ** (GX_ALLDIRS), make sure we
-         free temp_results (return value from glob_vector)
-
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
-         of sizeof (char **) when assigning idxtmp
-
-execute_cmd.c
-       - print_index_and_element: return 0 right away if L == 0
-       - is_dirname: fix memory leak by freeing `temp'
-       - time_command: don't try to deref NULL `command' when assigning
-         to `posix_time'
-       - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's
-         terminated for functions that expect that
-
-builtins/read.def
-       - read_builtin: don't call bind_read_variable with a potentially-null
-         string
-
-pcomplete.c
-       - gen_command_matches: don't call dispose_word_desc with a NULL arg
-       - gen_compspec_completions: fix memory leak by freeing `ret' before
-         calling gen_action_completions (tcs, ...).  happens when
-         performing directory completion as default and no completions
-         have been generated
-       - gen_progcomp_completions: make sure to set foundp to 0 whenever
-         returning NULL
-       - it_init_aliases: fix memory leak by freeing alias_list before
-         returning
-
-bashline.c
-       - command_word_completion_function: don't call restore_tilde with a
-         NULL directory_part argument
-       - bash_directory_expansion: bugfix: don't throw away results of
-         rl_directory_rewrite_hook if it's set and returns non-zero
-       - bind_keyseq_to_unix_command: free `kseq' before returning error
-
-arrayfunc.c
-       - assign_array_element_internal: make sure `akey' is freed if non-null
-         before returning error
-       - assign_compound_array_list: free `akey' before returning error
-       - array_value_internal: free `akey' before returning error
-       - unbind_array_element: free `akey' before returning error
-
-subst.c
-       - array_length_reference: free `akey' before returning error in case
-         of expand_assignment_string_to_string error
-       - array_length_reference: free `akey' after call to assoc_reference
-       - skip_to_delim: if skipping process and command substitution, free
-         return value from extract_process_subst
-       - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
-         returning if verify_substring_values fails
-       - parameter_brace_expand: remove two duplicate lines that allocate
-         ret in parameter_brace_substring case
-       - parameter_brace_expand: convert `free (name); name = xmalloc (...)'
-         to use `xrealloc (name, ...)'
-       - parameter_brace_expand: free `name' before returning when handling
-         ${!PREFIX*} expansion
-       - split_at_delims: fix memory leak by freeing `d2' before returning
-
-redir.c
-       - redirection_error: free `filename' if the redirection operator is
-         REDIR_VARASSIGN by assigning allocname
-
-eval.c
-       - send_pwd_to_eterm: fix memory leak by freeing value returned by
-         get_working_directory()
-
-builtins/cd.def
-       - change_to_directory: fix memory leak by freeing return value from
-         resetpwd()
-       - cd_builtin: fix memory leak by freeing value returned by dirspell()
-       - cd_builtin: fix memory leak by freeing `directory' if appropriate
-         before overwriting with return value from resetpwd()
-
-builtins/type.def
-       - describe_command: free `full_path' before overwriting it with return
-         value from sh_makepath
-
-builtins/complete.def
-       - compgen_builtin: fix memory leak by calling strlist_dispose (sl)
-         before overwriting sl with return value from completions_to_stringlist
-
-builtins/hash.def
-       - list_hashed_filename_targets: fix memory leak by freeing `target'
-
-make_cmd.c
-       - make_arith_for_command: free `init', `test', and `step' before
-         returning error on parse error
-
-jobs.c
-       - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
-
-general.c
-       - check_dev_tty: don't call close with an fd < 0
-       - legal_number: deal with NULL `string' argument, return invalid
-
-lib/sh/fmtulong.c
-       - fmtulong: if the `base' argument is invalid, make sure we index
-         buf by `len-1' at maximum
-
-print_cmd.c
-       - print_deferred_heredocs: don't try to dereference a NULL `cstring'
-       - cprintf: make sure to call va_end (args)
-
-variables.c
-       - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
-         instead of sizeof (WORD_LIST **)
-
-lib/sh/zmapfd.c
-       - zmapfd: if read returns error, free result and return -1 immediately
-         instead of trying to reallocate it
-
-                                  11/6
-                                  ----
-execute_cmd.c
-       - cpl_reap: rewrote to avoid using pointer after freeing it; now builds
-         new coproc list on the fly while traversing the old one and sets the
-         right values for coproc_list when done
-
-                                  11/12
-                                  -----
-builtins/set.def
-       - if neither -f nor -v supplied, don't allow a readonly function to
-         be implicitly unset.  Fixes bug reported by Jens Schmidt
-         <jens.schmidt35@arcor.de>
-
-lib/readline/callback.c
-       - change CALLBACK_READ_RETURN to clear signal handlers before returning
-         from rl_callback_read_char so readline's signal handlers aren't
-         installed when readline doesn't have control.  Idea from Jan
-         Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
-         team
-
-pcomplete.h
-       - COPT_NOQUOTE: new complete/compgen option value
-
-builtins/complete.def
-       - noquote: new complete/compgen option; will be used to disable
-         filename completion quoting
-
-pcomplete.c
-       - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns
-         of rl_filename_quoting_desired if set; turns it on if unset (value
-         is inverted, since default is on)
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - document new -o noquote option to complete/compgen/compopt
-
-pathexp.c
-       - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters
-         between brackets in an ERE bracket expression are not inappropriately
-         quoted with backslashes.  This is a pretty substantial change,
-         should be stressed when opening bash up for alpha and beta tests.
-         Fixes bug pointed out by Stephane Chazleas
-         <stephane_chazelas@yahoo.fr>
-
-doc/{bash.1,bashref.texi}
-       - document that regexp matches can be inconsistent when quoting
-         characters in bracket expressions, since usual quoting characters
-         lose their meaning within brackets
-       - note that regular expression matching when the pattern is stored
-         in a shell variable which is quoted for expansion causes string
-         matching
-
-redir.h
-       - RX_SAVEFD: new flag value; notes that a redirection denotes an
-         fd used to save another even if it's not >= SHELL_FD_BASE
-
-redir.c
-       - do_redirection_internal: when deciding whether or not to reset the
-         close-on-exec flag on a restored file descriptor, trust the value
-         of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE
-         if the RX_SAVEFD flag is set
-       - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor
-         limit is such that the shell can't duplicate to a file descriptor
-         >= 10.  Fixes a limitation that tripped a coreutils test reported
-         by Paul Eggert <eggert@cs.ucla.edu>
-
-                                  11/19
-                                  -----
-doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
-       - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
-         the startup files
-       - make it clear that bash runs HISTSIZE=500 after reading the
-         startup files
-       - make it clear that setting HISTSIZE=0 causes commands to not be
-         saved in the history list
-       - make it clear that setting HISTFILESIZE=0 causes the history file
-         to be truncated to zero size
-
-variables.c
-       - sv_histsize: change so setting HISTSIZE to a value less than 0
-         causes the history to be `unstifled'
-       - sv_histsize: change so setting HISTFILESIZE to a value less than 0
-         results in no file truncation
-       - make it clear that numeric values less than 0 for HISTFILESIZE or
-         HISTSIZE inhibit the usual functions
-
-                                  11/23
-                                  -----
-parse.y
-       - save_input_line_state: add missing `return ls' at the end, since the
-         function is supposed to return its argument.  Pointed out by
-         Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/read.def
-       - skip over NUL bytes in input, as most modern shells seem to.  Bug
-         report by Matthew Story <matt@tablethotels.com>
-
-lib/readline/vi_mode.c
-       - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
-
-                                  11/25
-                                  -----
-builtins/read.def
-       - read_builtin: if xrealloc returns same pointer as first argument,
-         don't bother with the remove_unwind_protect/add_unwind_protect pair
-       - read_builtin: set a flag (`reading') around calls to zread/zreadc
-         and readline()
-       - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if
-         currently in read(2) (reading != 0)
-       - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero,
-         behavior of old SIGALRM catching function
-       - read_builtin: call CHECK_ALRM in appropriate places while reading
-         line of input.  Fixes bug reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-lib/readline/vi_mode.c
-       - rl_vi_replace: initialize characters before printing characters in
-         vi_replace_keymap to their default values in vi_insertion_keymap,
-         since we're supposed to be in insert mode replacing characters
-       - rl_vi_replace: call rl_vi_start_inserting to set last command to
-         `R' for undo
-       - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
-         use by _rl_vi_done_inserting
-       - vi_save_insert_buffer: new function, broke out code that copies text
-         into vi_insert_buffer from _rl_vi_save_insert
-       - _rl_vi_save_replace: new function, saves text modified by
-         rl_vi_replace (using current point and vi_replace_count to figure
-         it out) to vi_replace_buffer
-       - _rl_vi_save_insert: call vi_save_insert_buffer
-       - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
-         _rl_vi_save_replace to save text modified in replace mode (uses
-         vi_save_insert_buffer)
-       - _rl_vi_replace_insert: new function, replaces the number of chars
-         in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
-       - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
-         there's something in vi_insert_buffer.  Fixes bug with `.' not
-         redoing the most recent `R' command, reported by Geoff Clare
-         <g.clare@opengroup.org> in readline area on savannah
-
-                                  11/26
-                                  -----
-lib/readline/rlprivate.h
-       - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
-         to be handled
-       - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
-         SIGINT to be handled
-
-lib/readline/complete.c
-       - remove all mention of _rl_interrupt_immediately
-       - rl_completion_matches: check RL_SIG_RECEIVED after each call to
-         the entry function, call RL_CHECK_SIGNALS if true to handle the
-         signal
-       - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free
-         and zero out the match_list this function allocated
-       - rl_completion_matches: if the completion entry function is
-         rl_filename_completion_function, free the contents of match_list,
-         because that function does not keep state and will not free the
-         entries; avoids possible memory leak pointed out by
-         Garrett Cooper <yanegomi@gmail.com>
-       - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after
-         calling rl_attempted_completion_function, free the returned match
-         list and handle the signal with RL_CHECK_SIGNALS; avoids
-         possible memory leak pointed out by Garrett Cooper
-         <yanegomi@gmail.com>
-       - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after
-         calling rl_completion_matches, free the returned match list and
-         handle the signal with RL_CHECK_SIGNALS
-
-lib/readline/util.c
-       - rl_settracefp: new utility function to set the tracing FILE *
-
-lib/readline/signals.c
-       - _rl_sigcleanup: pointer to a function that will be called with the
-         signal and a void * argument from _rl_handle_signal
-       - _rl_sigcleanarg: void * that the rest of the code can set to have
-         passed to the signal cleanup function
-       - _rl_handle_signal: if _rl_sigcleanup set, call as
-               (*_rl_sigcleanup) (sig, _rl_sigcleanarg)
-
-lib/readline/rlprivate.h
-       - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
-
-lib/readline/complete.c
-       - _rl_complete_sigcleanup: signal cleanup function for completion code;
-         calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT
-       - rl_complete_internal: before calling display_matches if what_to_do
-         == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match
-         list gets freed on SIGINT; avoids possible memory leak pointed out
-         by Garrett Cooper <yanegomi@gmail.com>
-       - rl_complete_internal: in default switch case, call _rl_free_match_list
-         before returning to avoid memory leak
-
-doc/bashref.texi
-       - start at a set of examples for the =~ regular expression matching
-         operator, touching on keeping the pattern in a shell variable and
-         quoting portions of the pattern to remove their special meaning
-
-                                  12/1
-                                  ----
-lib/glob/gmisc.c
-       - extglob_pattern: new function, returns 1 if pattern passed as an
-         argument looks like an extended globbing pattern
-
-lib/glob/glob.c
-       - skipname: return 0 immediately if extglob_pattern returns non-zero,
-         let the extended globbing code do the right thing with skipping
-         names beginning with a `.'
-       - mbskipname: return 0 immediately if extglob_pattern returns non-zero,
-         let the extended globbing code do the right thing with skipping
-         names beginning with a `.'.  Fixes bug reported by Yongzhi Pan
-         <panyongzhi@gmail.com>
-
-                                  12/2
-                                  ----
-lib/glob/smatch.c
-       - patscan, patscan_wc: no longer static so other parts of the glob
-         library can use them, renamed to glob_patscan, glob_patscan_wc
-
-lib/glob/glob.c
-       - extern declarations for glob_patscan, glob_patscan_wc
-       - wchkname: new function, does skipname on wchar_t pattern and dname,
-         old body of mbskipname after converting to wide chars
-       - extglob_skipname: new function, checks all subpatterns in an extglob
-         pattern to determine whether or not a filename should be skipped.
-         Calls skipname for each subpattern.  Dname is only skipped if all
-         subpatterns indicate it should be.  Better fix for bug reported by
-         Yongzhi Pan <panyongzhi@gmail.com>
-       - wextglob_skipname: wide-char version of extglob_skipname, calls
-         wchkname instead of calling back into mbskipname for each
-         subpattern to avoid problems with char/wchar_t mismatch
-       - skipname: call extglob_skipname if extglob_pattern returns non-zero
-       - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero
-       - mbskipname: short-circuit immediately if no multibyte chars in
-         pattern or filename
-
-execute_cmd.c
-       - execute_cond_node: added parens to patmatch assignment statement to
-         make intent clearer
-
-                                  12/3
-                                  ----
-configure.in,config.h.in
-       - check for imaxdiv, define HAVE_IMAXDIV if present
-
-expr.c
-       - expassign, exp2: use imaxdiv if available.  Doesn't help with checks
-         for overflow from 10/25
-
-                                  12/6
-                                  ----
-lib/readline/complete.c
-       - compute_lcd_of_matches: if we're ignoring case in the matches, only
-         use what the user typed as the lcd if it matches the first match
-         (after sorting) up to the length of what was typed (if what the
-         user typed is longer than the shortest of the possible matches, use
-         the shortest common length of the matches instead).  If it doesn't
-         match, use the first of the list of matches, as if case were not
-         being ignored.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
-
-                                  12/7
-                                  ----
-builtins/cd.def
-       - cd_builtin: add code to return error in case cd has more than one
-         non-option argument, conditional on CD_COMPLAINS define (which is
-         not defined anywhere)
-
-doc/{bash.1,bashref.texi}
-       - note that additional arguments to cd following the directory name
-         are ignored.  Suggested by Vaclav Hanzl <hanzl@noel.feld.cvut.cz>
-
-                                  12/10
-                                  -----
-lib/readline/input.c
-       - rl_read_key: don't need to increment key sequence length here; doing
-         it leads to an off-by-one error
-
-lib/readline/macro.c
-       - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length
-         fixed, can decrement current_macro_index by rl_key_sequence_length
-         (length of key sequence that closes keyboard macro)
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length
-         when ESC maps to a new keymap and we're converting meta characters
-         to ESC+key
-       - _rl_dispatch_subseq: better increment of rl_key_sequence_length
-         before we dispatch to a function in the ISFUNC case (where the
-         second increment above should have happened)
-       - rl_executing_keyseq: the full key sequence that ended up executing
-         a readline command.  Available to the calling application, maintained
-         by _rl_dispatch_subseq, indexed by rl_key_sequence_length
-       - rl_executing_key: the key that was bound to the currently-executing
-         readline command.  Same as the `key' argument to the function
-
-lib/readline/readline.h
-       - rl_executing_keyseq: extern declaration
-       - rl_executing_key: extern declaration
-       - rl_key_sequence_length: declaration moved here from rlprivate.h,
-         now part of public interface
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_executing_keyseq_size, buffer size
-         for rl_executing_keyseq
-
-lib/readline/doc/rltech.texi
-       - documented new variables: rl_executing_key, rl_executing_keyseq,
-         rl_key_sequence_length
-
-                                  12/13
-                                  -----
-bashline.c
-       - bash_execute_unix_command: replace ad-hoc code that searches
-         cmd_xmap for correct command with call to rl_function_of_keyseq
-         using rl_executing_keyseq; now supports key sequences longer
-         than two characters.  Fixes bug reported by Michael Kazior
-         <kazikcz@gmail.com>
-
-                                  12/15
-                                  -----
-make_cmd.c
-       - make_function_def: don't null out source_file before calling
-         make_command so it can be used later on when the function definition
-         is executed
-
-execute_cmd.c
-       - execute_intern_function: second argument is now FUNCTION_DEF *
-         instead of COMMAND *
-       - execute_command_internal: call execute_intern_function with the
-         new second argument (the entire FUNCTION_DEF instead of just the
-         command member)
-       - execute_intern_function: if DEBUGGER is defined, call
-         bind_function_def before calling bind_function, just like
-         make_function_def does (might be able to take out the call in
-         make_function_def depending on what the debugger does with it).
-         Fixes bug reported by <dethrophes@motd005>
-
-expr.c
-       - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
-         fix typos and logic errors
-
-                                  12/16
-                                  -----
-bashline.c
-       - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
-         command substitutions and doesn't treat them as command separators
-       - attempt_shell_completion: instead of taking first return from
-         find_cmd_name as command name to use for programmable completion,
-         use loop to skip over assignment statements.  Fixes problem reported
-         by Raphael Droz <raphael.droz+floss@gmail.com>
-       - attempt_shell_completion: if we don't find a command name but the
-         command line is non-empty, assume the other words are all assignment
-         statements and flag that point is in a command position so we can
-         do command name completion
-       - attempt_shell_completion: if the word being completed is the first
-         word following a series of assignment statements, and the
-         command line is non-empty, flag that point is in a command position
-         so we can do command name completion
-
-lib/readline/history.c
-       - history_get_time: atol -> strtol
-
-                                  12/18
-                                  -----
-parse.y
-       - parser_in_command_position: external interface to the
-         command_token_position macro for use by other parts of the shell,
-         like the completion mechanism
-
-externs.h
-       - extern declaration for parser_in_command_position
-
-                                  12/19
-                                  -----
-
-builtins/read.def
-       - read_builtin: make sure all calls to bind_read_variable are passed
-         a non-null string.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-bashline.c
-       - attempt_shell_completion: mark that we're in a command position if
-         we're at the start of the line and the parser is ready to accept
-         a reserved word or command name.  Feature most recently suggested
-         by Peng Yu <pengyu.ut@gmail.com>
-
-                                  12/21
-                                  -----
-lib/readline/bind.c
-       - _rl_escchar: return the character that would be backslash-escaped
-         to denote the control character passed as an argument ('\n' -> 'n')
-       - _rl_isescape: return 1 if character passed is one that has a
-         backslash escape
-       - _rl_untranslate_macro_value: new second argument: use_escapes, if
-         non-zero translate to backslash escapes where possible instead of
-         using straight \C-x for control character `x'.  Change callers
-       - _rl_untranslate_macro_value: now global
-
-lib/readline/rlprivate.h
-       - _rl_untranslate_macro_value: extern declaration
-
-lib/readline/{macro.c,readline.h}
-       - rl_print_last_kbd_macro: new bindable function, inspired by patch
-         from Mitchel Humpherys
-
-lib/readline/funmap.c
-       - print-last-kbd-macro: new bindable command, bound to
-         rl_print_last_kbd_macro
-
-lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
-       - print-last-kbd-macro: document.
-
-lib/readline/text.c
-       - _rl_insert_next: if we're defining a macro, make sure the key gets
-         added to the macro text (should really audit calls to rl_read_key()
-         and make sure the right thing is happening for all of them)
-
-bashline.[ch]
-       - print_unix_command_map: new function, prints all bound commands in
-         cmd_xmap using rl_macro_dumper in a reusable format
-
-builtins/bind.def
-       - new -X option: print all keysequences bound to Unix commands using
-         print_unix_command_map.  Feature suggested by Dennis Williamson
-         (2/2011)
-
-doc/{bash.1,bashref.texi}
-       - document new `bind -X' option
-
-                                  12/24
-                                  -----
-
-doc/{bash.1,bashref.texi}
-       - add a couple of sentences to the description of the case modification
-         operators making it clearer that each character of parameter is
-         tested against the pattern, and that the pattern should only attempt
-         to match a single character.  Suggested by Bill Gradwohl
-         <bill@ycc.com>
-
-                                  12/28
-                                  -----
-shell.c
-       - init_noninteractive: instead of calling set_job_control(0) to
-         unconditionally turn off job control, turn on job control if
-         forced_interactive or jobs_m_flag is set
-       - shell_initialize: call initialize_job_control with jobs_m_flag as
-         argument so `bash -m script' enables job control while running the
-         script
-
-jobs.c
-       - initialize_job_control: if the `force' argument is non-zero, turn on
-         job control even if the shell is not currently interactive
-         (interactive == 0)
-
-                                  12/29
-                                  -----
-
-flags.h
-       - new extern declaration for jobs_m_flag
-
-builtins/{cd,set}.def,doc/{bash.1,bashref.texi}
-       - added text clarifying the descriptions of cd -L and -P, suggested by
-         Padraig Brady <p@draigbrady.com>
-       - slight change to the description of `set -P' about resolving symbolic
-         links
-
-lib/readline/doc/rluser.texi
-       - Added an example to the programmable completion section: _comp_cd,
-         a completion function for cd, with additional verbiage.  Text
-         includes a reference to the bash_completion project
-
-                                1/1/2012
-                                --------
-jobs.c
-       - set_job_status_and_cleanup: note that a job is stopped due to
-         SIGTSTP (any_tstped) if job_control is set; there's no need to
-         test interactive
-
-                                   1/5
-                                   ---
-quit.h
-       - LASTSIG(): new macro, expands to signal number of last terminating
-         signal received (terminating_signal or SIGINT)
-
-trap.c
-       - first_pending_trap: returns lowest signal number with a trap pending
-       - trapped_signal_received: set to the last trapped signal the shell
-         received in trap_handler(); reset to 0 in run_pending_traps
-
-builtins/read.def
-       - read_builtin: changes to posix-mode (posixly_correct != 0) to make
-         `read' interruptible by a trapped signal.  After the trap runs,
-         read returns 128+sig and does not assign the partially-read line
-         to the named variable(s).  From an austin-group discussion started
-         by David Korn
-
-                                  1/11
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight changes to the descriptions of the compat32 and compat40 shell
-         options to clarify their meaning
-
-                                  1/12
-                                  ----
-lib/readline/{colors.[ch],parse-colors.[ch]}
-       - new files, part of color infrastructure support
-
-Makefile.in,lib/readline/Makefile.in
-       - arrange to have colors.o and parse-colors.o added to readline
-         library
-
-{configure,config.h}.in
-       - check for stdbool.h, define HAVE_STDBOOL_H if found
-
-                                  1/14
-                                  ----
-lib/readline/bind.c
-       - colored_stats: new bindable variable, enables using colors to
-         indicate file type when listing completions
-
-lib/readline/complete.c
-       - _rl_colored_stats: new variable, controlled by colored-stats bindable
-         variable
-       - colored_stat_start, colored_stat_end: new functions to set and reset
-         the terminal color appropriately depending on the type of the
-         filename to be printed
-       - print_filename: changes to print colors if `colored-stats' variable
-         set.  Changes contributed by Raphael Droz
-         <raphael.droz+floss@gmail.com>
-
-lib/readline/readline.c
-       - rl_initialize_everything: add call to _rl_parse_colors to parse
-         color values out of $LS_COLORS.  May have to add to rl_initialize
-         to make more dynamic if LS_COLORS changes (which doesn't happen
-         very often, if at all)
-
-lib/readline/rlprivate.h
-       - _rl_colored_stats: new extern declaration
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - colored-stats: document new bindable readline variable
-
-lib/readline/colors.c
-       - _rl_print_color_indicator: call rl_filename_stat_hook before calling
-         lstat/stat so we can get color indicators for stuff like
-         $HOME/Applications
-
-lib/readline/complete.c
-       - stat_char: call rl_filename_stat_hook before calling lstat/stat
-
-findcmd.[ch],execute_cmd.c
-       - search_for_command: now takes a second `flags' argument; changed
-         header function prototype and callers
-       - search_for_command: if (flags & 1), put the command found in $PATH
-         into the command hash table (previous default behavior)
-
-execute_cmd.c
-       - is_dirname: call search_for_command with flags argument of 0 so it
-         doesn't try to put something in the command hash table
-
-bashline.c
-       - bash_command_name_stat_hook: a hook function for readline's
-         filename_stat_hook that does $PATH searching the same way that
-         execute_cmd.c:execute_disk_command() does it, and rewrites the
-         passed filename if found.  Does not put names into command hash
-         table.  This allows command name completion to take advantage
-         of `visible-stats' and `colored-stats' settings.
-       - executable_completion: new function, calls the directory completion
-         hook to expand the filename before calling executable_file or
-         executable_or_directory; change command_word_completion_function to
-         call executable_completion.  This allows $HOME/bin/[TAB] to do
-         command completion and display alternatives
-
-                                  1/17
-                                  ----
-pcomplete.c
-       - gen_command_matches: now takes a new second argument: the command
-         name as deciphered by the programmable completion code and used
-         to look up the compspec; changed callers (gen_compspec_completions)
-       - gen_shell_function_matches: now takes a new second argument: the
-         command that originally caused the completion function to be
-         invoked; changed callers (gen_compspec_completions))
-       - build_arg_list: now takes a new second argument: the command name
-         corresponding to the current compspec; changed callers
-         (gen_command_matches, gen_shell_function_matches)
-       - build_arg_list: now uses `cmd' argument to create $1 passed to
-         invoked command or shell function
-       - gen_compspec_completions: if we skipped a null command at the
-         beginning of the line (e.g., for completing `>'), add a new word for
-         it at the beginning of the word list and increment nw and cw
-         appropriately.  This is all a partial fix for the shortcoming
-         pointed out by Sung Pae <sungpae@gmail.com>
-
-                                  1/18
-                                  ----
-
-{configure,config.h}.in
-       - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
-         define HAVE_DECL_AUDIT_USER_TTY if both are found
-
-lib/readline/rlconf.h
-       - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel
-         tty auditing system if it's available and enabled
-
-lib/readline/util.c
-       - _rl_audit_tty: new function, send a string to the kernel tty audit
-         system
-
-lib/readline/rlprivate.h
-       - _rl_audit_tty: new extern declaration
-
-lib/readline/readline.c
-       - readline: call _rl_audit_tty with line to be returned before returning
-         it if the Linux tty audit system is available and it's been enabled
-         in rlconf.h  Original patch from Miroslav Trmac; recent request
-         from Miroslav Lichvar <mlichvar@redhat.com>
-
-                                  1/21
-                                  ----
-
-lib/readline/readline.c:
-       - _rl_dispatch_subseq: add an inter-character timeout for multi-char
-         key sequences.  Suggested by <rogerx.oss@gmail.com>.  Still needs
-         work to make a user-settable variable
-
-parse.y
-       - shell_getc: make code that uses the pop_alias dependent on ALIAS
-         define
-
-variables.h
-       - sv_tz: extern define should only depend on HAVE_TZSET
-
-expr.c
-       - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1;
-         move assignment to `ind' inside define
-       - expr_bind_array_element: declaration and uses need to be #ifdef
-         ARRAY_VARS
-
-arrayfunc.h
-       - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
-         defined; used in subst.c unconditionally
-
-sig.h
-       - make the signal blocking functions not dependent on JOB_CONTROL
-
-sig.c
-       - sigprocmask: make the replacement definition not dependent on
-         JOB_CONTROL
-
-trap.c
-       - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
-         HAVE_POSIX_SIGNALS and BSD signals
-
-                                  1/24
-                                  ----
-
-print_cmd.c
-       - print_redirection_list: change the conditions under which
-         r_duplicating_output_word is mapped to r_err_and_out to more or
-         less match those used in redir.c.  Fixes bug pointed out by
-         Dan Douglas <ormaaj@gmail.com>
-
-
-                                  1/29
-                                  ----
-lib/readline/signals.c
-       - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies
-         unless SIGWINCH is defined.  Fixes bug reported by Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-doc/{bash.1,bashref.texi}
-       - small modifications to the introduction to the REDIRECTION section
-         to describe how redirections can modify file handles
-       - small modification to the section describing base#n to make it
-         clearer that n can be denoted using non-numerics.  From a posting
-         by Linda Walsh <bash@tlinx.org>
-
-                                   2/2
-                                   ---
-builtins/printf.def
-       - printf_builtin: make sure vbuf is intialized and non-null when -v
-         is supplied, since other parts of the code assume that it's not
-         null (e.g., bind_printf_variable()).  Fixes bug reported by Jim
-         Avera <james_avera@yahoo.com>
-
-                                   2/4
-                                   ---
-lib/readline/undo.c
-       - _rl_free_undo_list: new function, old body of rl_free_undo_list,
-         frees undo entries in UNDO_LIST * passed as argument
-       - rl_free_undo_list: call _rl_free_undo_list
-
-lib/readline/rlprivate.h
-       - _rl_free_undo_list: new extern declaration
-       - _rl_keyseq_timeout: new extern declaration (see below)
-
-lib/readline/misc.c
-       - rl_clear_history: new function.  Clears the history list and frees
-         all associated data similar to history.c:clear_history(), but
-         takes rl_undo_list into account and frees and UNDO_LISTs saved as
-         `data' members of a history list entry
-
-lib/readline/doc/rltech.texi
-       - rl_clear_history: documented
-
-lib/readline/readline.c
-       - _rl_keyseq_timeout: new variable to hold intra-key timeout value
-         from 1/21 fix; specified in milliseconds.  Default value is 500
-       - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
-         timeout if it's greater than 0; no timeout if <= 0
-       - _rl_dispatch_subseq: don't check for queued keyboard input if we have
-         pushed or pending input, or if we're reading input from a macro
-
-lib/readline/bind.c
-       - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
-       - string_varlist: add keyseq-timeout
-       - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
-         clamps negative values at 0 for now
-       - _rl_get_string_variable_value: return value for keyseq-timeout
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - keyseq-timeout: documented
-
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: modification to fix from 7/18 to not use
-         cxt->keymap and cxt->okeymap, since by the time this code is
-         executed, they are equal.  Use `f' to check for rl_insert or
-         unbound func
-       - _rl_isearch_dispatch: if we're switching keymaps, not in
-         callback mode, and don't have pending or pushed input, use
-         _rl_input_queued to resolve a potentially ambiguous key sequence.
-         Suggested by Roger Zauner <rogerx.oss@gmail.com>
-       - _rl_isearch_dispatch: if we have changed keymaps and resolved to
-         an editing function (not self-insert), make sure we stuff the
-         right characters back onto the input after changing the keymap
-         back so the right editing function is executed after the search
-         is terminated.  Rest of fix for bug reported by Roger Zauner
-         <rogerx.oss@gmail.com>
-
-                                   2/5
-                                   ---
-builtins/gen-helpfiles.c
-       - new file: reads struct builtin and writes the long docs to files
-         in the `helpdirs' subdirectory.  The filename is given in the
-         previously-unused `handle' member of the struct builtin.  Links
-         with `tmpbuiltins.o', which is created by Makefile to have the
-         right long documentation.  When not cross-compiling, gets the
-         right #defines based on configuration options from config.h instead
-         of trying to parse conditional parts of def files.  Fixes
-         shortcoming pointed out by Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/Makefile.in
-       - tmpbuiltins.c: new generated file, created to enable creation of
-         separate helpfiles based on correct #defines instead of trying to
-         parse conditional parts of def files
-       - gen-helpfiles: new program to generate helpfiles, links with
-         tmpbuiltins.o
-       - HELPFILES_TARGET: new target, substituted by configure to `helpdoc'
-         if separate helpfiles requested
-       - targets: new target, libbuiltins.a and $(HELPFILES_TARGET)
-       - CREATED_OBJECTS: new variable, holds created object files for
-         make clean; changed make clean to remove created objects
-       - helpdoc: changed to call gen-helpfiles instead of mkbuiltins
-
-Makefile.in
-       - when building libbuiltins.a, recursively call make with `targets'
-         argument to make sure separate helpfiles get built
-
-configure.in
-       - substitute `helpdoc' as value of HELPFILES_TARGET if
-         --enable-separate-helpfiles supplied as configure argument
-
-builtins/mkbuiltins.c
-       - `-nofunctions': new argument, causes mkbuiltins to not write value
-         for function implementing a particular builtin to struct builtin
-         and to write document file name to `handle' member of struct builtin
-       - no longer writes separate helpfiles; that is left to gen-helpfiles
-
-                                   2/8
-                                   ---
-subst.c
-       - make sure last_command_exit_value is set to a non-zero value before
-         any calls to report_error, since `-e' set will short-circuit
-         report_error.  Fixes bug reported by Ewan Mellor
-         <Ewan.Mellor@eu.citrix.com>
-
-variables.c
-       - make_local_array_variable: added second argument; if non-zero,
-         function will return an existing local associative array variable
-         instead of insisting on an indexed array
-
-variable.h,subst.c
-       - make_local_array_variable: changed prototype and caller
-
-builtins/declare.def
-       - declare_internal: add second arg to call to make_local_array_variable;
-         making_array_special, which indicates we're processing an
-         assignment like declare a[b]=c.  Fixes seg fault resulting from
-         a being an already-declared local associative array variable in a
-         function.  Ubuntu bash bug 928900.
-
-                                  2/14
-                                  ----
-
-execute_cmd.c
-       - execute_command_internal: if redirections into or out of a loop fail,
-         don't try to free ofifo_list unless saved_fifo is non-zero.  It's
-         only valid if saved_fifo is set
-
-                                  2/15
-                                  ----
-{arrayfunc,braces,variables}.c
-       - last_command_exit_value: make sure it's set before any calls to
-         report_error, since -e will cause that to exit the shell
-
-builtins/common.c
-       - get_job_by_name: call internal_error instead of report_error so this
-         doesn't exit the shell
-
-                                  2/18
-                                  ----
-builtins/evalstring.c
-       - parse_and_execute: make sure the file descriptor to be redirected to
-         is 1 before calling cat_file.  One fix for bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-parse.y
-       - read_token_word: don't return NUMBER if a string of all digits
-         resolves to a number that overflows the bounds of an intmax_t.
-         Other fix for bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  2/19
-                                  ----
-lib/sh/strtrans.c
-       - ansicstr: use 0x7f as the boundary for characters that translate
-         directly from ASCII to unicode (\u and \U escapes) instead of
-         UCHAR_MAX, since everything >= 0x80 requires more than one byte.
-         Bug and fix from John Kearney <dethrophes@web.de>
-
-builtins/printf.def
-       - tescape: ditto for printf \u and \U escape sequences
-
-                                  2/20
-                                  ----
-lib/sh/unicode.c
-       - u32toutf8: fix to handle encodings up to six bytes long correctly
-         (though technically UTF-8 only has characters up to 4 bytes long).
-         Report and fix from John Kearney <dethrophes@web.de>
-       - u32toutf8: first argument is now an unsigned 32-bit quantity,
-         changed callers (u32cconv) to pass c instead of wc
-       - u32reset: new function, resets local static state to uninitialized
-         (locale information, currently)
-
-locale.c
-       - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
-         cached locale information used by u32cconv.  From a report from
-         John Kearney <dethrophes@web.de>
-
-                                  2/21
-                                  ----
-doc/{bash,builtins}.1
-       - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-
-lib/sh/unicode.c
-       - u32cconv: only assume you can directly call wctomb on the passed
-         value if __STDC_ISO_10646__ is defined and the value is <=
-         0x7fffffff
-       - stub_charset: return locale as default instead of "ASCII", let
-         rest of code decide what to do with it
-
-lib/readline/parens.c
-       - _rl_enable_paren_matching: make paren matching work in vi insert
-         mode.  Bug report from <derflob@derflob.de>
-
-                                  2/22
-                                  ----
-lib/sh/shquote.c
-       - sh_backslash_quote: quote tilde in places where it would be
-         expanded.  From a report from John Kearney <dethrophes@web.de>
-
-                                  2/23
-                                  ----
-execute_cmd.c
-       - execute_pipeline: wrap the discard_unwind_frame call in #ifdef
-         JOB_CONTROL, since the frame is only created if JOB_CONTROL is
-         defined.  Bug and fix from Doug Kehn <rdkehn@yahoo.com>
-
-                                  2/25
-                                  ----
-error.c
-       - report_error: make sure last_command_exit_value is non-zero before
-         we call exit_shell, since the exit trap may reference it.  Call
-         exit_shell with last_command_exit_value to allow exit statuses
-         other than 1
-
-unicode.c
-       - stub_charset: use local static buffer to hold charset, don't change
-         value returned by get_locale_var.  Based on idea and code from
-         John Kearney <dethrophes@web.de>
-       - u32toutf16: function to convert unsigned 32-bit value (unicode) to
-         UTF-16.  From John Kearney <dethrophes@web.de>
-       - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
-         is two bytes, send result to wcstombs, return if not encoding error.
-         From John Kearney <dethrophes@web.de>
-       - u32cconv: return UTF-8 conversion if iconv conversion to local
-         charset is unsupported
-
-                                   3/2
-                                   ---
-lib/readline/complete.c
-       - print_filename: if there is no directory hook, but there is a stat
-         hook, and we want to append a slash to directories, call the stat
-         hook before calling path_isdir on the expanded directory name.
-         Report and pointer to fix from Steve Rago <sar@nec-labs.com>
-
-                                   3/3
-                                   ---
-builtins/evalstring.c
-       - parse_and_execute: fix to change of 2/18: make sure the file
-         descriptor being redirected to is 0 before calling cat_file when
-         we see something like $(< file).  Real fix for bug reported by
-         Dan Douglas <ormaaj@gmail.com>
-
-subst.c
-       - parameter_brace_patsub: run the replacement string through quote
-         removal even if the expansion is within double quotes, because
-         the parser and string extract functions treat the quotes and
-         backslashes as special.  If they're treated as special, quote
-         removal should remove them (this is the Posix position and
-         compatible with ksh93).  THIS IS NOT BACKWARDS COMPATIBLE.
-
-                                   3/4
-                                   ---
-lib/readline/complete.c
-       - rl_menu_complete: fix to make show-all-if-ambiguous and
-         menu-complete-display-prefix work together if both are set.  Fix
-         from Sami Pietila <sami.pietila@gmail.com>
-
-                                   3/5
-                                   ---
-bashline.c
-       - dircomplete_expand_relpath: new variable, if non-zero, means that
-         `shopt -s direxpand' should expand relative pathnames.  Zero by
-         default, not user-settable yet
-       - bash_directory_completion_hook: if we have a relative pathname that
-         isn't changed by canonicalization or spell checking after being
-         appended to $PWD, then don't change what the user typed.  Controlled
-         by dircomplete_expand_relpath
-
-                                   3/7
-                                   ---
-m4/timespec.m4
-       - new macros, cribbed from gnulib and coreutils: find out whether we
-         have `struct timespec' and what file includes it
-
-m4/stat-time.m4
-       - new macros, cribbed from gnulib and coreutils: find out whether the
-         mtime/atime/ctime/etctime fields of struct stat are of type
-         struct timespec, and what the name is
-
-include/stat-time.h
-       - new file, cribbed from gnulib, with additions from coreutils: include
-         the right file to get the struct timespec define, or provide our own
-         replacement.  Provides a bunch of inline functions to turn the
-         appropriate members of struct stat into `struct timespec' values,
-         zeroing out the tv_nsec field if necessary
-
-test.c
-       - include "stat-time.h" for the nanosecond timestamp resolution stuff
-       - stat_mtime: new function, returns struct stat and the mod time
-         normalized into a `struct timespec' for the filename passed as the
-         first argument
-       - filecomp: call stat_mtime instead of sh_stat for each filename
-         argument to get the mtime as a struct timespec
-       - filecomp: call timespec_cmp instead of using a straight arithmetic
-         comparison for the -nt and -ot operators, using timespec returned by
-         stat_mtime.  Added functionality requested by by Werner Fink
-         <werner@suse.de> for systems that can support it
-
-                                  3/10
-                                  ----
-include/posixdir.h
-       - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature
-         test macros to decide whether dirent.d_ino is present and usable;
-         define D_INO_AVAILABLE.  Report and fix from Fabrizion Gennari
-         <fabrizio.ge@tiscali.it>
-       - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno
-
-lib/sh/getcwd.c
-       - use D_FILENO_AVAILABLE to decide whether or not to compile in
-         _path_checkino and whether or not to call it.  Report and initial
-         fix from Fabrizion Gennari <fabrizio.ge@tiscali.it>
-
-lib/readline/signals.c
-       - make sure all occurrences of SIGWINCH are protected by #ifdef
-
-sig.c
-       - make sure all occurrences of SIGCHLD are protected by #ifdef
-
-nojobs.c
-       - make sure SA_RESTART is defined to 0 if the OS doesn't define it
-
-version.c
-       - show_shell_version: don't use string literals in printf, use %s.
-         Has added benefit of removing newline from string to be translated
-
-trap.c
-       - queue_sigchld_trap: new function, increments the number of pending
-         SIGCHLD signals by the argument, which is by convention the number
-         of children reaped in a call to waitchld()
-
-trap.h
-       - queue_sigchld_trap: new extern declaration
-
-jobs.c
-       - waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
-         then call queue_sigchld_trap to avoid running the trap in a signal
-         handler context.  Report and original fix from Siddhesh Poyarekar
-         <siddhesh@redhat.com>
-
-lib/sh/unicode.c
-       - u32tocesc: take an unsigned 32-bit quantity and encode it using
-         ISO C99 string notation (\u/\U)
-       - u32cconv: call u32tocesc as a fallback instead of u32cchar
-       - u32cconv: call u32tocesc if iconv cannot convert the character.
-         Maybe do the same thing if iconv_open fails
-       - u32reset: call iconv_close on localconv if u32init == 1
-
-                                  3/11
-                                  ----
-config-top.h
-       - CHECKWINSIZE_DEFAULT: new define, set to initial value of
-         check_window_size (shopt checkwinsize): 0 for off, 1 for on.
-         Default is 0
-
-{jobs,nojobs}.c
-       - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
-
-                                  3/13
-                                  ----
-doc/bashref.texi
-       - change text referring to the copying restrictions to that
-         recommended by the FSF (no Front-Cover Texts and no Back-Cover
-         Texts)
-
-lib/readline/doc/{history,rlman,rluserman}.texi
-       - change text referring to the copying restrictions to that
-         recommended by the FSF (no Front-Cover Texts and no Back-Cover
-         Texts)
-
-                                  3/15
-                                  ----
-array.c
-       - LASTREF_START: new macro to set the starting position for an array
-         traversal to `lastref' if that's valid, and to the start of the array
-         if not.  Used in array_reference, array_insert, array_remove
-       - array_remove: try to be a little smarter with lastref instead of
-         unconditionally invalidating it
-
-                                  3/16
-                                  ----
-array.c
-       - array_insert: fix memory leak by deleting element to be added in the
-         case of an error
-
-                                  3/18
-                                  ----
-lib/sh/mbschr.c
-       - mbschr: don't call mbrlen unless is_basic is false; devolves to a
-         straight character-by-character run through the string
-
-                                  3/19
-                                  ----
-stringlib.c
-       - substring: use memcpy instead of strncpy, since we know the length
-         and are going to add our own NUL terminator
-
-                                  3/20
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted
-         null string (a list with one element for which
-         QUOTED_NULL(list->word->word) returns true), return the quoted null
-         and set the flags in the returned word to indicate it.  Fixes bug
-         reported by Mark Edgar <medgar123@gmail.com>
-
-lib/sh/tmpfile.c
-       - use random(3) instead of get_random_number to avoid perturbing the
-         random sequence you get using $RANDOM.  Bug report and fix from
-         Jurij Mihelic <jurij.mihelic@fri.uni-lj.si>
-
-                                  3/21
-                                  ----
-config-top.h
-       - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
-         sequential indexed array assignment patterns.  Defined to 1 by
-         default
-
-array.c
-       - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
-         start the search at lastref (see change from 3/15)
-
-                                  3/27
-                                  ----
-print_cmd.c
-       - debug_print_word_list: new debugging function, prints a word list
-         preceded by an optional string and using a caller-specified
-         separator
-
-                                   4/1
-                                   ---
-command.h
-       - W_ASSNGLOBAL: new flag, set to indicate declare -g
-
-execute_cmd.c
-       - fix_assignment_words: note that we have a -g argument to an assignment
-         builtin and set the W_ASSNGLOBAL flag in the variable word
-
-subst.c
-       - dump_word_flags: print out W_ASSNGLOBAL if present
-       - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set
-         and W_ASSNGLOBAL is not.  Don't want to create a local variable even
-         if variable_context is non-zero if ASSNGLOBAL is set.  Fixes bug
-         reported by Bill Gradwohl <bill@ycc.com>
-
-                                   4/7
-                                   ---
-lib/readline/readline.c
-       - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to
-         ESC processing when in vi mode.  After hitting ESC, readline will
-         wait up to _rl_keyseq_timeout*1000 microseconds (if set) for
-         additional input before dispatching on the ESC and switching to
-         command/movement mode.  Completes timeout work suggested by
-         <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
-         <barry.downes@gmail.com>
-
-lib/sh/shmbchar.c
-       - sh_mbsnlen: new function, returns the number of (possibly multibyte)
-         characters in a passed string with a passed length, examining at most
-         maxlen (third argument) bytes
-
-externs.h
-       - sh_mbsnlen: extern declaration for new function
-
-shell.c
-       - exit_shell: call maybe_save_shell_history if remember_on_history is
-         set, not just in interactive shells.  That means the history is
-         saved if history is enabled, regardless of whether or not the shell
-         is interactive
-
-doc/{bash.1,bashref.texi}
-       - TMOUT: fix description to make it explicit that TMOUT is the timeout
-         period for a complete line of input, not just any input.  Fixes
-         problem reported in Ubuntu bug 957303:
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
-       - HISTFILE: document change to write history list to history file in
-         any shell with history enabled, not just interactive shells.  This
-         seems to be more logical behavior.  Suggested by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-                                  4/12
-                                  ----
-lib/readline/colors.h
-       - only include stdbool.h if HAVE_STDBOOL_H is defined
-       - if HAVE_STDBOOL_H is not defined, provide enough definition for the
-         library to use `bool', `true', and `false'
-
-lib/readline/parse-colors.[ch]
-       - don't try to include <stdbool.h> at all; rely on colors.h to do it
-
-lib/sh/snprintf.c
-       - vsnprintf_internal: only treat '0' as a flag to indicate zero padding
-         if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
-         it as the first digit of a precision specifier.  Fixes bug reported
-         by Petr Sumbera <petr.sumbera@sun.com>
-
-                                  4/15
-                                  ----
-lib/sh/snprintf.c
-       - vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
-         flag is ignored -- Posix.  Start of a series of fixes based on
-         tests and patches from Petr Sumbera <petr.sumbera@sun.com>
-       - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
-       - vsnprintf_internal: when '+' is read as a flag, don't set right-
-         justify flag if the LADJUST (`-') flag has already been supplied
-       - floating: make sure to output space padding before the `+', zero
-         padding after
-       - exponent: make sure to output space padding before the `+', zero
-         padding after
-       - exponent: only subtract one from the width for the decimal point
-         if we're really going to print one
-       - floating: use presence of PF_PLUS flag to decide whether to account
-         for the `+' in the padded field width.  Ditto for exponent()
-
-                                  4/16
-                                  ----
-lib/sh/snprintf.c
-       - vsnprint_internal: only reduce precision by 1 when processing the `g'
-         format if it's > 0.  A precision of 0 should stay 0; otherwise it
-         gets set to -1 (NOT_FOUND) and converted to the default
-       - number, lnumber: if an explicit precision is supplied, turn off the
-         zero-padding flag and set the pad character back to space
-       - number, lnumber: only account for a `+' when performing the field
-         width calculation if the coversion is base 10; we don't add a `+'
-         for other bases
-
-                                  4/18
-                                  ----
-tests/printf3.sub
-       - try using "perl -e 'print time'" to get the current time in seconds
-         since the epoch if "date +%s" is not available (solaris 8-10)
-
-                                  4/19
-                                  ----
-tests/run-printf
-       - use cat -v instead of relying on diff -a being available to convert
-         control characters to ascii and avoid the dreaded "Binary files
-         /tmp/xx and printf.right differ"
-
-                                  4/20
-                                  ----
-lib/sh/strftime.c
-       - incoporated new version from Aharon Robbins <arnold@skeeve.com>
-
-                                  4/22
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight change to the description of /dev/tcp and /dev/udp
-
-subst.c
-       - match_wpattern: logic fix to the calculation of `simple' (was |=,
-         needs to be &=).  Bug report from Mike Frysinger <vapier@gentoo.org>,
-         fix from Andreas Schwab <schwab@linux-m68k.org>
-
-bashline.c
-       - bash_filename_stat_hook: add code from bash_directory_completion_hook
-         that performs pathname canonicalization in the same way that cd and
-         other builtins will do
-
-                                  4/25
-                                  ----
-execute_cmd.c
-       - execute_pipeline: change the call to move_to_high_fd to make it use
-         getdtablesize() and to not stomp on existing open file descriptors,
-         like the fd the shell is using to read a script.  Bug report from
-         Greg Wooledge <wooledg@eeg.ccf.org>
-
-                                   5/6
-                                   ---
-subst.c
-       - expand_word_internal: case '$': after calling param_expand and
-         setting had_quoted_null, set TEMP to null.  The code that builds the
-         returned string at the end of the function will take care of making
-         and returning a quoted null string if there's nothing else in
-         ISTRING.  If there is, the quoted null should just go away.  Part of
-         fix for bug reported by Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
-       - expand_word_internal: when processing ISTRING to build return value,
-         only set W_HASQUOTEDNULL in the returned word flags if the word is
-         a quoted null string AND had_quoted_null is set.  Rest of fix
-
-                                   5/9
-                                   ---
-variables.c
-       - bind_variable_internal: if we get an array variable here (implicit
-         assignment to index 0), call make_array_variable_value, which
-         dummies up a fake SHELL_VAR * from array[0].  This matters when
-         we're appending and have to use the current value
-       - bind_variable_internal: after computing the new value, treat assoc
-         variables with higher precedence than simple array variables; it
-         might be that a variable has both attributes set
-
-arrayfunc.c
-       - bind_array_var_internal: break code out that handles creating the
-         new value to be assigned to an array variable index into a new
-         function, make_array_variable_value.  This handles creating a
-         dummy SHELL_VAR * for implicit array[0] assignment.  Fixes bug
-         reported by Dan Douglas <ormaaj@gmail.com>
-
-arrayfunc.h
-       - make_array_variable_value: new extern declaration
-
-                                  5/19
-                                  ----
-variables.c
-       - bind_int_variable: if an assignment statement like x=y comes in
-         from the expression evaluator, and x is an array, handle it like
-         x[0]=y.  Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  5/24
-                                  ----
-
-braces.c
-       - mkseq: handle possible overflow and break the sequence generating
-         loop if it occurs.  Fixes OpenSUSE bug 763591:
-         https://bugzilla.novell.com/show_bug.cgi?id=763591
-
-                                  5/25
-                                  ----
-Makefile.in
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
-         buildversion, mksignames, mksyntax
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools
-         recho, zecho, printenv, xcase
-
-builtins/Makefile.in
-       - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
-         gen-helpfiles, psize.aux
-
-variables.c
-       - bind_int_variable: if LHS is a simple variable name without an array
-         reference, but resolves to an array variable, call
-         bind_array_variable with index 0 to make x=1 equivalent to x[0]=1.
-         Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  5/27
-                                  ----
-subst.c
-       - expand_word_internal: make sure has_dollar_at doesn't get reset before
-         recursive calls to param_expand or expand_word_internal, since it has
-         to save state of what came before.  Use temp variable and make sure
-         has_dollar_at is incremented if recursive call processes "$@".
-         Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
-         supplemented by Dan Douglas <ormaaj@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - changes to the description of substring expansion inspired by
-         suggestions from Bill Gradwohl <bill@ycc.com>
-
-doc/bashref.texi
-       - added substring expansion examples inspired by suggestions from
-         Bill Gradwohl <bill@ycc.com>
-
-variables.c
-       - find_shell_variable: search for a variable in the list of shell
-         contexts, ignore the temporary environment
-       - find_variable_tempenv: search for a variable in the list of shell
-         contexts, force search of the temporary environment
-       - find_variable_notempenv: search for a variable in the list of shell
-         contexts, don't force search of the temporary environment
-
-variables.h
-       - find_shell_variable: extern declaration
-       - find_variable_tempenv: extern declaration
-       - find_variable_notempenv: extern declaration
-
-arrayfunc.c
-       - bind_array_variable: call find_shell_variable instead of calling
-         var_lookup directly
-
-findcmd.c
-       - search_for_command: call find_variable_tempenv instead of
-         find_variable_internal directly
-       - _find_user_command_internal: call find_variable_tempenv instead of
-         find_variable_internal directly
-
-builtins/setattr.def
-       - set_var_attribute: call find_variable_notempenv instead of
-         find_variable_internal directly
-       - show_name_attributes:  call find_variable_tempenv instead of
-         find_variable_internal directly
-
-                                   6/1
-                                   ---
-sig.c
-       - termsig_handler: don't try to save the shell history on a terminating
-         signal any more, since it just causes too many problems on Linux
-         systems using glibc and glibc malloc
-
-lib/readline/vi_mode.c
-       - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
-         motion character.  From Red Hat bug 813289
-       - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
-         motion character
-       - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
-         motion character
-
-                                   6/4
-                                   ---
-lib/sh/mktime.c
-       - current versions of VMS do not need to include <stddef.h>.  Fix from
-         John E. Malmberg <wb8tyw@qsl.net>
-
-                                   6/5
-                                   ---
-lib/sh/eaccess.c
-       - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX
-         translation, use a dynamically-allocated buffer that we keep
-         resizing.  Fixes potential security hole reported by David Leverton
-         <levertond@googlemail.com>
-
-                                   6/5
-                                   ---
-braces.c
-       - expand_seqterm: check errno == ERANGE after calling strtoimax for
-         rhs and incr.  Part of a set of fixes from Scott McMillan
-         <scotty.mcmillan@gmail.com>
-       - expand_seqterm: incr now of type `intmax_t', which changes
-         arguments to mkseq
-       - mkseq: a better fix for detecting overflow and underflow since it's
-         undefined in C and compilers `optimize' out overflow checks.  Uses
-         ADDOVERFLOW and SUBOVERFLOW macros
-       - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t
-         variables
-       - mkseq: don't allow incr to be converted to -INTMAX_MIN
-       - mkseq: make sure that strvec_create isn't called with a size argument
-         greater than INT_MAX, since it only takes an int
-
-                                   6/6
-                                   ---
-braces.c
-       - mkseq: try and be smarter about not overallocating elements in
-         the return array if the increment is not 1 or -1
-
-                                   6/7
-                                   ---
-parse.y
-       - history_delimiting_chars: if the parser says we're in the middle of
-         a compound assignment (PST_COMPASSIGN), just return a space to avoid
-         adding a stray semicolon to the history entry.  Fixes bug reported
-         by "Davide Brini" <dave_br@gmx.com>
-
-                                   6/8
-                                   ---
-bashline.c
-       - bash_directory_completion_hook: don't attempt spelling correction
-         on the directory name unless the direxpand option is set and we are
-         going to replace the directory name with the corrected one in the
-         readline line.  Suggested by Linda Walsh <bash@tlinx.org>
-
-lib/sh/shquote.c
-       - sh_backslash_quote: now takes a third argument: flags.  If non-zero,
-         tildes are not backslash-escaped.  Have to handle both printf %q,
-         where they should be escaped, and filename completion, where they
-         should not when used as usernames
-
-externs.h
-       - sh_backslash_quote: declaration now takes a third argument
-
-builtins/printf.def
-       - printf_builtin: call sh_backslash_quote with 1 as third argument
-         so tildes get escaped
-
-{bashline,bracecomp}.c
-       - call sh_backslash_quote with 0 as third argument so tildes are not
-         escaped in completed words
-
-doc/bash.1
-       - add `coproc' to the list of reserved words.  From a report by
-         Jens Schweikhardt <schweikh@schweikhardt.net>
-
-                                  6/10
-                                  ----
-execute_cmd.c
-       - line_number_for_err_trap: now global, so parse_and_execute can save
-         and restore it with unwind-protect
-
-builtins/evalstring.c
-       - parse_prologue: save and restore line_number_for_err_trap along
-         with line_number
-       - restore_lastcom: new function, unwind-protect to restore
-         the_printed_command_except_trap
-       - parse_prologue: use restore_lastcom to save and restore the value
-         of the_printed_command_except_trap around calls to parse_and_execute
-         (eval/source/.)
-
-                                  6/15
-                                  ----
-lib/readline/complete.c
-       - complete_fncmp: change filename comparison code to understand
-         multibyte characters, even when doing case-sensitive or case-mapping
-         comparisons.  Fixes problem reported by Nikolay Shirokovskiy
-         <nshyrokovskiy@gmail.com>
-
-                                  6/20
-                                  ----
-builtins/mapfile.def
-       - mapfile: move the line count increment and check for having read
-         the specified number of lines to the end of the loop to avoid
-         reading an additional line with zgetline.  Fixes bug reported by
-         Dan Douglas <ormaaj@gmail.com>
-
-                                  6/21
-                                  ----
-
-execute_cmd.c
-       - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on
-         all systems, since it's tested later in the function.  Fixes bug
-         reported by John E. Malmberg <wb8tyw@qsl.net>
-
-                                  6/22
-                                  ----
-mailcheck.c
-       - file_mod_date_changed: return 0 right away if mailstat() does not
-         return success.  Fixes bug with using uninitialized values reported
-         by szymon.kalasz@uj.edu.pl
-
-builtins/set.def
-       - the `monitor' option is not available when the shell is compiled
-         without job control, since the underlying `m' flag is not available
-
-nojobs.c
-       - job_control: now declared as int variable, initialized to 0, never
-         modified
-
-jobs.h
-       - job_control: extern declaration no longer dependent on JOB_CONTROL
-
-execute_cmd.c
-       - execute_pipeline: made necessary changes so `lastpipe' shell option
-         is now available in all shells, even those compiled without
-         JOB_CONTROL defined
-
-                                  6/23
-                                  ----
-lib/glob/glob.c
-       - glob_filename: check for interrupts before returning if glob_vector
-         returns NULL or an error.  Bug reported by Serge van den Boom
-         <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
-       - call run_pending_traps after each call to QUIT or test of
-         interrupt_state, like we do in mainline shell code
-       - glob_vector: don't call QUIT; in `if (lose)' code block; just free
-         memory, return NULL, and let callers deal with interrupt_state or
-         other signals and traps
-
-                                  6/25
-                                  ----
-lib/readline/input.c
-       - rl_read_key: restructure the loop that calls the event hook a little,
-         so that the hook is called only after rl_gather_tyi returns no input,
-         and any pending input is returned first.  This results in better
-         efficiency for processing pending input without calling the hook
-         on every input character as bash-4.1 did.  From a report from
-         Max Horn <max@quendi.de>
-
-                                  6/26
-                                  ----
-trap.c
-       - signal_is_pending: return TRUE if SIG argument has been received and
-         a trap is waiting to execute
-
-trap.h
-       - signal_is_pending: extern declaration
-
-lib/glob/glob.c
-       - glob_vector: check for pending SIGINT trap each time through the loop,
-         just like we check for interrupt_state or terminating_signal, and
-         set `lose = 1' so we clean up after ourselves and interrupt the
-         operation before running the trap.  This may require a change later,
-         maybe call run_pending_traps and do that if run_pending_traps returns?
-
-variables.c
-       - sv_histtimefmt: set history_comment_character to default (`#') if
-         it's 0 when we're turning on history timestamps.  The history code
-         uses the history comment character to prefix timestamps, and
-         leaving it at 0 effectively removes them from the history.  From a
-         report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
-
-                                  6/27
-                                  ----
-lib/readline/signals.c
-       - rl_maybe_restore_sighandler: new function, sets handler for SIG to
-         HANDLER->sa_handler only if it's not SIG_IGN.  Needs to be called
-         on same signals set using rl_maybe_set_sighandler, which does not
-         override an existing SIG_IGN handler (SIGALRM is ok since it does
-         the check inline; doesn't mess with SIGWINCH)
-
-                                  6/30
-                                  ----
-variables.h
-       - additional defines for the new `nameref' variable attribute
-         (att_nameref): nameref_p, nameref_cell, var_setref
-
-variables.c
-       - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs
-       - find_variable_last_nameref: resolve variable NAME until last in a
-         chain of possibly more than one nameref starting at shell_variables
-       - find_global_variable_last_nameref: resolve variable NAME until last
-         in a chain of possibly more than one nameref starting at
-         global_variables
-       - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs        
-         in a specific variable context (usually a local variable hash table)
-       - find_variable_nameref_context: resolve SHELL_VAR V through chain of
-         namerefs following a chain of varible contexts
-       - find_variable_last_nameref_context: resolve SHELL_VAR V as in
-         find_variable_last_context, but return the final nameref instead of
-         what the final nameref resolves to
-       - find_variable_tempenv, find_variable_notempenv, find_global_variable,
-         find_shell_variable, find_variable: modified to follow namerefs
-       - find_global_variable_noref: look up a global variable without following
-         any namerefs
-       - find_variable_noref: look up a shell variable without following any
-         namerefs
-       - bind_variable_internal: modify to follow a chain of namerefs in the
-         global variables table; change to handle assignments to a nameref by
-         following nameref chain
-       - bind_variable: modify to follow chain of namerefs when binding to a
-         local variable
-       - unbind_variable: changes to unset nameref variables (unsets both
-         nameref and variable it resolves to)
-
-subst.c
-       - parameter_brace_expand_word: change to handle expanding nameref whose
-         value is x[n]
-       - parameter_brace_expand_indir: change to expand in ksh93-compatible
-         way if variable to be indirected is nameref and a simple (non-array)
-         expansion
-       - param_expand: change to expand $foo where foo is a nameref whose value
-         is x[n]
-
-execute_cmd.c
-       - execute_for_command: changes to implement ksh93 semantics when index
-         variable is a nameref
-
-builtins/setattr.def
-       - show_var_attributes: change to add `n' to flags list if att_nameref
-         is set
-
-builtins/set.def
-       - unset_builtin: changes to error messages to follow nameref variables
-
-builtins/declare.def
-       - document new -n option
-       - declare_internal: new `-n' and `+n' options
-       - declare_internal: handle declare -n var[=value] and
-         declare +n var[=value] for existing and non-existant variables.
-         Enforce restriction that nameref variables cannot be arrays.
-         Implement semi-peculiar ksh93 semantics for typeset +n ref=value
-
-                                   7/5
-                                   ---
-variables.c
-       - unbind_variable: unset whatever a nameref resolves to, leaving the
-         nameref variable itself alone
-       - unbind_nameref: new function, unsets a nameref variable, not the
-         variable it references
-
-variables.h
-       - unbind_nameref: extern declaration
-
-builtins/set.def
-       - unset_builtin: modify to add -n option, which calls unbind_nameref
-         leaving unbind_variable for the usual case.  This required slight
-         changes and additions to the test suite
-
-doc/{bash.1,bashref.texi}
-       - document namerefs and typeset/declare/local/unset -n
-
-                                  7/13
-                                  ----
-lib/sh/casemod.c
-       - include shmbchar.h for is_basic and supporting pieces
-       - sh_casemod: use _to_wupper and _to_wlower to convert wide character
-         case instead of TOUPPER and TOLOWER.  Fixes bug reported by
-         Dennis Williamson <dennistwilliamson@gmail.com>, fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-       - cval: short-circuit and return ascii value if is_basic tests true
-       - sh_casemod: short-circuit and use non-multibyte case modification
-         and toggling code if is_basic tests true
-
-lib/readline/signals.c
-       - _rl_{block,release}_sigint: remove the code that actually blocks and
-         releases the signals, since we defer signal handling until calls to
-         RL_CHECK_SIGNALS()
-
-lib/readline/{callback,readline,util}.c
-       - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
-         saving and restoring the signal mask instead of setjmp/longjmp
-
-lib/readline/rltty.c
-       - prepare_terminal_settings: don't mess with IXOFF setting if
-         USE_XON_XOFF defined
-
-doc/{bash.1,bashref.texi}
-       - add some text to the description of set -e clarifying its effect
-         on shell functions and shell function execution.  Suggested by
-         Rainer Blome <rainer.blome@gmx.de>
-
-bashline.c
-       - edit_and_execute_command: increment current_command_line_count before
-         adding partial line to command history (for command-oriented-history
-         because of rl_newline at beginning of function), then reset it to 0
-         before adding the dummy history entry to make sure the dummy entry
-         doesn't get added to previous incomplete command.  Partial fix for
-         problem reported by Peng Yu <pengyu.ut@gmail.com>
-
-                                  7/24
-                                  ----
-configure.in
-       - interix: define RECYCLES_PIDS.  Based on a report from Michael
-         Haubenwallner <michael.haubenwallner@salomon.at>
-
-                                  7/26
-                                  ----
-jobs.c
-       - make_child: call bgp_delete on the newly-created pid unconditionally.
-         Some systems reuse pids before cycling through an entire set of
-         CHILD_MAX/_SC_CHILD_MAX unique pids.  This is no longer dependent
-         on RECYCLES_PIDS.  Based on a report from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-support/shobj-conf
-       - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
-         can finally kill Panther
-
-                                  7/28
-                                  ----
-subst.c
-       - command_substitute: make sure last_made_pid gets reset if make_child
-         fails
-
-execute_cmd.c
-       - execute_command_internal: case cm_simple: decide whether or not to
-         wait_for a child if already_making_children is non-zero, indicates
-         that there is an unwaited-for child.  More of fix for bug report
-         from Michael Haubenwallner <michael.haubenwallner@salomon.at>
-
-jobs.c
-       - make_child: call delete_old_job (new_pid) unconditionally, don't
-         bother to check whether or not pid wrap occurred.  Rest of fix for
-         bug report from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-                                  7/29
-                                  ----
-shell.c
-       - subshell_exit: new function, exits the shell (via call to sh_exit())
-         after calling any defined exit trap
-
-externs.h
-       - subshell_exit: new extern declaration
-
-execute_cmd.c
-       - execute_command_internal: make sure to call subshell_exit for
-         {} group commands executed asynchronously (&).  Part of fix for
-         EXIT trap bug reported by Maarten Billemont <lhunath@lyndir.com>
-
-sig.c
-       - reset_terminating_signals: make sure to set termsigs_initialized back
-         to 0, so a subsequent call to initialize_terminating_signals works
-         right.  Rest of fix for bug reported by Maarten Billemont
-         <lhunath@lyndir.com>
-
-{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c
-builtins/{cd,fc,pushd,ulimit}.def
-lib/malloc/getpagesize.h
-lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c
-       - make inclusion of <sys/param.h> dependent on HAVE_SYS_PARAM_H
-         consistently
-
-                                   8/6
-                                   ---
-lib/readline/histexpand.c
-       - history_expand_internal: now takes an additional argument saying
-         whether the history expansion occurs within a quoted string, set to
-         the open quote character
-       - history_expand_internal: use new argument instead of checking prev
-         char and initializing quoted_search_delimiter, pass qc directly to
-         get_history_event, where it allows a matching quote to terminate a
-         string defining an event
-       - history_expand: change single-quote handling code so that if
-         history_quotes_inhibit_expansion is 0, single quotes are treated
-         like double quotes
-       - history_expand: change call to history_expand_internal to pass new
-         argument of `"' if double-quoted string, `'' if single-quoted string;
-         this lets history_expand decide what is a quoted string and what
-         is not
-
-                                   8/7
-                                   ---
-configure.in
-       - AC_CANONICAL_BUILD: invoke for later use
-
-lib/readline/macro.c
-       - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
-         backs up the index into the current macro by 1
-
-lib/readline/rlprivate.h
-       - _rl_prev_macro_key: extern declaration
-
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char
-         if we're currently reading from a macro; call _rl_prev_macro_key
-         instead.  Fixes bug reported by Clark Wang <clark.wang@oracle.com>
-
-                                  8/13
-                                  ----
-builtins/evalstring.c
-       - evalstring(): new function, wrapper around parse_and_execute.
-         make sure we handle cases where parse_and_execute can call `return'
-         and short-circuit without cleaning up properly.  We call
-         parse_and_execute_cleanup() then jump to the previous-saved return
-         location
-
-builtins/common.h
-       - extern declaration for evalstring()
-
-builtins/eval.def
-       - eval_builtin: make sure we handle `eval " ... return"' in contexts
-         where `return' is valid by calling evalstring().  Fixes bug with
-         `eval return' in sourced files reported by Clark Wang
-         <dearvoid@gmail.com>
-
-trap.c
-       - run_pending_traps: call evalstring instead of parse_and_execute.
-         XXX - still needs to handle saving and restoring token state in the
-         presence of `return'; could use unwind_protects for that
-
-builtins/mapfile.def
-       - run_callback: call evalstring instead of parse_and_execute
-
-                                  8/15
-                                  ----
-bashline.c
-       - bash_filename_stat_hook: make sure we don't free local_dirname
-         before using it to canonicalize any expanded filename.  Make sure
-         it always points to *dirname and only free it if we're replacing
-         it.
-
-lib/readline/complete.c
-       - append_to_match: make sure we call rl_filename_stat_hook with
-         newly-allocated memory to avoid problems with freeing it twice
-
-                                  8/17
-                                  ----
-variables.c,config-top.h
-       - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the
-         code that allows indexed arrays to be exported is enabled and
-         included
-
-                                  8/19
-                                  ----
-shell.c
-       - call start_debugger from main() only if dollar_vars[1] != 0 (close
-         enough to a non-interactive shell, since we can be interactive with
-         -i while running a shell script).  Fixes oddity reported by
-         Techlive Zheng <techlivezheng@gmail.com>
-
-                                  8/20
-                                  ----
-arrayfunc.c
-       - quote_array_assignment_chars: don't bother quoting if the word has
-         not been marked as an assignment (W_ASSIGNMENT)
-       - quote_array_assignment_chars: turn on W_NOGLOB in the word flags
-         so assignment statements don't undergo globbing.  Partial fix for
-         problems reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  8/21
-                                  ----
-command.h
-       - W_NOBRACE: new word flag that means to inhibit brace expansion
-
-subst.c
-       - brace_expand_word_list: suppress brace expansion for words with
-         W_NOBRACE flag
-
-                                  8/22
-                                  ----
-builtins/read.def
-       - read_builtin: don't call dequote_string on what we've read, even if
-         we saw an escape character, unless (input_string && *input_string).
-         We may have escaped an IFS whitespace character.  Fixes seg fault
-         reported by <armandsl@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: set the_printed_command_except trap when
-         about to execute a ( ... ) user subshell.  For now, set it only if
-         ERR is trapped; can relax that later.  Fixes bug reported by
-         Mike Frysinger <vapier@gentoo.org>
-
-                                  8/23
-                                  ----
-jobs.c
-       - remove references to first_pid and pid_wrap, since we're not using
-         them for anything anymore
-
-                                  8/24
-                                  ----
-subst.c
-       - changes for W_NOBRACE everywhere appropriate: so it can be displayed
-         for debugging, and passed out of expand_word_internal
-
-doc/{bash.1,bashref.texi}
-       - small changes to make it clearer that the = and == operators are
-         equivalent, and will cause pattern matching when used with [[.
-         From a question from Michal Soltys <soltys@ziu.info>
-
-doc/bashref.texi
-       - some small formatting changes from Karl Berry <karl@freefriends.org>
-
-                                  8/27
-                                  ----
-lib/readline/doc/{history,rlman,rluserman}.texi
-       - some small formatting changes from Karl Berry <karl@freefriends.org>
-
-arrayfunc.c
-       - assign_array_element_internal, assign_compound_array_list,
-         unbind_array_element, array_value_internal: changes to make
-         assignment statements to negative indices (a[-1]=2) and unsetting
-         array elements using negative indices (unset 'a[-1]') work.
-         From suggestions by Dennis Williamson <dennistwilliamson@gmail.com>
-         and Chris F. A. Johnson <chris@cfajohnson.com>
-
-subst.c
-       - array_length_reference: changes to make length references to array
-         elements using negative indices (${#a[-1]}) work
-
-                                  8/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - document new treatment of negative indices to indexed arrays when
-         assigning, referencing, calculating length, and unsetting
-
-                                  8/29
-                                  ----
-shell.c
-       - show_shell_usage: add -l to list of shell invocation options (short
-         for --login).  From Red Hat bug 852469
-
-configure.ac
-       - renamed from configure.in, as latest autoconf versions want.  Patches
-         Stefano Lattarini <stefano.lattarini@gmail.com>
-
-MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
-       - configure.in -> configure.ac
-
-                                   9/1
-                                   ---
-
-parse.y
-       - read_token_word: allow words like {array[ind]} to be valid redirection
-         words for constructs like {x}<file
-
-redir.c
-       - redir_varassign: bind_var_to_int already handles array assignments,
-         so don't need to do anything more for things like {a[i]}<file
-       - redir_varvalue: changes to allow references to {a[i]} when
-         performing redirections using valid_array_reference and
-         get_array_value.  Adds functionality requested most recently by
-         <unknown@vmw-les.eng.vmware.com>
-
-lib/readline/display.c
-       - update_line: if the first difference between the old and new lines
-         is completely before any invisible characters in the prompt, we
-         should not adjust _rl_last_c_pos, since it's before any invisible
-         characters.  Fixed in two places
-       - prompt_modechar: return a character indicating the editing mode:
-         emacs (@), vi command (:), or vi insert (+)
-       - _rl_reset_prompt: new function, just calls rl_expand_prompt.  Will be
-         inlined, placeholder for more changes
-       - expand_prompt: if show-mode-in-prompt is enabled, add a character to
-         the front of the prompt indicating the editing mode, adjusting the
-         various variables as appropriate to keep track of the number of
-         visible characters and number of screen positions
-
-lib/readline/bind.c
-       - show-mode-in-prompt: new bindable boolean variable, shadowed by
-         _rl_show_mode_in_prompt variable
-       - hack_special_boolean_var: call _rl_reset_prompt when toggling or
-         setting show-mode-in-prompt
-
-lib/readline/readline.c
-       - readline_internal_setup: make sure the correct vi mode keymap is set
-         before expanding the prompt string for the first time
-
-lib/readline/misc.c
-       - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
-         showing the editing mode in the prompt
-
-lib/readline/rlprivate.h
-       - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
-
-lib/readline/vi_mode.c
-       - rl_vi_insertion_mode: call _rl_reset_prompt
-       - rl_vi_movement_mode: call _rl_reset_prompt.  Finishes changes for
-         showing mode in prompt string, originally requested by Miroslav
-         Koskar <mkoskar@gmail.com> and most recently by Jordan Michael
-         Ziegler <jziegler@bnl.gov>
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - document new show-mode-in-prompt variable, off by default
-
-                                   9/3
-                                   ---
-
-jobs.c
-       - set_childmax: new function, external mechanism for other parts of
-         the shell to set js.c_childmax, the number of saved exited child
-         statuses to remember
-jobs.h
-       - set_childmax: extern declaration
-
-variables.c
-       - CHILD_MAX: new special variable, with sv_childmax function to
-         run when it changes.  Setting CHILD_MAX to a value greater than
-         zero but less than some maximum (currently 8192) sets the number of
-         exited child statuses to remember.  set_childmax (jobs.c) ensures
-         that the number does not drop below the posix-mandated minimum
-         (CHILD_MAX)
-
-doc/{bash.1,bashref.texi}
-       - CHILD_MAX: document new meaning and action when variable is set
-
-                                   9/5
-                                   ---
-redir.c
-       - redir_varassign: call stupidly_hack_special_variables after
-         assigning fd number to specified variable, so we can use constructs
-         like {BASH_XTRACEFD}>foo.  Suggested by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-                                   9/8
-                                   ---
-expr.c
-       - readtok: invalidate previous contents of `curlval' before freeing
-         and reallocating tokstr (which, chances are, will get the same
-         pointer as before and render curlval inconsistent).  Fixes other
-         bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                   9/9
-                                   ---
-lib/readline/complete.c
-       - rl_username_completion_function: protect call to setpwent() with
-         #ifdef (HAVE_GETPWENT)/#endif.  Fixes bug reported by
-         Gerd Hofmann <gerd.hofmann.nbg@googlemail.com>
-
-lib/readline/display.c
-       - rl_message: second and subsequent calls to rl_message can result in
-         local_prompt being overwritten with new values (e.g., from the
-         successive calls displaying the incremental search string).  Need
-         to free before overwriting if it's not the same as the value saved
-         in saved_local_prompt.  Fixes memory leak reported by
-         Wouter Vermaelen <vermaelen.wouter@gmail.com>
-
-lib/readline/{terminal.c,rlprivate.h}
-       - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from
-         terminal.c to rlprivate.h so other files can use them
-
-expr.c
-       - expr_streval: if noeval is non-zero, just return 0 right away,
-         short-circuiting evaluation completely.  readtok will leave curtok
-         set correctly without re-entering the evaluator at all.  Rest of
-         fix for bug reported by Dan Douglas <ormaaj@gmail.com>
-
-                                  9/11
-                                  ----
-
-parse.y
-       - parse_comsub: make sure the `reserved word ok in this context' flag
-         is preserved after we read `do' followed by whitespace.  Fixes bug
-         reported by Benoit Vaugon <benoit.vaugon@gmail.com>
-
-                                  9/13
-                                  ----
-configure.ac,config.h.in
-       - enable-direxpand-default: new configure option, turns the `direxpand'
-         shell option on by default
-
-bashline.c
-       - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
-         DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
-
-doc/bashref.texi
-       - enable-direxpand-default: document new configure option
-
-                                  9/14
-                                  ----
-shell.c
-       - --protected: make option valid only when wordexp is compiled into
-         the shell.  Fix from Roman Rakus <rrakus@redhat.com>
-
-configure.ac
-       - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
-         Joachim Schmitz <jojo@schmitz-digital.de>
-
-                                  9/16
-                                  ----
-subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
-       - minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
-
-lib/readline/colors.h
-       - workaround for HP NonStop compiler issue with <stdbool.h> from
-         Joachim Schmitz <jojo@schmitz-digital.de>
-
-                                  9/17
-                                  ----
-builtins/printf.def
-       - printf_builtin: handle localtime returning NULL, as can happen when
-         encountering overflow.  Bug report and initial fix from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - emphasize that brace expansion using character ranges ({a..c}) acts
-         as if the C locale were in use.  Prompted by message from
-         Marcel Giannelia <info@skeena.net>
-
-                                  9/20
-                                  ----
-lib/sh/wcsnwidth.c
-       - wcsnwidth: new function, variant of wcwidth, returns the number of
-         wide characters from a string that will be displayed to not exceed
-         a specified max column position
-
-                                  9/21
-                                  ----
-builtins/help.def
-       - show_builtin_command_help: break code that displays the short-doc
-         for each builtin in two columns into a new function: dispcolumn
-       - wdispcolumn: multibyte-char version of dispcolumn; uses wide
-         chars and printf "%ls" format.  Fixes problem reported by
-         Nguyá»n Thái Ngá»c Duy <pclouds@gmail.com>
-
-                                  9/22
-                                  ----
-execute_cmd.c
-       - execute_disk_command: before running the command-not-found hook,
-         call kill_current_pipeline() to make sure we don't add processes
-         to an existing pipeline or wait for processes erroneously
-
-                                  9/23
-                                  ----
-lib/readline/input.c
-       - rl_input_available_hook: new hook function, called from
-         _rl_input_available (or _rl_input_queued) to return whether or not
-         input is available wherever the input source is
-
-lib/readline/doc/rltech.texi
-       - rl_input_available_hook: document
-
-                                  9/27
-                                  ----
-lib/glob/sm_loop.c:
-       - GMATCH: after one or more `*', an instance of ?(x) can match zero or
-         1 times (unlike ?, which has to match one character).  The old code
-         failed if it didn't match at least once.  Fixes `a*?(x)' bug.
-       - GMATCH: if we hit the end of the search string, but not the end of
-         the pattern, and the rest of the pattern is something that can
-         match the NUL at the end of the search string, we should successfully
-         match.  Fixes `a*!(x)' bug reported by <hans1worst@gmail.com>
-
-                                  10/2
-                                  ----
-command.h
-       - add c_lock member to coproc structure for future use to tell who is
-         manipulating it
-
-execute_cmd.c
-       - execute_coproc: block SIGCHLD while parent is forking coproc
-         process and adding pid to sh_coproc struct to avoid race condition
-         where child is reaped before the pid is assigned and the coproc is
-         never marked as having died.  Fixes race condition identified by
-         Davide Baldini <baldiniebaldini@gmail.com>
-       - add assignments to c_lock member of struct coproc in various
-         functions that manipulate it; was used to identify race condition
-       - coproc_pidchk: don't call coproc_dispose to avoid using malloc and
-         other functions in a signal handler context
-       - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while
-         manipulating the sh_coproc struct
-
-                                  10/6
-                                  ----
-lib/readline/complete.c
-       - rl_display_match_list: if printing completions horizontally, don't
-         bother with spacing calculations if limit == 1, which means we are
-         printing one completion per line no matter what.  Fixes bug
-         reported by David Kaasen <kaasen@nvg.ntnu.no>
-
-                                  10/7
-                                  ----
-builtins/declare.def
-       - declare_internal: add error checking for nameref attribute and
-         variable assignments: self-references, attempts to make an array
-         variable a nameref
-
-subst.c
-       - parameter_brace_expand: handle parameter_brace_expand_word returning
-         &expand_param_fatal or &expand_param_error and return the appropriate
-         error value
-       - parameter_brace_expand_word: if a nameref variable's value is not a
-         valid identifier, return an error
-       - param_expand: if a nameref variable's value is not a valid identifier,
-         return an error
-
-test.c
-       - unary_operator: add new -R variable, returns true if variable is set
-         and has the nameref attribute. From ksh93
-
-builtins/test.def
-       - add -R to description of conditional commands for help test
-
-doc/{bash.1,bashref.texi}
-       - document new -R unary conditional operator
-
-                                  10/13
-                                  -----
-trap.c
-       - check_signals_and_traps: new function, convenience function for the
-         rest of the shell to check for pending terminating and interrupt
-         signals, and to check for and process any pending traps
-       - any_signals_trapped: new function, returns non-zero if any signals
-         are trapped and -1 if not
-
-trap.h
-       - extern declaration for check_signals_and_traps
-
-bashline.c
-       - bashline_reset: make sure we reset the event hook
-       - bash_event_hook: call check_signals_and_traps instead of just
-         checking for terminating signals so we can run pending traps and
-         react to interrupts, and reset the event hook when we're done
-
-
-                                  10/14
-                                  -----
-trap.c
-       - trap_handler: if executing in a readline signal handler context,
-         call bashline_set_event_hook to install bash_event_hook to process
-         the signal (if bash cares about it)
-
-sig.c
-       - sigint_sighandler: call bashline_set_event_hook to set the event
-         hook if we're executing in a readline signal handler context
-
-lib/readline/input.c
-       - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught
-         signal is SIGINT or SIGQUIT rather than waiting until the next time
-         around the loop
-       - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow
-         an application signal handler to set the event hook in its own
-         signal handler (e.g., like bash trap_handler or sigint_sighandler)
-
-
-parse.y
-       - yy_readline_get: don't set interrupt_immediately before we call
-         readline().  Inspired by report from lanshun zhou
-         <zls.sogou@gmail.com>
-
-input.c
-       - getc_with_restart: add call to run_pending_traps after call to
-         CHECK_TERMSIG
-
-lib/sh/zread.c
-       - zread: call check_signals_and_traps if read() returns -1/EINTR
-         instead of just ignoring the EINTR and deferring handling any
-         signal that generated it
-
-builtins/mapfile.def
-       - mapfile: don't set interrupt_immediately before calling zgetline()
-         (which uses zread internally)
-
-builtins/read.def
-       - read_builtin: don't set interrupt_immediately before calling zread
-         (moved code around so that it was only being set right around calls
-         to zread to avoid signal handler conflicts).  Inspired by report
-         from lanshun zhou <zls.sogou@gmail.com>
-       - edit_line: don't set interrupt_immediately around call to readline()
-       - include shmbutil.h
-       - read_builtin: don't call read_mbchar unless is_basic(c) returns
-         false for the character we just read
-
-                                  10/15
-                                  -----
-sig.c
-       - throw_to_top_level: if interrupt_state is non-zero, make sure that
-         last_command_exit_value reflects 128+SIGINT if it's not already
-         greater than 128
-
-                                  10/20
-                                  -----
-builtins/wait.def
-       - WAIT_RETURN: set wait_signal_received back to 0 for the potential
-         next call to wait
-
-quit.h
-       - CHECK_WAIT_INTR: macro to check whether trap_handler handled a
-         signal and set wait_signal_received; longjmp to wait_intr_buf in
-         that case
-
-jobs.c
-       - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call
-         CHECK_TERMSIG to check for terminating signals
-       - wait_sigint_handler: don't longjmp out of the wait builtin unless
-         interrupt_immediately is set; otherwise just SIGRETURN from the
-         handler
-       - wait_sigint_handler: if interrupt_immediately not set, but we are
-         executing in the wait builtin and SIGINT is not trapped, treat it
-         as a `normally received' SIGINT: restore the signal handler and
-         send SIGINT to ourselves
-       - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp
-         to wait_intr_buf (and let wait be interrupted) if we're running from
-         a signal handler.  Wait for CHECK_WAIT_INTR to do the longjmp.
-         run_pending_traps will run the SIGCHLD trap later
-
-nojobs.c
-       - reap_zombie_children, wait_for_single_pid, wait_for: call
-         CHECK_WAIT_INTR where we call CHECK_TERMSIG
-       - wait_sigint_handler: don't longjmp out of the wait builtin unless
-         interrupt_immediately is set; otherwise just SIGRETURN from the
-         handler
-
-trap.c
-       - trap_handler: make sure wait_signal_received is set if the wait
-         builtin is executing, and only longjmp if interrupt_immediately is
-         set.  This whole set of fixes was prompted by report from
-         lanshun zhou <zls.sogou@gmail.com>
-
-                                  10/24
-                                  -----
-lib/glob/glob.c
-       - glob_filename: only check directory_name for globbing chars if
-         it's of non-zero length
-
-lib/sh/strchrnul.c
-       - new simpler implementation
-
-subst.c
-       - command_substitute: call set_shellopts after turning off errexit
-         in subshells so it's reflected in $SHELLOPTS
-
-                                  11/7
-                                  ----
-builtins/evalstring.c
-       - parse_and_execute: treat ERREXIT case like reader_loop does: set
-         variable_context to 0 before longjmping back to top_level. Don't
-         run the unwind-protect context to avoid side effects from popping
-         function contexts.  Part of fix for problem reported by Nikolai
-         Kondrashov <nikolai.kondrashov@redhat.com>
-
-execute_cmd.c
-       - execute_simple_command: call unlink_fifo_list only if this is the
-         last element of a pipeline (or not in a pipeline), rather than for
-         every child.  Fixes difference in behavior between /dev/fd and
-         FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
-       - execute_null_command: do the same thing in the parent branch after
-         make_child
-
-                                  11/14
-                                  -----
-subst.c
-       - parameter_brace_expand: a variable is null if it's special ($@, $*),
-         the expansion occurs within double quotes, and the expansion turns
-         into a quoted null.  Fixes debian bug 692447 reported by
-         Matrosov Dmitriy <sgf.dma@gmail.com>
-
-jobs.c
-       - run_sigchld_trap: make sure `running_trap' sentinel is set
-         appropriately
-       - waitchld: only run the sigchld trap if we're not in a signal
-         handler, not running a trap, and executing the wait builtin.
-         Otherwise, queue for later handling.  We still run one instance
-         of the trap handler per exited child.  Bulk of fix for bug
-         reported by Elliott Forney <idfah@cs.colostate.edu>
-
-trap.c
-       - queue_sigchld_trap: set catch_flag so run_pending_traps notices,
-         and set trapped_signal_received for completeness.  Rest of fix
-         for bug reported by Elliott Forney <idfah@cs.colostate.edu>
-
-lib/malloc/malloc.c
-       - block_signals: renamed to _malloc_block_signals, made public
-       - unblock_signals: renamed to _malloc_unblock_signals, made public
-
-lib/malloc/imalloc.h
-       - extern declarations for _malloc_{un,}block_signals
-
-lib/malloc/table.c
-       - mregister_alloc, mregister_free: block signals around table
-         manipulation
-
-                                  11/15
-                                  -----
-trap.c
-       - run_pending_traps: set SIG_INPROGRESS flag around calls to
-         run_sigchld_handler so other parts of the shell know that the
-         SIGCHLD trap handler is executing
-       - run_pending_traps: if we get a situation where we are looking at
-         running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
-         and the SIG_INPROGRESS flag is set, just skip it.  This is possible
-         if run_pending_traps is called from a SIGCHLD trap handler run by
-         run_sigchld_trap
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - corrected description of the effect of `set history-size 0'.  Report
-         from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
-
-include/stdc.h
-       - CPP_STRING: new define, replaces __STRING
-
-lib/malloc/{malloc.c,imalloc.h}
-       - replace __STRING with CPP_STRING
-
-                                  11/16
-                                  -----
-lib/readline/bind.c
-       - sv_histsize: if argument evaluates to a value < 0, unstifle the
-         history
-
-                                  11/22
-                                  -----
-redir.c
-       - do_redirection_internal: if we have REDIR_VARASSIGN set in the
-         redirection flags and we set up `redirector' using fcntl or dup2,
-         don't add a redirect to make sure it stays open.  Let the
-         script programmer manage the file handle.  Fixes bug reported by
-         Sam Liddicott <sam@liddicott.com>
-
-                                  11/24
-                                  -----
-jobs.c
-       - wait_for_any_job: new function, waits for an unspecified background
-         job to exit and returns its exit status.  Returns -1 on no background
-         jobs or no children or other errors.  Calls wait_for with new
-         sentinel value ANY_PID
-       - wait_for: changes to handle argument of ANY_PID: don't look up or
-         try to modify the child struct, only go through the wait loop once.
-         Return -1 if waitpid returns no children
-
-jobs.h
-       - ANY_PID: new define
-
-builtins/wait.def
-       - new option: -n. Means to wait for the next job and return its exit
-         status.  Returns 127 if there are no background jobs (or no
-         children).  Feature most recently requested by Elliott Forney
-         <idfah@cs.colostate.edu>
-
-doc/{bash.1,bashref.texi}
-       - document new `wait -n' option
-
-execute_cmd.c
-       - execute_command_internal: save make_command_string () result in a
-         temp variable before calling savestring() on it; avoids evaluating
-         make_command_string() result twice.  Fix from John E. Malmberg
-         <wb8tyw@qsl.net>
-
-                                  11/28
-                                  -----
-
-builtins/declare.def
-       - declare_internal: if an array variable is declared using `declare -a'
-         or `declare -A', but not assigned a value, set the `invisible'
-         attribute so the variable does not show up as set.  Fix for bug
-         about variable initialization reported by Tim Friske <me@timfriske.com>
-
-builtins/{mapfile,read}.def
-       - after calling find_or_make_array_variable, make sure the invisible
-         flag is turned off, in case the variable was declared previously
-         using `declare -a' or `declare -A'.  Side effect of above change to
-         declare_internal
-
-subst.c
-       - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into
-         the list of options passed to make_internal_declare as appropriate.
-         Fix for bug reported by Tim Friske <me@timfriske.com>
-
-                                  11/30
-                                  -----
-test.c
-       - unary_op: make sure -v and -n check that the variable is not marked
-         as invisible before calling var_isset.  Fix for bug reported by Tim
-         Friske <me@timfriske.com>
-
-                                  12/2
-                                  ----
-subst.c
-       - process_substitute: turn off the `expanding_redir' flag, which
-         controls whether or not variables.c:find_variable_internal uses the
-         temporary environment to find variables.  We want to use the
-         temp environment, since we don't have to worry about order of
-         evaluation in a subshell.  Fixes bug reported by Andrey Borzenkov
-         <arvidjaar@gmail.com>
-
-                                  12/4
-                                  ----
-lib/glob/glob.c
-       - glob_filename: changes to avoid null filenames and multiple entries
-         returned for patterns like **/** (globstar enabled).  Fixes bug
-         reported by Ulf Magnusson <ulfalizer@gmail.com>
-
-                                  12/10
-                                  -----
-lib/glob/glob.c
-       - glob_filename: finish up a series of changes to make globstar-style   
-         globbing more efficient, avoid more duplicate filenames, and be more
-         compatible with other shells that implement it
-               o collapse a sequence of **/**/** to one **
-               o note when the directory name is all ** or ends in ** so we
-                 can treat it specially when the filename is **
-         All inspired by report from Andrey Borzenkov <arvidjaar@gmail.com>
-
-lib/sh/zread.c
-       - zreadn: new function, like zread, but takes an additional argument
-         saying how many bytes to read into the local buffer.  Can be used to
-         implement `read -N' without so many one-byte calls to zreadc.  Code
-         from Mike Frysinger <vapier@gentoo.org>
-
-                                  12/12
-                                  -----
-lib/glob/sm_loop.c
-       - PATSCAN (glob_patscan): if passed string already points to end of
-         pattern, return NULL immediately.  Fixes problem with
-         extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
-
-                                  12/13
-                                  -----
-execute_cmd.c
-       - execute_coproc: handle the command's exit status being inverted
-         (an oversight).  Fixes bug reported by DJ Mills
-         <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
-
-                                  12/14
-                                  -----
-lib/readline/readline.c
-       - bind_arrow_keys_internal: add MINGW key bindings for Home, End,
-         Delete, and Insert keys.  Fix from Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-builtins/printf.def
-       - printf_builtin: '%()T' conversion: if there is no argument supplied,
-         behave as if -1 had been supplied (current time).  ksh93-like feature
-         suggested by Clark Wang <dearvoid@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - document new printf %()T default argument behavior
-
-                                  12/15
-                                  -----
-lib/readline/display.c
-       - displaying_prompt_first_line: new variable, indicates whether or
-         not the first line of output is displaying the prompt.  Always true
-         in normal mode, sometimes false in horizontal scrolling mode
-       - rl_redisplay: set displaying_prompt_first_line to true unless we
-         are in horizontal mode; set to false in horizontal mode if the left
-         margin of the displayed line is greater than the end of the prompt
-         string
-       - rl_redisplay: when in horizontal scroll mode, don't adjust
-         _rl_last_c_pos by the wrap offset unless the line is displaying
-         a prompt containing invisible chars
-       - update line: don't adjust _rl_last_c_pos by the wrap offset unless
-         the line is displaying a prompt containing invisible chars
-       - update_line: if shrinking the line by reducing the number of
-         displayed characters, but we have already moved the cursor to the
-         beginning of the line where the first difference starts, don't
-         try to delete characters
-
-builtins/read.def
-       - unbuffered_read: set to 2 if invoked as `read -N'
-       - if unbuffered_read is set to 2, compute the number of chars we
-         need to read and read that many with zreadn.  Posix mode still
-         uses zreadintr.  Code from Mike Frysinger <vapier@gentoo.org>
-
-doc/{bash.1,bashref.texi}
-       - read: make it clear that if read times out, it saves any input
-         read to that point into the variable arguments.  Report from
-         Fiedler Roman <Roman.Fiedler@ait.ac.at>
-
-subst.c
-       - command_substitute: change direct assignment of exit_immediately_on_error
-         to use change_flag ('e', FLAG_OFF) instead
-
-flags.c
-       - use errexit_flag as the variable modified by changes to the -e
-         option, reflect those changes to exit_immediately_on_error
-
-execute_cmd.c
-       - execute_builtin: new global variable, builtin_ignoring_errexit, set
-         to 0 by default and set to 1 if eval/source/command executing in a
-         context where -e should be ignored
-       - execute_builtin: set exit_immediately_on_error to errextit_flag
-         after executing eval/source/command in a context where -e should
-         be ignored
-
-flags.c
-       - if builtin_ignoring_errexit is set, changes to errexit_flag are
-         not reflected in the setting of exit_immediately_on_error.  Fixes
-         bug reported by Robert Schiele <rschiele@gmail.com>
-
-                                  12/23
-                                  -----
-include/posixjmp.h
-       - setjmp_nosigs: new define, call setjmp in such a way that it will
-         not manipulate the signal mask
-
-{expr,test,trap}.c
-       - setjmp_nosigs: call instead of setjmp; don't need to manipulate
-         signal mask
-
-builtins/read.def
-       - read_builtin: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-
-builtins/evalstring.c:
-       - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-       - parse_string: setjmp_nosigs: call instead of setjmp; don't need
-         to manipulate signal mask
-       - parse_and_execute: save and restore the signal mask if we get a
-         longjmp that doesn't cause us to return or exit (case DISCARD)
-
-                                  12/24
-                                  -----
-general.c
-       - bash_tilde_expand: only set interrupt_immediately if there are no
-         signals trapped; we want to jump to top level if interrupted but
-         not run any trap commands
-
-                                  12/25
-                                  -----
-jobs.c
-       - run_sigchld_trap: no longer set interrupt_immediately before calling
-         parse_and_execute, even if this is no longer run in a signal handler
-         context
-
-input.c
-       - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
-
-parse.y
-       - yy_stream_get: now that getc_with_restart calls QUIT, don't need to
-         set interrupt_immediately (already had call to run_pending_traps)
-
-execute_cmd.c
-       - execute_subshell_builtin_or_function,execute_function,execute_in_subshell:
-         setjmp_nosigs: call instead of setjmp when saving return_catch; don't
-         need to manipulate signal mask
-       - execute_subshell_builtin_or_function,execute_in_subshell:
-         setjmp_nosigs: call instead of setjmp where appropriate when saving
-         top_level; don't need to manipulate signal mask if we're going to
-         exit right away
-
-subst.c
-       - command_substitute: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-       - command_substitute: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-
-trap.c
-       - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-       - run_exit_trap: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-       - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-builtins/evalfile.c
-       - _evalfile: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-builtins/evalstring.c
-       - evalstring: setjmp_nosigs: call instead of setjmp when saving
-         return_catch; don't need to manipulate signal mask
-
-shell.c
-       - main: setjmp_nosigs: call instead of setjmp where appropriate when
-         saving top_level; don't need to manipulate signal mask if we're
-         going to exit right away
-       - run_one_command: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-       - run_wordexp: setjmp_nosigs: call instead of setjmp where
-         appropriate when saving top_level; don't need to manipulate signal
-         mask if we're going to exit right away
-
-eval.c
-       - reader_loop: save and restore the signal mask if we get a longjmp
-         that doesn't cause us to return or exit (case DISCARD)
-
-                                  12/26
-                                  -----
-parse.y
-       - shell_input_line_{index,size,len}: now of type size_t; in some cases
-         the unsigned property makes a difference
-       - STRING_SAVER: saved_line_{size,index} now of type size_t
-       - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
-         lines longer than that are truncated until read sees a newline;
-         addresses theoretical buffer overflow described by Paul Eggert
-         <eggert@cs.ucla.edu>
-       - set_line_mbstate: size_t changes like shell_getc
-       - shell_getc: if shell_input_line is larger than 32K, free it and
-         start over to avoid large memory allocations sticking around
-
-variables.c
-       - bind_global_variable: new function, binds value to a variable in
-         the global shell_variables table
-
-variables.h
-       - bind_global_variable: new extern declaration
-
-builtins/declare.def
-       - declare_internal: if -g given with name=value, but variable is not
-         found in the global variable table, make sure to call
-         bind_global_variable so the variable is created and modified at
-         global scope.  Fixes a bug where declare -g x=y could modify `x'
-         at a previous function scope
-
-command.h
-       - W_ASSIGNARRAY: new word flag, compound indexed array assignment
-
-subst.h
-       - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
-         a function context, used by declare -g
-
-execute_cmd.c
-       - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
-         declaration builtin
-
-subst.c
-       - do_assignment_internal: explicitly handle case where we are
-         executing in a function and we want to create a global array or
-         assoc variable
-       - shell_expand_word_list: call make_internal_declare if -a option
-         given to declaration builtin (W_ASSIGNARRAY); handle -g option with
-         it (W_ASSNGLOBAL).  Fixes inconsistency noticed by Vicente Couce
-         Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
-         array variable foo at previous function scope, not global scope
-
-                                  12/27
-                                  -----
-bashline.c
-       - Minix needs the third argument to tputs to be a void funtion taking
-         an int argument, not an int-returning function.  Fix from
-         John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
-
-                                  12/29
-                                  -----
-configure.ac,version.c,patchlevel.h
-       - bash-4.3-devel: new version, new shell compatibility level (43)
-
-subst.c
-       - parameter_brace_patsub: put the bash-4.2 code back in from the
-         change of 3/3 that runs the replacement string through quote
-         removal, make it dependent on shell_compatibility_level <= 42
-
-builtins/shopt.def
-       - compat42: new shopt option
-       - set_compatibility_level: change logic to set and unset various
-         compat variables and shell_compatibility_level
-
-COMPAT
-       - new documentation for bash-4.3 compatibility changes
-
-doc/{bash.1,bashref.texi}
-       - compat42: document new shopt option
-
-builtins/shopt.def
-       - set_compatibility_opts: new function, sets the various shopt
-         compat variables based on the value of shell_compatibility_level
-
-builtins/common.h
-       - set_compatibility_opts: new extern declaration
-
-variables.c
-       - BASH_COMPAT: new special variable; sets the shell compatibility
-         level.  Accepts values in decimal (4.2) or integer (42) form;
-         Unsetting variable, setting it to empty string, or setting it to
-         out-of-range value sets the shell's compatibility level to the
-         default for the current version.  Valid values are 3.1/31 through
-         the current version
-       - sv_shcompat: new function implementing logic for BASH_COMPAT
-
-variables.h
-       - sv_shcompat: new extern declaration
-
-doc/{bash.1,bashref.texi}
-       - BASH_COMPAT: description of new variable
-
-lib/readline/complete.c
-       - _rl_colored_stats: default back to 0 for 4.3 release branch
-
-                                1/5/2013
-                                --------
-quit.h
-       - remove spurious call to itrace in CHECK_WAIT_INTR
-
-bashline.c
-       - bash_event_hook: if we're going to jump to top_level, make sure we
-         clean up after readline() by calling rl_cleanup_after_signal().
-         Fixes bug reported against devel branch by Raphaël Droz
-         <raphael.droz@gmail.com>
-       - bash_event_hook: reset the event hook before checking for signals
-         or traps in case we longjmp
-
-doc/{bash.1,bashref.texi}
-       - small additions to the set -e section to make it more clear that
-         contexts where -e is ignored extend to compound commands as well
-         as shell functions
-
-lib/readline/readline.h
-       - rl_signal_event_hook: new extern declaration
-
-lib/readline/input.c
-       - rl_signal_event_hook: new variable, hook function to call when a
-         function (currently just read(2)) is interrupted by a signal and
-         not restarted
-       - rl_getc: call rl_signal_event_hook instead of rl_event_hook
-
-lib/readline/doc/rltech.texi
-       - rl_signal_event_hook: document new function
-
-bashline.c
-       - changes to set rl_signal_event_hook instead of rl_event_hook
-
-lib/readline/readline.h
-       - change readline version numbers to 6.3
-
-                                   1/6
-                                   ---
-doc/{bash.1,bashref.texi}
-       - a couple of changes to the descriptions of the ERR trap and its
-         effects based on a message from Rob Nagler <nagler@bivio.biz>
-
-                                   1/9
-                                   ---
-expr.c
-       - expassign: invalidate curlval before freeing and NULLing tokstr to
-         avoid aliasing issues.  Fixes bug reported by Eduardo A. Bustamante
-         López<dualbus@gmail.com>  and Dan Douglas <ormaaj@gmail.com>
-
-braces.c
-       - array_concat: don't be so aggressive in trying to short-circuit. We
-         can only short-circuit if we have a single-element array where the
-         element is an empty string (array[0] == "" array[1] = 0x0).  Existing
-         practice requires us to replicate arrays and prefix or append empty
-         strings.  Fixes bug reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                  1/11
-                                  ----
-execute_cmd.c
-       - execute_builtin: since mapfile uses evalstring() to run its callbacks
-         internally, just like eval, so it needs to handle the case where the
-         temp environment given to mapfile persists throughout the entire
-         set of callback commands.  This might be a problem with trap also, but
-         trap isn't run in the same way.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                  1/13
-                                  ----
-redir.c
-       - redirection_error: before expanding the redirection word (if
-         expandable_redirection_filename returns true), disable command
-         substitution during expansion.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-subst.c
-       - expand_word_internal: case '\\': if the next character is an IFS
-         character, and the expansion occurs within double quotes, and the
-         character is not one for which backslash retains its meaning, add
-         the (escaped) '\' and the (escaped) character.  Fixes bug reported
-         by Dan Douglas <ormaaj@gmail.com>
-
-                                  1/15
-                                  ----
-builtins/cd.def
-       - cd_builtin: make sure call to internal_getopt handles -e option.
-         Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
-
-                                  1/17
-                                  ----
-subst.c
-       - expand_word_list_internal: make sure tempenv_assign_error is
-         initialized to 0
-
-execute_cmd.c
-       - execute_simple_command: make sure tempenv_assign_error is reset to 0
-         after it's tested to see if an error should force the shell to exit.
-         Fixes problem where a the failure of a tempenv assignment preceding
-         a non-special builtin `sticks' and causes the next special builtin
-         to exit the shell.  From a discussion on bug-bash started by
-         douxin <wq-doux@cn.fujitsu.com>
-
-                                  1/20
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: call stupidly_hack_special_variables
-         after assigning with ${param[:]=word} even if IFS is changing.
-         Suggested by Dan Douglas <ormaaj@gmail.com> [TENTATIVE, needs work
-         on IFS side effects]
-
-command.h
-       - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
-         yet)
-
-{execute_cmd,subst,variables}.c
-       - removed all code that mentioned W_GLOBEXP
-       - removed mention of gnu_argv_flags and code that set it
-
-                                  1/22
-                                  ----
-subst.c
-       - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and
-         IFS is unset or null so we can be sure to split this on spaces
-         no matter what happens with IFS later
-       - expand_word_internal: note that param_expand returns W_SPLITSPACE
-         in the returned word flags and keep track of that state with
-         `split_on_spaces'
-
-                                  1/23
-                                  ----
-subst.c
-       - expand_word_internal: if split_on_spaces is non-zero, make sure
-         we split `istring' on spaces and return the resultant word.  The
-         previous expansions should have quoted spaces in the positional
-         parameters where necessary.  Suggested by Dan Douglas
-         <ormaaj@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: make sure any subshell forked to run a
-         group command or user subshell at the end of a pipeline runs any
-         EXIT trap it sets.  Fixes debian bash bug 698411
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
-
-subst.c
-       - shell_expand_word_list: fix code that creates args for and calls
-         make_internal_declare to avoid calling it twice (missing `else'
-         in 12/26 change)
-       - do_assignment_internal: fix code from 12/26 change to fix problem
-         where an existing assoc variable could be converted to an array
-         without checking `mkassoc'
-
-                                  1/24
-                                  ----
-builtins/evalfile.c
-       - _evalfile: add missing `close (fd)' calls before returning to
-         avoid fd leaks.  Bug and fix from Roman Rakus <rrakus@redhat.com>
-
-                                  1/25
-                                  ----
-builtins/read.def
-       - read_builtin: don't try to play tricks with the top of the unwind-
-         protect stack after read gets a SIGALRM; save input_string to new
-         memory, run the stack, then restore input_string and assign the
-         variables.  Part of fix for bug reported by konsolebox
-         <konsolebox@gmail.com>; the rest of the fix is with the changes in
-         trap and signal handling and doing away with interrupt_immediately
-
-                                  1/26
-                                  ----
-redir.c
-       - redirection_expand, write_here_string, write_here_document: before
-         calling any of the word expansion functions, after setting
-         expanding_redir to 1 (which bypasses the temp environment in the
-         variable lookup functions), call sv_ifs to reset the cached IFS-
-         related variables set by subst.c:setifs().  This ensures that
-         redirections will not get any IFS values that are set in the
-         temporary environment, as Posix specifies.  Then, after the word
-         expansions, after resetting expanding_redir to 0, call sv_ifs
-         again to make sure the cached IFS values are set from any
-         assignments in the temporary environment.  We force executing_builtin
-         to 1 to `fool' the variable lookup functions into using any temp
-         environment, then reset it to its old value after sv_ifs returns.
-         This is what allows read() to use the (cached) IFS variables set
-         in the temp environment. Fixes inconsistency reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                  1/29
-                                  ----
-lib/readline/display.c
-       - update_line: fix off-by-one error when updating vis_lbreaks array
-         in a multibyte locale that occurs when moving multibyte chars from
-         one line down to another.  Bug report and fix from Egmont
-         Koblinger <egmont@gmail.com>
-
-                                  1/30
-                                  ----
-configure.ac
-       - changed version to 4.3-alpha
-
-redir.c
-       - redir_open: handle open returning -1/EINTR, which seems to happen
-         a lot with FIFOs and SIGCHLD, and call QUIT to handle other
-         signals that can interrupt open(2).  Bug report and initial fix
-         from Mike Frysinger <vapier@gentoo.org>
-
-                                  1/31
-                                  ----
-subst.c
-       - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
-         to parameter_brace_expand_word
-       - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
-         is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
-         include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
-         what we do for $@ and $*.  Fixes inconsistency reported by Dan
-         Douglas <ormaaj@gmail.com>
-
-configure.ac
-       - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
-         will find $host-prefixed versions of utilities.  Report and fix from
-         Mike Frysinger <vapier@gentoo.org>
-
-builtins/setattr.def
-       - set_var_attribute: check whether bind_variable (called when the
-         variable whose attributes are being modified is found in the temp
-         environment) just modified a read-only global variable, and don't
-         bother marking the temporary variable for propagation if so.  The
-         propagation is superfluous and will result in a strange error
-         message
-
-                                   2/2
-                                   ---
-variables.c
-       - initialize_shell_variables: don't try to import function definitions
-         with invalid names from the environment if already in posix mode,
-         but create them as (invisible) exported variables so they pass
-         through the environment.  Print an error message so user knows
-         what's wrong.  Fixes bug reported by Tomas Trnka <ttrnka@mail.muni.cz>
-
-                                   2/9
-                                   ---
-
-builtins/read.def
-       - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
-         can use them
-       - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
-         longjmp without manipulating signal mask, leaving SIGALRM blocked
-
-quit.h
-       - move CHECK_ALRM macro here from builtins/read.def so trap.c:
-         check_signals() can call it
-
-trap.c
-       - check_signals: add call to CHECK_ALRM before QUIT
-       - check_signals_and_traps: call check_signals() instead of including
-         CHECK_ALRM and QUIT inline.  Integrating check for read builtin's
-         SIGALRM (where zread call to check_signals_and_traps can see it)
-         fixes problem reported by Mike Frysinger <vapier@gentoo.org>
-
-                                  2/12
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - xdupmbstowcs2: fixed but where end of string was not handled
-         correctly, causing loop to go past end of string in a bunch of cases.
-         Fixes bug reported by "Dashing" <dashing@hushmail.com>
-
-
-                                  2/13
-                                  ----
-builtins/pushd.def
-       - popd_builtin: treat any argument that isn't -n or of the form
-         [-+][[:digit:]]* as an error.  Fixes problem reported by Bruce
-         Korb <bruce.korb@gmail.com>
-
-                                  2/14
-                                  ----
-configure.ac
-       - add check for sig_atomic_t; already a placeholder for it in
-         config.h.in
-
-                                  2/15
-                                  ----
-subst.c
-       - do_compound_assignment: don't call assign_compound_array_list with
-         a NULL variable in case make_local_xxx_variable returns NULL
-         (it will if you try to shadow a readonly or noassign variable).
-         Fixes bug reported by Richard Tollerton <rich.tollerton@ni.com>
-
-                                  2/16
-                                  ----
-variables.c
-       - make_local_variable: print error messager if an attempt is made to
-         create a local variable shadowing a `noassign' variable.  Previously
-         we just silently refused to do it
-
-trap.[ch]
-       - get_original_signal: now global so rest of the shell can use it
-
-sig.c
-       - initialize_shell_signals: install a signal handler for SIGTERM
-         that does nothing except set a sigterm_received flag instead of
-         ignoring it with SIG_IGN, as long as SIGTERM is not ignored when
-         the shell is started.  Use get_original_signal early to get the
-         original handler, since we will do that later anyway
-       - set_signal_handler: if installing sigterm_sighandler as the SIGTERM
-         handler, make sure to add SA_RESTART flag to make it as close to
-         SIG_IGN as possible
-
-sig.h
-       - sigterm_sighandler: new extern declaration
-
-quit.h
-       - RESET_SIGTERM: set sigterm_receved to 0
-       - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it
-         as a fatal signal and call termsig_handler to exit the shell
-
-jobs.c
-       - make_child: call RESET_SIGTERM just before fork() so we can detect
-         if the child process received a SIGTERM before it's able to change
-         the signal handler back to what it was when the shell started
-         (presumably SIG_DFL).  Only has effect if the shell installed
-         sigterm_sighandler for SIGTERM, interactive shells that were not
-         started with SIG_IGN as the SIGTERM handler
-       - make_child: call RESET_SIGTERM in the parent after fork() so the
-         rest of the shell won't react to it
-
-execute_cmd.c
-       - execute_simple_command: call CHECK_SIGTERM after make_child in child
-         to catch SIGTERM received after fork() and before restoring old
-         signal handlers
-       - execute_disk_command: call CHECK_SIGTERM after make_child in child
-         process after restoring old signal handlers and again just before
-         calling shell_execve.  Fixes race condition observed by
-         Padraig Brady <p@draigbrady.com> when testing with his `timeout'
-         program
-
-lib/readline/display.c
-       - open_some_spaces: new function, subset of insert_some_chars that just
-         opens up a specified number of spaces to be overwritten
-       - insert_some_spaces: now just calls to open_some_spaces followed by
-         _rl_output_some_chars
-       - update_line: use col_temp instead of recalculating it using
-         _rl_col_width in the case where we use more columns with fewer bytes
-       - update_line: use open_some_spaces and then output the right number
-         of chars instead of trying to print new characters then overwrite
-         existing characters in two separate calls.  This includes removing
-         some dodgy code and making things simpler.  Fix from Egmont
-         Koblinger <egmont@gmail.com>
-       - use new variable `bytes_to_insert' instead of overloading temp in
-         some code blocks (nls - nfd, bytes that comprise the characters
-         different in the new line from the old)
-
-                                  2/18
-                                  ----
-redir.c
-       - do_redirection_internal: add undoable redirection for the implicit
-         close performed by the <&n- and >&n- redirections.  Fixes bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  2/19
-                                  ----
-sig.c
-       - termsig_handler: an interactive shell killed by SIGHUP and keeping
-         command history will try to save the shell history before exiting.
-         This is an attempt to preserve the save-history-when-the-terminal-
-         window-is-closed behavior
-
-                                  2/21
-                                  ----
-braces.c
-       - brace_expand: if a sequence expansion fails (e.g. because the
-         integers overflow), treat that expansion as a simple string, including
-         the braces, and try to process any remainder of the string.  The
-         remainder may include brace expansions.  Derived from SuSE bug
-         804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551)
-
-                                  2/23
-                                  ----
-{quit,sig}.h,sig.c
-       - sigterm_received declaration now in sig.h; type is sig_atomic_t
-       - sigwinch_received type now sig_atomic_t
-       - sig.h includes bashtypes.h and <signal.h> if SIG_DFL not defined
-         (same logic as trap.h) to pick up sig_atomic_t
-
-unwind_prot.c
-       - include sig.h before quit.h (reverse order)
-
-                                  2/27
-                                  ----
-builtins/shopt.def
-       - reset_shopt_options: make sure check_window_size is reset to the
-         default from config.h, not unconditionally to 0
-
-jobs.[ch]
-       - last_made_pid, last_asynchronous_pid: now volatile.  Change from SuSE
-
-jobs.c
-       - wait_for: if we're using sigaction to install a handler for SIGCHLD,
-         make sure we specify SA_RESTART
-
-lib/{tilde,readline}/shell.c
-       - get_home_dir: instead of looking in the password file every time,
-         look once and cache the result
-
-sig.[ch]
-       - sigwinch_received, sigterm_received: now `volatile' qualified
-
-sig.c,quit.h
-       - interrupt_state,terminating_signal: now sig_atomic_t
-
-                                   3/1
-                                   ---
-MANIFEST,examples/*
-       - removed around 120 files without FSF copyrights; requested by
-         Karl Berry in early January
-
-                                   3/2
-                                   ---
-lib/malloc/malloc.c
-       - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
-
-doc/bashref.texi
-       - Fixed most of the examples in the GNU Parallel section to use better
-         shell idioms following complaints on bug-bash; added a couple of
-         examples and smoothed out the text
-
-quit.h
-       - include "sig.h" for sig_atomic_t
-
-lib/readline/display.c
-       - update_line: when inserting one or more characters at the end of
-         the display line in a non-multibyte environment, just write from the
-         first difference to the end of the line and return. We don't have
-         to adjust _rl_last_c_pos.  This is needed to adjust from the old
-         two-part copy to a single call to _rl_output_some_chars (change of
-         2/16)
-
-                                   3/4
-                                   ---
-Makefile.in,doc/Makefile.in
-       - PACKAGE_TARNAME, docdir: new variables substituted by autoconf
-       - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
-         documentation files to be installed into $(docdir)
-       - install: add new rule to install $(OTHER_DOCS)
-       - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)
-
-doc/bash.1
-       - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
-         section in --posix and set -o posix descriptions
-
-examples/
-       - removed around 110 examples at the request of the FSF due to copyright
-         issues
-
-                                   3/5
-                                   ---
-builtins/setattr.def
-       - readonly: modified help text slightly to make it clearer that
-         functions aren't changed or displayed unless the -f option is given.
-         Report from <gotmynick@gmail.com>
-
-                                   3/9
-                                   ---
-include/typemax.h
-       - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
-
-parse.y
-       - include "typemax.h" for possible SIZE_MAX definition, make sure we
-         include it after shell.h
-
-{braces,expr}.c
-       - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
-
-                                  3/10
-                                  ----
-bashline.c
-       - bash_default_completion: make sure completion type of `!' (same as
-         TAB but with show-all-if-ambiguous set) and glob-word-completion
-         sets rl_filename_completion_desired to 0 so extra backslashes don't
-         get inserted by `quoting' the completion.  We can't kill all the
-         matches because show-all-if-ambiguous needs them.   Bug report from
-         Marcel (Felix) Giannelia <info@skeena.net>
-
-[bash-4.3-alpha frozen]
-
-                                  3/14
-                                  ----
-general.c
-       - trim_pathname: use memmove instead of memcpy since the source and
-         destination pathnames may overlap.  Report and fix from Matthew
-         Riley <mattdr@google.com>
-
-                                  3/18
-                                  ----
-configure.ac
-       - socklen_t is defined as `unsigned int' if configure can't find it
-
-                                  3/20
-                                  ----
-lib/readline/complete.c
-       - S_ISVTX: since it's not defined on all platforms (Minix), make sure
-         its use is protected with #ifdef
-
-                                  3/21
-                                  ----
-doc/{bash.1,bashref.texi}
-       - Added mention of ${!name[@]} and ${!name[*]} expansions to get all
-         indices of an array.  Suggested by Jonathan Leffler
-         <jonathan.leffler@gmail.com>
-
-                                  3/24
-                                  ----
-subst.h
-       - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
-         single quotes (for now) will be treated as ordinary characters
-
-subst.c
-       - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
-
-                                  3/25
-                                  ----
-support/config.{guess,sub}
-       - updated to versions from autoconf-2.69
-
-                                  3/31
-                                  ----
-lib/sh/shquote.c
-       - sh_single_quote: short-circuit quoting a single "'" instead of
-         creating a long string with empty single-quoted strings
-
-parser.h
-       - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single-
-         quote results of $'...' expansion because quote removal will be
-         done later.  Right now this is only done for ${word/pat/rep}
-
-parse.y
-       - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern
-         substitution word expansion so we don't treat single quote specially
-         in the pattern or replacement string
-       - parse_matched_pair: if we're parsing a dollar-brace word expansion
-         (${...}) and we're not treating single quote specially within
-         double quotes, single-quote the translation of $'...' ansi-c
-         escaped strings.  Original report and fix from Eduardo A.
-         Bustamante López <dualbus@gmail.com>
-
-subst.c
-       - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the
-         DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat
-         single quotes specially within a double-quoted string
-
-execute_cmd.c
-       - fix_assignment_words: skip over assignment statements preceding a
-         command word before trying to figure out whether or not assignment
-         statements following a possible declaration command should be 
-         treated specially.  Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                   4/4
-                                   ---
-lib/readline/readline.c
-       - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether
-         the key is a text modification command) if the key sequence length
-         is 1.  That keeps the arrow keys from setting the last command
-         when called in vi command mode.  Fixes bug reported by Ian A.
-         Watson <watson_ian_a@lilly.com>
-
-                                   4/6
-                                   ---
-lib/readline/bind.c
-       - rl_parse_and_bind: when parsing a double-quoted string as the value
-         of a variable, make sure we skip past the leading double quote.
-         Fix from Andreas Schwab <schwab@linux-m68k.org>
-
-variables.c
-       - hash_lookup: set new local variable last_table_searched to the table
-         a successful lookup appears in; tested in make_local_variable to
-         solve the problem below
-       - make_local_variable: if we find a variable with the tempenv flag
-         set at the same `level' as variable_context', but not found in the
-         temporary_env (temp environment preceding the builtin), return it.
-         The temp environment preceding the function call has already been
-         merged (in execute_function) into the list of variable contexts the
-         function sees as shell_variables by the time this is called.  Fixes
-         inconsistency pointed out by Dan Douglas <ormaaj@gmail.com>
-
-subst.c
-       - expand_arith_string: expanded out contents of expand_string,
-         expand_string_internal, expand_string_if_necessary to create a
-         WORD_DESC and call call_expand_word_internal() on it directly.
-         We don't want process substitution to be performed ( 1<(2) ) should
-         mean something different in an arithmetic expression context.
-         It doesn't work to just turn on the DQUOTE flag, since that means
-         that things like ${x["expression"]} are not expanded correctly.
-         Fixes problem pointed out by Dan Douglas <ormaaj@gmail.com>
-
-                                  4/13
-                                  ----
-subst.c
-       - process_substitute: run the EXIT trap before exiting, as other
-         shells seem to.  Fixes problem pointed out by Dan Douglas
-         <ormaaj@gmail.com>
-
-lib/readline/readline.c
-       - readline_internal_setup: call rl_vi_insertion_mode to enter vi
-         mode instead of rl_vi_insert_mode to avoid resetting the saved last
-         command information.  Posix says that `.' can repeat a command
-         that was entered on a previous line so we need to save the info.
-         Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
-
-                                  4/14
-                                  ----
-lib/readline/complete.c
-       - rl_completion_matches: make sure xrealloc returns something non-null
-         (can happen when interrupted by a signal) before trying to add
-         matches to match_list
-
-subst.c
-       - array_remove_pattern: return NULL right away if array_variable_part
-         returns an invisible variable
-       - array_length_reference: handle array_variable_part returning an
-         invisible variable
-       - get_var_and_type: handle array_variable_part returning an invisible
-         variable
-
-                                  4/15
-                                  ----
-execute_cmd.c
-       - execute_command_internal: make sure to run the EXIT trap for group
-         commands anywhere in pipelines, not just at the end.  From a point
-         raised by Andreas Schwab <schwab@linux-m68k.org>
-
-variables.c
-       - bind_int_variable: make sure invisible flag is unset.  Fixes problems
-         like "declare -ai a; : $(( a[4]=4 ));"
-
-arrayfunc.c
-       - array_variable_part: return variable even if invisible flag set,
-         callers must handle invisible vars
-
-                                  4/18
-                                  ----
-builtins/set.def
-       - unset_builtin: if -n flag given, call unset_nameref instead of
-         unset_variable
-
-variables.c
-       - find_variable_nameref: print warning message if nameref circular
-         reference detected, return NULL and let caller deal with it
-
-builtins/declare.def
-       - declare_builtin: only disallow global references at this point if
-         we are at the global scope
-
-                                  5/16
-                                  ----
-configure.ac
-       - update release status to beta
-
-                                  5/23
-                                  ----
-trap.c
-       - run_pending_traps: save and restore pipeline around calls to
-         evalstring() in case we get a trap while running a trap. Have to
-         figure out the recursive running traps issue elsewhere.  Fixes
-         bug reported by Roman Rakus <rrakus@redhat.com>
-       - run_pending_traps: make sure to set running_trap to the appropriate
-         signal value when running a trap command
-       - run_pending_traps: short-circuit immediately if running_trap set
-         when invoked.  Could change this later to only skip if it would
-         run the same trap as currently being run (running_trap == sig + 1)
-
-configure.ac
-       - add warning if bison not found
-
-lib/readline/doc/rltech.texi
-       - new section with an example program illustrating the callback
-         interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
-
-examples/loadables/Makefile.in
-       - remove references to `cut' and `getconf', which were removed in
-         early March
-
-                                  5/28
-                                  ----
-lib/sh/pathphys.c
-       - sh_realpath: correct inverted two arguments to call to sh_makepath.
-         Report and fix from Julien Thomas <jthomas@exosec.fr>
-
-                                   6/7
-                                   ---
-execute_cmd.c
-       - executing_line_number: the else clauses that are conditional on
-         various options being defined can simply be if clauses -- they are
-         mutually exclusive and all have `return' in the body.  Fixes bug
-         reported by Flavio Medeiros <flaviomotamedeiros@gmail.com>
-
-                                  6/25
-                                  ----
-lib/readline/readline.c
-       - readline_internal_setup: only sent the meta-key enable string to the
-         terminal if we've been told to use one and the terminal has been
-         successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0).
-         Suggested by Dan Mick <dan.mick@inktank.com>
-
-lib/readline/signals.c
-       - _rl_signal_handler: call any defined signal hook after calling
-         rl_resize_terminal when handling a SIGWINCH.  We already have called
-         the original SIGWINCH handler but will not be resending the signal
-         to ourselves
-
-                                  6/27
-                                  ----
-lib/readline/doc/history.3, doc/bash.1
-       - fix description of the `$' modifier to note that it expands to the
-         last *word*, which is not always the last argument.  Report from
-         ariyetz@gmail.com via gnu.org RT
-
-                                  6/29
-                                  ----
-lib/glob/smatch.c
-       - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
-         of 0 (0 if not defined)
-
-configure.ac,config.h.in
-       - --enable-glob-asciiranges-default: new option, controls the value of
-         GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
-         by default
-
-doc/bashref.texi
-       - document new --enable-glob-asciiranges-default configure option
-
-variables.c
-       - assign_in_env: implement += value appending semantics for assignments
-         preceding command names
-
-                                   7/4
-                                   ---
-expr.c
-       - set lasttok = NUM in all of the functions that result in a number,
-         even if it's a boolean, to avoid errors with constructs like
-         1 * x = 1, which should be an asignment error.  Fixes problem
-         pointed out by Dan Douglas <ormaaj@gmail.com>
-
-parse.y
-       - decode_prompt_string: don't bother to call strcpy if
-         polite_directory_format returns its argument unchanged.  It's not
-         necessary and Mac OS X 10.9 aborts because of a supposed overlapping
-         string copy.  Bug and fix from simon@hitzemann.org
-
-subst.c
-       - parameter_brace_find_indir: new function, code from
-         parameter_brace_expand_indir that looks up the indirectly-referenced
-         variable, but does not expand it
-       - parameter_brace_expand_indir: call parameter_brace_find_indir to
-         look up indirected variable reference
-       - get_var_and_type: call parameter_brace_find_indir if it looks like we
-         are trying to manipulate an indirect variable reference like
-         ${!b%%foo}.  This makes a difference if !b references an array
-         variable.  Bug report from Dan Douglas <ormaaj@gmail.com>
-
-                                   7/6
-                                   ---
-lib/sh/casemod.c
-       - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX,
-         since cval can convert something to a wchar_t greater than UCHAR_MAX.
-         Fixes bug reported by Tomasz Tomasik <scx.mail@gmail.com>
-
-                                   7/8
-                                   ---
-lib/readline/history.c
-       - add_history_time: if history_length == 0, referencing history_length
-         - 1 will result in an array bounds error, so make history_length be
-         at least 1 before going on.  Fixes bug reported by Geng Sheng Liu
-         <gsliu.tju@gmail.com>
-
-builtins/setattr.def
-       - show_func_attributes: display definition (if NODEFS argument is 0) and
-         attributes for a particular function; used by `declare -fp name'
-
-builtins/declare.def
-       - declare_internal: call show_func_attributes if -f supplied with -p.
-         Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
-
-builtins/common.h
-       - new extern declaration for show_func_attributes
-
-builtins/read.def
-       - read_builtin: check the first supplied variable name for validity
-         before attempting to read any input, since we know we will have to
-         at least use that one.  Don't check any other names yet.  Suggested
-         by jidanni@jidanni.org
-
-                                  7/10
-                                  ----
-redir.c
-       - do_redirection_internal: when closing a file descriptor with
-         r_close_this ([n]<&-) count close errors as redirection errors if
-         errno ends up as EIO or ENOSPC.  Originally reported back in April
-         2012 by Andrey Zaitsev <jstcdr@gmail.com>
-
-                                  7/11
-                                  ----
-redir.c
-       - do_redirection_internal: before calling check_bash_input, make sure
-         that we don't call check_bash_input for an asynchronous process that
-         is replacing stdin with something else. The seek backwards affects
-         the parent process as well, since parents and children share the
-         file pointer. Fixes problem originally reported in March 2013 by
-         Martin Jackson <mjackson220.list@gmail.com>
-
-                                  7/13
-                                  ----
-doc/{bash.1,bashref.texi}
-       - slight change to add a description of `shopt -o' suggested by Bruce
-         Korb <bruce.korb@gmail.com>
-
-                                  7/19
-                                  ----
-lib/readline/histfile.c
-       - history_do_write: if close returns < 0, make sure we restore the
-         backup history file and return a non-zero value
-       - history_truncate_file: if write or close return < 0, make sure we
-         return a non-zero value
-
-[bash-4.3-beta frozen]
-
-                                  7/21
-                                  ----
-lib/readline/isearch.c
-       - rl_display_search: now takes an entire search context flags word as
-         the second argument, instead of just reverse flag; changed callers
-       - rl_display_search: if the search has failed, add `failed ' to the
-         beginning of the search prompt
-       - _rl_isearch_dispatch: if the search has failed, display the entire
-         search string with an indication that the search failed but with the
-         last matching line.  Suggested by jidanni@jidanni.org
-
-command.h
-       - W_ASSIGNINT: new word flag; used internally for make_internal_declare
-         and set by fix_assignment_words
-
-execute_cmd.c
-       - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
-         given as option.  We don't do anything with the value yet
-
-subst.c
-       - shell_expand_word_list: rework the way the option list that is
-         passed to make_internal_declare is created
-
-                                   8/1
-                                   ---
-doc/{bash.1,bashref.texi}
-       - minor changes to description of $! based on a report from Chris
-         Down <chris@chrisdown.name>
-
-arrayfunc.c
-       - assign_array_element_internal: before trying to get an array's max
-         index to process a negative subscript, make sure the array exists.
-         Bug report from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/2
-                                   ---
-arrayfunc.c
-       - assign_array_element_internal: before using array_max_index() when
-         processing a negative subscript, make sure the variable is an array.
-         if it's not, use 0 as array_max_index assuming it's a string.
-         Fixes bug report from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/3
-                                   ---
-Makefile.in
-       - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
-         Curtis Doty <curtis@greenkey.net>
-
-                                   8/5
-                                   ---
-lib/glob/sm_loop.c
-       - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
-         pattern and string (pe - p  and se - s, respectively) are not equal
-       - strcompare: don't bother trying to set *pe or *se to '\0' if that's
-         what they already are.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-                                   8/6
-                                   ---
-doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
-       - minor typo changes from Geir Hauge <geir.hauge@gmail.com>
-
-bultins/help.def
-       - show_longdoc: avoid trying to translate the empty string because it
-         often translates to some boilerplate about the project and
-         translation.  Report and fix from Geir Hauge <geir.hauge@gmail.com>
-
-                                   8/8
-                                   ---
-builtins/help.def
-       - help_builtin: try two passes through the list of help topics for each
-         argument: one doing exact string matching and one, if the first pass
-         fails to find a match, doing string prefix matching like previous
-         versions.  This prevents `help read' from matching both `read' and
-         `readonly', but allows `help r' to match everything beginning with
-         `r'.  Inspired by report from Geir Hauge <geir.hauge@gmail.com>
-
-                                  8/13
-                                  ----
-builtins/fc.def
-       - fc_builtin,fc_gethnum: calculate `real' end of the history list and
-         use it if -0 is specified as the beginning or end of the history
-         range to list.  Doesn't work for fc -e or fc -s by design.  Feature
-         requested by Mike Fied <micfied@gmail.com>
-
-                                  8/16
-                                  ----
-trap.c
-       - _run_trap_internal: use {save,restore}_parser_state instead of
-         {save,restore}_token_state. It's more comprehensive
-
-                                  8/23
-                                  ----
-doc/bash.1
-       - disown: remove repeated text.  Report and fix from Thomas Hood
-         <jdthood@gmail.com>
-
-                                  8/25
-                                  ----
-lib/readline/rltty.c
-       - set_special_char: fix prototype (last arg is rl_command_func_t *)
-
-sig.c
-       - set_signal_handler: return oact.sa_handler only if sigaction
-         succeeds; if it doesn't, return SIG_DFL (reasonable default).  From
-         https://bugzilla.redhat.com/show_bug.cgi?id=911404
-
-bashline.c
-       - attempt_shell_completion: fix to skip assignment statements preceding
-         command name even if there are no programmable completions defined.
-         From https://bugzilla.redhat.com/show_bug.cgi?id=994659
-       - attempt_shell_completion: if still completing command word following
-         assignment statements, do command completion even if programmable
-         completion defined for partial command name entered so far
-
-                                  8/26
-                                  ----
-pcomplete.c
-       - pcomp_filename_completion_function: make sure rl_filename_dequoting_function
-         is non-NULL before trying to call it.  Bug and fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-
-bashline.c
-       - bash_command_name_stat_hook: if *name is not something we're going
-         to look up in $PATH (absolute_program(*name) != 0), just call the
-         usual bash_filename_stat_hook and return those results.  This makes
-         completions like $PWD/exam[TAB] add a trailing slash
-
-                                   9/2
-                                   ---
-builtins/read.def
-       - read_builtin: before comparing what we read to the delim, make sure
-         we are not supposed to be ignoring the delimiter (read -N).  We
-         set the delim to -1, but it's possible to read a character whose
-         int value ends up being between -1 and -128.  Fixes bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - word splitting: crib some language from Posix to make it clear that
-         characters in IFS are treated as field *terminators*, not field
-         *separators*.  Addresses issue raised by DJ Mills
-         <danielmills1@gmail.com>
-
-lib/readline/{util.c,rldefs.h}
-       - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
-         changed prototype declarations
-
-                                   9/5
-                                   ---
-doc/{bash.1,bashref.texi}
-       - [[: modify description of pattern matching to make it clear that the
-         match is performed as if the extglob option were enabled.  From Red
-         Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078
-
-                                  9/12
-                                  ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if we read an ESC and it's supposed to
-         terminate the search, make sure we check for typeahead with
-         _rl_pushed_input_available, since installing a hook function causes
-         typeahead to be collected in `ibuffer' (input.c).  If there is any,
-         make sure we still use the ESC as a prefix character.  Bug and fix
-         from Mike Miller <mtmiller@ieee.org>
-
-                                  9/16
-                                  ----
-builtins/{caller,cd,kill,pushd,wait}.def
-       - builtin_usage(): make sure call to this sets return status to
-         EX_USAGE
-
-                                  9/18
-                                  ----
-terminal.c
-       - rl_change_environment: new application-settable variable; if non-
-         zero (the default), readline will modify LINES and COLUMNS in the
-         environment when it handles SIGWINCH
-       - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv
-         to modify LINES and COLUMNS environment variables
-
-readline.h
-       - rl_change_environment: new extern declaration for applications
-
-                                  9/22
-                                  ----
-configure.ac
-       - relstatus: bumped version to bash-4.3-beta2
-
-                                  9/24
-                                  ----
-
-lib/readline/readline.c
-       - bind_arrow_keys_internal: added more key bindings for the numeric key
-         pad arrow keys on mingw32.  Patch from Pierre Muller
-         <pierre.muller@ics-cnrs.unistra.fr>
-
-                                  10/19
-                                  -----
-
-bashline.c
-       - maybe_restore_tilde: version of restore_tilde that honors `direxpand';
-         calls restore_tilde after saving directory expansion hook if
-         necessary.  Report from Andreas Schwab <schwab@linux-m68k.org>
-
-builtins/cd.def
-       - -@: new option, allows cd to use `extended attributes' present in
-         NFSv4, ZFS; idea taken from ksh93.  Attributes associated with a
-         file are presented as a directory containing the attributes as
-         individual files.  Original patch contributed by Cedric Blancher
-         <cedric.blancher@gmail.com>
-
-                                  10/20
-                                  -----
-aclocal.m4
-       - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode
-         combining characters needs a value to use when cross-compiling.
-         Bug report from Bert Sutherland <bertsutherland@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - document new -@ option to cd builtin
-
-                                  10/28
-                                  -----
-lib/glob/{{gmisc,glob}.c,glob.h}
-       - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
-
-subst.c
-       - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
-         had a typo (& isexp instead of &&)
-
-                                  10/29
-                                  -----
-input.c
-       - getc_with_restart: make sure local_index and local_bufused are
-         reset to 0 before returning EOF, in case we are running an interactive
-         shell without line editing and ignoreeof is set.  Report and fix
-         from Yong Zhang <yong.zhang@windriver.com>
-
-lib/readline/search.c
-       - _rl_nsearch_init: take out extra third argument to rl_message; it
-         only matches prototype (and maybe format) in cases where
-         PREFER_STDARG and USE_VARARGS are both undefined, which is rare
-
-                                  10/31
-                                  -----
-subst.c
-       - process_substitute: when opening the named pipe in the child, open
-         without O_NONBLOCK to avoid race conditions.  Happens often on AIX.
-         Bug report and fix from Michael Haubenwallner
-         <michael.haubenwallner@salomon.at>
-
-builtins/ulimit.def
-       - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
-         use RLIMIT_NTHR (NetBSD)
-
-                                  11/5
-                                  ----
-locale.c
-       - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
-         set, and default_dir has a non-null value, call bindtextdomain(3)
-         when TEXTDOMAIN is assigned a value.  Fixes problem reported by
-         Michael Arlt <qwertologe@googlemail.com>
-
-                                  11/6
-                                  ----
-builtins/cd.def
-       - cdxattr: only create synthetic pathname in `buf' if NDIRP argument
-         is non-null
-       - change_to_directory: if we have specified -@ and cdxattr returns
-         failure, fail immediately.  Fixes bug reported by Joshuah Hurst
-         <joshhurst@gmail.com>
-
-                                  11/12
-                                  -----
-redir.c
-       - print_redirection: change r_err_and_out (&>) and its append form,
-         r_append_err_and_out (&>>) cases to separate redirection operator
-         from filename by a space, in case we have a process substitution.
-         Fixes bug reported by admn ombres <admn.ombres@gmail.com>
-
-                                  11/15
-                                  -----
-execute_cmd.c
-       - execute_simple_command: don't close process substitution fds until
-         we are finished executing any current shell function.  Partial fix
-         for bug reported by John Dawson <john.dawson@gmail.com>
-
-support/shobj-conf
-       - add support for Darwin 13 (Mac OS X 10.9, Mavericks).  Based on a
-         report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
-
-                                  11/20
-                                  -----
-[bash-4.3-rc1 frozen]
-
-                                  11/24
-                                  -----
-builtins/printf.def
-       - bind_printf_variable: make sure that the variable assigned to is
-         no longer marked as invisible. Fixes bug reported by NBaH
-         <nbah@sfr.fr>
-
-                                  11/28
-                                  -----
-jobs.c
-       - delete_old_job: fix off-by-one error in job index in call to
-         internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
-
-                                  11/30
-                                  -----
-doc/bashref.texi
-       - add string to description of special parameters with name of
-         special parameter prefixed by a $, so you can search for $#,
-         for instance
-
-                                  12/2
-                                  ----
-lib/readline/{histexpand.c
-       - get_history_event: account for current_history() possibly returning
-         NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
-
-
-                                  12/11
-                                  -----
-
-lib/readline/parse-colors.c
-       - get_funky_string: don't call abort if we see something we can't
-         parse; just return an error
-       - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
-         we need to leave _rl_color_ext_list as NULL after freeing its
-         elements, then turn off _rl_colored_stats. Report and fix from Martin
-         Wesdorp <mwesdorp@casema.nl>
-
-                                  12/13
-                                  -----
-
-lib/readline/parse-colors.c
-       - _rl_parse_colors: if we encounter an unrecognized prefix, throw an
-         error but try to recover and go on to the next specification
-
-variables.c
-       - make_local_variable: for new variables this function creates, set
-         the att_invisible attribute.  All callers from declare_internal.
-         Indirectly, this is a fix for bug with `declare -n var; var=foo;'
-         reported by Pierre Gaston <pierre.gaston@gmail.com>
-       - bind_variable: if assigning to nameref variable that doesn't have
-         a value yet (e.g., with `declare -n var; var=foo'), don't try to
-         use the unset name. Fixes a segfault reported by Pierre Gaston
-         <pierre.gaston@gmail.com>
-
-execute_cmd.c
-       - execute_command_internal: make sure last_command_exit_value is set
-         to 0 after any command executed in the background.  Fixes bug
-         reported by Martin Kealey <martin@kurahaupo.gen.nz>
-
-                                  12/17
-                                  -----
-support/config.{guess,sub}
-       - updated to latest versions from git
-
-                                  12/19
-                                  -----
-parse.y
-       - struct STRING_SAVER: now has a new `flags' element, to identify the
-         caller: alias expansion, double-paren parsing, or parse_and_execute
-       - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL
-       - push_string: now doesn't attempt to call strlen on a NULL string to
-         set shell_input_line_size
-       - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
-         functions to provide an external interface to push_string and
-         pop_string; parser_save_alias sets flags element to PSH_SOURCE (could
-         be renamed PSH_EXTERN someday)
-       - shell_getc: when yy_getc returns '\0', instead of just testing
-         whether the pushed_string_list is not-empty before popping it, don't
-         pop if if the saved string has flags PSH_SOURCE, indicating that
-         parse_and_execute set it before setting bash_input to the string.
-         We should continue reading to the end of that string before popping
-         back to a potential alias. Partial solution for the problem of aliases
-         with embedded newlines containing `.' commands being executed out of
-         order reported by Andrew Martin <andrew.martin@gmail.com>
-       - shell_getc: when yy_getc returns '\0' and there is a saved string of
-         type PSH_SOURCE, restart the read without popping the string stack
-         if we have not read to the end of bash_input.location.string.  Rest
-         of fix for out-of-order execution problem
-
-externs.h
-       - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
-         extern function declarations
-
-builtins/evalstring.c
-       - pe_prologue: if the parser is expanding an alias, make sure to add
-         an unwind-protect to restore the alias; undoes the work that will be
-         performed by parse_and_execute/parse_string
-       - parse_and_execute,parse_string: after calling push_stream to save
-         bash_input, check whether or not the parser is currently expanding
-         an alias (parser_expanding_alias() != 0). If it is, we want to save
-         that string in the pushed_string_list, which we do with
-         parser_save_alias.
-
-                                  12/23
-                                  -----
-execute_cmd.c
-       - execute_for_command: make sure to set line_number before expanding
-         the word list, so expansion errors have the right line number.
-         From a report from Ben Okopnik <ben@okopnik.com>
-
-expr.c
-       - exp2: save token pointer before calling readtok(), arrange to use
-         saved token pointer when printing error token on a division by 0
-         error
-
-                                  12/27
-                                  -----
-lib/readline/display.c
-       - rl_redisplay: when calculating effects of invisible characters in a
-         prompt that is split across physical screen lines to set the indices
-         of linebreaks, don't bother testing local_prompt_prefix (line 751).
-         That prefix doesn't matter when calculating prompt visible and
-         invisible characters.  Fixes problem reported by Jinesh Choksi
-         <jinesh@onelittlehope.com>
-
-Makefile.in
-       - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
-         Report and fix from Matthias Klose <doko@debian.org>
-
-doc/texinfo.tex
-       - updated to version of 2013-09-11
-
-                                  12/28
-                                  -----
-lib/readline/undo.c
-       - rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
-         current_history()->data), make sure the change to rl_line_buffer is
-         reflected in the history entry. We use the guts of
-         rl_maybe_replace_line to do the work.  Fixes problem reported by
-         gregrwm <backuppc-users@whitleymott.net>
-
-                                  12/30
-                                  -----
-sig.c
-       - sigint_sighandler: if we get a SIGINT (and this signal handler is
-         installed) while the wait builtin is running, note that we received
-         it in the same way as jobs.c:wait_sigint_handler and return.  The
-         various wait_for functions will look for that with CHECK_WAIT_INTR.
-         This fixes the wait builtin not being interruptible in an interactive
-         job control shell
-
-                                  12/31
-                                  -----
-trap.c
-       - set_signal_hard_ignored: rename set_signal_ignored to this, since it
-         both sets original_signals[sig] and sets the HARD_IGNORE flag
-       - set_signal_ignored: new function, now just sets original_signals[sig]
-
-trap.h
-       - set_signal_hard_ignored: new external declaration
-
-sig.c
-       - initialize_terminating_signals: call set_signal_hard_ignored instead
-         of set_signal_ignored for signals with disposition SIG_IGN when the
-         shell starts
-
-execute_cmd.c
-       - setup_async_signals: make sure we get the original dispositions for
-         SIGINT and SIGQUIT before starting the subshell, and don't call
-         set_signal_ignored  because that sets original_signals[sig].  If we
-         don't, subsequent attempts to reset handling using trap will fail
-         because it thinks the original dispositions were SIG_IGN. Posix
-         interpretation 751 (http://austingroupbugs.net/view.php?id=751)
-
-                                1/2/2014
-                                --------
-lib/sh/stringvec.c
-       - strvec_mcreate, strvec_mresize: versions of create and resize that
-         use malloc and realloc, respectively, instead of xmalloc/xrealloc
-
-braces.c
-       - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can
-         catch and handle memory allocation failures instead of aborting
-         with the xmalloc/xrealloc interface
-
-lib/sh/strdup.c
-       - strdup replacement function for ancient systems that don't have it
-
-lib/sh/itos.c
-       - mitos: new function, itos that uses strdup instead of savestring
-
-externs.h
-       - strvec_mcreate/strvec_mresize: new extern declarations
-       - mitos: new extern declaration
-
-configure.ac
-       - bash version moved to 4.3-rc2
-
-                                   1/6
-                                   ---
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
-       - separate the description of what happens when readline reads the
-         tty EOF character from the description of delete-char, leaving a
-         note in the delete-char description about common binding for ^D.
-         From suggestion by Parke <parke.nexus@gmail.com>
-
-lib/readline/doc/{version.texi,history.3,*.texi}
-       - updated email addresses and copyright dates
-
-                                   1/7
-                                   ---
-variables.c
-       - delete_var: new function, just removes a variable from a hash table
-         and frees it, without doing anything else
-       - make_variable_value: if we are trying to assign to a nameref variable,
-         return NULL if the value is null or the empty string or not a valid
-         identifier
-
-variables.h
-       - delete_var: new extern declaration
-
-subst.h
-       - ASS_NAMEREF: new define for assignments, means assigning to a nameref
-         variable
-
-builtins/declare.def
-       - declare_internal: if we are creating and assigning to a nameref
-         variable, make sure the value is a valid variable name (checks done
-         by make_variable_value via bind_variable_value) and display an
-         error message, deleting the variable we just created, if it is not.
-         Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
-
-                                   1/9
-                                   ---
-builtins/declare.def
-       - declare_internal: turning on nameref attribute for an existing
-         variable turns off -i/-l/-u/-c attributes (essentially the ones
-         that cause evaluation at assignment time) for ksh93 compat
-
-builtins/setattr.def
-       - show_name_attributes: if asked to display attributes and values for
-         a nameref variable, don't follow the nameref chain to the end. More
-         ksh93 compat
-
-                                  1/10
-                                  ----
-trap.c
-       - _run_trap_internal: use {save,restore}_parser_state instead of
-         {save,restore}_token_state, like in run_pending_traps(); don't
-         need to save and restore last_command_exit_value as a result
-       - _run_trap_internal: call {save,restore}_pipeline like in
-         run_pending_traps()
-       - run_pending_traps: since we no longer run traps in a signal handler
-         context, do not block and unblock the trapped signal while the
-         trap is executing
-       - run_pending_traps: allow recursive invocations (basically, running
-         traps from a trap handler) with only a warning if the shell is
-         compiled in debug mode.  If a caller doesn't want this to happen,
-         it should test running_trap > 0. signal_in_progress (sig) only works
-         for the signals the shell handles specially
-
-bashline.c
-       - bash_event_hook: make sure we clean up readline if interrupt_state
-         is set, not only when SIGINT is not trapped.  check_signals_and_traps
-         will call check_signals, which calls QUIT, which will longjmp back
-         to top_level, running the interrupt trap along the way.  Fixes the
-         problem of signal handlers being reset out from under readline, and
-         not being set properly the next time readline is called, because
-         signals_set_flag is still set to 1.  XXX - might need to do this
-         for other signals too?
-
-                                  1/11
-                                  ----
-subst.h
-       - SD_GLOB: new define for skip_to_delim; means we are scanning a
-         glob pattern.
-
-subst.c
-       - skip_to_delim: if flags include SD_GLOB, assume we are scanning a
-         glob pattern.  Currently only used to skip bracket expressions
-         which may contain one of the delimiters
-
-                                  1/12
-                                  ----
-subst.c
-       - parameter_brace_expand: when expanding $@ as part of substring
-         expansion, pattern substitution, or case modification, don't turn
-         on the QUOTED_NULL flag.  The code that constructs the word to be
-         returned from expand_word_internal expects a different code path
-         when $@ is being expanded.  Fixes bug reported by Theodoros
-         V. Kalamatianos <thkala@gmail.com>
-
-                                  1/19
-                                  ----
-subst.c
-       - list_dequote_escapes: new function; analogue of list_quote_escapes
-
-pathexp.c
-       - quote_string_for_globbing: fix case where unescaped ^A is last char
-         in string; need to pass it through unaltered instead of turning it
-         into a bare backslash
-       - quote_string_for_globbing: when quoting for regexp matching in [[,
-         don't treat backslash as a quote character; quote the backslash as
-         any other character.  Part of investigation into reports from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  1/25
-                                  ----
-builtins/gen-helpfiles.c
-       - write_helpfiles: add prototype
-       - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC
-         is defined. the code does not use them, and we don't link against
-         xmalloc.o. Report from Linda Walsh <bash@tlinx.org>
-
-Makefile.in
-       - variables.o: add dependency on builtins/builtext.h; helps with
-         parallel builds.  Report from Linda Walsh <bash@tlinx.org>
-
-support/shobj-conf
-       - darwin: combine the stanzas into one that will not require them to
-         be updated on each Mac OS X release.  Report and fix from Max Horn
-         <max@quendi.de>
-
-                                  1/27
-                                  ----
-support/shobj-conf
-       - darwin: changed the install_name embedded into the shared library
-         to contain only the major version number, not the minor one. The
-         idea is that the minor versions should all be API/ABI compatible,
-         and it is better to link automatically with the latest one.  Idea
-         from Max Horn <max@quendi.de>
-
-                                  1/29
-                                  ----
-[bash-4.3-rc2 released]
-
-                                  1/30
-                                  ----
-lib/readline/readline.h
-       - rl_clear_history, rl_free_keymap: add extern declarations.  Report
-         from Hiroo Hayashi <hiroo.hayashi@computer.org>
-
-general.c
-       - include trap.h for any_signals_trapped() prototype
-
-lib/sh/unicode.c
-       - include <stdio.h> for sprintf prototype
-
-                                  1/31
-                                  ----
-execute_cmd.c
-       - execute_simple_command: only posix-mode shells should exit on an
-         assignment failure in the temporary environment preceding a special
-         builtin. This is what the documentation and code comments have
-         always said
-       - execute_simple_command: make sure redirection errors, word expansion
-         errors, and assignment errors to Posix special builtins cause a
-         non-interactive posix mode shell to exit.  Previously the shell
-         would not exit if the failed special builtin was on the LHS of ||
-         or &&
-
-pathexp.c
-       - quote_string_for_globbing: when quoting a regular expression
-         (QGLOB_REGEXP), allow an unquoted backslash to pass through
-         unaltered. Don't use it as a quote character or quote it.  More
-         investigation from 1/24 and report by Mike Frysinger
-         <vapier@gentoo.org>
-       - quote_string_for_globbing: when quoting a regular expression
-         (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a
-         backslash to quote it. We should not have to quote it because it is
-         not a character special to EREs. More investigation from 1/24
-
-lib/glob/glob.c
-       - glob_testdir: now takes a second flags argument (currently unused);
-         changed prototype and callers
-
-                                   2/1
-                                   ---
-lib/glob/glob.c
-       - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
-         lstat so we skip symlinks when traversing the directory tree.
-         Originally reported by Chris Down <chris@chrisdown.name>
-
-                                   2/2
-                                   ---
-lib/readline/undo.c
-       - rl_do_undo: make sure CUR is non-zero before dereferencing it to
-         check cur->data against rl_undo_list.  Report and fix from
-         Andreas Schwab <schwab@linux-m68k.org>
-
-doc/{bash.1,bashref.texi}
-       - added slight clarifying language to the description of $*,
-         describing what happens when the expansion is not within double
-         quotes
-
-                                   2/4
-                                   ---
-test.c
-       - unary_test: add code to -v case so that it interprets `bare' array
-         references (foo[1]) and returns true if that index has a value
-
-                                   2/5
-                                   ---
-trap.c
-       - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag
-         off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER;
-         continue with resetting handler in this case. maybe_set_sigchld_trap
-         will check these things before resetting sigchld trap from
-         run_sigchld_trap.  Fixes (apparently long-standing?) problem reported
-         by Alexandru Damian <alexandru.damian@intel.com>
-
-                                   2/6
-                                   ---
-lib/sh/strtrans.c
-       - ansic_quote: fixed a bug when copying a printable character that
-         consumes more than one byte; byte counter was not being incremented.
-         Bug report from jidanni@jidanni.org
-
-                                   2/7
-                                   ---
-input.c
-       - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or
-         terminating_signal is set (which means QUIT; will longjmp out of this
-         function), make sure the local buffer variables are zeroed out to
-         avoid reading past the end of the buffer on the next call.  Bug report
-         from Dan Jacobson <jidanni@jidanni.org>
-
-                                   2/9
-                                   ---
-bashline.c
-       - command_word_completion_function: if a directory in $PATH contains
-         quote characters, we need to quote them before passing the candidate
-         path to rl_filename_completion_function, which performs dequoting on
-         the pathname it's passed.  Fixes bug reported by Ilyushkin Nikita
-         <ilyushkeane@gmail.com>
-
-                                  2/11
-                                  ----
-parse.y
-       - xparse_dolparen: save and restore shell_eof_token around call to
-         parse_string, intead of just leaving it set to ')'
-       - shell_getc: when -v is set, only print the command line when
-         shell_eof_token is 0, so we don't print it multiple times when
-         recursively entering the parser to parse $(...) commands.  Fixes
-         bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
-
-[changed release status to 4.3-release]
-
-                                  2/13
-                                  ----
-lib/sh/strtrans.c
-       - ansic_quote: handle case where mbrtowc reports that the multibyte
-         sequence is incomplete or invalid.  Fixes bug reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  2/14
-                                  ----
-variables.c
-       - find_variable_nameref_context: fix a problem that caused the loop
-         to go one context too close to the global context.  In some cases,
-         simple variable assignment would set a variable in the global
-         context instead of a local context.  Bug report from
-         Geir Hauge <geir.hauge@gmail.com>
-
-                                  2/26
-                                  ----
-[bash-4.3 released]
-
-                                  2/27
-                                  ----
-aclocal.m4
-       - broken wcwidth check: fix typo reported by David Michael
-         <fedora.dm0@gmail.com>
-
-                                  2/28
-                                  ----
-support/bashbug.sh
-       - add ${BUGADDR} to error message printed if sending mail fails
-
-trap.c
-       - _run_trap_internal: don't call {save,restore}_pipeline if running
-         DEBUG trap; run_debug_trap calls them itself.  Fixes bug reported
-         by Moe Tunes <moetunes42@gmail.com>
-
-test.c
-       - unary_test: fix 'R' case by using find_variable_noref instead of
-         find_variable
-       - test_unop: add back missing 'R' case.  Fixes bug reported by
-         NBaH <nbah@sfr.fr>
-
-                                   3/2
-                                   ---
-jobs.c
-       - end_job_control: if job control is active, we changed the terminal's
-         process group, so make sure we restore it.  Fixes bug reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                   3/7
-                                   ---
-pcomplete.c
-       - pcomp_curtxt: new variable, holds the original text to be completed
-         as passed to the programmable completion code
-       - pcomp_filename_completion_function: if we are running compgen
-         (presumably in a shell function completion) and performing readline
-         completion, check the word being completed.  If it's not empty, but
-         the original word passed to the programmable completion code is an
-         empty string (""), call a dequoting function if one is available.
-         This compensates for an assumption in bash-completion.  Reported by
-         Albert Shih <Albert.Shih@obspm.fr>
-
-lib/readline/readline.c
-       - _rl_dispatch_subseq: when deciding whether or not to set vi mode's
-         idea of the last command, use whether or not the dispatching keymap
-         is vi_movement_keymap instead of the key sequence length.  The `c',
-         `d', and `y' commands all take motion commands as `arguments' and
-         will produce key sequences longer than 1 character.  The arrow keys
-         will end up dispatching out of a different keymap, so the test will
-         prevent arrow keys from setting the last command (the problem in
-         bash-4.2). Bug report from Daan van Rossum <daan@flash.uchicago.edu>
-
-lib/readline/vi_mode.c
-       - _rl_vi_motion_command: convenience function to test whether a key is
-         a vi-mode motion command
-
-lib/readline/rlprivate.h
-       - _rl_vi_motion_command: extern declaration
-
-parse.y
-       - parse_matched_pair: we should not skip processing single quotes in
-         posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern
-         substitution).  Fixes bug reported by David Sines
-         <dave.gma@googlemail.com>
-
-                                  3/10
-                                  ----
-lib/readline/readline.c
-       - _rl_dispatch_callback: treat a return value of -1 as the end of
-         a command dispatch sequence if the current context doesn't
-         indicate that we're reading a multi-key sequence
-         ((cxt->flags & KSEQ_SUBSEQ) == 0).  Turn off the multikey flag
-         and free the context chain in this case.  Fixes one bug reported
-         by Felix Yan <felixonmars@gmail.com> to bug-readline list
-       - _rl_dispatch_callback: treat a return value of > 0 the same as 0
-         and return from the function, since only values < 0 cause us to
-         simulate recursion.  Rest of fix for bug tracked down by
-         Anatol Pomozov <anatol.pomozov@gmail.com>
-
-                                  3/11
-                                  ----
-
-execute_cmd.c
-       - execute_in_subshell: if a longjmp occurs, set result to
-         EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS;
-         use value of last_command_exit_value otherwise.  Fixes cosmetic
-         issue reported by Dennis Lambe Jr. <malsyned@malsyned.net>
-
-doc/bash.1
-       - shell-kill-word and shell-backward-kill-word should be documented
-         as unbound by default.  Report from Oliver Hartley
-         <ohartley@talktalk.net>
-
-trap.c
-       - run_pending_traps: save value of $? before running trap commands in
-         trap_saved_exit_value, like run_exit_trap
-       - _run_trap_internal: save value of $? before running trap commands in
-         trap_saved_exit_value, like run_exit_trap
-
-builtins/common.c
-       - get_exitstat: when running `return' in a trap action, and it is not
-         supplied an argument, use the saved exit status in
-         trap_saved_exit_value.  Fixes Posix problem reported by
-         Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                  3/13
-                                  ----
-lib/sh/shquote.c
-       - sh_contains_quotes: new function, returns true if a given string
-         contains any of the shell quote characters (single quote, double
-         quote, or backslash)
-
-externs.h
-       - sh_contains_quotes: new extern declaration
-
-pcomplete.c
-       - pcomp_filename_completion_function: more changes for the benefit of
-         bash-completion: if the argument is not the same as the original
-         argument passed to the programmable completion code (pcomp_curtxt),
-         and we are being run by compgen as part of a completion, dequote the
-         argument as bash-completion expects.  Fix for the complete-word-
-         with-quoted-special-chars problem with bash-completion
-
-                                  3/17
-                                  ----
-execute_cmd.c
-       - execute_intern_function: when in posix mode, make defining a function
-         with the same name as a special builtin a fatal error only when the
-         shell is not interactive. Interactive shells display an error
-         message and go on.  From a discussion with Doug McIlroy
-         <doug@cs.dartmouth.edu>
-
-                                  3/18
-                                  ----
-arrayfunc.c
-       - assign_compound_array_list: when using expand_assignment_string_to_string
-         to expand the value in a ( [x]=y ) compound assignment, make sure
-         that we convert 0x0 to "" when expanding [x]= so it doesn't appear as
-         if the index is unset.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-builtins/common.c
-       - get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the
-         current value of $? instead of the value it had before the trap
-         action was run.  This is one reason the DEBUG trap exists, and
-         extended debug mode uses it.  Might want to do this only in Posix
-         mode
-
-doc/{bash.1,bashref.texi}
-       - return: add language cribbed from Posix saying what happens when
-         return is run without an argument from a trap, including the DEBUG
-         trap exception
-
-                                  3/19
-                                  ----
-lib/glob/gmisc.c
-       - extglob_pattern_p: make sure ?(patlist) is flagged as an extglob
-         pattern
-
-lib/glob/glob.c
-       - extglob_skipname: rewrite to handle patterns that begin but do not
-         end with an extglob pattern; change test for easy case and loop
-         through patterns accordingly.  Fixes problem with matching filenames
-         with a leading dot reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-       - wextglob_skipname: make analogous changes
-
-                                  3/20
-                                  ----
-Makefile.in
-       - pass -DDEBUG down to builds in readline and history directories
-
-lib/readline/util.c
-       - _rl_trace and related functions are now only compiled in if DEBUG
-         is defined
-
-lib/readline/Makefile.in
-       - substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation
-         in LOCAL_CFLAGS
-
-                                  3/21
-                                  ----
-parse.y
-       - shell_getc: when checking whether or not to reallocate
-         shell_input_line to add trailing newline, don't try to subtract from
-         shell_input_line_size.  size_t is unsigned, so if its value is less
-         than 3 (like, say, 2), size-3 is a very large number and the string
-         will not be reallocated.  Use len+3 > size instead of len > size-3.
-         Fixes bug reported in
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467
-
-                                  3/27
-                                  ----
-lib/readline/display.c
-       - _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever
-         readline thinks the last displayed line is if it's 0.  Two reasons: a
-         minor optimization, and it protects against unwanted moving if this
-         function is called twice, as it is when ^C is pressed.  Fixes bug
-         reported by Egmont Koblinger <egmont@gmail.com>
-
-                                  3/28
-                                  ----
-bashline.c
-       - invalid_completion: new function, used to identify attempts to
-         complete words that are syntax errors
-       - attempt_shell_completion: if invalid_completion returns true for a
-         word in a command position, punt on all completions.  Fixes cosmetic
-         issue reported by Uwe Storbeck <uwe@ibr.ch>
-       - attempt_shell_completion: add clause so that in_command_position
-         remains set to 1 for an empty word following a command separator like
-         (, &, or |
-
-lib/readline/kill.c
-       - rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable
-         functions, return 1 instead
-
-lib/readline/text.c
-       - rl_rubout, _rl_rubout_char, rl_delete, rl_change_case,
-         rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos,
-         rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search,
-         _rl_char_search_internal:
-         don't return -1 from bindable functions, return 1 instead
-
-lib/readline/vi_mode.c
-       - rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search,
-         rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark:
-         don't return -1 from bindable functions, return 1 instead
-
-lib/readline/macro.c
-       - rl_start_kbd_macro, rl_end_kbd_macro:
-         don't return -1 from bindable functions, return 1 instead
-
-builtins/setattr.def
-       - set_var_attribute: honor setting of no_invisible_vars when setting
-         att_invisible on a variable
-       - include "../flags.h" for no_invisible_vars
-
-builtins/declare.def
-       - declare_internal: honor setting of no_invisible_vars when setting
-         att_invisible on a variable
-       - include "../flags.h" for no_invisible_vars
-
-Makefile.in,builtins/Makefile.in
-       - make sure declare.o and setattr.o depend on flags.h
-
-execute_cmd.c
-       - decpoint: new function, returns locale's decimal point or `.' default
-       - mkfmt: use decpoint() to get decimal point instead of unconditionally
-         using `.'.  Fixes bug reported by Andrey Tataranovich
-         <tataranovich@gmail.com> in debian bug 741669
-
-                                  4/10
-                                  ----
-lib/readline/rltypedefs.h
-       - add back old Function/VFunction/etc typedefs, since other packages
-         (python, samba) use them. Mark as deprecated using gcc and clang
-         attributes.  Report and fix from Max Horn <max@quendi.de>
-
-                                  4/14
-                                  ----
-jobs.c
-       - run_sigchld_trap: unwind-protect value of this_shell_builtin, since
-         it matters in some cases whether or not we are running `wait' or
-         `eval'.  Fixes bug reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                  4/18
-                                  ----
-shell.h
-       - sh_parser_state_t: add `need_here_doc' flags member, since
-         xparse_dolparen (via parse_command) sets it to 0
-
-parse.y
-       - gather_here_documents: make sure need_here_doc is > 0, since we
-         don't want to just decrement it forever if it ends up < 0. Partial
-         fix for bug reported by Jared Yanovich <slovichon@gmail.com>
-       - {save,restore}_parser_state: save and restore need_here_doc flag.
-         Rest of fix for bug reported by Jared Yanovich <slovichon@gmail.com>
-
-                                  4/19
-                                  ----
-subst.c
-       - cond_expand_word: since we are not supposed to be performing word
-         splitting here, set expand_no_split_dollar_star to 1 in addition to
-         setting W_NOSPLIT2
-       - expand_word_internal: if we have a case where we have an unquoted
-         $@ but we are in a case where we don't want to split (W_NOSPLIT2),
-         make sure we return a list consisting of a single word with the
-         arguments separated by spaces and don't do word splitting.  Fixes
-         bug reported by Greg Wooledge <wooledg@eeg.ccf.org> from an IRC
-         discussion
-
-builtins/hash.def
-       - print_portable_hash_info: single-quote pathnames and hashed filenames
-         that contain shell metacharacters.  Fixes bug reported by
-         <g1pi@libero.it> in debian bash bug #739853
-
-                                  4/20
-                                  ----
-lib/readline/display.c
-       - When using horizontal scrolling, the redisplay code erases too much
-         of the line containing successful results, so make sure we only
-         erase to the end of the line after making sure we move the cursor
-         to the end.  Fixes bug reported by <Trond.Endrestol@ximalas.info>
-
-                                  4/23
-                                  ----
-{bashhist,bashline}.c
-builtins{bind,help,type}.def
-lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c
-       - fixes to memory leaks uncovered by coverity scan
-
-                                  4/24
-                                  ----
-{bashhist,subst,redir,assoc,jobs,array,trap}.c
-lib/intl/l10flist.c
-builtins/complete.def
-       - fixes to memory leaks and other resource usage problems uncovered by
-         coverity scan
-
-redir.c
-       - do_redirection_internal: if dup2 fails (presumably because of a
-         resource limit), close the file descriptor we opened before returning
-         error
-
-                                  4/25
-                                  ----
-config-top.h
-       - DEFAULT_BASHRC: new define with the name of the default shell
-         startup file
-
-bashline.c
-       - bash_directory_completion_matches: don't dequote the directory name.
-         If rl_completion_found_quote is non-zero, readline will dequote the
-         filename itself.  Fixes bug reported by Clark Wang
-         <dearvoid@gmail.com>
-
-                                  4/27
-                                  ----
-subst.c
-       - parameter_brace_expand_rhs: if parameter_brace_find_indir returns
-         NULL or "", or if it returns something that is not a valid identifier,
-         report an error and return &expand_wdesc_error so the error can
-         propagate up.  Fixes bug reported by Andre Holzhey
-         <andre.holzhey@gmx.de>
-
-                                  4/29
-                                  ----
-subst.c
-       - parameter_brace_substring: don't short-circuit right away if the
-         value is NULL but we are looking at the positional parameters.  Part
-         of fix for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-       - pos_params: if there are no positional parameters, only short-circuit
-         if we are looking for $1 and above.  Rest of fix for bug reported
-         by Pierre Gaston <pierre.gaston@gmail.com>
-
-subst.h
-       - SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any
-         process subsitutions (should not have overloaded SD_NOSKIPCMD)
-
-subst.c
-       - skip_to_delim: honor SD_NOPROCSUB flag
-
-make_cmd.c
-       - make_arith_for_expr: set W_NOPROCSUB flag in the created word
-       - make_arith_for_command: set SD_NOPROCSUB in the flags argument to
-         skip_to_delim so we don't treat <( or >( as a process substitution
-         (we won't evaluate them in eval_arith_for_expr anyway).  Fixes
-         bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                   5/1
-                                   ---
-lib/glob/gmisc.c
-       - glob_dirscan: new function, takes a pattern and a directory separator
-         argument and advances the pattern to the last occurrence of the
-         separator. Like strrchr, but understands extended glob patterns and
-         uses glob_patscan to skip over them
-
-lib/glob/glob.c
-       - extglob_skipname: if the extended globbing pattern is invalid, don't
-         skip the name
-       - glob_filename: if there is a slash in the pattern to be matched, and
-         extglob is enabled, use glob_dirscan to find the real last occurrence
-         of `/' to avoid being confused by slashes in extglob patterns.  Fix
-         for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
-
-                                   5/6
-                                   ---
-variables.c
-       - make_local_variable: only set the att_invisible attribute if
-         no_invisible_vars isn't set
-       - find_variable_for_assignment: new function, intended to be called by
-         code that eventually wants to assign a value to the variable; will not
-         skip invisible variables; currently identical to find_variable
-       - find_variable_no_invisible: new function, finds the first visible
-         instance of variable with a given name in the variable context chain;
-         eventually will be used to replace find_variable; separate right now
-         for testing
-
-variables.h
-       - find_variable_for_assignment: extern declaration
-       - find_variable_no_invisible: extern declaration
-
-                                   5/7
-                                   ---
-variables.c
-       - make_local_variable: don't clear `invisible' attribute if we are
-         returning an existing local variable at the right context.  Let the
-         upper layers do that. Fixes bug reported by Dan Douglas
-         <ormaaj@gmail.com>
-
-                                   5/8
-                                   ---
-lib/readline/input.c
-       - rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR)
-         by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated
-         signals of interest)
-
-builtins/read.def
-       - edit_line: call bashline_set_event_hook and
-         bashline_reset_event_hook around call to readline(), so the right
-         signal handling happens
-       - read_builtin: make sure we add an unwind_protect call to
-         bashline_reset_event_hook.  These changes fix bug reported in
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
-
-bashline.c
-       - bash_event_hook: make sure we clean up the readline state by calling
-         rl_cleanup_after_signal if sigalrm_seen is non-zero.  The read builtin
-         sets this when it times out
-
-                                  5/12
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify language to make it clear that changing attributes of a
-         nameref variable (e.g., export), actually changes the attributes of
-         the referenced variable.  Fixes omission noted by Jeff Haemer
-         <jeffrey.haemer@gmail.com>
-
-arrayfunc.c
-       - bind_array_var_internal: make sure ENTRY no longer has invisible
-         attribute before returning.  Fixes bug reported by Geir Hauge
-         <geir.hauge@gmail.com>
-
-                                  5/22
-                                  ----
-execute_cmd.c
-       - shell_execve: if execve fails and we return 127 or 126, make sure to
-         set last_command_exit_value if a call to file_error or report_error
-         causes the shell to exit.  This ensures that the shell exits with
-         the right value.
-
-                                   6/6
-                                   ---
-shell.c
-       - drop_priv_mode: print an error message on setuid() failure, optionally
-         exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for
-         the target user is exceeded.
-
-config-top.h
-       - EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to
-         exit if setuid fails with errno == EAGAIN
-
-                                  6/10
-                                  ----
-parse.y
-       - time_command_acceptable: fix so time is accepted everywhere the
-         grammar is looking for a `compound_list'.  Fixes bug reported by
-         Dale Worley <worley@alum.mit.edu>
-
-                                  6/12
-                                  ----
-subst.c
-       - clear_fifo_list: new function, clears FDs associated with open pipes
-         in current FIFO list without closing the file descriptors.  Can
-         possibly be used when shell_execve fails and the shell jumps back
-         to top_level and we don't want the shell to close the open FIFOs
-         each time through the read-execute loop.  Bug reported by Harald
-         Koenig <koenig@tat.physik.uni-tuebingen.de>
-
-
-                                  6/16
-                                  ----
-builtins/shopt.def
-       - compat42: make sure the `compat42' option sets the correct variable
-         for compatibility level.  Fixes bug reported by Ondrej Oprala
-         <ooprala@redhat.com>
-
-support/bashbug.sh
-       - fix typo when echoing $USAGE.  Report from Shantanu Kulkarni
-         <djbware@shantanukulkarni.org>
-
-execute_cmd.c
-       - shell_execve: before longjmp back to subshell_top_level, clear out the
-         FIFO fd list by calling clear_fifo_list so the FDs (which we inherited
-         from our parent) aren't closed every time through the read-eval loop.
-         Fix for bug reported by Harald Koenig <koenig@tat.physik.uni-tuebingen.de>
-
-                                  6/18
-                                  ----
-subst.c
-       - extract_process_subst: add additional argument: xflags, allow callers to
-         pass flags like extract_command_subst
-       - extract_process_subst: call xparse_dolparen like command substitution
-         to avoid problems when parsing commands constructs with embedded open
-         parens.  Fixes bug reported by Tim Friske <me@timfriske.com>
-
-subst.h
-       - extract_process_subst: modified prototype for extern declaration
-
-                                  6/19
-                                  ----
-execute_cmd.c
-       - execute_pipeline: if running with lastpipe enabled, make sure that we
-         check whether or not the job id is valid using INVALID_JOB before
-         calling job_exit_status. the jobs list can get frozen and unfrozen in
-         the presence of nested pipelines and loops and wait_for can clear a
-         job table entry.  Fixes bug reported by <scorp.dev.null@gmail.com>
-
-jobs.c
-       - freeze_jobs_list: now returns old value of jobs_list_frozen; unused at
-         current time
-
-jobs.h
-       - freeze_jobs_list: change return value
-
-                                  6/20
-                                  ----
-lib/glob/smatch.c
-       - MEMCHR: single-byte and wide character defines (memchr/wmemchr)
-
-lib/glob/sm_loop.c
-       - GMATCH: when the wildcards are the last element of the pattern, make
-         sure they do not match a string containing a `/' if FNM_PATHNAME is
-         set in FLAGS
-       - GMATCH: when recursively calling GMATCH after we see a `*', don't
-         try to consume the rest of the pattern with `*' if FNM_PATHNAME is
-         set in FLAGS, just consume up to the next slash and then see whether
-         or not the rest of the pattern matches.  Fixes bug reported by Ian
-         Kelling <ian@iankelling.org>
-       - GMATCH: when processing `*' in the pattern, after skipping consecutive
-         wildcards, if we hit a literal `/' in the pattern and we're looking
-         for a pathname, skip characters in the string until we find a `/'
-         (no slash means the match fails), and try to match the rest of the
-         pattern against the portion of the string after the next `/'.  Picked
-         up from gnulib/glibc
-
-pathexp.c
-       - split_ignorespec: since split_ignorespec gets globbing patterns,
-         make sure we call skip_to_delim with the SD_GLOB flag so delimiters
-         that occur within bracket expressions don't delimit the pattern.
-         Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling
-         <ian@iankelling.org>
-
-unwind_prot.c
-       - unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect
-         frame corresponding to `tag' argument is on unwind-protect stack
-
-unwind_prot.h
-       - unwind_protect_tag_on_stack: extern declaration
-
-                                  6/30
-                                  ----
-lib/readline/misc.c
-       - _rl_revert_all_lines: set entry->data to 0 after assigning it to
-         rl_undo_list to avoid pointer aliasing problems that would result
-         in entry->line being freed by an undo.  The subsequent free would
-         be a double free.  Report and fix from Jared Yanovich
-         <slovichon@gmail.com>
-
-subst.c
-       - command_substitute: other shells do not appear to inherit the -v
-         option when reading and executing command substitutions.  Reported
-         by Ondrej Oprala <ooprala@redhat.com>
-
-                                   7/1
-                                   ---
-config-top.h
-       - CHECKHASH_DEFAULT: new define that supplies the default value for
-         check_hashed_filenames (`checkhash' shopt option); still 0 by default
-
-findcmd.c
-       - check_hashed_filenames: initialize using CHECKHASH_DEFAULT
-
-lib/readline/histexpand.c
-       - history_expand: double quotes can inhibit recognition of the history
-         comment character if history_quotes_inhibit_expansion is non-zero
-
-lib/readline/doc/{history.3,hstech.texi}
-       - history_quotes_inhibit_expansion: expand definition to note that it
-         inhibits scanning for the history comment character as well; correct
-         typo to make it clear that it only works on double-quoted strings
-
-lib/sh/zgetline.c
-       - add new fourth argument: DELIM, allows delimiter to be something
-         other than newline (if DELIM != '\n', UNBUFFERED_READ should be
-         non-zero)
-       - UNBUFFERED_READ is now fifth argument
-       - check character against DELIM rather than strictly newline
-
-externs.h
-       - zgetline: change function prototype for extern declaration
-
-builtins/mapfile.def
-       - mapfile: change calling sequence for zgetline calls
-       - mapfile_builtin: new -d option: DELIM, like in read builtin
-       - mapfile_builtin: pass `delim' to mapfile() as new argument; default
-         to '\n' unless -d option supplied
-       - mapfile: take new DELIM argument, pass to zgetline
-       - mapfile: if DELIM != '\n', set unbuffered_read to 1
-
-doc/{bash.1,bashref.texi}
-       - mapfile: document new `-d DELIM' option
-
-                                   7/5
-                                   ---
-lib/readline/histfile.c
-       - history_truncate_file: if there is an error writing the truncated
-         history list back to the history file, use the same strategy as
-         history_do_write: create a backup file, rename the history file to
-         the backup file, and restore the original history file from the
-         backup file name if the write or the close fails.  Suggestion from
-         Chen Gang <gang.chen.5i5j@gmail.com> to bug-readline
-
-execute_cmd.c
-       - evalnest, evalnest_max: new variables establishing maximum number of
-         recursive `eval' calls; current max is 4096
-       - execute_builtin: unwind-protect value of evalnest around calls to
-         eval builtin. Suggested by Oliver Morais <oliver.morais@gmail.com>
-       - {initialize_subshell,execute_subshell_builtin_or_function}: reset
-         evalnest to 0 in a subshell
-
-builtins/setattr.def
-       - show_name_attributes: show a variable's attributes even if it's
-         invisible (don't show any value since it has none). This means that
-         declare -p var will display VAR's attributes even when var marked
-         as invisible.  Feature request from Peggy Russell
-         <prusselltechgroup@gmail.com>
-       - show_var_attributes: don't print assignment if array or assoc
-         attribute is set but variable marked as invisible
-
-tests/array.right
-       - special note: changed all declare -a output tests because the shell
-         will no longer print out values for invisible array variables. This
-         is a change, but one for correctness:
-
-               declare -a foo='()'
-         and
-               declare -a foo
-         are not equivalent
-
-                                  7/22
-                                  ----
-subst.c
-       - parameter_brace_expand: after calling parameter_brace_expand_indir,
-         turn off the W_ARRAYIND flag in the word it returns, because there
-         is no way for it to return the index that should be used, and the
-         rest of the function assumes that IND is valid if W_ARRAYIND is set.
-         Fixes bug reported by Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
-
-                                   8/2
-                                   ---
-parse.y
-       - read_token_word: if we read a character that will end a command
-         substitution, don't skip over quoted newlines when we read an
-         additional character to figure out whether it's a two-character
-         token. This lets the higher layers deal with quoted newlines after
-         the command substitution. Fixes bug reported by EmanueL Czirai
-         <amanual@riseup.net>
-
-                                  8/11
-                                  ----
-execute_cmd.c
-       - execute_pipeline: check whether lastpipe_jid corresponds to a valid
-         job before calling append_process, for the same reason as fix from
-         6/19.  Fixes bug reported by <lolilolicon@gmail.com>
-
-                                  8/12
-                                  ----
-lib/sh/unicode.c
-       - stub_charset: use strncpy instead of strcpy because we are copying
-         into a local fixed-length buffer.  Fixes vulnerability reported by
-         <romerox.adrian@gmail.com>
-
-execute_cmd.c
-       - execute_pipeline: if we don't call append_process, call
-         wait_for_single_pid to get the status of `lastpid', since that will
-         check the status of already-reaped processes.  Fixes spurious error
-         message about non-existent process from fix of 8/11
-
-                                  8/15
-                                  ----
-jobs.c
-       - running_in_background: new variable, keeps track of whether or not we
-         are running in the background (not perfect yet)
-       - initialize_job_control: even if we are not turning on job control,
-         get the terminal pgrp so we can use it later
-       - {set_job_control,initialize_job_control}: set running_in_background
-         to 1 if terminal pgrp != shell pgrp
-       - {stop_pipeline,make_child,wait_for}: if we are running in the
-         background, don't mess with the terminal's process group; assume that
-         the parent shell will do that.  Fixes bug reported by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-
-shell.c
-       - shell_reinitialize: reset running_in_background back to 0
-
-                                  8/24
-                                  ----
-execute_cmd.c
-       - {execute_connection,execute_command_internal}: make sure that
-         asynchronous commands always set $? to 0 and are not affected by the
-         command's exit status being inverted using `!'.  Fixes bug reported
-         by Vincent Lefevre <vincent@vinc17.net>
-
-lib/readline/display.c
-       - rl_message: call vsnprintf with full msg_bufsiz, since it counts 
-         one fewer than the buffer length passed as an argument.  Bug report
-         and fix from Dylan Cali <calid1984@gmail.com>
-
-                                  8/26
-                                  ----
-builtins/evalstring.c
-       - evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline.  This
-         is instead of calling reset_parser(); that might still be needed.
-         Fixes bug with eval and a subsequent statement ending with EOF
-         reported by <jim.avera@gmail.org>
-
-pcomplete.c
-       - filter_stringlist: when extglob is on, a leading ! in the filter
-         pattern should be left alone when it introduces a !(pat) pattern;
-         otherwise it messes up the pattern.  Fixes bug reported by David
-         Korn <dgkorn@gmail.com>
-
-                                  8/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarify the behavior of bash when given the -c option, since $0 is
-         technically not a positional parameter.  Bug reported by Stephane
-         Chazelas <stephane.chazelas@gmail.com>
-
-                                  8/28
-                                  ----
-lib/readline/history.c
-       - add_history: use history_max_entries (if history is stifled) or
-         DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502)
-         to size the initial allocation of the history array.  Assumption
-         is that this will reduce the number of allocations
-
-                                  8/29
-                                  ----
-execute_command.c:
-       - sourcenest, sourcenest_max: new variables used to track level of
-         sourced files and (maybe) one day catch infinite source recursion
-       - execute_builtin: if current source level exceeds sourcenest_max,
-         trigger an error and jump back to the top level
-       - {initialize_subshell,execute_subshell_builtin_or_function}: reset
-         sourcenest to 0 in a subshell
-
-                                   9/2
-                                   ---
-variables.c
-       - bind_variable: if a nameref expands to an array reference, make
-         sure that assign_array_element gets called (maybe even
-         recursively) instead of bind_variable_internal, so invalid variable
-         names (like arr[0]) don't get created.  Fixes bug reported by
-         <lolilolicon@gmail.com>
-
-                                   9/3
-                                   ---
-execute_cmd.c
-       - evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and
-         SOURCENEST_MAX, respectively.  Feature suggested by
-         <bogun.dmitriy@gmail.com>
-
-config-top.h
-       - define EVALNEST_MAX and SOURCENEST_MAX to 0
-
-                                   9/6
-                                   ---
-bashline.c
-       - find_cmd_start: fix to (crudely) deal with >| token; even though
-         skip_to_delim finds `|' as a delimiter, we call it again and use
-         what the second call finds.  Fixes bug reported by Dan Jacobson
-         <jidanni@jidanni.org>
-
-findcmd.c
-       - find_in_path_element: if in posix mode, do not expand a literal
-         tilde in a $PATH element
-
-doc/bashref.texi
-       - add change to tilde expansion in $PATH elements to posix mode
-         description
-
-builtins/common.h
-       - ISHELP: new define for builtins that do their own option parsing
-         and don't use internal_getopt(); checks whether argument is --help
-       - CHECK_HELPOPT: convenience define to help builtins that do their
-         own option parsing to check for --help with one line of code
-       - CASE_HELPOPT: convenience define to help builtins that use
-         internal_getopt() check for --help with one line of code
-
-builtins/help.def
-       - builtin_help: new function, prints out --help output for current
-         builtin
-
-builtins/{kill,let,pushd}.def
-       - add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help
-         and return EX_USAGE (kill/let/pushd/popd/dirs)
-
-builtins/{caller,fg_bg}.def
-       - use CHECK_HELPOPT to recognize --help, since these builtins perform
-         checks that can cause them to return before calling no_options
-         (caller/fg/bg)
-
-builtins/{exit,return}.def
-       - use CHECK_HELPOPT to recognize --help before calling get_exitstat()
-         (return/exit/logout)
-
-builtins/{break,shift}.def
-       - use CHECK_HELPOPT to recognize --help before any other checks
-         (break/continue/shift)
-
-builtins/bashgetopt.h
-       - GETOPT_EOF: convenience define
-       - GETOPT_HELP: new define, to indicate internal_getopt saw --help
-
-builtins/bashgetopt.c
-       - internal_getopt: return GETOPT_HELP for --help
-
-builtins/common.c
-       - no_options: recognize --help, call builtin_help and return 2
-         (builtin/eval/source/./times)
-
-builtins/command.def
-       - use CASE_HELPOPT() to handle --help after calling internal_getopt()
-         (command)
-
-builtins/{colon,echo,test}.def
-       - do not recognize --help (:/true/false/echo/test)
-
-                                   9/8
-                                   ---
-sig.c
-       - termsig_sighandler: if readline is active now, set the bashline event
-         hook. Old code just set it for interactive shells.  Part of fix for
-         bug reported by <mickael9@gmail.com>
-
-bashline.c
-       - bash_event_hook: call rl_cleanup_after_signal if terminating_signal
-         is non-zero, since check_signals_and_traps() will cause the shell to
-         exit if it is and we want to clean up the readline state first.  Rest
-         of fix for bug reported by <mickael9@gmail.com>
-
-                                   9/9
-                                   ---
-jobs.c
-       - waitchld: when running the wait builtin in posix mode, with a trap set
-         on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD),
-         otherwise you will lose SIGCHLDs when children_exited > 1.  Fixes bug
-         reported by <crispusfairbairn@gmail.com>
-
-builtins/read.def
-       - read_builtin: if we are changing the tty settings, call
-         initialize_terminating_signals so we have a chance to catch all
-         terminating signals and potentially clean up the terminal before
-         exiting
-       - read_builtin: tty_modified: new variable, set to 1 if we change the
-         terminal attributes and have to call ttyrestore() to restore them
-       - if one of the `reads' returns -1/EINTR due to a terminating signal,
-         and we have modified the terminal, call ttyrestore before calling
-         CHECK_TERMSIG
-       - ttyrestore: set tty_modified to 0 when called
-
-                                  9/10
-                                  ----
-builtins/read.def
-       - termsave: now global to file so other functions can use it
-       - read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to
-         restore old terminal settings and turn off tty_modified
-
-sig.c
-       - termsig_handler: call read_tty_cleanup if currently executing read
-         builtin; it does the right thing.  Final piece of fix for bug reported
-         by Jan Rome <jan.rome@gmail.com>
-
-                                  9/11
-                                  ----
-general.c
-       - printable_filename: general function to return a printable
-         representation of a string (presumed to be a filename)
-
-general.h
-       - extern declaration for printable_filename
-
-execute_cmd.c
-       - execute_disk_command: use printable_filename
-
-builtins/{bind,cd,enable,hash,source}.def
-       - use printable_filename as appropriate when printing error messages.
-         From a suggestion by Vincent Lefevre <vincent@vinc17.net>
-
-builtins/bind.def
-       - use CASE_HELPOPT() to handle --help after calling internal_getopt()
-         (bind)
-
-                                  9/12
-                                  ----
-builtins/common.h
-       - SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only
-         accept a single function definition command, as when we are importing
-         functions from the environment
-       - SEVAL_ONECMD: new flag for parse_and_execute; for future use
-
-builtins/evalstring.c
-       - parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything
-         but a function definition command
-
-variables.c
-       - initialize_shell_variables: don't allow functions with invalid names
-         to be imported from the environment, even though we still allow them
-         to be defined
-       - initialize_shell_variables: when importing function definitions from
-         the environment, call parse_and_execute with the SEVAL_FUNCDEF flag
-         to force the command to be just a function definition
-
-subst.c
-       - param_expand: when expanding a $name variable expansion, make sure that
-         the variable is visible and set before following the nameref chain
-       - param_expand: when expanding a $name variable expansion and following the
-         nameref chain, make sure the resulting variable is visible and set
-         before using it
-
-                                  9/13
-                                  ----
-variables.c
-       - initialize_shell_variables: when importing function definitions from
-         environment, use SEVAL_ONECMD flag for parse_and_execute.  Part of
-         CVE-2014-6271
-
-builtins/evalstring.c
-       - parse_and_execute: if SEVAL_ONECMD flag set, return immediately after
-         calling execute_command_internal.  Final piece for fix for bug
-         reported by Stephane Chazelas <stephane.chazelas@gmail.com>.  Part of
-         CVE-2014-6271
-
-                                  9/24
-                                  ----
-parse.y
-       - reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want
-         shell_getc returning it on the next call.  Fixes problem reported by
-         Tavis Ormandy <taviso@cmpxchg8b.com> and Michal Zalewski
-         <lcamtuf@coredump.cx>.  Potentially part of CVE-2014-6271; fix for
-         CVE-2014-7169
-
-                                  9/25
-                                  ----
-parse.y
-       - push_heredoc: new function, pushes a here-doc redirection onto
-         redir_stack handling overflow of redir_stack. Exits on overflow.
-         Original fix from Florian Weimer <fweimer@redhat.com>.  Fix for
-         CVE-2014-7186
-       - change straight assignments to redir_stack to call push_redir
-       - add one to size of word_lineno stack to avoid off-by-one error
-         below in read_token_word. Overflow just results in line numbers
-         being wrong.  Fix for CVE-2014-7187
-
-                                  9/27
-                                  ----
-{execute_cmd,trap}.c
-       - changes to make minimal-config builds work again, mostly missing
-         #ifdefs for optional features
-
-builtins/common.c
-       - builtin_help: dummy version to be included if HELP_BUILTIN not
-         defined, for minimal-config builds
-
-variables.c
-       - initialize_shell_variables: incorporated patches from Florian
-         Weimer <fweimer@redhat.com> to change the strings bash looks
-         for when importing shell functions from the environment.  It
-         adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to
-         mark it as having been created by bash as an exported function.
-         Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169
-       - mk_env_string: takes new argument, indicating whether we are
-         constructing a function
-       - mk_env_string: encodes function names as described above, so
-         initialize_shell_variables can find them
-
-                                  9/28
-                                  ----
-copy_cmd.c
-       - copy_redirects: before calling savestring on here_doc_eof, make
-         sure it's not NULL (it could have been the result of a here
-         document delimited by EOF or EOS).  Fixes bug reported by
-         Michal Zalewski <lcamtuf@coredump.cx>.  Fix for CVE-2014-6277
-
-make_cmd.c
-       - make_redirection: initialize here_doc_eof member to NULL.  Rest of
-         fix for CVE-2014-6277
-
-                                  9/29
-                                  ----
-parse.y
-       - current_input_line_state: return a sh_input_line_state_t containing
-         the current shell_input_line and its index and size variables
-
-shell.h
-       - current_input_line_state: extern declaration
-
-builtins/evalstring.c
-       - parse_and_execute: call reset_parser() before returning if
-         SEVAL_ONECMD set.  Fixes bug reported by Michal Zalewski
-         <lcamtuf@coredump.cx> and designated CVE-2014-6278
-       - parse_and_execute: if we parse a function definition when
-         SEVAL_FUNCDEF is set, but don't consume the entire passed string,
-         throw an error, reset the parser, and return.  Part of fix for
-         CVE-2014-6278
-       - parse_and_execute: if parsing the shell function definition when
-         SEVAL_FUNCDEF is set transforms the function name (e.g., if it
-         begins with a newline or begins or ends with whitespace), throw
-         an error, reset the parser, and return.  Fixes bug reported by
-         Eric Kobrin <ekobrin@akamai.com>
-
-                                  10/2
-                                  ----
-jobs.c
-       - bgp_prune: don't do anything if bgpids.npid == 0 or
-         bgpids.list == NULL.  This can happen if something gets run before
-         the job control framework is initialized.  Bug report from
-         <mancha1@zoho.com>
-
-                                  10/3
-                                  ----
-parse.y
-       - xparse_dolparen: don't set token_to_read to newline after calling
-         parse_string() and cleaning up when the shell is not interactive.  This
-         makes the parser think it's ok to read new commands even if it's not in
-         a state where that should be possible.  Underlying fix for bug reported
-         by Michal Zalewski <lcamtuf@coredump.cx> and designated CVE-6278
-       - parser_remaining_input: new function, returns the portion of
-         shell_input_line that hasn't yet been read
-       - current_input_line_state: removed
-
-shell.h
-       - parser_remaining_input: extern declaration
-       - current_input_line_state: removed
-
-builtins/evalstring.c
-       - parse_and_execute: change code that checks whether parse_command has
-         consumed the entire passed string when SEVAL_FUNCDEF is used to use
-         parser_remaining_input instead of messing around with (new)
-         current_input_line_state.  Part of fix for CVE-2014-6278
-
-variables.c
-       - initialize_shell_variables: if we don't call parse_and_execute, free
-         the temporary string, since parse_and_execute won't.  Report and fix
-         from Eric Kobrin <ekobrin@akamai.com>
-
-                                  10/4
-                                  ----
-print_cmd.c
-       - print_function_def: when in posix mode, print shell function
-         definitions as posix specifies them, without the leading
-         `function' keyword
-
-general.c
-       - exportable_function_name: return 1 if the passed string can be
-         added to the environment as an exported function name.  Currently
-         prohibits function names containing  `/' and `=' from being
-         exported
-
-general.h
-       - exportable_function_name: extern declaration
-
-builtins/setattr.def
-       - set_or_show_attributes: if exporting a function with export -f,
-         call exportable_function_name to determine whether the function
-         should be exported; don't export function if it returns 0
-
-                                  10/7
-                                  ----
-builtins/setattr.def
-       - set_or_show_attributes: don't show identifiers that are invisible
-         and imported from the environment, since that combination of
-         attributes means that the imported variable is not a valid shell
-         identifier.  Report from Stephane Chazelas
-         <stephane.chazelas@gmail.com>
-
-                                  10/8
-                                  ----
-shell.c
-       - shell_initialize: set new variable should_be_restricted, which
-         says whether or not the shell will be a restricted one based on the
-         shell name; use in calls to initialize_shell_variables (to inhibit
-         importing shell functions) and initialize_shell_options (to inhibit
-         parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing
-         $BASHOPTS).  Report from <paulfm@umn.edu>
-
-                                  10/12
-                                  -----
-execute_cmd.c
-       - execute_function: unwind-protect loop_level, set loop_level to 0
-         when entering a function so break and continue in functions don't
-         break loops running outside of the function. Fix picked up from
-         dash via Herbert Xu <herbert@gnodor.apana.org.au>
-
-                                  10/13
-                                  -----
-doc/Makefile.in
-       - bashref.pdf: create using texi2dvi --pdf rather than postprocessing
-         the dvi file, so we have PDF bookmarks and links.  Fix from
-         Siep Kroonenberg <siepo@cybercomm.nl>
-
-                                  10/14
-                                  -----
-subst.h
-       - Q_ARITH: new quoting flag. Semantics are per Posix's spec for
-         arithmetic expansion: act as if string is quoted, but don't treat
-         double quotes specially (in this case, they will be removed by quote
-         removal)
-       - Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed
-         array subscript
-
-subst.c
-       - expand_arith_string: if we are not expanding the string, but we saw
-         a quote with Q_ARITH specified as one of quoting flags, perform
-         quote removal even if Q_DOUBLE_QUOTES is specified
-       - param_expand: change calls to expand_arith_string for $[ and $((
-         cases to specify Q_ARITH.  Now $(( "$x" )) and $(( "x" )) work if x
-         has a value that evaluates to a valid number, as Posix specifies
-       - expand_word_internal: add test for quoted&Q_ARITH to the tilde case,
-         so we continue to perform tilde expansion in arithmetic contexts
-       - expand_word_internal: if quoted&Q_ARITH, continue processing when we
-         see a `"', acting as if the double quote isn't present (already
-         Q_DOUBLE_QUOTED)
-
-arrayfunc.c
-       - array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted
-         argument in call to expand_arith_string.  This inhibits word
-         splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH),
-         identical to the quote flags passed while expanding $(( )) and $[ ].
-         Q_ARRAYSUB reserved for future use.  Fixes problem reported by
-         Stephane Chazelas <stephane.chazelas@gmail.com>
-
-                                  10/16
-                                  -----
-subst.c
-       - parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we
-         are expanding what looks like an array subscripted with @ or *,
-         make sure the variable we're expanding is actually an array before
-         we add Q_DOUBLE_QUOTES to the flags.  If we don't, things like
-         scalar[@] will remain quoted.  Fixes ubuntu bug 1381567
-         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567
-
-                                  10/17
-                                  -----
-{jobs,nojobs}.c
-       - get_original_tty_job_signals: get original signal dispostions for
-         SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in
-         make_child
-       - default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or
-         SIGTTOU to SIG_IGN if they were ignored at shell startup instead of
-         unconditionally setting them to SIG_DFL.  Fixes bug reported by
-         idallen@idallen.ca
-
-jobs.h
-       - get_original_tty_job_signals: extern declaration
-
-trap.c
-       - initialize_traps: add call to get_original_tty_job_signals
-
-                                  10/22
+                                  11/12
                                   -----
-subst.c
-       - expand_string_for_rhs: when expanding in this context (rhs of a word
-         expansion or pattern removal), we don't perform word splitting, so
-         we don't want to split $* if IFS is empty.  Fixes bug reported by
-         Stephane Chazelas <stephane.chazelas@gmail.com>
+configure.ac
+       - changes to make --enable-profiling work on Linux (-pg, no static link,
+         no -static in LDFLAGS)
 
-                                  10/23
-                                  -----
-subst.c
-       - param_expand: when expanding $* in a pattern context where the
-         expansion is quoted (Q_PATQUOTE), don't quote the expansion --
-         the outer quotes don't make the characters in the expansion of
-         $* special.  Posix interp 221.  Reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>
+Makefile.in
+       - changes to make --enable-profiling work on Linux (take
+         ${PROFILE_FLAGS} out of  BASE_CCFLAGS, add to CCFLAGS instead; add
+         BASE_LDFLAGS define that doesn't include -pg or -static; use
+         BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to
+         LDFLAGS)
+
+tests/run-gprof
+       - changes to make profiling test suite with gprof work on Linux (set
+         GMON_OUT_PREFIX to handle multiple profiled processes per test;
+         change default filename to gmon.out from bash.gmon; look for
+         gprof output files in ${TMPDIR} instead of /tmp; handle multiple
+         profiling files starting with $GMON_OUT_PREFIX)
 
-                                  10/28
+locale.c
+       - locale_isutf8: use locale_charset() if it's available and nl_langinfo
+         isn't
+       - locale_isutf8: add code to parse a locale specification and determine
+         whether the encoding is UTF-8 (or utf8) in the absence of
+         nl_langinfo and locale_charset
+       - set_default_locale: make sure to set locale_utf8locale early on
+       - locale_utf8locale: set via call to locale_isutf8 wherever LANG,
+         LC_ALL, or LC_CTYPE is set
+
+                                  11/13
                                   -----
-lib/readline/bind.c
-       - enable-bracketed-paste: new bindable variable, enables support for
-         a terminal's `bracketed paste mode'.  Code contributed by
-         Daniel Colascione <dancol@dancol.org>
+lib/readline/display.c
+       - rl_redisplay: handle report of potential integer overflow in
+         horizontal display mode from Mateusz Lenik <mlen@mlen.pl>
 
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - enable-bracketed-paste: add description
+lib/sh/mbschr.c
+       - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking
+         for an ASCII character, use (essentially) strchr as a shortcut
 
-lib/readline/{readline.c,rlprivate.h}
-       - _rl_enable_bracketed_paste: declarations
-       - #defines for use by bracketed paste implementation
+lib/sh/shmbchar.c
+       - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement
+         functions (should also be able to use utf8_mblen in subst.c:
+         string_extract_verbatim)
+       - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar
+       - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not
+         used if earlier shortcut taken)
 
-lib/readline/rltty.c
-       - rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we
-         are supposed to enable bracketed-paste mode; change terminal_prepped
-         to indicate we sent that string and need to clean up
-       - rl_deprep_terminal: if terminal_prepped indicates we sent the
-         bracketed-paste mode init string to the terminal, send the cleanup
-         string before restoring the terminal modes
+lib/sh/unicode.c
+       - u32cconv: don't use nl_langinfo early to call u32toutf8()
+       - u32cconv: use locale_utf8locale to set utf8locale
+       - u32cconv: when initializing (u32init == 0), use locale_charset, then
+         nl_langinfo, then stub_charset to determine the charset
+       - u32cconv: even if we don't have iconv, if locale_utf8locale is non-
+         zero, return u32toutf8
 
-lib/readline/kill.c
-       - rl_bracketed_paste_begin: function to read bracketed paste until
-         BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the
-         paste as a single (undoable) object.  Bound to BRACK_PASTE_PREF
+                                  11/15
+                                  -----
+lib/readline/nls.c
+       - _rl_init_locale: new function, split off code that determines current
+         locale from _rl_init_eightbit, use it to set _rl_utf8locale
 
-lib/readline/funmap.c
-       - bracketed-paste-begin: new bindable command, executes
-         rl_bracketed_paste_begin
+lib/readiline/rlprivate.h
+       - _rl_init_locale: new extern declaration
 
 lib/readline/readline.c
-       - bind_bracketed_paste_prefix: new function, sets up to recognize
-         the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs
-         keymap and vi insertion keymap
-       - readline_initialize_everything: call bind_bracketed_paste_prefix
+       - rl_initialize: if not initializing everything the first time, call
+         _rl_init_locale to check current locale and set _rl_utf8locale
 
-                                  11/1
-                                  ----
-builtins/ulimit.def
-       - RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS
-       - -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this
-         process
-       - -P: new option: RLIMIT_NPTS, max number of pseudoterminals available
-         to this process
-
-doc/{bash.1,bashref.texi}
-       - document `ulimit -k' option
-       - document `ulimit -P' option
+lib/readline/text.c
+       - _rl_insert_char: optimize cases where we are inserting a single-byte
+         character in a locale with multibyte characters
+       - _rl_insert_char: check whether character is single byte if we know
+         we are in a UTF-8 locale, optimize single-byte case to avoid calls
+         to mbrtowc and memmove/memcpy
+
+lib/readline/mbutil.c
+       - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the
+         current character does not have the eighth bit set ((c & 0x80) == 0),
+         return that char without bothering to call mbrtowc
+       - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8
+         locale and the current character is not a multibyte character
+       - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that
+         to avoid calls to mbrtowc
 
-parse.y
-       - `timespec list_terminator' production: if the list terminator is `;'
-         set last_read_token to `;' to allow things like `time ; command' to
-         time null commands and not throw a syntax error.  Patch from
-         Piotr Grzybowski <narsil.pl@gmail.com>
-       - `BANG list_terminator' production: do the same thing
+lib/readline/display.c
+       - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid
+         calls to mbrlen and mbrtowc
+       - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid
+         calls to mbrtowc
 
-variables.c
-       - sv_optind: use find_shell_variable and get_variable_value so we can
-         have the variable's context in the case we need to do something
-         when we are restoring a previous variable context's value
+                                  11/17
+                                  -----
+lib/readline/histlib.h
+       - PATTERN_SEARCH: new flag for history search interfaces, means to
+         search for a pattern as Posix specifies
 
-builtins/getopt.h
-       - sh_getopt_state_t: struct to save sh_getopt's internal state so we
-         can restore it around function calls in the event that we have a
-         local copy of OPTIND
+lib/readline/histsearch.c
+       - history_search_internal: now takes a `flags' argument instead of just
+         an `anchored' argument to accommodate PATTERN_SEARCH
+       - _hs_history_patsearch: new internal interface to use when flags
+         specify PATTERN_SEARCH
 
-builtins/getopt.[ch]
-       - sh_getopt_{save,restore}_istate: new functions to save and restore
-         getopt's internal state
-       - sh_getopt_{alloc,dispose}_istate: new functions to allocate and
-         deallocate sh_getopt_istate_t objects
+lib/readline/rlprivate.h
+       - SF_PATTERN: new flag for non-incremental search contexts, means to
+         treat search string as a pattern (maps to PATTERN_SEARCH)
 
-execute_cmd.c
-       - maybe_restore_getopt_state: restore sh_getopt state after executing
-         function body iff the funtion declared a local copy of OPTIND
-       - execute_function: save sh_getopt state before executing function body
-       - execute_function: note in getopt_state->flags whether or not the
-         function declared a local copy of OPTIND; used by
-         maybe_restore_getopt_state
-       - execute_function: maybe restore sh_getopt state before returning via
-         call to maybe_restore_getopt_state.  Fixes bugs with getopts and
-         state between calls reported in 2011 by Bernd Eggink
-         <monoped@sudrala.de> and in 2014 by Oyvind Hvidsten
-         <oyvind.hvidsten@dampir.no>
+lib/readline/search.c
+       - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN
+       - noninc_search_from_pos: takes an additional `flags' argument for
+         SF_PATTERN
+       - noninc_dosearch: pass flags argument through to noninc_search_from_pos
+       - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used
+         to invoke the search) is `?' or `/', add SF_PATTERN to the flags
+         to conform to Posix spec for vi-mode editing
+       - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a
+         pattern search, pass SF_PATTERN to noninc_search_from_pos
+       - rl_noninc_forward_search_again: if in vi command mode and key == `N',
+         make sure flags arg passed to noninc_dosearch includes SF_PATTERN
+       - rl_noninc_reverse_search_again: if in vi command mode and key == `n',
+         make sure flags arg passed to noninc_dosearch includes SF_PATTERN
+       - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos
 
-configure.ac
-       - enable-function-import: new option, controls whether function imports
-         are included.  Enabled by default.  Patch from David Galos
-         <davegalos@google.com>
+                                  11/18
+                                  -----
+lib/readline/search.c
+       - noninc_search_from_pos: takes a new argument, a pointer to int where
+         it stores the offset of the match in the history line (if non-NULL),
+         modified callers
+       - rl_history_search_internal: pass newcol pointer to
+         noninc_search_from_pos to avoid having to recompute the match offset
+         in the matching history entry
 
 config.h.in
-       - FUNCTION_IMPORT: define controlled by enable-function-import above
-
-variables.c
-       - initialize_shell_variables: include code to import function
-         definitions from the environment if FUNCTION_IMPORT is defined
-
-doc/bashref.texi
-       - --enable_function-import: document new configuration option
-
-                                  11/5
-                                  ----
-lib/readline/history.c
-       - history_lines_read_from_file: new variable, set by read_history and
-         read_history_range to the actual number of lines read from the
-         history file.  The value is valid immediately after a call to one
-         of those functions
-       - history_lines_written_to_file: new variable, set by write_history,
-         history_do_write, and history_truncate_file to the actual number of
-         lines written to the history file.  The value is valid immediately
-         after a call to one of those functions
-
-variables.c
-       - sv_histsize: set history_lines_in_file after history_truncate_file()
-         only if hmax < history_lines_in_file (lines we've already read); a
-         cosmetic change only
-
-bashhist.c
-       - load_history: set history_lines_in_file after read_history() from
-         history_lines_read_from_file, since read_history reads all of the
-         lines from the history file even if it's more than $HISTSIZE
-       - maybe_save_shell_history: after calling write_history(), set
-         history_lines_in_file to history_lines_written_to_file, since we
-         can assume that we read everyhing we just wrote
-
-builtins/history.def
-       - history_builtin: after calling read_history (history -r), set the
-         new value of history_lines_in_file, for the same reason as above
-       - history_builtin: after calling read_history_range (history -n), set
-         history_lines_in_file from history_lines_read_from_file
-
-                                  11/6
-                                  ----
-lib/readline/histfile.c
-       - history_truncate_file: since we move the old file to a backup copy
-         before truncating, make sure the new file is owned by the same uid
-         as the old
-       - history_do_write: use chown in the same way as history_truncate_file
+       - define HAVE_FNMATCH if we have the fnmatch function (configure was
+         already checking for it)
+
+lib/readline/histsearch.c
+       - _hs_history_patsearch: transform the pattern into one ending in a
+         `*' to avoid having to perform multiple match attempts from each
+         index in the history line
+       - history_search_internal: changes to handle pattern matching if
+         PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined.  This
+         makes vi-mode history searching treat the user-specified search
+         string as an fnmatch pattern, as Posix requires.  Fixes issue
+         reported by <jwdevel@gmail.com>
 
-                                  11/12
+                                  11/19
                                   -----
-lib/readline/display.c
-       - expand_prompt: takes a new `flags' argument; only one flag defined
-         so far: PMT_MULTILINE
-       - expand_prompt: changed all callers to add new flags argument
-       - rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in
-         FLAGS argument to expand_prompt if expanding parts of a prompt
-         containing embedded newlines
-       - expand_prompt: only add mode char to last line of a prompt with
-         embedded newlines, so mode indicator doesn't get lost and gets
-         updated properly.  Fixes problem reported by Renlin Li
-         <lirenlin@gmail.com>
+builtins/shopt.def
+       - shopt_enable_hostname_completion: only declare this if READLINE
+         defined, since that's the only time it's used.  Reported by
+         isabella parakiss <izaberina@gmail.com>
 
-                                  11/13
+                                  11/20
                                   -----
+builtins/common.c
+       - display_signal_list: make `kill -l 0' print `EXIT', modifying change
+         from 9/17
 
-lib/readline/display.c
-       - prompt_modestr: changed prompt_modechar to return a string denoting
-         the editing mode; default strings for emacs and both vi modes are
-         #defines in this file.  prompt_modestr takes an argument in which
-         it returns the length of the mode string
-       - expand_prompt: if expanding mode strings in the prompt, get the
-         mode string to use and add it at the beginning of the prompt string,
-         before expanding it.  This will allow future work allowing the mode
-         string to contain invisible characters
-
-                                  11/15
+                                  11/21
                                   -----
-lib/readline/rlprivate.h
-       - _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for
-         variables to hold current values of user-settable mode strings;
-         variables to hold lengths 
+subst.c
+       - expand_word_internal: when the shell encounters a backslash as the
+         last character of the string, don't try to add a '\'0' to the end
+         of the string if the string is quoted, just add a <CTLESC><\> and
+         skip to the end of string processing.  Fixes oob-read error
+         reported by Jerzy Kramarz <op7ica@gmail.com>
 
-lib/readline/rlconf.h
-       - defines for default values of the mode strings for each editing mode
-         and keymap
+test.c
+       - two_arguments: check argv[pos][1] before checking argv[pos][2] when
+         looking for a unary argument.  Fixes oob-read error on single `-'
+         in unary operator position reported by Jerzy Kramarz
+         <op7ica@gmail.com>
+       - ANDOR: check s[1] before checking s[2] in case s[1] == end of string.
+         Fixes oob-read error reported by Jerzy Kramarz <op7ica@gmail.com>
 
-lib/readline/display.c
-       - _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of
-         user-settable mode strings
-       - _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths
-         of corresponding mode string variables
-       - prompt_modestr: return appropriate user-settable mode string
-         variables
+subst.c
+       - command_substitute: now takes additional flags argument, changed one
+         caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers
+         pass 0
+       - command_substitute: pass through flags argument to read_comsub
+       - read_comsub: now takes additional new flags argument to indicate
+         whether or not the word is in a context where word splitting will
+         eventually be performed
+       - read_comsub: if we are running in a context where word splitting
+         will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is
+         in $IFS, add a CTLESC to make sure it gets through a round of
+         dequoting
 
-lib/readline/bind.c
-       - {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string
-         variables
-       - sv_{emacs,viins,vicmd}_modestr: variable handling functions for user-
-         settable mode string variables. Non-null values are run through
-         rl_translate_keyseq so users can include invisible character
-         sequences in the mode strings; null values restore the default
-       - _rl_get_string_variable_value: handle values for new user-settable
-         mode string variables. Original code contributed by Dylan Cali
-         <calid1984@gmail.com>
+                                  11/23
+                                  -----
+parse.y
+       - xparse_dolparen: since reset_parser frees the pushed string list,
+         and this is supposed to be a separate parsing context, we need to
+         save and restore pushed_string_list around the call to parse_string
+         and reset_parser.  Fixes bug reported by Dan Douglas
+         <ormaaj@gmail.com>
 
-lib/readline/doc/rluser.texi
-       - {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that
-         you can use \1 and \2 to bracket sequences of non-printing
-         characters
+bashhist.h
+       - HISTEXPAND_DEFAULT: default value of history_expansion, moved here
+         from flags.c
 
-                                  11/16
-                                  -----
-lib/readline/history.c
-       - add_history: replace loop that copies history list down one item
-         with call to memmove to take advantage of whatever efficiencies
-         libc can offer.  Won't be any slower than current loop
+flags.[ch]
+       - histexp_flag: new variable, this is what set -H/set -o histexpand
+         sets; history_expansion set to value of this variable; defaults to 0
+       - history_expansion: now set to HISTEXPAND_DEFAULT
 
-lib/readline/display.c
-       - rl_redraw_prompt_last_line: new function, calls redraw_prompt if
-         the prompt contains multiple lines; calls rl_forced_update_display
-         if not
+bashhist.c
+       - bash_history_reinit: if interact == 0, set history_expansion to the
+         value of histexp_flag, to allow -H option to enable history
+         expansion
+       - bash_history_reinit: if interact == 0, make sure
+         history_expansion_inhibited is set opposite of histexp_flag, so
+         enabling history expansion with -H invocation option turns off
+         inhibited expansion. If interactive shell, we turn it off so
+         history_expansion controls whether or not history expansion takes
+         place. In practice, this function is always called with interact == 0,
+         and -c command still doesn't perform history expansion
 
-lib/readline/readline.h
-       - rl_redraw_prompt_last_line: extern declaration, undocumented in
-         texinfo manual until I get it a little more work
+shell.c
+       - init_interactive: make sure histexp_flag and history_expansion are
+         identical in an interactive shell; allows both -H/+H option and
+         default compilation options (HISTEXPAND_DEFAULT) to work
 
-bashline.c
-       - bash_execute_unix_command: instead of unconditionally calling
-         rl_forced_update_display, call rl_redraw_prompt_last_line if we
-         cleared the last line before executing the command.  This keeps
-         commands that don't display any other output but just manipulate
-         the contents of the line buffer from redisplaying the prompt lines
-         before the last newline multiple times.  Fixes bug reported by
-         Jesper Nygards <jesper.nygards@gmail.com> and Rob Foehl
-         <rwf@loonybin.net>.  This means that commands that display output
-         will *only* display the final line of the prompt
-       - bash_execute_unix_command: if the command returns 124, we redraw
-         the line unconditionally, including all lines of the prompt
+                                  11/24
+                                  -----
+subst.c
+       - get_word_from_string: take advantage of the fact that SEPARATORS is
+         always a (possibly local) copy of IFS, so build a local charmap of
+         separators and use it instead of the (cached and possibly stale)
+         ifs_cmap map and isifs macro.  Fixes bug with -N stripping leading
+         whitespace reported by Clark Wang <clarkw@vmware.com>
 
-                                  11/18
+                                  11/25
                                   -----
-builtins/mapfile.def
-       - mapfile_builtin: don't allow a valid array reference through to
-         mapfile(), since it will just create a shell variable with that name.
-         Bug and fix from Eduardo A. Bustamante López <dualbus@gmail.com>
+builtins/read.def
+       - read_builtin: make `i' volatile, since auto variables are technically
+         undefined after a longjmp, and a timeout on SIGALRM causes one.
+         Fix suggested by Dmitry Goncharov <dgoncharov@users.sf.net>
 
-                                  11/19
+                                  11/27
                                   -----
-lib/readline/complete.c
-       - _rl_colored_completion_prefix: new variable, if non-zero, and color
-         support is compiled in, and the $LS_COLORS variable exists and
-         contains color definitions, display any common prefix of a set of
-         completions in blue when displaying all the possible completions.
-         Doesn't work with menu-complete, which inserts possible completions
-         inline
-       - colored_prefix_start(), colored_prefix_end(): new functions, used to
-         bracket colored completion prefixes
-       - fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix
-         is > 0, display the first PREFIX_BYTES bytes of the word bracketed
-         by calls to colored_prefix_start and colored_prefix_end
-       - print_filename: if _rl_colored_completion_prefix is > 0, compute the
-         length in bytes of the common prefix and pass that to fnprint
+parse.y
+       - shell_getc: if we are reading input from a string, and we get the
+         ending '\0', and we are not expanding an alias, return EOF right
+         away.  It might be an eval'ed string that has a syntax error.
+         Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
 
-lib/readline/readline.c
-       - readline_initialize_everything: initialize the colors from $LS_COLORS
-         if _rl_colored_completion_prefix is non-zero
+                                  11/28
+                                  -----
+subst.c
+       - expand_word_internal: if we're expanding a quoted string containing
+         a tilde as the first character of a word, only expand the tilde if
+         we're expanding an array subscript (Q_ARRAYSUB), not if we're
+         expanding any arithmetic expression (Q_ARITH).  This fixes a
+         backwards compatibility issue with expressions like ~0 reported by
+         Bize Ma <binaryzebra@gmail.com>
 
-lib/readline/colors.c
-       - _rl_print_prefix_color: new function, changes text color to that
-         defined for the common prefix of a set of possible completions
-         (currently cyan, same as directories); currently uses C_PREFIX,
-         defined in colors.h as C_DIR
+subst.c
+       - parameter_brace_expand_indir: if the variable is not special and
+         the indirect variable is unset (!variable where variable is unset),
+         report an error.  This is a slight incompatibility with previous
+         versions, which did not differentiate between indirecting an unset
+         variable and an indirect expansion resulting in an unset variable.
+         Fixes omission reported by otenba@protonmail.com
 
-lib/readline/colors.h
-       - _rl_print_prefix_color: new extern declaration
+                                  11/30
+                                  -----
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+       - do-uppercase-version: since this doesn't actually exist, replace it
+         with do-lowercase-version, with the caveat that do-lowercase-version
+         results in undefined behavior if bound to a character that's
+         already lowercase.  Suggested by Branden Robinson
+         <g.branden.robinson@gmail.com>
 
-lib/readline/bind.c
-       - colored-completion-prefix: new bindable variable, if set, common
-         prefix of a set of possible completions is displayed in color.
-         Feature requested by several, most recently by Richard Neill
-         <rn214@richardneill.org> (in a slightly different form) and
-         Duy Nguyen <pclouds@gmail.com>
+lib/readline/doc/rluser.texi
+       - history-substring-search-forward: was misspelled as "substr-search";
+         ditto for search-backward
 
-                                  11/20
-                                  -----
-builtins/printf.def
-       - printf_builtin: allow null (empty) format strings supplied with
-         -v var to set `var' to the empty string.  That is, printf -v var ""
-         is now the same as var="".  Change suggested by Mike Frysinger
-         <vapier@gentoo.org>
+doc/bash.1
+       - history-substring-search-{backward,forward}: add documentation, text
+         straight from readline.3
 
-pathexp.h
-       - FNMATCH_NOCASEGLOB: macro to decide whether or not to pass
-         FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case
-         is set; analogout to FNMATCH_IGNCASE
+jobs.c
+       - initialize_job_control: if the terminal's process group is valid,
+         but the shell is not the foreground process, check for terminating
+         signals (like SIGHUP, which the kernel would send if the process
+         group were orphaned) during the loop where we try to stop the shell
+         if it's not in the foreground.  Not a perfect solution; the kernel
+         might not send SIGHUP
 
-pathexp.c
-       - glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags
-         passed to strmatch; if nocaseglob is used to generate glob matches,
-         it should be used to generate ignored matches
+                                  12/1
+                                  ----
+jobs.c
+       - initialize_job_control: only go through the SIGTTIN loop 16 times at
+         most before deciding we're in the background and probably a member of
+         an orphaned process group; set original_pgrp to the terminal's pgrp
+         (so the eventual give_terminal_to doesn't leave the terminal in the
+         wrong pgrp); and bail on job control initialization
+
+tests/run-all
+       - unset SHELLOPTS to avoid its options `polluting' the test
+         environment.  Suggestion from Vladimir Marek
+         <Vladimir.Marek@oracle.com>
+
+tests/execscript
+       - use $PWD/exec8.sub to protect against someone who has a cd command
+         in his bashrc.  Report from  Vladimir Marek
+         <Vladimir.Marek@oracle.com> 
 
-                                  11/21
-                                  -----
-pcomplete.c
-       - filter_stringlist: the call to strmatch now honors the setting of
-         nocasematch.  Feature request from Ville Skytta <ville.skytta@iki.fi>
-         back in 2010
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - complete -X: document that filtering the list of possible completions
-         honors the nocasematch option when performing matching
-
-lib/glob/gmisc.c
-       - include chartypes.h and strmatch.h for new defines
-       - match_pattern_{wchar,char}: now take new third FLAGS argument, flags
-         have same meanings as strmatch(); intent is to handle case
-         insensitive comparisons under same conditions as strmatch
-       - FOLD: imported case-folding define from sm_loop.c; wide and single-
-         byte character versions
-       - match_pattern_{wchar,char}: use FOLD when comparing characters to
-         honor FNM_CASEFOLD if set in FLAGS argument
+                                  12/2
+                                  ----
+shell.c
+       - open_shell_script: call end_job_control before exiting the shell in
+         case we were run as `bash -i script' and there is a problem with
+         executing `script'.  If we don't, the terminal ends up in the wrong
+         process group.  Fix from Clark Wang <clarkw@vmware.com>
 
-externs.h
-       - match_pattern_{wchar,char}: updated extern declarations
+                                  12/3
+                                  ----
+parse.y
+       - read_comsub: if we look for a character following a `<' and it's
+         not `<' (indicating that we don't have to read a here-document),
+         make sure we push that character back and go through the loop again
+         so we note the right word start location.  Fixes bug reported by
+         parasite parasite <42parasite@gmail.com>
 
 subst.c
-       - match_{upattern,wpattern}: update strmatch/wcsmatch calls to include
-         FNMATCH_IGNCASE in flags argument
-       - match_{upattern,wpattern}: update match_pattern_{char,wchar} calls
-         to include FNMATCH_IGNCASE in flags argument (consistent with calls
-         to strmatch).  This makes pattern substitution word expansion honor
-         nocasematch shell option.  Feature requested by Davide Baldini
-         <baldiniebaldini@gmail.com>
-       - match_wpattern: make sure to fold case if necessary when doing simple
-         matching
+       - parameter_brace_expand_indir: clean up checks for unset variables to
+         minimize incompatibilities with previous versions
 
-doc/{bash.1,bashref.texi}
-       - pattern substitution: updated description to include honoring setting
-         of nocasematch when performing matching
+                                  12/5
+                                  ----
+lib/readline/history.c
+       - add_history: don't update history_length until all of the updates to
+         the_history are complete, so history_length is always consistent.
+         Report and fix from Hong Cho <hong.cho@citrix.com>
 
-subst.c
-       - expand_word_internal: optimize handling of "$@" idiom by calling
-         list_rest_of_args() and quote_list() directly at the top of the
-         function instead of going through normal code path
-       - cached_quoted_dollar_at: WORD_LIST of quoted positional parameters,
-         used by same code above that optimizes "$@"; if non-null we just
-         return a copy of the list; if null, we save a copy of the list we
-         create
-       - invalidate_cached_quoted_dollar_at: convenience function to allow
-         other parts of the shell (e.g., remember_args()) to destroy the
-         cached list of quoted positional parameter when the positional
-         parameters change
+bashline.c
+       - bash_backward_shellword: fix to work better at the end of the line,
+         with multiple trailing whitespace characters.  Inspired by report
+         from Kirill Timofeev <kt97679@gmail.com>
 
-builtins/common.c
-       - remember_args: call invalidate_cached_quoted_dollar_at()
+Makefile.in
+       - bashbug: use `^' as the sed delimiter instead of `%'; some compilers
+         use `%' in CFLAGS.  Report from  Vladimir Marek
+         <Vladimir.Marek@oracle.com> 
 
-builtins/shift.def
-       - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying
-         dollar_vars[]
+                                  12/6
+                                  ----
+test.c
+       - test_unop: make sure op[1] != 0 before testing op[2]
+       - term: make sure argv[pos][1] != 0 before testing argv[pos][2].  Fixes
+         oob-read reported by Jerzy Kramarz <op7ica@gmail.com>
 
-builtins/source.def
-       - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just
-         to be safe
+                                  12/7
+                                  ----
+lib/glob/glob.c
+       - glob_filename: assign the return value of realloc (results, ...) to
+         a temp pointer, so if realloc returns NULL, we make sure we free
+         results.  Report from Kirill Timofeev <kt97679@gmail.com>
 
-                                  11/23
+                                  12/12
                                   -----
-builtins/evalfile.c
-       - _evalfile: return -1 if errno == ENOENT and the flags don't include
-         FEVAL_ENOENTOK.  If we print an error message we should return an
-         error
-       - force_execute_file: new function, reads and executes commands from
-         a file but returns an error if file  doesn't exist
+lib/sh/shquote.c
+       - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte
+         characters that are in the current locale's <blank> character class
 
-builtins/common.h
-       - force_execute_file: new extern declaration
+builtins/printf.def
+       - printf_builtin: when processing the `%q' format, make sure to
+         backslash quote all <blank> characters by making sure that FLAGS
+         passed to sh_backslash_quote includes 2.  Fixes issue for certain
+         iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a
+         non-breaking space. Report from Stephane Chazelas
+         <stephane.chazelas@gmail.com>
 
-shell.c
-       - main: call start_debugger even if dollar_vars[1] == 0 if the shell
-         isn't interactive (interactive_shell == 0)
-       - start_debugger: call force_execute_file instead of maybe_execute_file;
-         turn off debugging mode if it returns value < 0
+lib/sh/eaccess.c
+       - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn
+         it into a stat on file descriptor N, as if /dev/fd were not
+         available.  This is the case on some old versions of SunOS.  Report
+         and patch from Dmitry Goncharov <dgoncharov@users.sf.net>
 
-                                  11/24
-                                  -----
-hashlib.h
-       - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but
-         changes traversal order when not sorting results
+config.h.in
+       - DEV_FD_STAT_BROKEN: add define
 
-                                  11/25
-                                  -----
-doc/{bash.1,bashref.texi}
-       - make it clearer, by breaking it out into a separate paragraph, that
-         referencing an array without a subscript is equivalent to referencing
-         it with subscript 0
-       - add text saying that referencing any variable using a valid subscript
-         is OK
+configure.ac
+       - --enable-dev-fd-stat-broken: new command-line option, defines
+         DEV_FD_STAT_BROKEN if supplied at configure time
 
-                                  11/28
-                                  -----
+doc/bashref.texi
+       - --enable-dev-fd-stat-broken: document new command-line option for
+         configure
 
 arrayfunc.c
-       - bind_array_variable, bind_assoc_variable: allow binding value to a
-         readonly variable if the ASS_FORCE flag is set in the FLAGS
-         argument
+       - assoc_expand_once: new variable, declared here just because
 
-subst.h
-       - ASS_FORCE: new assignment flag; means to allow assignment even if
-         variable is marked readonly
+arrayfunc.h
+       - assoc_expand_once: extern declaration
+       - AV_NOEXPAND: new flag value for the array_value family of functions:
+         means to not run associative array subscripts through word expansion
 
-builtins/declare.def
-       - when assigning a value to an array or assoc variable using
-         something like `declare -r foo=bar' where foo is an existing array
-         variable, pass the ASS_FORCE to assign_array_var_from_string so
-         the assignment is allowed.  Fixes debian bug 765759
-         http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759
+builtins/set.def
+       - unset_builtin: call unbind_array_element with assoc_expand_once as
+         third arg, controls whether we expand associative array subscripts
+         (if 1, we suppress the usual expansion).  With accompanying shopt,
+         provides backwards compatible option to solve problem with quotes
+         and other characters in associative array subscripts pointed out
+         most recently by Mingye Wang (Arthur2e5) <arthur200126@gmail.com>
 
-builtins/setattr.def
-       - var_attribute_string: new function to return (as argument) a char
-         array with attribute flag values for a given variable; returns the
-         length of the array
+builtins/shopt.def
+       - assoc_expand_once: new option, controls value of internal variable
+         with the same name. Currently undocumented because I'm not completely
+         sold on the name
 
-lib/sh/shquote.c
-       - sh_quote_reusable: function returning a version of its string
-         argument that is quoted for reuse
+expr.c
+       - evalexp: now takes a second argument, flags. Changed all callers in
+         multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c,
+         subst.c,test.c,variables.c)
 
 externs.h
-       - sh_quote_reusable: extern declaration
-
-builtins/common.h
-       - MAX_ATTRIBUTES: define used to size arrays for attribute flag
-         characters
-       - var_attribute_string: new extern function declaration
-
-subst.c
-       - array_remove_pattern: fixed a bug where `var' instead of `v' was
-         tested for invisible attribute
-       - get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE
-         because callers may need to use it
-       - parameter_brace_transform: family of functions to implement the new
-         mksh-inspired ${param@spec} transformation word expansions.  Some
-         of the operators transform the (expanded) value of the parameter,
-         the rest expand to information about the parameter itself
-         (array_transform, parameter_list_transform, list_transform,
-         string_transform, pos_params_assignment, array_var_assignment,
-         string_var_assignment)
-       - parameter_brace_expand: changes to parse the new `@' word expansion
-         operator and call parameter_brace_transform appropriately
-       - parameter_brace_expand: make sure we handle ${#@} as we have before
-         even in the presence of the new `@' operator
+       - EXP_EXPANDED, new flag for second argument to evalexp
 
-variables.c
-       - push_temp_var: make sure to call bind_variable_internal with the
-         ASS_FORCE flag so we override readonly variables created with
-         something like `tempvar=foo declare -r foo'.
-       - bind_variable_internal: honor ASS_FORCE flag to allow binding even
-         if a variable is readonly
+builtins/let.def
+       - let_builtin: add EXP_EXPANDED to flags passed to evalexp
 
 execute_cmd.c
-       - struct func_array_state: new state to save state of BASH_LINENO,
-         BASH_SOURCE, and FUNCNAME during function execution so it can be
-         restored on a jump to top level
-       - restore_funcarray_state: new function to restore func_array_state
-       - execute_function: fill in func_array_state variable, add unwind-
-         protect to restore it on jump to top level, call explicitly at
-         end of function if subshell != 0 (may not be necessary, but safe
-         for now).  Fixes bug with local assignments to FUNCNAME reported
-         by Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
-
-                                  11/29
-                                  -----
-arrayfunc.c
-       - assign_compound_array_list: turn off ASS_APPEND flag when processing
-         each individual assignment inside the parens in var+=(...).  The
-         outer += should not affect assignments to existing subscripts;
-         those should be treated like usual assignments unless += supplied
-         inside the parens.  Bug report from Maarten Billemont
-         <lhunath@lyndir.com>, fix from Eduardo A. Bustamante López
-         <dualbus@gmail.com>
+       - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp,
+         since the command string is run through expand_words_no_vars before
+         being evaluated
 
-config.h.in
-       - HAVE_PSELECT: define if pselect(2) available
+expr.c
+       - set expression-global variable already_expanded if flags arg to
+         evalexp contains EXP_EXPANDED
+       - if assoc_expand_once option set and already_expanded flag set, pass
+         1 in flags to array_variable_part to skip over quotes and expansions
+         in the subscript
+       - if those two variables set, pass AV_NOEXPAND as flag to
+         get_array_value to prevent word expansions on the subscript
 
-configure.ac
-       - check for pselect(2), define HAVE_PSELECT if found
+arrayfunc.c
+       - if flags passed to unbind_array_element includes 1, pass flag on to
+         skipsubscript so we don't expect matched quotes or process
+         expansions in the subscript
+       - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag
+         to array_variable_part to pass along to skipsubscript
+       - if flags to array_value_internal include AV_NOEXPAND, don't call
+         expand_assignment_string_to_string; just use the unexpanded subscript
+         to produce the key [THIS IS A WORK IN PROGRESS]
 
-lib/readline/input.c
-       - rl_getc: use pselect(2) to wait for input ready on readline's
-         input fd or for a signal to arrive, will handle SIGWINCH (which
-         does not interrupt read(2)) and thus allow resize to happen without
-         having to wait to read more input.  Only works if pselect available
-         and returns -1/EINTR on a signal even if the signal was installed
-         with SA_RESTART.  From a suggestion from Egmont Koblinger
-         <egmont@gmail.com>
+                                  12/14
+                                  -----
+subst.h
+       - ASS_NOEXPAND: assignment flag that inhibits expansion of associative
+         array subscripts
 
-                                  12/3
-                                  ----
 variables.c
-       - flush_temporary_env: new function, disposes all temp variables in
-         temporary_env hash table
-       - bind_variable: only try to update a temporary variable's value in the
-         temporary env if the value argument is not null.  Fixes bug reported
-         by <tangqinghao@360.cn>
+       - bind_int_variable: takes new flags arg; flags are taken from the
+         ASS_ set of assignment flags, changed callers (bashline.c, expr.c,
+         pcomplete.c)
+       - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to
+         valid_array_reference and array_variable_part to pass along to
+         skipsubscript, so we don't try to skip over quoted strings in the
+         subscript
+       - bind_int_variable: pass flags along to assign_array_element
 
 variables.h
-       - flush_temporary_env: new extern declaration
-
-subst.c
-       - command_substitute: if running command substitution as part of
-         expanding a redirection (expanding_redir == 1), flush any temporary
-         environment we've inherited as part of this command, since we are not
-         supposed to have access to the temporary environment.  Since
-         expanding_redir only controls access to the temporary environment for
-         variable lookup and binding, we can turn it off in the subshell
+       - bind_int_variable: updated extern declaration with new flags arg
 
-                                  12/4
-                                  ----
-builtins/printf.def
-       - printstr: make sure a missing precision specifier after a `.' is
-         treated as 0, as printf(3) specifies.  Fixes ubuntu bash bug
-         1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087)
+expr.c
+       - expr_bind_variable: if the assoc_expand_once option is enabled, and
+         the flags to evalexp indicate that we have already run the expression
+         through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable
 
-                                  12/5
-                                  ----
-subst.c
-       - skip_to_delim: if scanning past process substitution (skipcmd == 1,
-         noprocsub == 0), use extract_delimited_string instead of
-         extract_process_subst, which was changed a while back (bash-4.3.23)
-         to use xparse_dolparen.  xparse_dolparen complains if the command
-         or process substitution is unterminated, since it runs the parser,
-         which is not what we want here.  Command substitution does the same
-         thing.  Fixes bug reported by  Daniel Kahn Gillmor
-         <dkg@fifthhorseman.net> as Debian bash bug 771968
-         (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968)
+arrayfunc.c
+       - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag
+         to array_variable_name to pass along to skipsubscript
+       - assign_array_element: if flags includes ASS_NOEXPAND, don't run an
+         associative array subscript through word expansion, just use as-is
 
-                                  12/6
-                                  ----
 subst.c
-       - command_substitute: short-circuit without forking on a command string
-         that consists entirely of <blank>s and newlines
-
-jobs.c
-       - make_child: changes to allow interrupts through if fork fails and
-         we are sleeping for `forksleep' seconds
-       - waitchld: make things a little more resilient if CHILD ends up NULL
+       - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic
+         substitution because the string has already been expanded with
+         expand_arith_string
 
-                                  12/12
+                                  12/15
                                   -----
-lib/readline/complete.c
-       - rl_display_match_list: when calculating common prefix to display in
-         color, make sure we correctly handle a common prefix with a trailing
-         `/' as we do when checking whether or not to add an ellipis.
-         printable_part() doesn't return the whole pathname if it ends in a
-         slash, to avoid printing null strings, so we have to make sure we
-         have the entire prefix
+builtins/read.def
+       - read_builtin: use value of assoc_expand_once for valid_array_reference
+         as with other uses
+       - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
+         to assign_array_element
 
-lib/readline/complete.c
-       - _rl_complete_display_matches_interrupt: new variable, set to 1 by
-         _rl_complete_sigcleanup to let rl_display_match_list know it has
-         freed the match list
-       - display_matches: check for signals during the printing loops with
-         RL_SIG_RECEIVED(), return immediately if there is a pending signal
-         (might not want to do this if it's SIGWINCH -- CHECK)
-       - rl_complete_internal: if _rl_complete_display_matches_interrupt
-         set after calling display_matches, just null out `matches' since
-         it's already been freed and call any application-set signal hook
+general.c
+       - assignment: instead of checking whether flags == 0 to allow a `[',
+         explicitly check for (flags&1) to disallow it.  This leaves the door
+         open for additional flag values
 
-                                  12/14
+builtins/printf.def
+       - printf_builtin: use value of assoc_expand_once for
+         valid_array_reference as with other uses
+       - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
+         to assign_array_element
+
+                                  12/16
                                   -----
-parse.y
-       - time_command_acceptable: if the token before a newline is `|',
-         return 0, since it's not really valid to time inside a pipeline.
-         Only handles a single newline but allows things like
-               echo a |
-                time cat
-         to invoke /usr/bin/time, which is probably enough to catch the
-         stray carriage return.  Fixes bug reported by Andre Majorel
-         <aym-ung@teaser.fr>
+builtins/history.def
+       - change history -d option to handle negative arguments; negative
+         arguments offset from the end of the history list (last_position + 1
+         so history -d -1 deletes the history -d command that just got
+         added).  Original patch from Piotr Grzybowski <narsil.pl@gmail.com>
 
-builtins/declare.def
-       - declare_internal: don't try to perform compound assignments unless
-         the WORD_DESC has flags including W_COMPASSIGN (maybe should check
-         W_ASSIGNMENT as well), avoiding unexpected evaluation if a word
-         is of the form (word) and is assigned to an array variable like so:
-         declare -x var=$value.  Bug reported by Stephane Chazelas
-         <stephane.chazelas@gmail.com>. Will eventually be contingent on
-         compatibility level > 43, but not there yet. TENTATIVE
+doc/bash.1,lib/readline/doc/hsuser.texi
+       - documented new behavior of negative offsets for `history -d'
 
-                                  12/15
+                                  12/17
                                   -----
-lib/sh/Makefile.in
-       - add missing dependencies for shmatch.o.  Pointed out by Sergey
-         Mikhailov <sergey.mikhailov@gmail.com>
+lib/readline/history.c
+       - remove_history: use memmove to move the history list around instead
+         of a loop that copies pointers one at a time, similar to add_history
 
-                                  12/16
+                                  12/19
                                   -----
-{execute_cmd,subst}.c
-       - W_ASSIGNINT: remove, not used any more
-
-execute_cmd.c
-       - fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT
-         flag any more; doing things a different way
-       - shell_expand_word_list: instead of using W_ASSIGNINT flag, since it
-         doesn't take into account all options that can transform values on
-         assignment (-l/-u/-c can also), go through option arguments looking
-         for options that need special handling and add them to the `opts'
-         array for make_internal_declare to use.  Fixes bug with constructs
-         like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on
-         assignment reported by Linda Walsh <bash@tlinx.org>
-
+configure.ac
+       - linux: make sure PGRP_PIPE is defined unconditionally for all kernel
+         versions greater than 2.3.*
 
+lib/readline/history.c
+       - clear_history: when clearing the history, reset history_base to 1
+         (its default)
+       - remove_history_range: new function, removes a set of history entries
+         and returns them all for deallocation
 
-                                  12/18
-                                  -----
-lib/readline/readline.c
-       - rl_internal_char: when we read EOF on a non-empty line, check for
-         signals and invoke any readline signal handling and any application-
-         installed signal hook
+lib/readline/history.h
+       - remove_history_range: extern declaration
 
                                   12/20
                                   -----
-lib/readline/readline.c
-       - rl_internal_char: if we read EOF on a non-empty line, set c to
-         _rl_eof_char the first time through.  If we read EOF the next time,
-         return EOF from readline().  If callbacks are defined, this returns
-         EOF immediately, since lastc isn't available.  Fix for problem
-         most recently identified by Jiri Kukacka <jiri.kukacka@orcle.com>,
-         it has come up in the past
+execute_cmd.c
+       - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the
+         expression through expand_words_no_vars
 
                                   12/21
                                   -----
-builtins/declare.def
-       - declare_internal: keep track of whether or not an assignment statement
-         argument to declare is an array subscript assignment; need to
-         differentiate assignments from straight declarations (declare a[4])
-         which are accepted for backwards compatibility
-       - assignment statements like declare a[2]=foo are now treated as
-         straight subscript assignment statements if a already exists as an
-         array variable
-       - declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo
-         exists and is an array, just as it would be if it were an assignment
-         statement and `declare' was not present.  All this from a proposal
-         by Stephane Chazelas <stephane.chazelas@gmail.com>
+input.c
+       - b_fill_buffer: when read returns EOF or error, and we reset the
+         buffer and pointers, reset the input pointer to 0.  Fixes issue
+         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
 
                                   12/22
-                                  -----
-builtins/read.def
-       - read_tty_modified: function to tell the rest of the shell if the
-         read builtin has modified the tty
-       - read_builtin: make sure to initialize terminating signals before
-         installing a SIGALRM signal handler in case we modify the tty as
-         well as ask for a timeout; the subsequent call to
-         initialize_terminating_signals would overwrite the read-builtin-
-         local SIGALRM handler
-
-builtins/common.h
-       - read_tty_modified: new extern declaration
-
-shell.c
-       - exit_shell: if read_tty_modified() returns true, call read_tty_cleanup
-         to undo the terminal modifications. Extension of previous fixes;
-         fixes bug with read -s reported by Richard W. Marsden
-         <richard@marsden.nu>
+                                  -----
+arrayfunc.[ch],subst.c
+       - array_expand_index: added new FLAGS argument, reserved for future use,
+         changed callers
 
 
-                                  12/23
+                                  12/24
                                   -----
-builtins/setattr.def
-       - show_var_attributes: call print_array_assignment and print_assoc_assignment
-         with a `not quoted' flag so the assignment statements are not
-         surrounded by single quotes.  Caused changes to a lot of test output
+variables.c
+       - can_optimize_assignment,optimized_assignment: see if we can detect
+         whether or not we're trying to append a string to a string variable,
+         and optimize that using realloc/strcpy.  Based on a log-ago
+         suggestion from Aharon Robbins <arnold@skeeve.com>
 
-                                  12/29
+                                  12/27
                                   -----
-lib/readline/complete.c
-       - stat_char: Windows doesn't handle X_OK flag to access(2); use file
-         extensions to determine whether or not a file is executable.  Bug
-         report and fix from Eli Zaretskii <eliz@gnu.org>
-
-configure.ac
-       - changed version to bash-4.4-devel
+builtins/help.def
+       - help_builtin: don't pass return value from ngettext() directly to
+         printf
 
-lib/readline/readline.h
-       - changed version to readline-6.4
+                                  12/28
+                                  -----
+sig.c
+       - set_signal_handler: set SA_RESTART for SIGWINCH, so window size
+         changes don't interrupt open/read/write.  Suggested by
+         Andriy Prystupa <andriy.prystupa@globallogic.com> back in 10/2016
 
                                   12/30
                                   -----
-readline.h
-       - struct readline_state: fix types of `ignorefunc' and `attemptfunc'
-         members
+execute_cmd.c
+       - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc
+         associated with pid, don't remove it from the list with cpl_delete.
+         Just mark as dead and wait for coproc_reap/cpl_reap to take care
+         of disposing it
+       - execute_coproc: NEW FEATURE: run the coproc name through word
+         expansion before creating the coproc; this allows unique coprocs
+         to be created in loops. Originally requested way back in 2012 by
+         Erik Brandsberg <ebrandsberg@juniper.net>
+
+command.h
+       - subshell_com: now has a line number member: line
 
-lib/sh/shquote.c,externs.h
-       - sh_contains_shell_metas, sh_contains_quotes: now take `const char *'
-         as parameter
+make_cmd.c
+       - make_subshell_command: assign current line number (line number of the
+         ending right paren) to `line' member
 
-stringlib.c,externs.h
-       - strcreplace: `text' argument now `const char *'
+copy_cmd.c
+       - copy_subshell_command: copy the `line' member
 
-pathexp.[ch]
-       - quote_globbing_chars: `string' argument now `const char *', accompanying
-         changes to function local variables
+execute_command.c
+       - execute_command_internal: when executing a user subshell (`(command)'),
+         set the line number and line number for the ERR trap from the line
+         number saved in the subshell command struct.  Fix from
+         Eduardo A. Bustamante López <dualbus@gmail.com>
+       - execute_arith_command: set line number for ERR trap from line number
+         saved in the arith command struct.  Fix from
+         Eduardo A. Bustamante López <dualbus@gmail.com>
+       - execute_cond_command: set line number for ERR trap from line number
+         saved in the cond command struct.  Fix from
+         Eduardo A. Bustamante López <dualbus@gmail.com>
 
-pcomplete.c
-       - preproc_filterpat: `text' argument now `const char *'
-       - filter_stringlist: `text' argument now `const char *'
+variables.c
+       - bind_variable_internal: move can_optimize_assignment call to the
+         right place
 
                                   12/31
                                   -----
-builtins/evalstring.c
-       - should_suppress_fork: new function, broke code that decides whether
-         to turn on CMD_NO_FORK flag out of parse_and_execute into a separate
-         function
+variables.c
+       - find_variable_nameref: treat a circular variable reference as
+         referring to a variable of that name in the global scope (for now),
+         if one exists.  PROVISIONAL change: inspired by suggestion back in
+         6/2016 by Grisha Levit <grishalevit@gmail.com>
 
-execute_cmd.c
-       - execute_command_internal: AND_AND, OR_OR: call should_suppress_fork
-         for the RHS of && and ||, make `make' invocations marginally more
-         efficient
+                                1/2/2017
+                                --------
+{expr,general,hashcmd}.c
+       - include flags.h for flag values
 
-flags.c
-       - get_current_flags: returns a bitmap of all single-letter shell
-         options with a non-zero value meaning option is enabled
-       - set_current_flags: set current single-letter options from a passed
-         bitmap, which has presumably been initialized with get_current_flags
+make_cmd.c
+       - include shell.h instead of the files it includes
 
 flags.h
-       - {get,set}_current_flags: new extern declarations
-
-builtins/declare.def
-       - declare_internal: if invoked as `local', interpret name argument of
-         `-' to mean to save (and restore at shell return) single-letter
-         shell options
+       - new extern declarations for want_pending_command, read_from_stdin
 
-variables.c
-       - push_func_var: if we encounter `-' as the name of a local variable,
-         take the value and call set_current_flags on it to restore old
-         flag settings
+subst.h
+       - add extern declaration for expanding_redir, assigning_in_environment
 
-builtins/set.def
-       - get_current_options: returns a bitmap of all shell options settable
-         with `set', with a non-zero value meaning option is enabled
-       - set_current_options: set current shell options from a passed
-         bitmap, which has presumably been initialized with get_current_options
+trap.h
+       - add extern declaration for running_trap
 
+execute_cmd.h
+       - added extern declarations for variables declared in execute_cmd.c,
+         changed files that declare lots of extern variables
 
-                                1/1/2015
-                                --------
-lib/readline/parens.c
-       - _rl_blink_matching_paren: initialize to 0 whether or not select(2) is
-         available.  Inconsistency reported by Mark Karpov
-         <markkarpov@opmbx.org>
+shell.h
+       - added extern declarations for variables declared in shell.c,
+         changed files that declare lots of extern variables 
 
-builtins/declare.def
-       - declare_internal: use get_current_options instead of
-         get_current_flags, so `local -' can be generalized
+parser.h
+       - added extern declarations for variables declared in parse.y,
+         changed files that declare lots of extern variables 
 
-variables.c
-       - push_func_var: use set_current_options instead of set_current_flags
-         so `local -' can be generalized
+[lots of changes to reduce the number of extern declarations in C and DEF files]
 
-doc/{bash.1,bashref.texi}
-       - document new `local -' feature; originally inspired by Robert Elz
-         <kre@munnari.oz.au> describing feature in NetBSD sh
+parse.y
+       - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to
+         use STRING_SAVER
 
                                    1/3
                                    ---
-lib/readline/{complete,funmap,kill,histfile,util}
-lib/readline/readline.h
-lib/tilde/tilde.c
-       - fixes for filename- and evironment-related issues on Windows.  Fixes
-         from Eli Zaretskii <eliz@gnu.org>
-       - Windows can paste to the console from the clipboard like Cygwin
-       - Windows uses $APPDATA as a pseudo-$HOME
-
-lib/readline/input.c
-       - rl_getc: use _getch on Windows to avoid being overridden by a getch
-         ncurses function
-       - win32_isatty: replace Windows isatty(3) with a function that does
-         additional checks, sinces Windows isatty returns non-zero for
-         every character device.  From Eli Zaretskii <eliz@gnu.org>
-
-lib/readline/display.c
-       - delete_chars: if compiled with ncurses on Windows, this code can
-         work, so build it in if NCURSES_VERSION defined
-       - open_some_spaces: ditto
-
-                                   1/6
-                                   ---
-doc/{bash.1,bashref.texi}
-       - minor grammar and typo corrections from TonyMc <afmcc@btinternet.com>
-
-                                   1/8
-                                   ---
 sig.c
-       - throw_to_top_level: only attempt to run the interrupt trap if SIGINT
-         is trapped -- minor optimization
-       - throw_to_top_level: if we are running a trap, call run_trap_cleanup
-         to turn off the sigmodes flags
+       - termsig_handler: don't call end_job_control if subshell_environment
+         indicates that we're in a command or process substitution.
+         Provisional fix for bug reported by Russell King <rmk@armlinux.org.uk>
 
-trap.c
-       - _run_trap_internal: temporarily suppress pending SIGINTs while running
-         one of the traps the shell handles internally (e.g., ERR).  Fixes bug
-         reported by Keith Thompson <keithsthompson@gmail.com>
+jobs.c
+       - end_job_control: only attempt to give the terminal back to
+         original_pgrp if job_control != 0; don't test interactive_shell
 
-                                  1/10
-                                  ----
-bashhist.c
-       - bash_history_inhibit_expansion: use skip_to_delim with the history
-         expansion character to see whether or not the instance of the
-         history expansion character should be skipped because, for instance,
-         it is in a command substitution.  Fixes issue reported by
-         Zigmund.Ozean@zig-home.localdomain
+execute_cmd.c
+       - execute_disk_command: call QUIT after search_for_command, since
+         the only time QUIT gets called is when the path is actually
+         searched.  It doesn't happen for an absolute pathname.  Fix for
+         bug reported by Russell King <rmk@armlinux.org.uk>
 
-                                  1/14
+                                  1/16
                                   ----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: if we are in a multibyte locale, make sure to
-         use _rl_find_prev_mbchar when trying to delete characters from the
-         search string, instead of just chopping off the previous byte.
-         Fixes bug reported by Kyrylo Shpytsya <kshpitsa@gmail.com>
-
-lib/readline/complete.c
-       - rl_filename_completion_function: if we tilde-expand `dirname', make
-         sure we use the expanded result instead of throwing it away for the
-         quote-removed `users_dirname', which still has any leading tilde.
-         Fixes bug reported by Dave Rutherford <dave@evilpettingzoo.com>
-
-execute_cmd.c
-       - select_query: if the read builtin doesn't return anything in REPLY,
-         return NULL (failure). Fixes bug reported by Etherial Raine
-         <osirisgothra@hotmail.com>
+lib/glob/glob.c
+       - extglob_skipname,wextglob_skipname: if we don't find a reason to
+         not skip the name in any subpattern (r returns 0 for any subpattern),
+         return 1 because we should skip the name
+       - extglob_skipname,wextglob_skipname: if we don't find a reason to
+         not skip the name in any subpattern, but the first part of the extglob
+         pattern is a wildcard (`*(pat)'), check the rest of the pattern, if
+         any, to decide whether or not to skip the name. Fixes bug reported
+         by Grisha Levit <grishalevit@gmail.com>
+
+lib/glob/glob_loop.c
+       - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR
 
-builtins/read.def
-       - read_builtin: if REPLY has the readonly or noassign attribute, return
-         failure
+lib/glob/glob.c
+       - wchkname -> wskipname
+       - wskipname: now takes a third `flags' argument, like the other variants
+         of skipname
 
-                                  1/16
+                                  1/17
                                   ----
 redir.c
-       - redir_open: if open() returns -1/EINTR, check traps as well as
-         using QUIT to handle signals
+       - here_document_to_fd: set the file descriptor open for writing to the
+         here document to be close-on-exec.  Fixes bug reported by
+         Siteshwar Vashisht <svashisht@redhat.com>
 
                                   1/18
                                   ----
-jobs.c
-       - wait_for: make sure queue_sigchld is set to 1 before unblocking
-         SIGCHLD if MUST_UNBLOCK_CHLD is defined
+{gmisc,gm_loop}.c
+       - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file),
+         compile twice for single and wide characters as with the rest of
+         the functions
+       - umatchlen,wmatchlen: ditto
+       - extglob_pattern_p: move to gm_loop.c, generalize for regular and
+         wide-char versions
 
                                   1/19
                                   ----
-pcomplete.h
-       - new progcomp option: COPT_NOSORT, means to not sort list of possible
-         completions
-
-pcomplete.c
-       - pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags,
-         set rl_sort_completion_duplicates to 0
-
-builtins/complete.def
-       - _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec
-         option flags. Provides new -o nosort option for complete and compgen
+lib/readline/complete.c
+       - stat_char: fix small memory leak if stat/lstat returns -1
 
 bashline.c
-       - attempt_shell_completion: make sure rl_sort_completion_matches is
-         set to 1 before completion is attempted; allow a compspec to turn
-         it off
-
-lib/readline/kill.c
-       - rl_vi_yank_pop: new function, vi-mode version of yank-pop.  Original
-         code from Ian Kelling <ian@iankelling.org>
+       - bash_filename_stat_hook,bash_directory_completion_hook: make sure
+         expand_prompt_string is caled wth W_NOPROCSUB flag
+       - directory_exists: don't dequote the filename passed as an argument;
+         this function should never get quoted pathnames
 
-lib/readline/funmap.c
-       - `vi-yank-pop': bindable name mapped to rl_vi_yank_pop
-
-lib/readline/readline.h
-       - rl_vi_yank_pop: extern declaration
-
-                                  1/21
-                                  ----
-lib/sh/shquote.c
-       - sh_backslash_quote: change to understand and handle multibyte
-         characters, using is_basic, COPY_CHAR_P.  See
-         https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original
-         report
+subst.c
+       - expand_word_internal: when calling expand_word_internal recursively
+         after reading a double-quoted string, make sure the W_NOCOMSUB and
+         W_NOPROCSUB flags make it to the recursive invocation.  Fixes bug
+         reported by Jens Heyens <jens.heyens@cispa.saarland>
 
                                   1/23
                                   ----
-include/posixjmp.h
-       - use setjmp_sigs instead of redefined setjmp, it fails on Cygwin.
-         Report from Eric Blake <eblake@redhat.com>
-
-builtins/wait.def,shell.c
-       - use setjmp_sigs instead of setjmp call, since setjmp no longer
-         redefined to something known
+lib/readline/signals.c
+       - _rl_orig_sigset: original signal mask, set and restored by
+         rl_set_signals (rl_clear_signals doesn't block signals).  If we
+         are not installing signal handlers, just save signal mask each
+         time rl_set_signals is called
 
-include/chartypes.h, lib/readline/chardefs.h
-       - make sure all ctype.h macros are called with unsigned char args,
-         casting to make sure
+lib/readline/input.c
+       - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block
+         the set of signals originally blocked by the calling application.
+         Fixes bug reported by Frédéric Brière <fbriere@fbriere.net>
 
-lib/sh/casemod.c
-       - sh_modcase: don't assume that the upper and lower case versions of a
-         character are the same width, so don't try to do the conversion in
-         place: convert and copy the converted characters one or more at a
-         time to the returned string
-       - sh_modcase: since upper and lower case versions of same character
-         may have different widths in some locales, don't shortcut and assume
-         that we can do single-byte case modification (toupper) with a
-         single-byte input character (e.g., `i').  Fix for problem reported
-         by Stephane Chazelas <stephane.chazelas@gmail.com>
+parse.y
+       - yy_readline_get: try to unset NONBLOCK mode on readline's input
+         file descriptor before calling readline(). Inspired by report from
+         Siteshwar Vashisht <svashisht@redhat.com>
 
-                                  1/31
+                                  1/30
                                   ----
-lib/readline/histfile.c
-       - history_truncate_file, history_do_write: if the first rename(2)
-         of the history file to the backup file fails, set the backup file
-         name to NULL to prevent any later attempts to restore the
-         original.  Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
-       - history_do_write: don't attempt to back up non-regular files.
-         Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
+parse.y
+       - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we
+         see a `$'; we should toggle it to accommodate things like $$.
+         Fixes bug reported by Christian Weisgerber <naddy@mips.inka.de>
+       - parse_matched_pair: do the same thing with LEX_WASDOL
 
-                                   2/2
+                                   2/1
                                    ---
-trap.c
-       - run_interrupt_trap: now takes an argument indicating whether or not
-         it was called just before a longjmp to top_level; change callers
-       - run_interrupt_trap: if running a trap and we are being called before
-         a longjmp to top_level, call run_trap_cleanup on running trap so
-         a QUIT call while running a DEBUG trap, for instance, doesn't leave
-         sigmodes[DEBUG_TRAP] including SIG_INPROGRESS.  Fixes bug reported
-         by Chih-Chieh Chou <ccchou@gmail.com>
-
-sig.c
-       - throw_to_top_level: change call to run_interrupt_trap to pass arg 1
-       - termsig_handler: change call to run_interrupt_trap
+jobs.h
+       - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of
+         functions
 
-trap.h
-       - run_interrupt_trap: update extern prototype declaration
+jobs.c
+       - wait_for_job, wait_for_any_job: take new flags argument for use by
+         the wait builtin
+       - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to
+         terminate instead of change state
+       - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for
+         child process to terminate instead of change state
 
-                                   2/4
-                                   ---
-lib/readline/histfile.c
-       - histfile_backup, histfile_restore: new functions to back up and restore
-         history file to `filename-', following (one level of) symlinks through
-         so we don't rename the symlink itself.  From a suggestion by
-         Jonathan Hankins <jhankins@homewood.k12.al.us>
+builtins/wait.def
+       - takes a new `-f' option, signifying to wait until the specified job 
+         or process terminates, instead of changes state
 
-assoc.c
-       - assoc_to_assign: if an index happens to be `@' or `*', make sure it's
-         double-quoted.  Bug report from Greg Wooledge <wooledg@eeg.ccf.org>
+doc/{bash.1,bashref.texi}
+       - wait: document the new -f option and its behavior when job control
+         is enabled
+       - job control: add a paragraph describing how the wait builtin changes
+         behavior when job control is enabled: it returns when a job changes
+         state
 
-                                   2/5
+                                   2/2
                                    ---
-lib/readline/bind.c
-       - rl_bind_key: if we are rebinding a key that is not bound to a
-         function or a macro, construct a key sequence and pass it to
-         rl_bind_keyseq.  Make sure that '\' when it is used as a key is
-         changed to "\\" so it can survive rl_translate_keyseq.  Fixes
-         https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743
+examples/loadables/fdflags.c
+       - fdflags: new loadable builtin to set and unset file descriptor flags
+         (such as non-blocking, though bash undoes that) for descriptors bash
+         has open. Developed in consultation with Christos Zoulas
+         <christos@zoulas.com>
 
-                                   2/8
+                                   2/3
                                    ---
-include/posixjmp.h
-       - _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp
-         depending on autoconf results, used to avoid redefining longjmp,
-         remove _OPENNT conditional code.  Report from Eric Blake
-         <eblake@redhat.com>
-
-{bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def}
-       - change calls to longjmp to use sh_longjmp
-
-lib/readline/util.c
-       - change calls to longjmp to use _rl_longjmp
-
-                                  2/18
-                                  ----
-variables.c
-       - bind_int_variable: make sure `v' is non-null before making it visible
-
-                                  2/19
-                                  ----
-arrayfunc.c
-       - assign_array_var_from_word_list: after assignment, mark variable as no
-         longer invisible
-       - assign_array_var_from_string: after assignment, mark variable as no
-         longer invisible
-
-builtins/declare.def
-       - declare_internal: add warning if an attempt is made to use a quoted
-         compound assignment as an argument to declare (declare -a foo='( 1 2 )');
-         backwards compatible with bash-4.3. Still a tentative change
-
-                                  2/20
-                                  ----
-lib/glob/smatch.c
-       - is_wcclass: check malloc() return value, return -1 if it fails
-         Report from Tobias Stoeckmann <tobias@stoeckmann.org>
 
-lib/sh/shmatch.c
-       - sh_regmatch: check malloc() return value, handle NULL value if it
-         fails.  Report from Tobias Stoeckmann <tobias@stoeckmann.org>
+lib/readline/text.c
+       - rl_previous_screen_line: attempt to move to the same column on the
+         previous screen line of the current readline buffer by moving back
+         a number of characters equal to the screen width
+       - rl_next_screen_line: attempt to move to the same column on the
+         next screen line of the current readline buffer by moving forward
+         a number of characters equal to the screen width. Both originally
+         suggested by Hans Ginzel <hans@matfyz.cz>
 
-                                  2/22
-                                  ----
-lib/readline/doc/rltech.texi
-       - rl_callback_handler_install: note that the handler function should
-         free the line it receives, as with readline.  Suggested by
-         Ulf Magnusson <ulfalizer@gmail.com>
-       - Readline Signal Handling: note that application needs to clean up
-         readline's terminal state if it wants to handle a signal before
-         the line handler restores it.  Suggested by Ulf Magnusson
-         <ulfalizer@gmail.com>
+lib/readline/readline.h
+       - rl_{next,previous}_screen_line: extern declarations
 
-                                  2/24
-                                  ----
-lib/readline/histfile.c
-       - history_do_write,history_truncate_file: if the write fails, make sure
-         to set history_lines_written_to_file to 0 so we don't lose those
-         history entries
+lib/readline/funmap.c
+       - {next,previous}-screen-line: new bindable command names
 
-                                  2/27
-                                  ----
-execute_cmd.c
-       - execute_function: unwind-protect the value of line_number_for_err_trap,
-         so a function that returns a non-zero value and triggers an ERR trap
-         has the right value for LINENO. Any simple command in the function
-         body can change it.  Bug report from Paul Donohue <gnu@paulsd.com>
+lib/readline/doc/{rluser.texi,readline.3}
+       - {next,previous}-screen-line: document behavior, including limitations
 
-                                   3/5
+                                   2/5
                                    ---
-lib/sh/shquote.c
-       - sh_backslash_quote: cast `c' to `unsigned char' before using as
-         index into backslash_table.  Report and fix from
-         alexeyv.90@gmail.com
-
-arrayfunc.[ch]
-       - valid_array_reference: added second `flags' argument for future use;
-         currently unused
-
-parse.y,{redir,subst,variables,test}.c
-builtins/{declare,printf,read,set}.def
-       - valid_array_reference: changed callers
+lib/readline/input.c
+       - rl_read_key: when reading input from a macro, make sure to return
+         the next character as an unsigned char, so we handle multibyte
+         character sequences correctly.  Report and fix from Grisha Levit
+         <grishalevit@gmail.com>
 
-                                   3/7
+                                   2/6
                                    ---
-lib/readline/signals.c
-       - _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block
-         SIGTTOU so a backgrounded readline can reset the terminal settings
-         appropriately, otherwise the terminal state and readline's idea
-         of it can get messed up.  Original report from Dave Wysochanski
-         <dwysocha@redhat.com> and Dave Anderson <anderson@redhat.com>
-
-trap.c
-       - run_pending_traps: don't allow recursive SIGWINCH trap invocations;
-         they're wasteful and trying to handle a stream of signals while a
-         user resizes the terminal can lead to malloc errors trying to save
-         and restore the_pipeline multiple times.  Problem reported most
-         recently by Martin M. S. Pederson (Fedora bash bug 1197768
-         https://bugzilla.redhat.com/show_bug.cgi?id=1197768)
-       - reset_or_restore_signal_handlers: set pending_traps to 0 for all
-         signals when forking a child. TENTATIVE fix
-
-jobs.c
-       - {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline
-         like cleanup_the_pipeline does. XXX - may not be necessary
+shell.c
+       - --pretty-print: new invocation option, currently undocumented, dumps
+         a pretty-printed version of a shell script given as an argument to
+         stdout
+       - main: call pretty_print_loop() if we're in pretty-printing mode in
+         a non-interactive shell
 
-lib/readline/display.c
-       - rl_redisplay: fixed case where multibyte character in the prompt
-         (e.g., \u03bb) in the last screen column causes problems with line
-         wrapping because the newline marker is put in the middle of the
-         multibyte char.  Most recently reported on Ubuntu by
-         <sterpe@gmail.com>
+eval.c
+       - pretty_print_loop: new function, similar to reader_loop, reads
+         commands and prints them by displaying the result from
+         make_command_string()
 
-pathexp.c
-       - quote_string_for_globbing: if a bracket expression doesn't have a
-         closing right bracket, rescan it from just after the opening
-         bracket without treating it as a bracket expression.  Bug report
-         from Stephane Chazelas <stephane.chazelas@gmail.com>
+externs.h
+       - pretty_print_loop: new extern declaration
 
-                                   3/9
+                                   2/9
                                    ---
-subst.c
-       - process_substitute: keep the last pipeline created to run a process
-         substitution in LAST_PROCSUB_CHILD; discard it when another one is
-         created
-
-jobs.[ch]
-       - discard_pipeline: now global, so process_substitute can call it
+doc/{bash.1,bashref.texi}
+       - here strings: correct documentation to note they do not undergo
+         brace expansion. Report from Conor McCarthy <mr.spuratic@gmail.com>
 
-jobs.c
-       - last_procsub_child: new variable, set and modified only by the process
-         substitution code
-       - find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return
-         it; analogous to the way this code handles the_pipeline
-       - waitchld: if we find a child via find_pipeline that is a part of the
-         last process substitution child, mark that child appropriately.  If
-         the child is dead, add it to the bgp list.  This and the previous
-         change allow waiting for the most recent process substitution (the
-         one corresponding to $!).  Original report from Stephane Chazelas
-         <stephane.chazelas@gmail.com>
+                                   2/9
+                                   ---
+lib/readline/display.c
+       - expand_prompt: instead of recomputing the line break offsets for
+         prompts that span multiple screen lines on every call to rl_redisplay,
+         do it here. Manage a local array local_prompt_newlines; set an offset
+         every time `physchars' hits a multiple of the screen width.  Inspired
+         by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819
+       - rl_redisplay: don't calculate multi-line prompt line break indices
+         here; use the values calculated by expand_prompt
+       - rl_{save,restore}_prompt: save and restore local_prompt_newlines
 
-                                  3/10
+                                  2/11
                                   ----
-arrayfunc.c
-       - unbind_array_element: make sure skipsubscript() doesn't try to parse
-         embedded quotes in the subscript, since this has already been through
-         one round of word expansion before calling the unset builtin.  (This
-         function is only called by the unset builtin).  Fixes bug reported by
-         <vampyrebat@gmail.com>
+lib/readline/mbutil.c
+       - _rl_find_prev_mbchar_internal: since we're traversing the string
+         from the beginning, shortcut non-multibyte characters in a UTF-8
+         locale
+
+parse.y
+       - parse_comsub: if we are parsing a here document with a quoted
+         delimiter (LEX_QUOTEDDOC), we should not remove <backslash><newline>
+         pairs from the body of the here document.  Need to add LEX_QUOTEDDOC
+         to the values in tflags when calling shell_getc.  Fixes bug reported
+         by Michael Homer <michael.homer@ecs.vuw.ac.nz>, patch was originally
+         contributed by Geir Hauge <geir.hauge@gmail.com>
 
-                                  3/17
+                                  2/15
                                   ----
 jobs.c
-       - waitchld: move code that adds the last process substitution pid to
-         the bgpids array from waitchld (where it can call malloc in a signal
-         handler context) to cleanup_dead_jobs
+       - bgp_add: if hashed pid collides with bgpids.head index, print a
+         warning and move to the next index.  Attempt to avoid collision
+         problem reported by Graham Northup <northug@clarkson.edu>
 
-                                  3/19
+                                  2/17
                                   ----
 subst.c
-       - parameter_brace_expand: if expanding an array in a context where word
-         splitting will not take place (W_ASSIGNRHS only for now), make sure
-         to pass the double-quoted flag to chk_atstar so we don't get the
-         unquoted $* behavior, which will cause unwanted word splitting.
-         Fixes bug reported by isabella parakiss <izaberina@gmail.com>
-
-arrayfunc.c
-       - unbind_array_element: don't assume that caller will check and pass
-         only array variables; don't allow non-array variables to be unset
-         using the `@' or `*' subscripts and don't allow any subscripts other
-         than 0; return -2 in those cases
-       - unbind_array_element: unset a non-array variable if passed a subscript
-         of `0' (e.g., `unbind "scalar[0]"').  This is new functionality that
-         parallels the ${scalar[0]} expansion
+       - process_substitute: call remove_quoted_escapes on the command string
+         like command substitution does, since the string will be run through
+         the parser again.  Fixes bug reported by David Simmons
+         <bug-bash@tmp.davidsimmons.com>
 
-builtins/set.def
-       - unset_builtin: don't check whether a variable is an array if it's
-         referenced using array syntax (scalar[0]); pass it to
-         unbind_array_element anyway and check the result.  This means that
-         `unset scalar' and `unset scalar[0]' are equivalent
+config-top.h
+       - STATIC_PATH_VALUE: new config variable, undefined by default
 
-                                  3/20
-                                  ----
-builtins/set.def
-       - set_builtin: make `-i' an invalid option, unconditionally for now.
-         From a bug-bash discussion started by Peng Yu <pengyu.ut@gmail.com>
+variables.c
+       - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the
+         PATH variable at shell startup, overriding the environment and any
+         value for DEFAULT_PATH_VALUE.  Based on a suggestion from
+         Lonnie Abelbeck <lonnie@abelbeck.com>
 
-                                  3/21
+                                  2/18
                                   ----
-lib/readline/colors.c
-       - _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and
-         the `target' specifier for links (dereference S_ISLNK if the target
-         exists).  Bug report and fix from andreas@stapelspeicher.org
-
-{arrayfunc,subst}.c
-       - add code to save and restore this_command_name in places that set
-         this_command_name to NULL to prevent error messages from arithmetic
-         evaluation.  Fixes bug reported by brian.carpenter@gmail.com
-
-builtins/mapfile.def
-       - do_chop: remove a new DELIM argument from the line, instead of
-         unconditionally removing newline
-       - mapfile: if -d delim is supplied and we are breaking fields at DELIM,
-         remove DELIM if the -t option is supplied by passing DELIM to do_chop().
-         Suggested by Geir Hauge <geir.hauge@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - mapfile: document new -t option behavior, defaults are the same
-
-builtins/alias.def
-       - print_alias: if the first character of an alias name is `-', add a
-         `-- ' after `alias' to avoid option errors when trying to reuse the
-         output.  Bug report and fix on savannah from Pasha Bolokhov
-         <pasha.bolokhov@gmail.com>
+shell.c
+       - maybe_make_restricted: clear the hash table before making the PATH
+         variable read-only by calling stupidly_hack_special_variables.
+         Suggestion from Lonnie Abelbeck <lonnie@abelbeck.com>
 
-                                  3/22
-                                  ----
-builtins/declare.def
-       - declare_internal: if creating a variable does not return a valid
-         variable in VAR, check for null variable before dereferencing it.
-         This happens with nameref variables referencing variables set to
-         the empty string.
-         Fixes bug reported by Arthur200000 <arthur200126@163.com> 
+subst.c
+       - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word}
+         to use this new function, initially identical to
+         expand_string_for_rhs
+       - getpattern: use expand_string_for_pat to expand the pattern
 
-                                  3/23
+                                  2/19
                                   ----
-doc/{bash.1,bashref.texi}
-       - INVOCATION: add language to make it clear that non-interactive login
-         shells execute ~/.bash_logout if they run the `exit' builtin.  From a
-         question from Christoph Anton Mitterer <calestyo@scientia.net>
-
-                                   4/6
-                                   ---
 subst.c
-       - process_substitute: increment and decrement subshell_level around
-         calls to parse_and_execute, as in command substitution, so
-         $BASH_SUBSHELL gets new values in the subshell.  Fixes inconsistency
-         pointed out by Peng Yu <pengyu.ut@gmail.com>
-
-doc/{bash.1,bashref.texi}
-       - read: add clarifying text to note that the -N option does not split
-         on $IFS, but does retain backslash as an escape character subject
-         to -r.  Report from isabella parakiss <izaberina@gmail.com>
-
-builtins/declare.def
-       - declare_internal: unless it's the last statement in a {...} block,
-         NEXT_VARIABLE must be protected by braces.  Bug introduced in patch
-         from 3/22, reported by Eduardo A. Bustamante López
-         <dualbus@gmail.com>
-
-                                   4/7
-                                   ---
-parse.y
-       - shell_getc: if bash is reading input from a string that ends with an
-         unquoted backslash, add another backslash instead of a newline, since
-         the backslash and newline will disappear in normal processing.  Fixes
-         bug with `bash -c 'eval \\; echo y' ' skipping the eval command and
-         setting incorrect exit status, and `bash -ic 'eval \\; echo y' '
-         seeing EOF on empty line and exiting before the echo.  Keep track of
-         backslash state with last_was_backslash; set in char reading loop.
-         Fixes bug reported by Eduardo A. Bustamante López <dualbus@gmail.com>
-
-                                   4/8
-                                   ---
-shell.c
-       - main: check for $INSIDE_EMACS as well as $EMACS when deciding whether
-         or not bash is being run in a GNU emacs shell window.  Don't bother
-         checking whether $TERM is unset because variable initialization sets
-         it to `dumb' if unset.  Fixes from Paul Eggert <eggert@CS.UCLA.EDU>
-
-parse.y
-       - push_token: new function, rotates current_token through last_read_token,
-         saving old values like yylex() does, sets current_token to argument
-
-evalfile.c
-       - _evalfile: if current_token is yacc_EOF, push a newline as the value
-         of current_token instead, using push_token().  yacc_EOF can result if
-         sourced file doesn't end with a newline but does end with an unescaped
-         backslash.  Fixes bug reported by Pedro Gimeno
-         <pgwr-842@personal.formauri.es>
-
-lib/readline/histfile.c
-       - use PARAMS(x) instead of __P(x).  Bug reported by Evan Gates
-         <evan.gates@gmail.com>
-
-                                   4/9
-                                   ---
-execute_cmd.c
-       - execute_simple_command: if we haven't already forked, and we have
-         created FIFOs, turn off the no-fork optimization in the simple
-         command's flags. Originally reported to savannah by Kuang-che Wu as
-         https://savannah.gnu.org/support/index.php?108732
+       - expand_string_for_rhs: now that this is only used to expand the RHS
+         of the various non-pattern ${paramOPword} expansions, set
+         expand_no_split_dollar_star depending on whether or not the entire
+         brace expansion is going to be subjected to word splitting: if it's
+         quoted or if IFS is set but null, we will not be splitting so we set
+         this to 1 and let $* expand to separate fields separated by a space.
+         This was heavily debated back in October 2014 and resulted in Posix
+         interp 888. Reported by Martijn Dekker <martijn@inlv.org>
 
-                                  4/10
+                                  2/20
                                   ----
-trap.c
-       - trap_if_untrapped: new function, sets a trap on a signal if that
-         signal is not already trapped
-       - maybe_set_debug_trap: new function, sets DEBUG trap to command string
-         argument only if it's not already trapped
-
-trap.h
-       - maybe_set_debug_trap: new extern declaration
-
-
-builtins/source.def
-       - source_builtin: if the -T option isn't set, use maybe_set_debug_trap
-         in the unwind-protect instead of unconditionally restoring the old
-         trap string. That means if the sourced file changes the DEBUG trap,
-         that new trap will persist instead of being undone when the old
-         value is restored. Fixes bug reported by Scott Bronson
-         <bronson@rinspin.com>
-
-builtins/evalstring.c
-       - parse_string: before we jump to top_level, if we are at the `bottom'
-         of the parse_and_execute stack (parse_and_execute_level == 0), call
-         top_level_cleanup() before jumping so the right cleanup happens (e.g.,
-         cleaning up redirections and other state).  Fixes bug reported by
-         Sam Liddicott <sam@liddicott.com>
+subst.c
+       - expand_string_for_rhs: now takes `op' (brace expansion operator) as
+         an additional argument; changed call in parameter_brace_expand_rhs
+       - expand_string_for_rhs: make sure to set expand_no_split_dollar_star
+         if `op' is `=', since we are supposed to preserve the assignment
+         statement expansion semantics on the RHS of ${param=word}
 
-                                  4/15
-                                  ----
 jobs.c
-       - delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the
-         bgpids array, since Posix says shells only need to save the status
-         of async jobs.  Report and fix from John Fremlin <john@fb.com>
-
-                                  4/17
-                                  ----
-pcomplib.c
-       - COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is
-         over 300 completions by now
-
-variables.c
-       - VARIABLES_HASH_BUCKETS: constant used to size shell variables hash
-         table instead of relying on hash library default.  Used in calls
-         to hash_create in create_variable_tables(), push_temp_var(), and
-         push_func_var().  Currently set to 1024 because why not?  From a
-         discussion starting at
-         https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html
-       - initialize_shell_variables: if FUNCTION_IMPORT is not defined, the
-         nested conditional compilation causes syntax errors.  Bug and fix
-         from Eric Blake <eblake@redhat.com>
-
-configure.ac
-       - function-import: fix typo, assign to correct variable.  Found as the
-         result of a report by Eric Blake <eblake@redhat.com>
-
-shell.c
-       - open_shell_script: check whether or not file argument is a
-         directory before opening; Posix says that implementations may open
-         a directory with O_RDONLY.  Bug report from
-         Eduardo A. Bustamante López <dualbus@gmail.com>
+       - bgp_delindex: make sure to set ps->pid to NO_PID so we more
+         effectively remove it from the hash table. It shouldn't matter as
+         long as nothing in pidstat_table points to it, but better to be safe
+       - bgp_delete,bgp_search: generalize previous collision detection to
+         loop detection: abort search if we are going to go back to the
+         first index we tried
 
-                                  4/19
+                                  2/21
                                   ----
-ulimit.def
-       - fix typo in limits[] declaration of `k'
+lib/readline/vi_mode.c
+       - rl_vi_bword: if we're trying to move backward to non-whitespace
+         in a line that begins with whitespace, make sure we don't move
+         point to 0 and test memory locations before the start of the
+         buffer. Report and fix from Jason Hood <jadoxa@yahoo.com.au>
 
-                                  4/20
-                                  ----
-configure.ac
-       - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report
-         from Andreas Schwab <schwab@linux-m68k.org>
+lib/readline/display.c
+       - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to
+         initialize it. If it's still 0 after that, guess that the screen
+         width is 80 and use that to guess how many screen lines the prompt
+         consumes
 
-variables.c
-       - FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for
-         shell functions and the text of shell function definitions.  Initially
-         set to 512, even though it's a really rare case that someone has more
-         than around 150 functions, even with bash-completion
+lib/readline/readline.c
+       - readline_internal_setup: if in emacs editing mode, and we are
+         showing the editing mode in the prompt, call _rl_reset_prompt() to
+         make sure that the updated setting of _rl_show_mode_in_prompt
+         (presumably set in an inputrc file) is reflected in the redisplay
+         performed by rl_callback_newline via readline_internal_setup.
+         Fix from Jason Hood <jadoxa@yahoo.com.au>
 
-                                  4/21
+                                  2/22
                                   ----
-shell.c
-       - main: malloc_set_register: change arg to 0 to disable keeping track of
-         allocations and frees in table; change to 1 for malloc debugging on
-         demand.  Table is too small to keep effective track of allocations on
-         a modern system, need to use something like valgrind
+builtins/complete.def
+       - print_one_completion,print_compopts: make sure to display the
+         `nosort' and `noquote' options if they've been set for a particular
+         compspec.  Fix from Grisha Levit <grishalevit@gmail.com>
 
-                                  4/22
-                                  ----
-shell.c
-       - main: move cmd_init() (initialize word desc and word list object
-         caches) after startup files are read so the cache doesn't get filled
-         up with semi-permanent storage for shell functions and variables
+builtins/read.def
+       - read_builtin: if -e is supplied, read needs to free rlbuf before
+         returning, since it uses discard_unwind_frame at that point. Bug
+         and fix from ZhangXiao <xiao.zhang@windriver.com>
 
 execute_cmd.c
-       - execute_function: use maybe_set_debug_trap in the same way as source
-         builtin change from 4/10 to allow functions to reset a DEBUG trap
-         when set -T not in effect.  From a report by Peng Yu
-         <pengyu.ut@gmail.com>
+       - execute_for_command: when using a nameref as the for loop control
+         variable, make sure we check for readonly namerefs and make sure
+         that we force bind_variable to enforce restrictions on nameref
+         assignments. Fix from Grisha Levit <grishalevit@gmail.com>
 
-                                  4/23
+                                  2/23
                                   ----
-execute_cmd.c
-       - execute_disk_command: don't overwrite value of subshell_environment
-         by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something
-         like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved
+general.c
+       - make_absolute: convert deprecated cygwin_conv_to_full_posix_path
+         to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...)
 
-jobs.c
-       - wait_for: don't call give_terminal_to if running in a subshell
-         environment, not just if running_in_background is set; don't want
-         shell functions waiting for a process to complete in a pipeline to
-         give the terminal to the wrong process group.  Part of fix for bug
-         reported by Valentin Bajrami <valentin.bajrami@gmail.com>
-       - make_child: child process should not try to give the terminal to the
-         pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in
-         subshell_environment); functions in execute_cmd.c don't set that
-         flag until after make_child returns and the child process is running.
-         Rest of fix for bug reported by Valentin Bajrami
-         <valentin.bajrami@gmail.com>
+{shell,variables}.c,config-top.h
+       - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE;
+         don't use it in shell_initialize; set PATH to it just before
+         imposing restricted shell restrictions
 
-                                  4/24
+                                  2/24
                                   ----
-redir.c
-       - redirection_error: if the redirection involves {varname}, only use
-         `varname' in the error message if the error code is < 0 (one of the
-         internal redirection errors, like ambiguous or bad variable name);
-         otherwise the issue is probably with the filename and should be treated
-         as usual.  Fixes problem reported by Dr. David Alan Gilbert
-         <dgilbert@redhat.com>
+subst.c
+       - expand_string_for_rhs: revert change from 2/19 concerning setting
+         expand_no_split_dollar_star so we are consistent with the Posix
+         examples. This anticipates Martijn Dekker initiating an austin
+         group discussion about this case
 
-configure.ac,config.h.in
-       - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H
+                                  2/25
+                                  ----
+pcomplete.c
+       - gen_shell_function_matches: if COMPREPLY is an associative array,
+         don't coerce it to an indexed array, which will fail to produce any
+         matches anyway.  Report from Grisha Levit <grishalevit@gmail.com>
+       - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore
+         the nameref attribute. Report from Grisha Levit
+         <grishalevit@gmail.com>
 
-lib/readline/{rltty,terminal}.c
-       - sys/ioctl.h: include unconditionally for ioctl declaration, avoid
-         issues with `implicit declaration' warnings.  Issue originally
-         raised on gdb list by Chen Gang <xili_gchen_5257@hotmail.com>
+subst.c
+       - parameter_brace_expand: if expand_no_split_dollar_star is set, make
+         sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES
+         as the second argument.  Fixes differing treatment of $* and ${v[*]}
+         reported by Grisha Levit <grishalevit@gmail.com>, because otherwise
+         *contains_dollar_at gets set to 1 and the word is inappropriately
+         split
 
-                                  4/27
-                                  ----
-lib/malloc/table.c
-       - mem_table: now a circular buffer showing the state of the last
-         REG_TABLE_SIZE allocations rather than a hash table that quickly
-         fills up
+                                   3/1
+                                   ---
+subst.c
+       - expand_word_list_internal: if a variable assignment fails (e.g., due
+         to a readonly variable) in a non-interactive posix mode shell, don't
+         abort the shell if the assignment is being performed by the command
+         builtin, even if it's something like `command eval v=1'.  Fixes
+         RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838
+         (reported by Denys Vlasenko)
 
-builtins/declare.def
-       - typeset_builtin: add -n to list of supported options.  Omission
-         reported by Valentin Bajrami <valentin.bajrami@gmail.com>
+                                   3/3
+                                   ---
+builtins/shopt.def
+       - set_compatibility_level: make sure that changing the compatibility
+         level sets or modifies BASH_COMPAT. Fixes bug reported by
+         Stephane Chazelas <stephane.chazelas@gmail.com>
 
-unwind_prot.c
-       - use object caches instead of malloc/free to allocate and deallocate
-         unwind-protect elements
-       - uwp_init: initialize unwind-protect element object cache
+lib/glob/smatch.c
+       - is_cclass: broke into two functions: is_valid_cclass and cclass_test,
+         for future expansion. No functionality change
 
-unwind_prot.h
-       - uwp_init: extern declaration
+lib/glob/sm_loop.c
+       - BRACKMATCH: when testing a character against a character class name,
+         use the unfolded (original) character, since we're not performing a
+         comparison. This is what glibc does.  Fixes bug reported by
+         Lukáš BaÅinka <lukas.barinka@boxtrap.net>
 
-shell.c
-       - main: call uwp_init right after calling cmd_init -- initialize all the
-         object caches at the same place
+                                   3/4
+                                   ---
+doc/{bash.1,bashref.texi}
+       - note that the arguments to -eq and the rest of the arithmetic
+         operators are evaluated as expressions when using [[.  Report from
+         Rob la Lau <rob@ohreally.nl>
 
-lib/malloc/table.[ch]
-       - mlocation_table: new table to keep track of allocation locations by
-         file and line, functions to initialize table, record an allocation,
-         and dump the table to stderr
-       - mregister_alloc: call mlocation_register_alloc to record the location
-         (source file/line) for each allocation to pinpoint malloc hot spots
-         by number of calls.  More detail than gprof
 
-parse.y
-       - set_line_mbstate: replace free/xmalloc pair with xrealloc call
-       - read_token_word: call alloc_word_desc instead of xmalloc so we can take
-         advantage of the WORD_DESC cache
+                                   3/7
+                                   ---
+lib/readline/display.c
+       - update_line: completely rewrote the code that handles line wrapping
+         in the presence of multibyte/double-width characters; punts to a
+         dumb update in cases where the number of screen positions doesn't
+         match
+       - update_line: in one case, where we are deleting characters from the
+         line, if we are writing a non-space into the last screen character
+         position, note that we are no longer using a space as a placeholder
+         for a line wrap where there is a multi-width character that won't
+         fit on the screen line (wrapped_line[current_line+1] = 0)
 
-                                  4/28
+                                  3/10
                                   ----
-execute_cmd.c
-       - execute_simple_command: if command execution fails because the command
-         is a directory, and the `autocd' option is set, add a `--' argument
-         to the constructed `cd' command to protect against command names with
-         the same name as options to `cd'.  Report and fix from
-         isabella parakiss <izaberina@gmail.com>
+lib/readline/readline.c
+       - bind_arrow_keys_internal: add default key bindings for control-
+         arrow keys, suggested by Per Bothner <per@bothner.com>
 
-                                  4/30
+                                  3/13
                                   ----
-jobs.c
-       - printable_job_status, j_strsignal: change calls to strcpy and sprintf
-         that write to retcode_name_buffer to use strncpy and snprintf to
-         avoid buffer overflows caused by malicious translations.  Bug and fix
-         from Trammell Hudson <Trammell.Hudson@twosigma.com>
-
-                                   5/1
-                                   ---
-strtrans.c
-       - ansicstr: make sure the buffer is at least 12 bytes to ensure enough
-         space for any eventual call to u32cesc for one multibyte char
+doc/{bash.1,bashref.texi}
+       - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and
+         PS4) before being displayed.  Based on a report from Grisha Levit
+         <grishalevit@gmail.com>
 
-                                   5/4
-                                   ---
-jobs.c
-       - wait_for: if an interactive shell is running a loop and waiting for
-         a non-builtin command to exit, and the command exits due to SIGINT,
-         act as if the shell received the SIGINT as well and break the loop.
-         This matches the behavior when the shell is running a builtin command
-         in a loop, and when running a non-builtin command outside a loop, and
-         seems more broadly useful than running the trap handler over and over
-         again.  Report originally from Kaz Kylheku <kkylheku@gnu.org>
+                                  3/14
+                                  ----
+input.c
+       - bufstream_ungetc: return EOF if being asked to unget a character to
+         a NULL buffer
+       - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd]
+         is non-NULL before trying to dereference. Fixes bug reported by
+         floyd <floyd@floyd.ch>
 
-builtins/set.def
-       - unset_builtin: use different variables for keeping the state of the
-         -f and -v options than the loop uses to decide whether or not to
-         treat a name as a function or a variable.  Fixes problem with
-         unset_function setting `sticking' after you unset a function when
-         invoked with no options.  Bug report from Dreamcat4
-         <dreamcat4@gmail.com>
+execute_cmd.c
+       - execute_null_command: if we fork to execute the command, the subshell
+         is not interactive
+       - execute_null_command: for safety's sake, if a redirection attached
+         to a null command affects fd 0 or the fd the shell is reading for
+         input, and the redirection can potentially change or close that file
+         descriptor, force a fork so the redirection is done in a subshell
 
-shell.c
-       - open_shell_script: set running_shell_script to 1, set to 0 in every
-         other case (new variable)
-       - main: when checking whether or not to call start_debugger, test
-         running_shell_script instead of dollar_vars[1].  The goal is to not
-         invoke the debugger for interactive shells but allow it to run for
-         things like `bash --debugger -i /tmp/script'.  Problem reported by
-         Rocky Bernstein <rocky@gnu.org>
+                                  3/15
+                                  ----
+lib/readline/display.c
+       - update_line: if we have to output some bytes, and we are outputting
+         the prompt string, make sure we correct _rl_last_c_pos if we are
+         at the wrap offset -- what if all of the characters in the prompt
+         are invisible, so the visible length is 0?  Fixes display bug
+         reported by Grisha Levit <grishalevit@gmail.com>
 
-lib/readline/histexpand.c
-       - history_event_delimiter_chars: new (as yet undocumented) variable
-         containing by default characters that can delimit a history event
-         specifier without requiring a `:': "^$*%-" as the documentation has
-         always said.  Fixes bug reported by Anders Granlund
-         <anders.granlund.0@gmail.com>
+execute_cmd.c
+       - undo_partial_redirects: new function, performs redirections specified
+         in redirection_undo_list and disposes of them. Intended to be used
+         to unwind redirections performed before a redirection error
+       - dispose_partial_redirects: new function, disposes of
+         redirection_undo_list and nulls the list
+       - execute_command_internal: use undo_partial_redirects
 
-                                  5/10
-                                  ----
-lib/glob/gmisc.c
-       - match_pattern_char, match_pattern_wchar: if passed an empty string,
-         return a match if the first character of the pattern is `*'
+execute_cmd.h
+       - undo_partial_redirects: extern declaration
+       - dispose_partial_redirects: extern declaration
 
 subst.c
-       - pat_subst: change to allow empty strings to be replaced as long as
-         pattern matches empty string.  Report and fix from isabella parakiss
-         <izaberina@gmail.com>
+       - exp_jump_to_top_level: if we are throwing an expansion error while
+         expanding a redirection (expanding_redir != 0), undo any undoable
+         redirections by calling undo_partial_redirects() so we don't leave
+         any in place
 
-                                  5/12
+variables.c
+       - initialize_shell_variables: if SHELLOPTS is in the environment,
+         unset the readonly attribute on any existing variable with that
+         name. It may have been created by processing a -o option on the
+         command line.  Fixes issue reported by Stephane Chazelas
+         <stephane.chazelas@gmail.com>
+
+                                  3/16
                                   ----
-lib/sh/strtrans.c
-       - ansic_wshouldquote: make behavior consistent in the event of an
-         invalid multibyte sequence: return 1 to the caller so the string
-         will be $'...' quoted
+lib/readline/histfile.c
+       - read_history_range: short-circuit and do nothing if the history file
+         is of 0 size
+       - read_history_range: make sure the buffer is zero-terminated so the
+         timestamp tests work right for history files of 1 character.  Report
+         and recommended fix from Denis Martinez <denis.martinez@gmx.com>
 
-builtins/cd.def
-       - cd_builtin: print the right error message even if printable_filename
-         changes errno (e.g., EILSEQ)
+lib/readline/complete.c
+       - compute_lcd_of_matches: when trying to compute the common prefix
+         of a set of matches while performing case-insensitive completion
+         matching, don't sort the match list unless rl_sort_completion_matches
+         is non-zero.  Fixes problem reported by Roee Bar <roee@arista.com>
 
-lib/sh/shquote.c
-       - sh_backslash_quote: in multibyte locales, even if is_basic does not
-         return true, backslash-quote an ASCII character that backslash_table
-         says should be quoted.  Part of fix for bug reported by Igor
-         Bogomazov <ygrex@ygrex.ru>
+                                  3/18
+                                  ----
+subst.c
+       - extract_dollar_brace_string: handle process substitution embedded in
+         a ${...} expansion in the same way as command substitution.  Reported
+         by D630 <d630@posteo.net>
 
-bashline.c
-       - directory_exists: new function, dequotes the string argument, removes
-         any trailing slash, and returns true if the result is a valid
-         existing filename
-       - bash_filename_stat_hook,bash_directory_completion_hook: use
-         directory_exists instead of calling lstat/stat on the quoted
-         directory name.  Rest of fix for bug reported by Igor Bogomazov
-         <ygrex@ygrex.ru>
+parse.y
+       - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is
+         read
+       - parse_matched_pair: handle an embedded process substitution like an
+         embedded command substitution if we are parsing an array index or
+         a dollar-brace expansion.  Reported by D630 <d630@posteo.net>
 
-                                  5/15
+                                  3/21
                                   ----
-aclocal.m4
-       - BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL
-         to $LIBS.  If we're using the included lib/intl/libintl.a, it will
-         include a version of locale_charset
+subst.h
+       - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by
+         make_variable_value
 
-                                  5/17
-                                  ----
-lib/readline/bind.c
-       - sv_isrchterm: make sure we check for v[end] == 0 while in the loop
-         looking for whitespace.  Bug report and fix from Sergio Durigan
-         Junior <sergiodj@sergiodj.net>
+variables.c
+       - make_variable_value: ASS_NOEVAL: if this is set, don't attempt
+         arithmetic evaluation or case modification, just produce the value
+         (still honor ASS_APPEND)
+       - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level
+         if arithmetic evaluation fails due to a syntax error
+       - bind_variable_internal: make sure aflags is passed to all calls to
+         make_variable_value
+       - push_temp_var: add ASS_NOLONGJMP to the flags passed to
+         bind_variable_internal.  Fixes bug reported by D630 <d630@posteo.net>
 
-lib/sh/shmbchar.c
-       - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop;
-         calculate it once at beginning
+bashline.c
+       - bash_execute_unix_command: don't bother to attempt optimization by
+         checking whether the call to parse_and_execute changes $READLINE_LINE;
+         it can be defeated by the new code that optimizes appends to string
+         variables. Bug reported by Grisha Levit <grishalevit@gmail.com>
 
-lib/sh/mbscmp.c
-       - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once
-         at beginning
+                                  3/22
+                                  ----
+subst.c
+       - expand_string_for_rhs: re-apply change from 2/19 based on discussion
+         on the austin-group mailing list about how unquoted ${var-$*}
+         expands when IFS is null.  Originally reported by Martijn Dekker
+         <martijn@inlv.org>
 
-lib/sh/mbscasecmp.c
-       - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it
-         once at beginning
+                                  3/25
+                                  ----
+parse.y
+       - read_token_word: if we read a WORD immediately after a CASE, FOR, or
+         SELECT, increment `expecting_in_token' to note that we're going to
+         be reading IN as the next non-newline token
+       - special_case_tokens: if we're expecting an IN (expecting_in_token > 0)
+         and we have an "in", return IN and decrement expecting_in_token. This
+         is a better implementation of Posix grammar rule 6 than the previous
+         code in that function (which is still there for posterity, but should
+         eventually be removed).  Fixes bug reported by Torka Noda
+         <kanito.tasoga@gmail.com>
 
-lib/sh/shquote.c
-       - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop;
-         calculate it once at beginning
+subst.c
+       - string_list_pos_params: if the expansion is not quoted, and IFS is
+         null, return a string containing the quoted positional parameters
+         separated by spaces.  Callers know what to do with the string
+       - parameter_brace_substring,parameter_brace_remove_pattern,
+         parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod:
+         for the VT_POSPARMS case, after calling the operator-specific
+         expansion function, which eventually calls string_list_pos_params,
+         leave the returned string alone, since it's already quoted properly
+       - parameter_brace_expand: after calling the above functions to perform
+         expansions, if the expansion is being performed on an unquoted $*
+         when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC
+         so that splitting on spaces is performed on the already-quoted word.
+         Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
 
-lib/sh/casemod.c
-       - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it
-         once at beginning
+                                  3/28
+                                  ----
+subst.c
+       - process_substitute: change so the subshell doesn't inherit the 'v'
+         option, like command substitution now does (as of bash-4.4).
+         Suggested by Grisha Levit <grishalevit@gmail.com>
 
+                                  3/30
+                                  ----
 subst.c
-       - expand_word_internal: move calculation of MB_CUR_MAX out of loops;
-         calculate it once at beginning of function (XXX should use
-         locale_mb_cur_max)
+       - parameter_brace_casemod: now takes a pflags parameter, like
+         parameter_brace_patsub; changed callers
+       - parameter_brace_transform: now takes a pflags parameter, like
+         parameter_brace_patsub; changed callers
+       - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're
+         on the rhs of an assignment statement and not going to perform
+         word splitting, we're expanding $*, and $IFS is null, make sure
+         string_list_pos_params treats the expansion as double-quoted, so
+         the positional parameters will be concatenated.  Fixes bug reported
+         by Grisha Levit <grishalevit@gmail.com>
 
-                                  5/22
+                                  3/31
                                   ----
-lib/readline/rlmbutil.h
-       - _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII
-         printable characters, returns 1 for those
-       - WCWIDTH: call _rl_wcwidth instead of wcwidth
+doc/{bash.1,bashref.texi}
+       - add notes to the description of pipelines emphasizing that each
+         element of a pipeline is executed in a subshell, referring to the
+         description of a command execution environment, and that the
+         lastpipe option can modify that behavior. From a discussion with
+         Jean Delvare <jdelvare@suse.de>
 
-lib/readline/display.c
-       - rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate
-         it once at beginning.  Report and patch from Ole Laursen
-         <ole.laursen@gmail.com>
+                                   4/1
+                                   ---
+subst.c
+       - expand_word_internal: set had_quoted_null to note for later if we
+         expand '', "", or "$x" when x is unset
+       - expand_word_internal: if we expand "$param" (or "${param}") and we
+         come back with a single word with the W_HAVEQUOTEDNULL flag set,
+         make sure we set had_quoted_null to remember it for later. In this
+         case, if we already have seen a quoted null and we expanded $@ in
+         this (sub)string expansion, we don't want to do any of the special
+         $@ handling. In particular, we don't want to set *expanded_something,
+         because that will result in word splitting and quoted null removal.
+         Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
+       - parameter_brace_patsub: when expanding ${*/pat/sub} in the case
+         where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't
+         going to be doing word splitting), pass MATCH_ASSIGNRHS so we do
+         the right thing in this case. Part of a set of cases inspired by
+         Grisha Levit <grishalevit@gmail.com>
+       - param_expand: case '*': if we are on the rhs of an assignment
+         (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure
+         string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes
+         the positional parameters before joining them into a string with
+         string_list_internal.  Otherwise, that first space gets removed by
+         the implicit word splitting that gets performed.  Reported by
+         Grisha Levit <grishalevit@gmail.com>
 
-                                  5/24
-                                  ----
-lib/readline/text.c
-       - rl_insert: change to attempt to batch-insert pending typeahead (not
-         pushed input or input from a macro) that maps to rl_insert.  An
-         attempt to suppress redisplay until readline reads all typeahead --
-         pasted input, for instance.  Inspired by report from Ole Laursen
-         <ole.laursen@gmail.com>.  XXX - need to make this a bindable
-         variable; already controlled by _rl_optimize_typeahead
+array.c
+       - array_patsub,array_modcase: handle ${A[*]} identically to $* when
+         not quoted and IFS is null (separate with spaces).  Makes things
+         like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null
 
-lib/readline/rlprivate.h
-       - _rl_optimize_typeahead: extern declaration
+subst.c
+       - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]}
+         when the match is on the rhs of an assignment statement (PF_ASSIGNRHS)
+         and ifs is null, make sure the match is performed as if it were
+         quoted
+       - parameter_brace_substring: now takes a PFLAGS argument
+       - parameter_brace_substring: if expanding $* in a context where we
+         don't want to do word splitting (expand_no_split_dollar_star &&
+         PF_NOSPLIT2), make sure we expand $* as if it were quoted
+       - parameter_brace_substring: if expanding an unquoted $* on the rhs of
+         an assignment statement when IFS is null, make sure we expand the $*
+         as if it were quoted
 
-lib/readline/doc/{hstech.texi,history.3}
-       - next_history: clarify under what circumstances the history offset is
-         incremented; suggestion from Glenn Golden <gdg@zplane.com>
+                                   4/4
+                                   ---
+doc/{bash.1,bashref.texi}
+       - read: document that a delim argument of '' terminates each line when
+         a NUL character appears
 
-print_cmd.c
-       - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC
-         or ARITH_FOR_COMMAND is defined.  Report from Flavio Medeiros
-         <flaviomotamederios@gmail.com>
+                                   4/5
+                                   ---
+subst.c
+       - parameter_brace_expand_word: handle case where unquoted $@ is
+         expanded in a context where word splitting is not performed (PF_NOSPLIT2)
+         and IFS is not equal to the standard value
+       - param_expand: handle case where unquoted $@ is expanded in a context
+         where word splitting is not performed (PF_NOSPLIT2) and IFS is not
+         equal to the standard value.  Fixes bug with IFS == $1 when expanding
+         unquoted $@ reported by Grisha Levit <grishalevit@gmail.com>
 
-flags.c
-       - change_flag: new variable verbose_flag, set when `v' flag modified;
-         sets value of echo_input_at_read correspondingly
+                                   4/7
+                                   ---
+subst.c
+       - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $*
+         as quoted unless expand_no_split_dollar_star is also set. Fixes
+         expansion bug reported on 4/4 by Grisha Levit <grishalevit@gmail.com>
+       - parameter_brace_transform: if we transform unquoted A[@] or A[*]
+         when IFS is null, don't quote the result of array_transform in the
+         same way we don't quote the result of parameter_list_transform,
+         since it will come back quoted.  Fixes bug reported by
+         Grisha Levit <grishalevit@gmail.com>
+       - list_transform: if we transform unquoted $* or ${a[*]} when IFS is
+         null and expand_no_split_dollar_star is non-zero, call
+         string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting.
+         We do this in all cases except @Q, which is inconsistent but more
+         intuitive.
+         Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
 
-flags.h
-       - verbose_flag: new extern declaration
+                                   4/8
+                                   ---
+builtins/read.def
+       - read_mbchar: if unbuffered == 2, we are running read -N and need to
+         use zreadn to read the rest of the multibyte char, since the
+         previous call to zreadn may have buffered characters.  Fixes bug
+         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
 
-shell.c
-       - long_options: --verbose now sets verbose_flag
-       - main: set echo_input_at_read from verbose_flag after parsing any
-         long options
+pathexp.h
+       - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn
+         CTLESC CTLESC (quoted CTLESC that's usually removed as part of
+         word splitting or quote removal) into CTLESC
 
-builtins/fc.def
-       - fc_builtin: don't unwind-protect echo_input_at_read directly; set it
-         to 1 before calling fc_execute_file as before, and reset it to value
-         of global verbose_flag using set_verbose_flag called from an
-         unwind_protect.  Report from isabella parakiss <izaberina@gmail.com>
+pathexp.c
+       - quote_string_for_globbing: if QGLOB_CTLESC is present in flags,
+         turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded
+         by a backslash. Callers can't do this because the remaining CTLESC
+         will be treated as a quoting character and turned into a backslash
 
-builtins/shopt.def
-       - shopt_set_debug_mode: new function, called when the extdebug shell
-         option changes.  Right now, it sets function_trace_mode when extdebug
-         is enabled, and turns off when extdebug is disabled.  The
-         documentation has always said that shopt does this.  Report from
-         Peng Yu <pengyu.ut@gmail.com>
+execute_cmd.c
+       - execute_case_command: if the pattern is not quoted, make sure to tell
+         quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by
+         passing QGLOB_CTLESC.  Fixes bug reported 4/2 by Martijn Dekker
+         <martijn@inlv.org>
 
-                                  5/27
-                                  ----
-findcmd.[ch]
-       - add support for EXECIGNORE shell variable, list of extglob patterns
-         that prevent matching filenames from being identified as executable
-         files
+                                   4/9
+                                   ---
+subst.c
+       - string_transform: after calling ansiexpand for the `E' transformation,
+         need to call dequote_escapes because ansiexpand assumes it is being
+         called by the parser and arranges for ansicstr to quote CTLESC and
+         CTLNUL with CTLESC.  Reported by Grisha Levit <grishalevit@gmail.com>
 
 variables.c
-       - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when
-         $EXECIGNORE changes
+       - mk_env_string: when exporting functions, run them through
+         dequote_escapes because any strings containing CTLESC or CTLNUL are
+         still quoted with CTLESC.  Reported by Grisha Levit
+         <grishalevit@gmail.com>
 
-variables.h
-       - sv_execignore: extern declaration
+subst.[ch]
+       - quote_escapes,dequote_escapes: now take const char * argument
 
-doc/{bash.1,bashref.texi}
-       - document EXECIGNORE variable
+execute_cmd.c
+       - execute_intern_function: if the function name contains CTLESC, run
+         it through dequote_escapes just in case it got CTLESC quoting
+         CTLESC or CTLNUL from the parser
 
-                                  5/28
+                                  4/11
                                   ----
-lib/readline/callback.c
-       - rl_callback_sigcleanup: new function, cleans up and unsets any state
-         rl_callback_read_char uses.  Intended to be used after a signal
+eval.c
+       - reader_loop: make sure PS0 is expanded and displayed before
+         incrementing the command number
 
-lib/readline/signals.c
-       - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT.  Fixes bug
-         reported to python group by Martin Panter <vadmium+floss@gmail.com>
+parse.y
+       - prompt_history_number:  function to make history number as reported
+         by \!, or posix mode !!, be the same index that the (possibly multi-
+         line) command will be stored with. The history library increments
+         history_offset as soon as a new line is entered, and it's up to the
+         history code to store the second and subsequent lines of a command
+         in the same history entry.  If we are expanding PS0 or PS4, or
+         a ${var@P} expansion, we're already past the history entry no
+         matter what.  Inspired by patch from Grisha Levit
+         <grishalevit@gmail.com>
+       - decode_prompt_string: call prompt_history_number
+       - decode_prompt_string: if expanding PS4 or ${var@P}, make the
+         command number the same as reported by PS0/PS1/PS2
 
-lib/readline/isearch.c
-       - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can
-         call it
+                                  4/12
+                                  ----
+support/Makefile.in
+       - clean: remove man2html.o as part of this production instead of
+         waiting until `distclean'. Reported by chrlis <chrlis@sbrella.com>
 
-lib/readline/search.c
-       - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can
-         call it
+subst.c
+       - string_list_pos_params: if we are expanding $* in a context where
+         IFS is null and expand_no_split_dollar_star is set (no word
+         splitting), use string_list_dollar_star to force the positional
+         parameters to be joined without first separating them into a list
+         and attempting to join them later.  Fixes problem with constructs
+         like ${var=${*:1}}, pointed out by Grisha Levit
+         <grishalevit@gmail.com>. This undoes change to @Q from 4/7, so
+         list_transform change reverted
 
-lib/readline/rlprivate.h
-       - _rl_[in]search_cleanup: extern declarations
+                                  4/19
+                                  ----
+builtins.h
+       - added BUILTINS_H include guard
 
-lib/readline/readline.h
-       - rl_callback_sigcleanup: new extern declaration
+examples/loadables/Makefile.in
+       - install loadables.h as sample include file, along with Makefile.inc
 
-lib/readline/doc/rltech.texi
-       - rl_callback_sigcleanup: documented
+                                  4/23
+                                  ----
+bashline.c
+       - maybe_make_readline_line: don't try to do anything if the passed
+         NEW_LINE is NULL.  Report from Jaren Stangret <sirjaren@gmail.com>,
+         fix from Eduardo Bustamante <dualbus@gmail.com>
 
-lib/readline/readline.h
-       - bump readline version to 7.0 due to addition of rl_callback_sigcleanup
+                                  4/24
+                                  ----
+parse.y
+       - xparse_dolparen: if the current token (the last thing read_token
+         returned to yylex) is shell_eof_token, assume that it is the new
+         bison lookahead token and clear it. Fixes bug reported by
+         Werner Fink <werner@suse.de>
 
-                                  5/29
+                                  4/25
                                   ----
-builtins/declare.def
-       - declare_internal: if we are trying to change attributes or value for
-         a nameref variable whose value points to an unset variable, make
-         sure we create a new variable whose name is the value of the nameref
-         variable. That is,
+doc/{bash.1,bashref.texi}
+       - cmdhist: clarify that this option only has an effect if history is
+         enabled. Suggested by Matthew Braun <matthew@powerplug.com>
 
-               declare -n foo=bar
-               unset foo       # unsets bar
-               declare -i foo
+                                  4/26
+                                  ----
+jobs.c
+       - wait_for: if a non-interactive shell with job control enabled (set -m)
+         detects that a foreground job died due to SIGINT, act as if the shell
+         also received the SIGINT. Prompted by an austin-group-l discussion
+       - waitchld: run SIGCHLD trap for each child exited even if job control
+         is not enabled when in Posix mode. Prompted by an austin-group-l
+         discussion
 
-         should create a (invisible) variable named `bar' with the integer
-         attribute.  Fixes problem reported by Greg Wooledge
-         <wooledg@eeg.ccf.org>
+                                  4/27
+                                  ----
+lib/readline/histfile.c
+       - read_history_range: if the history file is empty, free the history
+         filename before returning. Report and fix from Eduardo Bustamante
+         <dualbus@gmail.com>
 
-builtins/set.def
-       - unset_builtin: if we find a nameref variable when we look it up with
-         find_variable (the returned variable has a name different from what
-         we looked up), make sure we use that new name for the rest of the
-         function rather than rely on unbind_variable to do the same thing as
-         find_variable.  Fixes problem reported by Greg Wooledge
-         <wooledg@eeg.ccf.org>
-       - unset_builtin: if we try to unset a nameref variable whose value is
-         not a set variable, make sure we don't try to unset the nameref
-         itself, but rather the variable it points to.  This ensures that the
-         following always works as it should
-
-               declare -n foo=bar
-               unset foo       # unsets bar and leaves foo unchanged
+lib/readline/bind.c
+       - rl_parse_and_bind: make sure there is something, even if it's a
+         quoted empty string, before the `:' in a key binding.  Report from
+         Eduardo Bustamante <dualbus@gmail.com>
+       - rl_parse_and_bind: if the right side of a key binding starts with a
+         quote, make sure there's a matching close quote before treating it
+         as a macro definition
+       - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or
+         \C-\M-) make sure we break out of the loop if moving to the character
+         to be translated is a NUL. Old code did this only in the \C-\M-
+         case. Report from Eduardo Bustamante <dualbus@gmail.com>
 
-lib/readline/funmap.c
-       - vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is
-         actually what the `i' keybinding in vi_movement_keymap maps to.
-         Cosmetic fix from isabella parakiss <izaberina@gmail.com>
+                                  4/28
+                                  ----
+lib/glob/sm_loop.c
+       - GMATCH: implement a clever technique from glibc that avoids
+         backtracking past a `*' if we've already chosen to use it and need
+         matches beyond it.  Look at https://research.swtch.com/glob for a
+         longer explanation. This results in a significant speedup for globs
+         with multiple instances of `*', especially with more than 4.
 
-                                   6/2
+                                   5/2
                                    ---
-general.c
-       - conf_standard_path: moved get_standard_path here from command.def; made
-         public function
-
-general.h
-       - conf_standard_path: extern declaration
-
+lib/readline/bind.c
+       - rl_translate_keyseq: make sure a trailing backslash in the key
+         sequence is preserved. Report from Eduardo Bustamante
+         <dualbus@gmail.com>
 
-                                   6/3
+                                   5/3
                                    ---
-parse.y
-       - parse_matched_pair: make sure that command substitution constructs
-         within ${...} expansions are parsed as such using parse_comsub, so
-         the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears
-         within the comsub.  Report from Christos Zoulas <christos@zoulas.com>
-
-findcmd.c
-       - search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH,
-         which means use the command -p path, and CMDSRCH_TEMPENV, currently
-         unused.  Existing flag value of 1 now CMDSRCH_HASH
-       - search_for_command: don't set `path' to NULL if it wasn't found in
-         the temporary environment; we can use it later
-       - search_for_command: look for the hashed file if temp_path == 0, not
-         if we set path back to 0 (or path lookup failed)
-       - search_for_command: just call find_user_command_in_path with a
-         pathlist argument that's set depending on the flags passed
-       - find_in_path: new function, just calls find_user_command_in_path at 
-         this point
-       - search_for_command: don't put non-existent files into the hash table
-
-findcmd.h
-       - CMDSRCH_*: new flags for search_for_command
-       - find_in_path: extern declaration
+builtins/builtin.def
+       - builtin_builtin: make sure to set  this_shell_builtin to the builtin
+         command being executed, overwriting `builtin'. Leave
+         last_shell_builtin alone.  Fixes bug reported by Luiz Angelo Daros
+         de Luca <luizluca@gmail.com>
 
-execute_cmd.c
-       - execute_disk_command: check for CMD_STDPATH and call search_for_command
-         with CMDSRCH_STDPATH if it's set
-
-builtins/command.def
-       - command_builtin: if -p given without -v or -V, set the CMD_STDPATH
-         flag in the simple command we construct from the rest of the
-         argument list.  This fixes the command -p cmd issue with changing
-         $PATH for the duration  of `cmd's execution reported by
-         <sdowdy@rap.ucar.edu>
-
-builtins/common.h
-       - CDESC_STDPATH: new flag for describe_command; means to use standard
-         path for command -pv or -pV
+jobs.c
+       - waitchld: modify change of 4/26 to run SIGCHLD traps even if job
+         control is not enabled
 
-builtins/command.def
-       - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH
-         flag to describe_command
+lib/readline/misc.c
+       - rl_get_previous_history: if we didn't find a previous history entry
+         to use, call rl_maybe_unsave_line before returning because we
+         aren't going to use the saved line, and it has the same undo list
+         as rl_undo_list.  Fixes fuzzing bug reported by Eduardo Bustamante
+         <dualbus@gmail.com>
+       - rl_get_{next,previous}_history: if there is no history list, don't
+         bother doing anything
 
-builtins/type.def
-       - describe_command: if given the CDESC_STDPATH flag, use find_in_path
-         with the conf_standard_path() result. Since `all' will never be on
-         with this flag, at least not yet, we can allocate and free the path
-         list.  Fixes the bug of a temporary environment value for PATH
-         preceding a `command -pv' or `command -pV' persisting when the
-         command finishes and means we use fewer unwind-protects
+                                   5/4
+                                   ---
+expr.c
+       - popexp: if we error out due to stack underflow, make sure to zero out
+         expression and lasttp; they may contain undefined values we don't
+         want evalerror to print
+       - expr_unwind: handle expr_depth decrementing below zero
+       - evalexp: restore the old value of evalbuf even if we error and
+         longjmp; we may have called evalexp recursively
+       - evalerror: make sure expression is non-NULL before trying to print it.
+         These fix fuzzing bug reported by Eduardo Bustamante
+         <dualbus@gmail.com>, happens only in cases where we don't longjmp on
+         a fatal expansion error
 
-                                   6/4
+                                   5/5
                                    ---
-Makefile.in (plus other Makefile.ins)
-       - VPATH: remove `.' from VPATH value.  It's not needed any more and it
-         trips a GNU make 4.1 bug on Cygwin.  Report and fix from Eric Blake
-         <eblake@redhat.com>
+parse.y
+       - read_token_word: when checking for a word that's a target of a
+         redirection, we can potentially call valid_array_reference, which
+         can end up calling the parser recursively. If it does that, we
+         need to make sure that yylval.word doesn't change, so we set it back
+         to the_word. Fixes another fuzzing bug
 
-lib/readline/histfile.c
-       - history_tempfile: new function, takes history file name as template
-         and creates a temp file name including the PID
-       - history_truncate_file, history_do_write: instead of creating backup
-         and restoring it on failure, use history_tempfile to create a temp
-         file name, write to it, then rename to original history filename
-         (handling symlinks using history_restore()).  Original report and
-         patch from Russell Stuart <russell-savannah@stuart.id.au>
+parse.y
+       - arith_for_command: make syntax errors in the arithmetic for command
+         (signaled by make_arith_for_command returning NULL) more like
+         language syntax errors by calling YYERROR. Avoids complicated
+         attempts at error recovery and dealing with NULL returns from
+         command productions. Pointed out by Eduardo Bustamante
+         <dualbus@gmail.com>
 
-doc/{bash.1,bashref.texi}
-       - ulimit: clarify that -c and -f are in increments of 512 bytes when
-         in posix mode.  Fix from Robin Johnson <robbat2@gentoo.org> via
-         <vapier@gentoo.org>
+lib/readline/kill.c
+       - _rl_copy_to_kill_ring: make sure the current slot in the kill ring
+         has something in it, even if the last command was a kill, before
+         trying to modify it. Another fuzzing bug
 
-                                   6/9
+                                   5/6
                                    ---
-execute_cmd.c
-       - execute_in_subshell: don't call restore_default_signal for the exit
-         trap, reset_signal_handlers already does the right thing and keeps
-         the trap string around; no need to kill trap string.  Bug report
-         from Miroslav Koskar <mk@mkoskar.com>
-
-                                  6/11
-                                  ----
-nojobs.c
-       - find_proc_slot: now takes pid as an argument to avoid finding old
-         procs when pids wrap around
-       - add_pid: pass pid to find_proc_slot to avoid multiple instances of
-         the same pid in the list when pids wrap around.  Fixes bug reported
-         by Roy Keene <rkeene@rkeene.org>
+builtins/read.def
+       - read_builtin: if we see a backslash when not in raw mode (not -r),
+         only back up `i' when we read the next character if we know we added
+         a CTLESC the last time through the loop (skip_ctlesc == 0),
+         especially if i == 0. Another fuzzing bug from Eduardo Bustamante
+         <dualbus@gmail.com>
 
-execute_cmd.c
-       - REAP: test for job_control == 0 also to determine whether or not
-         to call reap_dead_jobs, since shells without job control enabled
-         don't report on background process status
+                                   5/8
+                                   ---
+builtins/read.def
+       - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle
+         of an incomplete multibyte sequence.  Fixes another fuzzing bug
+       - read_builtin: use mb_cur_max instead of constant 4 when deciding
+         whether the next character can exceed the number of bytes available
+         in input_string
 
-doc/bash.1,lib/readline/doc/hsuser.texi
-       - history: clarify documentation of -a option to note that it will not
-         append the same line to the history file more than once.  Fixes
-         problem reported by Reuben Thomas <rrt@sc3d.org>
+lib/readline/input.c
+       - MinGW: include <conio.h> before <io.h>. Fix from Eli Zaretskii
+         <eliz@gnu.org>
 
-                                  6/12
-                                  ----
-execute_cmd.c
-       - execute_in_subshell: don't bother decrementing subshell_level before
-         this returns; the caller will just exit.  This means that
-         $BASH_SUBSHELL will have consistent values in the subshell and any
-         subsequent exit trap.  Fixes bug reported by Miroslav Koskar
-         <mk@mkoskar.com>
-       - shell_execve: before longjmp to subshell_top_level, call reset_parser
-         to free up any input line and stack of pushed strings
+builtins/read.def
+       - read_builtin: if we get input from readline, we need to get the
+         remainder of a multibyte character from rlbuf instead of calling
+         read_mbchar. Bug reported by Eduardo Bustamante <dualbus@gmail.com>
 
+                                   5/9
+                                   ---
 parse.y
-       - mk_alexpansion: if the last character of the alias is a shell
-         metacharacter, don't add a space to the string following the alias
-         value, since that will change the meaning of the command.  THIS IS
-         NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an
-         email message from Jilles Tjoelker <jilles@stack.nl> to austin
-         group
+       - token_is_assignment: use the allocated buffer approach in all cases,
+         not just if we're not using bash malloc. This avoids the assignment
+         to t[i+1] writing beyond the end of the allocated token if
+         i == token_buffer_size - 1. Another fuzzing bug
+       - xparse_dolparen: if parse_string returns < 0, we clear out the
+         current shell_input_line before performing a longjmp, since we're
+         abandoning parsing of this command.  This is consistent with how
+         the parser resynchronizes after other syntax errors
+       - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error
+         that's immediately followed by an EOF after resynchronization.
+         Fixes another fuzzing bug
 
-                                  6/13
+                                  5/10
                                   ----
-subst.c
-       - dequote_string: don't turn strings consisting of a single CTLESC
-         into empty strings; return them unmodified.  The idea is that there
-         is nothing to quote.  This means that something like
-               c=$'\001'
-               x=$c
-         results in x containing '\001' when IFS=$'\001'.  See if this will
-         cause problems by adding a debugging statement in the code
+lib/readline/text.c
+       - _rl_set_mark_at_pos: don't let the mark be set to a position < 0.
+         Fixes a fuzzing bug
+       - rl_exchange_point_and_mark: don't do anything if the mark is already
+         less than 0
 
-                                  6/15
+                                  5/12
                                   ----
-parse.y
-       - CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac'
-         after a `|' while in a case pattern list (parser_state & PST_CASEPAT).
-         This is Posix grammar rule 4
-         (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02)
+lib/readline/rlmbutil.h
+       - wchar_t: make sure this is defined as int if multibyte characters
+         aren't supported
 
-                                  6/16
+lib/readline/text.c
+       - _rl_change_case: don't force use of ascii toupper and tolower if
+         isascii returns true; it's not defined to work on characters outside
+         the 0..255 (really 0..127) range.  Bug reported by
+         Eduardo Bustamante <dualbus@gmail.com>
+
+                                  5/14
                                   ----
-jobs.c
-       - wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap
-         handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER),
-         since we allow recursive trap invocations now
-       - wait_for: make sure we treat SIGCHLD as trapped if the trap handler
-         is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during
-         calls to run_sigchld_trap()
+lib/readline/text.c
+       - rl_change_case: handle case where the old and new characters (after
+         the case change) are not the same number of bytes. Pointed out in
+         http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html
 
-trap.c
-       - run_pending_traps: since we allow recursive trap handler invocations,
-         make sure we set pending_traps[SIGCHLD] to 0 while we mark the
-         signal handler in progress (SIG_INPROGRESS) and don't reset it to 0
-         after run_sigchld_trap returns in case more SIGCHLDs have been
-         queued while it's running
+lib/readline/display.c
+       - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar
+         since that needs the base of the array. Bug from fuzzing reported by
+         Eduardo Bustamante <dualbus@gmail.com>
 
-                                  6/22
+                                  5/15
                                   ----
-lib/readline/readline.c
-       - _rl_dispatch_subseq: if we shadowed any function, not just self-
-         insert, bind that function to the key we shadowed and dispatch on it.
-         This preserves and dispatches off the original key, not ANYOTHERKEY,
-         and makes sure we are dispatching from a keymap with the right key
-         binding.  Fixes bug reported by Carlos Pita
-         <carlosjosepita@gmail.com>
+execute_cmd.c
+       - execute_simple_command, execute_arith_command, execute_cond_command,
+         execute_arith_for_command: adjust the line number when executing a
+         function interactively so that the first command in the function is
+         line 1, not line 0, as Posix requires.  Reported by Robert Elz
+         <kre@bmunnari.OZ.AU>
+       - execute_simple_command, execute_arith_command, execute_cond_command,
+         execute_arith_for_command: ony adjust the line number when executing
+         a function interactively if we are not sourcing a file
+         (sourcelevel == 0), so this is consistent everywhere we adjust the
+         line number
 
-                                  6/23
+                                  5/16
                                   ----
 bashline.c
-       - attempt_shell_completion: don't read past the end of rl_line_buffer
-         while skipping assignment statements before command names.  Fix for
-         bug reported by Hanno Böck <hanno@hboeck.de>
+       - bash_directory_completion_hook: when calling split_at_delims to see
+         whether a ${ or $( is closed, use the right value for `start' relative
+         to the substring beginning at `$'.  Bug from fuzzing reported by
+         Eduardo Bustamante <dualbus@gmail.com>
 
-lib/readline/parens.c
-       - _rl_enable_paren_matching: make paren matching work in vi insert
-         mode. Really, this time.  Bug report from Carlos Pita
-         <carlosjosepita@gmail.com>
+expr.c
+       - expassign: if the call to expcond generates a syntax error in a
+         context when the shell won't longjmp (like when evaluating $PS1),
+         it will end up NULL and we need to catch it before calling strlen.
+         Bug from fuzzing reported by Eduardo Bustamante <dualbus@gmail.com>
 
-                                  6/29
-                                  ----
-parse.y
-       - parse_comsub: when starting to parse a word, make sure that we set
-         lex_rwlen to 0 along with lex_wlen if we are in a position where we
-         can read a reserved word.  Fixes bug reported by  Nathan Neulinger
-         <nneul@neulinger.org>
+examples/bash-completion/
+       - new place to include a current or recent version of the
+         bash-completion package
 
-                                  6/30
+                                  5/19
                                   ----
-sig.h
-       - include <signal.h> unconditionally and rely on guards in sig.h to
-         keep from including it more than once.  Irix 6.5 defines SIG_DFL
-         in other files and defeats the test of SIG_DFL.  Fixes bug
-         reported by Klaus Ziegler <klausz@haus-gisela.de>
-
-alias.c
-       - ALIAS_HASH_BUCKETS: table size increased to 64
+lib/readline/display.c
+       - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars,
+         so the multibyte version can check and increase the size of
+         line_state_invisible->wbsize and line_state_invisible->wrapped_line,
+         callers who call CHECK_INV_LBREAKS must update
+         wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug
+         reported by Eduardo Bustamante <dualbus@gmail.com>
 
-                                   7/7
-                                   ---
+                                  5/24
+                                  ----
+lib/readline/search.c
+       - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar
+         returning -1 (EOF or read error) by aborting the search.
+         Fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
 
-{jobs,nojobs}.c
-       - wait_sigint_cleanup: new function, to be called by longjmp targets
-         for wait_intr_buf. Performs any necessary cleanup of internal waitchld
-         state before going back to top level
+                                  5/25
+                                  ----
+variables.c
+       - localvar_inherit: new variable, controlled by shopt localvar_inherit
+         option
+       - make_local_variable: if localvar_inherit is set, the new local
+         variable inherits a previous scope's variable's value, attributes
+         (except nameref), and dynamic variable information. If a local
+         variable inherits a value, the local is not invisible
 
-jobs.h
-       - wait_sigint_cleanup: new extern declaration
+builtins/shopt.def
+       - localvar_inherit: new option
 
-builtins/wait.def
-       - wait_builtin: call wait_sigint_cleanup after longjmp back to
-         wait_intr_buf on interrupt
+doc/{bash.1,bashref.texi}
+       - localvar_inherit: document new shopt option
 
-[bash-4.4-alpha frozen]
+                                  5/29
+                                  ----
+lib/readline/readline.c
+       - _rl_subseq_result: only return -1 and back up the chain if we are
+         dealing with a result (r) that's already < 0 and we are at the end
+         of a multi-key sequence. Otherwise, a failing readline command (e.g.,
+         delete-char at the end of a line) could cause this code to be
+         executed.  Report from Nuzhna Pomoshch <nuzhna_pomoshch@yahoo.com>
 
-                                   7/7
-                                   ---
-bashline.c
-       - attempt_shell_completion: when skipping assignment statements, don't
-         skip past rl_point to find the word on which to perform programmable
-         completion.  Fixes bug reported by Hanno Böck <hanno@hboeck.de>
+lib/readline/histfile.c
+       - read_history_range: if the file isn't a regular file, return an
+         error. Bug report from Eduardo Bustamante <dualbus@gmail.com>,
+         relaying from IRC
 
-                                  7/10
+                                  5/30
                                   ----
+variables.c
+       - set_pwd: if in Posix mode, and PWD appears in initial environment as
+         an absolute pathname to the current directory, set PWD to the result
+         of canonicalizing the environment value, or to the physical path if
+         canonicalization fails. From a suggestion by Eduardo Bustamante
+         <dualbus@gmail.com>
 
-pcomplib.c
-       - compspec_copy: set the refcount on the copy to 1, since it's a freshly
-         allocated copy and there are no other pointers to it.  Fixes memory
-         leak from gen_progcomp_completions
+                                  5/31
+                                  ----
+builtins/read.def
+       - read_builtin: if -n or -N option is supplied with a 0 argument,
+         don't attempt to read any characters; bail out right away. Reported
+         by Eduardo Bustamante <dualbus@gmail.com>, relaying from IRC
 
-lib/readline/complete.c
-       - printable_part: if the pathname passed is just `/', just return it
-         instead of potentially reading before the `/'.  Fixes bug reported
-         by Hanno Böck <hanno@hboeck.de>
+                                   6/3
+                                   ---
+config.h.in
+       - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h
+         to construct a timespec from struct stat. Report and fix from
+         Siteshwar Vashisht <svashisht@redhat.com>
 
-                                  7/11
-                                  ----
-support/man2html.c
-       - change calls to malloc to use xmalloc; provide standard xmalloc
-         definition.  Report from Bill Parker <wp02855@gmail.com>
+variables.h
+       - att_regenerate: new internal variable attribute: if set, regenerate
+         dynamic variable's value when it's exported and we are creating the
+         export environment
 
-builtins/wait.def
-       - wait_intr_flag: set to denote validity of wait_intr_buf as target
-         for longjmp; reset by WAIT_RETURN macro; should always be 0 when
-         wait_builtin returns
+variables.c
+       - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set
+         internal regenerate attribute for these dynamic variables
+       - make_env_array_from_var_list: if a dynamic variable has the
+         regenerate attribute set, call the dynamic value function to generate
+         an updated value before placing it in the environment.  From a report
+         about exporting LINENO from Robert Elz <kre@bmunnari.OZ.AU>
 
-quit.h
-       - CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state
-         of wait_intr_buf before sh_longjmp
+                                   6/4
+                                   ---
+lib/glob/sm_loop.c
+       - BRACKMATCH: at the matched: label, make sure we get the bracket
+         character we're looking for (char class, collating symbol. etc.)
+         before we decrement the count of braces we're looking for. Eventually
+         we could do something about badly-formed bracket expressions
 
-{jobs,nojobs}.c
-       - wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR
+                                   6/7
+                                   ---
+lib/readline/histlib.h
+       - strchr: only declare if  __STDC__ is not defined, since we already
+         include <string.h>.  Report from Chi-Hsuan Yen <yan12125@gmail.com>
 
-sig.c
-       - wait_intr_flag: set back to 0 every place the shell resets state after
-         a jump to top_level
-       - sigint_sighandler: only set wait_signal_received if wait_intr_flag
-         indicates that the wait builtin has correctly set wait_intr_buf.
-         Final fix for bug reported by Ondrej Oprala <ooprala@redhat.com>
+                                   6/9
+                                   ---
+lib/readline/display.c
+       - update_line: when wrapping lines with multibyte chars at the end of
+         the new line being wrapped, make sure we copy the NULL byte in old
+         when moving the contents of old around. Fuzzing bug reported by
+         Eduardo Bustamante <dualbus@gmail.com>
 
-subst.c
-       - parameter_brace_expand: fix so that ${!vvv@} is not interpreted as
-         introducing a `@' operator, but instead retains its meaning as all
-         variables whose name begins with vvv.  Fixes bug reported by
-         konsolebox <konsolebox@gmail.com>
+lib/readline/mbutil.c
+       - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no
+         need to look at the rest of the string when we're just interested in
+         the length of a single character
 
-                                  7/14
+                                  6/12
                                   ----
-execute_cmd.c
-       - execute_connection: remove the fork optimization from and AND_AND
-         and OR_OR cases; it has trouble with `a && b && c', since the `&&'
-         is left-associative.  Putting that code here can result in unwanted
-         fork optimizations since the `b' will end up as `second' on a
-         recursive call to execute_command.  Bug reported by Mike Frysinger
-         <vapier@gentoo.org>
-
-builtins/evalstring.c
-       - optimize_fork: moved code from execute_connection to here; checks
-         whether the RHS of a && or || passes the suppress_fork() tests and
-         turns on the NO_FORK bit if so
-       - parse_and_execute: if suppress_fork() tests fail, check whether the
-         command to be executed is a connection and attempt to optimize the
-         fork for the right side using optimize_fork().  The key is dealing
-         with the entire command passed to `bash -c' or `eval'
+jobs.c
+       - wait_for: when waiting for the next child to exit (ANY_PID), make
+         sure to restore the old SIGINT handler before returning.  Fixes
+         https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649
 
-builtins/common.h
-       - optimize_fork: new extern declaration
+                                  6/14
+                                  ----
+lib/readline/display.c
+       - expand_prompt: make sure `ret' is NULL-terminated before calling
+         _rl_prev_mbchar_internal, since that calls strlen, which requires
+         the passed string to be NULL-terminated. Another fuzzing bug.
 
-execute_cmd.c
-       - execute_command_internal: enable code put in to undo redirections
-         before exiting the shell due to `set -e' in the case of a shell
-         function that gets command-not-found or a syntax error.  Reported
-         back in May, 2014 by Mark Ferrell <major@homeonderanged.org>
+                                  6/15
+                                  ----
+lib/readline/isearch.c
+       - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end
+         gets set right
+       - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so
+         we don't set rl_point > rl_end. Fixes a fuzzing bug
 
-bashhist.c
-       - bash_history_inhibit_expansion: enable change from 1/10 that skips
-         over history expansion character in command and process
-         substitution
+lib/readline/mbutil.c
+       - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0,
+         just punt, treat the value as a byte, and advance point by 1
 
-                                  7/15
-                                  ----
-lib/readline/{history,undo}.c
-       - replace_history_data now _hs_replace_history_data
+lib/readline/util.c
+       - rl_tilde_expand: rearrange code in the whitespace loop so that
+         `start' gets tested first and we don't try to dereference
+         rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com
 
-                                  7/16
-                                  ----
-lib/readline/readline.c
-       - make sure _rl_to_lower doesn't ever get characters that are outside
-         of its valid range by casting arg to unsigned char
+bashline.c
+       - bash_dequote_filename: make sure that pointers that are used as
+         indices into sh_syntaxtab are cast to unsigned char first, to
+         avoid problems with signed chars > 128. Fixes a fuzzing bug.
 
-lib/readline/colors.h
-       - change completion prefix color (C_PREFIX) to be the same as C_SOCK,
-         which is less likely to collide with file type colorings (magenta)
+lib/readline/kill.c
+       - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to
+         allocate one more than the max number of kills so the loop that
+         copies the kill ring entries down runs right (and to mirror the
+         initial allocation). Fixes a fuzzing bug.
 
-lib/readline/complete.c
-       - fnprint: now takes an additional argument: the full, expanded pathname
-         corresponding to the `toprint' argument
-       - fnprint: don't zero out prefix_bytes if we're not printing the
-         ellipisis but we still want to use prefix_bytes for displaying
-         the common prefix in a color
-       - print_filename: move colored-stats display responsibility into fnprint
-       - fnprint: change so colored-prefix and colored-stats can cooperate
-         and display filenames with multiple colors: one for the prefix and
-         one for the file type.  The prefix is displayed in the prefix color
-         and the remainder of the pathname, if any, is displayed in the color
-         corresponding to the file type.  Report and suggestion from Mike
-         Frysinger <vapier@gentoo.org>
+lib/readline/isearch.c
+       - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0
+         even when searching a line in reverse. Fixes a fuzzing bug
 
-                                  7/17
+                                  6/16
                                   ----
-lib/readline/readline.[ch]
-       - rl_readline_state: now unsigned long, prepare for more than 32 states
+parse.y
+       - xparse_dolparen: short-circuit immediately if passed a empty string
 
+lib/readline/display.c
+       - update_line: when wrapping multibyte characters, make sure we deal
+         with WCWIDTH returning -1. Fixes a fuzzing bug
 
-                                  7/18
+                                  6/17
                                   ----
-lib/readline/history.h
-       - history_offset: now declared here, was always a global variable
-       - copy_history_entry: now declared here, part of the public interface
-       - alloc_history_entry: now declared here, part of the public interface
+execute_cmd.c
+       - execute_coproc: make sure `invert' is set before trying to use it
+         when returning failure on invalid coproc name.  Report and fix from
+         Eduardo Bustamante <dualbus@gmail.com>
+       - execute_command_internal: make sure execute_coproc sets
+         last_command_exit_value if it returns failure, so an invalid name
+         can set $? = 1.  Report and fix from Eduardo Bustamante
+         <dualbus@gmail.com>
 
-                                  7/20
-                                  ----
-lib/readline/readline.h
-       - RL_STATE_CHARSEARCH: new state, for vi mode character search.  Was
-         previously handled by simply setting _rl_callback_func
+lib/readline/display.c
+       - update_line: make sure all references to `wrapped_line' are wrapped
+         with #ifdef HANDLE_MULTIBYTE.  Report and fix from Eduardo Bustamante
+         <dualbus@gmail.com>
 
 lib/readline/vi_mode.c
-       - rl_domove_motion_callback: split into two functions, remaining code
-         after _rl_dispatch call goes into new function
-         _rl_vi_domove_motion_cleanup
-       - rl_vi_char_search: set RL_STATE_CHARSEARCH
-       - rl_vi_char_search: sets `i2' member of callback data to the key used
-         to invoke the char search
-       - _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading
-         the character to find
-       - _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in
-         all cases where this function returns
-       - _rl_vi_domove_motion_cleanup: use `end' member of vi motion context
-         as value of rl_end to restore after adding blank at end of line in
-         rl_domove_motion_callback; avoids need to keep `old_end' and somehow
-         pass it between the two functions
+       - _rl_vi_change_char: don't use rl_point++ when you mean to move
+         forward a character; use _rl_vi_append_forward to account for
+         multibyte characters and take vi end of line handling into account
+       - _rl_vi_last_replacement: now an array of chars whether we are
+         using multibyte chars or not. If we're not, the character we read
+         to use as the replacement is saved as the first element of the array
+       - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with
+         _rl_vi_last_replacement being an array.  Fixes bug reported by
+         Eduardo Bustamante <dualbus@gmail.com>
+
+lib/readline/mbutil.c
+       - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe
+         fewer if the length of the string is less
 
-lib/readline/rlprivate.h
-       - _rl_vi_domove_motion_cleanup: new extern declaration
+builtins/bind.def
+       - unbind_keyseq: new function for the -r option; checks whether the
+         key sequence is actually bound before trying to bind it to NULL.
+         Partial fix for https://savannah.gnu.org/support/?109329
 
-lib/readline/callback.c
-       - rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case
-         where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION
-         is set when this is called.  Last of set of fixes for bug reported
-         by Carlos Pita <carlosjosepita@gmail.com> with vi-mode `dty' command
-         in callback mode
+parse.y
+       - augment `error yacc_EOF' production to call YYABORT in non-interactive
+         shells or calls to parse_and_execute (eval, command substitution,
+         etc.) Fixes bug reported by Martijn Dekker <martijn@inlv.org>
 
-                                  7/21
+                                  6/19
                                   ----
-subst.c
-       - command_substitute, process_substitute: add QUIT call in the child
-         after restoring original signal handlers to catch post-fork SIGINT
-         or terminating signal
-
-jobs.c,nojobs.c
-       - make_child: after forking, clear interrupt_state in child
-         before restoring signal mask so children get their own set of
-         interrupts
+bashline.c
+       - edit_and_execute_command: don't add rl_line_buffer to the history
+         list if it's empty; consistent with how other code treats an empty
+         line
 
-                                  7/22
-                                  ----
-lib/sh/shquote.c
-       - sh_double_quote: since all uses of the return value from this function
-         are for display and not subject to subsequent expansion, we don't
-         need to protect CTLESC and CTLNUL with CTLESC.  Bug report and fix
-         from isabella parakiss <izaberina@gmail.com>
+execute_cmd.c
+       - execute_builtin: make sure to preserve the temporary env across the
+         execution of the `read' builtin or `fc' builtin if HISTORY is
+         defined, in case `read -e' calls edit-and-execute-command.  Should
+         have no side effects. Reported by Eduardo Bustamante
+         <dualbus@gmail.com>
 
-parse.y
-       - decode_prompt_string: need to protect literal instances of CTLESC
-         and CTLNUL with CTLESC, even if they are not coming out of one of
-         the backslash-expansions
+general.c
+       - line_isblank: new function: returns true if passed string is composed
+         entirely of blanks
 
-subst.c
-       - make_internal_declare: fixed memory leak; make_internal_declare should
-         free the memory it allocates to construct the word list.  From Red
-         Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233
+general.h
+       - line_isblank: new extern declaration
 
-lib/readline/readline.c
-       - _rl_dispatch_subseq: when checking whether an ESC in vi insert mode
-         should be treated as part of a key sequence or as a single char,
-         make sure we are getting input from the keyboard before we check
-         _rl_input_queued().  If we are getting input from a macro, this
-         causes a needless delay.  Report from Carlos Pita
-         <carlosjosepita@gmail.com>
+parse.y
+       - history_delimiting_chars: return "" for a blank line, since there's
+         nothing to delimit with `;'
 
-                                  7/23
+                                  6/21
                                   ----
-input.c
-       - save_bash_input: before checking to see whether or not a new fd has a
-         stale associated buffer, make sure that the new fd is within bounds.
-         Bug report and fix from Alexey Makhalov <makhaloff@gmail.com>
+jobs.c
+       - wait_for: make sure to call restore_sigint_handler before returning
+         if we return out of the loop due to no children. Report from
+         Eduardo Bustamante <dualbus@gmail.com>
 
+subst.c
+       - expand_word_internal: if split_on_spaces is set, and the word is
+         unquoted, and IFS is null, split the results of the previous steps
+         on $' \t\n' instead of just ' '. This relies on the previous steps
+         quoting the portions of the word that should not be split.  Fixes
+         bug reported by Kevin Brodsky <corax26@gmail.com>
 
-                                  7/24
-                                  ----
-doc/{bash.1,bashref.texi}
-       - note that the `return' builtin accepts arguments beginning with `-'
-         without requiring `--'
+expr.c
+       - evalexp: after running expr_unwind, make sure we reset expr_depth
+         to 0 for the next call
+       - expr_streval: if after a call to get_array_value (which can call
+         the expression evaluator recursively) we discover that expr_depth
+         is less than it was before we called it, we assume there has been
+         some kind of error and an expr_unwind, so we treat it as an
+         error and either longjmp back to the expression top level or return
+         0 immediately. Fixes bug reported by Eduardo Bustamante
+         <dualbus@gmail.com>
 
-                                  7/27
+                                  6/23
                                   ----
-examples/loadables/Makefile.in
-       - add variables and targets to support `make install'; installs
-         supported builtins in $(libdir)/bash
+doc/{bash.1,bashref.texi}
+       - add text noting that $* and ${array[*]} (unquoted) can also expand
+         to multiple words
 
-                                  7/28
+                                  6/29
                                   ----
-lib/readline/{readline,rlprivate}.h, lib/readline/display.c
-       - rearrange some structure members for better alignment and to reduce
-         padding.  Fix from <git-dpa@aegee.org>
-
-tests/run-*
-       - use BASH_TSTOUT instead of hardcoded /tmp/xx as output file
-
-trap.[ch]
-       - maybe_set_error_trap: set a trap for the ERR trap if it is not already
-         trapped; similar to maybe_set_debug_trap back from 4/10
-
-lib/malloc/malloc.c
-       - internal_free: make sure `ubytes' is initialized if MALLOC_WATCH is
-         defined and we'll be passing it to _malloc_ckwatch.  Report from
-         Flavio Medeiros <flaviomotamederios@gmail.com>
+general.[ch]
+       - default_columns: new function, returns the value of COLUMNS, or
+         refreshes it if check_window_size is set and COLUMNS is unset. By
+         default, it returns 80
 
 execute_cmd.c
-       - execute_function: use maybe_set_error_trap in the same way as
-         maybe_set_debug_trap.  Fixes bug reported by David Waddell
-         <David.Waddell@owmobility.com>
+       - select_query: use default_columns() instead of fetching value of
+         COLUMNS directly
 
-                                  7/29
-                                  ----
-jobs.c
-       - wait_for: no longer need to call job_signal_status when checking
-         whether a comsub shell reaped a child that died due to SIGINT; code
-         now uses child_caught_sigint
+builtins/help.def
+       - show_builtin_command_help: use default_columns() instead of fetching
+         value of COLUMNS directly
 
-                                  7/30
+                                  6/30
                                   ----
-builtins/exec.def
-       - exec_builtin: after call to restore_original_signals, need to call
-         default_tty_job_signals to undo changes done by initialize_job_signals.
-         Fix for problem reported by Andreas Schwab <schwab@suse.de>
-
-doc/{bash.1,bashref.texi}
-       - clarify definition of metacharacter to explicitly include newline;
-         prompted by report from George Gallo <georgeggallo@gmail.com>
+builtins/read.def
+       - read_builtin: call QUIT during the read loop, just in case we get a
+         signal we should act on that didn't cause read to be interrupted.
+         Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737
+       - read_builtin: if -n or -N is supplied with a 0 argument, try a zero-
+         length read to detect errors and return failure if that read returns
+         a value < 0. Suggested by dualbus@gmail.com
 
-                                   8/3
+                                   7/4
                                    ---
-lib/readline/search.c
-       - _rl_free_history_entry: should be void, not int.  Report from
-         Dilyan Palauzov <dilyan.palauzov@aegee.org>
+bashhist.c
+       - maybe_add_history: keep track of whether the current line is a shell
+         comment, even if we're not adding it because it's in a multi-line
+         command, so we use appropriate delimiters between it and any
+         subsequent lines. Fixes bug reported by Grisha Levit
+         <grishalevit@gmail.com> back on 2/28/2017
 
-general.h
-       - sh_load_func_t, sh_unload_func_t: new function pointer types, used by
-         enable for load and unload hook functions
-
-builtins/enable.def
-       - dyn_load_builtin: attempt to execute a function named
-         BUILTIN_builtin_load, where BUILTIN is the name of the command being
-         loaded.  If that function returns 0, the load fails
-       - dyn_unload_builtin: attempt to execute a function named
-         BUILTIN_builtin_unload, where BUILTIN is the name of the command
-         being unloaded.  It offers a dynamic builtin a way to clean up after
-         itself.  Inspired by suggestion from Piotr Grzybowski
-         <narsil.pl@gmail.com> in response to a bug report from isabella
-         parakiss <izaberina@gmail.com>
+bashline.c
+       - operate_and_get_next: if given an explicit argument, use that to
+         choose which line in the history to use.
 
-                                   8/6
-                                   ---
-lib/readline/colors.[ch]
-       - _rl_print_color_indicator: now takes `const char *' argument
+lib/readline/doc/rluser.texi,doc/bash.1
+       - operate-and-get-next: document new effect of explicit numeric arg
 
 lib/readline/complete.c
-       - colored_stat_start: now takes `const char *' argument
-
-lib/malloc/table.h
-       - ma_table_t: `file' member is now `const char *'
-
-lib/malloc/table.c
-       - mlocation_register_alloc: make sure variable assigned to `file' in
-         ma_table_t is of type `const char *'.  Fixes from Dilyan Palauzov
-         <dilyan.palauzov@aegee.org>
-
-lib/termcap/termcap.[ch]
-       - tputs: should return int instead of void
+       - fnprint: make sure print_len is initialized before using it on
+         systems without multibyte character support.  Report and fix from
+         Juan Manuel Guerrero <juan.guerrero@gmx.de>
 
-lib/readline/readline.h
-       - RL_STATE_DONE: correct value, avoid collision
-
-lib/readline/vi_mode.c
-       - _rl_vi_redoing: now global, added _rl_ prefix to `vi_redoing'
-
-lib/readline/readline.c
-       - _rl_subseq_result: call _rl_dispatch_subseq instead of rl_dispatch to
-         avoid changing _rl_dispatching_keymap
-       - _rl_subseq_result: in the -2 case, set _rl_dispatching_keymap to the
-         map passed as an argument.  Without this, vi mode doesn't call
-         rl_vi_set_last when it should
-       - _rl_dispatch_subseq: if redoing a vi mode command with `.'
-         (_rl_vi_redoing != 0) in callback mode and we're indirecting into
-         another keymap that has shadowed the key corresponding to the command
-         we are redoing, just call _rl_subseq_result immediately: vi redo
-         doesn't need to read any additional input, and rl_vi_redo assumes
-         that a single call to rl_dispatch is sufficient.  Fixes bug reported
-         by Carlos Pita <carlosjosepita@gmail.com>
-
-                                   8/7
+                                   7/6
                                    ---
-subst.c
-       - parameter_brace_expand: if a substitution (parameter expansion) error
-         occurs, and shell_compatibility_level is <= 43, return expansion error
-         as in all previous versions.  If shell_compatibility_level is > 43,
-         a posix-mode non-interactive shell will consider this a fatal error.
-         Problem reported by Christian Neukirchen <chneukirchen@gmail.com>
-
-doc/bashref.texi
-       - documented that word expansion errors cause fatal errors in posix mode
-         non-interactive shells
+builtins/printf.def
+       - PRETURN,printf_builtin: check variable returned by bind_printf_variable,
+         return failure if that indicates we can't perform an assignment
+         because the variable is marked readonly or noassign. Fixes bug
+         reported by Arnaud Gaillard <arnaud.mgaillard@gmail.com>
 
-                                   8/8
+                                   7/7
                                    ---
-subst.h
-       - SD_COMPLETE: skip_to_delim being called as part of word completion
-       - SX_COMPLETE: one of the string_extract functions being called as
-         part of word completion
-
-bashline.c
-       - find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with
-         SD_COMPLETE flag
+lib/readline/text.c
+       - rl_quoted_insert: new feature: a negative argument means to insert
+         the next -COUNT characters using quoted-insert. Original feature
+         from Jason Hood <jadoxa@yahoo.com.au>. Still needs work on
+         redisplay
+       - _rl_insert_next_callback: implement support for negative arguments
+         similar to rl_quoted_insert: we just insert one at a time and keep
+         increasing the count until it hits 0
 
-subst.c
-       - skip_double_quoted: takes new flags argument; changed callers
-       - skip_double_quoted: if flags argument includes SX_COMPLETE, pass it
-         to extract_command_subst
-       - extract_command_subst: if flags&SX_COMPLETE, call
-         extract_delimited_string instead of xparse_dolparen, since completion
-         may call this for unterminated command substitutions.  Fixes
-         (imperfectly) bug reported by Ingo Ruhnke <grumbel@gmail.com>
-       - skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE
-         flag to skip_double_quoted 
-       - char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted
-       - unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted
+lib/readline/misc.c
+       - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates
+         we should keep reading a numeric argument, update the message with
+         the new arg value
 
-                                   8/9
+                                   7/8
                                    ---
-execute_cmd.c
-       - time_command: catch longjmps to top_level and print command timing
-         statistics even after a jump to top_level.  Fixes issue reported by
-         Sam Watkins <sam@nipl.net>
+lib/readline/signals.c
+       - _rl_handle_signal: make sure all uses of any of the job control
+         signals are protected by a check for SIGTSTP being defined.  Report
+         from Juan Manuel Guerrero <juan.guerrero@gmx.de>
 
-                                  8/10
+                                  7/11
                                   ----
-config-top.h
-       - OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so
-         each message is tagged with the pid
+lib/readline/vi_mode.c
+       - rl_vi_replace: when making the new keymap for vi replacement mode,
+         make sure that ANYOTHERKEY is set correctly, otherwise some input
+         will cause _rl_dispatch to return -2 to the top level.  Fixes fuzzing
+         bug reported by Ben Wong <benjamin.a.wong@gmail.com>
 
-bashhist.h
-       - bash_syslog_history: the first time it's called, call openlog with
-         OPENLOG_OPTS and SYSLOG_FACILITY
+                                  7/19
+                                  ----
+builtins/read.def
+       - struct ttsave: make the attrs member a struct, not a pointer, to force
+         a structure copy that will survive a longjmp to another context.
+         Leaving it as a pointer to a local struct is not portable
 
-                                  8/11
+                                  9/10
                                   ----
-doc/{bash.1,bashref.texi}
-       - GROUPS,FUNCNAME: change description to note that assignments are
-         silently ignored, but do not return an error (which would constitute
-         an assignment error and cause posix mode shells to abort).  Problem
-         pointed out by Grzegorz Bajson <gbajson@gmail.com>
+execute_cmd.c
+       - execute_builtin: make sure that we set up the unwind-protect for
+         pop_scope (temporary_env is non-zero) so that the temporary env
+         is propagated to the current environment only for special builtins
+         (source/eval/unset) not run by the command builtin
+         (flags & CMD_COMMAND_BUILTIN == 0).  Fixes bug reported by
+         Martijn Dekker <martijn@inlv.org>
 
-                                  8/12
+                                  9/17
                                   ----
-subst.c
-       - parameter_brace_expand_indir: if the value of the indirectly expanded
-         variable isn't something that the shell would expand if it were inside
-         ${}, error out right away before calling parameter_brace_expand_word.
-         Fixes problem reported by isabella parakiss <izaberina@gmail.com>
-       - parameter_brace_expand: handle returning &expand_wdesc_error or
-         &expand_wdesc_fatal from parameter_brace_expand_indir in case it does
-         that someday
+builtins/printf.def
+       - asciicode: don't use mblen to check whether or not a character is a
+         valid multibyte character; use mbtowc right away and then inspect
+         the return value.  Fixes bug reported by Stephane Chazelas
+         <stephane.chazelas@gmail.com>
 
-                                  8/13
+                                  9/27
                                   ----
-jobs.c
-       - {save,restore}_pipeline: saved_pipeline now a linked list of pipelines,
-         new ones allocated in save_pipeline and freed in restore_pipeline.
-         This allow multiple nested calls to save_pipeline (e.g., in traps
-         and then in process substitution).  Fix for bug reported by isabella
-         parakiss <izaberina@gmail.com>
+{jobs,subst}.h
+       - move declaration of last_command_subst_pid to subst.h, since it's
+         declared in subst.c and doesn't depend on job control. Reported by
+         Martijn Dekker <martijn@inlv.org>
 
-print_cmd.c
-       - named_function_string: if printing a function with the same name as a
-         reserved word, add the `function ' keyword before the name to avoid
-         parsing problems when trying to reuse it as input.  Fix for bug
-         reported by isabella parakiss <izaberina@gmail.com>
+builtins/read.def,variables.c
+       - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented
+         the minimal config from building
 
-                                  8/14
+                                  10/1
                                   ----
-lib/readline/text.c
-       - rl_insert: when optimizing typeahead, make sure we set rl_last_func
-         ourselves if we set pending input, since the mainline code path
-         won't set rl_last_func if input is pending.  Fixes bug reported by
-         Hiroo Hayashi <hiroo.hayashi@computer.org>
+parse.y
+       - special_case_tokens: if we are returning DO in a case where the last
+         two tokens read are `FOR' and `WORD' make sure we decrement
+         expecting_in_token.  Fixes bug reported by Martijn Dekker
+         <martijn@inlv.org>
 
-                                  8/15
+                                  10/4
                                   ----
-builtins/type.def
-       - describe_command: if using the short description (CDESC_SHORTDESC) in
-         posix mode, describe posix special builtins as such.  Requested by
-         Stephane Chazelas <stephane.chazelas@gmail.com>
-
-builtins/enable.def
-       - BASH_LOADABLES_PATH: a colon-separated list of directories where bash
-         looks for loadable builtins specified as arguments to `enable -f'
-
-doc/{bash.1,bashref.texi}
-       - BASH_LOADABLES_PATH: document new shell variable
+subst.c
+       - expand_string_for_rhs: now takes an additional PFLAGS argument from
+         its caller (one so far); passes that through to call_expand_word_internal
+         as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker
+         <martijn@inlv.org>
+       - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if
+         b were the rhs of an assignment statement. This means that splitting
+         isn't done, but tilde expansion is performed as if the statement
+         were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker
+         <martijn@inlv.org>
 
-configure.ac,Makefile.in,builtins/Makefile.in
-       - loadablesdir: set in configure, substitute into Makefiles.  Reserved
-         for future use
+command.h
+       - W_NOASSNTILDE: new word flag, means to not perform tilde expansion
+         following a `:' even if the word has the W_ASSIGNRHS flag enabled
 
-                                  8/18
-                                  ----
 subst.c
-       - shell_expand_word_list: if make_internal_declare fails, make sure to
-         propagate that error return back and make the assignment statement
-         fail. Fixes seg fault reported by Sergey Tselikh <stselikh@gmail.com>
+       - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag
+         set, just add the character and inhibit any subsequent tilde
+         expansion. Currently not set anywhere, but it could be set in
+         expand_string_for_rhs to satisfy its peculiar semantics
 
-                                  8/20
+                                  10/6
                                   ----
-builtins/declare.def
-       - declare_internal: made a slight tweak to the warning message about
-         quoted compound assignments by printing it only if the array (indexed
-         or assoc) does not already exist
+lib/sh/casemod.c
+       - sh_modcase: convert even single-byte wide characters to wide upper
+         or lowercase equivalents to accommodate locales where single-byte
+         characters have multibyte upper and lower case conversions. Bug
+         reported by Stephane Chazelas <stephane.chazelas@gmail.com>
 
-                                  8/21
+                                  10/7
                                   ----
-braces.c
-       - mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT
-         to avoid a memory leak
-
-trap.c
-       - maybe_set_return_trap: set the RETURN trap to string if it's not
-         already trapped, in the same way as the debug and error traps
+doc/{bash.1,bashref.texi}
+       - slight changes to the description of command_not_found_handle to
+         clarify that it's executed in a separate execution environment,
+         just like if the command was found. Reported by Martijn Dekker
+         <martijn@inlv.org>
 
-execute_cmd.c
-       - execute_function: use maybe_set_return_trap to allow functions to set
-         return traps that persist across calls even if function tracing is
-         enabled
+                                  10/8
+                                  ----
+lib/readline/doc/{history.3,hstech.texi}
+       - history_get: clarify the range of valid values for the OFFSET
+         argument. From a report by Kevin Ryde <user42_kevin@yahoo.com.au>
 
-lib/readline/input.c
-       - rl_gather_tyi: make sure errno reset to 0 after select call, for
-         ioctl and read
-       - rl_gather_tyi: if read returns -1/EIO, return -1
-       - rl_read_key: if rl_gather_tyi returns -1/EIO, return READERR if in
-         RL_STATE_READCMD (reading command in readline_internal_char), EOF
-         if not (like rl_getc). Continue to return '\n' on other errors;
-         rl_done = 1 in any case.  Fix for issue reported by
-         Lubomir Rintel <lkundrak@v3.sk>
+                                  10/21
+                                  -----
+subst.c
+       - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `='
+         for backwards compatibility with bash-4.4
 
-lib/readline/{misc,text,vi_mode}.c
-       - fix return values from rl_read_key to handle < 0
+shell.c
+       - main: set positional parameters before running the startup files,
+         so the startup files can inspect $@.  Often-requested feature,
+         most recently from Stephane Chazelas <stephane.chazelas@gmail.com>
 
-                                  8/22
-                                  ----
+                                  10/27
+                                  -----
+doc/{bash.1,bashref.texi}
+       - Arrays: add some clarifying language to make it clear that array
+         references that don't use the ${a[s]} syntax are subject to
+         globbing when passed as arguments to commands such as unset, and
+         should be quoted for safety. Change prompted by a report from
+         Eli Barzilay <eli@barzilay.org>
 
 parse.y
-       - parsing_redirection: macro that expands to true if the last read
-         token (always passed as an argument) is a redirection token that
-         will leave us reading a word that's the target of the redirection
-       - command_token_position: make sure that even if the parser state
-         indicates we are reading a simple command (PST_REDIRLIST), we do
-         not perform alias expansion on a WORD that is part of a redirection,
-         using parsing_redirection() to do so.  Fixes but reported to Red Hat
-         by Robert Alm Nilsson <rorialni@gmail.com>
-         https://bugzilla.redhat.com/show_bug.cgi?id=795795
+       - parse_comsub: make sure we don't run off the end of the `ret'
+         buffer when checking for the here doc delimiter.  Report from
+         Jakub Wilk <jwilk@jwilk.net>, the result of a fuzzing test. Pointer
+         to place for the fix from Eduardo Bustamante <dualbus@gmail.com>
 
-builtins/declare.def
-       - declare_internal: only print the warning now if the variable is not
-         already an array or if we are not creating an array with -a or -A,
-         cuts down the spurious warnings
-       - declare_internal: even if the rhs of the assignment looks like a
-         compound array, if we're not assigning to an existing array or we're
-         not creating an array, make it an array subscript assignment.  This
-         means things like declare a[1]='(foo)' and a[1]='(foo)' behave
-         identically
+                                  10/30
+                                  -----
+builtins/pushd.def
+       - get_directory_stack: make sure the current directory (element 0 of
+         the stack) is passed to polite_directory_format under the same
+         conditions as the rest of the stack entries (flags & 1). Otherwise
+         something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported
+         by Steve Jones <sjml@slohj.org>
 
-builtins/help.def
-       - wdispcolumn: change use of displen and add new dispchars variable to
-         deal with locales where each wide character does not take up one
-         column position.  Fix for bug reported by Mingye (Arthur) Wang
-         <arthur200126@hotmail.com>
+builtins/declare.def
+       - declare_internal: when checking for a `[' to see whether or not this
+         is an array variable declaration (declare -a foo[12]), make sure
+         we don't do the check if we're just dealing with shell functions.
+         Bug and pointer to fix from PJ Eby <pje@telecommunity.com>
 
-                                  8/23
+                                  11/1
                                   ----
-sig.c
-       - sigint_sighandler: if we get a SIGINT while this_shell_builtin ==
-         wait_builtin, perform the special handling only if wait_intr_flag
-         is non-zero, don't just use it to set wait_sigint_received.  This
-         makes sure we run bashline_set_event_hook.  Fixes bug reported by
-         isabella parakiss <izaberina@gmail.com>
+parse.y
+       - parse_comsub: if we read a four-character word followed by a break
+         character, and that word is not one of the reserved words, set
+         lex_rwlen to 0 since we are no longer in a reserved word. It only
+         hurts if another break character immediately follows, so that test
+         succeeds again. Turn off the RESWDOK flag only if it's not a shell
+         metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme
+         <kjetilho@scribus.ms.redpill-linpro.com>
 
-                                  8/25
+                                  11/3
                                   ----
-subst.h
-       - SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for
-         the history expansion character (special double quote handling)
-       - skip_to_delim: handle SD_HISTEXP flag, changes double quote handling
-         to be similar to history library: don't call skip_double_quote, make
-         sure single quotes aren't special in double quotes, but continue to
-         skip over $(), ${}, and other similar constructs
+lib/readline/isearch.c
+       - _rl_isearch_dispatch: if we are searching in reverse order, let
+         sline_index go to -1 to avoid searching the same line twice. It
+         gets reset right after that, so there's no danger of indexing into
+         the history line with a negative index.
 
-                                  8/27
+                                  11/7
                                   ----
-support/bash.pc.in
-       - new file, pkgconfig template for bash, installed to support nascent
-         loadable builtins dev environment
-
-examples/loadables/Makefile.inc
-       - new file, example Makefile with correct definitions for loadable
-         builtin development
-
-configure.ac
-       - headersdir: directory where headers get installed to support loadable
-         builtin development
-       - examples/loadables/Makefile.inc, support/bash.pc: create 
-
-Makefile.in
-       - INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES,
-         CREATED_HEADERS: new variables holding names of include files to
-         install into $(headersdir) for loadable builtin development
-       - install-headers,install-headers-dirs: new targets to support
-         installing headers into $(headersdir) and subdirectories for loadable
-         builtin development
-       - uninstall-headers: target to uninistall headers in $(headersdir)
-       - uninstall: call uninstall-headers whether or not install-headers
-         was done; add uninstall in examples/loadables
-       - install: add install in examples/loadables
-       - clean: add clean in examples/loadables
-
-examples/loadables/Makefile.in
-       - install-supported, install-unsupported: new targets, make install
-         chooses one based on $(SHOBJ_STATUS)
-       - install-supported: now cds to the top level build directory and
-         installs the header files
-       - install-supported: now installs Makefile.inc to $(loadablesdir) as
-         an example
-       - uninstall-supported,uninistall-unsupported: uninstall targets,
-         make uninstall chooses one based on $(SHOBJ_STATUS)
-
-                                  8/31
-                                  ----
-lib/glob/Makefile.in
-       - CPPFLAGS: move after ${INCLUDES} so library-specific include paths
-         take precedence.  This is what the other parts of the shell do.
-         Report from Poor Yorick <org.gnu.lists.bug-bash@pooryorick.com>
+execute_cmd.c
+       - time_command: only restore command->flags if CODE indicates we didn't
+         perform a longjmp back to top_level. If we did, `command' has already
+         been freed. Fixes bug reported on savannah by 
+         ukuvbu oibws <xyzdr4gon333@googlemail.com>
+         https://savannah.gnu.org/support/?109403
 
-builtins/read.def
-       - reset_alarm: cancel alarm before restoring signal handler to avoid
-         possible race condition.  Report and fix from Oleg Popov
-         <dev-random@mail.ru>
+                                  11/10
+                                  -----
+lib/sh/unicode.c
+       - u32cconv: make sure to initialize localconv to -1 (error) in case
+         we switch from a utf-8 locale to something else and call
+         iconv_close. Report from Egmont Koblinger <egmont@gmail.com>; fix
+         from Eduardo Bustamante <dualbus@gmail.com>
 
+                                  11/16
+                                  -----
 subst.c
-       - string_extract_verbatim: if SEPARATORS is "'", don't short-circuit
-         to string_extract_single_quoted unless the SX_NOCTLESC flag is set.
-         Callers expect this function to honor CTLESC, even to quote a single
-         quote.  Fixes bug reported by isabella parakiss <izaberina@gmail.com>
-         and several others
-
-                                   9/2
-                                   ---
-include/chartypes.h
-       - TOCTRL: handle '?' by special-casing it to 0x7f.  Fixes a problem
-         with $'\c?' reported by Helmut Karlowski <helmut.karlowski@ish.de>
+       - parse_comsub: istring_index should be a size_t to avoid integer
+         overflow when allocating large pieces of memory. Report and fix
+         from Siteshwar Vashisht <svashisht@redhat.com>, originally based on
+         http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html
 
-redir.c
-       - write_here_string: don't word-split the here string document.  The
-         bash documentation has always said this doesn't happen, even though
-         bash has done so for years, and other shells that implement here-
-         strings don't perform any word splitting.  The practical effect is
-         that sequences of IFS characters are collapsed to spaces.  Fixes
-         bug reported by Clint Hepner <clint.hepner@gmail.com>
+                                  11/24
+                                  -----
+lib/readline/bind.c
+       - rl_empty_keymap: new public function, returns non-zero if there are
+         no keys bound in the keymap passed as an argument
 
-                                   9/3
-                                   ---
-doc/{bash.1,bashref.texi}
-       - add \? to the list of backslash escapes expanded by $'...' ANSI-C
-         quoting.  It was expanded but not documented
+lib/readline/readline.h
+       - rl_empty_keymap: new public extern declaration
 
-lib/readline/util.c
-       - _rl_audit_tty: updated from Red Hat patch
+lib/readline/doc/rltech.texi
+       - rl_empty_keymap: document new function
 
-lib/readline/readline.c
-       - HAVE_DECL_AUDIT_USER_TTY: correct #define check
+lib/readline/bind.c
+       - rl_generic_bind: keep track of the previous keymap and previous
+         index in a multi-key key sequence so we can remove an empty terminal
+         keymap and remove a previous override to ANYOTHERKEY. Right now,
+         this only works for one previous keymap level. Inspired by a report
+         from Clark Wang <dearvoid@gmail.com>
 
-                                  9/13
-                                  ----
-shell.c
-       - read_from_stdin: make sure value set to 1 appropriately if the shell
-         is reading from standard input, as Posix seems to specify (?)
+                                  11/25
+                                  -----
+lib/readline/display.c
+       - _rl_update_final: make sure that computing the length of the visible
+         bottom line (botline_length) takes any invisible characters in the
+         prompt into account (woff). This value is used as part of the check
+         whether or not we want to remove the line-wrapping indicator on
+         terminals like xterm
+       - _rl_update_final: when removing the line-wrapping indicator on xterm,
+         make sure we take invisible characters in the prompt (woff) into
+         account when computing the character in the rightmost physical
+         screen position. Fixes cosmetic line-wrapping issue reported by
+         Egmont Koblinger <egmont@gmail.com>
+
+                                  11/27
+                                  -----
+lib/sh/ufuncs.c
+       - fsleep: if using select to implement sleep, use restart after
+         a signal interrupts the select and handle pending signals. If
+         pselect is available, use that instead and block SIGCHLD while
+         pselect is executing.
+         Fixes report from Thiruvadi Rajaraman <trajaraman@mvista.com>
 
-lib/readline/kill.c
-       - _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been
-         allocated if _rl_last_command_was_kill is non-zero; make sure it's
-         non-null before indexing into it
+                                  11/28
+                                  -----
+lib/readline/signals.c
+       - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS
+         that can be used by applications that install a wrapper for
+         rl_getc (rl_getc_function) so they can respond to signals that
+         arrive while waiting for input in the same way as rl_getc. The app
+         can use rl_pending_signal() to get the most recently-received
+         signal. From a discussion about Gnuplot initiated by
+         Rin Okuyama <rokuyama@rk.phys.keio.ac.jp>
 
-                                  9/15
-                                  ----
-variables.c
-       - initialize_shell_variables: cope with a NULL env pointer.  Fixes bug
-         reported by ziyunfei <446240525@qq.com>
+lib/readline/readline.h
+       - rl_check_signals: new extern declaration
 
-                                  9/16
-                                  ----
-builtins/exec.def
-       - exec_builtin: if -c is supplied, pass an empty array instead of a NULL
-         pointer to shell_execve
+lib/readline/doc/rltech.texi
+       - rl_check_signals: document new public function
 
 variables.c
-       - set_pwd: only believe $PWD if it begins with a slash; try to
-         canonicalize it and set it to physical path if canonicalization fails.
-         Reported by ziyunfei <446240525@qq.com>
+       - set_pwd: test for and force an inherited OLDPWD to be a directory
+         if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by
+         default). Issue raised by Mikulas Patocka <mikulas@twibright.com>
 
-                                  9/17
-                                  ----
-subst.c
-       - do_compound_assignment: make sure to dispose of word list generated
-         by expand_compound_array_assignment; fixes memory leak reported in
-         https://bugzilla.redhat.com/show_bug.cgi?id=1264101
+config-top.h
+       - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default
 
-variables.c
-       - adjust_shell_level: clamp the value of shell_level at 1000 and reset
-         there, instead of > 1000, since the itos replacement code doesn't
-         handle the value 1000.  Fixes bug reported by ziyunfei
-         <446240525@qq.com>
-
-shell.h,parse.y
-       - save_parser_state,restore_parser_state: now save and restore
-         redir_stack, short-circuiting if need_here_doc == 0.  If we save a
-         non-zero value for need_here_doc, we have to make sure there is
-         something valid for gather_here_documents to work on.  Fixes bug
-         reported by Brian Carpenter <brian.carpenter@gmail.com>
+                                  11/29
+                                  -----
+Makefile.in
+       - pathexp.o: add dependencies on libintl.h.  Reported by
+         Ross Burton <ross@burtonini.com>
 
-                                  9/18
+                                  12/1
                                   ----
-array.c
-       - array_to_assign: use ansic_shouldquote to check whether each element
-         value contains non-printable characters and use ansic_quote to
-         generate the value instead of using sh_double_quote unconditionally
+lib/sh/ufuncs.c
+       - fsleep: add blocking and releasing SIGCHLD using sigprocmask
+         around call to select(2) even if pselect(2) is not available
 
-assoc.c
-       - assoc_to_assign: if either the key or the value of an associative
-         array element contains non-printable characters (ansic_shouldquote
-         returns true), use ansic_quote to quote them instead of using double
-         quotes unconditionally
+                                  12/3
+                                  ----
+execute_cmd.c
+       - coproc_setstatus: new utility function, take a pointer to a coproc
+         and a status and mark the coproc as dead and having been reaped
+         with that status. Used by child processes who want to invalidate
+         the coproc's pid
 
-                                  9/19
+                                  12/5
                                   ----
 subst.c
-       - pat_subst: handle REP being NULL.  Fixes bug reported by Brian
-         Carpenter <brian.carpenter@gmail.com>
+       - process_substitute: instead of just having a flag to denote that a
+         file descriptor is connected to a process substitution, store the
+         pid of the child process (still needs work)
+       - find_procsub_child,set_procsub_status,reap_procsubs: utility
+         functions to allow the job control code to detect that a process
+         substitution child has died and deallocate the file descriptors
+         or pathname
 
-builtins/evalstring.c
-       - parse_string: if we get a longjmp to top_level with DISCARD as the
-         code (in which case we are going to go on), return -DISCARD to our
-         caller (always xparse_dolparen) after doing our own cleanup instead
-         of calling jump_to_top_level
+subst.h
+       - find_procsub_child,set_procsub_status,reap_procsubs: extern
+         declarations
 
-parse.y
-       - xparse_dolparen: if parse_string returns < 0, do the appropriate
-         cleanup and then jump_to_top_level with the negative of the return
-         value.  This allows us to do the appropriate parser cleanup in
-         case we're not going to exit the shell.  Fixes bug reported by Brian
-         Carpenter <brian.carpenter@gmail.com>
+nojobs.c
+       - set_pid_status: if we are reaping a process substitution, call
+         set_procsub_status to record the fact
 
-subst.c
-       - extract_delimited_string: if a recursive call to one of the extract_
-         functions or a call to ADVANCE_CHAR leaves i past the end of the
-         string, cut the loop off at the end of the string.  Fixes bug
-         reported by Brian Carpenter <brian.carpenter@gmail.com>
+jobs.c
+       - waitchld: if we are reaping a process substitution, call
+         set_procsub_status to record the fact. Doesn't really do anything
+         yet
 
-                                  9/20
+                                  12/6
                                   ----
-subst.c
-       - get_var_and_type: return appropriate values if variable indirection
-         results in a NULL variable.  Fixes bug reported by Brian Carpenter
-         <brian.carpenter@gmail.com>
-
-lib/readline/history.c
-       - history_get_time: handle strtol overflows caused by malicious
-         modifications to timestamps in the history file.  Fixes issue
-         reported by rens@endoria.net
+execute_cmd.c
+       - execute_command: don't call unlink_fifo_list if we're in the
+         middle of executing a list of commands (executing_list != 0).
+         Partial fix for bug reported by Stephane Chazelas
+         <stephane.chazelas@gmail.com>
+       - execute_simple_command: don't close process substitution file
+         descriptors in the parent after forking children in a pipeline;
+         defer until pipeline completes, since parent may have inherited
+         fds from a calling scope (e.g., via `.'). EXPERIMENTAL
+       - execute_disk_command: don't close process substitution file
+         descriptors in the parent after forking the child. EXPERIMENTAL
 
-                                  9/21
+                                  12/7
                                   ----
-lib/readline/rlconf.h
-       - ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+       - show-mode-in-prompt: clarify that this must be enabled before the
+         vi and emacs mode strings are prefixed to the prompt.  Report from
+         Rob Foehl <rwf@loonybin.net>
 
-                                  9/24
+                                  12/8
                                   ----
-jobs.c
-       - waitchld: if we get a SIGINT while waiting for a child to exit, but
-         the kernel doesn't interrupt the waitpid(2) call, assume the child
-         caught SIGINT if it exited for some reason other than SIGINT.  Fix
-         suggested by Stephane Chazelas <stephane.chazelas@gmail.com>
+execute_cmd.c
+       - execute_coproc: don't warn about an existing coproc if the write and
+         read file descriptors are unusable (-1), as they will be after a
+         call to coproc_closeall in a subshell. Fixes spurious warning
+         reported by Tobias Hoffmann <lfile-list@thax.hardliners.org>
 
-input.c
-       - make_buffered_stream: use B_TEXT in buffered stream flags instead
-         of (typo) O_TEXT.  Report and fix from Eric Blake <eblake@redhat.com>
+jobs.c
+       - bgp_resize: avoid overflow when calculating the new size if the
+         child process limit is something ridiculously large. Report and
+         fix from Natanael Copa <ncopa@alpinelinux.org>
 
-                                  9/27
-                                  ----
 execute_cmd.c
-       - shell_execve: call reset_parser before calling initialize_subshell,
-         which calls delete_all_aliases.  reset_parser wants to free the
-         pushed string list, which has pointers back into the alias table
-         (use after free)
-       - execute_simple_command: if we fork for an async command, make sure
-         the child process increments shell_level before performing any
-         word expansions, so $BASH_SUBSHELL is incremented.  Fixes issue
-         reported by ziyunfei <446240525@qq.com>
-
-                                  10/1
-                                  ----
-builtins/kill.def
-       - kill_builtin: make -L equivalent to -l for compatibility with other
-         (Linux) versions of kill
+       - execute_builtin_or_function: if we return via the return builtin, we
+         don't get a chance to free the saved fifo list, so add an unwind-
+         protect to make sure it happens. Part of fix for leak reported by
+         Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
+       - execute_command_internal: if we unwind via the return builtin (e.g.,
+         we execute a function which then returns via the return builtin to
+         a previous function), we don't free the saved fifo list, so add an
+         unwind-protect to make sure the free happens. Rest of fix for leak
+         reported by Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
 
-doc/{bash.1,bashref.texi}
-       - kill: document new `-L' option
+subst.c
+       - add_fifo_list: for the FIFO case (no /dev/fd), make sure we
+         initialize the new members of the fifo list after xrealloc
 
-                                  10/2
+                                  12/9
                                   ----
-[bash-4.4-beta frozen]
+subst.c
+       - dev_fd_list: now a list of type `pid_t' so we can store process
+         associated with the pipe fd into the right element; change all
+         necessary functions (copy_fifo_list, add_fifo_list)
+       - process_substitute: store pid of child process into the right
+         index in dev_fd_list after opening the pipe. Process ID of -1 means
+         process has been reaped and fd needs to be closed (or FIFO needs to
+         be unlinked); value of 0 means slot is unused
 
-                                  10/5
-                                  ----
-doc/{bash.1,bashref.texi}
-       - LC_TIME: document that the shell recognizes it and calls setlocale
-         when it changes; and that the shell uses it for time formatting
+jobs.c
+       - wait_for_background_pids: call reap_procsubs to make sure we clean
+         up all reaped process substitutions before trying to wait for
+         everything (still needs work)
 
-                                  10/6
-                                  ----
-subst.c
-       - skip_single_quoted: now takes an additional `flags' argument, like
-         skip_double_quoted; changed callers
-       - skip_single_quoted: now pays attention to SX_COMPLETE flag, allows
-         backslash to escape single quote, like $'...' allows
-       - skip_to_delim: added case where we are completing and we are
-         skipping over a $'...' string to call skip_single_quoted with
-         SX_COMPLETE flag to allow backslash to quote single quote.  Fixes
-         bug reported by Daniel Colascione <dancol@dancol.org>
-       - char_is_quoted: make analogous changes to handle $'...' so we can
-         accommodate $'ab \' cd'
+tests/{run-procsub,procsub.{tests,right}}
+       - new file, tests of process substitution that have failed in the past
 
-                                  10/11
+                                  12/10
                                   -----
-subst.c,bashjmp.h
-       - no_longjmp_on_fatal_error: now global so other parts of the shell can
-         use it
-
-arrayfunc.c
-       - expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't
-         longjmp to top_level, just return 0.  Fixes bug reported by
-         isabella parakiss <izaberina@gmail.com>
+jobs.c
+       - wait_for_background_pids: warn if one of the jobs is stopped
 
 subst.c
-       - CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp);
-         make sure all callers (skip_matched_pair, skip_to_delim,
-         char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before
-         setting it to 1
+       - wait_procsubs: new function, call wait_for for every "live" process
+         substitution
 
-expr.c
-       - expr_streval: if longjmping after an unbound variable error, jump
-         back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set
-         in an interactive shell
+jobs.c
+       - wait_for_background_pids: call wait_procsubs to reap any living
+         process subsitutions
 
-variables.c
-       - push_func_var: if pushing an array variable, such as when a variable
-         in the temporary environment is promoted to an array by mapfile when
-         the shell is in posix mode (so variable assignments preceding special
-         builtins or shell functions persist in the shell environment after
-         the builtin returns), make sure to copy the array or hash table so
-         the variable is duplicated correctly.  Fixes seg fault reported by
-         Linda Walsh <bash@tlinx.org>
-
-                                  10/13
+                                  12/13
                                   -----
-variables.c
-       - initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT
-         can be set in the initial environment
+lib/readline/bind.c
+       - parser_if: add support for testing the readline version, using the
+         full set of arithmetic comparison operators (and supporting both
+         = and ==), using version numbers of the form major[.[minor]]
 
-execute_cmd.c
-       - execute_function: set loop_level to 0 only if shell_compatibility_level
-         is greater than bash-4.3; this was kind of an incompatible change.
-         Report from Carlos Pita <carolosjosepita@gmail.com>
+                                  12/14
+                                  -----
+subst.[ch]
+       - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like
+         string_list_dollar_at, changed all callers. Not used yet.
 
-COMPAT,doc/{bash.1,bashref.texi}
-       - compat43: added loop_level changes to description
+                                  12/16
+                                  -----
+subst.c
+       - param_expand: broke out cases of expanding unquoted (quoted == 0)
+         $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS)
+         with various values of IFS (unset, null, set to non-null value) to
+         capture the expansion subtleties. From a report back on 11/24 by
+         Martijn Dekker <martijn@inlv.org>
 
-                                  10/15
+                                  12/17
                                   -----
-lib/sh/casemod.c,lib/readline/display.c
-       - make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE
-         if it's used outside HANDLE_MULTIBYTE.  Fixes from Greg Wooledge
-         <wooledg@eeg.ccf.org>
+array.h
+       - set_element_value: new define, sets array element AE to VALUE
 
-support/Makefile.in
-       - bash.pc: remove as part of distclean, not clean.  Report from Andreas
-         Schwab <schwab@linux-m68k.org>
+variables.c
+       - set_pipestatus_array: use set_element_value where appropriate
 
-                                  10/17
+                                  12/18
                                   -----
 subst.c
-       - array_var_assignment: make sure to call quote_string or quote_escapes
-         on the assignment string, so spaces in the assignment survive word
-         splitting.  Fixes bug reported by isabella parakiss
-         <izaberina@gmail.com>
+       - parameter_brace_find_indir: when expanding the indirect parameter
+         to find the eventual variable name, we don't perform word splitting.
+         Make sure this does the right thing for * and @.  Fixes bug
+         reported by isabella parakiss <izaberina@gmail.com>
 
-                                  10/20
+                                  12/19
                                   -----
 doc/{bash.1,bashref.texi}
-       - word splitting: make sure that newline is listed as one of the IFS
-         whitespace characters.  Fixes omission reported by ziyunfei
-         <446240525@qq.com>
+       - indirect expansion: make sure to note that the value of the indirect
+         variable does not undergo word splitting as one of its expansions,
+         as in fix from 12/18
 
-lib/readline/histfile.c
-       - history_do_write: make sure that we only create and use the tempfile
-         if the history file exists and is a regular file.  Reported several
-         times, most recent check the result of a report from
-         <marko.teiste@gmail.com>
+                                  12/22
+                                  -----
+subst.c
+       - parameter_brace_expand_rhs: make sure the value this function returns
+         when OP is `=' is quoted appropriately, as the callers expect. More
+         changes from Posix interp 221. Fixes report from Martijn Dekker
+         <martijn@inlv.org>
 
-                                  10/22
+variables.c
+       - assign_hashcmd: if running in a restricted shell, make sure the
+         target of the hash assignment can be found via a $PATH search, to
+         prevent users assigning commands to the hash table they would not
+         ordinarily have access to. Fixes issue raised by Drew Parker
+         <andrew.s.parker2@gmail.com>
+
+builtins/hash.def
+       - hash_builtin: if running in a restricted shell, make sure the
+         pathname target of `hash -p' can be found via a $PATH search, to
+         prevent users assigning commands to the hash table they would not
+         ordinarily have access to.
+
+                                  12/27
                                   -----
-jobs.c
-       - delete_all_jobs: if running_only == 0, we are eventually going to
-         clear the bgpids list, so don't bother to add pids to it in
-         delete_job (call with DEL_NOBGPID flag if running_only == 0)
+array.c,arrayfunc.c,...
+       - many changes to clean up unused variables and functions. From a
+         report from Siteshwar Vashisht <svashisht@redhat.com>
 
-                                  10/24
+                                  12/28
                                   -----
-jobs.[ch]
-       - bgpids: new implementation from a patch from John Fremlin
-         <john@fb.com>, uses an array for the list of the last CHILD_MAX
-         terminated background pids, and a separate hash table to search it.
-         The storage can be freed as a unit, and the size of the hash table
-         (currently 4096) is independent of the size of the bgpids table
+lib/readline/terminal.c
+       - _rl_term_clrscroll: save the `E3' termcap capability, which clears
+         the scrollback buffer where supported. Unused right now
 
-subst.c
-       - inherit_errexit: new variable to control whether or not command
-         substitution inherits the -e (errexit) option.  Disabled by default
+lib/readline/rlprivate.h
+       - _rl_term_clrscroll: extern declaration
 
-general.c
-       - posix_initialize: set inherit_errexit = 1 when Posix mode is enabled
+lib/readline/bind.c
+       - parser_if: added simple variable comparison capability. Allowable
+         operators are `=', `==', and `!='; boolean variables must be
+         compared to either `on' or `off'; variable names must be separated
+         from the operator by whitespace
 
-builtins/shopt.def
-       - inherit_errexit: new shell option, tracks value of inherit_errexit,
-         allows command substitution to inherit the setting of errexit without
-         posix mode.  From a request and patch submitted by Christoph Gysin
-         <christoph.gysin@gmail.com>
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+       - document new `if variable comparison value' construct
 
-{version,version2}.c
-       - use #if HAVE_SNPRINTF instead of #if defined in case configure
-         decides to #define it to 0.  Fixes problem reported by Klaus Ziegler
-         <klausz@haus-gisela.de>
+                                1/2/2018
+                                --------
+lib/glob/sm_loop.c
+       - EXTMATCH: when matching against !(patlist), if a filename beginning
+         with a `.' does not match any of the patterns in patlist, don't
+         return it as a match if leading dots need to be matched explicitly
+         (flags & FNM_PERIOD). Report from Eric Cook <llua@gmx.com>
 
-configure.ac
-       - when checking for sys/resource.h, make sure to include <sys/time.h>
-         for the benefit of both old systems that require it and new versions
-         of autoconf that require a header file to compile to report its
-         presence.  Reported by Klaus Ziegler <klausz@haus-gisela.de>
+                                   1/3
+                                   ---
+variables.[ch]
+       - bind_function_def: takes an additional flags argument. If FLAGS&1,
+         overwrite any existing function_def hash table entry; if FLAGS==0,
+         leave any existing function_def alone.
 
-                                  10/26
-                                  -----
-subst.h
-       - SD_ARITHEXP: new flag value for skip_to_delim, supports parsing
-         arithmetic expressions in parameter expansions
+make_cmd.c
+       - make_function_def: call bind_function_def with flags == 0
+
+execute_cmd.c
+       - execute_intern_function: call bind_function_def with flags == 1 so
+         we have function_def information that's correct for where the
+         function is defined, not just where it's last parsed. Fixes report
+         from Bruno Vasselle <bruno.vasselle@laposte.net>; final piece of
+         fix from 12/15/2011
 
+                                   1/4
+                                   ---
 subst.c
-       - skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for
-         subexpressions and allowing ?: expression to not terminate an
-         arithmetic expression delimited by `:'
-       - skiparith: just call skip_to_delim with the SD_ARITHEXP option and
-         the right delimiter string and return the right result.  Fixes bug
-         reported by <grishalevit@gmail.com>
-
-include/shmbchar.h
-       - strip out everything except what is needed to support is_basic and
-         similar functions, since the mbchar_t typedef apparently conflicts
-         with some AIX-specific type definition.  Problem reported by
-         Michael Felt <aixtools@gmail.com>
+       - param_expand: deal with string_list_dollar_star returning NULL.
+         Fixes bug reported by Martijn Dekker <martijn@inlv.org>
 
-                                  10/27
-                                  -----
-builtins/{set,ulimit}.def
-       - {set,ulimit}_builtin: make sure that --help is treated the same as
-         -? and prints a message and returns.  Fixes bug reported by ziyunfei
-         <446240525@qq.com>
+builtins/history.def
+       - history_builtin: enabled code that performs range deletion
+
+                                   1/5
+                                   ---
+subst.c
+       - do_assignment_internal: if performing a compound assignment, make
+         sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the
+         assignment word has the W_CHKLOCAL flag set
+       - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an
+         existing local variable before creating or modifying a global
+         variable
 
-builtins/*.def
-       - make sure to consistently use builtin_help() instead of mix of that
-         function and builtin_usage()
+builtins/declare.def
+       - declare_internal: new (undocumented so far) option: -G. Means to
+         act on global variables (create, modify) if no local variable is
+         found with the specified name
+       - declare_find_variable: new declare-specific wrapper functon for
+         declare builtin; obeys -g and -G options in one place
+       - declare_internal: if no variable is found after following any nameref
+         chain, look up the variable using declare_find_variable to honor the
+         -G option. XXX - so far, this is the only place that function is used
 
-                                  10/29
-                                  -----
-doc/{bash.1,bashref.texi}
-       - BASH_CMDS, BASH_ALIASES: note that removing elements from these
-         array variables is not currently reflected in the command hash
-         table and alias list, respectively.  Reported by isabella parakiss
-         <izaberina@gmail.com>
+subst.c
+       - shell_expand_word_list: before calling make_internal_declare, add
+         'G' to the options list if W_CHKLOCAL is set in the word's flags.
+         This makes builtins like `readonly' that modify local variables in
+         a function behave the same for scalar and array variables
 
-                                  10/30
-                                  -----
-eval.c
-       - reader_loop: if PS0 is set in an interactive shell, expand and
-         display it after reading a (complete) command but before executing
-         it.  This differs from the DEBUG trap because the DEBUG trap is
-         executed once for each simple command (and some others, like each
-         time through a for loop).  From a patch submitted by Dan Stromberg
-         <dstromberglists@gmail.com>
+                                  1/11
+                                  ----
+parse.y
+       - shell_getc: move code that decides whether to append a space to an
+         alias expansion here from mk_alexpansion, so we can inhibit adding
+         a space if we're currently parsing a single or double quoted string
+
+                                  1/12
+                                  ----
 
 parse.y
-       - prompt_again: set ps0_prompt from $PS0 in an interactive shell
+       - clear_string_list_expander: take a pointer to an alias that's about
+         to be freed and make sure there aren't any pointers to it in the
+         list of pushed strings. If there are, zero it out in the pushed
+         string list to avoid referencing freed memory in pop_string()
 
-doc/{bash.1,bashref.texi}
-       - PS0: document new prompt string
+alias.c
+       - free_alias_data: if an alias being freed is currently being expanded,
+         call clear_string_list_expander to remove references to it from the
+         list of pushed strings
 
-                                  11/3
+                                  1/14
                                   ----
-subst.c
-       - cond_expand_node: if special > 0, remove quoted nulls from the word
-         list, since no word splitting takes place.  Fixes bug reported by
-         Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
+pcomplib.c
+       - progcomp_search: add code to look up an alias for the CMD argument
+         and return the completions for the first word of that alias if one
+         is found. Just a start at completing aliases, a much-requested
+         feature
 
-                                  11/4
-                                  ----
-doc/{bash.1,builtins.texi}
-       - inherit_errexit: add to shopt description; modify Posix mode
-         description
+pcomplete.h
+       - COPT_LASTUSER: last flag value used by user-settable completion
+         options
+       - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values
+         from programmable_completions in FOUNDP argument. Moved RETRYFAIL
+         define here from pcomplete.c to avoid collisions with user-settable
+         option values (COPT_*)
 
-                                  11/9
+                                  1/15
                                   ----
-lib/readline/util.c
-       - rl_tilde_expand: fix out-of-bounds read caused when this function
-         is invoked with rl_point == 0.  Bug reported by Hanno Böck
-         <hanno@hboeck.de>
+pcomplete.c
+       - programmable_completions: if we don't find any completions for a
+         command, and RETRY is 0, see if the command is a defined alias,
+         expand it, and try to expand the first word of the value as a
+         command, and find any programmable completions for it. Here right
+         now, could be moved to attempt_shell_completion later if we need
+         to do more analysis of the expanded line. We'll see how it works
+         in practice. (Disabled for now.)
 
-                                  11/11
-                                  -----
-{nojobs,jobs}.c
-       - get_original_tty_job_signals: force the original signal disposition
-         for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells.  This
-         will force child processes to get SIG_DFL even if the shell is
-         started with those signals ignored.  From a bug report from
-         Keith Thompson <keithsthompson@gmail.com>
+                                  1/16
+                                  ----
+parse.y
+       - grammar: when timing the null command, make sure to turn off the
+         flags in parser_state (PST_REDIRLIST) that make_simple_command sets
+         when given a NULL second argument, since it assumes that it's going
+         to turn those off when it gets the next word of the simple command
+         (which it never gets in this case).  Fixes bug reported by
+         Anti Räis <antirais@gmail.com>
 
-                                  11/13
-                                  -----
-make_cmd.c
-       - make_function_def: if a function is being defined without a source
-         file, and the shell has not been initialized, assume that the
-         function is being imported from the environment and set the
-         source_file struct member to "environment".  Set to "main" if the
-         shell has been initialized.  Fixes bug reported on savannah by
-         Arno-Can Uestuensoez
-         https://savannah.gnu.org/support/index.php?108903
+                                  1/19
+                                  ----
+lib/readline/rltty.c
+       - prepare_terminal_settings (termios/termio): if there is a function
+         bound to the VDISCARD character in the current keymap, set VDISCARD
+         to _POSIX_VDISABLE while readline is active. From a report from
+         Rhialto <rhialto@falu.nl>
 
-subst.c
-       - skip_to_delim: if the shell is in posix mode (posixly_correct != 0)
-         and performing history expansion ((flags & SD_HISTEXP) != 0), allow
-         double quotes to quote the history expansion character.  TENTATIVE
-         CHANGE, inspired by
-         https://savannah.gnu.org/support/index.php?108491
+                                  1/22
+                                  ----
+builtins/history.def
+       - histtime: check whether or not localtime() returns NULL, and make
+         sure we only call strftime() with a valid struct tm. This can happen
+         when the timestamps in the history file overflow a time_t. Fixes bug
+         reported by Luke Dashjr <luke@dashjr.org>
 
-                                  11/14
-                                  -----
-jobs.c
-       - wait_for: modify change from 4/23 to only give the terminal to
-         shell_pgrp if not running in the background and subshell_environment
-         indicates we're not in a pipeline and not an async command.  Fixes
-         bug reported by konsolebox <konsolebox@gmail.com>
+bashline.c
+       - edit_and_execute_command: if we're in vi editing mode, make sure
+         we end up in insert mode after executing the commands from the
+         edited file. This seems to be what other shells do. Report from
+         Stan Marsh <gazelle@xmission.com>
 
-                                  11/16
-                                  -----
-doc/{bash.1,bashref.texi}
-       - document new posix-mode behavior of not giving ! special meaning
-         within double quotes, even if histexpand is enabled
+                                  1/26
+                                  ----
+bashline.c
+       - command_word_completion_function: match alias and shell function
+         names case-insensitively if the readline completion-ignore-case
+         variable is set. Inspired by report from <odnehel@gmail.com>
 
-                                  11/17
-                                  -----
-builtins/evalfile.c
-       - fc_execute_file: pass FEVAL_BUILTIN flag to _evalfile so it returns
-         the value of parse_and_execute after executing the commands in the
-         file.  Fixes bug reported by Chris Marusich <cmmarusich@gmail.com>
+lib/readline/display.c
+       - update_line: when performing a dumb update after wrapping the line
+         (usually due to printing the prompt), make sure we adjust
+         _rl_last_c_pos if there are invisible characters in prompt lines
+         other than the first (we assume those invisible characters are in
+         the last line, which is nearly always the case). We adjust by the
+         total number of invisible chars less the number of invisible chars
+         in the first prompt line. From a report in
+         https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273
 
-                                  11/20
-                                  -----
-subst.c
-       - process_substitute: don't unconditionally set pipeline_pgrp to
-         shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked
-         yet) or if we know we haven't forked for a command, a pipeline,
-         or an async command.  Fixes bug reported by
-         <gnu.20.drkshadow@spamgourmet.com>
-         as https://savannah.gnu.org/support/index.php?108593
+execute_cmd.c
+       - execute_command_internal: if redirections attached to a compound
+         command fail, make sure we discard the `internal_fifos' unwind-
+         protect frame after freeing the copied fifo_list and before returning
 
-                                  11/24
-                                  -----
-variables.c
-       - set_pwd: inherit the value of OLDPWD from the initial environment
-         if it names a directory.  From a report from John Wiersba
-         <jrw32982@yahoo.com>
+                                  1/30
+                                  ----
+lib/readline/rlprivate.h
+       - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems
+         with the tty driver thinking the cursor was in the wrong position.
+         Fixes issue reported by Egmont Koblinger <egmont@gmail.com>
 
-builtins/set.def
-       - -T: fix help text to note that the DEBUG and RETURN traps are both
-         inherited if this is set.  Report from Grisha Levin
-         <grishalevit@gmail.com>
+                                  1/31
+                                  ----
+lib/sh/zread.c
+       - zread,zreadintr: call check_signals() before calling read() to
+         minimize the race window between signal delivery, signal handling,
+         and a blocking read(2). Partial fix for FIFO read issue reported by
+         Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
 
 doc/{bash.1,bashref.texi}
-       - HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to
-         the setting of the `extglob' variable.  Clarification raised by
-         Aharon Robbins <arnold@skeeve.com>
+       - shopt: document `assoc_expand_once' shell option
 
-builtins/jobs.def,doc/{bash.1,bashref.texi}
-       - disown: add text to synopsis making it clear that disown takes a
-         pid argument.  From a report from Matthew Stanfield
-         <matthew@i-dig.info>
-
-findcmd.c,doc/{bash.1,bashref.texi}
-       - EXECIGNORE: change pattern matching to use FNMATCH_EXTFLAG like other
-         IGNORE variables.  From a report from Aharon Robbins <arnold@skeeve.com>
+                                   2/1
+                                   ---
+config-top.h
+       - DONT_REPORT_SIGTERM: define, so non-interactive shells will no
+         longer print termination messages for child processes killed by
+         SIGTERM
 
-trap.c
-       - _run_trap_internal: make sure to catch and use return values supplied
-         as arguments to `return'; instead of just catching return, make sure
-         we use return_catch_value as well.  Fixes bug reported by
-         Grisha Levit <grishalevit@gmail.com>, affects RETURN, DEBUG, ERROR
-         traps
+                                   2/6
+                                   ---
+lib/readline/text.c
+       - rl_insert: don't attempt to optimize typeahead if we are only reading
+         a fixed number of characters (rl_num_chars_to_read > 0)
 
-                                  11/30
-                                  -----
-lib/readline/display.c
-       - rl_redisplay: fix code that deals with prompts that contain
-         multibyte characters whose physical length is longer than the screen
-         width (so the prompt line wraps) to deal with invisible characters
-         in the prompt and set the inv_lbreaks offsets correctly and set
-         lpos appropriately
-       - _rl_move_cursor_relative: always called with either visible line or
-         invisible line. Decide whether we are being called with the invisible
-         line (or a portion thereof) as the DATA argument; make sure to account
-         for invisible characters in the last line of the prompt by offsetting
-         the desired buffer offset (NEW) by where DATA starts in invisible line
-         and checking whether that is past the last invisible character in
-         the prompt
-       - _rl_move_cursor_relative: do the same for the visible line by using
-         the visible line lbreaks array instead of _rl_screenwidth, since
-         that fails in the presence of multibyte characters (buffer offset
-         vs. physical screen position).  These fix bug with prompts with
-         multibyte characters and invisible characters that are longer than
-         the screen width reported by Ryo Furue <ryofurue@gmail.com>
+redir.c
+       - redir_special_open: if the shell is restricted, return a
+         RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp
+         sockets.  Inspired by report from Blake Burkhart <bburky@bburky.com>
+       - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT,
+         return that right away (instead of errno) so we can print a better
+         error message
 
-                                  12/1
+                                  2/11
                                   ----
-parse.y,make_cmd.c
-       - here_doc_first_line: new variable, set to non-zero to indicate the
-         first line of possibly multiple here documents associated with the
-         current command.  Set in parse.y:gather_here_documents() before
-         reading any here documents, set to 0 after reading the first line
-         of any here document in make_cmd.c:make_here_document().
+jobs.c
+       - bgp_resize: fix problems with (pid_t) overflow when calculating new
+         size for table when js.c_childmax is near the limit of a pid_t
+         (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with
+         32-bit pid_t). Fixes hang reported by Natanael Copa
+         <ncopa@alpinelinux.org> based on his patch from 12/8.
+       - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768)
 
-parse.y
-       - history_delimiting_chars: if parser_state indicates we are reading
-         a here document, don't use current_command_line_count to see whether
-         or not we're on the first line of a here document -- it can be fooled
-         by multi-line commands (or even backslash-escaped newlines).  Use
-         here_doc_first_line to check that directly.  Fixes bug reported by
-         Geoffrey Allott <geoffrey@allott.email>
-
-shell.h,parse.y
-       - save and restore here_doc_first_line as part of the shell's parser
-         state
+include/typemax.h
+       - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29,
+         silences some compiler warnings
+
+                                  2/14
+                                  ----
+Makefile.in
+       - maybe-clean: use cd and pwd -P to test whether or not two directory
+         names identical, since topdir = '.' and BUILD_DIR = full pathname
+         when you use something like `bash ./configure'. Problem reported by
+         Michael Felt <aixtools@gmail.com>
 
-lib/sh/tmpfile.c
-       - use ANSI-C rand() interface if random() not available.  Fixes problem
-         with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler
-         <klausz@haus-gisela.de>
+subst.c
+       - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't
+         treat `'' and `"' as candidates for possible sequences of delimiters,
+         even if they're part of the delimiter set (the delims argument).
+         Fixes problem with completing lines like `foo --bar='quux baz' xx'
+         reported by Nick Patavalis <npat@efault.net>
 
-                                  12/2
+                                  2/15
                                   ----
-aclocal.m4
-       - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version
-         of readline if cross-compiling bash while using an external readline
-         library.  Fix from Barry Davis <barry_davis@stormagic.com>
+copy_cmd.c
+       - copy_word_list: build the list in the right order, avoiding having
+         to reverse it at the end. Helps with long argument lists
 
-execute_cmd.c
-       - execute_builtin: save and restore value of builtin_ignoring_errexit
-         instead of assuming we can set it back to 0 -- the ignore-errexit
-         cases might be nested
-       - execute_builtin: after a builtin executes and eval_unwind is set,
-         set exit_immediately_on_error to 0 if builtin_ignoring_errexit is
-         set, and back to the value of errexit otherwise, just like the
-         code that sets -e does.  Fixes short-circuiting bug reported by
-         Marcin Swigon <swigon.mar@gmail.com>
+shell.c
+       - bind_args: build the argument list in the right order, avoiding
+         having to reverse it at the end.
+       - bind_args: only call push_args to save argc and argv as BASH_ARGC
+         and BASH_ARGV if debugging mode is enabled (debugging_mode != 0).
+         Inspired by report from Ambrose Feinstein <ambrose@google.com>
+       - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting
+         bash_argv_initialized
+       - shell_reinitialize: reset bash_argv_initialized back to 0 so
+         BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode
 
-                                  12/5
-                                  ----
-builtins/setattr.def
-       - set_or_show_attributes: instead of using a fixed string for the
-         options argument to `declare', which results in export adding the
-         readonly attribute, build the option string dynamically like in
-         subst.c:shell_expand_word_list()
-       - set_or_show_attributes: don't add the -r option to declare if the
-         attribute passed as an argument doesn't include att_readonly; add
-         -x if the attribute includes att_exported
-       - set_or_show_attributes: add the -g option to declare so readonly
-         and export in functions that go through this code path don't create
-         local variables.  Part of fix for bug reported by ziyunfei
-         <446240525@qq.com>
+variables.c
+       - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC
+         from the saved positional parameters
+       - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if
+         bash_argv_initialized == 0
+
+builtins/shopt.def
+       - shopt_set_debug_mode: if we're turning on debug mode, initialize
+         BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0
 
+                                  2/16
+                                  ----
 execute_cmd.c
-       - make_internal_declare: if we have an assignment builtin that isn't
-         supposed to create local variables (export/readonly), make sure to
-         add the W_ASSNGLOBAL flag to each assignment statement word.
-         Part of fix for bug reported by ziyunfei <446240525@qq.com> where
-         readonly can create local variables when invoked with a compound
-         array assignment as an argument within a shell function
+       - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized
+         before calling push_args (and before calling remember_args)
 
-subst.c
-       - make_internal_declare: added third argument: command name.  Not used
-         in any useful way yet
-       - do_compound_assignment: handle attempted assignments to readonly
-         variables and print error messages, like bind_variable does and the
-         callers expect. This means that assignments to readonly array
-         variables can't go through a code path that allows them to fail
-         silently
-
-doc/Makefile.in
-       - uninstall: run install-info --delete after removing the installed
-         info file to update the directory file
+builtins/source.def
+       - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized
+         before calling push_args (and before calling remember_args)
 
-execute_cmd.c
-       - execute_disk_command: since we still (and have always) perform
-         redirections in child processes, we need to mark that state so
-         we know that we're in a child process.  subshell_performing_redirections
-         is the new variable; non-zero when executing do_redirections()
+builtins/evalfile.c
+       - _evalfile: if the shell compatibility level is 44 or lower, make
+         sure BASH_ARGV and BASH_ARGC are initialized before calling
+         array_push
 
-subst.c
-       - process_substitute: if we are executing process substitution in a
-         redirection expansion context (expanding_redir == 1), the child
-         process should not have access to any temporary environment the
-         parent has.  Call flush_tempenv() in the child process to get rid
-         of it.  Fix for bug reported by Clint Hepner <clint.hepner@gmail.com>
+builtins/shopt.def
+       - compat44: new shell option. This will be the last compatXX option
 
-                                  12/9
-                                  ----
-jobs.c
-       - waitchld: if in posix mode and attempting to let SIGCHLD interrupt the
-         wait builtin, make sure wait_intr_flag is non-zero before trying to
-         longjmp to wait_intr_buf.  Fixes bug reported by Aharon Robbins
-         <arnold@skeeve.com>
+doc/{bash.1,bashref.texi}
+       - compat44: document new shell option
 
-                                  12/10
-                                  -----
-lib/readline/display.c
-       - update_line: if a prompt containing invisible characters changes,
-         and the change is within the prompt string, we need to redraw the
-         entire prompt.  After that redraw, if the cursor position is after
-         the first index where the old and new lines differ, we can short-
-         circuit the update if the line length stays the same
-       - update_line: if we redraw the entire prompt string because the prompt
-         contains invisible characters and the first difference is in the
-         middle of the prompt, we possibly need to adjust our idea of the
-         first differing character in the old and new lines.  We punt and do
-         a dumb update in this case.  Fixes bug with dynamic vi-mode mode
-         strings containing invisible characters reported by Dylan Cali
-         <calid1984@gmail.com>
+                                  2/21
+                                  ----
+builtins/common.h
+       - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes
+         bug reported by jeremy@feusi.co
 
-                                  12/11
-                                  -----
-lib/readline/display.c
-       - update_line: if we move up to a new screen line, we need to recompute
-         the number of invisible characters on the new current line
-         (visible_wrap_offset).  Fixes bug reported to bug-readline by
-         Per Bothner <per@bothner.com>
-       - update_line: update code that attempts to compute where we are in
-         the new line buffer.  Fixes `vt100' bug reported to bug-readline by
-         Per Bothner <per@bothner.com>
+input.h
+       - B_SHAREDBUF: new flag for buffered input fds, indicates that this
+         fd shares its b_buffer with another fd
 
-                                  12/18
-                                  -----
-execute_cmd.c
-       - execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV
-       - restore_funcarray_state: now global
+input.c
+       - duplicate_buffered_stream: when duplicating *from* the buffer
+         corresponding to bash input, make sure the new buffer has B_SHAREDBUF
+         in the flags, because copy_buffered_stream copies pointers
+       - duplicate_buffered_stream: if the buffer being copied to has the
+         B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed.
+         Fixes use-after-free bug reported by jeremy@feusi.co
+       - save_bash_input,close_buffered_stream: make sure a buffer with
+         B_SHAREDBUF set has its b_buffer set to NULL before calling
+         free_buffered_stream
 
-execute_cmd.h
-       - make func_array_state type global, add extern function declaration
-         for restore_funcarray_state
+                                  2/24
+                                  ----
+subst.c
+       - parameter_brace_expand_error: add parameter saying whether or not
+         we are checking whether value is null, so we can have different
+         error messages for ${x:?} and ${x?}. Report and fix from
+         don fong <dfong@dfong.com>
 
-builtins/evalfile.c
-       - _evalfile: use restore_funcarray_state and pop_args as unwind-protects
-         to restore BASH_{SOURCE,LINENO,ARGC,ARGV} and FUNCNAME on interrupts.
-         Fixes bug reported back on 11/10 by Grisha Levit
-         <grishalevit@gmail.com>
+                                   3/5
+                                   ---
+lib/readline/bind.c
+       - _rl_read_file: instead of calling stat/open on the passed filename,
+         use open/fstat to avoid one possible filename translation and close
+         a small (benign) race condition. Report and fix from Roy Ivy
+         <roy.ivy.iii@gmail.com>
 
-                                  12/20
-                                  -----
-lib/readline/isearch.c
-       - _rl_isearch_dispatch: after removing the only character from the
-         search string with DEL, leaving the search string empty, don't match
-         the previous line if we didn't have a match before
+                                  3/11
+                                  ----
+variables.c
+       - makunbound: if new variable localvar_unset is non-zero, mark local
+         vars in previous scopes as invisible and unset so they will show
+         up as unset until that previous scope returns (similar to how local
+         variables in the current local scope are handled). localvar_unset
+         is currently set to 0 with no way for a script to change its value.
+         Eventually there will be an option to modify it.  From a bug-bash
+         discussion started by Nikolai Kondrashov <spbnick@gmail.com> back
+         on 2/11/2018
 
-                                  12/22
-                                  -----
-bashhist.c
-       - enable_history_list,remember_on_history: initialize to 0 instead of 1
+                                  3/13
+                                  ----
+subst.c
+       - expand_word_list_internal: short-circuit and exit right away if a
+         variable assignment preceding a special builtin fails in posix mode
+       - expand_word_list_internal: if a variable assignment precedes an
+         empty command name (after expansion), fix to exit right away when
+         the shell is in posix mode
 
-shell.c
-       - init_interactive,init_interactive_script: set enable_history_list and
-         remember_on_history to 1 (defaults)
+                                  3/15
+                                  ----
+doc/{bash.1,bashref.texi}
+       - Add text to Pathname Expansion clarifying that a slash must be
+         matched by a slash in the pattern when matching pathnames, but
+         not in other matching contexts. Suggested by <stormy1777@yahoo.com>
 
-                                  12/23
-                                  -----
-variables.c
-       - initialize_shell_variables: don't inherit PS4 from the environment
-         if the shell is running with euid == 0; just reset it to `+ '.  This
-         is a known potential vulnerability, since PS4 expansion performs
-         command substitution in the root shell's context before displaying
-         it.  Discussion started by up201407890@alunos.dcc.fc.up.pt
+builtins/common.c
+       - read_octal: allow octal numbers greater than 777 to accommodate
+         modes and umasks that include sticky/setuid/setgid bits. Report
+         and fix from Martijn Dekker <martijn@inlv.org>
 
-bashhist.c
-       - bash_history_reinit: initialize remember_on_history to the value of
-         enable_history_list (set -o history).  Fixes bug reported by
-         Stephane Chazelas <stephane.chazelas@gmail.com> with command-line
-         option `-o history' not having any effect
+                                  3/19
+                                  ----
+lib/readline/bind.c
+       - rl_generic_bind: make sure we only assign to prevkey in the loop
+         if the key sequence index is > 0, so ic is valid. Fixes bug
+         reported by Koichi Murase <myoga.murase@gmail.com>
 
-                                  12/28
-                                  -----
-lib/readline/{history.h,histfile.c}
-       - history_file_version: new int variable, reserved for future use
-       - history_multiline_entries: new int variable, can be set by the
-         calling application to enable reading multi-line history entries
-         from the history file (currently undocumented)
+builtins/read.def
+       - read_builtin: be slightly less aggressive checking for timeouts and
+         SIGALRM: if we successfully read a character, don't check for a
+         timeout until we store or process it. Fixes timing problem
+         reported by Rob Foehl <rwf@loonybin.net>
 
-lib/readline/history.c
-       - _hs_append_history_line: new function, append a line passed as an
-         argument to a specified history entry, used to create multi-line
-         history entries
+                                  3/22
+                                  ----
+sig.c
+       - termsig_handler: add a call to exit(1) after the kill, just in case
+         there are circumstances where the SIG_DFL signal handler is
+         ignored.  Report from Andrei Vagin <avagin@gmail.com>
 
-lib/readline/histfile.c
-       - read_history_range: implement a heuristic that temporarily sets the
-         history comment character if the first line read from the history
-         file looks like it has is a timestamp (#[:digit:]) so we can read
-         timestamps from the history file properly.  Originally reported
-         back in March 2015 by Christoph Anton Mitterer <calestyo@gmail.com>
-       - read_history_range: make sure history_multiline_entries is non-zero
-         if the history file looks like it has timestamps
-       - read_history_range: if we think we have a history file with timestamps
-         and we read more than one non-timestamp consecutive history lines,
-         assume they are part of a single multi-line history entry and paste
-         them together using _hs_append_history_line.  Feature most recently
-         requested by james harvey <jamespharvey20@gmail.com>, also suggested
-         by Christoph Anton Mitterer <calestyo@gmail.com>
-
-examples/loadables/setpgid.c
-       - setpgid: new loadable builtin, originally contributed by Jason
-         Vas Dias <jason.vas.dias@gmail.com>
-
-                                  12/29
-                                  -----
-bashhist.c
-       - bash_history_inhibit_expansion: fix cases where a history expansion
-         should be skipped because it's in a command or process substitution
-         but there is another history expansion preceding the substitution
-         on the command line.  Don't let the previous history expansion fool
-         the function into saying the command substitution history expansion
-         should be performed
+                                  3/25
+                                  ----
+lib/readline/bind.c
+       - _rl_function_of_keyseq_internal: new internal function thta takes a
+         length parameter to accommodate NUL in the key sequence. Patch from
+         Koichi Murase <myoga.murase@gmail.com>
+       - rl_function_of_keyseq_len: new application-callable function that
+         takes a length parameter; otherwise equivalent to rl_function_of_keyseq.
 
-builtins/evalstring.c
-       - parse_prologue: always unwind-protect history_expansion_inhibited,
-         since history expansion can be enabled in non-interactive shells,
-         and calling eval once in a non-interactive shell inhibits history
-         expansion forever even if `set -o histexpand' was run before the
-         eval
+lib/readline/readline.h
+       - rl_function_of_keyseq_len: add extern declaration for new function
 
-builtins/common.h
-       - SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means
-         to not perform history expansion (decouple from SEVAL_NOHIST, which
-         now means to not remember commands on history); changed all callers
-         that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP
+lib/readline/doc/rltech.texi
+       - rl_function_of_keyseq_len: document new function interface
 
-builtins/evalstring.c
-       - parse_prologue: instead of calling bash_history_disable, set
-         remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited
-         to 1 if SEVAL_NOHISTEXP
+bashline.c
+       - bash_execute_unix_command: use rl_function_of_keyseq_len to handle
+         key sequences with embedded NULs (\C-@). Fix from Koichi Murase
+         <myoga.murase@gmail.com>
 
-                                  12/30
-                                  -----
-subst.c
-       - skip_to_histexp: new function, a stripped-down version of skip_to_delim.
-         Used to skip to the next unquoted instance of the history expansion
-         character, handles peculiar quoting and command/process substitution
-         requirements.  Better fix for bug reported by
-         Zigmund.Ozean@zig-home.localdomain back in January, prompted by report
-         from Keith Thompson <keithsthompson@gmail.com>
+lib/readline/bind.c
+       - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY
+         argument through rl_untranslate_keyseq to produce a symbolic sequence
+         that can encode \C-@.
+       - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order
+         to accommodate symbolic key sequences; should be a no-op for `raw'
+         key sequences such as the arrow key seqeunces from terminfo. Change
+         from Koichi Murase <myoga.murase@gmail.com>
 
-bashhist.c
-       - bash_history_inhibit_expansion: use skip_to_histexp instead of
-         skip_to_delim
+                                   4/2
+                                   ---
+jobs.c
+       - wait_for: when setting the SIGINT signal handler to wait_sigint_handler
+         make sure we're not setting old_sigint_handler recursively, as we
+         can when running an external command in a trap we took after a
+         command exited due to SIGINT. We don't want to overwrite
+         old_sigint_handler here. Fixes bug reported by Dr. Werner Fink
+         <werner@suse.de>
 
-subst.c
-       - parameter_brace_expand_rhs: if the rhs of an expansion is "$@" and
-         IFS is null, we need to separate the (quoted) positional parameters
-         in the returned word with a space, and mark the word as needing to
-         be split on spaces (W_SPLITSPACE).  Fix for issues reported back in
-         October 2014 as the result of an austin-group discussion, and just
-         re-reported by Martijn Dekker <martijn@inlv.org>
-
-                                1/4/2016
-                                --------
 execute_cmd.c
-       - execute_simple_command: if autocd is set, invoke a function named
-         `cd' if one exists, instead of the shell builtin.  Feature requested
-         by transl8czech@gmail.com
+       - execute_disk_command: when there is a command_not_found_hook, make
+         sure the subshell turns off job control before running it, in case
+         it runs processes. We don't want it to manipulate process groups.
+         Fixes bug reported by ÐиÑиллов Ðима <dk.1997-fast@yandex.ru>
+       - execute_command_internal: make sure the command run by the `command'
+         builtin doesn't cause the ERR trap to be executed; wait for the
+         status to be returned by the command builtin. Fixes bug reported by
+         Martijn Dekker <martijn@inlv.org>
 
-builtins/mkbuiltins.c
-       - if a command's short description is the same as its name (e.g., `true'),
-         don't mark the short doc to be translated.  Report and fix from
-         Benno Schulenberg <bensberg@justemail.net>
-
-                                   1/6
+                                   4/4
                                    ---
 subst.c
-       - command_substitute,process_substitute: before replacing the file
-         descriptor underlying stdout (fd 1), make sure to purge any pending
-         stdio output that hasn't been written successfully, even after a
-         call to fflush().  Fixes bug reported by cks@cs.toronto.edu
+       - process_substitute: handle longjmp back to top_level and function
+         returns (return_catch) in the child process, like command
+         substitution, so we don't longjmp back to some arbitrary spot from
+         the `exit' or `return' builtins, or on an expansion error, like
+         the command timing code. Fixes bug reported by Basin Ilya
+         <basinilya@gmail.com>
 
-                                   1/7
+                                   4/6
                                    ---
-builtins/{echo,printf}.def
-       - echo_builtin,printf_builtin: don't use terminate_immediately; use
-         calls to QUIT in the body of the print loop after writes and flushes.
-         Fixes problem with running the signal handler and exit trap in a
-         signal context and other bug reported by cks@cs.toronto.edu
-
-builtins/common.c
-       - sh_chkwrite: put in calls to QUIT to catch signals that interrupt
-         writes
+parse.y
+       - read_token_word: when reading a matched pair of backquotes as part
+         of a word, treat it as quoted so the characters are read as a single
+         word, but do not let the presence of the backquote mark the word as
+         quoted. Fixes here-document delimiter bug reported by Denys Vlasenko
+         <dvlasenk@redhat.com>
 
-shell.c
-       - get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT.
-         Fixes bug reported by pb <p-bauer-schriesheim@t-online.de>
+                                   4/7
+                                   ---
+execute_cmd.c
+       - execute_case_command: call quote_string_for_globbing with the
+         QGLOB_CTLESC flag for both quoted and unquoted words, so it will
+         remove CTLESC/CTLESC in all cases while converting other quoted
+         characters to use a preceding backslash. Bug reported by
+         Martijn Dekker <martijn@inlv.org>
 
-                                   1/8
+                                   4/9
                                    ---
-lib/readline/bind.c
-       - _rl_init_file_error: now a varargs function so it can take format
-         strings and arguments and pass them to vfprintf
-       - rl_parse_and_bind: print a warning if we encounter a key binding
-         string with one or more hyphens but we don't find a valid modifier
-         (`control', `meta', etc.).  Prompted by a report from Andrew Kurn
-         <kurn@sfu.ca>
-       - rl_parse_and_bind: improve several existing error messages now that
-         _rl_init_file_error takes a variable number of arguments
-       - rl_variable_bind: print error message upon encountering unknown
-         variable
+smatch.c
+       - posix_cclass_only: helper function that checks whether a pattern has
+         only posix single-byte character classes ([:alpha:], etc.) or has
+         none at all
+       - xstrmatch: if running in a multibyte locale, make sure to short-
+         circuit to the single-byte matching code only if there are no
+         unrecognized character class names, since the wide character ctype
+         functions allow locales to define their own character class names
+         (e.g., "hyphen"). Fixes issue reported by yangyajing <yyj_cqu@163.com>
 
-                                  1/10
+                                  4/10
                                   ----
-lib/readline/bind.c
-       - rl_parse_and_bind: if a `bare' keybinding is supplied without any
-         terminating `:' or whitespace separating it from the command to be
-         bound, signal an error
+configure.ac,cross-build/qnx.cache
+       - qnx: add a configure cache file for cross-building, treat qnx 7 like
+         qnx 6 in terms of cpp options. Fix from Brian Carnes
+         <bcarnes@google.com>
 
-                                  1/11
-                                  ----
-subst.c
-       - process_substitute: when compiled without job control (JOB_CONTROL not
-         defined), make sure we call stop_making_children like we do in the job
-         control code branch, so already_making_children is reset to 0.  This
-         is what command substitution does.  Fixes bug reported by Alastair
-         Hughes <hobbitalastair@yandex.com>
+aclocal.m4
+       - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin
+         independently of /dev/fd or /proc/self/fd. Suggested for QNX by
+         Brian Carnes <bcarnes@google.com>
 
-                                  1/12
-                                  ----
-execute_cmd.c
-       - execute_in_subshell: if a user subshell (`(command)') or other shell
-         compound command has an input pipe, note for later by setting
-         stdin_redir.  This will inhibit the implicit redirection of standard
-         input from /dev/null for async commands executed as part of this
-         subshell.  Fixes bug reported by Martin D Kealey <martin@kurahaupo.gen.nz>
-       - execute_simple_command: if the shell forks to execute this command
-         because it has an input pipe, set stdin_redir to inhibit later redirection
-         from /dev/null for async commands
 
-                                  1/13
+                                  4/11
                                   ----
-execute_cmd.c
-       - HASH_BANG_BUFSIZE: use #define for size of buffer used in
-         READ_SAMPLE_BUF instead of straight constant 80
-       - HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in
-         exec header.  Reported by Ludovic Courtès <ludo@gnu.org>
+lib/glob/glob.c
+       - glob_testdir: return -2 if DIR is a symlink, to differentiate it from
+         any other kind of non-directory file
+       - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over
+         symlinks to directories, since we will pick up the real directory
+         later. Fixes incompatibility reported by Murukesh Mohanan
+         <murukesh.mohanan@gmail.com>
 
-configure.ac
-       - remove support for purify and purecoverage
-       - change release level to `rc1'
+bashline.c
+       - bash_execute_unix_command: changes to make READLINE_POINT apply to
+         characters instead of bytes when in a multibyte locale. Report and
+         fix from Koichi Murase <myoga.murase@gmail.com>
 
-                                  1/15
+                                  4/12
                                   ----
-builtins/enable.def
-       - dyn_load_builtin: fix missing argument to builtin_error if load function
-         returns an error.  Fix from Aharon Robbins <arnold@skeeve.com>
+builtins/evalstring.c
+       - parse_and_execute_cleanup: now takes an argument which is the value
+         of running_trap at some point before parse_and_execute was called;
+         changed callers in sig.c, builtins/evalfile.c
 
-                                  1/18
-                                  ----
-builtins/history.def
-       - histtime: display a better error message for invalid timestamps; use
-         existing `??' string for empty/missing timestamps or invalid history
-         entries.  Suggestion from Reuben Thomas <rrt@sc3d.org>
+builtins/common.h
+       - parse_and_execute_cleanup: changed prototype
 
-                                  1/21
+                                  4/13
                                   ----
-lib/readline/text.c
-       - rl_insert: when trying to optimize typeahead, make sure to reset the
-         key sequence and key sequence length when we read a character that is
-         not bound to self-insert.  Bug report from Geir Hauge
-         <geir.hauge@gmail.com>
+builtins/evalstring.c
+       - parse_and_execute_cleanup: if the argument holding the previous state
+         of running_trap is the same value as the current running_trap state,
+         don't call run_trap_cleanup: assume that there is a caller who will
+         take care of the cleanup after this returns. Fixes recursive trap
+         call on "eval return" reported by Martijn Dekker <martijn@inlv.org>
 
-                                  1/25
-                                  ----
-doc/{bash.1,bashref.texi}
-       - word splitting: add example showing how -d'' is equivalent to -d
-         after word splitting and null argument removal
+parse.y
+       - read_a_line: if remove_quoted_newline is non-zero, indicating the
+         here-document delimiter is unquoted, we will be running the contents
+         of the here-document through word expansion and need to quote CTLESC
+         and CTLNUL in the input. Fixes bug with ^A in here document reported
+         by Jorge Alberto Baca Garcia <bacagarcia@me.com>
 
-                                  1/27
+                                  4/18
                                   ----
-doc/{bash.1,bashref.texi}
-       - read: modify description to make it more clear that the line is split
-         using the same rules as word splitting, and use `delimiters' instead
-         of `separators', which people read the wrong way
+pathexp.c
+       - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles
+         both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug
+         reported by Martijn Dekker <martijn@inlv.org>
 
-                                   2/2
-                                   ---
-variables.c
-       - initialize_shell_variables: allow FUNCNEST to set funcnest_max when
-         imported from the environment.  Inspired by
-         https://bugzilla.redhat.com/show_bug.cgi?id=1274553
+                                  4/19
+                                  ----
+execute_cmd.c
+       - execute_command_internal: before executing any command in the current
+         shell, and before copying any existing FIFO list, call
+         reap_procsubs to unlink or close any process substitution pipes
+         associated with processes that have exited. Fixes hang in test suite
+         when trying to open a FIFO with no process having it open for
+         reading
 
-                                  2/11
+                                  4/26
                                   ----
-bashhist.c
-       - bash_history_inhibit_expansion: function should be compiled in only if
-         BANG_HISTORY is defined.  Report from isabella parakiss
-         <izaberina@gmail.com>
+parse.y
+       - read_token_word: if returning REDIR_WORD for a {id}>foo construct,
+         for example, make sure to assign the_word to yylval.word before
+         returning, in case a recursive call to the parser overwrites it
+         (e.g., when evaluating array indexes). From a message to
+         austin-group-l from Stephane Chazelas <stephane.chazelas@gmail.com>
 
-[bash-4.4-rc1 frozen]
+lib/glob/sm_loop.c
+       - BRACKMATCH: if we have an invalid character class in an otherwise
+         well-formed bracket expression, don't try to match each character
+         of the (invalid) class individually; just skip over the class and
+         move on.  From a message on the austin-group list from
+         Stephane Chazelas <stephane.chazelas@gmail.com>
 
-                                  2/15
+                                  4/27
                                   ----
-lib/readline/text.c
-       - rl_refresh_line: call rl_redraw_prompt_last_line instead of
-         rl_forced_update_display to avoid redrawing all lines of a multiline
-         prompt (overwriting the last line of the multiline prompt in the
-         process).  Report from Hugh Davenport <hugh@davenport.net.nz>
+variables.c
+       - push_exported_var,push_func_var,push_temp_var: make sure to set the
+         context correctly in the variable we bind in the previous (non-temp)
+         scope. Report from Martijn Dekker <martijn@inlv.org>
 
-                                  2/18
-                                  ----
-subst.c
-       - parameter_brace_expand: when processing ${!name[@]}, make sure to
-         free `name' before returning the list of keys to avoid a memory leak.
-         Fixes bug reported by Emilio PastorMira <Emilio.PastorMira@utimaco.com>
+pathexp.c
+       - unquoted_glob_pattern_p: a pattern that contains a backslash can
+         have it removed by the matching engine (since backslash is special
+         in pattern matching), so if the pattern contains a backslash, and
+         does not end in a backslash, we need to return true. Fixes bug
+         reported by Robert Elz <kre@bmunnari.OZ.AU>
 
-                                  2/19
-                                  ----
-trap.c
-       - free_trap_strings: when freeing the `special' traps (NSIG to BASH_NSIG),
-         check whether or not the `signal' is trapped, as it would be if the
-         subshell inherited it (errtrace) and don't free the trap string in that
-         case.  Fixes bug reported by Jan Klötzke <jan@kloetzke.net>
+lib/glob/glob_loop.c
+       - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash
+         that doesn't end the pattern
 
-                                  2/21
-                                  ----
-lib/sh/netconn.c
-       - isnetconn: return false if getpeername fails with errno == EBADF.
-         Bug and fix from Andrew Gregory <andrew.gregory.8@gmail.com>
+lib/sh/timeval.c
+       - print_timeval: use locale_decpoint() instead of fixed `.' to print
+         decimal point. Bug report in austin-group email from Joerg Schilling
+         <Joerg.Schilling@fokus.fraunhofer.de>
 
-builtins/shopt.def
-       - parse_bashopts: when reading BASHOPTS from the environment, make
-         sure to call any set functions associated with a variable, instead
-         of just setting the value to 1.  Report and fix from
-         Vehlow, Jörg <Joerg.Vehlow@kratzer-automation.com>
+lib/sh/clock.c
+       - print_clock_t: use locale_depoint() in the same way as print_timeval
 
-                                  2/22
+                                  4/29
                                   ----
-lib/readline/complete.c
-       - rl_display_match_list: don't bother calling strrchr to check the
-         return value from printable_part() if rl_filename_completion_desired
-         is non-zero, since in that case printable_part just returns its
-         argument.  Fixes git completion issue reported by
-         Dilyan Palauzov <dilyan.palauzov@aegee.org>
-       - _rl_colored_completion_prefix: default is now 0, testing is complete
+subst.c
+       - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC
+         to the flags passed to quote_string_for_globbing. Same issue as the
+         one with `case' fixed on 4/7, report from Martijn Dekker
+         <martijn@inlv.org>
 
-                                  2/23
+                                  4/30
                                   ----
+redir.c
+       - do_redirection_internal: r_close_this: if the file descriptor is
+         already closed before the shell is asked to close it, make sure to
+         add an undo list redirect to make sure it stays closed. Report from
+         Martijn Dekker <martijn@inlv.org>
+
+                                   5/2
+                                   ---
 variables.c
-       - assign_hashcmd: if the shell is restricted, reject attempts to add
-         pathnames containing slashes to the hash table, as the hash builtin
-         does.  Fixes bug reported to savannah by Sylvain Beucler as
-         https://savannah.gnu.org/support/?108969
+       - push_posix_temp_var: new function, takes the SHELL_VAR * passed as
+         an argument and uses the name and value to create a global variable
+       - merge_temporary_env: if posixly_correct is set, call
+         push_posix_temp_var to create global variables, otherwise call
+         push_temp_var to preserve the old behavior. Right now, it's only
+         called when in posix mode, but that might change. This undoes the
+         change from 4/27 when in posix mode
 
-                                  2/24
-                                  ----
-subst.c
-       - NEED_FPURGE_DECL: need it before externs.h included, since fpurge
-         is now used in this file.  Fixes warning reported by Mike
-         Frysinger <vapier@gentoo.org>
-       - skip_double_quoted: add missing argument to declaration
+                                   5/3
+                                   ---
+sig.c
+       - struct that holds the terminating signal information has a new
+         field: whether that signal is expected to cause a core dump
+       - termsig_handler: if the call to kill(2) doesn't kill the process,
+         we have a problem. If our pid is not 1, we just exit with status
+         128+sig (fake the sig exit status). If the pid is 1, we assume
+         we're in a Linux pid namespace and aren't allowed to send a signal
+         to ourselves. If we need to generate a core dump, we try to get
+         the kernel to SIGSEGV us by dereferencing location 0. If not, we
+         just exit with 128+sig. From a report and patch from Andrei Vagin
+         <avagin@virtuozzo.com>
 
-parse.y
-       - shell_getc: in call to internal_warning, use %lu to print an argument
-         cast explicitly to unsigned long.  Fixes warning reported by Mike
-         Frysinger <vapier@gentoo.org>
+                                   5/4
+                                   ---
+bashline.c
+       - bash_execute_unix_command: make sure that parse_and_execute is called
+         with newly-allocated memory to avoid prematurely freeing the
+         command. Report and fix from Koichi Murase <myoga.murase@gmail.com>
 
-                                  2/27
-                                  ----
-parse.y
-       - decode_prompt_string: quote result of \s expansion in case shell has
-         been invoked with a pathname like '$(id)'.  Inspired by report from
-         Travis Garrell <travis.garrell@oracle.com>
-       - decode_prompt_string: quote result of \h and \H expansions in the
-         (unlikely) case that the hostname has been changed to something
-         malicious including a command substitution.  From report from
-         Travis Garrell <travis.garrell@oracle.com>
-
-builtins/getopts.def
-       - getopts_unbind_variable: new static function, just calls unbind_variable
-         for now.  Placeholder for any future work to do something special if
-         OPTARG is readonly.  Based on discussion started by Robert Elz
-         <kre@munnari.oz.au>
+                                   5/7
+                                   ---
+builtins/shopt.def
+       - syslog_history: a shell option to control whether history is logged
+         to syslog; can be modified at runtime. Original patch from
+         Siteshwar Vashisht <svashisht@redhat.com>
 
-lib/readline/vi_mode.c
-       - rl_vi_unix_word_rubout: new function, implements ^W as Posix specifies
-         it for vi mode, using whitespace and punctuation characters as word
-         boundaries. Prompted by question from Carlos Pita
-         <carolosjosepita@gmail.com>
+config-top.h
+       - SYSLOG_SHOPT: new configurable option, determines whether there is a
+         shell option to control syslogging history lines at runtime and sets
+         the default value of the option
 
-lib/readline/vi_keymap.c
-       - bind rl_vi_unix_word_rubout to ^W by default in both insert and
-         command mode
+bashline.c
+       - syslog_history: new variable to control whether history lines are
+         sent to syslog; default value is the value of SYSLOG_SHOPT (or 1
+         if that's not defined)
+       - bash_add_history: send history lines to syslog if syslog_history is
+         non-zero
 
-lib/readline/rltty.c
-       - _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character
-         to rl_vi_unix_word_rubout
+                                  5/10
+                                  ----
 
-lib/readline/funmap.c
-       - vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout
+variables.c
+       - push_var_context: if we are in Posix mode and manipulating the
+         temporary environment (temporary_env), implement behavior specified
+         in Posix interp 1009 and make sure that temporary assignments
+         preceding function calls modify the current environment *before*
+         the function is executed.
 
-lib/readline/readline.h
-       - rl_vi_unix_word_rubout: new extern declaration
+[bash-5.0-alpha frozen]
 
-                                  2/28
+                                  5/12
                                   ----
-doc/bash.1
-       - document readline blink-matching-paren variable
-       - document readline completion-display-width variable
-       - document readline completion-map-case variable
-       - note that the default value of history-size depends on the value of
-         the HISTSIZE variable.  All from a message from Branden Robinson
-         <g.branden.robinson@gmail.com>
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
-       - convert-meta: modify the description to note that readline will turn
-         the default to off if the locale contains eight-bit characters
-       - input-meta: modify the description to note that readline will turn
-         the default to on if the locale contains eight-bit characters
-       - output-meta: modify the description to note that readline will turn
-         the default to on if the locale contains eight-bit characters.  From
-         a message from Branden Robinson <g.branden.robinson@gmail.com>
-
-                                   3/6
-                                   ---
-examples/loadables/Makefile.in
-       - install-dev: make installdirs a prerequisite; don't rely on the
-         install-supported target to create it first.  Bug with parallel
-         install (`make -j 4 install') reported by Chris Staub
-         <cstaub67@gmail.com>
+execute_cmd.c
+       - execute_in_subshell: subshells should set loop_level == 0, since
+         they are no longer "enclosed" by the loop, according to posix.
+         Report from Aeron.E. Wang <aeron.e.wang@gmail.com>
 
-                                  3/12
+                                  5/24
                                   ----
-lib/readline/display.c:
-       - rl_clear_visible_line: clear all screen lines occupied by the current
-         visible readline line.  Inspired by report from Lauri Ranta
-         <lauri.ranta@gmail.com>
+Makefile.in
+       - pkgconfigdir: don't fail installing bash.pc if this directory doesn't
+         exist or isn't writable -- there's no error in failing to install
+         something nothing will use
+       - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist
 
-lib/readline/readline.h
-       - rl_clear_visible_line: extern declaration
+lib/sh/shmbchar.c
+       - utf8_mblen: replace with version from gnulib
+       - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid
+         multibyte sequences in the same way as mbstrlen
 
-lib/readline/doc/rltech.texi
-       - rl_clear_visible_line: add documentation
+lib/readline/mbutil.c
+       - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib
 
-                                  3/19
-                                  ----
-findcmd.c
-       - file_status: add inadvertently-dropped test for EXECIGNORE to the
-         `other' bits check.  The check was in the original patch
-       - search_for_command: if the file should not be considered executable
-         because it's in the EXECIGNORE blacklist, don't set file_to_lose_on,
-         since the attempt to execute the last-ditch path will circumvent the
-         EXECIGNORE setting.  Fixes bug reported by Dennis Williamson
-         <dennistwilliamson@gmail.com>
+include/shmbutil.h
+       - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in
+         UTF-8 locales (should not be called with an empty string, but to
+         be safe)
 
-                                  3/28
+                                  5/25
                                   ----
-lib/readline/display.c
-       - rl_redisplay: when computing where the cursor should go (and the
-         physical cursor position) after displaying the prompt, don't adjust
-         the cursor position by wadjust if there are no multibyte chars in
-         the prompt.  lpos is already a physical cursor position; _rl_screenwidth
-         is the physical screen width, and we're not calling _rl_col_width and
-         don't need to take invisible characters into account again.  Fixes
-         bug reported by Andreas Schwab <schwab@linux-m68k.org>
+lib/sh/utf8.c
+       - new file, utf-8-specific functions collected from other files
 
-                                   4/1
-                                   ---
-parse.y
-       - parse_comsub: when we read `esac' followed by a break character,
-         turn on the LEX_RESWDOK flag because we can now read another case
-         statement or other compound command.  Fixes bug reported by
-         Christian Franke <Christian.Franke@t-online.de>, original version
-         of patch from Piotr Grzybowski <narsil.pl@gmail.com>
-       - parse_comsub: leave the reserved-word-ok flag set for four-char
-         reserved words (then/else/elif/done/time) that can be followed by
-         reserved words; set lex_rwlen to 0 so we know to start reading a
-         new one
+externs.h
+       - extern declarations moved around for utf8.c
 
-                                   4/7
-                                   ---
-builtins/{alias,complete,jobs}.def
-       - {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option
-         prints help longdoc instead of builtin_usage()
+include/shmbutil.h
+       - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a
+         UTF-8 locale, don't bother with a call to mbrlen if the current
+         character cannot start a multibyte character
 
-                                   4/8
-                                   ---
-arrayfunc.c
-       - assign_array_var_from_word_list: use bind_array_var_internal instead
-         of inline code, so value conversions happen on assignment (case
-         modification, arithmetic evaluation, etc).  Fixes bug reported by
-         Geir Hauge <geir.hauge@gmail.com>
+variables.c
+       - push_var_context: only merge the temporary environment in posix mode
+         if we are executing a shell function (flags & VC_FUNCENV). Report
+         from Martijn Dekker <martijn@inlv.org>
 
-                                   4/9
-                                   ---
-shell.c
-       - main: change the logic that determines whether or not bash is running
-         under an emacs terminal emulator so it works with future versions of
-         emacs, which will change to use only $INSIDE_EMACS.  Report and fix
-         from Paul Eggert <eggert@cs.ucla.edu>
+lib/readline/mbutil.c
+       - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and
+         the character cannot start a multibyte sequence
 
-lib/glob/sm_loop.c
-       - EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't
-         match, we should consume the extglob pattern and go on to attempt
-         to match the rest of the pattern against the string.  Fixes bug
-         reported by Isabella Parakiss <izaberina@gmail.com>
-       - GMATCH: in case `*', don't short-circuit and match anything if the
-         * is the last character in the pattern until after we check the
-         special cases for matching a `.'.  Fixes bugs reported back on 3/23
-         by Isabella Parakiss <izaberina@gmail.com>
+builtins/read.def
+       - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not
+         in a utf-8 locale or, if we are, the character we just read indicates
+         the start of a multibyte sequence
 
-                                  4/13
+subst.c
+       - string_extract_verbatim: don't call MBRLEN if we're in a utf-8
+         locale and the current character can't start a multibyte sequence
+       - setifs: don't call MBRLEN if we're in a utf-8 locale and the first
+         character of $IFS can't start a multibyte sequence
+
+lib/readline/kill.c
+       - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text
+         returns the right number of characters inserted to be consistent
+         with other functions. Returns 1 otherwise. Report and fix from
+         Gabe Krabbe <gabe@rtfs.de> back in March, 2018
+
+lib/readline/readline.c
+       - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY]
+         to see if we shadowed a key that should now be tried
+
+                                  5/27
                                   ----
-bashhist.c
-       - hc_erasedups: fix memory leak by freeing history entry returned by
-         remove_history.  Bug and fix from Seiichi Ishitsuka
-         <ishitsuka.sc@ncos.nec.co.jp>
+variables.c
+       - assign_aliasvar: perform same validity check on subscript assignment
+         as alias builtin performs on name argument. Bug report from
+         Mike Jonkmans <bashbug@jonkmans.nl>
 
-                                  4/19
+                                  5/29
                                   ----
-config-top.h
-       - CD_COMPLAINS: now settable in config-top.h; enables (fatal) error
-         messages if cd is given multiple directory arguments
+builtins/setattr.def
+       - set_var_attribute: we should not propagate a variable assignment
+         preceding a builtin back to the calling environment unless the
+         shell is in posix mode. Since previous versions of the shell do
+         this, setting the shell compatibility level to 44 or less will
+         continue the propagation behavior
+
+                                   6/1
+                                   ---
+lib/readline/histexpand.c
+       - history_tokenize_word: as part of teaching history tokenization more
+         and more about shell syntax, allow command and process subsitution
+         and extended globbing patterns to appear within a word being
+         tokenized and not just at the beginning. Fixes bug reported back in
+         2/2017 by ecki@tofex.de
+
+bashhist.c
+       - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set
+         the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden
+         in config-top.h
 
-                                  4/20
-                                  ----
-execute_cmd.c
-       - coproc_setvars: refuse to create variables with names that are not
-         valid identifiers.  Suggestion from Piotr Grzybowski
-         <narsil.pl@gmail.com>
+                                   6/4
+                                   ---
+configure.ac
+       - make sure we link against an external readline library that's at
+         least version 8
 
-rltty.c
-       - rl_tty_set_echoing: interface to set _rl_echoing_p, returning old
-         value.  Inspired by gdb use of _rl_echoing_p when switching
-         between terminal and curses modes described by Doug Evans
-         <dje@google.com>
+                                   6/8
+                                   ---
+pcomplete.h
+       - INITIALWORD: internal compspec name for programmable completion on
+         the initial (usually the command) word
 
 bashline.c
-       - bash_execute_unix_command: use rl_clear_visible_line instead of
-         erasing current line on the screen, inspired by same report from
-         3/12.  Still tentative change
+       - attempt_shell_completion: if we are in a command position and the
+         user has defined a compspec for INITIALWORD, use programmable
+         completion to complete command words. Original patch from
+         Luca Boccassi <bluca@debian.org>
 
-configure.ac
-       - update release status to rc2, may skip this and go directly to
-         release
-
-                                  4/21
-                                  ----
-arrayfunc.c
-       - convert_var_to_array: make sure that the newly-converted array
-         variable is not marked as being an associative array.  Fixes bug
-         reported by Grisha Levit <grishalevit@gmail.com>
-       - convert_var_to_assoc: make sure that the newly-converted associative
-         array variable is not marked as being an indexed array
+lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1
+       - make it clearer that -D takes precedence over -E when supplied as
+         options to `complete', not when they are applied during completion
 
-                                  4/22
-                                  ----
-builtins/evalstring.c
-       - should_suppress_fork: don't suppress the fork if there are any traps
-         set, since that requires that we hang around to react to a signal or
-         collect the command's exit status and run something.  Fixes bug
-         reported by Brian Vandenberg <phantall@gmail.com>
+builtins/complete.def
+       - complete_builtin,compgen_builtin: add support for -I option
+       - print_one_completion,print_compopts: display -I when appropriate
 
-histexpand.c
-       - history_tokenize_word: handle >| as a single token.  Fix from
-         Piotr Grzybowski <narsil.pl@gmail.com> from a report from
-         idallen@idallen-fibe.dyndns.org
+lib/readline/doc/rluser.texi,doc/bash.1
+       - complete,compgen: document new -I option and its effect
 
-                                  4/24
+                                  6/10
                                   ----
-execute_cmd.
-       - coproc_setvars: don't overwrite readonly variables used as coproc
-         names.  From a report from Grisha Levit <grishalevit@gmail.com>
+lib/readline/histfile.c
+       - read_history_range: don't apply the heuristic and try to append a
+         history line to an existing history entry if we don't have any
+         history entries. Bug and fix from Edward Huff <ejhuff@gmail.com>
 
-histexpand.c
-       - history_tokenize_word: handle strings of digits before redirections
-         beginning with `<' or `>' as part of the redirection word; handle
-         strings of digits following `<&' or `>&' as part of the redirection
-         word.  Inspired by patch from  Piotr Grzybowski <narsil.pl@gmail.com>
-         from a report from idallen@idallen-fibe.dyndns.org
+                                  6/12
+                                  ----
+bashline.c
+       - attempt_shell_completion: don't all the programmable completion for
+         INITIALWORD if programmable completion is disabled
+       - attempt_shell_completion: make sure in_command_position remains set
+         for an empty command word on an otherwise blank line, making the
+         presence of assignment statements optional.  Report from
+         Luca Boccassi <bluca@debian.org>
 
-lib/readline/complete.c
-       - rl_display_match_list: if the common prefix is longer than any of
-         the possible matches, set the length of the common prefix to 0 so
-         the entire match gets printed for each match
-       - rl_display_match_list: make sure to output at least one space
-         between each displayed match, even if the displayed length is
-         longer than our computed max
-       - fnprint: if the length of the prefix (prefix_bytes) is greater than
-         or equal to the length of the string to be printed (print_len), make
-         sure to set the prefix length to 0 so the entire string is printed.
-         From a report from Grisha Levit <grishalevit@gmail.com>
+                                  6/20
+                                  ----
+lib/malloc/malloc.c
+       - morecore,internal_malloc,internal_free: requests for more than
+         128K bytes (defined as MMAP_THRESHOLD and saved in the new
+         malloc_mmap_threshold variable) are now satisfied via mmap and
+         freed via munmap. We only use mmap if we have mmap and MAP_ANON
+         (or MAP_ANONYMOUS). These blocks are not available for splitting
+         or coalescing, so every request for 128K bytes or smaller is
+         satisfied via sbrk(). We don't use mremap for realloc yet, but
+         we could in the future
+
+lib/malloc/mstats.h
+       - malloc_stats: the malloc stats now include the number of calls to
+         mmap and the total number of bytes requested via mmap. The number
+         of calls to munmap is captured in each bucket's lesscore count
+
+lib/malloc/stats.c
+       - print_malloc_stats: now prints an indication of where the change from
+         sbrk to mmap takes place, and prints number of mmap calls and total
+         number of bytes allocated using mmap
 
-                                  4/25
+                                  6/22
                                   ----
-subst.c
-       - command_substitute: update the conditions under which we give the
-         terminal to pipeline_pgrp with give_terminal_to to the same ones
-         where wait_for uses to decide whether to give the terminal back to
-         shell_pgrp.  This code exists to undo the work wait_for does; it
-         has to give the terminal back to pipeline_pgrp only under those
-         conditions when wait_for gives it back to the shell pgrp.  Fix for
-         bug reported by Paulo Bardes <bardes0022@gmail.com>
+variables.c
+       - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and
+         BASH_ARGC, for backwards compatibility: if a script makes a
+         reference to either variable at the top level (not in a shell
+         function) without enabling debugging mode and not having initialized
+         the variable previously (using a simple semaphore), create the
+         variables
 
-                                  4/26
+                                  6/25
                                   ----
+configure.ac
+       - opt_bash_malloc: bash malloc no longer disabled for systems that
+         require eight-bit alignment; the bash malloc has had this for a
+         long time
+
+                                   7/4
+                                   ---
 bashline.c
-       - bash_filename_stat_hook: temporarily disable the `nounset' shell
-         option around calls to expand_prompt_string so we don't get error
-         messages during completion.  Fixes issue reported by Eric Pruitt
-         <eric.pruitt@gmail.com>
+       - pre_process_line: if command-oriented history is enabled, and the
+         line being expanded is the second or later in a multi-line command,
+         and we know the command is being saved as the current history entry,
+         decrease history_length before calling history_expand so references
+         like !! refer to the previous history entry as usual
 
-                                  4/27
-                                  ----
-doc/{bash.1,bashref.texi}
-       - extdebug: clarify that having this option enabled at shell startup
-         acts identically to --debugger.  From a report from Grisha Levit
-         <grishalevit@gmail.com>
+lib/readline/histexpand.c
+       - history_quoting_state: new variable, can be set by calling
+         application before calling history_expand to note that the string
+         being expanded is part of a quoted string. Can be set to a single
+         quote, a double quote, or 0 (no quoting)
+       - history_expand: look at history_quoting_state and honor the
+         single-quote setting by not expanding any initial portion of the
+         line before the closing single quote. This allows history expansions
+         to be performed on a line containing a closing single quote if they
+         appear after the single quote
 
-jobs.[ch]
-       - wait_for_single_pid: now takes additional `int flags' argument
+lib/readline/history.h
+       - history_quoting_state: extern declaration
 
-{jobs,execute_cmd}.c,builtins/wait.def
-       - wait_for_single_pid: changed callers to add extra argument
+bashhist.c
+       - bash_history_inhibit_expansion: if history_quoting_state indicates
+         that this string is single-quoted, skip over the single-quoted
+         portion and determine whether or not the portion after the
+         quoted string needs to be inhibited from history expansion
 
-jobs.c
-       - wait_for_single_pid: if (flags & 1) == 0, don't print the error
-         message if PID isn't found; changed execute_pipeline call when
-         lastpipe is set
+parse.y
+       - shell_getc: set history_quoting_state based on the contents of the
+         current delimiter before calling pre_process_line
 
-                                  4/28
-                                  ----
-general.c
-       - bash_tilde_expand: try not setting interrupt_immediately or
-         terminate_immediately; see what happens with networked password
-         databases
+                                   7/6
+                                   ---
+lib/readline/doc/hsuser.texi
+       - describe the default behavior of backslash and single and double
+         quotes
 
-                                  4/29
-                                  ----
-subst.c
-       - parameter_brace_expand, parameter_brace_expand_rhs: now take an
-         additional `pflags' argument from its caller so we can pass
-         state
-       - parameter_brace_expand_rhs: if expand_string_for_rhs returns a
-         quoted null, but l_hasdollat is set to 1, meaning we saw a quoted
-         "$@" of some form, we need to turn off special handling of "$@"
-         so something like "${@-${@-$@}}" expands to an empty string like
-         Posix says it should.  Fixes bug reported by Grisha Levit
-         <grishalevit@gmail.com>
+lib/readline/doc/hstech.texi
+       - history_quoting_state: describe effect of setting this variable
+       - history_quotes_inihibit_expansion: expand the description to include
+         the default quoting behavior that setting this variable enables
 
-                                   5/1
+                                   7/9
                                    ---
-variables.c
-       - bind_variable_internal: if we have a nameref variable with a valid
-         array reference that is invalid for assignment (e.g., a[*]), and
-         assign_array_element returns NULL, short-circuit and return NULL.
-         Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
+support/man2html.c
+       - unescape: use memmove instead of strcpy to handle overlapping strings
+         Report and fix from Bernhard M. Wiedemann <bwiedemann@suse.de>
 
-general.[ch]
-       - valid_nameref_value: new function, return 1 if passed argument is
-         a valid variable name argument for a nameref variable: a valid
-         identifier, a valid array reference, or a valid positional
-         parameter.  Second argument indicates whether the value is to be
-         used for an assignment; in this case, return an error if the name
-         consists of all digits
+lib/sh/getenv.c
+       - getenv: check that environ is non-NULL before looking through it.
+         Report and fix from Keeley Hoek <keeley@hoek.io>
+
+                                  7/12
+                                  ----
+braces.c
+       - mkseq: use better integer overflow handling for systems with 32-bit
+         ints and 64-bit intmax_ts. Bug reported by Simon Wörner
+         <mail@simon-woerner.de> as the result of fuzzing
 
 builtins/declare.def
-       - declare_internal: disallow values for nameref variables that don't
-         pass the tests in valid_nameref_value.  Part of fix for bug
-         reported by Grisha Levit <grishalevit@gmail.com>
+       - declare_internal: make sure bind_variable returns non-NULL when
+         setting attributes for a variable named as an argument to declare
+         that also appears in the temporary environment (and is a nameref).
+         Bug reported by Simon Wörner <mail@simon-woerner.de as the
+         result of fuzzing
 
 variables.c
-       - bind_variable_internal: if trying to assign a value to a nameref
-         variable, throw an error if valid_nameref_value fails (with a second
-         argument of 1).  More fixes for bug reported by Grisha Levit
-         <grishalevit@gmail.com>
+       - bind_variable_internal: if we're assigning through a nameref, don't
+         create a variable with an invalid name under any circumstances
 
-                                   5/2
-                                   ---
-builtins/declare.def
-       - declare_internal: don't allow nameref attribute to be applied to an
-         existing readonly variable; it can be used to circumvent readonly
-         value.  Fix for bug reported by Grisha Levit <grishalevit@gmail.com>
+builtins/common.c
+       - get_job_spec: make sure to return NO_JOB if atoi() returns < 0 due
+         to integer overflow.
+         Bug reported by Simon Wörner <mail@simon-woerner.de as the
+         result of fuzzing
 
-variables.[ch]
-       - find_variable_last_nameref, find_global_variable_last_nameref: takes
-         a new flags argument.  If flags is non-zero, and we find a nameref
-         variable that is unset (has no value), return that variable instead
-         of NULL.
+                                  7/13
+                                  ----
+execute_cmd.c
+       - execute_in_subshell: don't call set_sigint_handler if the subshell
+         is asynchronous, since it undoes the signal handler installed by
+         setup_async_signals. Fixes bug reported by Daniel Mills
+         <danielmills1@gmail.com>
 
-{variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def
-       - find_variable_last_nameref, find_global_variable_last_nameref: change
-         callers to add flags argument (initially 0)
+parse.y,externs.h
+       - reset_readahead_token: new convenience function for the rest of
+         the shell, resets token_to_read if it's a newline (as it will be
+         after reset_parser is called)
 
-                                   5/3
-                                   ---
-variables.c
-       - bind_variable_internal: make sure we run the value of a namref
-         variable through valid_nameref_value before doing the assignment.
-         This can go away if we stop allowing namerefs to refer to positional
-         parameters
+eval.c
+       - reader_loop: if we're just going to execute one command, make sure
+         the read-ahead token isn't set to something that will result in a
+         NULL command (by calling reset_readahead_token), since the code
+         will take that as the one command and set EOF_Reached
 
-execute_cmd.c
-       - execute_select_command: if bind_variable returns NULL, handle it as
-         an error, as if attempting assignment to a readonly variable
-       - execute_for_command: use 1 as second argument to
-         find_variable_last_nameref, so it will return an invisible nameref
-         to assign for each variable in the list
-       - execute_for_command: if the current word in the list is an invalid
-         identifier and the loop variable is a nameref, handle it as an error,
-         as if attempting assignment to a readonly variable
+                                  7/15
+                                  ----
+doc/{bash.1,bashref.texi}
+       - indirect expansion: clarify that the expansion works on parameters,
+         not just variables (NAMEs). Suggested by konsolebox
+         <konsolebox@gmail.com>
+
+                                  7/16
+                                  ----
+doc/{bash.1,bashref.texi}
+       - INSIDE_EMACS: document its effect on line editing
+
+                                  7/17
+                                  ----
+lib/readline/{readline.c,rlprivate.h}
+       - _rl_eof_found: new variable, private to the readline library, that
+         indicates whether the current call to readline() will return NULL
+         because we read EOF
+
+lib/readline/rltty.c
+       - rl_deprep_terminal: if bracketed paste mode is active, the last
+         character of the string to disable it is \r (to avoid confusing
+         the terminal driver about where the cursor is). In this case,
+         output a newline before returning so subsequent text (like the
+         `exit' bash prints) doesn't overwrite the prompt. Bug from
+         https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936
 
-                                   5/4
-                                   ---
 variables.c
-       - bind_int_variable: add warning if assigning an int to a nameref
-         variable
-       - assign_in_env: if assigning a variable in the temporary environment
-         that is a namref, throw an error if trying to assign an invalid
-         value
-       - bind_variable_value: use valid_nameref_value instead of calls to
-         legal_identifier and valid_array_reference
+       - make_local_assoc_variable: add second argument like corresponding
+         local array function, to allow this function to return an existing
+         local array variable to the caller for the caller to handle
 
-execute_cmd.c
-       - coproc_setvars: if we have a nameref variable as the coproc name, but
-         it can't be assigned to for some reason, remove the nameref attribute
-         and  issue a warning that we are doing so
-       - coproc_setvars: don't allow assignment to a nameref variable with an
-         invalid variable name, using same code as find_or_make_array_variable
+variables.h
+       - make_local_assoc_variable: change function prototype to add second
+         arg
 
-general.c
-       - valid_nameref_value: disallow values consisting solely of digits,
-         like the positional parameters
+{subst.c,variables.c}
+       - make_local_assoc_variable: change callers
 
 builtins/declare.def
-       - declare_internal: don't call valid_nameref_value on the existing value
-         of a variable that's being converted to a nameref -- that value is
-         going to be thrown away and we've already checked the new value
-       - declare_internal: call bind_variable_value with the ASS_NAMEREF flag
-         if we're assigning to an existing nameref variable (for instance,
-         `declare -n x ; declare x=42')
+       - declare_internal: call make_local_assoc_variable with a non-zero
+         second arg to have it return an existing local array variable to be
+         flagged as an error. Fixes bug reported by Grisha Levit
+         <grishalevit@gmail.com>
+       - declare_internal: call make_local_array_variable with unconditional
+         second argument of 1 for the same reason as above
 
-                                   5/5
-                                   ---
+                                  7/18
+                                  ----
 variables.c
-       - make_local_variable: if we are being asked to create a local copy of
-         a nameref variable from a prior scope (checked by looking up
-         using find_variable_noref), use the nameref variable, not the variable
-         it references (which we find using find_variable).  Bug report from
-         Grisha Levit <grishalevit@gmail.com> ; fix by Piotr Grzybowski
-         <narsil.pl@gmail.com>
+       - bind_invalid_envvar: new function, takes invalid names from the
+         initial environment (names that are not valid shell identifiers) and
+         stores them in a separate hash table (invalid_env)
+       - maybe_make_export_env: make sure to add names from invalid_env to
+         the export env
+       - assign_in_env: for now, prevent variable names that aren't shell
+         identifiers from being added to the temporary environment. Addresses
+         issue raised by Grisha Levit <grishalevit@gmail.com>
 
-builtins/declare.def
-       - declare_internal: if asked to do the same thing as above (difference
-         is declare -n r=foo in previous case; declare -n r in this one),
-         don't follow reference var from a previous context.  Create a new
-         local variable (using make_local_variable) and inherit attributes
-         from previous scope's nameref as above
+test.c
+       - unary_test: rearrange code slightly to avoid a wasted variable lookup
+         if the argument to -v is a subscripted array reference
 
-                                   5/6
-                                   ---
-builtins/declare.def
-       - declare_internal: if we are assigning a value to an existing
-         invisible nameref variable, validate value early so we don't end up
-         removing the variable after the assignment fails
+                                  7/19
+                                  ----
+variables.c
+       - nameref_transform_name: if a name doesn't resolve to a shell variable,
+         this function will check whether it resolves to a nameref that
+         points to a variable that hasn't been created yet
 
-builtins/shopt.def
-       - toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists,
-         since we don't want to set it up before it gets read from the
-         environment. Keeping BASHOPTS read-only should keep users from
-         unsetting it.  Fix from Grisha Levit <grishalevit@gmail.com>
-       - shopt_set_debug_mode: make sure error_trace_mode reflects the setting
-         of extdebug.  This one is tentative.  Fix from Grisha Levit
-         <grishalevit@gmail.com>
-       - shopt_set_debug_mode: call set_shellopts after setting error_trace_mode
-         or function_trace_mode.  Fix from Grisha Levit <grishalevit@gmail.com>
+variables.h
+       - nameref_transform_name: extern declaration
 
-shell.c
-       - start_debugger: make sure that function_trace_mode and error_trace_mode
-         reflect the value of debugging_mode, so they are both disabled if we
-         disable debugging mode because we can't find the debugger start file.
-         Fix from Grisha Levit <grishalevit@gmail.com>
-       - start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are
-         reflected if we change or set them here.  Fix from Grisha Levit
+subst.c
+       - do_compound_assignment: make sure that we follow any nameref chain
+         if the name passed resolves to a nameref that points to a variable
+         that doesn't exist. Fixes issue raised by Grisha Levit
          <grishalevit@gmail.com>
 
-builtins/set.def
-       - reset_shell_options: add reset values for: posix, nolog, pipefail.
-         Fix from Grisha Levit <grishalevit@gmail.com>
-
-builtins/shopt.def
-       - reset_shopt_options: add reset values for: autocd, checkjobs,
-         complete_fullquote, dirspell, failglob, globstar, gnu_errfmt,
-         huponexit, inherit_errexit, interactive_comments, lastpipe,
-         no_empty_cmd_completion, progcomp.  Fix from Grisha Levit
-         <grishalevit@gmail.com>
-       - reset_shopt_options: make sure the following options have the right
-         defaults based on #defines: checkjobs, checkwinsize, direxpand,
-         extglob, globasciiranges.  Fix from Grisha Levit
+builtins/declare.def
+       - declare_internal: before calling any variant of make_local_variable,
+         make sure to perform any transformation of the name indicated by an
+         existing nameref. Fixes issue raised by Grisha Levit
          <grishalevit@gmail.com>
 
-flags.c
-       - reset_shell_flags: add missing flags, re-initialize history_expansion
-         based on STRICT_POSIX
+                                  7/20
+                                  ----
+builtins/declare.def
+       - declare_internal: if we are creating a global variable with -g, even
+         if we're not giving it a value, check for namerefs at the global
+         scope to avoid confusion with namerefs at the local (function) scope.
 
-                                   5/8
-                                   ---
-lib/readline/histexpand.c
-       - history_expand: if any expansion returns 1 from history_expand_internal,
-         indicating that :p was supplied, make it apply to the entire line
-         like tcsh and csh.  Fixes bug reported by Dean Stanton
-         <dstanton@tintri.com>
+subst.c
+       - expand_word_internal: if a double-quoted string expands to nothing,
+         make sure we note that for later by setting had_quoted_null, just
+         as we do for single-quoted empty strings
 
-variables.[ch]
-       - ifsname: move define to variables.h
+subst.[ch]
+       - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused),
+         means that we saw a possibly-discarded quoted null while expanding
+         this word
 
-execute_cmd.c
-       - execute_for_command: check whether or not the word in the for command
-         is IFS; call setifs every time the variable is assigned a value.
-         Fixes bug report from Grisha Levit <grishalevit@gmail.com>
+subst.c
+       - expand_word_internal: if expansion results in a non-empty word but
+         we saw a quoted null during expansion (had_quoted_null == 1), set
+         W_SAWQUOTED_NULL in the returned word
+       - expand_word_internal: if a recursive call to param_expand comes back
+         with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null
+         to note it
+       - parameter_brace_expand_rhs: if a recursive call to expand_word_internal
+         returns a non-quoted-null string (after an optional call to
+         string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the
+         caller
+       - word_list_split: if a word expands to nothing after expansion and
+         splitting, but we saw a quoted null during the expansion
+         (W_SAWQUOTEDNULL), return an empty word
 
-                                  5/16
+                                  7/25
                                   ----
-general.c
-       - valid_nameref_value: explicitly handle name == 0 and *name == 0 right
-         away to save calls to legal_identifier
 
-builtins/declare.def
-       - declare_internal: if trying to set nameref attribute on a variable
-         with a null value, flag as invalid assignment, just as if running
-         `declare -n r=""'.  Fixes bug report from Grisha Levit
+subst.c
+       - do_compound_assignment: if creating a local variable, make sure to
+         set `newname' to the name of the variable returned from find_variable,
+         since that follows namerefs. Fixes issue raised by Grisha Levit
          <grishalevit@gmail.com>
-       - declare_internal: when creating a variable with a temporary value
-         (""), use ASS_FORCE in the assignment flags to bypass name validity
-         checks on nameref variable names
 
+                                  7/29
+                                  ----
+subst.c
+       - get_var_and_type: if VALUE is NULL, check before calling dequote_string.
+         Report and fix from Grisha Levit <grishalevit@gmail.com>
+
+                                  7/30
+                                  ----
 variables.c
-       - bind_variable_internal: don't call valid_nameref_value if we're
-         forcing assignment with (flags & ASS_FORCE)
+       - make_local_{array,assoc}_variable: make sure we're not trying to
+         inherit a value from an incompatible array type. Fixes issue raised
+         by Grisha Levit <grishalevit@gmail.com>
+       - nameref_transform_name: if we're trying to resolve a nameref that
+         will be used to create a local variable, make sure the nameref is
+         at the same variable scope. Report from Grisha Levit
+         <grishalevit@gmail.com>
 
-builtins/read.def
-       - read_builtin: handle bind_variable returning NULL when setting REPLY.
-         Report and fix from Grisha Levit <grishalevit@gmail.com>
+                                   8/2
+                                   ---
+array.c
+       - array_subrange: change to use string_list_pos_params after creating a
+         WORD_LIST from the array slice, like assoc_subrange does
 
-builtins/setattr.def
-       - set_var_attribute: handle bind_variable returning NULL
+subst.c
+       - parameter_brace_substring: since assoc_subrange and array_subrange
+         both call string_list_pos_params now, treat the results the same as
+         the VT_POSPARAMS case (pos_params also calls string_list_pos_params).
+         Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported
+         by Ilkka Virta <itvirta@iki.fi>
 
-lib/sh/tmpfile.c
-       - sh_seedrand(): call srandom() to seed the random number generator
-       - sh_mktmpname, sh_mktmpfd: if we have random(), assume we have
-         srandom() and seed the random number generator. Still looking for
-         better value to see random number generator with
+                                   8/3
+                                   ---
+array.c
+       - array_patsub: rewrite to work in terms of a WORD_LIST * and call
+         string_list_pos_params on the result to be consistent with the
+         expansions of ${@/pat/rep} and ${*/pat/rep}
 
-variables.c
-       - check_unbind_variable: use internal_error instead of builtin_error
+assoc.c
+       - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call
+         string_list_pos_params on the result to be consistent with the
+         expansions of ${@/pat/rep} and ${*/pat/rep}
 
-{execute_cmd,variables}.c
-       - fix some places where bind_variable could return NULL and it was not
-         checked.  Fix from Piotr Grzybowski <narsil.pl@gmail.com>
+subst.c
+       - parameter_brace_patsub: change how return value of {array,assoc}_patsub
+         is treated to make it identical to pos_params_pat_subst, since they
+         all call string_list_pos_params now
+       - expand_string_for_pat: make sure we preserve the value of
+         expand_no_split_dollar_star instead of just unconditionally setting
+         it back to 0 in case it was 1 before this function was called
 
-                                  5/17
-                                  ----
-arrayfunc.c
-       - convert_var_to_{array,assoc}: make sure to turn off nameref attribute,
-         since namerefs can't be arrays
+                                   8/6
+                                   ---
+array.c
+       - array_modcase: rewrite to work in terms of a WORD_LIST * and call
+         string_list_pos_params on the result to be consistent with the
+         expansions of ${@,,} and ${*,,}
 
-execute_cmd.c
-       - coproc_setvars: if the coproc name names a nameref, resolve the
-         nameref and use it as the name of the coproc.  Suggested by Grisha
-         Levit <grishalevit@gmail.com>
+assoc.c
+       - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call
+         string_list_pos_params on the result to be consistent with the
+         expansions of ${@,,} and ${*,,}
 
 subst.c
-       - command_substitute: don't bother calling QUIT after calling
-         reset_signal_handlers in the child, kill the child with SIGINT in
-         case we just reset the signal handler to SIG_DFL and we should just
-         exit instead of throwing to top level.  Fixes bug reported by
-         Grisha Levit <grishalevit@gmail.com>
+       - parameter_brace_casemod: change how return value of {array,assoc}_modcase
+         is treated to make it identical to pos_params_modcase, since they
+         all call string_list_pos_params now
+
+                                   8/8
+                                   ---
+builtins/declare.def
+       - declare_internal: if we are making local variables, and not dealing
+         with the nameref attribute, make sure that any nameref variable we
+         followed when resolving the name given was at the same variable
+         context. If not, we just want to make or use a local variable with
+         the name passed; if so, we want to use the nameref value as the
+         variable name. Report from Grisha Levit <grishalevit@gmail.com>
+
+                                   8/9
+                                   ---
+configure.ac
+       - globasciiranges: RRI now on by default, must be turned off explicitly
+         at configure time or runtime with `shopt -u globasciiranges'
 
-                                  5/18
+                                  8/14
                                   ----
 variables.c
-       - find_variable_nameref_for_create: find a nameref variable whose value
-         doesn't resolve to an existing variable and see whether or not that
-         value is appropriate for a new variable to be created
-       - find_variable_nameref_for_assignment: find a nameref variable whose
-         value doesn't resolve to an existing variable and see whether or not
-         that value is appropriate for a new variable to be created.
-         Difference between _assignment and _create is that _assignment
-         allows the nameref value to be a subscripted array reference
+       - dispose_saved_dollar_vars: decrement stack pointer before looking
+         for saved positional parameters to dispose; stack pointer always
+         points to the first unused slot
 
-builtins/setattr.def
-       - set_var_attribute: if variable lookup doesn't return anything, check
-         for a nameref and make sure that any reference value is something we
-         should be working on here, using find_variable_nameref_for_create().
-         If it fails, error out and return, otherwise it's probably a reference
-         to a variable that hasn't been set yet, so let bind_variable take care
-         of that.  Report from Grisha Levit <grishalevit@gmail.com>
+                                  8/15
+                                  ----
+variables.c
+       - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has
+         an array for the first ten (dollar_vars) and a WORD_LIST * for the
+         remaining (rest_of_args). Fixes performance issue with function calls
+         and large numbers of positional parameters raised by
+         Bize Ma <binaryzebra@gmail.com>
+       - {save,restore,free,free_saved}_dollar_vars: new functions to manage
+         dollar_vars and dollar_arg_stack members. Need to keep these in sync
+         with whatever remember_args does
+       - push_dollar_vars: use save_dollar_vars, which just copies pointers,
+         and directly assign rest_of_args, without copying the words, to the
+         dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args
+         with the assumption that callers will call remember_args(args, 1)
+         immediately following
+       - pop_dollar_vars: free current positional parameters and restore old
+         ones from pointers saved in dollar_arg_stack, making sure to
+         invalidate any cached value for "$@"
+       - dispose_saved_dollar_vars: free saved pointers from current index
+         into dollar_arg_stack
 
-arrayfunc.c
-       - bind_array_variable: if find_shell_variable returns NULL, check for a
-         nameref using find_variable_nameref_for_create and create a new array
-         variable with the value if it returns a valid nameref variable.
-         Makes `unset var; declare -n ref=var ; ref[0]=foo' work right.
-         Report from Grisha Levit <grishalevit@gmail.com>
+doc/{bash.1,bashref.texi}
+       - POSIXLY_CORRECT: make sure to note that bash makes sure this variable
+         is set when posix mode is enabled
 
-                                  5/19
+                                  8/17
                                   ----
-variables.[ch]
-       - unbind_variable_noref: unset a variable NAME without following any
-         nameref chain.  If the first instance of the variable with that name
-         is a nameref, just unset that nameref variable.
+{jobs,nojobs}.c
+       - set_jobs_list_frozen: set jobs_list_frozen to a particular value.
+         Intended to save and restore the value around code sections instead
+         of unconditionally unfreezing it.
 
-builtins/getopts.def
-       - getopts_unbind_variable: if OPTARG is going to be unbound, use
-         unbind_variable_noref to unbind that name even if it is a nameref
-         variable.  Issue raised by Grisha Levit <grishalevit@gmail.com>
+jobs.h
+       - set_jobs_list_frozen: extern declaration
 
 execute_cmd.c
-       - coproc_unsetvars: use unbind_variable_noref in case someone sets the
-         coproc _PID variable as a nameref pointing to something read-only or
-         strange.  Issue raised by Grisha Levit <grishalevit@gmail.com>
+       - execute_pipeline: if lastpipe is enabled, save and restore the
+         value of jobs_list_frozen using freeze_jobs_list/set_jobs_list_frozen
+         to avoid problems with race conditions and nested pipelines
+         causing jobs to be removed from the jobs table. Fixes savannah issue
+         https://savannah.gnu.org/support/index.php?109541 reported by
+         Björn Kautler <vampire0>
 
-builtins/set.def
-       - set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and
-         "ignoreeof"
-       - set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT"
+                                  8/24
+                                  ----
+execute_cmd.c
+       - lastpipe_cleanup: call set_jobs_list_frozen instead of
+         unfreeze_jobs_list
+       - execute_pipeline: set up lastpipe_cleanup with old value of
+         jobs_list_frozen
 
-variables.c
-       - make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO"
+                                   9/3
+                                   ---
+builtins/printf.def
+       - getuintmax,getfloatmax: on a conversion error, return as much of the
+         value as we were able to convert instead of 0. Fixes bug reported
+         by Robert Elz <kre@bmunnari.OZ.AU>
 
-lib/sh/shmatch.c
-       - sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH"
+                                   9/4
+                                   ---
+lib/readline/text.c,lib/readline/rlprivate.h
+       - _rl_backward_char_internal: new function, guts of rl_backward_char
+         and rl_backward_byte, not currently used there
 
-bashline.c
-       - bash_execute_unix_command: use check_unbind_variable to unset
-         READLINE_LINE and READLINE_POINT
+lib/readline/vi_mode.c
+       - _rl_vi_advance_point: new function, move point forward by one
+         character, handling multibyte locales and characters and the end
+         of line semantics
+       - _rl_vi_backup_point: new function, move point backward by one
+         character, handling multibyte locales and characters
+       - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple
+         increment to handle multibyte characters.  Fixes bug reported by
+         Enrico Maria De Angelis <enricomaria.dean6elis@gmail.com>
 
-pcomplete.c
-       - unbind_compfunc_variables: use unbind_variable_noref to unset
-         COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY
-       - gen_shell_function_matches: use unbind_variable_noref to unset
-         COMPREPLY
+                                   9/5
+                                   ---
+lib/readline/vi_mode.c
+       - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple
+         increment to handle multibyte characters
+       - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple
+         decrement (and _rl_vi_advance_point where necessary) to handle
+         multibyte characters
+       - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup:
+         use _rl_vi_advance_point instead of simple rl_point increment
+       - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use
+         INCREMENT_POS instead of a simple increment to rl_mark to handle
+         multibyte characters
+       - rl_vi_column: use _rl_forward_char_internal, starting with
+         rl_point == 0, to handle multibyte characters (Posix says `character
+         position', not index)
 
-config-top.h
-       - USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of
-         mktemp and mkstemp in lib/sh/tmpfile.c.  Recommended by Mike
-         Frysinger <vapier@gentoo.org> to fix a FreeBSD problem
+                                   9/7
+                                   ---
+configure.ac
+       - changed release status to `beta'
 
-configure.ac,config.h.in
-       - mkstemp: check for mkstemp, define HAVE_MKSTEMP if available
+                                   9/9
+                                   ---
+lib/readline/display.c
+       - _rl_update_final: if the bottom line has zero characters and we are
+         on that line at column 0, don't bother with an additional \r\n.
+         Fixes redisplay nit reported by Per Bothner <per@bothner.com>
 
-config-bot.h
-       - USE_MKSTEMP: #undef if HAVE_MKSTEMP not defined
 
-                                  5/22
-                                  ----
-variables.c
-       - assign_in_env: if appending to a variable's value, make sure we call
-         make_variable_value with the empty string if expand_assignment_string_to_string
-         returns NULL, as do_assignment_internal does.  Fixes bug with
-         `str=''; val=foo ; val+=str printenv val' reported by Grisha Levit
-         <grishalevit@gmail.com>
-       - assign_in_env: if assigning to a nameref variable in the temporary
-         environment, and the nameref has a valid value for assignment (even
-         if the target variable is not set), resolve the nameref and create
-         a variable in the temporary environment named by the nameref's value.
-         If the nameref variable is invisible or isn't set to a valid value
-         for assignment, just create a regular temporary variable with the
-         nameref's name.  This provides a degree of ksh93 compatibility.
-         Suggested by Grisha Levit <grishalevit@gmail.com>
-       - find_variable_nameref_context,find_variable_last_nameref_context:
-         instead of returning NULL when detecting a loop, return a
-         distinguished value: &nameref_maxloop_value
-       - bind_variable: catch nameref_maxloop_value so we can do different
-         things based on whether or not we get it.  Right now we don't do
-         anything different, but we could
+configure.ac
+       - openbsd needs DEV_FD_STAT_BROKEN defined
 
-                                  5/24
-                                  ----
-lib/readline/display.c
-       - update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a
-         variable and use it throughout the functions instead of recomputing it
-         every time (which possibly costs a function call)
+[bash-5.0-beta frozen]
 
-                                  5/25
+                                  9/11
                                   ----
-builtins/declare.def
-       - declare_internal: only check whether the value being assigned to a
-         nameref variable is a valid identifier if we're not appending to an
-         existing value.  Suggested by Grisha Levit <grishalevit@gmail.com>
-       - declare_internal: add a couple of more checks on nameref names:
-               o make sure `declare -n x[3]=y' is an error
-               o nameref variable self-references now produce a warning when
-                 in function scope
-               o nameref variable self-references using subscripted arrays
-                 (a=a[0]) now produce warnings at function scope and errors at
-                 global scope
+builtins/exec.def
+       - exec_builtin: make sure to sync the buffered stream where bash is
+         reading input (especially if it's fd 0) so a command exec'd by the
+         script can read the rest of stdin after the exec
 
-                                  5/29
+                                  9/15
                                   ----
-builtins/declare.def
-       - declare_internal: use name of readonly variable when calling sh_readonly      
-         instead of name passed as argument to declare in case we've followed
-         a nameref chain
-       - declare_internal: when turning off attributes on a nameref variable
-         after following the nameref chain and turning them off on the target
-         variable, don't allow the readonly attribute to be removed.  This is
-         primarily intended to turn off the nameref attribute.  Issue pointed
-         out by Grisha Levit <grishalevit@gmail.com>
-       - declare_internal: if we are attempting to modify an existing global
-         nameref variable, and the -n option is supplied, operate on the
-         nameref variable itself, not the variable it references
+lib/readline/histexpand.c
+       - history_tokenize_internal: if the event contains embedded newlines
+         (e.g., bash with command-oriented history and lithist), use them as
+         word delimiters, equivalent to space and tab, so they don't end up
+         as separate words. Fixes issue pointed out by Viktor Dukhovni
+         <ietf-dane@dukhovni.org>
+       - history_tokenize_word: don't break if we get a newline (though we
+         shouldn't get one due to the loop in history_tokenize_internal
+       - history_expand_internal: use newline as a whitespace character when
+         expanding by words, as we do with history_tokenize_internal
 
-doc/{bash.1,bashref.texi}
-       - change the descriptions of namerefs and declare -n slightly to note
-         that using the -n option to declare will operate on the nameref
-         variable itself rather than the variable it references
+jobs.h
+       - J_PIPEFAIL: new flag for `flags' element of job struct
 
-variables.c
-       - bind_variable_internal: if trying to assign to a read-only variable,
-         print the error message using the variable's name instead of the
-         name passed to bind_variable in case we followed a nameref
+jobs.c
+       - stop_pipeline: if pipefail_opt set, newjob gets J_PIPEFAIL in its
+         flags word
+       - raw_job_exit_status: use J_PIPEFAIL (setting of pipefail when job
+         created) instead of current setting of pipefail status to determine
+         how to compute exit status of pipeline. Tentative implementation of
+         Posix proposal
 
-builtins/declare.def
-       - declare_internal: when we're creating a (possibly invisible) variable
-         as part of another operation, assigning NULL, make sure to use
-         ASS_FORCE to avoid warning messages from any existing nameref
-         variables we follow
-       - declare_internal: allow the nameref attribute to be removed from a
-         readonly nameref variable without a value but do not allow it to be
-         removed from a readonly nameref variable that has a value, even if it
-         doesn't reference an existing variable.  This distinction is for ksh93
-         compatibility.  Pointed out by Grisha Levit <grishalevit@gmail.com>
+expr.c
+       - exp0: don't call expr_bind_variable with a NULL string.  Fixes
+         fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
+       - expr_bind_variable: don't try to do anything with a NULL or empty
+         LHS
 
-                                  5/31
+                                  9/16
                                   ----
-builtins/declare.def
-       - declare_internal: if the call to bind_variable_value fails for some
-         reason, make sure to restore the nameref attribute to flags_on and
-         flags_off before calling NEXT_VARIABLE
+lib/readline/undo.c
+       - rl_do_undo: before we release the undo list entry we've just
+         processed, make sure we avoid any pointer aliasing issues caused
+         by having the entry being removed as part of the undo list in
+         _rl_saved_line_for_history. Fixes fuzzing bug reported by
+         Eduardo Bustamante <dualbus@gmail.com>
 
-subst.c
-       - make_internal_declare: handle += append op
-       - shell_expand_word_list: when transforming assignment statement
-         arguments to `declare', make sure to handle += append op to avoid
-         passing invalid identifiers to declare.  Report by Grisha Levit
-         <grishalevit@gmail.com>
+                                  9/17
+                                  ----
+[bash-5.0-beta released]
 
-                                   6/1
-                                   ---
-builtins/declare.def
-       - declare_internal: if a nameref assignment fails, only call delete_var
-         to delete the variable if we created it in declare_internal in the
-         first place
+                                  9/18
+                                  ----
+lib/readline/bind.c
+       - name_and_keymap: new struct for keymap names and maps
+       - builtin_keymap_names: static array of builtin keymap names and
+         maps; preparing for allowing applications to set the names of
+         keymaps they create; keymap_names is initially a pointer to
+         this array
+       - _rl_get_keymap_by_name,_rl_get_keymap_by_map: new functions for
+         searching the keymap_names array and returning an index
+       - rl_get_keymap_by_name, rl_get_keymap_name: rewritten in terms of
+         new functions above
+       - rl_set_keymap_name (char *name, Keymap map): new function, set
+         name of MAP to NAME. NAME must not be builtin; MAP must not be one
+         of the builtin keymaps. Request and initial implementation from
+         Tom Tromey <tom@tromey.com>
 
-general.c
-       - check_selfref: new function, checks a NAME against a VALUE for nameref
-         self-reference
+lib/readline/readline.h
+       - rl_set_keymap_name: new extern declaration for new public function
 
-general.h
-       - check_selfref: extern declaration
+lib/readline/doc/rltech.texi
+       - rl_set_keymap_name: add documentation
 
-builtins/declare.def
-       - declare_internal: call check_selfref to determine whether a given NAME
-         and VALUE constitute an invalid nameref variable self-reference
+lib/readline/doc/rluser.texi
+       - add text to `set keymap' description to note that applications
+         can add keymap names that can be used there
+
+                                  9/20
+                                  ----
+parse.y
+       - shell_getc: don't execute the alias hack (returning a space at the
+         end of the string) if we are parsing a command substitution that
+         starts with a double paren (subshell inside a comsub), in which
+         case the flags are PSH_DPAREN. Fixes fuzzing bug reported by
+         Eduardo Bustamante <dualbus@gmail.com>
 
-variables.c
-       - bind_variable_internal: call check_selfref to determine whether a
-         given NAME and VALUE constitute an invalid nameref variable self-
-         reference
+lib/readline/isearch.c
+       - _rl_isearch_dispatch: default case: make sure we check multibyte
+         char length when deciding whether to enlarge the search string
+         buffer, instead of using the old assumption. Fixes fuzzing bug
+         reported by Eduardo Bustamante <dualbus@gmail.com>
 
-                                   6/2
-                                   ---
-parse.y
-       - clear_shell_input_line: new function, clears contents of shell_input_line
-         and sets index to 0, but doesn't free it
+builtins/fc.def,execute_cmd.c
+       - fixed some missing free()s uncovered by coverity. Report from
+         Siteshwar Vashisht <svashisht@redhat.com>
 
-externs.h
-       - clear_shell_input_line: extern declaration
+lib/glob/glob.c
+       - glob_vector: make sure name_vector is initialized to NULL
 
-builtins/evalstring.c
-       - parse_and_execute: call clear_shell_input_line after setting input to
-         string to be executed.  Fixes problem with command substitution and
-         multi-line aliases reported by Grisha Levit <grishalevit@gmail.com>
+lib/sh/{pathcanon,pathphys}.c
+       - {pathcanon,pathphys}: use memmove instead of strcpy on a possibly-
+         overlapping region of memory
 
-eval.c
-       - parse_command: only execute PROMPT_COMMAND if the shell is not
-         currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT
-         and parse.y:prompt_again() use to decide whether or not to print a
-         prompt.  Fixes problems with PROMPT_COMMAND and multi-line aliases
-         reported by Grisha Levit <grishalevit@gmail.com>
+subst.c
+       - parameter_list_transform: make sure to dispose the word list in all
+         cases before returning
+       - parameter_brace_expand_rhs: make sure t1 is freed before returning
+         due to an invalid name resulting from an indirect expansion
 
-builtins/set.def
-       - unset_builtin: changes to fix three problems reported by Grisha
-         Levit <grishalevit@gmail.com>:
-               o if -n is supplied, we should not try to unset a function if
-                 a variable isn't found
-               o unsetting namerefs whose values are array references does
-                 not work
-               o unset -n n[0], where n is a nameref, would unset the
-                 referenced variable instead of `n'
+support/man2html.c
+       - fixed a couple of memory leaks
 
-redir.c
-       - redir_varvalue: handle case where nameref var points to subscripted
-         array reference.  Reported by Grisha Levit <grishalevit@gmail.com>
+                                  9/21
+                                  ----
+subst.c
+       - process_substitute: if we are part of a job control process chain
+         (pipeline_pgrp != shell_pgrp), have the child shell forked to run
+         the process substitution set pipeline_pgrp to its own PID,
+         effectively becoming a process group leader without changing
+         its own process group. Fixes stray SIGHUP issue reported by
+         Jeremy Townshend <jeremy.townshend@gmail.com>
+                                  9/23
+                                  ----
+arrayfunc.c
+       - assign_array_element: if we are assigning to an existing associative
+         array, and assoc_expand_once is set, allow `*' and `@' as subscripts.
+         Partial fix for report from Grisha Levit <grishalevit@gmail.com>
 
 variables.c
-       - bind_variable_value: make sure to call check_selfref only if aflags
-         includes ASS_NAMEREF and not ASS_FORCE.  Reported by Grisha Levit
+       - bind_int_variable: if valid_array_reference (lhs) is not true,
+         make sure that the lhs is a valid identifier before assigning the
+         value
+
+arrayfunc.c
+       - valid_array_reference: allow blank subscripts. They are treated as
+         `normal' keys for associative arrays and evaluate to 0 for indexed
+         arrays. More of fix for report from Grisha Levit
          <grishalevit@gmail.com>
 
-general.c
-       - valid_nameref_value: now understands a FLAGS value of 2 to mean that
-         the name will be used to create a variable, so only legal_identifier
-         matters
+                                  9/24
+                                  ----
+bashline.c
+       - restore_tilde: if the expanded length (xl) is longer than vl
+         we end up requesting a negative amount of memory (an extremely
+         large unsigned number). Just punt and return val in this case.
+         Fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
+       - restore_tilde: make sure we return what the user typed if tilde
+         expansion fails
 
-arrayfunc.c
-       - find_or_make_array_variable: call valid_nameref_value with FLAGS value
-         of 2 to indicate we will be creating a variable.  Fixes mapfile issue
-         reported by Grisha Levit <grishalevit@gmail.com>
+                                  9/29
+                                  ----
+builtins/shopt.def
+       - uncomment `localvar_unset' option definition
 
-                                   6/5
-                                   ---
-builtins/declare.def
-       - declare_internal: only pass ASS_FORCE as part of assignment flags to
-         assignments concerning arrays
-       - declare_internal: when at the global scope, if we resolve a nameref
-         and commit to using the new name, go back to to the beginning of the
-         loop and use the new name in the checks and variable references.
-         Make sure we construct the new name as a straight substitution of
-         the nameref value into the old name, including array subscripts and
-         rebuilding the correct values for `offset' and `value', since they
-         are relative to the original value of name.
-         Fixes several issues with checking use of subscripted array variables
-         as nameref values
-       - declare_internal: when calling assign_array_element, make sure to
-         pass ASS_APPEND if aflags includes it, so things like
-               declare -a var; var[1]=1; declare var[1]+=4
-         append to the value appropriately and var[1] ends up being `14'
+doc/{bash.1,bashref.texi}
+       - document `localvar_unset' shell option
 
 arrayfunc.c
-       - valid_array_reference: make sure the array reference is properly
-         terminated after the first subscript; return invalid if there is
-         anything following the closing `]'
+       - valid_array_reference: if we are parsing a subscript for an existing
+         associative array, the `assoc_expand_once' option is set, and the
+         VA_ONEWORD flag is set in FLAGS (meaning there should be nothing
+         following the closing `]'), don't call skipsubscript to find the
+         closing `]', use one that is at the end of the word. Part of fix for
+         issue reported by Grisha Levit <grishalevit@gmail.com>
 
-                                  6/12
-                                  ----
-variables.c
-       - bind_variable_internal: if asked to perform an array subscript
-         assignment on a nameref variable, display a warning and remove the
-         nameref attribute (as bash-4.3 did).  Reported by Dan Douglas
-         <ormaaj@gmail.com>
+builtins/{printf,set}.def
+       - pass VA_ONEWORD as part of flags value everywhere valid_array_reference
+         is used
 
-                                  6/14
-                                  ----
-test.c
-       - posixtest: handle four-argument case where argv[1] == '(' and
-         argv[4] == ')' by performing two-argument test on $2 and $3.
-         Reported by Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>
+config-top.h
+       - CHECKWINSIZE_DEFAULT: now 1, so check_window_size is on by default
+       - HISTEXPAND_DEFAULT: new define, allows builder to enable or disable
+         history expansion by default at build time
 
-                                  6/15
-                                  ----
-variables.c
-       - sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and
-         has a value (no `local IGNOREEOF'). Reported by Grisha Levit
-         <grishalevit@gmail.com>
-       - sv_strict_posix: make sure posixly_correct is set only if
-         POSIXLY_CORRECT is set and has a value.  Reported by Grisha Levit
-         <grishalevit@gmail.com>
+doc/{bash.1,bashref.texi}
+       - checkwinsize: document new default value
 
-                                  6/16
+bashhist.h
+       - HISTEXPAND_DEFAULT: don't define if it's already defined. Strict
+         POSIX mode continues to default to off
+
+                                  9/30
                                   ----
-builtins/declare.def
-       - declare_internal: analogous to 6/12 change; when performing an array
-         subscript assignment on a nameref, display a warning, remove the
-         nameref attribute, and go on
+lib/readline/input.c
+       - win32_isatty: win32-specific changes from GDB. Patch submitted by
+         Tom Tromey <tom@tromey.com>, originally from Eli Zaretskii
+         <eliz@gnu.org>
 
-                                  6/21
+                                  10/1
                                   ----
-execute_cmd.c
-       - shell_execve: make sure errno is (re)set appropriately before
-         returning error value on exec format error
+lib/readline/vi_mode.c
+       - rl_vi_start_inserting: start an undo group so we can grab the text
+         inserted here as a single unit, avoiding any insert coalescing
+         performed by rl_insert_text. Report and fix from Richard Todd
+         <richard.w.todd@outlook.com>
 
-                                  6/23
+                                  10/3
                                   ----
 subst.c
-       - param_expand: when expanding $* in a context where splitting is not
-         desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the
-         included separators.  Reported by Dan Douglas <ormaaj@gmail.com>
+       - parameter_brace_transform: if we're asked to display the attributes
+         of an unset variable, check that the variable exists even if
+         get_var_and_type returns NULL (it checks invisible_p). Requested by
+         Michal Pesa <pesathem@gmail.com>
 
-                                  6/30
+lib/readline/kill.c
+       - _rl_bracketed_text: new function, collects the text pasted in
+         bracketed paste mode and consumes the bracketed paste end marker;
+         returns the pasted text and its length
+       - rl_bracketed_paste_begin: call _rl_bracketed_text to collect the
+         text
+
+lib/readline/isearch.c
+       - _rl_isearch_dispatch: set cxt->lastc to -7 if the input resolves to
+         rl_bracketed_paste_begin
+       - _rl_isearch_dispatch: if cxt->lastc == -7, call _rl_bracketed_text
+         to collect the pasted text and add it to the accumulating search
+         string. Only works if ESC is not one of the isearch terminators.
+         Fixes issue reported in Debian bug report 891780,
+         https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891780
+
+                                  10/5
                                   ----
-configure.ac
-       - release version is now `beta2'
+variables.c
+       - push_posix_tempvar_internal: new function, body of push_func_var
+         with additional argument saying whether it's being called from a
+         function or (special) builtin code path
+       - push_builtin_var: new function, calls push_posix_tempvar_internal
+         with second argument indicating builtin code path
+       - push_func_var: now a stub that calls push_posix_tempvar_internal
+         with second argument indicating function code path
+       - pop_scope: if called from a special builtin, call push_builtin_var
+         instead of push_func_var to do the right variable propagation
+
+builtins/shopt.def
+       - progcomp_alias: uncomment, make available to users
 
+doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi
+       - progcomp_alias: document shopt option, describe its use in
+         the section on programmable completion
+
+trap.c
+       - decode_signal: handle SIGRTMIN+n at runtime, with the `SIG' prefix
+         or without, case-insensitively if requested, and return SIGRTMIN+n.
+         These values could be different than what was available at compile
+         time. Report and patch from Rasmus Villemoes <rv@rasumsvillemoes.dk>
+
+                                  10/8
+                                  ----
 execute_cmd.c
-       - execute_simple_command: even if already_making_children is non-zero,
-         don't call wait_for if last_made_pid == NO_PID.  Indirectly inspired
-         by report from Nicolas Vivet <nicolas@nzx.io>
+       - execute_command_internal: only set line_number from command->value.Subshell
+         if the type == cm_subshell; otherwise defer and set later
 
-                                   7/2
-                                   ---
-subst.c
-       - expand_word_internal: when adding an IFS character to the accumulated
-         string, don't quote it if word expansion is not going to be
-         performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the
-         default case.  This was already the case everwhere else, when we did
-         `goto add_ifs_character;'.  Fixes bug reported by Ibrahim M. Ghazal
-         <imgx64@gmail.com>
+                                  10/10
+                                  -----
+examples/loadables/seq.c
+       - seq: new loadable builtin, derived originally from coreutils:seq.c
+         but with very little of that code remaining
 
-subst.[ch],arrayfunc.c
-       - string_list_dollar_at: now takes a new third argument, currently
-         reserved for future use; changed callers and declaration
+                                  10/12
+                                  -----
+trap.c
+       - run_pending_traps,_run_trap_internal: honor evalnest_max and
+         increment/decrement evalnest accordingly, since trap actions
+         are processed as if run by `eval'. Feature suggsted by Mike
+         Gerwitz <mtg@gnu.org>
 
-                                   7/7
-                                   ---
-[bash-4.4-beta2 frozen]
+                                  10/16
+                                  -----
+expr.c
+       - expr_skipsubscript: new function, calls skipsubscript with flags
+         similar to arrayfunc.c:valid_array_subscript if assoc_expand_once
+         is set and it looks like we've already expanded the subscript of
+         an associative array. Reported back on 8/27 by Grisha Levit
+         <grishalevit@gmail.com>
+       - readtok: call expr_skipsubscript instead of skipsubscript
 
-                                   7/9
-                                   ---
-bashline.c
-       - check_redir: make sure that index is > 0 before checking previous
-         char; fixes out of bounds read reported by Hanno Böck
-         <hanno@hboeck.de>
+arrayfunc.c
+       - valid_array_reference: call skipsubscript with a third arg computed
+         from the VA_NOEXPAND flag only if we're expanding an associative
+         array subscript -- we already figure out whether or not we are
 
-                                  7/16
-                                  ----
-subst.c
-       - parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied
-         with an unset (or empty) array, and -u is enabled, don't make it
-         an unbound variable error, like $@ or $* when there are no
-         positional parameters.  Based on report from Ian Allen
-         <idallen@idallen-fibe.dyndns.org>
+[bumped release status to beta2]
 
-lib/readline/signals.c
-       - rl_pending_signal(): return the number of any signal readline has
-         caught but is waiting to handle
-
-lib/readline/callback.c
-       - rl_persistent_signal_handlers: new variable, restores readline-6.2
-         signal handler semantics: installed at rl_callback_handler_install
-         time and removed with rl_clear_signals when a complete line has
-         been read
-       - _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers
-         is non-zero
-       - rl_callback_read_char: install signal handlers with rl_set_signals
-         if rl_persistent_signal_handlers is 0 (the default)
-       - CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals
-         only if rl_persistent_signal_handlers is 0 (the default)
+                                  10/20
+                                  -----
+builtins/setattr.def
+       - set_or_show_attributes: after isolating NAME, make sure to restore
+         the "[+]=" in case we need the word later. Issue pointed out by
+         Grisha Levit <grishalevit@gmail.com>
 
-lib/readline/readline.h
-       - rl_pending_signal: new extern declaration
-       - rl_persistent_signal_handlers: new extern declaration
+                                  10/21
+                                  -----
+lib/readline/search.c
+       - noninc_search_from_pos: if we are supposed to be searching for a
+         pattern (vi mode), make sure to pass S to _hs_history_patsearch,
+         since that has any leading `^' stripped
 
-                                  7/19
-                                  ----
+lib/readline/histsearch.c
+       - _hs_history_patsearch: if the search isn't anchored, put a `*' at
+         the beginning to force fnmatch to match anywhere in the line (could
+         look at this later to make a change to history_search_internal that
+         would avoid the need to add the leading `*')
+
+subst.c
+       - parameter_brace_expand_rhs: treat a failure to assign a variable with
+         a ${param:=value} expansion as an expansion error, and, in a non-
+         interactive posix-mode shell, exit the shell
+       - param_expand: don't set W_SPLITSPACE for $* unless IFS is NULL;
+         consistent with other uses of W_SPLITSPACE
+
+                                  10/22
+                                  -----
+doc/{bash.1,bashref.texi}
+       - tweak description of bash conditional expressions to note that the
+         test and [ commands determine their behavior based on the number of
+         arguments. Suggested by Ilkka Virta <itvirta@iki.fi>
+
+                                  10/24
+                                  -----
 execute_cmd.c
-       - execute_while_or_until: make sure we decrement `continuing' the way
-         we decrement `breaking' if the loop test indicates we will be
-         breaking out of the loop.  That keeps `until continue' from
-         keeping `continuing' set to 1.  Reported by Dan Douglas
-         <ormaaj@gmail.com>
+       - execute_simple_command: don't set $_ to NULL when executing a
+         command that forks; just leave it unchanged. Tweaked the documentation
+         slightly as a result. Inspired by report from Ricky Tigg
+         <ricky.tigg@gmail.com>
 
-                                  7/20
+                                  10/28
+                                  -----
+redir.c
+       - here_document_to_fd: make sure the temp files used to store here
+         documents are readable (and writable, where necessary) by the user.
+         This can happen in the unlikely case that someone decides to shoot
+         himself in the foot by setting the umask to 400. Issue originally
+         raised back in March by Stephane Chazelas
+         <stephane.chazelas@gmail.com>; fix inspired by Martijn Dekker
+         <martijn@inlv.org>
+
+                                  10/29
+                                  -----
+lib/readline/terminal.c
+       - bind_termcap_arrow_keys: bind the "kI" capability (what the Insert
+         keypad key outputs) to overwrite mode. Patch from Xose Vazquez Perez
+         <xose.vazquez@gmail.com>
+
+                                  10/30
+                                  -----
+braces.c
+       - mkseq: make sure to terminate result array before passing it to
+         strvec_dispose on an interrupt. Report and fix from Corbin Souffrant
+         <corbin.souffrant@gmail.com>
+
+                                  11/6
                                   ----
 trap.c
-       - run_pending_traps,_run_trap_internal: save and restore temporary_env,
-         set temporary_env to 0 before trap runs so traps don't inherit a
-         command's temporary env.  Fixes bug with IFS assignment in tempenv
-         and trap reported by Andriy Martynets <martynets@volia.ua>
-
-jobs.c
-       - run_sigchld_trap: save and restore temporary_env, set temporary_env
-         to 0 before trap runs so traps don't inherit a command's temporary
-         env (see above)
+       - _run_trap_internal: if the signal shows up as SIG_CHANGED after
+         running the trap handler, check for terminating signals and run any
+         terminating signal handler indicates. Fixes issue reported by
+         Owen Stephens <owen@owenstephens.co.uk>
 
-                                  7/21
+                                  11/7
                                   ----
 execute_cmd.c
-       - execute_function: unwind-protect function_line_number, in case we
-         are executing a function inside another function.  Reported by
-         Grisha Levit <grishalevit@gmail.com> in context of evaled functions
-         and DEBUG traps
-       - execute_arith_for_command,execute_arith_command,execute_simple_command,
-         execute_cond_command: make sure line_number doesn't go < 0 when
-         adjusting it by function_line_number
+       - execute_builtin: don't merge the temporary environment when the
+         `return' builtin is being executed if it's being executed by the
+         `command' builtin, since that's supposed to inhibit the special
+         builtin properties. Part of POSIX conformance problems reported
+         by Martin Rehak <martin.rehak@oracle.com>
 
-                                  7/23
-                                  ----
-subst.c,command.h
-       - move the PF_ constants to command.h so other files can see them, now
-         that PF_ASSIGNRHS has meaning to string_list_dollar_at
+builtins/cd.def
+       - bindpwd: if canonicalization fails when -P is specified (e.g. if the
+         directory name length exceeds PATH_MAX), reset dirname ($PWD value) =
+         to the_current_working_directory (Posix cd description, step 10.)
+         Part of POSIX conformance problems reported by Martin Rehak
+         <martin.rehak@oracle.com>
 
-arrayfunc.h
-       - AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on
-         the RHS of an assignment statement
+builtins/kill.def
+       - kill_builtin: support -sSIG and -nSIG without requiring them to be
+         separate arguments. POSIX says a "conforming implementation" should
+         accept them.
+         Part of POSIX conformance problems reported by Martin Rehak
+         <martin.rehak@oracle.com>
 
+                                  11/8
+                                  ----
 arrayfunc.c
-       - array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass
-         PF_ASSIGNRHS to string_list_dollar_at to support args separated by
-         spaces even if $IFS does not have the default value.  Reported by
-         Dan Douglas <ormaaj@gmail.com>
+       - array_value_internal: return NULL for invisible array variables.
+         Fixes issue with FUNCNAME sometimes returning invalid value reported
+         by Great Big Dot <greatbigdot@gmail.com>
 
-subst.c
-       - string_list_dollar_at: if FLAGS argument includes PF_ASSIGNRHS, obey
-         rules for $@ on the RHS of an assignment statement: expand to
-         postitional parameters separated by spaces no matter what the first
-         character of $IFS is.  Reported by Dan Douglas <ormaaj@gmail.com>
-       - parameter_brace_expand_word: pass AV_ASSIGNRHS as flags value to
-         array_value if PF_ASSIGNRHS is set and we are expanding an array
-         variable subscripted by @ or *
-       - param_expand: pass pflags to string_list_dollar_at in case it contains
-         PF_ASSIGNRHS
-       - expand_word_internal: if we have an assignment statement argument to
-         a declaration builtin (W_ASSIGNARG), turn on W_ASSIGNRHS when we see
-         the `=' to enable special $@ behavior
-       - expand_word_internal: if W_ASSIGNARG enabled in word flags, pass that
-         flag and W_ASSIGNRHS to recursive call to expand_word_internal when
-         expanding double-quoted string; handles "$@" when IFS is not the
-         default value and word splitting will not be performed
+builtins/cd.def
+       - change_to_directory: if we are in posix mode, and the chdir to the
+         absolute pathname ($PWD/dirname) fails, return an error without
+         trying to use just `dirname' (posix cd step 10).
+         Part of POSIX conformance problems reported by Martin Rehak
+         <martin.rehak@oracle.com>
 
-subst.c
-       - expand_word_internal: change case that handles '' (single-quoted
-         empty string) to only discard it if we will not be performing word
-         splitting (W_NOSPLIT|W_NOSPLIT2), since we need to add a quoted null
-         argument if the subsequent characters will cause word splitting.
-         This is how "" (double-quoted empty string) is handled after a bug
-         fix back in August 2010.  Reported by Grisha Levit
-         <grishalevit@gmail.com>, fix for Posix interp 888
+execute_cmd.c
+       - execute_case_command: use expand_word_leave_quoted to expand the
+         word, then dequote the resulting string. This performs the
+         expansions in the order posix specifies.
+         Part of POSIX conformance problems reported by Martin Rehak
+         <martin.rehak@oracle.com>
 
-                                  7/27
-                                  ----
 subst.c
-       - param_expand: change fix from 6/23 (expanding $* in a context where
-         word splitting is not performed) to make sure that $* expands to
-         something before trying to quote the string.  Bug and fix from
-         Andreas Schwab <schwab@suse.de>
+       - expand_word_unsplit: rewrite in terms of expand_word_leave_quoted
+       - ifs_whitespace: new macro, Posix ifs whitespace (ISSPACE; member
+         of current locale's space char class)
+       - ifs_whitesep: new macro, whitespace that is a member of $IFS; used
+         by list_string and get_word_from_string
+       - list_string: use ifs_whitesep instead of spctabnl in case $IFS
+         contains whitespace characters that are not space, tab, or newline
+       - get_word_from_string: use ifs_whitesep instead of spctabnl in case
+         $IFS contains whitespace characters that are not space, tab, or
+         newline.
+         Part of POSIX conformance problems reported by Martin Rehak
+         <martin.rehak@oracle.com>
 
-lib/readline/bind.c
-       - _rl_get_string_variable_value: fix a cut-and-paste error that caused
-         the emacs mode string to be displayed for both vi insert and command
-         mode strings.  Report and fix from Steve Jones <sjml@slohj.org>
-
-                                  7/28
+                                  11/9
                                   ----
-lib/readline/display.c
-       - update_line: we can't use PROMPT_ENDING_INDEX unless we're testing
-         against _rl_last_c_pos; if we are testing buffer indices, we need to
-         use prompt_last_invisible directly.  Fixes mode string redisplay issue
-         with short prompt strings reported by Steve Jones <sjml@slohj.org>
+general.c
+       - posix_initialize: enable the shift_verbose option when turning on
+         posix mode, and disable it when posix mode is disabled. From a
+         report by Eric Blake <eblake@redhat.com>
 
-                                   8/4
-                                   ---
-nojobs.c
-       - without_job_control: new function, resets child state that's
-         eventually used to decide whether or not to wait_for children
+doc/bashref.texi
+       - posix mode: note the effect of posix mode on shift_verbose
 
-execute_cmd.c
-       - initialize_subshell: call without_job_control in both the
-         JOB_CONTROL and no job control paths so we can reset the state in
-         subshells that will not cause them to wait_for children
-         inappropriately.  Fixes bug reported by Dan Cross <crossd@gmail.com>
+                                  11/12
+                                  -----
+subst.c
+       - parameter_brace_expand: if parameter_brace_expand_word returns an
+         error, make sure to set TEMP = 0 (to note that the variable is unset).
+         From a report by Grisha Levit <grishalevit@gmail.com>
+       - param_expand: if expanding $! when set -u is enabled, honor the
+         PF_IGNUNBOUND flag and just return NULL, relying on the caller to
+         take care of understanding that the variable is unset
+         From a report by Grisha Levit <grishalevit@gmail.com> 
+       - parameter_brace_expand: if we are checking nullness, and we have a
+         valid array expansion, a quoted null string resulting from the array
+         expansion of a * or @ subscript satisfies the nullness check.
+         From a report by Grisha Levit <grishalevit@gmail.com>
 
-                                   8/5
-                                   ---
-configure.ac
-       - release version is now `rc2'
+                                  11/14
+                                  -----
+aclocal.m4
+       - BASH_CHECK_LIB_TERMCAP: add last-ditch check for libncursesw, since
+         it's apparently the only curses library on some distributions.
+         Report from John Frankish <john.frankish@outlook.com>
 
+                                  11/16
+                                  -----
 bashline.c
-       - command_word_completion_function: if direxpand is set, make sure to
-         run hint_text through bash_directory_completion_hook, since
-         readline will do that and we want to be able to match the results
-         readline returns.  Fixes bug reported by Pat Somaru
-         <tuf18542@temple.edu>
-
-command.h
-       - W_COMPLETE: new flag word value
-       - PF_COMPLETE: new flags value for param_expand
+       - attempt_shell_completion: allow an initial word completion to
+         complete a partial first word (point appears in the middle of
+         the word) before resorting to command completion. Report and fix
+         from Luca Boccassi <bluca@debian.org>
 
-subst.h
-       - SX_STRIPDQ: new flag, used for string_extract_double_quoted
+[bash-5.0-beta2 frozen]
 
+                                  11/27
+                                  -----
 bashline.c
-       - bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE
-         flag to expand_prompt_string
+       - attempt_shell_completion: better fix for problems with fix from
+         11/16. Report and fix from Tom Ryder <tom@sanctum.geek.nz>
+
+expr.c
+       - expr_skipsubscript: fix return type. Report and fix from
+         Andreas Schwab <schwab@linux-m68k.org>
 
+                                  11/29
+                                  -----
 subst.c
-       - expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE
-         to param_expand
-       - param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to
-         extract_command_subst.  This allows `"$(echo ~/' to perform
-         completion successfully
-       - string_extract_double_quoted: turn third argument into a flags arg,
-         old STRIPDQ is now set if flags&SX_STRIPDQ
-       - string_extract_double_quoted: changed callers, if third argument was
-         1, pass SX_STRIPDQ instead
-       - expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE
-         in flags to string_extract_double_quoted for case '"'
-       - string_extract_double_quoted: if SX_COMPLETE in flags, pass it to
-         extract_command_subst
-       - expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE
-         is in temp word passed to recursive call to expand_word_internal to
-         expand double-quoted string.  Fixes bug reported by John Passaro
-         <john.a.passaro@gmail.com>
+       - quote_escapes_internal: refactored quote_escapes into a function
+         that takes an additional flag saying whether or not we are going
+         to split the result. If we are not, and CTLESC is in IFS, we quote
+         the CTLESC (ditto for CTLNUL) to prevent it being removed when the
+         string is dequoted.
+       - quote_escapes: call quote_escapes_internal with FLAGS == 0
+       - quote_rhs: new function, calls quote_escapes with FLAGS == PF_NOSPLIT2
+         so that a CTLESC will be quoted if CTLESC is in $IFS
+       - parameter_brace_expand_word: call quote_rhs on the value of a variable
+         if PFLAGS includes PF_ASSIGNRHS, indicating that we will not be
+         splitting the word, but we will be dequoting it. Fixes bug reported
+         by Martijn Dekker <martijn@inlv.org>
+       - param_expand: same change as for parameter_brace_expand_word
 
-                                   8/9
-                                   ---
-[bash-4.4-rc2 frozen]
+execute_cmd.c
+       - execute_in_subshell: if we are running a trap (running_trap > 0),
+         turn off the SIG_INPROGRESS and SIG_CHANGED flags for that signal
+         by calling run_trap_cleanup and reset running_trap to 0 (watch the
+         second part!). Tagged for bash-5.1.
+
+                                  11/30
+                                  -----
+lib/readline/doc/rltech.texi
+       - rl_set_keymap_name: correct typo in the name; some updates to the
+         description that clarify usage. Report from <hirooih@gmail.com>
 
-                                  8/10
+                                  12/4
                                   ----
-subst.c
-       - sub_append_string: use size_t variable to store string length to
-         avoid integer overflow.  Report from Siteshwar Vashisht
-         <svashisht@redhat.com>
-       - sub_append_string: `size' argument is now pointer to size_t; changed
-         istring_index in expand_word_internal to accommodate change
+aclocal.m4
+       - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: a test of whether fnmatch(3)
+         understands bracket equivalence classes ([=c=]) for characters
+         that collate with equal weights but are not identical
 
-lib/sh/ufuncs.c
-       - include "posixselect.h" if HAVE_SELECT is defined, make sure that
-         fd_set and the rest are defined
+configure.ac,config.h.in
+       - call BASH_FUNC_FNMATCH_EQUIV_FALLBACK and define
+         FNMATCH_EQUIV_FALLBACK to 1 if it can be used for equivalence
+         classes
 
-                                  8/11
+                                  12/5
                                   ----
-lib/readline/histexpand.c
-       - history_tokenize_word: use ISDIGIT instead of isdigit for more
-         argument checking
-       - "chardefs.h": include for ISDIGIT define and <ctype.h>.  Fix from
-         Mike Frysinger <vapier@gentoo.org>
-
-lib/sh/eaccess.c,externs.h
-       - sh_eaccess: first argument now const char *
-       - sh_stataccess,sh_euidaccess: first argument now const char *, since
-         sh_stat and sh_eaccess call them.
-         Fix from Mike Frysinger <vapier@gentoo.org>
+execute_cmd.c
+       - eval_arith_for_expr,execute_arith_command,execute_cond_command: make
+         sure running_trap == 0 before we reset the_printed_command_except_trap
+         Report from Peng Yu <pengyu.ut@gmail.com>
 
-lib/glob/glob.c
-       - sh_eaccess: change local prototype
+lib/glob/smatch.c
+       - _fnmatch_fallback_wc: new function, takes two wide characters c1 and
+         c2, converts them to a pattern ([[=c2=]]) and a string (c1) for
+         fnmatch to determine whether or not they are members of the same
+         equivalence class
+       - collequiv_wc: call _fnmatch_fallback_wc if rangecmp_wc returns
+         non-zero if FNMATCH_EQUIV_FALLBACK is defined, so we know that
+         fnmatch understands equivalence classes. Another Posix test suite
+         issue from Martin Rehak <martin.rehak@oracle.com>
 
-general.[ch]
-       - all_digits,legal_identifier,valid_nameref_value,importable_function_name,
-         exportable_function_name,check_binary_file,file_exists,file_isdir,
-         file_iswdir,same_file,make_absolute,valid_nameref_value: first
-         argument (always identifier or filename) is now a `const char *';
-         some second filename arguments now `const char *'.
-         Fix from Mike Frysinger <vapier@gentoo.org>
+                                  12/6
+                                  ----
+redir.c
+       - add missing cases to switch statements to shut up gcc
 
-configure.ac,config.h.in
-       - uintptr_t: make sure it's defined to an integer type wide enough to
-         hold a pointer
+                                  12/7
+                                  ----
+builtins/set.def
+       - find_minus_o_option: new helper function, returns index into
+         o_options given option name
+       - minus_o_option_value,set_minus_o_option: use find_minus_o_option
 
-lib/sh/tmpfile.c
-       - sh_seedrand: use `uintptr_t' to cast pointer value to int value,
-         instead of allowing truncation to take place, since srandom takes
-         an `unsigned int'.
-         Fix from Mike Frysinger <vapier@gentoo.org>
+general.c
+       - new table of variables (currently all shopt options) that are
+         modified by going into and out of posix mode; num_posix_options()
+         returns the number of variables
+       - get_posix_options: fill in a bitmap passed as an argument (or return
+         a new one) of values of posix-mode-modified variables in the table
+       - set_posix_options: set values of posix-mode-modified variables from
+         the table using the passed bitmap for values
 
-arrayfunc.[ch]
-       - valid_array_reference,array_variable_name,array_variable_part,
-         array_value_internal,array_value,get_array_value: first argument
-         (always variable name) now a `const char *'
-         Fix from Mike Frysinger <vapier@gentoo.org>
+builtins/set.def
+       - get_current_options: make the bitmap large enough to hold the options
+         in the set table and the table of posix-mode-modified variables; call
+         get_posix_options to fill in those values after the values from the
+         o_options table
+       - set_current_options: call set_posix_options to reset the values of
+         the posix-mode-modified variables at the end of the bitmap, after
+         the o_options values. Fixes issue reported by PJ Eby
+         <pje@telecommunity.com>
 
-                                  8/19
+                                  12/9
                                   ----
-print_cmd.c
-       - xtrace_print_word_list: if (xtflags & 2), don't try to quote the
-         words in the LIST argument.  Intended to be used in places where
-         the list has not yet been expanded
-       - xtrace_print_for_command_head: call xtrace_print_word_list with
-         flags argument of 2.  Fixes issue reported by Aharon Robbins
-         <arnold@skeeve.com>
-       - xtrace_print_select_command_head: call xtrace_print_word_list with
-         flags argument of 2
+parse.y
+       - select_command: add two additional productions to support select
+         commands without a word_list following the `in'. Fixes omission
+         reported by Martijn Dekker <martijn@inlv.org>
 
-                                  8/21
-                                  ----
-lib/sh/netopen.c
-       - netopen: fix memory leak by freeing allocated path before error
-         return.  Fix from Dmitry Goncharov <dgoncharov@users.sf.net>
+                                  12/11
+                                  -----
+variables.c
+       - assign_in_env: don't allow namerefs in temporary environment
+         assignments to create variables with invalid names for export. Fixes
+         bug reported by Grisha Levit <grishalevit@gmail.com>
 
-doc/{bash.1,bashref.texi}
-       - change conditional commands description to make it clearer that
-         bash doesn't emulate /dev/fd if the OS provides it
+                                  12/14
+                                  -----
+parse.y
+       - don't change last_command_exit_value in the 'error yacc_EOF' production
+         if the parser sets it to something non-zero; just make sure it
+         indicates an error. Fixes problem with unexpected EOF in eval
+         reported by Martijn Dekker <martijn@inlv.org>
 
-                                  8/22
-                                  ----
-braces.c
-       - expand_amble: free partial and tem on failure to allocate memory
-         for merged partial+result strvec.  Fix from Dmitry Goncharov
-         <dgoncharov@users.sf.net>
+                                  12/17
+                                  -----
+expr.c
+       - exp2 -> expmuldiv
 
-                                  8/23
-                                  ----
-jobs.c
-       - wait_for: don't call get_tty_state when a job finishes if we're
-         running it as part of programmable completion.  We test
-         rl_readline_state.  Fixes bug reported by Jaro Punta
-         <silly8888@gmail.com>
+lib/sh/smatch.c
+       - fnmatch: add extern declaration if FNMATCH_EQUIV_FALLBACK is being
+         used
 
-                                  8/24
-                                  ----
-subst.c
-       - pat_subst: fix memory leak (mstr).  Fix from Dmitry Goncharov
-         <dgoncharov@users.sf.net>
-       - split_at_delims: fix memory leak (d2).  Fix from Dmitry Goncharov
-         <dgoncharov@users.sf.net>
+hashlib.c
+       - hash_string: add FNV offset as initial value for hash instead of
+         starting at 0, changes hash for associative arrays and requires a
+         bunch of changes to the "right" test suite files
 
-                                  8/26
-                                  ----
-subst.c
-       - match_upattern,match_wpattern: make sure that a trailing `*' is
-         not escaped (preceded by an odd number of backslashes) before we
-         append a `*' when checking whether a pattern matches anywhere in
-         the string
-
-lib/readline/{input,signals}.c
-       - protect instances of SIGQUIT with #ifdef SIGQUIT; apparently
-         MinGW doesn't define it
-       - protect instances of SIGHUP with #ifdef SIGHUP; apparently
-         MinGW doesn't define it.  From a report from Simon Sobisch
-         <simonsobisch@gnu.org>
-
-xmalloc.o
-       - allocerr: only try to find the break and report it if we're using
-         the bash malloc; there's no guarantee that any other malloc is
-         using sbrk()
+variables.c
+       - rseed: make it explicitly 32 bits; that's all we're interested in
+         anyway
 
-doc/{bash.1,bashref.texi}
-       - quote removal: add paragraph mentioning quote removal to beginning
-         of expansions section, referencing later paragraph.  Report from
-         Michel Lanne <michel.lanne@gmail.com>
+                                  12/18
+                                  -----
 
-                                  8/30
-                                  ----
-lib/readline/input.c
-       - protect instances of SIGALRM and SIGWINCH with #ifdef; apparently
-         MinGW doesn't define them.  From a report from Simon Sobisch
-         <simonsobisch@gnu.org>
+variables.c
+       - brand: add some comments, make the constants explicitly 32 bits;
+         use signed 32-bit values for the intermediate calculations. The
+         algorithm is still minstd
+
+[bash-5.0-rc1 frozen]
+
+                                  12/21
+                                  -----
+doc/bash.1
+       - }1: remove macro definition; it's outlived its bugfix purpose.
+         Report from Derek Schrock <dereks@lifeofadishwasher.com>
 
+                                  12/22
+                                  -----
 subst.c
-       - SPECIAL_VAR: make sure name is not the empty string before going on,
-         empty strings can result in unitialized reads
-       - CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and
-         similar functions to to check whether a function called to parse an
-         embedded construct (like a backquoted command substitution) doesn't
-         consume the entire string because it's unterminated
-       - skip_double_quoted: make sure other extraction functions don't
-         consume the entire string (which they can if the construct is
-         unterminated) before incrementing the index and going on.  Uses
-         CHECK_STRING_OVERRUN
-       - extract_dollar_brace_string: check for unterminated embedded
-         constructs consuming the entire string with CHECK_STRING_OVERRUN ('`')
-       - skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated
-         embedded "`", $(, ${ don't cause out-of-bounds reads
-
-[bash-4.4 frozen]
+       - expand_arith_string: set W_NOTILDE in the flags so we don't perform
+         tilde expansion at all, even for the previously-special-case array
+         subscript expansion. Report from Bize Ma <binaryzebra@gmail.com>
+       - expand_word_internal: take out Q_ARRAYSUB check for tilde expansion
+
+                                  12/26
+                                  -----
+builtins/evalstring.c
+       - parse_and_execute: if the eval builtin gets a parser error while
+         parsing a  string in posix mode, don't exit the shell if the eval
+         was run by the command builtin. report from Martijn Dekker
+         <martijn@inlv.org>
+
+examples/loadables/{basename,dirname}.c
+       - dirname_builtin: skip over any `--' ending the options.  Report from
+         Peng Yu <pengyu.ut@gmail.com>
+
+                                  12/27
+                                  -----
+examples/loadables/mkdir.c
+       - make_path: add argument noting whether or not the user specified -m;
+         only attempt the chmod on an existing directory if the user did so
+       - make_path: when creating intermediate directories, perform the
+         mkdir (path, 0) and chmod separately as the posix text recommends
+
+                                  12/28
+                                  -----
+parser.h
+       - PST_COMMENT: new state, set when the shell is reading characters
+         until newline as part of comment processing
+
+parse.y
+       - shell_getc: don't return a space at the end of a token if the parser
+         is consuming a comment. Fixes bug reported by Harald van Dijk
+         <harald@gigawatt.nl>
+
+                                  12/31
+                                  -----
+lib/glob/glob_loop.c
+       - INTERNAL_GLOB_PATTERN_P: revert change from 4/27 that makes this
+         function return non-zero for a backslash in the string. Based on a
+         report from Tom Ryder <tom@sanctum.geek.nz>
+
+[bash-5.0 frozen]
diff --git a/INSTALL b/INSTALL
index c60d5917676811aeb2ce260a0fd2318279055ca2..91f1dd9a7db5a066c90bd8311a089bd5dfa21eea 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -38,10 +38,24 @@ don't want to keep, you may remove or edit it.
 To find out more about the options and arguments that the 'configure'
 script understands, type
 
-     bash-2.04$ ./configure --help
+     bash-4.2$ ./configure --help
 
 at the Bash prompt in your Bash source directory.
 
+If you want to build Bash in a directory separate from the source
+directory - to build for multiple architectures, for example - just use
+the full path to the configure script.  The following commands will
+build bash in a directory under '/usr/local/build' from the source code
+in '/usr/local/src/bash-4.4':
+
+     mkdir /usr/local/build/bash-4.4
+     cd /usr/local/build/bash-4.4
+     bash /usr/local/src/bash-4.4/configure
+     make
+
+See *note Compiling For Multiple Architectures:: for more information
+about building in a directory separate from the source.
+
 If you need to do unusual things to compile Bash, please try to figure
 out how 'configure' could check whether or not to do them, and mail
 diffs or instructions to <bash-maintainers@gnu.org> so they can be
@@ -57,8 +71,6 @@ code directory by typing 'make clean'.  To also remove the files that
 'configure' created (so you can compile Bash for a different kind of
 computer), type 'make distclean'.
 
-Next: Compiling For Multiple Architectures,  Prev: Basic Installation,  Up: Installing Bash
-
 Compilers and Options
 =====================
 
@@ -76,8 +88,6 @@ On systems that have the 'env' program, you can do it like this:
 
 The configuration process uses GCC to build Bash if it is available.
 
-Next: Installation Names,  Prev: Compilers and Options,  Up: Installing Bash
-
 Compiling For Multiple Architectures
 ====================================
 
@@ -86,10 +96,10 @@ time, by placing the object files for each architecture in their own
 directory.  To do this, you must use a version of 'make' that supports
 the 'VPATH' variable, such as GNU 'make'.  'cd' to the directory where
 you want the object files and executables to go and run the 'configure'
-script from the source directory.  You may need to supply the
-'--srcdir=PATH' argument to tell 'configure' where the source files are.
-'configure' automatically checks for the source code in the directory
-that 'configure' is in and in '..'.
+script from the source directory (*note Basic Installation::).  You may
+need to supply the '--srcdir=PATH' argument to tell 'configure' where
+the source files are.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.
 
 If you have to use a 'make' that does not supports the 'VPATH' variable,
 you can compile Bash for one architecture at a time in the source code
@@ -108,8 +118,6 @@ The 'mkclone' script requires Bash, so you must have already built Bash
 for at least one architecture before you can create build directories
 for other architectures.
 
-Next: Specifying the System Type,  Prev: Compiling For Multiple Architectures,  Up: Installing Bash
-
 Installation Names
 ==================
 
@@ -125,8 +133,6 @@ option '--exec-prefix=PATH', 'make install' will use PATH as the prefix
 for installing programs and libraries.  Documentation and other data
 files will still use the regular prefix.
 
-Next: Sharing Defaults,  Prev: Installation Names,  Up: Installing Bash
-
 Specifying the System Type
 ==========================
 
@@ -140,8 +146,6 @@ canonical name with three fields: 'CPU-COMPANY-SYSTEM' (e.g.,
 
 See the file 'support/config.sub' for the possible values of each field.
 
-Next: Operation Controls,  Prev: Specifying the System Type,  Up: Installing Bash
-
 Sharing Defaults
 ================
 
@@ -154,8 +158,6 @@ looks for 'PREFIX/share/config.site' if it exists, then
 A warning: the Bash 'configure' looks for a site script, but not all
 'configure' scripts do.
 
-Next: Optional Features,  Prev: Sharing Defaults,  Up: Installing Bash
-
 Operation Controls
 ==================
 
@@ -185,8 +187,6 @@ Operation Controls
 'configure' also accepts some other, not widely used, boilerplate
 options.  'configure --help' prints the complete list.
 
-Prev: Operation Controls,  Up: Installing Bash
-
 Optional Features
 =================
 
@@ -248,8 +248,8 @@ and linked, rather than changing run-time features.
 
 '--enable-largefile'
      Enable support for large files
-     (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if
-     the operating system requires special compiler options to build
+     (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the
+     operating system requires special compiler options to build
      programs which can access large files.  This is enabled by default,
      if the operating system provides large file support.
 
@@ -321,6 +321,12 @@ unless the operating system does not provide the necessary support.
 '--enable-debugger'
      Include support for the bash debugger (distributed separately).
 
+'--enable-dev-fd-stat-broken'
+     If calling 'stat' on /dev/fd/N returns different results than
+     calling 'fstat' on file descriptor N, supply this option to enable
+     a workaround.  This has implications for conditional commands that
+     test file attributes.
+
 '--enable-direxpand-default'
      Cause the 'direxpand' shell option (*note The Shopt Builtin::) to
      be enabled by default when the shell starts.  It is normally
@@ -391,7 +397,7 @@ unless the operating system does not provide the necessary support.
 
 '--enable-prompt-string-decoding'
      Turn on the interpretation of a number of backslash-escaped
-     characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt
+     characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
      strings.  See *note Controlling the Prompt::, for a complete list
      of prompt string escape sequences.
 
index a306b6ffcc95237e12d6b7de6b95738e000bb4b4..03de22102cec16243069922800f0a783a10cdbf3 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -11,6 +11,7 @@ cross-build   d
 doc    d
 examples       d
 #examples/obashdb      d
+examples/bash-completion       d
 examples/complete      d
 examples/functions d
 examples/scripts d
@@ -209,6 +210,7 @@ builtins/bashgetopt.h       f
 cross-build/cygwin32.cache     f
 cross-build/x86-beos.cache     f
 cross-build/opennt.cache       f
+cross-build/qnx.cache  f
 include/ansi_stdlib.h  f
 include/chartypes.h    f
 include/filecntl.h     f
@@ -239,6 +241,7 @@ lib/glob/glob.c             f
 lib/glob/glob.h                f
 lib/glob/glob_loop.c   f
 lib/glob/gmisc.c       f
+lib/glob/gm_loop.c     f
 lib/glob/xmbsrtowcs.c  f
 lib/glob/collsyms.h    f
 lib/glob/doc/Makefile  f
@@ -450,6 +453,7 @@ lib/sh/tmpfile.c    f
 lib/sh/uconvert.c      f
 lib/sh/ufuncs.c                f
 lib/sh/unicode.c       f
+lib/sh/utf8.c          f
 lib/sh/vprint.c                f
 lib/sh/wcsdup.c                f
 lib/sh/wcsnwidth.c     f
@@ -534,6 +538,8 @@ po/nb.gmo           f
 po/nl.po               f
 po/pl.gmo              f
 po/pl.po               f
+po/pt.gmo              f
+po/pt.po               f
 po/pt_BR.gmo           f
 po/pt_BR.po            f
 po/ro.gmo              f
@@ -631,6 +637,7 @@ support/mkversion.sh        f       755
 support/mksignames.c   f
 support/signames.c     f
 support/bashbug.sh     f
+support/bashbug.sh.in  f
 support/man2html.c     f
 support/recho.c                f
 support/zecho.c                f
@@ -649,6 +656,8 @@ examples/INDEX.html f
 #examples/obashdb/README       f
 #examples/obashdb/bashdb               f
 #examples/obashdb/bashdb.el    f
+examples/bash-completion/README        f
+examples/bash-completion/bash-completion-2.5.tar.xz    f
 examples/complete/bash_completion      f
 examples/complete/cdfunc       f
 examples/complete/complete-examples    f
@@ -666,12 +675,14 @@ examples/loadables/necho.c        f
 examples/loadables/hello.c     f
 examples/loadables/print.c     f
 examples/loadables/realpath.c  f
+examples/loadables/seq.c       f
 examples/loadables/setpgid.c   f
 examples/loadables/sleep.c     f
 examples/loadables/strftime.c  f
 examples/loadables/truefalse.c f
 #examples/loadables/getconf.h  f
 #examples/loadables/getconf.c  f
+examples/loadables/fdflags.c   f
 examples/loadables/finfo.c     f
 examples/loadables/cat.c       f
 #examples/loadables/cut.c      f
@@ -681,6 +692,7 @@ examples/loadables/dirname.c        f
 examples/loadables/tty.c       f
 examples/loadables/pathchk.c   f
 examples/loadables/tee.c       f
+examples/loadables/rm.c                f
 examples/loadables/rmdir.c     f
 examples/loadables/head.c      f
 examples/loadables/printenv.c  f
@@ -693,6 +705,7 @@ examples/loadables/mkdir.c  f
 examples/loadables/ln.c                f
 examples/loadables/mypid.c     f
 examples/loadables/unlink.c    f
+examples/loadables/stat.c      f
 examples/loadables/perl/Makefile.in    f
 examples/loadables/perl/README f
 examples/loadables/perl/bperl.c        f
@@ -701,9 +714,12 @@ examples/loadables/perl/iperl.c    f
 #examples/loadables/xtitle.c   f
 examples/functions/array-stuff f
 examples/functions/array-to-string     f
+examples/functions/arrayops.bash       f
 examples/functions/autoload    f
 examples/functions/autoload.v2 f
 examples/functions/autoload.v3 f
+examples/functions/autoload.v4 f
+examples/functions/autoload.v4.t       f
 examples/functions/basename    f
 #examples/functions/basename2  f
 #examples/functions/coproc.bash        f
@@ -808,6 +824,8 @@ tests/test-glue-functions   f
 tests/alias.tests      f
 tests/alias1.sub       f
 tests/alias2.sub       f
+tests/alias3.sub       f
+tests/alias4.sub       f
 tests/alias.right      f
 tests/appendop.tests   f
 tests/appendop1.sub    f
@@ -824,6 +842,7 @@ tests/arith4.sub    f
 tests/arith5.sub       f
 tests/arith6.sub       f
 tests/arith7.sub       f
+tests/arith8.sub       f
 tests/array.tests      f
 tests/array.right      f
 tests/array1.sub       f
@@ -847,6 +866,12 @@ tests/array18.sub  f
 tests/array19.sub      f
 tests/array20.sub      f
 tests/array21.sub      f
+tests/array22.sub      f
+tests/array23.sub      f
+tests/array24.sub      f
+tests/array25.sub      f
+tests/array26.sub      f
+tests/array27.sub      f
 tests/array-at-star    f
 tests/array2.right     f
 tests/assoc.tests      f
@@ -859,6 +884,8 @@ tests/assoc5.sub    f
 tests/assoc6.sub       f
 tests/assoc7.sub       f
 tests/assoc8.sub       f
+tests/assoc9.sub       f
+tests/assoc10.sub      f
 tests/attr.tests       f
 tests/attr.right       f
 tests/attr1.sub                f
@@ -883,6 +910,9 @@ tests/source7.sub   f
 tests/case.tests       f
 tests/case.right       f
 tests/case1.sub                f
+tests/case2.sub                f
+tests/case3.sub                f
+tests/case4.sub                f
 tests/casemod.tests    f
 tests/casemod.right    f
 tests/comsub.tests     f
@@ -890,6 +920,7 @@ tests/comsub.right  f
 tests/comsub1.sub      f
 tests/comsub2.sub      f
 tests/comsub3.sub      f
+tests/comsub4.sub      f
 tests/comsub-eof.tests f
 tests/comsub-eof0.sub  f
 tests/comsub-eof1.sub  f
@@ -933,6 +964,7 @@ tests/dollar-at3.sub        f
 tests/dollar-at4.sub   f
 tests/dollar-at5.sub   f
 tests/dollar-at6.sub   f
+tests/dollar-at7.sub   f
 tests/dollar-star1.sub f
 tests/dollar-star2.sub f
 tests/dollar-star3.sub f
@@ -940,11 +972,15 @@ tests/dollar-star4.sub    f
 tests/dollar-star5.sub f
 tests/dollar-star6.sub f
 tests/dollar-star7.sub f
+tests/dollar-star8.sub f
+tests/dollar-star9.sub f
 tests/dollar.right     f
 tests/dstack.tests     f
 tests/dstack.right     f
 tests/dstack2.tests    f
 tests/dstack2.right    f
+tests/dynvar.tests     f
+tests/dynvar.right     f
 tests/errors.tests     f
 tests/errors.right     f
 tests/errors1.sub      f
@@ -953,6 +989,8 @@ tests/errors3.sub   f
 tests/errors4.sub      f
 tests/errors5.sub      f
 tests/errors6.sub      f
+tests/errors7.sub      f
+tests/errors8.sub      f
 tests/execscript       f
 tests/exec.right       f
 tests/exec1.sub                f       755
@@ -979,6 +1017,9 @@ tests/exp6.sub             f
 tests/exp7.sub         f
 tests/exp8.sub         f
 tests/exp9.sub         f
+tests/exp10.sub                f
+tests/exp11.sub                f
+tests/exp12.sub                f
 tests/exportfunc.tests f
 tests/exportfunc.right f
 tests/exportfunc1.sub  f
@@ -995,6 +1036,7 @@ tests/extglob3.sub f
 tests/extglob3.tests   f
 tests/extglob3.right   f
 tests/extglob4.sub     f
+tests/extglob5.sub     f
 tests/func.tests       f
 tests/func.right       f
 tests/func1.sub                f
@@ -1015,6 +1057,9 @@ tests/getopts9.sub        f
 tests/getopts10.sub    f
 tests/glob.tests       f
 tests/glob1.sub                f
+tests/glob2.sub                f
+tests/glob3.sub                f
+tests/glob4.sub                f
 tests/glob.right       f
 tests/globstar.tests   f
 tests/globstar.right   f
@@ -1025,6 +1070,7 @@ tests/heredoc.right       f
 tests/heredoc1.sub     f
 tests/heredoc2.sub     f
 tests/heredoc3.sub     f
+tests/heredoc4.sub     f
 tests/herestr.tests    f
 tests/herestr.right    f
 tests/herestr1.sub     f
@@ -1033,14 +1079,18 @@ tests/histexp1.sub      f
 tests/histexp2.sub     f
 tests/histexp3.sub     f
 tests/histexp4.sub     f
+tests/histexp5.sub     f
+tests/histexp6.sub     f
 tests/histexp.right    f
 tests/history.tests    f
 tests/history.right    f
 tests/history.list     f       444
 tests/history1.sub     f
 tests/history2.sub     f
+tests/history3.sub     f
 tests/ifs.tests                f
 tests/ifs.right                f
+tests/ifs1.sub         f
 tests/ifs-posix.tests  f
 tests/ifs-posix.right  f
 tests/input-line.sh    f
@@ -1062,6 +1112,7 @@ tests/jobs2.sub           f
 tests/jobs3.sub                f
 tests/jobs4.sub                f
 tests/jobs5.sub                f
+tests/jobs6.sub                f
 tests/jobs.right       f
 tests/lastpipe.right   f
 tests/lastpipe.tests   f
@@ -1093,6 +1144,9 @@ tests/nameref15.sub       f
 tests/nameref16.sub    f
 tests/nameref17.sub    f
 tests/nameref18.sub    f
+tests/nameref19.sub    f
+tests/nameref20.sub    f
+tests/nameref21.sub    f
 tests/nameref.right    f
 tests/new-exp.tests    f
 tests/new-exp1.sub     f
@@ -1105,6 +1159,7 @@ tests/new-exp7.sub        f
 tests/new-exp8.sub     f
 tests/new-exp9.sub     f
 tests/new-exp10.sub    f
+tests/new-exp11.sub    f
 tests/new-exp.right    f
 tests/nquote.tests     f
 tests/nquote.right     f
@@ -1126,10 +1181,16 @@ tests/parser.right      f
 tests/parser1.sub      f
 tests/posix2.tests     f
 tests/posix2.right     f
+tests/posix2syntax.sub f
 tests/posixexp.tests   f
 tests/posixexp.right   f
 tests/posixexp1.sub    f
 tests/posixexp2.sub    f
+tests/posixexp3.sub    f
+tests/posixexp4.sub    f
+tests/posixexp5.sub    f
+tests/posixexp6.sub    f
+tests/posixexp7.sub    f
 tests/posixexp2.tests  f
 tests/posixexp2.right  f
 tests/posixpat.tests   f
@@ -1144,9 +1205,13 @@ tests/printf1.sub        f
 tests/printf2.sub      f
 tests/printf3.sub      f
 tests/printf4.sub      f
+tests/procsub.tests    f
+tests/procsub.right    f
+tests/procsub1.sub     f
 tests/quote.tests      f
 tests/quote.right      f
 tests/quote1.sub       f
+tests/quote2.sub       f
 tests/read.tests       f
 tests/read.right       f
 tests/read1.sub                f
@@ -1171,12 +1236,13 @@ tests/redir8.sub        f
 tests/redir9.sub       f
 tests/redir10.sub      f
 tests/redir11.sub      f
-tests/redir12.sub      f
 tests/rhs-exp.tests    f
 tests/rhs-exp.right    f
 tests/rhs-exp1.sub     f
 tests/rsh.tests                f
 tests/rsh.right                f
+tests/rsh1.sub         f
+tests/rsh2.sub         f
 tests/run-all          f
 tests/run-minimal      f
 tests/run-alias                f
@@ -1201,6 +1267,7 @@ tests/run-dbg-support     f
 tests/run-dbg-support2 f
 tests/run-dirstack     f
 tests/run-dollars      f
+tests/run-dynvar       f
 tests/run-errors       f
 tests/run-execscript   f
 tests/run-exp-tests    f
@@ -1242,6 +1309,7 @@ tests/run-posixpat        f
 tests/run-posixpipe    f
 tests/run-precedence   f
 tests/run-printf       f
+tests/run-procsub      f
 tests/run-quote                f
 tests/run-read         f
 tests/run-redir                f
@@ -1272,6 +1340,7 @@ tests/shopt.right f
 tests/strip.tests      f
 tests/strip.right      f
 tests/test.tests       f
+tests/test1.sub                f
 tests/test.right       f
 tests/tilde.tests      f
 tests/tilde.right      f
@@ -1285,6 +1354,7 @@ tests/trap2a.sub  f       755
 tests/trap3.sub                f
 tests/trap4.sub                f
 tests/trap5.sub                f
+tests/trap6.sub                f
 tests/type.tests       f
 tests/type.right       f
 tests/type1.sub                f
@@ -1295,7 +1365,7 @@ tests/unicode1.sub        f
 tests/unicode2.sub     f
 tests/unicode3.sub     f
 tests/varenv.right     f
-tests/varenv.sh                f
+tests/varenv.tests     f
 tests/varenv1.sub      f
 tests/varenv2.sub      f
 tests/varenv3.sub      f
@@ -1304,6 +1374,14 @@ tests/varenv5.sub        f
 tests/varenv6.sub      f
 tests/varenv7.sub      f
 tests/varenv8.sub      f
+tests/varenv9.sub      f
+tests/varenv10.sub     f
+tests/varenv11.sub     f
+tests/varenv12.sub     f
+tests/varenv13.sub     f
+tests/varenv14.sub     f
+tests/varenv15.sub     f
+tests/varenv15.in      f
 tests/version          f
 tests/version.mini     f
 tests/vredir.tests     f
index c7b62bc0540c5e5886d7dd050377c159b050a888..5fcb44b0172d07148799a380b38285205fa086e8 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile for bash-4.4, version 4.18
+# Makefile for bash-5.0, version 4.27
 #
-# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 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
@@ -41,6 +41,7 @@ infodir = @infodir@
 includedir = @includedir@
 datadir = @datadir@
 localedir = @localedir@
+pkgconfigdir = ${libdir}/pkgconfig
 
 loadablesdir = @loadablesdir@
 headersdir = @headersdir@
@@ -77,6 +78,7 @@ AR = @AR@
 ARFLAGS = @ARFLAGS@
 RANLIB = @RANLIB@
 SIZE = @SIZE@
+STRIP = strip
 
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -144,16 +146,23 @@ LOCAL_LDFLAGS = @LOCAL_LDFLAGS@
 
 SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS)
 
-BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \
+BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \
          $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES)
 
-CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)
+CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS)
 
 CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)
 
-LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS)
+BASE_LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS)
+LDFLAGS = ${ADDON_LDFLAGS} ${BASE_LDFLAGS} ${PROFILE_FLAGS} ${STATIC_LD}
 LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD)
 
+ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer
+ASAN_XLDFLAGS = -fsanitize=address
+
+GCOV_XCFLAGS = -fprofile-arcs -ftest-coverage
+GCOV_XLDFLAGS = -fprofile-arcs -ftest-coverage
+
 INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC)
 
 # Maybe add: -Wextra
@@ -222,7 +231,7 @@ SHLIB_SOURCE =      ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \
                ${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \
                ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \
                ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \
-               ${SH_LIBSRC}/shmbchar.c
+               ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c
 
 SHLIB_LIB = -lsh
 SHLIB_LIBNAME = libsh.a
@@ -583,22 +592,38 @@ $(Program):  .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP)
        @echo "   ***********************************************************"
        @echo
 
-bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG)
-       @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \
-            -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \
-            -e "s%!RELEASE!%$(Version)%" -e "s%!PATCHLEVEL!%$(PatchLevel)%" \
-            -e "s%!MACHTYPE!%$(MACHTYPE)%" -e "s%!RELSTATUS!%$(RELSTATUS)%" \
-            $(SUPPORT_SRC)bashbug.sh > $@
+bashbug: $(SDIR)/bashbug.sh config.h Makefile $(VERSPROG)
+       @sed -e "s%!PATCHLEVEL!%$(PatchLevel)%" \
+            $(SDIR)/bashbug.sh > $@
        @chmod a+rx bashbug
 
 strip: $(Program) .made
-       strip $(Program)
+       $(STRIP) $(Program)
        ls -l $(Program)
        -$(SIZE) $(Program)
 
 lint:
        ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made
 
+asan:
+       ${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made
+
+# cheating
+gcov:
+       ${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made
+
+
+# have to make this separate because making tests depend on $(PROGRAM)
+asan-tests: asan  $(TESTS_SUPPORT)
+       @-test -d tests || mkdir tests
+       @cp $(TESTS_SUPPORT) tests
+       @( cd $(srcdir)/tests && \
+               PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
+
+profiling-tests:       ${PROGRAM}
+       @test "X$$PROFILE_FLAGS" == "X" && { echo "profiling-tests: must be built with profiling enabled" >&2; exit 1; }
+       @${MAKE} ${MFLAGS} tests TESTSCRIPT=run-gprof
+
 version.h:  $(SOURCES) config.h Makefile patchlevel.h
        $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \
                && mv newversion.h version.h
@@ -810,7 +835,7 @@ install-headers-dirs:
        @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)
        @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/builtins
        @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/include
-       @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
+       @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(pkgconfigdir)
 
 install-headers: install-headers-dirs
        @for hf in $(INSTALLED_HEADERS) ; do \
@@ -825,14 +850,14 @@ install-headers: install-headers-dirs
        @for hf in $(CREATED_HEADERS) ; do \
                ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \
        done
-       $(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(libdir)/pkgconfig/bash.pc
+       -$(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc
 
 uninstall-headers:
        -( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) )
        -( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) )
        -( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) )
        -( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) )
-       -( $(RM) $(DESTDIR)$(libdir)/pkgconfig/bash.pc )
+       -( $(RM) $(DESTDIR)$(pkgconfigdir)/bash.pc )
 
 uninstall:     .made
        $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug
@@ -902,7 +927,7 @@ maintainer-clean:   basic-clean
        $(RM) $(CREATED_SUPPORT) Makefile pathnames.h
 
 maybe-clean:
-       -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \
+       -if test X"`cd $(topdir) && pwd -P`" != X"`cd $(BUILD_DIR) && pwd -P`" ; then \
                $(RM) parser-built y.tab.c y.tab.h ; \
        fi
 
@@ -981,19 +1006,19 @@ error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h
 error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-error.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+error.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h
 error.o: input.h execute_cmd.h 
 eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h
 eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 eval.o: input.h execute_cmd.h 
 execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h
 execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h
 execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h
@@ -1003,31 +1028,31 @@ expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h
 expr.o: ${BASHINCDIR}/chartypes.h
 findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h
 findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h
 findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h
 findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h
-findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h 
+findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h execute_cmd.h
 findcmd.o: ${BASHINCDIR}/chartypes.h
 flags.o: config.h flags.h 
 flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
-flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
+flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.h
 flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h
 general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-general.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+general.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h parser.h
 general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h
 general.o: ${BASHINCDIR}/chartypes.h
 hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h
 hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h pathnames.h hashlib.h
-hashcmd.o: quit.h sig.h
+hashcmd.o: quit.h sig.h flags.h
 hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1035,7 +1060,7 @@ hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
 hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
 input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h
-input.o: quit.h
+input.o: quit.h shell.h pathnames.h
 list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
@@ -1058,11 +1083,12 @@ make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h m
 make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h
 make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h
 make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h
+make_cmd.o: shell.h execute_cmd.h pathnames.h
 y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h
 y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h
+y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h execute_cmd.o
 y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h
 y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h
 pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
@@ -1089,7 +1115,7 @@ shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}
 shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h
 shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h
 shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h
@@ -1097,7 +1123,7 @@ sig.o: config.h bashtypes.h
 sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h
 sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h
 sig.o: ${DEFDIR}/builtext.h
 siglist.o: config.h bashtypes.h siglist.h trap.h 
@@ -1127,8 +1153,8 @@ test.o: ${DEFSRC}/common.h
 trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
-trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h
+trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h
 trap.o: signames.h $(DEFSRC)/common.h
 trap.o: ${DEFDIR}/builtext.h jobs.h
 unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h
@@ -1137,7 +1163,7 @@ variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINC
 variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h
 variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h
 variables.o: pcomplete.h  ${BASHINCDIR}/chartypes.h
@@ -1152,14 +1178,14 @@ jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDI
 jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
-jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
+jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h
 jobs.o: execute_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h 
 jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h
 jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h
 jobs.o: ${BASHINCDIR}/posixtime.h
 nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h
 nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h
-nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h
+nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h parser.h
 nojobs.o: $(DEFDIR)/builtext.h
 
 # shell features that may be compiled in
@@ -1175,6 +1201,7 @@ arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman
 arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
 arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.h
+arrayfunc.o: execute_cmd.h
 arrayfunc.o: $(DEFSRC)/common.h
 arrayfunc.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
 assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
@@ -1217,14 +1244,14 @@ bashhist.o: ${BASHINCDIR}/filecntl.h
 bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h
 bashhist.o: $(GLOB_LIBSRC)/strmatch.h
 bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
 bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
 bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h
 bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h
 bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h
@@ -1279,6 +1306,7 @@ mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 y.tab.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+pathexp.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
 print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
@@ -1310,12 +1338,12 @@ builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h
 builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h
 builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h 
 builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h
-builtins/common.o: ${DEFDIR}/builtext.h
+builtins/common.o: ${DEFDIR}/builtext.h parser.h
 builtins/common.o: ${BASHINCDIR}/chartypes.h
 builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h
 builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
-builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h 
+builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
 builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h
 builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h
 builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
@@ -1345,12 +1373,12 @@ builtins/bind.o: $(DEFSRC)/bashgetopt.h pathnames.h
 builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
 builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/break.o: pathnames.h
+builtins/break.o: pathnames.h execute_cmd.h
 builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h
 builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
 builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/builtin.o: pathnames.h
+builtins/builtin.o: pathnames.h execute_cmd.h
 builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
 builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
@@ -1391,33 +1419,34 @@ builtins/exit.o: bashtypes.h
 builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
 builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/exit.o: pathnames.h
+builtins/exit.o: pathnames.h execute_cmd.h
 builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h
 builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h 
 builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h 
 builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h 
-builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h
+builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h parser.h
 builtins/fc.o: ${BASHINCDIR}/chartypes.h
 builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h 
 builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
 builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/fg_bg.o: pathnames.h
+builtins/fg_bg.o: pathnames.h execute_cmd.h
 builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h 
 builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/getopts.o: pathnames.h
-builtins/hash.o: bashtypes.h 
+builtins/getopts.o: pathnames.h execute_cmd.h
+builtins/hash.o: bashtypes.h execute_cmd.h
 builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h
 builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h 
 builtins/hash.o: pathnames.h
 builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
+builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h
+builtins/help.o: conftypes.h quit.h execute_cmd.h
 builtins/help.o: $(GLOB_LIBSRC)/glob.h pathnames.h
-builtins/history.o: bashtypes.h pathnames.h
+builtins/history.o: bashtypes.h pathnames.h parser.h
 builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h
@@ -1457,16 +1486,16 @@ builtins/read.o: pathnames.h
 builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
-builtins/return.o: pathnames.h
+builtins/return.o: pathnames.h execute_cmd.h
 builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h
-builtins/set.o: pathnames.h
+builtins/set.o: pathnames.h parser.h
 builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h
 builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
 builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/setattr.o: pathnames.h flags.h
+builtins/setattr.o: pathnames.h flags.h execute_cmd.h
 builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
@@ -1481,7 +1510,7 @@ builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h
 builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
 builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h
-builtins/source.o: pathnames.h
+builtins/source.o: pathnames.h execute_cmd.h
 builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
@@ -1489,7 +1518,7 @@ builtins/suspend.o: pathnames.h
 builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
-builtins/test.o: test.h pathnames.h
+builtins/test.o: execute_cmd.h test.h pathnames.h
 builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
@@ -1503,7 +1532,7 @@ builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x
 builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h
 builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
 builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
-builtins/type.o: pathnames.h
+builtins/type.o: pathnames.h execute_cmd.h parser.h
 builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h 
@@ -1515,6 +1544,7 @@ builtins/umask.o: ${BASHINCDIR}/chartypes.h pathnames.h
 builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
 builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
 builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
+builtins/wait.o: execute_cmd.h
 builtins/wait.o: ${BASHINCDIR}/chartypes.h pathnames.h
 
 builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h
diff --git a/NEWS b/NEWS
index 931dc846b3aa13a21223a9979bda268fba6e811c..9e4570b2a6950fef326f33404234cbbfe7b84270 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,181 @@
+This is a terse description of the new features added to bash-5.0 since
+the release of bash-4.4.  As always, the manual page (doc/bash.1) is
+the place to look for complete descriptions.
+
+1.  New Features in Bash
+
+a. The `wait' builtin can now wait for the last process substitution created.
+
+b. There is an EPOCHSECONDS variable, which expands to the time in seconds
+   since the Unix epoch.
+
+c. There is an EPOCHREALTIME variable, which expands to the time in seconds
+   since the Unix epoch with microsecond granularity.
+
+d. New loadable builtins: rm, stat, fdflags.
+
+e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment.
+
+f. When supplied a numeric argument, the shell-expand-line bindable readline
+   command does not perform quote removal and suppresses command and process
+   substitution.
+
+g. `history -d' understands negative arguments: negative arguments offset from
+   the end of the history list.
+
+h. The `name' argument to the `coproc' reserved word now undergoes word
+   expansion, so unique coprocs can be created in loops.
+
+i. A nameref name resolution loop in a function now resolves to a variable by
+   that name in the global scope.
+
+j. The `wait' builtin now has a `-f' option, which signfies to wait until the
+   specified job or process terminates, instead of waiting until it changes
+   state.
+
+k. There is a define in config-top.h that allows the shell to use a static
+   value for $PATH, overriding whatever is in the environment at startup, for
+   use by the restricted shell.
+
+l. Process substitution does not inherit the `v' option, like command
+   substitution.
+
+m. If a non-interactive shell with job control enabled detects that a foreground
+   job died due to SIGINT, it acts as if it received the SIGINT.
+
+n. The SIGCHLD trap is run once for each exiting child process even if job
+   control is not enabled when the shell is in Posix mode.
+
+o. A new shopt option: localvar_inherit; if set, a local variable inherits the
+   value of a variable with the same name at the nearest preceding scope.
+
+p. `bind -r' now checks whether a key sequence is bound before binding it to
+   NULL, to avoid creating keymaps for a multi-key sequence.
+
+q. A numeric argument to the line editing `operate-and-get-next' command
+   specifies which history entry to use.
+
+r. The positional parameters are now assigned before running the shell startup
+   files, so startup files can use $@.
+
+s. There is a compile-time option that forces the shell to disable the check
+   for an inherited OLDPWD being a directory.
+
+t. The `history' builtin can now delete ranges of history entries using
+   `-d start-end'.
+
+u. The `vi-edit-and-execute-command' bindable readline command now puts readline
+   back in vi insertion mode after executing commands from the edited file.
+
+v. The command completion code now matches aliases and shell function names
+   case-insensitively if the readline completion-ignore-case variable is set.
+
+w. There is a new `assoc_expand_once' shell option that attempts to expand
+   associative array subscripts only once.
+
+x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended
+   debugging mode is active. The old behavior of unconditionally setting them
+   is available as part of the shell compatibility options.
+
+y. The `umask' builtin now allows modes and masks greater than octal 777.
+
+z. The `times' builtin now honors the current locale when printing a decimal
+   point.
+
+aa. There is a new (disabled by default, undocumented) shell option to enable
+    and disable sending history to syslog at runtime.
+
+bb. Bash no longer allows variable assignments preceding a special builtin that
+    changes variable attributes to propagate back to the calling environment
+    unless the compatibility level is 44 or lower.
+
+cc. You can set the default value for $HISTSIZE at build time in config-top.h.
+
+dd. The `complete' builtin now accepts a -I option that applies the completion
+    to the initial word on the line.
+
+ee.  The internal bash malloc now uses mmap (if available) to satisfy requests
+    greater than 128K bytes, so free can use mfree to return the pages to the
+    kernel.
+
+ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup
+    unless it's in debugging mode, as the documentation has always said, but
+    will dynamically create them if a script references them at the top level
+    without having enabled debugging mode.
+
+gg. The localvar_inherit option will not attempt to inherit a value from a
+    variable of an incompatible type (indexed vs. associative arrays, for
+    example).
+
+hh. The `globasciiranges' option is now enabled by default; it can be set to
+    off by default at configuration time.
+
+ii. Associative and indexed arrays now allow subscripts consisting solely of
+    whitespace.
+
+jj. `checkwinsize' is now enabled by default.
+
+kk. The `localvar_unset' shopt option is now visible and documented.
+
+ll. The `progcomp_alias' shopt option is now visible and documented.
+
+mm. The signal name processing code now understands `SIGRTMIN+n' all the way
+    up to SIGRTMAX.
+
+nn. There is a new `seq' loadable builtin.
+
+oo. Trap execution now honors the (internal) max invocations of `eval', since
+    traps are supposed to be executed as if using `eval'.
+
+pp. The $_ variable doesn't change when the shell executes a command that forks.
+
+qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though
+    conforming applications aren't supposed to use them.
+
+rr. POSIX mode now enables the `shift_verbose' option.
+
+2.  New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+   Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+   commands, which move the cursor to the same column in the next, or previous,
+   physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+   characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+   respond to signals that readline catches while waiting for input using
+   a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+   inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+   inputrc file. Allowable operators are equality and inequality; string
+   variables may be compared to a value; boolean variables must be compared to
+   either `on' or `off'; variable names are separated from the operator by
+   whitespace.
+
+h. The history expansion library now understands command and process
+   substitution and extended globbing and allows them to appear anywhere in a
+   word.
+
+i. The history library has a new variable that allows applications to set the
+   initial quoting state, so quoting state can be inherited from a previous
+   line.
+
+j. Readline now allows application-defined keymap names; there is a new public
+   function, rl_set_keymap_name(), to do that.
+
+k. The "Insert" keypad key, if available, now puts readline into overwrite
+   mode.
+
+-------------------------------------------------------------------------------
 This is a terse description of the new features added to bash-4.4 since
 the release of bash-4.3.  As always, the manual page (doc/bash.1) is
 the place to look for complete descriptions.
diff --git a/POSIX b/POSIX
index 84ab6bea68351e6d984f743153ad0ffc5aea3e65..f3f4a0b7ec41531bfb8cff3a129ce8b441a3f354 100644 (file)
--- a/POSIX
+++ b/POSIX
@@ -11,205 +11,224 @@ files.
 
 The following list is what's changed when 'POSIX mode' is in effect:
 
-  1. When a command in the hash table no longer exists, Bash will
+  1. Bash ensures that the 'POSIXLY_CORRECT' variable is set.
+
+  2. When a command in the hash table no longer exists, Bash will
      re-search '$PATH' to find the new location.  This is also available
      with 'shopt -s checkhash'.
 
-  2. The message printed by the job control code and builtins when a job
+  3. The message printed by the job control code and builtins when a job
      exits with a non-zero status is 'Done(status)'.
 
-  3. The message printed by the job control code and builtins when a job
+  4. The message printed by the job control code and builtins when a job
      is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example,
      'SIGTSTP'.
 
-  4. Alias expansion is always enabled, even in non-interactive shells.
+  5. Alias expansion is always enabled, even in non-interactive shells.
 
-  5. Reserved words appearing in a context where reserved words are
+  6. Reserved words appearing in a context where reserved words are
      recognized do not undergo alias expansion.
 
-  6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+  7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
      and '!!' to '!' are enabled, and parameter expansion is performed
      on the values of 'PS1' and 'PS2' regardless of the setting of the
      'promptvars' option.
 
-  7. The POSIX startup files are executed ('$ENV') rather than the
+  8. The POSIX startup files are executed ('$ENV') rather than the
      normal Bash files.
 
-  8. Tilde expansion is only performed on assignments preceding a
+  9. Tilde expansion is only performed on assignments preceding a
      command name, rather than on all assignment statements on the line.
 
-  9. The default history file is '~/.sh_history' (this is the default
+  10. The default history file is '~/.sh_history' (this is the default
      value of '$HISTFILE').
 
-  10. Redirection operators do not perform filename expansion on the
+  11. Redirection operators do not perform filename expansion on the
      word in the redirection unless the shell is interactive.
 
-  11. Redirection operators do not perform word splitting on the word in
+  12. Redirection operators do not perform word splitting on the word in
      the redirection.
 
-  12. Function names must be valid shell 'name's.  That is, they may not
+  13. Function names must be valid shell 'name's.  That is, they may not
      contain characters other than letters, digits, and underscores, and
      may not start with a digit.  Declaring a function with an invalid
      name causes a fatal syntax error in non-interactive shells.
 
-  13. Function names may not be the same as one of the POSIX special
+  14. Function names may not be the same as one of the POSIX special
      builtins.
 
-  14. POSIX special builtins are found before shell functions during
+  15. POSIX special builtins are found before shell functions during
      command lookup.
 
-  15. Literal tildes that appear as the first character in elements of
+  16. When printing shell function definitions (e.g., by 'type'), Bash
+     does not print the 'function' keyword.
+
+  17. Literal tildes that appear as the first character in elements of
      the 'PATH' variable are not expanded as described above under *note
      Tilde Expansion::.
 
-  16. The 'time' reserved word may be used by itself as a command.  When
+  18. The 'time' reserved word may be used by itself as a command.  When
      used in this way, it displays timing statistics for the shell and
      its completed children.  The 'TIMEFORMAT' variable controls the
      format of the timing information.
 
-  17. When parsing and expanding a ${...} expansion that appears within
+  19. When parsing and expanding a ${...} expansion that appears within
      double quotes, single quotes are no longer special and cannot be
      used to quote a closing brace or other special character, unless
      the operator is one of those defined to perform pattern removal.
      In this case, they do not have to appear as matched pairs.
 
-  18. The parser does not recognize 'time' as a reserved word if the
+  20. The parser does not recognize 'time' as a reserved word if the
      next token begins with a '-'.
 
-  19. The '!' character does not introduce history expansion within a
+  21. The '!' character does not introduce history expansion within a
      double-quoted string, even if the 'histexpand' option is enabled.
 
-  20. If a POSIX special builtin returns an error status, a
+  22. If a POSIX special builtin returns an error status, a
      non-interactive shell exits.  The fatal errors are those listed in
      the POSIX standard, and include things like passing incorrect
      options, redirection errors, variable assignment errors for
      assignments preceding the command name, and so on.
 
-  21. A non-interactive shell exits with an error status if a variable
+  23. 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.
 
-  22. A non-interactive shell exits with an error status if a variable
+  24. A non-interactive shell exits with an error status if a variable
      assignment error occurs in an assignment statement preceding a
      special builtin, but not with any other simple command.
 
-  23. A non-interactive shell exits with an error status if the
+  25. A non-interactive shell exits with an error status if the
      iteration variable in a 'for' statement or the selection variable
      in a 'select' statement is a readonly variable.
 
-  24. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
+  26. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
      found.
 
-  25. Non-interactive shells exit if a syntax error in an arithmetic
+  27. Non-interactive shells exit if a syntax error in an arithmetic
      expansion results in an invalid expression.
 
-  26. Non-interactive shells exit on word expansion errors.
+  28. Non-interactive shells exit if a parameter expansion error occurs.
 
-  27. Non-interactive shells exit if there is a syntax error in a script
+  29. Non-interactive shells exit if there is a syntax error in a script
      read with the '.' or 'source' builtins, or in a string processed by
      the 'eval' builtin.
 
-  28. Process substitution is not available.
+  30. Process substitution is not available.
 
-  29. While variable indirection is available, it may not be applied to
+  31. While variable indirection is available, it may not be applied to
      the '#' and '?' special parameters.
 
-  30. Assignment statements preceding POSIX special builtins persist in
+  32. When expanding the '*' special parameter in a pattern context
+     where the expansion is double-quoted does not treat the '$*' as if
+     it were double-quoted.
+
+  33. Assignment statements preceding POSIX special builtins persist in
      the shell environment after the builtin completes.
 
-  31. Assignment statements preceding shell function calls persist in
+  34. Assignment statements preceding shell function calls persist in
      the shell environment after the function returns, as if a POSIX
      special builtin command had been executed.
 
-  32. The 'command' builtin does not prevent builtins that take
+  35. The 'command' builtin does not prevent builtins that take
      assignment statements as arguments from expanding them as
      assignment statements; when not in POSIX mode, assignment builtins
      lose their assignment statement expansion properties when preceded
      by 'command'.
 
-  33. The 'bg' builtin uses the required format to describe each job
+  36. The 'bg' builtin uses the required format to describe each job
      placed in the background, which does not include an indication of
      whether the job is the current or previous job.
 
-  34. The output of 'kill -l' prints all the signal names on a single
+  37. The output of 'kill -l' prints all the signal names on a single
      line, separated by spaces, without the 'SIG' prefix.
 
-  35. The 'kill' builtin does not accept signal names with a 'SIG'
+  38. The 'kill' builtin does not accept signal names with a 'SIG'
      prefix.
 
-  36. The 'export' and 'readonly' builtin commands display their output
+  39. The 'export' and 'readonly' builtin commands display their output
      in the format required by POSIX.
 
-  37. The 'trap' builtin displays signal names without the leading
+  40. The 'trap' builtin displays signal names without the leading
      'SIG'.
 
-  38. The 'trap' builtin doesn't check the first argument for a possible
+  41. The 'trap' builtin doesn't check the first argument for a possible
      signal specification and revert the signal handling to the original
      disposition if it is, unless that argument consists solely of
      digits and is a valid signal number.  If users want to reset the
      handler for a given signal to the original disposition, they should
      use '-' as the first argument.
 
-  39. The '.' and 'source' builtins do not search the current directory
+  42. The '.' and 'source' builtins do not search the current directory
      for the filename argument if it is not found by searching 'PATH'.
 
-  40. Enabling POSIX mode has the effect of setting the
+  43. Enabling POSIX mode has the effect of setting the
      'inherit_errexit' option, so subshells spawned to execute command
      substitutions inherit the value of the '-e' option from the parent
      shell.  When the 'inherit_errexit' option is not enabled, Bash
      clears the '-e' option in such subshells.
 
-  41. When the 'alias' builtin displays alias definitions, it does not
+  44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+     option, so numeric arguments to 'shift' that exceed the number of
+     positional parameters will result in an error message.
+
+  45. When the 'alias' builtin displays alias definitions, it does not
      display them with a leading 'alias ' unless the '-p' option is
      supplied.
 
-  42. When the 'set' builtin is invoked without options, it does not
+  46. When the 'set' builtin is invoked without options, it does not
      display shell function names and definitions.
 
-  43. When the 'set' builtin is invoked without options, it displays
+  47. When the 'set' builtin is invoked without options, it displays
      variable values without quotes, unless they contain shell
      metacharacters, even if the result contains nonprinting characters.
 
-  44. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+  48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
      constructed from '$PWD' and the directory name supplied as an
      argument does not refer to an existing directory, 'cd' will fail
      instead of falling back to PHYSICAL mode.
 
-  45. The 'pwd' builtin verifies that the value it prints is the same as
+  49. When the 'cd' builtin cannot change a directory because the length
+     of the pathname constructed from '$PWD' and the directory name
+     supplied as an argument exceeds PATH_MAX when all symbolic links
+     are expanded, 'cd' will fail instead of attempting to use only the
+     supplied directory name.
+
+  50. The 'pwd' builtin verifies that the value it prints is the same as
      the current directory, even if it is not asked to check the file
      system with the '-P' option.
 
-  46. When listing the history, the 'fc' builtin does not include an
+  51. When listing the history, the 'fc' builtin does not include an
      indication of whether or not a history entry has been modified.
 
-  47. The default editor used by 'fc' is 'ed'.
+  52. The default editor used by 'fc' is 'ed'.
 
-  48. The 'type' and 'command' builtins will not report a non-executable
+  53. The 'type' and 'command' builtins will not report a non-executable
      file as having been found, though the shell will attempt to execute
      such a file if it is the only so-named file found in '$PATH'.
 
-  49. The 'vi' editing mode will invoke the 'vi' editor directly when
+  54. The 'vi' editing mode will invoke the 'vi' editor directly when
      the 'v' command is run, instead of checking '$VISUAL' and
      '$EDITOR'.
 
-  50. When the 'xpg_echo' option is enabled, Bash does not attempt to
+  55. When the 'xpg_echo' option is enabled, Bash does not attempt to
      interpret any arguments to 'echo' as options.  Each argument is
      displayed, after escape characters are converted.
 
-  51. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+  56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
      and '-f' options.
 
-  52. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+  57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
      interrupt the 'wait' builtin and cause it to return immediately.
      The trap command is run once for each child that exits.
 
-  53. The 'read' builtin may be interrupted by a signal for which a trap
+  58. The 'read' builtin may be interrupted by a signal for which a trap
      has been set.  If Bash receives a trapped signal while executing
      'read', the trap handler executes and 'read' returns an exit status
      greater than 128.
 
-  54. Bash removes an exited background process's status from the list
+  59. Bash removes an exited background process's status from the list
      of such statuses after the 'wait' builtin is used to obtain it.
 
 There is other POSIX behavior that Bash does not implement by default
diff --git a/README b/README
index ad87aa8a6b060d73970802f841a21548bf2f2f99..c28d63df891c0cac3a4c1eb2336b0c8b1d75b803 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 Introduction
 ============
 
-This is GNU Bash, version 4.4.  Bash is the GNU Project's Bourne
+This is GNU Bash, version 5.0.  Bash is the GNU Project's Bourne
 Again SHell, a complete implementation of the POSIX shell spec,
 but also with interactive command line editing, job control on
 architectures that support it, csh-like features such as history
@@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ
 from the POSIX spec and a description of the Bash `posix mode'.
 
 There are some user-visible incompatibilities between this version
-of Bash and previous widely-distributed versions, bash-4.2 and
-bash-4.3.  For details, see the file COMPAT.  The NEWS file tersely
+of Bash and previous widely-distributed versions, bash-4.3 and
+bash-4.4.  For details, see the file COMPAT.  The NEWS file tersely
 lists features that are new in this release. 
 
 Bash is free software, distributed under the terms of the [GNU] General
@@ -88,6 +88,18 @@ to bash-maintainers@gnu.org.
 While the Bash maintainers do not promise to fix all bugs, we would
 like this shell to be the best that we can make it.
 
+Other Packages
+==============
+
+This distribution includes, in examples/bash-completion, a recent version
+of the `bash-completion' package, which provides programmable completions
+for a number of commands. It's available as a package in many distributions,
+and that is the first place from which to obtain it. If it's not a package
+from your vendor, you may install the included version.
+
+The latest version of bash-completion is always available from
+https://github.com/scop/bash-completion.
+
 Enjoy!
 
 Chet Ramey
index d3bac077b106023b5c2ea91af5088a37e8916b00..1413267fc1689b5adfe4ed355a3409af27954060 100644 (file)
@@ -1,4 +1,4 @@
-dnl
+nl
 dnl Bash specific tests
 dnl
 dnl Some derived from PDKSH 5.1.3 autoconf tests
@@ -962,7 +962,8 @@ AC_CACHE_VAL(bash_cv_termcap_lib,
     [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
         [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
            [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
-               bash_cv_termcap_lib=gnutermcap)])])])])])
+                [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+                   bash_cv_termcap_lib=gnutermcap)])])])])])])
 if test "X$_bash_needmsg" = "Xyes"; then
 AC_MSG_CHECKING(which library has the termcap functions)
 fi
@@ -1307,7 +1308,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
 
 typedef RETSIGTYPE sigfunc();
 
-int nsigint;
+volatile int nsigint;
 
 #ifdef HAVE_POSIX_SIGNALS
 sigfunc *
@@ -1357,7 +1358,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
 [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
 AC_MSG_CHECKING(for presence of necessary job control definitions)
 AC_CACHE_VAL(bash_cv_job_control_missing,
-[AC_TRY_RUN([
+[AC_TRY_COMPILE([
 #include <sys/types.h>
 #ifdef HAVE_SYS_WAIT_H
 #include <sys/wait.h>
@@ -1367,42 +1368,38 @@ AC_CACHE_VAL(bash_cv_job_control_missing,
 #endif
 #include <signal.h>
 
-/* Add more tests in here as appropriate. */
-main()
-{
+/* add more tests in here as appropriate */
+
 /* signal type */
 #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
-exit(1);
+#error
 #endif
 
 /* signals and tty control. */
 #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
-exit (1);
+#error
 #endif
 
 /* process control */
 #if !defined (WNOHANG) || !defined (WUNTRACED) 
-exit(1);
+#error
 #endif
 
 /* Posix systems have tcgetpgrp and waitpid. */
 #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
-exit(1);
+#error
 #endif
 
 #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
-exit(1);
+#error
 #endif
 
 /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
 #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
-exit(1);
+#error
 #endif
 
-exit(0);
-}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
-    [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
-     bash_cv_job_control_missing=missing]
+], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing
 )])
 AC_MSG_RESULT($bash_cv_job_control_missing)
 if test $bash_cv_job_control_missing = missing; then
@@ -1585,9 +1582,7 @@ fi
 AC_DEFUN(BASH_CHECK_DEV_STDIN,
 [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
 AC_CACHE_VAL(bash_cv_dev_stdin,
-[if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then
-   bash_cv_dev_stdin=present
- elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then
+[if (exec test -r /dev/stdin < /dev/null) ; then
    bash_cv_dev_stdin=present
  else
    bash_cv_dev_stdin=absent
@@ -1798,6 +1793,8 @@ if test "$am_cv_func_iconv" = yes; then
        LIBS="$OLDLIBS"
 fi
 
+AC_CHECK_SIZEOF(wchar_t, 4)
+
 ])
 
 dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
@@ -1856,7 +1853,7 @@ main()
 ],
 ac_cv_rl_version=`cat conftest.rlv`,
 ac_cv_rl_version='0.0',
-ac_cv_rl_version='6.3')])
+ac_cv_rl_version='8.0')])
 
 CFLAGS="$_save_CFLAGS"
 LDFLAGS="$_save_LDFLAGS"
@@ -4195,3 +4192,71 @@ fi
 AC_MSG_RESULT($bash_cv_wexitstatus_offset)
 AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
 ])
+
+AC_DEFUN([BASH_FUNC_SBRK],
+[
+  AC_CHECK_FUNCS_ONCE([sbrk])
+  if test X$ac_cv_func_sbrk = Xyes; then
+    AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk],
+      [AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int c, char **v)
+{
+       void *x;
+
+       x = sbrk (4096);
+       exit ((x == (void *)-1) ? 1 : 0);
+}
+], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk,
+   [AC_MSG_WARN([cannot check working sbrk if cross-compiling])
+    bash_cv_func_sbrk=yes]
+)])
+    if test $bash_cv_func_sbrk = no; then
+      ac_cv_func_sbrk=no
+    fi
+  fi
+  if test $ac_cv_func_sbrk = no; then
+    AC_DEFINE(HAVE_SBRK, 0,
+      [Define if you have a working sbrk function.])
+  fi
+])
+
+AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK,
+[AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes)
+AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback,
+[AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fnmatch.h>
+#include <locale.h>
+
+char *pattern = "[[=a=]]";
+
+/* char *string = "ä"; */
+unsigned char string[4] = { '\xc3', '\xa4', '\0' };
+
+int
+main (int c, char **v)
+{
+  setlocale (LC_ALL, "de_DE.UTF-8");
+  if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
+    exit (0);
+  exit (1);
+}
+
+], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no,
+   [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no)
+    bash_cv_fnmatch_equiv_fallback=no]
+)])
+AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback)
+if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then
+    bash_cv_fnmatch_equiv_value=1
+else
+    bash_cv_fnmatch_equiv_value=0
+fi
+AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes])
+])
diff --git a/alias.c b/alias.c
index 8b3f22898ff67267da5065adf18221beaa451148..74ae87009a614a778dd5001273d2048a63a558a6 100644 (file)
--- a/alias.c
+++ b/alias.c
@@ -158,6 +158,10 @@ free_alias_data (data)
   register alias_t *a;
 
   a = (alias_t *)data;
+
+  if (a->flags & AL_BEINGEXPANDED)
+    clear_string_list_expander (a);    /* call back to the parser */
+
   free (a->value);
   free (a->name);
   free (data);
diff --git a/alias.h b/alias.h
index 4d0075f85c97409271dd64074abdc5ee9fbeb235..87174a3225bb5bb2179668db7698ea436b6252c8 100644 (file)
--- a/alias.h
+++ b/alias.h
@@ -67,4 +67,7 @@ extern char *alias_expand_word __P((char *));
 /* Return a new line, with any aliases expanded. */
 extern char *alias_expand __P((char *));
 
+/* Helper definition for the parser */
+extern void clear_string_list_expander __P((alias_t *));
+
 #endif /* _ALIAS_H_ */
diff --git a/array.c b/array.c
index 6a6db77637b2321b2d02279893ca3508537f5f1e..bca18c5441a11b7f1e4cc9094b3ae7f2361bbeaf 100644 (file)
--- a/array.c
+++ b/array.c
@@ -9,7 +9,7 @@
  * chet@ins.cwru.edu
  */
 
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
                ae->prev = new; \
                new->next = ae; \
        } while(0)
+       
+#define ADD_AFTER(ae, new) \
+       do { \
+               ae->next->prev = new; \
+               new->next = ae->next; \
+               new->prev = ae; \
+               ae->next = new; \
+       } while (0)
 
 static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int));
 
-/* lastref should be moved into the array structure so each array can be
-   optimized separately */
-
-static ARRAY *lastarray = 0;
-static ARRAY_ELEMENT *lastref = 0;
+static char *spacesep = " ";
 
-#define IS_LASTREF(a)  (lastarray && (a) == lastarray)
+#define IS_LASTREF(a)  (a->lastref)
 
 #define LASTREF_START(a, i) \
-       (IS_LASTREF(a) && i >= element_index(lastref)) ? lastref \
-                                                      : element_forw(a->head)
-
-#define INVALIDATE_LASTREF(a) \
-do { \
-       if ((a) == lastarray) { \
-               lastarray = 0; \
-               lastref = 0; \
-       } \
-} while (0)
-
-#define SET_LASTREF(a, e) \
-do { \
-       lastarray = (a); \
-       lastref = (e); \
-} while (0)
-
-#define UNSET_LASTREF() \
-do { \
-       lastarray = 0; \
-       lastref = 0; \
-} while (0)
+       (IS_LASTREF(a) && i >= element_index(a->lastref)) ? a->lastref \
+                                                         : element_forw(a->head)
+
+#define LASTREF(a)     (a->lastref ? a->lastref : element_forw(a->head))
+
+#define INVALIDATE_LASTREF(a)  a->lastref = 0
+#define SET_LASTREF(a, e)      a->lastref = (e)
+#define UNSET_LASTREF(a)       a->lastref = 0;
 
 ARRAY *
 array_create()
@@ -93,10 +83,11 @@ array_create()
        ARRAY   *r;
        ARRAY_ELEMENT   *head;
 
-       r =(ARRAY *)xmalloc(sizeof(ARRAY));
+       r = (ARRAY *)xmalloc(sizeof(ARRAY));
        r->type = array_indexed;
        r->max_index = -1;
        r->num_elements = 0;
+       r->lastref = (ARRAY_ELEMENT *)0;
        head = array_create_element(-1, (char *)NULL);  /* dummy head */
        head->prev = head->next = head;
        r->head = head;
@@ -149,6 +140,8 @@ ARRAY       *a;
        for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
                new = array_create_element(element_index(ae), element_value(ae));
                ADD_BEFORE(a1->head, new);
+               if (ae == LASTREF(a))
+                       SET_LASTREF(a1, new);
        }
        return(a1);
 }
@@ -391,7 +384,6 @@ array_remove_quoted_nulls(array)
 ARRAY  *array;
 {
        ARRAY_ELEMENT   *a;
-       char    *t;
 
        if (array == 0 || array_head(array) == 0 || array_empty(array))
                return (ARRAY *)NULL;
@@ -414,8 +406,8 @@ int starsub, quoted;
        ARRAY           *a2;
        ARRAY_ELEMENT   *h, *p;
        arrayind_t      i;
-       char            *ifs, *sifs, *t;
-       int             slen;
+       char            *t;
+       WORD_LIST       *wl;
 
        p = a ? array_head (a) : 0;
        if (p == 0 || array_empty (a) || start > array_max_index(a))
@@ -440,32 +432,12 @@ int       starsub, quoted;
 
        a2 = array_slice(a, h, p);
 
-       if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-               array_quote(a2);
-       else
-               array_quote_escapes(a2);
-
-       if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) {
-               /* ${array[*]} */
-               array_remove_quoted_nulls (a2);
-               sifs = ifs_firstchar ((int *)NULL);
-               t = array_to_string (a2, sifs, 0);
-               free (sifs);
-       } else if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) {
-               /* ${array[@]} */
-               sifs = ifs_firstchar (&slen);
-               ifs = getifs ();
-               if (ifs == 0 || *ifs == 0) {
-                       if (slen < 2)
-                               sifs = xrealloc(sifs, 2);
-                       sifs[0] = ' ';
-                       sifs[1] = '\0';
-               }
-               t = array_to_string (a2, sifs, 0);
-               free (sifs);
-       } else
-               t = array_to_string (a2, " ", 0);
+       wl = array_to_word_list(a2);
        array_dispose(a2);
+       if (wl == 0)
+               return (char *)NULL;
+       t = string_list_pos_params(starsub ? '*' : '@', wl, quoted);
+       dispose_words(wl);
 
        return t;
 }
@@ -476,46 +448,28 @@ ARRAY     *a;
 char   *pat, *rep;
 int    mflags;
 {
-       ARRAY           *a2;
-       ARRAY_ELEMENT   *e;
-       char    *t, *sifs, *ifs;
-       int     slen;
+       char    *t;
+       int     pchar, qflags;
+       WORD_LIST       *wl, *save;
 
        if (a == 0 || array_head(a) == 0 || array_empty(a))
                return ((char *)NULL);
 
-       a2 = array_copy(a);
-       for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) {
-               t = pat_subst(element_value(e), pat, rep, mflags);
-               FREE(element_value(e));
-               e->value = t;
+       wl = array_to_word_list(a);
+       if (wl == 0)
+               return (char *)NULL;
+
+       for (save = wl; wl; wl = wl->next) {
+               t = pat_subst (wl->word->word, pat, rep, mflags);
+               FREE (wl->word->word);
+               wl->word->word = t;
        }
 
-       if (mflags & MATCH_QUOTED)
-               array_quote(a2);
-       else
-               array_quote_escapes(a2);
-
-       if (mflags & MATCH_STARSUB) {
-               array_remove_quoted_nulls (a2);
-               sifs = ifs_firstchar((int *)NULL);
-               t = array_to_string (a2, sifs, 0);
-               free(sifs);
-       } else if (mflags & MATCH_QUOTED) {
-               /* ${array[@]} */
-               sifs = ifs_firstchar (&slen);
-               ifs = getifs ();
-               if (ifs == 0 || *ifs == 0) {
-                       if (slen < 2)
-                               sifs = xrealloc (sifs, 2);
-                       sifs[0] = ' ';
-                       sifs[1] = '\0';
-               }
-               t = array_to_string (a2, sifs, 0);
-               free(sifs);
-       } else
-               t = array_to_string (a2, " ", 0);
-       array_dispose (a2);
+       pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+       qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+
+       t = string_list_pos_params (pchar, save, qflags);
+       dispose_words(save);
 
        return t;
 }
@@ -527,49 +481,32 @@ char      *pat;
 int    modop;
 int    mflags;
 {
-       ARRAY           *a2;
-       ARRAY_ELEMENT   *e;
-       char    *t, *sifs, *ifs;
-       int     slen;
+       char    *t;
+       int     pchar, qflags;
+       WORD_LIST       *wl, *save;
 
        if (a == 0 || array_head(a) == 0 || array_empty(a))
                return ((char *)NULL);
 
-       a2 = array_copy(a);
-       for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) {
-               t = sh_modcase(element_value(e), pat, modop);
-               FREE(element_value(e));
-               e->value = t;
+       wl = array_to_word_list(a);
+       if (wl == 0)
+               return ((char *)NULL);
+
+       for (save = wl; wl; wl = wl->next) {
+               t = sh_modcase(wl->word->word, pat, modop);
+               FREE(wl->word->word);
+               wl->word->word = t;
        }
 
-       if (mflags & MATCH_QUOTED)
-               array_quote(a2);
-       else
-               array_quote_escapes(a2);
-
-       if (mflags & MATCH_STARSUB) {
-               array_remove_quoted_nulls (a2);
-               sifs = ifs_firstchar((int *)NULL);
-               t = array_to_string (a2, sifs, 0);
-               free(sifs);
-       } else if (mflags & MATCH_QUOTED) {
-               /* ${array[@]} */
-               sifs = ifs_firstchar (&slen);
-               ifs = getifs ();
-               if (ifs == 0 || *ifs == 0) {
-                       if (slen < 2)
-                               sifs = xrealloc (sifs, 2);
-                       sifs[0] = ' ';
-                       sifs[1] = '\0';
-               }
-               t = array_to_string (a2, sifs, 0);
-               free(sifs);
-       } else
-               t = array_to_string (a2, " ", 0);
-       array_dispose (a2);
+       pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+       qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+
+       t = string_list_pos_params (pchar, save, qflags);
+       dispose_words(save);
 
        return t;
 }
+
 /*
  * Allocate and return a new array element with index INDEX and value
  * VALUE.
@@ -618,6 +555,8 @@ arrayind_t  i;
 char   *v;
 {
        register ARRAY_ELEMENT *new, *ae, *start;
+       arrayind_t startind;
+       int direction;
 
        if (a == 0)
                return(-1);
@@ -633,6 +572,12 @@ char       *v;
                a->num_elements++;
                SET_LASTREF(a, new);
                return(0);
+       } else if (i < array_first_index(a)) {
+               /* Hook at the beginning */
+               ADD_AFTER(a->head, new);
+               a->num_elements++;
+               SET_LASTREF(a, new);
+               return(0);
        }
 #if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT
        /*
@@ -640,26 +585,48 @@ char      *v;
         * handle optimizes the case of sequential or almost-sequential
         * assignments that are not at the end of the array.
         */
-       start = LASTREF_START(a, i);
+       start = LASTREF(a);
+       /* Use same strategy as array_reference to avoid paying large penalty
+          for semi-random assignment pattern. */
+       startind = element_index(start);
+       if (i < startind/2) {
+               start = element_forw(a->head);
+               startind = element_index(start);
+               direction = 1;
+       } else if (i >= startind) {
+               direction = 1;
+       } else {
+               direction = -1;
+       }
 #else
        start = element_forw(ae->head);
+       startind = element_index(start);
+       direction = 1;
 #endif
-       for (ae = start; ae != a->head; ae = element_forw(ae)) {
+       for (ae = start; ae != a->head; ) {
                if (element_index(ae) == i) {
                        /*
                         * Replacing an existing element.
                         */
-                       array_dispose_element(new);
                        free(element_value(ae));
-                       ae->value = v ? savestring(v) : (char *)NULL;
+                       /* Just swap in the new value */
+                       ae->value = new->value;
+                       new->value = 0;
+                       array_dispose_element(new);
                        SET_LASTREF(a, ae);
                        return(0);
-               } else if (element_index(ae) > i) {
+               } else if (direction == 1 && element_index(ae) > i) {
                        ADD_BEFORE(ae, new);
                        a->num_elements++;
                        SET_LASTREF(a, new);
                        return(0);
+               } else if (direction == -1 && element_index(ae) < i) {
+                       ADD_AFTER(ae, new);
+                       a->num_elements++;
+                       SET_LASTREF(a, new);
+                       return(0);
                }
+               ae = direction == 1 ? element_forw(ae) : element_back(ae);
        }
        array_dispose_element(new);
        INVALIDATE_LASTREF(a);
@@ -676,11 +643,27 @@ ARRAY     *a;
 arrayind_t     i;
 {
        register ARRAY_ELEMENT *ae, *start;
+       arrayind_t startind;
+       int direction;
 
        if (a == 0 || array_empty(a))
                return((ARRAY_ELEMENT *) NULL);
-       start = LASTREF_START(a, i);
-       for (ae = start; ae != a->head; ae = element_forw(ae))
+       if (i > array_max_index(a) || i < array_first_index(a))
+               return((ARRAY_ELEMENT *)NULL);  /* Keep roving pointer into array to optimize sequential access */
+       start = LASTREF(a);
+       /* Use same strategy as array_reference to avoid paying large penalty
+          for semi-random assignment pattern. */
+       startind = element_index(start);
+       if (i < startind/2) {
+               start = element_forw(a->head);
+               startind = element_index(start);
+               direction = 1;
+       } else if (i >= startind) {
+               direction = 1;
+       } else {
+               direction = -1;
+       }
+       for (ae = start; ae != a->head; ) {
                if (element_index(ae) == i) {
                        ae->next->prev = ae->prev;
                        ae->prev->next = ae->next;
@@ -699,6 +682,12 @@ arrayind_t i;
 #endif
                        return(ae);
                }
+               ae = (direction == 1) ? element_forw(ae) : element_back(ae);
+               if (direction == 1 && element_index(ae) > i)
+                       break;
+               else if (direction == -1 && element_index(ae) < i)
+                       break;
+       }
        return((ARRAY_ELEMENT *) NULL);
 }
 
@@ -711,18 +700,48 @@ ARRAY     *a;
 arrayind_t     i;
 {
        register ARRAY_ELEMENT *ae, *start;
+       arrayind_t startind;
+       int direction;
 
        if (a == 0 || array_empty(a))
                return((char *) NULL);
-       if (i > array_max_index(a))
+       if (i > array_max_index(a) || i < array_first_index(a))
                return((char *)NULL);   /* Keep roving pointer into array to optimize sequential access */
-       start = LASTREF_START(a, i);
-       for (ae = start; ae != a->head; ae = element_forw(ae))
+       start = LASTREF(a);     /* lastref pointer */
+       startind = element_index(start);
+       if (i < startind/2) {   /* XXX - guess */
+               start = element_forw(a->head);
+               startind = element_index(start);
+               direction = 1;
+       } else if (i >= startind) {
+               direction = 1;
+       } else {
+               direction = -1;
+       }
+       for (ae = start; ae != a->head; ) {
                if (element_index(ae) == i) {
                        SET_LASTREF(a, ae);
                        return(element_value(ae));
                }
-       UNSET_LASTREF();                /* XXX SET_LASTREF(a, start) ? */
+               ae = (direction == 1) ? element_forw(ae) : element_back(ae);
+               /* Take advantage of index ordering to short-circuit */
+               /* If we don't find it, set the lastref pointer to the element
+                  that's `closest', assuming that the unsuccessful reference
+                  will quickly be followed by an assignment.  No worse than
+                  not changing it from the previous value or resetting it. */
+               if (direction == 1 && element_index(ae) > i) {
+                       start = ae;     /* use for SET_LASTREF below */
+                       break;
+               } else if (direction == -1 && element_index(ae) < i) {
+                       start = ae;     /* use for SET_LASTREF below */
+                       break;
+               }
+       }
+#if 0
+       UNSET_LASTREF(a);
+#else
+       SET_LASTREF(a, start);
+#endif
        return((char *) NULL);
 }
 
diff --git a/array.h b/array.h
index fb4f789f3f8879002bc02d62342c48c432acd168..0c456507baa2ecaee40096822448b2cb5783e4d3 100644 (file)
--- a/array.h
+++ b/array.h
@@ -33,6 +33,7 @@ typedef struct array {
        enum atype      type;
        arrayind_t      max_index;
        int             num_elements;
+       struct array_element *lastref;
        struct array_element *head;
 } ARRAY;
 
@@ -94,6 +95,7 @@ extern ARRAY *array_from_string __P((char *, char *));
 
 #define array_num_elements(a)  ((a)->num_elements)
 #define array_max_index(a)     ((a)->max_index)
+#define array_first_index(a)   ((a)->head->next->ind)
 #define array_head(a)          ((a)->head)
 #define array_empty(a)         ((a)->num_elements == 0)
 
@@ -102,6 +104,8 @@ extern ARRAY *array_from_string __P((char *, char *));
 #define element_forw(ae)       ((ae)->next)
 #define element_back(ae)       ((ae)->prev)
 
+#define set_element_value(ae, val)     ((ae)->value = (val))
+
 /* Convenience */
 #define array_push(a,v)        \
   do { array_rshift ((a), 1, (v)); } while (0)
index 47c595e0b112fb7698741175d7ef3b3647735f7b..e4ae34d05fcc5ea8db2be8ade8d45b3dcfa245b1 100644 (file)
@@ -30,6 +30,7 @@
 #include "bashintl.h"
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "pathexp.h"
 
 #include "shmbutil.h"
 
 #include "builtins/common.h"
 
-extern char *this_command_name;
-extern int last_command_exit_value;
-extern int array_needs_making;
+/* This variable means to not expand associative array subscripts more than
+   once, when performing variable expansion. */
+int assoc_expand_once = 0;
+
+/* Ditto for indexed array subscripts -- currently unused */
+int array_expand_once = 0;
 
 static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int));
 static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int));
@@ -195,6 +199,8 @@ bind_array_var_internal (entry, ind, key, value, flags)
   FREE (newval);
 
   VUNSETATTR (entry, att_invisible);   /* no longer invisible */
+
+  /* check mark_modified_variables if we ever want to export array vars */
   return (entry);
 }
 
@@ -258,9 +264,6 @@ bind_assoc_variable (entry, name, key, value, flags)
      char *value;
      int flags;
 {
-  SHELL_VAR *dentry;
-  char *newval;
-
   if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry))
     {
       if (readonly_p (entry))
@@ -272,29 +275,32 @@ bind_assoc_variable (entry, name, key, value, flags)
 }
 
 /* Parse NAME, a lhs of an assignment statement of the form v[s], and
-   assign VALUE to that array element by calling bind_array_variable(). */
+   assign VALUE to that array element by calling bind_array_variable().
+   Flags are ASS_ assignment flags */
 SHELL_VAR *
 assign_array_element (name, value, flags)
      char *name, *value;
      int flags;
 {
   char *sub, *vname;
-  int sublen;
-  SHELL_VAR *entry, *nv;
+  int sublen, isassoc;
+  SHELL_VAR *entry;
 
-  vname = array_variable_name (name, &sub, &sublen);
+  vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen);
 
   if (vname == 0)
     return ((SHELL_VAR *)NULL);
 
-  if ((ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']') || (sublen <= 1))
+  entry = find_variable (vname);
+  isassoc = entry && assoc_p (entry);
+
+  if (((isassoc == 0 || (flags & ASS_NOEXPAND) == 0) && (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || (sublen <= 1))
     {
       free (vname);
       err_badarraysub (name);
       return ((SHELL_VAR *)NULL);
     }
 
-  entry = find_variable (vname);
   entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags);
 
   free (vname);
@@ -317,7 +323,10 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
   if (entry && assoc_p (entry))
     {
       sub[sublen-1] = '\0';
-      akey = expand_assignment_string_to_string (sub, 0);      /* [ */
+      if ((flags & ASS_NOEXPAND) == 0)
+       akey = expand_assignment_string_to_string (sub, 0);     /* [ */
+      else
+       akey = savestring (sub);
       sub[sublen-1] = ']';
       if (akey == 0 || *akey == 0)
        {
@@ -329,7 +338,7 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
     }
   else
     {
-      ind = array_expand_index (entry, sub, sublen);
+      ind = array_expand_index (entry, sub, sublen, 0);
       /* negative subscripts to indexed arrays count back from end */
       if (entry && ind < 0)
        ind = (array_p (entry) ? array_max_index (array_cell (entry)) : 0) + 1 + ind;
@@ -450,7 +459,6 @@ expand_compound_array_assignment (var, value, flags)
      int flags;
 {
   WORD_LIST *list, *nlist;
-  WORD_LIST *hd, *tl, *t, *n;
   char *val;
   int ni;
 
@@ -583,7 +591,7 @@ assign_compound_array_list (var, nlist, flags)
 
          if (array_p (var))
            {
-             ind = array_expand_index (var, w + 1, len);
+             ind = array_expand_index (var, w + 1, len, 0);
              /* negative subscripts to indexed arrays count back from end */
              if (ind < 0)
                ind = array_max_index (array_cell (var)) + 1 + ind;
@@ -759,17 +767,19 @@ quote_array_assignment_chars (list)
 /* This function is called with SUB pointing to just after the beginning
    `[' of an array subscript and removes the array element to which SUB
    expands from array VAR.  A subscript of `*' or `@' unsets the array. */
+/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */
 int
-unbind_array_element (var, sub)
+unbind_array_element (var, sub, flags)
      SHELL_VAR *var;
      char *sub;
+     int flags;
 {
   int len;
   arrayind_t ind;
   char *akey;
   ARRAY_ELEMENT *ae;
 
-  len = skipsubscript (sub, 0, (var && assoc_p(var)));
+  len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var)));    /* XXX */
   if (sub[len] != ']' || len == 0)
     {
       builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg));
@@ -790,7 +800,7 @@ unbind_array_element (var, sub)
 
   if (assoc_p (var))
     {
-      akey = expand_assignment_string_to_string (sub, 0);     /* [ */
+      akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0);
       if (akey == 0 || *akey == 0)
        {
          builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg));
@@ -798,11 +808,12 @@ unbind_array_element (var, sub)
          return -1;
        }
       assoc_remove (assoc_cell (var), akey);
-      free (akey);
+      if (akey != sub)
+       free (akey);
     }
   else if (array_p (var))
     {
-      ind = array_expand_index (var, sub, len+1);
+      ind = array_expand_index (var, sub, len+1, 0);
       /* negative subscripts to indexed arrays count back from end */
       if (ind < 0)
        ind = array_max_index (array_cell (var)) + 1 + ind;
@@ -818,7 +829,7 @@ unbind_array_element (var, sub)
   else /* array_p (var) == 0 && assoc_p (var) == 0 */
     {
       akey = this_command_name;
-      ind = array_expand_index (var, sub, len+1);
+      ind = array_expand_index (var, sub, len+1, 0);
       this_command_name = akey;
       if (ind == 0)
        {
@@ -879,42 +890,62 @@ print_assoc_assignment (var, quoted)
 /***********************************************************************/
 
 /* Return 1 if NAME is a properly-formed array reference v[sub]. */
+
+/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */
 int
 valid_array_reference (name, flags)
      const char *name;
      int flags;
 {
   char *t;
-  int r, len;
+  int r, len, isassoc;
+  SHELL_VAR *entry;
 
   t = mbschr (name, '[');      /* ] */
+  isassoc = 0;
   if (t)
     {
       *t = '\0';
       r = legal_identifier (name);
+      if (flags & VA_NOEXPAND) /* Don't waste a lookup if we don't need one */
+       isassoc = (entry = find_variable (name)) && assoc_p (entry);      
       *t = '[';
       if (r == 0)
        return 0;
-      /* Check for a properly-terminated non-blank subscript. */
-      len = skipsubscript (t, 0, 0);
-      if (t[len] != ']' || len == 1)
-       return 0;
-      if (t[len+1] != '\0')
+
+      if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD)))
+       len = strlen (t) - 1;
+      else if (isassoc)
+       len = skipsubscript (t, 0, flags&VA_NOEXPAND);  /* VA_NOEXPAND must be 1 */
+      else
+       /* Check for a properly-terminated non-null subscript. */
+       len = skipsubscript (t, 0, 0);          /* arithmetic expression */
+
+      if (t[len] != ']' || len == 1 || t[len+1] != '\0')
        return 0;
+
+#if 0
+      /* Could check and allow subscripts consisting only of whitespace for
+        existing associative arrays, using isassoc */
       for (r = 1; r < len; r++)
        if (whitespace (t[r]) == 0)
          return 1;
       return 0;
+#else
+      /* This allows blank subscripts */
+      return 1;
+#endif
     }
   return 0;
 }
 
 /* Expand the array index beginning at S and extending LEN characters. */
 arrayind_t
-array_expand_index (var, s, len)
+array_expand_index (var, s, len, flags)
      SHELL_VAR *var;
      char *s;
      int len;
+     int flags;
 {
   char *exp, *t, *savecmd;
   int expok;
@@ -923,12 +954,19 @@ array_expand_index (var, s, len)
   exp = (char *)xmalloc (len);
   strncpy (exp, s, len - 1);
   exp[len - 1] = '\0';
+#if 0  /* XXX - not yet -- maybe bash-5.1 */
+  if ((flags & AV_NOEXPAND) == 0)
+    t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */
+  else
+    t = exp;
+#endif
   t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB);   /* XXX - Q_ARRAYSUB for future use */
   savecmd = this_command_name;
   this_command_name = (char *)NULL;
-  val = evalexp (t, &expok);
+  val = evalexp (t, 0, &expok);
   this_command_name = savecmd;
-  free (t);
+  if (t != exp)
+    free (t);
   free (exp);
   if (expok == 0)
     {
@@ -947,8 +985,9 @@ array_expand_index (var, s, len)
    in *SUBP. If LENP is non-null, the length of the subscript is returned
    in *LENP.  This returns newly-allocated memory. */
 char *
-array_variable_name (s, subp, lenp)
+array_variable_name (s, flags, subp, lenp)
      const char *s;
+     int flags;
      char **subp;
      int *lenp;
 {
@@ -965,7 +1004,7 @@ array_variable_name (s, subp, lenp)
       return ((char *)NULL);
     }
   ind = t - s;
-  ni = skipsubscript (s, ind, 0);
+  ni = skipsubscript (s, ind, flags);  /* XXX - was 0 not flags */
   if (ni <= ind + 1 || s[ni] != ']')
     {
       err_badarraysub (s);
@@ -992,15 +1031,16 @@ array_variable_name (s, subp, lenp)
    non-null, return a pointer to the start of the subscript in *SUBP.
    If LENP is non-null, the length of the subscript is returned in *LENP. */
 SHELL_VAR *
-array_variable_part (s, subp, lenp)
+array_variable_part (s, flags, subp, lenp)
      const char *s;
+     int flags;
      char **subp;
      int *lenp;
 {
   char *t;
   SHELL_VAR *var;
 
-  t = array_variable_name (s, subp, lenp);
+  t = array_variable_name (s, flags, subp, lenp);
   if (t == 0)
     return ((SHELL_VAR *)NULL);
   var = find_variable (t);             /* XXX - handle namerefs here? */
@@ -1042,7 +1082,7 @@ array_value_internal (s, quoted, flags, rtype, indp)
   WORD_LIST *l;
   SHELL_VAR *var;
 
-  var = array_variable_part (s, &t, &len);
+  var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len);        /* XXX */
 
   /* Expand the index, even if the variable doesn't exist, in case side
      effects are needed, like ${w[i++]} where w is unset. */
@@ -1067,6 +1107,8 @@ array_value_internal (s, quoted, flags, rtype, indp)
        }
       else if (var == 0 || value_cell (var) == 0)      /* XXX - check for invisible_p(var) ? */
        return ((char *)NULL);
+      else if (invisible_p (var))
+       return ((char *)NULL);
       else if (array_p (var) == 0 && assoc_p (var) == 0)
        l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL);
       else if (assoc_p (var))
@@ -1082,15 +1124,16 @@ array_value_internal (s, quoted, flags, rtype, indp)
            return ((char *) NULL);
        }
 
+      /* Caller of array_value takes care of inspecting rtype and duplicating
+        retval if rtype == 0, so this is not a memory leak */
       if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        {
-         temp = string_list_dollar_star (l);
-         retval = quote_string (temp);         /* XXX - leak here */
+         temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0);
+         retval = quote_string (temp);
          free (temp);
        }
       else     /* ${name[@]} or unquoted ${name[*]} */
-        /* XXX - bash-4.4/bash-5.0 test AV_ASSIGNRHS and pass PF_ASSIGNRHS */
-       retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0);  /* XXX - leak here */
+       retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0);
 
       dispose_words (l);
     }
@@ -1102,7 +1145,7 @@ array_value_internal (s, quoted, flags, rtype, indp)
        {
          if ((flags & AV_USEIND) == 0 || indp == 0)
            {
-             ind = array_expand_index (var, t, len);
+             ind = array_expand_index (var, t, len, flags);
              if (ind < 0)
                {
                  /* negative subscripts to indexed arrays count back from end */
@@ -1120,7 +1163,10 @@ array_value_internal (s, quoted, flags, rtype, indp)
       else if (assoc_p (var))
        {
          t[len - 1] = '\0';
-         akey = expand_assignment_string_to_string (t, 0);     /* [ */
+         if ((flags & AV_NOEXPAND) == 0)
+           akey = expand_assignment_string_to_string (t, 0);   /* [ */
+         else
+           akey = savestring (t);
          t[len - 1] = ']';
          if (akey == 0 || *akey == 0)
            {
@@ -1134,6 +1180,11 @@ array_value_internal (s, quoted, flags, rtype, indp)
           FREE (akey);
          return ((char *)NULL);
        }
+      else if (invisible_p (var))
+       {
+          FREE (akey);
+         return ((char *)NULL);
+       }
       if (array_p (var) == 0 && assoc_p (var) == 0)
        return (ind == 0 ? value_cell (var) : (char *)NULL);
       else if (assoc_p (var))
@@ -1182,7 +1233,7 @@ array_keys (s, quoted)
   WORD_LIST *l;
   SHELL_VAR *var;
 
-  var = array_variable_part (s, &t, &len);
+  var = array_variable_part (s, 0, &t, &len);
 
   /* [ */
   if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']')
@@ -1202,7 +1253,7 @@ array_keys (s, quoted)
 
   if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
     {
-      temp = string_list_dollar_star (l);
+      temp = string_list_dollar_star (l, quoted, 0);
       retval = quote_string (temp);
       free (temp);
     }
index 5ee27591608a465beedadbbbe5348c81344489a8..cd51ee073c0cc59b44d9f8e98863efe11baeb3c8 100644 (file)
 
 #if defined (ARRAY_VARS)
 
+/* This variable means to not expand associative array subscripts more than
+   once, when performing variable expansion. */
+extern int assoc_expand_once;
+
+/* The analog for indexed array subscripts */
+extern int array_expand_once;
+
 /* Flags for array_value_internal and callers array_value/get_array_value */
 #define AV_ALLOWALL    0x001
 #define AV_QUOTED      0x002
 #define AV_USEIND      0x004
 #define AV_USEVAL      0x008   /* XXX - should move this */
 #define AV_ASSIGNRHS   0x010   /* no splitting, special case ${a[@]} */
+#define AV_NOEXPAND    0x020   /* don't run assoc subscripts through word expansion */
+
+/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */
+#define VA_NOEXPAND    0x001
+#define VA_ONEWORD     0x002
 
 extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *));
 extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *));
@@ -52,21 +64,21 @@ extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int
 extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int));
 extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int));
 
-extern int unbind_array_element __P((SHELL_VAR *, char *));
+extern int unbind_array_element __P((SHELL_VAR *, char *, int));
 extern int skipsubscript __P((const char *, int, int));
 
 extern void print_array_assignment __P((SHELL_VAR *, int));
 extern void print_assoc_assignment __P((SHELL_VAR *, int));
 
-extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int));
+extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int));
 extern int valid_array_reference __P((const char *, int));
 extern char *array_value __P((const char *, int, int, int *, arrayind_t *));
 extern char *get_array_value __P((const char *, int, int *, arrayind_t *));
 
 extern char *array_keys __P((char *, int));
 
-extern char *array_variable_name __P((const char *, char **, int *));
-extern SHELL_VAR *array_variable_part __P((const char *, char **, int *));
+extern char *array_variable_name __P((const char *, int, char **, int *));
+extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *));
 
 #else
 
@@ -75,6 +87,8 @@ extern SHELL_VAR *array_variable_part __P((const char *, char **, int *));
 #define AV_USEIND      0
 #define AV_ASSIGNRHS   0
 
+#define VA_ONEWORD     0
+
 #endif
 
 #endif /* !_ARRAYFUNC_H_ */
diff --git a/assoc.c b/assoc.c
index 84a387c208a02059c723332011f3c8afce2d0afb..673eccb22c11c8c569ce41c31f82621a212edc8d 100644 (file)
--- a/assoc.c
+++ b/assoc.c
@@ -305,54 +305,29 @@ assoc_patsub (h, pat, rep, mflags)
      char *pat, *rep;
      int mflags;
 {
-  BUCKET_CONTENTS *tlist;
-  int i, slen;
-  HASH_TABLE *h2;
-  char *t, *sifs, *ifs;
+  char *t;
+  int pchar, qflags;
+  WORD_LIST *wl, *save;
 
   if (h == 0 || assoc_empty (h))
     return ((char *)NULL);
 
-  h2 = assoc_copy (h);
-  for (i = 0; i < h2->nbuckets; i++)
-    for (tlist = hash_items (i, h2); tlist; tlist = tlist->next)
-      {
-       t = pat_subst ((char *)tlist->data, pat, rep, mflags);
-       FREE (tlist->data);
-       tlist->data = t;
-      }
-
-  if (mflags & MATCH_QUOTED)
-    assoc_quote (h2);
-  else
-    assoc_quote_escapes (h2);
+  wl = assoc_to_word_list (h);
+  if (wl == 0)
+    return (char *)NULL;
 
-  if (mflags & MATCH_STARSUB)
+  for (save = wl; wl; wl = wl->next)
     {
-      assoc_remove_quoted_nulls (h2);
-      sifs = ifs_firstchar ((int *)NULL);
-      t = assoc_to_string (h2, sifs, 0);
-      free (sifs);
+      t = pat_subst (wl->word->word, pat, rep, mflags);
+      FREE (wl->word->word);
+      wl->word->word = t;
     }
-  else if (mflags & MATCH_QUOTED)
-    {
-      /* ${array[@]} */
-      sifs = ifs_firstchar (&slen);
-      ifs = getifs ();
-      if (ifs == 0 || *ifs == 0)
-       {
-         if (slen < 2)
-           sifs = xrealloc (sifs, 2);
-         sifs[0] = ' ';
-         sifs[1] = '\0';
-       }
-      t = assoc_to_string (h2, sifs, 0);
-      free(sifs);
-    }
-  else
-    t = assoc_to_string (h2, " ", 0);
 
-  assoc_dispose (h2);
+  pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+  qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+
+  t = string_list_pos_params (pchar, save, qflags);
+  dispose_words (save);
 
   return t;
 }
@@ -364,54 +339,29 @@ assoc_modcase (h, pat, modop, mflags)
      int modop;
      int mflags;
 {
-  BUCKET_CONTENTS *tlist;
-  int i, slen;
-  HASH_TABLE *h2;
-  char *t, *sifs, *ifs;
+  char *t;
+  int pchar, qflags;
+  WORD_LIST *wl, *save;
 
   if (h == 0 || assoc_empty (h))
     return ((char *)NULL);
 
-  h2 = assoc_copy (h);
-  for (i = 0; i < h2->nbuckets; i++)
-    for (tlist = hash_items (i, h2); tlist; tlist = tlist->next)
-      {
-       t = sh_modcase ((char *)tlist->data, pat, modop);
-       FREE (tlist->data);
-       tlist->data = t;
-      }
-
-  if (mflags & MATCH_QUOTED)
-    assoc_quote (h2);
-  else
-    assoc_quote_escapes (h2);
+  wl = assoc_to_word_list (h);
+  if (wl == 0)
+    return ((char *)NULL);
 
-  if (mflags & MATCH_STARSUB)
-    {
-      assoc_remove_quoted_nulls (h2);
-      sifs = ifs_firstchar ((int *)NULL);
-      t = assoc_to_string (h2, sifs, 0);
-      free (sifs);
-    }
-  else if (mflags & MATCH_QUOTED)
+  for (save = wl; wl; wl = wl->next)
     {
-      /* ${array[@]} */
-      sifs = ifs_firstchar (&slen);
-      ifs = getifs ();
-      if (ifs == 0 || *ifs == 0)
-       {
-         if (slen < 2)
-           sifs = xrealloc (sifs, 2);
-         sifs[0] = ' ';
-         sifs[1] = '\0';
-       }
-      t = assoc_to_string (h2, sifs, 0);
-      free(sifs);
+      t = sh_modcase (wl->word->word, pat, modop);
+      FREE (wl->word->word);
+      wl->word->word = t;
     }
-  else
-    t = assoc_to_string (h2, " ", 0);
 
-  assoc_dispose (h2);
+  pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+  qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+
+  t = string_list_pos_params (pchar, save, qflags);
+  dispose_words (save);
 
   return t;
 }
index 9979f99ac11b1922d32492a8cead61589f21b4ad..7912cce311871da3766979ffe60178a4d03ce06d 100644 (file)
@@ -44,6 +44,7 @@
 
 #include "shell.h"
 #include "flags.h"
+#include "parser.h"
 #include "input.h"
 #include "parser.h"    /* for the struct dstack stuff. */
 #include "pathexp.h"   /* for the struct ignorevar stuff */
 extern int rl_done, rl_dispatching;    /* should really include readline.h */
 #endif
 
+#ifndef HISTSIZE_DEFAULT
+#  define HISTSIZE_DEFAULT "500"
+#endif
+
 #if !defined (errno)
 extern int errno;
 #endif
@@ -140,6 +145,11 @@ int command_oriented_history = 1;
    the history-manipluating builtins can see it. */
 int current_command_first_line_saved = 0;
 
+/* Set to the number of the most recent line of a possibly-multi-line command
+   that contains a shell comment.  Used by bash_add_history() to determine
+   whether to add a newline or a semicolon. */
+int current_command_line_comment = 0;
+
 /* Non-zero means to store newlines in the history list when using
    command_oriented_history rather than trying to use semicolons. */
 int literal_history;
@@ -182,12 +192,6 @@ int hist_verify;
 /* Non-zero means to not save function definitions in the history list. */
 int dont_save_function_defs;
 
-/* Variables declared in other files used here. */
-extern int current_command_line_count;
-
-extern struct dstack dstack;
-extern int parser_state;
-
 #if defined (BANG_HISTORY)
 static int bash_history_inhibit_expansion __P((char *, int));
 #endif
@@ -209,7 +213,7 @@ bash_history_inhibit_expansion (string, i)
      char *string;
      int i;
 {
-  int t;
+  int t, si;
   char hx[2];
 
   hx[0] = history_expansion_char;
@@ -232,9 +236,20 @@ bash_history_inhibit_expansion (string, i)
     return (1);
 #endif
 
+  si = 0;
+  /* If we're supposed to be in single-quoted string, skip over the
+     single-quoted part and then look at what's left. */
+  if (history_quoting_state == '\'')
+    {
+      si = skip_to_delim (string, 0, "'", SD_NOJMP|SD_HISTEXP);
+      if (string[si] == 0 || si >= i)
+       return (1);
+      si++;
+    }
+
   /* Make sure the history expansion should not be skipped by quoting or
      command/process substitution. */
-  else if ((t = skip_to_histexp (string, 0, hx, SD_NOJMP|SD_HISTEXP)) > 0)
+  if ((t = skip_to_histexp (string, si, hx, SD_NOJMP|SD_HISTEXP)) > 0)
     {
       /* Skip instances of history expansion appearing on the line before
         this one. */
@@ -267,8 +282,8 @@ bash_history_reinit (interact)
      int interact;
 {
 #if defined (BANG_HISTORY)
-  history_expansion = interact != 0;
-  history_expansion_inhibited = 1;     /* XXX */
+  history_expansion = (interact == 0) ? histexp_flag : HISTEXPAND_DEFAULT;
+  history_expansion_inhibited = (interact == 0) ? 1 - histexp_flag : 0;        /* changed in bash_history_enable() */
   history_inhibit_expansion_function = bash_history_inhibit_expansion;
 #endif
   remember_on_history = enable_history_list;
@@ -305,7 +320,7 @@ load_history ()
      Note that the history file is automatically truncated to the
      size of HISTSIZE if the user does not explicitly set the size
      differently. */
-  set_if_not ("HISTSIZE", "500");
+  set_if_not ("HISTSIZE", HISTSIZE_DEFAULT);
   sv_histsize ("HISTSIZE");
 
   set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE"));
@@ -350,6 +365,21 @@ bash_delete_histent (i)
   return 1;
 }
 
+int
+bash_delete_history_range (first, last)
+     int first, last;
+{
+  register int i;
+  HIST_ENTRY **discard_list;
+
+  discard_list = remove_history_range (first, last);
+  for (i = 0; discard_list && discard_list[i]; i++)
+    free_history_entry (discard_list[i]);
+  history_lines_this_session -= i;
+
+  return 1;
+}
+
 int
 bash_delete_last_history ()
 {
@@ -530,7 +560,15 @@ pre_process_line (line, print_changes, addit)
      add that line to the history if ADDIT is non-zero. */
   if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
     {
+      /* If we are expanding the second or later line of a multi-line
+        command, decrease history_length so references to history expansions
+        in these lines refer to the previous history entry and not the
+        current command. */
+      if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
+        history_length--;
       expanded = history_expand (line, &history_value);
+      if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
+        history_length++;
 
       if (expanded)
        {
@@ -597,16 +635,24 @@ pre_process_line (line, print_changes, addit)
 }
 
 /* Return 1 if the first non-whitespace character in LINE is a `#', indicating
- * that the line is a shell comment. */
+   that the line is a shell comment.  Return 2 if there is a comment after the
+   first non-whitespace character. Return 0 if the line does not contain a
+   comment. */
 static int
 shell_comment (line)
      char *line;
 {
   char *p;
+  int n;
 
+  if (line == 0)
+    return 0;
   for (p = line; p && *p && whitespace (*p); p++)
     ;
-  return (p && *p == '#');
+  if (p && *p == '#')
+    return 1;
+  n = skip_to_delim (line, p - line, "#", SD_NOJMP|SD_GLOB|SD_EXTGLOB|SD_COMPLETE);
+  return (line[n] == '#') ? 2 : 0;
 }
 
 #ifdef INCLUDE_UNUSED
@@ -700,7 +746,10 @@ void
 maybe_add_history (line)
      char *line;
 {
+  int is_comment;
+
   hist_last_line_added = 0;
+  is_comment = shell_comment (line);
 
   /* Don't use the value of history_control to affect the second
      and subsequent lines of a multi-line command (old code did
@@ -708,13 +757,15 @@ maybe_add_history (line)
   if (current_command_line_count > 1)
     {
       if (current_command_first_line_saved &&
-         ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0))
+         ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || is_comment != 1))
        bash_add_history (line);
+      current_command_line_comment = is_comment ? current_command_line_count : -2;
       return;
     }
 
   /* This is the first line of a (possible multi-line) command.  Note whether
      or not we should save the first line and remember it. */
+  current_command_line_comment = is_comment ? current_command_line_count : -2;
   current_command_first_line_saved = check_add_history (line, 0);
 }
 
@@ -748,12 +799,16 @@ check_add_history (line, force)
 #if defined (SYSLOG_HISTORY)
 #define SYSLOG_MAXLEN 600
 
-extern char *shell_name;
-
 #ifndef OPENLOG_OPTS
 #define OPENLOG_OPTS 0
 #endif
 
+#if defined (SYSLOG_SHOPT)
+int syslog_history = SYSLOG_SHOPT;
+#else
+int syslog_history = 1;
+#endif
+
 void
 bash_syslog_history (line)
      const char *line;
@@ -803,12 +858,18 @@ bash_add_history (line)
         so we have to duplicate some of what that function does here. */
       if ((parser_state & PST_HEREDOC) && literal_history && current_command_line_count > 2 && line[strlen (line) - 1] == '\n')
        chars_to_add = "";
+      else if (current_command_line_count == current_command_line_comment+1)
+       chars_to_add = "\n";
+      else if (literal_history)
+       chars_to_add = "\n";
       else
-       chars_to_add = literal_history ? "\n" : history_delimiting_chars (line);
+       chars_to_add = history_delimiting_chars (line);
 
       using_history ();
       current = previous_history ();
 
+      current_command_line_comment = shell_comment (line) ? current_command_line_count : -2;
+
       if (current)
        {
          /* If the previous line ended with an escaped newline (escaped
@@ -851,7 +912,8 @@ bash_add_history (line)
     really_add_history (line);
 
 #if defined (SYSLOG_HISTORY)
-  bash_syslog_history (line);
+  if (syslog_history)
+    bash_syslog_history (line);
 #endif
 
   using_history ();
index c44e7c60739bbbd0389a5a616f8b2266f0bdbbc4..90ecec9e92551b113a314cdb1bd0c9789b34c30b 100644 (file)
 
 #define HC_IGNBOTH     (HC_IGNSPACE|HC_IGNDUPS)
 
+#if defined (STRICT_POSIX)
+#  undef HISTEXPAND_DEFAULT
+#  define HISTEXPAND_DEFAULT   0
+#else
+#  if !defined (HISTEXPAND_DEFAULT)
+#    define HISTEXPAND_DEFAULT 1
+#  endif /* !HISTEXPAND_DEFAULT */
+#endif
+
 extern int remember_on_history;
 extern int enable_history_list;                /* value for `set -o history' */
 extern int literal_history;            /* controlled by `shopt lithist' */
@@ -40,11 +49,19 @@ extern int history_expansion;
 extern int history_control;
 extern int command_oriented_history;
 extern int current_command_first_line_saved;
+extern int current_command_first_line_comment;
 extern int hist_last_line_added;
 extern int hist_last_line_pushed;
 
+extern int dont_save_function_defs;
+
+#  if defined (READLINE)
+extern int hist_verify;
+#  endif
+
 #  if defined (BANG_HISTORY)
 extern int history_expansion_inhibited;
+extern int double_quotes_inhibit_history_expansion;
 #  endif /* BANG_HISTORY */
 
 extern void bash_initialize_history __P((void));
@@ -53,6 +70,7 @@ extern void bash_history_disable __P((void));
 extern void bash_history_enable __P((void));
 extern void bash_clear_history __P((void));
 extern int bash_delete_histent __P((int));
+extern int bash_delete_history_range __P((int, int));
 extern int bash_delete_last_history __P((void));
 extern void load_history __P((void));
 extern void save_history __P((void));
index 7e6b83fc0ca549fb38511a659c331f2bf092c06c..dd3268331937a7943622a76e168f9ca08dc9d527 100644 (file)
@@ -47,4 +47,8 @@
 #  define setlocale(cat, loc)
 #endif
 
+#if !defined (HAVE_LOCALE_H) || !defined (HAVE_LOCALECONV)
+#  define locale_decpoint()    '.'
+#endif
+
 #endif /* !_BASHINTL_H_ */
index 79152fe52d63075891ee25f251e11d9505b2d87d..8ed1ac47237d71af51272017734db69b785013e0 100644 (file)
--- a/bashjmp.h
+++ b/bashjmp.h
@@ -26,6 +26,7 @@
 extern procenv_t       top_level;
 extern procenv_t       subshell_top_level;
 extern procenv_t       return_catch;   /* used by `return' builtin */
+extern procenv_t       wait_intr_buf;
 
 extern int no_longjmp_on_fatal_error;
 
index 02758448bbfd6beb81b139bef306c766d8e04dc5..2846aabf7cb4a84d9699fc2c07bac6edba1e8c8e 100644 (file)
@@ -1,6 +1,6 @@
 /* bashline.c -- Bash's interface to the readline library. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -46,6 +46,7 @@
 
 #include "shell.h"
 #include "input.h"
+#include "parser.h"
 #include "builtins.h"
 #include "bashhist.h"
 #include "bashline.h"
@@ -65,6 +66,7 @@
 #include <readline/rlconf.h>
 #include <readline/readline.h>
 #include <readline/history.h>
+#include <readline/rlmbutil.h>
 
 #include <glob/glob.h>
 
@@ -200,19 +202,8 @@ static char *prog_complete_return __P((const char *, int));
 static char **prog_complete_matches;
 #endif
 
-/* Variables used here but defined in other files. */
-#if defined (BANG_HISTORY)
-extern int hist_verify;
-#endif
-
-extern int current_command_line_count, saved_command_line_count;
-extern int last_command_exit_value;
-extern int array_needs_making;
-extern int posixly_correct, no_symbolic_links;
-extern int sigalrm_seen;
-extern char *current_prompt_string, *ps1_prompt;
+extern int no_symbolic_links;
 extern STRING_INT_ALIST word_token_alist[];
-extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
 
 /* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual
    completion functions which indicate what type of completion should be
@@ -919,9 +910,9 @@ operate_and_get_next (count, c)
   rl_newline (1, c);
 
   /* Find the current line, and find the next line to use. */
-  where = where_history ();
+  where = rl_explicit_arg ? count : where_history ();
 
-  if (HISTORY_FULL () || (where >= history_length - 1))
+  if (HISTORY_FULL () || (where >= history_length - 1) || rl_explicit_arg)
     saved_history_line_to_use = where;
   else
     saved_history_line_to_use = where + 1;
@@ -969,8 +960,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command)
       /* This breaks down when using command-oriented history and are not
         finished with the command, so we should not ignore the last command */
       using_history ();
-      current_command_line_count++;    /* for rl_newline above */
-      bash_add_history (rl_line_buffer);
+      if (rl_line_buffer[0])
+       {
+         current_command_line_count++; /* for rl_newline above */
+         bash_add_history (rl_line_buffer);
+       }
       current_command_line_count = 0;  /* for dummy history entry */
       bash_add_history ("");
       history_lines_this_session++;
@@ -999,6 +993,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command)
   rl_done = 0;
   rl_readline_state = rrs;
 
+#if defined (VI_MODE)
+  if (editing_mode == VI_EDITING_MODE)
+    rl_vi_insertion_mode (1, c);
+#endif
+
   rl_forced_update_display ();
 
   return r;
@@ -1056,7 +1055,7 @@ bash_forward_shellword (count, key)
      int count, key;
 {
   size_t slen;
-  int sindex, c, p;
+  int c, p;
   DECLARE_MBSTATE;
 
   if (count < 0)
@@ -1165,15 +1164,18 @@ bash_backward_shellword (count, key)
      int count, key;
 {
   size_t slen;
-  int sindex, c, p;
+  int c, p;
   DECLARE_MBSTATE;
-  
+
   if (count < 0)
     return (bash_forward_shellword (-count, key));
 
   p = rl_point;
   slen = rl_end;
-  
+
+  if (p == rl_end && p > 0)
+    p--;  
+
   while (count)
     {
       if (p == 0)
@@ -1186,9 +1188,9 @@ bash_backward_shellword (count, key)
       while (p > 0)
        {
          c = rl_line_buffer[p];
-         if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0)
-           BACKUP_CHAR (rl_line_buffer, slen, p);
-         break;
+         if (WORDDELIM (c) == 0 || char_is_quoted (rl_line_buffer, p))
+           break;
+         BACKUP_CHAR (rl_line_buffer, slen, p);
        }
 
       if (p == 0)
@@ -1420,10 +1422,11 @@ attempt_shell_completion (text, start, end)
      const char *text;
      int start, end;
 {
-  int in_command_position, ti, saveti, qc, dflags;
+  int in_command_position, ti, qc, dflags;
   char **matches, *command_separator_chars;
 #if defined (PROGRAMMABLE_COMPLETION)
   int have_progcomps, was_assignment;
+  COMPSPEC *iw_compspec;
 #endif
 
   command_separator_chars = COMMAND_SEPARATORS;
@@ -1442,7 +1445,7 @@ attempt_shell_completion (text, start, end)
      appears after a character that separates commands.  It cannot be a
      command word if we aren't at the top-level prompt. */
   ti = start - 1;
-  saveti = qc = -1;
+  qc = -1;
 
   while ((ti > -1) && (whitespace (rl_line_buffer[ti])))
     ti--;
@@ -1453,7 +1456,7 @@ attempt_shell_completion (text, start, end)
   if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\''))
     {
       qc = rl_line_buffer[ti];
-      saveti = ti--;
+      ti--;
       while (ti > -1 && (whitespace (rl_line_buffer[ti])))
        ti--;
     }
@@ -1508,7 +1511,9 @@ attempt_shell_completion (text, start, end)
 #if defined (PROGRAMMABLE_COMPLETION)
   /* Attempt programmable completion. */
   have_progcomps = prog_completion_enabled && (progcomp_size () > 0);
-  if (matches == 0 && (in_command_position == 0 || text[0] == '\0') &&
+  iw_compspec = progcomp_search (INITIALWORD);
+  if (matches == 0 &&
+      (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) &&
       current_prompt_string == ps1_prompt)
     {
       int s, e, s1, e1, os, foundcs;
@@ -1562,7 +1567,7 @@ attempt_shell_completion (text, start, end)
       else if (start == end && start == s1 && e != 0 && e1 > end)      /* beginning of command name, leading whitespace */
        foundcs = 0;
       else if (e == 0 && e == s && text[0] == '\0' && have_progcomps)  /* beginning of empty line */
-        prog_complete_matches = programmable_completions ("_EmptycmD_", text, s, e, &foundcs);
+        prog_complete_matches = programmable_completions (EMPTYCMD, text, s, e, &foundcs);
       else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start]))
         foundcs = 0;           /* whitespace before command name */
       else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0)
@@ -1576,7 +1581,10 @@ attempt_shell_completion (text, start, end)
        {
          prog_complete_matches = programmable_completions (n, text, s, e, &foundcs);
          /* command completion if programmable completion fails */
-         in_command_position = s == start && STREQ (n, text);  /* XXX */
+         /* If we have a completion for the initial word, we can prefer that */
+         in_command_position = s == start && (iw_compspec || STREQ (n, text)); /* XXX */
+         if (iw_compspec && in_command_position)
+           foundcs = 0;
        }
       /* empty command name following command separator */
       else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0 &&
@@ -1587,8 +1595,8 @@ attempt_shell_completion (text, start, end)
        }
       else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0)
         {
-          foundcs = 0; /* empty command name following assignments */
-          in_command_position = was_assignment;
+          foundcs = 0; /* empty command name following optional assignments */
+          in_command_position += was_assignment;
         }
       else if (s == start && e == end && STREQ (n, text) && start > 0)
         {
@@ -1597,6 +1605,12 @@ attempt_shell_completion (text, start, end)
         }
       else
        foundcs = 0;
+
+      /* If we have defined a compspec for the initial (command) word, call
+        it and process the results like any other programmable completion. */
+      if (in_command_position && have_progcomps && foundcs == 0 && iw_compspec)
+       prog_complete_matches = programmable_completions (INITIALWORD, text, s, e, &foundcs);
+
       FREE (n);
       /* XXX - if we found a COMPSPEC for the command, just return whatever
         the programmable completion code returns, and disable the default
@@ -1639,7 +1653,7 @@ bash_default_completion (text, start, end, qc, compflags)
   matches = (char **)NULL;
 
   /* New posix-style command substitution or variable name? */
-  if (!matches && *text == '$')
+  if (*text == '$')
     {
       if (qc != '\'' && text[1] == '(') /* ) */
        matches = rl_completion_matches (text, command_subst_completion_function);
@@ -1803,7 +1817,7 @@ command_word_completion_function (hint_text, state)
   static char *dequoted_hint = (char *)NULL;
   static char *directory_part = (char *)NULL;
   static char **glob_matches = (char **)NULL;
-  static int path_index, hint_len, dequoted_len, istate, igncase;
+  static int path_index, hint_len, istate, igncase;
   static int mapping_over, local_index, searching_path, hint_is_dir;
   static int old_glob_ignore_case, globpat;
   static SHELL_VAR **varlist = (SHELL_VAR **)NULL;
@@ -1881,7 +1895,7 @@ command_word_completion_function (hint_text, state)
              free (hint);
              hint = dequoted_hint;
            }
-         dequoted_len = hint_len = strlen (hint);
+         hint_len = strlen (hint);
 
          if (filename_hint)
            free (filename_hint);
@@ -1909,13 +1923,10 @@ command_word_completion_function (hint_text, state)
        }
 
       dequoted_hint = hint = savestring (hint_text);
-      dequoted_len = hint_len = strlen (hint);
+      hint_len = strlen (hint);
 
       if (rl_completion_found_quote && rl_completion_quote_character == 0)
-       {
-         dequoted_hint = bash_dequote_filename (hint, 0);
-         dequoted_len = strlen (dequoted_hint);
-       }
+       dequoted_hint = bash_dequote_filename (hint, 0);
       
       path = get_string_value ("PATH");
       path_index = dot_in_path = 0;
@@ -1949,7 +1960,9 @@ command_word_completion_function (hint_text, state)
 
          alias = alias_list[local_index++]->name;
 
-         if (STREQN (alias, hint, hint_len))
+         if (igncase == 0 && (STREQN (alias, hint, hint_len)))
+           return (savestring (alias));
+         else if (igncase && strncasecmp (alias, hint, hint_len) == 0)
            return (savestring (alias));
        }
 #endif /* ALIAS */
@@ -1978,7 +1991,10 @@ command_word_completion_function (hint_text, state)
 
          varname = varlist[local_index++]->name;
 
-         if (STREQN (varname, hint, hint_len))
+         /* Honor completion-ignore-case for shell function names. */
+         if (igncase == 0 && (STREQN (varname, hint, hint_len)))
+           return (savestring (varname));
+         else if (igncase && strncasecmp (varname, hint, hint_len) == 0)
            return (savestring (varname));
        }
       local_index = 0;
@@ -2304,7 +2320,6 @@ variable_completion_function (text, state)
   static char **varlist = (char **)NULL;
   static int varlist_index;
   static char *varname = (char *)NULL;
-  static int namelen;
   static int first_char, first_char_loc;
 
   if (!state)
@@ -2323,7 +2338,6 @@ variable_completion_function (text, state)
 
       varname = savestring (text + first_char_loc);
 
-      namelen = strlen (varname);
       if (varlist)
        strvec_dispose (varlist);
 
@@ -2411,7 +2425,7 @@ bash_servicename_completion_function (text, state)
 #else
   static char *sname = (char *)NULL;
   static struct servent *srvent;
-  static int snamelen, firstc;
+  static int snamelen;
   char *value;
   char **alist, *aentry;
   int afound;
@@ -2419,7 +2433,6 @@ bash_servicename_completion_function (text, state)
   if (state == 0)
     {
       FREE (sname);
-      firstc = *text;
 
       sname = savestring (text);
       snamelen = strlen (sname);
@@ -2552,7 +2565,7 @@ static void
 maybe_make_readline_line (new_line)
      char *new_line;
 {
-  if (strcmp (new_line, rl_line_buffer) != 0)
+  if (new_line && strcmp (new_line, rl_line_buffer) != 0)
     {
       rl_point = rl_end;
 
@@ -2704,6 +2717,7 @@ shell_expand_line (count, ignore)
 {
   char *new_line;
   WORD_LIST *expanded_string;
+  WORD_DESC *w;
 
   new_line = 0;
 #if defined (BANG_HISTORY)
@@ -2733,9 +2747,19 @@ shell_expand_line (count, ignore)
 
       /* If there is variable expansion to perform, do that as a separate
         operation to be undone. */
+
+#if 1
+      w = alloc_word_desc ();
+      w->word = savestring (rl_line_buffer);
+      w->flags = rl_explicit_arg ? (W_NOPROCSUB|W_NOCOMSUB) : 0;
+      expanded_string = expand_word (w, rl_explicit_arg ? Q_HERE_DOCUMENT : 0);
+      dispose_word (w);
+#else
       new_line = savestring (rl_line_buffer);
       expanded_string = expand_string (new_line, 0);
       FREE (new_line);
+#endif
+
       if (expanded_string == 0)
        {
          new_line = (char *)xmalloc (1);
@@ -2967,7 +2991,7 @@ restore_tilde (val, directory_part)
      char *val, *directory_part;
 {
   int l, vl, dl2, xl;
-  char *dh2, *expdir, *ret;
+  char *dh2, *expdir, *ret, *v;
 
   vl = strlen (val);
 
@@ -2979,6 +3003,22 @@ restore_tilde (val, directory_part)
 
   expdir = bash_tilde_expand (directory_part, 0);
   xl = strlen (expdir);
+  if (*directory_part == '~' && STREQ (directory_part, expdir))
+    {
+      /* tilde expansion failed, so what should we return? we use what the
+        user typed. */
+      v = mbschr (val, '/');
+      vl = STRLEN (v);
+      ret = (char *)xmalloc (xl + vl + 2);
+      strcpy (ret, directory_part);
+      if (v && *v)
+       strcpy (ret + xl, v);
+
+      free (dh2);
+      free (expdir);
+
+      return ret;
+    }
   free (expdir);
 
   /*
@@ -2989,6 +3029,11 @@ restore_tilde (val, directory_part)
      l = length of remainder after tilde-prefix
   */
   l = (vl - xl) + 1;
+  if (l <= 0)
+    {
+      free (dh2);
+      return (savestring (val));               /* XXX - just punt */
+    }
 
   ret = (char *)xmalloc (dl2 + 2 + l);
   strcpy (ret, dh2);
@@ -3138,7 +3183,6 @@ bash_filename_stat_hook (dirname)
   int should_expand_dirname, return_value;
   int global_nounset;
   WORD_LIST *wl;
-  struct stat sb;
 
   local_dirname = *dirname;
   should_expand_dirname = return_value = 0;
@@ -3216,10 +3260,8 @@ bash_directory_completion_hook (dirname)
      char **dirname;
 {
   char *local_dirname, *new_dirname, *t;
-  int return_value, should_expand_dirname, nextch, closer, changed;
-  size_t local_dirlen;
+  int return_value, should_expand_dirname, nextch, closer;
   WORD_LIST *wl;
-  struct stat sb;
 
   return_value = should_expand_dirname = nextch = closer = 0;
   local_dirname = *dirname;
@@ -3236,6 +3278,17 @@ bash_directory_completion_hook (dirname)
        closer = '}';
       else
        nextch = 0;
+
+      if (closer)
+       {
+         int p;
+         char delims[2];
+
+         delims[0] = closer; delims[1] = 0;
+         p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE);
+         if (t[p] != closer)
+           should_expand_dirname = 0;
+       }
     }
   else if (local_dirname[0] == '~')
     should_expand_dirname = '~';
@@ -3450,6 +3503,7 @@ history_completion_generator (hint_text, state)
 
   while (history_completion_array && history_completion_array[local_index])
     {
+      /* XXX - should this use completion-ignore-case? */
       if (strncmp (text, history_completion_array[local_index++], len) == 0)
        return (savestring (history_completion_array[local_index - 1]));
     }
@@ -3870,7 +3924,7 @@ bash_dequote_filename (text, quote_char)
            *r++ = *p;
          /* Backslashes are preserved within double quotes unless the
             character is one that is defined to be escaped */
-         else if (quoted == '"' && ((sh_syntaxtab[p[1]] & CBSDQUOTE) == 0))
+         else if (quoted == '"' && ((sh_syntaxtab[(unsigned char)p[1]] & CBSDQUOTE) == 0))
            *r++ = *p;
 
          *r++ = *++p;
@@ -4071,21 +4125,18 @@ bash_execute_unix_command (count, key)
      int count;        /* ignored */
      int key;
 {
-  Keymap ckmap;                /* current keymap */
-  Keymap xkmap;                /* unix command executing keymap */
-  rl_command_func_t *func;
   int type;
   register int i, r;
   intmax_t mi;
   sh_parser_state_t ps;
-  char *cmd, *value, *l, *l1, *ce;
+  char *cmd, *value, *ce, old_ch;
   SHELL_VAR *v;
   char ibuf[INT_STRLEN_BOUND(int) + 1];
 
   /* First, we need to find the right command to execute.  This is tricky,
      because we might have already indirected into another keymap, so we
      have to walk cmd_xmap using the entire key sequence. */
-  cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type);
+  cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type);
     
   if (cmd == 0 || type != ISMACR)
     {
@@ -4112,25 +4163,37 @@ bash_execute_unix_command (count, key)
   v = bind_variable ("READLINE_LINE", rl_line_buffer, 0);
   if (v)
     VSETATTR (v, att_exported);
-  l = v ? value_cell (v) : 0;
-  value = inttostr (rl_point, ibuf, sizeof (ibuf));
-  v = bind_int_variable ("READLINE_POINT", value);
+  i = rl_point;
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1)
+    {
+      old_ch = rl_line_buffer[rl_point];
+      rl_line_buffer[rl_point] = '\0';
+      i = MB_STRLEN (rl_line_buffer);
+      rl_line_buffer[rl_point] = old_ch;
+    }
+#endif
+  value = inttostr (i, ibuf, sizeof (ibuf));
+  v = bind_int_variable ("READLINE_POINT", value, 0);
   if (v)
     VSETATTR (v, att_exported);
   array_needs_making = 1;
 
   save_parser_state (&ps);
-  r = parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE);
+  r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE);
   restore_parser_state (&ps);
 
   v = find_variable ("READLINE_LINE");
-  l1 = v ? value_cell (v) : 0;
-  if (l1 != l)
-    maybe_make_readline_line (value_cell (v));
+  maybe_make_readline_line (v ? value_cell (v) : 0);
+
   v = find_variable ("READLINE_POINT");
   if (v && legal_number (value_cell (v), &mi))
     {
       i = mi;
+#if defined (HANDLE_MULTIBYTE)
+      if (i > 0 && MB_CUR_MAX > 1)
+       i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0);
+#endif
       if (i != rl_point)
        {
          rl_point = i;
index d52dfdfa957f5909a4d282bde63dd78ac18d30fb..2571e11fe69e2fc7b92d07cd7cca88e989db73e0 100644 (file)
 #include "stdc.h"
 
 extern int bash_readline_initialized;
+extern int hostname_list_initialized;
+
+/* these are controlled via shopt */
+extern int perform_hostname_completion;
+extern int no_empty_command_completion;
+extern int force_fignore;
+extern int dircomplete_spelling;
+extern int dircomplete_expand;
+extern int dircomplete_expand_relpath;
+extern int complete_fullquote;
 
 extern void posix_readline_initialize __P((int));
 extern void reset_completer_word_break_chars __P((void));
index 7f31dd5e70f6caa0ee990499893940f03b10992c..485de369f85c6b0b7b6464054f5c5541543f9cb4 100644 (file)
--- a/braces.c
+++ b/braces.c
@@ -1,6 +1,6 @@
 /* braces.c -- code for doing word expansion in curly braces. */
 
-/* Copyright (C) 1987-2012 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -61,7 +61,9 @@ extern int errno;
 
 extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
 
+#if defined (NOTDEF)
 extern int last_command_exit_value;
+#endif
 
 /* Basic idea:
 
@@ -383,7 +385,7 @@ mkseq (start, end, incr, type, width)
      int type, width;
 {
   intmax_t n, prevn;
-  int i, j, nelem;
+  int i, nelem;
   char **result, *t;
 
   if (incr == 0)
@@ -418,13 +420,13 @@ mkseq (start, end, incr, type, width)
   /* Instead of a simple nelem = prevn + 1, something like:
        nelem = (prevn / imaxabs(incr)) + 1;
      would work */
-  nelem = (prevn / sh_imaxabs(incr)) + 1;
-  if (nelem > INT_MAX - 2)             /* Don't overflow int */
+  if ((prevn / sh_imaxabs (incr)) > INT_MAX - 3)       /* check int overflow */
     return ((char **)NULL);
+  nelem = (prevn / sh_imaxabs(incr)) + 1;
   result = strvec_mcreate (nelem + 1);
   if (result == 0)
     {
-      internal_error (_("brace expansion: failed to allocate memory for %d elements"), nelem);
+      internal_error (_("brace expansion: failed to allocate memory for %u elements"), (unsigned int)nelem);
       return ((char **)NULL);
     }
 
@@ -436,6 +438,7 @@ mkseq (start, end, incr, type, width)
 #if defined (SHELL)
       if (ISINTERRUPT)
         {
+          result[i] = (char *)NULL;
           strvec_dispose (result);
           result = (char **)NULL;
         }
@@ -494,7 +497,7 @@ expand_seqterm (text, tlen)
      size_t tlen;
 {
   char *t, *lhs, *rhs;
-  int i, lhs_t, rhs_t, lhs_l, rhs_l, width;
+  int lhs_t, rhs_t, lhs_l, rhs_l, width;
   intmax_t lhs_v, rhs_v, incr;
   intmax_t tl, tr;
   char **result, *ep, *oep;
@@ -743,20 +746,6 @@ comsub:
   return (c);
 }
 
-/* Return 1 if ARR has any non-empty-string members.  Used to short-circuit
-   in array_concat() below. */
-static int
-degenerate_array (arr)
-     char **arr;
-{
-  register int i;
-
-  for (i = 0; arr[i]; i++)
-    if (arr[i][0] != '\0')
-      return 0;
-  return 1;
-}
-
 /* Return a new array of strings which is the result of appending each
    string in ARR2 to each string in ARR1.  The resultant array is
    len (arr1) * len (arr2) long.  For convenience, ARR1 (and its contents)
@@ -790,7 +779,9 @@ array_concat (arr1, arr2)
   len1 = strvec_len (arr1);
   len2 = strvec_len (arr2);
 
-  result = (char **)xmalloc ((1 + (len1 * len2)) * sizeof (char *));
+  result = (char **)malloc ((1 + (len1 * len2)) * sizeof (char *));
+  if (result == 0)
+    return (result);
 
   len = 0;
   for (i = 0; i < len1; i++)
index 0cfea189db0f9d8d67d03f9c8bd51720ee8636d7..dac95fdbae2e03addd36e8b59e84639317fb2661 100644 (file)
@@ -18,6 +18,9 @@
    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#ifndef BUILTINS_H
+#define BUILTINS_H
+
 #include "config.h"
 
 #if defined (HAVE_UNISTD_H)
@@ -60,3 +63,5 @@ extern int num_shell_builtins;        /* Number of shell builtins. */
 extern struct builtin static_shell_builtins[];
 extern struct builtin *shell_builtins;
 extern struct builtin *current_builtin;
+
+#endif /* BUILTINS_H */
index bbb96c3797b2ed60deaba48b083315c283ac616d..388ca4eb0c03be985fc0f12734a13bf9fad3d249 100644 (file)
@@ -1,6 +1,6 @@
 # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs.
 #
-# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 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
@@ -94,7 +94,7 @@ INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$
 BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \
         ${INCLUDES} $(LOCAL_CFLAGS)
 
-CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)
+CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)
 
 CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)
 
@@ -331,7 +331,7 @@ bashgetopt.o: ../pathnames.h $(topdir)/externs.h $(srcdir)/common.h
 bashgetopt.o: $(BASHINCDIR)/chartypes.h
 common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h
 common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h
-common.o: $(topdir)/sig.h $(topdir)/command.h
+common.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/parser.h
 common.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h
 common.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h
 common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h
@@ -347,7 +347,7 @@ evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir
 evalfile.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h
 evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h
 evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h
-evalfile.o: ../pathnames.h $(topdir)/externs.h
+evalfile.o: ../pathnames.h $(topdir)/externs.h $(topdir)/parser.h
 evalfile.o: $(topdir)/jobs.h $(topdir)/builtins.h $(topdir)/flags.h
 evalfile.o: $(topdir)/input.h $(topdir)/execute_cmd.h
 evalfile.o: $(topdir)/bashhist.h $(srcdir)/common.h
@@ -386,19 +386,18 @@ bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/
 bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h
 bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h
 bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h 
-bind.o: ../pathnames.h
 break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h 
 break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
-break.o: ../pathnames.h
+break.o: ../pathnames.h $(topdir)/execute_cmd.h
 builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h
 builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h
 builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h
 builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h 
-builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h
+builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h $(topdir)/execute_cmd.h
 caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h
 caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h
 caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h
@@ -457,10 +456,11 @@ exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 exit.o: $(topdir)/subst.h $(topdir)/externs.h  $(topdir)/jobs.h
 exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+exit.o: $(topdir)/execute_cmd.h
 exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h ../pathnames.h
 fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h
 fc.o: $(topdir)/builtins.h $(topdir)/command.h $(srcdir)/bashgetopt.h
-fc.o: $(topdir)/bashhist.h
+fc.o: $(topdir)/bashhist.h $(topdir)/parser.h
 fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h
 fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h
 fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
@@ -474,30 +474,34 @@ fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+fg_bg.o: $(topdir)/execute_cmd.h
 fg_bg.o: $(topdir)/jobs.h ../pathnames.h
 getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+getopts.o: $(topdir)/execute_cmd.h
 getopts.o: ../pathnames.h
 hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h
 hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h $(topdir)/sig.h
 hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
-hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h
+hash.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h
 hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ../pathnames.h
 help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h
 help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
-help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h
+help.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h
 help.o: ${srcdir}/common.h $(topdir)/sig.h ../pathnames.h
 history.o: $(topdir)/bashtypes.h
 history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h
-history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h
+history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h  $(topdir)/parser.h
 history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h
 history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h
 history.o: ../pathnames.h
@@ -552,20 +556,22 @@ return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
-return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h
+return.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h
 return.o: ../pathnames.h
 set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h
 set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h
 set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
 set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h $(topdir)/sig.h
-set.o: $(topdir)/arrayfunc.h ../pathnames.h
+set.o: $(topdir)/arrayfunc.h ../pathnames.h $(topdir)/parser.h
 setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h
 setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h
 setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h
 setattr.o: $(topdir)/externs.h $(topdir)/flags.h $(topdir)/sig.h
-setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h 
+setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h
+setattr.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h
 setattr.o: $(topdir)/arrayfunc.h ../pathnames.h
 shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
@@ -586,6 +592,7 @@ source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir
 source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
 source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h
+source.o: $(topdir)/execute_cmd.h
 source.o: ../pathnames.h
 suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
@@ -598,7 +605,7 @@ test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
 test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
-test.o: $(topdir)/test.h ../pathnames.h
+test.o: $(topdir)/execute_cmd.h $(topdir)/test.h ../pathnames.h
 times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
@@ -615,6 +622,7 @@ type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
 type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h
 type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h
+type.o: $(topdir)/execute_cmd.h $(topdir)/parser.h
 type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ../pathnames.h
 type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h 
 ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
@@ -634,7 +642,7 @@ wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
 wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h
 wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h
 wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
-wait.o: $(topdir)/jobs.h $(topdir)/sig.h
+wait.o: $(topdir)/jobs.h $(topdir)/sig.h $(topdir)/execute_cmd.h
 wait.o: $(BASHINCDIR)/chartypes.h ../pathnames.h
 
 complete.o: ../config.h ../pathnames.h
index 508002475dc3fa56653542adf7f227779aae3171..bf484f335cc964e5f7e8506f54f00e6a0366cd08 100644 (file)
@@ -65,8 +65,6 @@ $END
 
 static void print_alias __P((alias_t *, int));
 
-extern int posixly_correct;
-
 /* Hack the alias command in a Korn shell way. */
 int
 alias_builtin (list)
index 649d73f6f2db1aba294c82b54b099124a3b53027..2b18873c2a537780094ea14c5ab79c3846d8f549 100644 (file)
@@ -88,8 +88,7 @@ extern int errno;
 
 static int query_bindings __P((char *));
 static int unbind_command __P((char *));
-
-extern int no_line_editing;
+static int unbind_keyseq __P((char *));
 
 #define BIND_RETURN(x)  do { return_code = x; goto bind_exit; } while (0)
 
@@ -265,11 +264,8 @@ bind_builtin (list)
 
   if ((flags & RFLAG) && remove_seq)
     {
-      if (rl_bind_keyseq (remove_seq, (rl_command_func_t *)NULL) != 0)
-       {
-         builtin_error (_("`%s': cannot unbind"), remove_seq);
-         BIND_RETURN (EXECUTION_FAILURE);
-       }
+      opt = unbind_keyseq (remove_seq);
+      BIND_RETURN (opt);
     }
 
   if (flags & XFLAG)
@@ -342,4 +338,38 @@ unbind_command (name)
   rl_unbind_function_in_map (function, rl_get_keymap ());
   return EXECUTION_SUCCESS;
 }
+
+static int
+unbind_keyseq (seq)
+     char *seq;
+{
+  char *kseq;
+  int kslen;
+
+  kseq = (char *)xmalloc ((2 * strlen (seq)) + 1);
+  if (rl_translate_keyseq (seq, kseq, &kslen))
+    {
+      free (kseq);
+      builtin_error (_("`%s': cannot unbind"), seq);
+      return EXECUTION_FAILURE;
+    }
+  if (rl_function_of_keyseq (kseq, (Keymap)0, (int *)0) == 0)
+    {
+      free (kseq);
+      return (EXECUTION_SUCCESS);
+    }
+
+  /* I wish this didn't have to translate the key sequence again, but readline
+     doesn't have a binding function that takes a translated key sequence as
+     an argument. */
+  if (rl_bind_keyseq (seq, (rl_command_func_t *)NULL) != 0)
+    {
+      free (kseq);
+      builtin_error (_("`%s': cannot unbind"), seq);
+      return (EXECUTION_FAILURE);
+    }
+
+  free (kseq);
+  return (EXECUTION_SUCCESS);
+}
 #endif /* READLINE */
index bdc1182a8114bdfb4e7afcb2a31ed81f5437fde1..876d0635d5112f03879f9a9670b630b07c17b279 100644 (file)
@@ -43,11 +43,9 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "common.h"
 
-extern char *this_command_name;
-extern int posixly_correct;
-
 static int check_loop_level __P((void));
 
 /* The depth of while's and until's. */
index 3e765e4108b38312fd3351673b6fde8cd84abfa2..74060ee09f00a4108f5fb358c7706d5a1e1083fa 100644 (file)
@@ -1,7 +1,7 @@
 This file is builtin.def, from which is created builtin.c.
 It implements the builtin "builtin" in Bash.
 
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -31,7 +31,7 @@ as a shell function, but need to execute the builtin within the function.
 
 Exit Status:
 Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is
-not a shell builtin..
+not a shell builtin.
 $END
 #include <config.h>
 
@@ -43,11 +43,10 @@ $END
 #endif
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "common.h"
 #include "bashgetopt.h"
 
-extern char *this_command_name;
-
 /* Run the command mentioned in list directly, without going through the
    normal alias/function/builtin/filename lookup process. */
 int
@@ -71,7 +70,7 @@ builtin_builtin (list)
   function = find_shell_builtin (command);
 #endif /* !DISABLED_BUILTINS */
 
-  if (!function)
+  if (function == 0)
     {
       sh_notbuiltin (command);
       return (EXECUTION_FAILURE);
@@ -79,6 +78,7 @@ builtin_builtin (list)
   else
     {
       this_command_name = command;
+      this_shell_builtin = function;   /* overwrite "builtin" as this builtin */
       list = list->next;
       return ((*function) (list));
     }
index 421e819b2023f5888d9b0ea92572e387b5876cfd..fe75b57f11990ae597c35ef31ed9b6e27a09c1dd 100644 (file)
@@ -54,8 +54,6 @@ $PRODUCES cd.c
 extern int errno;
 #endif /* !errno */
 
-extern int posixly_correct;
-extern int array_needs_making;
 extern const char * const bash_getcwd_errstr;
 
 static int bindpwd __P((int));
@@ -140,7 +138,7 @@ bindpwd (no_symlinks)
      int no_symlinks;
 {
   char *dirname, *pwdvar;
-  int old_anm, r;
+  int old_anm, r, canon_failed;
   SHELL_VAR *tvar;
 
   r = sh_chkwrite (EXECUTION_SUCCESS);
@@ -150,6 +148,13 @@ bindpwd (no_symlinks)
                 : get_working_directory ("cd");
 #undef tcwd
 
+  /* If canonicalization fails, reset dirname to the_current_working_directory */
+  if (dirname == 0)
+    {
+      canon_failed = 1;
+      dirname = the_current_working_directory;
+    }
+
   old_anm = array_needs_making;
   pwdvar = get_string_value ("PWD");
 
@@ -165,7 +170,7 @@ bindpwd (no_symlinks)
 
   if (setpwd (dirname) == EXECUTION_FAILURE)
     r = EXECUTION_FAILURE;
-  if (dirname == 0 && eflag)
+  if (canon_failed && eflag)
     r = EXECUTION_FAILURE;
 
   if (dirname && dirname != the_current_working_directory)
@@ -547,7 +552,7 @@ change_to_directory (newdir, nolinks, xattr)
      int nolinks, xattr;
 {
   char *t, *tdir, *ndir;
-  int err, canon_failed, r, ndlen, dlen;
+  int err, canon_failed, r, ndlen;
 
   tdir = (char *)NULL;
 
@@ -566,7 +571,6 @@ change_to_directory (newdir, nolinks, xattr)
                 : sh_canonpath (t, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
 
   ndlen = strlen (newdir);
-  dlen = strlen (t);
 
   /* Use the canonicalized version of NEWDIR, or, if canonicalization
      failed, use the non-canonical form. */
@@ -583,7 +587,11 @@ change_to_directory (newdir, nolinks, xattr)
   /* In POSIX mode, if we're resolving symlinks logically and sh_canonpath
      returns NULL (because it checks the path, it will return NULL if the
      resolved path doesn't exist), fail immediately. */
+#if defined (ENAMETOOLONG)
   if (posixly_correct && nolinks == 0 && canon_failed && (errno != ENAMETOOLONG || ndlen > PATH_MAX))
+#else
+  if (posixly_correct && nolinks == 0 && canon_failed && ndlen > PATH_MAX)
+#endif
     {
 #if defined ENAMETOOLONG
       if (errno != ENOENT && errno != ENAMETOOLONG)
@@ -653,8 +661,9 @@ change_to_directory (newdir, nolinks, xattr)
 
   /* We're not in physical mode (nolinks == 0), but we failed to change to
      the canonicalized directory name (TDIR).  Try what the user passed
-     verbatim. If we succeed, reinitialize the_current_working_directory. */
-  if (chdir (newdir) == 0)
+     verbatim. If we succeed, reinitialize the_current_working_directory.
+     POSIX requires that we just fail here, so we do in posix mode. */
+  if (posixly_correct == 0 && chdir (newdir) == 0)
     {
       t = resetpwd ("cd");
       if (t == 0)
index dcb510d5b84b650541a52bf805d7958c32999aba..d58c985bc70631d51d69b6d9d63027369ab1526f 100644 (file)
@@ -60,10 +60,6 @@ $END
 extern size_t confstr __P((int, char *, size_t));
 #endif
 
-extern int subshell_environment;
-
-static void restore_path __P((char *));
-
 /* Run the commands mentioned in LIST without paying attention to shell
    functions. */
 int
@@ -71,7 +67,6 @@ command_builtin (list)
      WORD_LIST *list;
 {
   int result, verbose, use_standard_path, opt;
-  char *old_path, *standard_path;
   COMMAND *command;
 
   verbose = use_standard_path = 0;
@@ -144,20 +139,3 @@ command_builtin (list)
 
   return (result);
 }
-
-/* Restore the value of the $PATH variable after replacing it when
-   executing `command -p'. */
-static void
-restore_path (var)
-     char *var;
-{
-  if (var)
-    {
-      bind_variable ("PATH", var, 0);
-      free (var);
-    }
-  else
-    unbind_variable ("PATH");
-
-  stupidly_hack_special_variables ("PATH");
-}
index b100ebe1c38eb1822993088739ba644d74296085..00be24ea0029911f48273cf666f79206f78e3812 100644 (file)
@@ -1,6 +1,6 @@
 /* common.c - utility functions for all builtins */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -49,6 +49,7 @@
 #include "../shell.h"
 #include "maxpath.h"
 #include "../flags.h"
+#include "../parser.h"
 #include "../jobs.h"
 #include "../builtins.h"
 #include "../input.h"
 extern int errno;   
 #endif /* !errno */
 
-extern int indirection_level, subshell_environment;
-extern int line_number;
-extern int last_command_exit_value;
-extern int trap_saved_exit_value;
-extern int running_trap;
-extern int posixly_correct;
-extern char *this_command_name, *shell_name;
 extern const char * const bash_getcwd_errstr;
 
 /* Used by some builtins and the mainline code. */
@@ -543,7 +537,7 @@ read_octal (string)
     {
       digits++;
       result = (result * 8) + (*string++ - '0');
-      if (result > 0777)
+      if (result > 07777)
        return -1;
     }
 
@@ -684,7 +678,7 @@ get_job_spec (list)
   if (DIGIT (*word) && all_digits (word))
     {
       job = atoi (word);
-      return (job > js.j_jobslots ? NO_JOB : job - 1);
+      return ((job < 0 || job > js.j_jobslots) ? NO_JOB : job - 1);
     }
 
   jflags = 0;
@@ -782,13 +776,9 @@ display_signal_list (list, forcecols)
              list = list->next;
              continue;
            }
-#if defined (JOB_CONTROL)
          /* POSIX.2 says that `kill -l signum' prints the signal name without
             the `SIG' prefix. */
-         printf ("%s\n", (this_shell_builtin == kill_builtin) ? name + 3 : name);
-#else
-         printf ("%s\n", name);
-#endif
+         printf ("%s\n", (this_shell_builtin == kill_builtin && signum > 0) ? name + 3 : name);
        }
       else
        {
index ed852305d5bb95a79cf1b3bfd28006ff2100ed5c..f0687640dd8fa8d1e102118a9597b1c2590a3302 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "stdc.h"
 
-#define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c)
+#define ISOPTION(s, c) (s[0] == '-' && s[1] == c && !s[2])
 #define ISHELP(s)      (STREQ ((s), "--help"))
 
 #define CHECK_HELPOPT(l) \
@@ -200,10 +200,11 @@ extern WORD_LIST *get_directory_stack __P((int));
 /* Functions from evalstring.c */
 extern int parse_and_execute __P((char *, const char *, int));
 extern int evalstring __P((char *, const char *, int));
-extern void parse_and_execute_cleanup __P((void));
+extern void parse_and_execute_cleanup __P((int));
 extern int parse_string __P((char *, const char *, int, char **));
 extern int should_suppress_fork __P((COMMAND *));
 extern void optimize_fork __P((COMMAND *));
+extern void optimize_subshell_command __P((COMMAND *));
 
 /* Functions from evalfile.c */
 extern int maybe_execute_file __P((const char *, int));
@@ -211,4 +212,32 @@ extern int force_execute_file __P((const char *, int));
 extern int source_file __P((const char *, int));
 extern int fc_execute_file __P((const char *));
 
+/* variables from common.c */
+extern sh_builtin_func_t *this_shell_builtin;
+extern sh_builtin_func_t *last_shell_builtin;
+
+/* variables from evalfile.c */
+extern int sourcelevel;
+
+/* variables from evalstring.c */
+extern int parse_and_execute_level;
+
+/* variables from break.def/continue.def */
+extern int breaking;
+extern int continuing;
+extern int loop_level;
+
+/* variables from read.def */
+extern int sigalrm_seen;
+
+/* variables from shift.def */
+extern int print_shift_error;
+
+/* variables from source.def */
+extern int source_searches_cwd;
+extern int source_uses_path;
+
+/* variables from wait.def */
+extern int wait_intr_flag;
+
 #endif /* !__COMMON_H */
index 6bdf88b4727105ea050aca8302afab6ab516b0db..76b3eedd82ef7699ca05e3b7af07b939d32bf138 100644 (file)
@@ -23,7 +23,7 @@ $PRODUCES complete.c
 $BUILTIN complete
 $DEPENDS_ON PROGRAMMABLE_COMPLETION
 $FUNCTION complete_builtin
-$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
+$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
 Specify how arguments are to be completed by Readline.
 
 For each NAME, specify how arguments are to be completed.  If no options
@@ -38,10 +38,12 @@ Options:
                without any specific completion defined
   -E   apply the completions and actions to "empty" commands --
                completion attempted on a blank line
+  -I   apply the completions and actions to the initial (usually the
+               command) word
 
 When completion is attempted, the actions are applied in the order the
-uppercase-letter options are listed above.  The -D option takes
-precedence over -E.
+uppercase-letter options are listed above.  If multiple options are supplied,
+the -D option takes precedence over -E, and both take precedence over -I.
 
 Exit Status:
 Returns success unless an invalid option is supplied or an error occurs.
@@ -79,6 +81,7 @@ struct _optflags {
   int rflag;
   int Dflag;
   int Eflag;
+  int Iflag;
 };
 
 static int find_compact __P((char *));
@@ -195,7 +198,7 @@ build_actions (list, flagp, actp, optp)
   opt_given = 0;
 
   reset_internal_getopt ();
-  while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DE")) != -1)
+  while ((opt = internal_getopt (list, "abcdefgjko:prsuvA:G:W:P:S:X:F:C:DEI")) != -1)
     {
       opt_given = 1;
       switch (opt)
@@ -307,6 +310,18 @@ build_actions (list, flagp, actp, optp)
              builtin_usage ();
              return (EX_USAGE);
            }
+       case 'I':
+         if (flagp)
+           {
+             flagp->Iflag = 1;
+             break;
+           }
+         else
+           {
+             sh_invalidopt ("-I");
+             builtin_usage ();
+             return (EX_USAGE);
+           }
        case 'F':
          Farg = list_optarg;
          break;
@@ -355,7 +370,8 @@ complete_builtin (list)
       return (EXECUTION_SUCCESS);
     }
 
-  opt_given = oflags.pflag = oflags.rflag = oflags.Dflag = oflags.Eflag = 0;
+  opt_given = oflags.pflag = oflags.rflag = 0;
+  oflags.Dflag = oflags.Eflag = oflags.Iflag = 0;
 
   acts = copts = (unsigned long)0L;
   Garg = Warg = Parg = Sarg = Xarg = Farg = Carg = (char *)NULL;
@@ -370,8 +386,14 @@ complete_builtin (list)
 
   list = loptend;
 
-  wl = oflags.Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL)
-                   : (oflags.Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0);
+  if (oflags.Dflag)
+    wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL);
+  else if (oflags.Eflag)
+    wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL);
+  else if (oflags.Iflag)
+    wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL);
+  else
+    wl = (WORD_LIST *)NULL;
 
   /* -p overrides everything else */
   if (oflags.pflag || (list == 0 && opt_given == 0))
@@ -515,6 +537,8 @@ print_one_completion (cmd, cs)
   PRINTCOMPOPT (COPT_DEFAULT, "default");
   PRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
   PRINTCOMPOPT (COPT_FILENAMES, "filenames");
+  PRINTCOMPOPT (COPT_NOQUOTE, "noquote");
+  PRINTCOMPOPT (COPT_NOSORT, "nosort");
   PRINTCOMPOPT (COPT_NOSPACE, "nospace");
   PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
 
@@ -562,10 +586,12 @@ print_one_completion (cmd, cs)
   /* simple arguments that don't require quoting */
   PRINTARG (cs->funcname, "-F");
 
-  if (STREQ (cmd, EMPTYCMD))
-    printf ("-E\n");
-  else if (STREQ (cmd, DEFAULTCMD))
+  if (STREQ (cmd, DEFAULTCMD))
     printf ("-D\n");
+  else if (STREQ (cmd, EMPTYCMD))
+    printf ("-E\n");
+  else if (STREQ (cmd, INITIALWORD))
+    printf ("-I\n");
   else
     printf ("%s\n", cmd);
 
@@ -589,6 +615,8 @@ print_compopts (cmd, cs, full)
       XPRINTCOMPOPT (COPT_DEFAULT, "default");
       XPRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
       XPRINTCOMPOPT (COPT_FILENAMES, "filenames");
+      XPRINTCOMPOPT (COPT_NOQUOTE, "noquote");
+      XPRINTCOMPOPT (COPT_NOSORT, "nosort");
       XPRINTCOMPOPT (COPT_NOSPACE, "nospace");
       XPRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
     }
@@ -598,14 +626,18 @@ print_compopts (cmd, cs, full)
       PRINTCOMPOPT (COPT_DEFAULT, "default");
       PRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
       PRINTCOMPOPT (COPT_FILENAMES, "filenames");
+      PRINTCOMPOPT (COPT_NOQUOTE, "noquote");
+      PRINTCOMPOPT (COPT_NOSORT, "nosort");
       PRINTCOMPOPT (COPT_NOSPACE, "nospace");
       PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
     }
 
-  if (STREQ (cmd, EMPTYCMD))
-    printf ("-E\n");
-  else if (STREQ (cmd, DEFAULTCMD))
+  if (STREQ (cmd, DEFAULTCMD))
     printf ("-D\n");
+  else if (STREQ (cmd, EMPTYCMD))
+    printf ("-E\n");
+  else if (STREQ (cmd, INITIALWORD))
+    printf ("-I\n");
   else
     printf ("%s\n", cmd);
 }
@@ -675,6 +707,8 @@ compgen_builtin (list)
   COMPSPEC *cs;
   STRINGLIST *sl;
   char *word, **matches;
+  char *old_line;
+  int old_ind;
 
   if (list == 0)
     return (EXECUTION_SUCCESS);
@@ -715,7 +749,15 @@ compgen_builtin (list)
   cs->filterpat = STRDUP (Xarg);
 
   rval = EXECUTION_FAILURE;
+
+  /* probably don't have to save these, just being safe */
+  old_line = pcomp_line;
+  old_ind = pcomp_ind;
+  pcomp_line = (char *)NULL;
+  pcomp_ind = 0;
   sl = gen_compspec_completions (cs, "compgen", word, 0, 0, 0);
+  pcomp_line = old_line;
+  pcomp_ind = old_ind;
 
   /* If the compspec wants the bash default completions, temporarily
      turn off programmable completion and call the bash completion code. */
@@ -753,7 +795,7 @@ compgen_builtin (list)
 $BUILTIN compopt
 $DEPENDS_ON PROGRAMMABLE_COMPLETION
 $FUNCTION compopt_builtin
-$SHORT_DOC compopt [-o|+o option] [-DE] [name ...]
+$SHORT_DOC compopt [-o|+o option] [-DEI] [name ...]
 Modify or display completion options.
 
 Modify the completion options for each NAME, or, if no NAMEs are supplied,
@@ -764,6 +806,7 @@ Options:
        -o option       Set completion option OPTION for each NAME
        -D              Change options for the "default" command completion
        -E              Change options for the "empty" command completion
+       -I              Change options for completion on the initial word
 
 Using `+o' instead of `-o' turns off the specified option.
 
@@ -784,15 +827,15 @@ int
 compopt_builtin (list)
      WORD_LIST *list;
 {
-  int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag;
+  int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag, Iflag;
   WORD_LIST *l, *wl;
   COMPSPEC *cs;
 
-  opts_on = opts_off = Eflag = Dflag = 0;
+  opts_on = opts_off = Eflag = Dflag = Iflag = 0;
   ret = EXECUTION_SUCCESS;
 
   reset_internal_getopt ();
-  while ((opt = internal_getopt (list, "+o:DE")) != -1)
+  while ((opt = internal_getopt (list, "+o:DEI")) != -1)
     {
       opts = (list_opttype == '-') ? &opts_on : &opts_off;
 
@@ -813,6 +856,9 @@ compopt_builtin (list)
        case 'E':
          Eflag = 1;
          break;
+       case 'I':
+         Iflag = 1;
+         break;
        CASE_HELPOPT;
        default:
          builtin_usage ();
@@ -821,8 +867,14 @@ compopt_builtin (list)
     }
   list = loptend;
 
-  wl = Dflag ? make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL)
-            : (Eflag ? make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL) : 0);
+  if (Dflag)
+    wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL);
+  else if (Eflag)
+    wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL);
+  else if (Iflag)
+    wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL);
+  else
+    wl = (WORD_LIST *)NULL;
 
   if (list == 0 && wl == 0)
     {
index f4819b42377ee04da7b5253886b8f428dcd9fb9c..7eac6f5839f0abb52456a8bdddd22de29eabe9ea 100644 (file)
@@ -40,11 +40,11 @@ Options which set attributes:
   -a   to make NAMEs indexed arrays (if supported)
   -A   to make NAMEs associative arrays (if supported)
   -i   to make NAMEs have the `integer' attribute
-  -l   to convert NAMEs to lower case on assignment
+  -l   to convert the value of each NAME to lower case on assignment
   -n   make NAME a reference to the variable named by its value
   -r   to make NAMEs readonly
   -t   to make NAMEs have the `trace' attribute
-  -u   to convert NAMEs to upper case on assignment
+  -u   to convert the value of each NAME to upper case on assignment
   -x   to make NAMEs export
 
 Using `+' instead of `-' turns off the given attribute.
@@ -88,9 +88,7 @@ $END
 #include "builtext.h"
 #include "bashgetopt.h"
 
-extern int array_needs_making;
-extern int posixly_correct;
-
+static SHELL_VAR *declare_find_variable __P((const char *, int, int));
 static int declare_internal __P((register WORD_LIST *, int));
 
 /* Declare or change variable attributes. */
@@ -120,6 +118,13 @@ int
 local_builtin (list)
      register WORD_LIST *list;
 {
+  /* Catch a straight `local --help' before checking function context */
+  if (list && list->word && STREQ (list->word->word, "--help"))
+    {
+      builtin_help ();
+      return (EX_USAGE);
+    }
+    
   if (variable_context)
     return (declare_internal (list, 1));
   else
@@ -130,11 +135,31 @@ local_builtin (list)
 }
 
 #if defined (ARRAY_VARS)
-#  define DECLARE_OPTS "+acfgilnprtuxAF"
+#  define DECLARE_OPTS "+acfgilnprtuxAFG"
 #else
-#  define DECLARE_OPTS "+cfgilnprtuxF"
+#  define DECLARE_OPTS "+cfgilnprtuxFG"
 #endif
 
+static SHELL_VAR *
+declare_find_variable (name, mkglobal, chklocal)
+     const char *name;
+     int mkglobal, chklocal;
+{
+  SHELL_VAR *var;
+
+  if (mkglobal == 0)
+    return (find_variable (name));
+  else if (chklocal)
+    {
+      var = find_variable (name);
+      if (var && local_p (var) && var->context == variable_context)
+       return var;
+      return (find_global_variable (name));
+    }
+  else
+    return (find_global_variable (name));
+}
+
 /* The workhorse function. */
 static int
 declare_internal (list, local_var)
@@ -142,12 +167,14 @@ declare_internal (list, local_var)
      int local_var;
 {
   int flags_on, flags_off, *flags;
-  int any_failed, assign_error, pflag, nodefs, opt, mkglobal, onref, offref;
+  int any_failed, assign_error, pflag, nodefs, opt, onref, offref;
+  int mkglobal, chklocal;
   char *t, *subscript_start;
   SHELL_VAR *var, *refvar, *v;
   FUNCTION_DEF *shell_fn;
 
-  flags_on = flags_off = any_failed = assign_error = pflag = nodefs = mkglobal = 0;
+  flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0;
+  mkglobal = chklocal = 0;
   refvar = (SHELL_VAR *)NULL;
   reset_internal_getopt ();
   while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1)
@@ -185,6 +212,10 @@ declare_internal (list, local_var)
        case 'f':
          *flags |= att_function;
          break;
+       case 'G':
+         if (flags == &flags_on)
+           chklocal = 1;
+         /*FALLTHROUGH*/
        case 'g':
          if (flags == &flags_on)
            mkglobal = 1;
@@ -288,6 +319,7 @@ declare_internal (list, local_var)
     {
       char *value, *name, *oldname;
       int offset, aflags, wflags, created_var, namelen;
+      int assoc_noexpand;
 #if defined (ARRAY_VARS)
       int making_array_special, compound_array_assign, simple_array_assign;
       int var_exists, array_exists, creating_array, array_subscript_assignment;
@@ -295,13 +327,18 @@ declare_internal (list, local_var)
 
       name = savestring (list->word->word);
       wflags = list->word->flags;
-      offset = assignment (name, 0);
+#if defined (ARRAY_VARS)
+      assoc_noexpand = assoc_expand_once && (wflags & W_ASSIGNMENT);
+#else
+      assoc_noexpand = 0;
+#endif
+      offset = assignment (name, assoc_noexpand ? 2 : 0);
       aflags = 0;
       created_var = 0;
 
       if (local_var && variable_context && STREQ (name, "-"))
        {
-         var = make_local_variable ("-");
+         var = make_local_variable ("-", 0);
          FREE (value_cell (var));              /* just in case */
          value = get_current_options ();
          var_setvalue (var, value);
@@ -363,7 +400,7 @@ restart_new_var_name:
       compound_array_assign = simple_array_assign = 0;
       array_subscript_assignment = 0;
       subscript_start = (char *)NULL;
-      if (t = strchr (name, '['))      /* ] */
+      if ((t = strchr (name, '[')) && (flags_on & att_function) == 0)  /* ] */
        {
          /* If offset != 0 we have already validated any array reference
             because assignment() calls skipsubscript() */
@@ -403,19 +440,38 @@ restart_new_var_name:
       refvar = (SHELL_VAR *)NULL;
       if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0))
        {
+         char *newname;
+
          /* check name for validity here? */
+         var = find_variable (name);
+         if (var == 0)
+           newname = nameref_transform_name (name, ASS_MKLOCAL);
+         else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0)
+           {
+             /* Ok, we're following namerefs here, so let's make sure that if
+                we followed one, it was at the same context (see below for
+                more details). */
+             refvar = find_variable_last_nameref (name, 1);
+             newname = (refvar && refvar->context != variable_context) ? name : var->name;
+             refvar = (SHELL_VAR *)NULL;
+           }
+         else
+           newname = name;     /* dealing with nameref attribute */
+
 #if defined (ARRAY_VARS)
+         /* Pass 1 as second argument to make_local_{assoc,array}_variable
+            return an existing {array,assoc} variable to be flagged as an
+            error below. */
          if (flags_on & att_assoc)
-           var = make_local_assoc_variable (name);
+           var = make_local_assoc_variable (newname, 1);
          else if ((flags_on & att_array) || making_array_special)
-           var = make_local_array_variable (name, making_array_special);
+           var = make_local_array_variable (newname, 1);
          else
 #endif
          if (offset == 0 && (flags_on & att_nameref))
            {
              /* First look for refvar at current scope */
              refvar = find_variable_last_nameref (name, 1);
-             var = find_variable (name);
              /* VARIABLE_CONTEXT != 0, so we are attempting to create or modify
                 the attributes for a local variable at the same scope.  If we've
                 used a reference from a previous context to resolve VAR, we
@@ -423,18 +479,19 @@ restart_new_var_name:
              if (refvar && refvar->context != variable_context)
                {
                  refvar = 0;
-                 var = make_local_variable (name);
+                 var = make_local_variable (name, 0);
                }
              else if (refvar && refvar->context == variable_context)
                var = refvar;
              /* Maybe we just want to create a new local variable */
              else if (var == 0 || var->context != variable_context)
-               var = make_local_variable (name);
+               var = make_local_variable (name, 0);
              /* otherwise we have a var at the right context */
            }
          else
            /* XXX - check name for validity here with valid_nameref_value */
-           var = make_local_variable (name);   /* sets att_invisible for new vars */
+           var = make_local_variable ((flags_on & att_nameref) ? name : newname, 0);   /* sets att_invisible for new vars */
+
          if (var == 0)
            {
              any_failed++;
@@ -528,21 +585,17 @@ restart_new_var_name:
 #endif
          if (var == 0 && (flags_on & att_nameref))
            {
-#if 0
-             /* See if we are trying to modify an existing nameref variable */
-             var = mkglobal ? find_global_variable_last_nameref (name, 1) : find_variable_last_nameref (name, 1);
-#else
              /* See if we are trying to modify an existing nameref variable,
                 but don't follow the nameref chain. */
              var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name);
-#endif
              if (var && nameref_p (var) == 0)
                var = 0;
            }
          /* However, if we're turning off the nameref attribute on an existing
             nameref variable, we first follow the nameref chain to the end,
-            modify the value of the variable this nameref variable references,
-            *CHANGING ITS VALUE AS A SIDE EFFECT* then turn off the nameref
+            modify the value of the variable this nameref variable references
+            if there is an assignment statement argument,
+            *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref
             flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */
          else if (var == 0 && (flags_off & att_nameref))
            {
@@ -560,7 +613,18 @@ restart_new_var_name:
                  any_failed++;
                  NEXT_VARIABLE ();
                }
+
+             /* If all we're doing is turning off the nameref attribute, don't
+                bother with VAR at all, whether it exists or not. Just turn it
+                off and go on. */
+             if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0)
+               {
+                 VUNSETATTR (refvar, att_nameref);
+                 NEXT_VARIABLE ();
+               }
+
              if (refvar)
+               /* XXX - use declare_find_variable here? */
                var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar));
            }
 #if defined (ARRAY_VARS)
@@ -579,19 +643,20 @@ restart_new_var_name:
            }
 #endif
 
-         /* See if we are trying to set flags or value for an existing nameref
-            that points to a non-existent variable: e.g.,
+         /* See if we are trying to set flags or value (or create) for an
+            existing nameref that points to a non-existent variable: e.g.,
                declare -n foo=bar
                unset foo       # unsets bar
                declare -i foo
                foo=4+4
                declare -p foo */
-         if (var == 0 && (flags_on || flags_off || offset))
+         if (var == 0 && (mkglobal || flags_on || flags_off || offset))
            {
              refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0);
              if (refvar && nameref_p (refvar) == 0)
                refvar = 0;
              if (refvar)
+               /* XXX - use declare_find_variable here? */
                var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar));
              if (refvar && var == 0)
                {
@@ -637,12 +702,18 @@ restart_new_var_name:
                      value = name + namelen;
                    }
                  free (oldname);
+
+                 /* OK, let's turn off the nameref attribute.
+                    Now everything else applies to VAR. */
+                 if (flags_off & att_nameref)
+                   VUNSETATTR (refvar, att_nameref);
+
                  goto restart_new_var_name;
                  /* NOTREACHED */
                }
            }
          if (var == 0)
-           var = mkglobal ? find_global_variable (name) : find_variable (name);
+           var = declare_find_variable (name, mkglobal, chklocal);
 
 #if defined (ARRAY_VARS)
          var_exists = var != 0;
@@ -821,10 +892,13 @@ restart_new_var_name:
            assign_array_var_from_string (var, value, aflags|ASS_FORCE);
          else if (simple_array_assign && subscript_start)
            {
+             int local_aflags;
              /* declare [-aA] name[N]=value */
              *subscript_start = '[';   /* ] */
              /* XXX - problem here with appending */
-             var = assign_array_element (name, value, aflags&ASS_APPEND);      /* XXX - not aflags */
+             local_aflags = aflags&ASS_APPEND;
+             local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0;
+             var = assign_array_element (name, value, local_aflags);   /* XXX - not aflags */
              *subscript_start = '\0';
              if (var == 0)     /* some kind of assignment error */
                {
@@ -885,9 +959,12 @@ restart_new_var_name:
                {
                  tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring ("");
                  tv = bind_variable (var->name, tvalue, 0);
-                 tv->attributes |= var->attributes & ~att_tempvar;
-                 if (tv->context > 0)
-                   VSETATTR (tv, att_propagate);
+                 if (tv)
+                   {
+                     tv->attributes |= var->attributes & ~att_tempvar;
+                     if (tv->context > 0)
+                       VSETATTR (tv, att_propagate);
+                   }
                  free (tvalue);
                }
              VSETATTR (var, att_propagate);
index 3f8b5a939cc653c17662ad69e9329631e9e3ffcf..4e2243dbee4598b29c8566afe25d7a2d66430d0f 100644 (file)
@@ -1,7 +1,7 @@
 This file is echo.def, from which is created echo.c.
 It implements the builtin "echo" in Bash.
 
-Copyright (C) 1987-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -62,6 +62,10 @@ Options:
                0 to 3 octal digits
   \xHH the eight-bit character whose value is HH (hexadecimal).  HH
                can be one or two hex digits
+  \uHHHH       the Unicode character whose value is the hexadecimal value HHHH.
+               HHHH can be one to four hex digits.
+  \UHHHHHHHH the Unicode character whose value is the hexadecimal value
+               HHHHHHHH. HHHHHHHH can be one to eight hex digits.
 
 Exit Status:
 Returns success unless a write error occurs.
@@ -99,8 +103,6 @@ int xpg_echo = 1;
 int xpg_echo = 0;
 #endif /* DEFAULT_ECHO_TO_XPG */
 
-extern int posixly_correct;
-
 /* Print the words in LIST to standard output.  If the first word is
    `-n', then don't print a trailing newline.  We also support the
    echo syntax from Version 9 Unix systems. */
index 316b7940f623725ba619b6147116ab8ca192b662..32a7c8d68f60e127644b1393a0095f2740537a12 100644 (file)
@@ -1,6 +1,6 @@
 /* evalfile.c - read and evaluate commands from a file or file descriptor */
 
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -36,6 +36,7 @@
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../parser.h"
 #include "../jobs.h"
 #include "../builtins.h"
 #include "../flags.h"
@@ -68,13 +69,6 @@ extern int errno;
 #define FEVAL_REGFILE          0x080
 #define FEVAL_NOPUSHARGS       0x100
 
-extern int posixly_correct;
-extern int indirection_level, subshell_environment;
-extern int return_catch_flag, return_catch_value;
-extern int last_command_exit_value;
-extern int executing_command_builtin;
-extern int current_token;              /* parse.y */
-
 /* How many `levels' of sourced files we have. */
 int sourcelevel = 0;
 
@@ -92,7 +86,7 @@ _evalfile (filename, flags)
   size_t file_size;
   sh_vmsg_func_t *errfunc;
 #if defined (ARRAY_VARS)
-  SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v;
+  SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v;
   ARRAY *funcname_a, *bash_source_a, *bash_lineno_a;
   struct func_array_state *fa;
 #  if defined (DEBUGGER)
@@ -260,7 +254,9 @@ file_error_and_exit:
      arguments */
   if ((flags & FEVAL_NOPUSHARGS) == 0)
     {
-      array_push (bash_argv_a, (char *)filename);
+      if (shell_compatibility_level <= 44)
+       init_bash_argv ();
+      array_push (bash_argv_a, (char *)filename);      /* XXX - unconditionally? */
       tt[0] = '1'; tt[1] = '\0';
       array_push (bash_argc_a, tt);
       if (flags & FEVAL_UNWINDPROT)
@@ -282,7 +278,7 @@ file_error_and_exit:
      force parse_and_execute () to clean up. */
   if (return_val)
     {
-      parse_and_execute_cleanup ();
+      parse_and_execute_cleanup (-1);
       result = return_catch_value;
     }
   else
index 6dc756c276e5cdc9b047b34fba5324cd35848999..1496eeec2c01e7fa01c14bf4f965e0a20a964268 100644 (file)
@@ -1,6 +1,6 @@
 /* evalstring.c - evaluate a string as one or more shell commands. */
 
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -39,6 +39,7 @@
 #include "../jobs.h"
 #include "../builtins.h"
 #include "../flags.h"
+#include "../parser.h"
 #include "../input.h"
 #include "../execute_cmd.h"
 #include "../redir.h"
@@ -60,19 +61,6 @@ extern int errno;
 
 #define IS_BUILTIN(s)  (builtin_address_internal(s, 0) != (struct builtin *)NULL)
 
-extern int indirection_level, subshell_environment;
-extern int line_number, line_number_for_err_trap;
-extern int current_token, shell_eof_token;
-extern int last_command_exit_value;
-extern int running_trap;
-extern int loop_level;
-extern int executing_list;
-extern int comsub_ignore_return;
-extern int posixly_correct;
-extern int return_catch_flag, return_catch_value;
-extern sh_builtin_func_t *this_shell_builtin;
-extern char *the_printed_command_except_trap;
-
 int parse_and_execute_level = 0;
 
 static int cat_file __P((REDIRECT *));
@@ -124,14 +112,41 @@ optimize_fork (command)
       command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK;
     }
 }
+
+void
+optimize_subshell_command (command)
+     COMMAND *command;
+{
+  if (running_trap == 0 &&
+      command->type == cm_simple &&
+      signal_is_trapped (EXIT_TRAP) == 0 &&
+      signal_is_trapped (ERROR_TRAP) == 0 &&
+      any_signals_trapped () < 0 &&
+      command->redirects == 0 && command->value.Simple->redirects == 0 &&
+      ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+      ((command->flags & CMD_INVERT_RETURN) == 0))
+    {
+      command->flags |= CMD_NO_FORK;
+      command->value.Simple->flags |= CMD_NO_FORK;
+    }
+  else if (command->type == cm_connection &&
+          (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR))
+    optimize_subshell_command (command->value.Connection->second);
+}
      
 /* How to force parse_and_execute () to clean up after itself. */
 void
-parse_and_execute_cleanup ()
+parse_and_execute_cleanup (old_running_trap)
+     int old_running_trap;
 {
-  if (running_trap)
+  if (running_trap > 0)
     {
-      run_trap_cleanup (running_trap - 1);
+      /* We assume if we have a different value for running_trap than when
+        we started (the only caller that cares is evalstring()), the
+        original caller will perform the cleanup, and we should not step
+        on them. */
+      if (running_trap != old_running_trap)
+       run_trap_cleanup (running_trap - 1);
       unfreeze_jobs_list ();
     }
 
@@ -433,11 +448,11 @@ parse_and_execute (string, from_file, flags)
        }
       else
        {
-         last_result = EXECUTION_FAILURE;
+         last_result = EX_BADUSAGE;    /* was EXECUTION_FAILURE */
 
          if (interactive_shell == 0 && this_shell_builtin &&
              (this_shell_builtin == source_builtin || this_shell_builtin == eval_builtin) &&
-             last_command_exit_value == EX_BADSYNTAX && posixly_correct)
+             last_command_exit_value == EX_BADSYNTAX && posixly_correct && executing_command_builtin == 0)
            {
              should_jump_to_top_level = 1;
              code = ERREXIT;
@@ -644,6 +659,10 @@ evalstring (string, from_file, flags)
      int flags;
 {
   volatile int r, rflag, rcatch;
+  volatile int was_trap;
+
+  /* Are we running a trap when we execute this function? */
+  was_trap = running_trap;
 
   rcatch = 0;
   rflag = return_catch_flag;
@@ -663,7 +682,9 @@ evalstring (string, from_file, flags)
 
   if (rcatch)
     {
-      parse_and_execute_cleanup ();
+      /* We care about whether or not we are running the same trap we were
+        when we entered this function. */
+      parse_and_execute_cleanup (was_trap);
       r = return_catch_value;
     }
   else
index 7d7edce0385927a4287f128196d3469f070c668b..d4670673c7706e32fdb905115b5d1b87585fdc6c 100644 (file)
@@ -68,13 +68,13 @@ $END
 #endif
 #include "common.h"
 #include "bashgetopt.h"
+#include "input.h"
 
 /* Not all systems declare ERRNO in errno.h... and some systems #define it! */
 #if !defined (errno)
 extern int errno;
 #endif /* !errno */
 
-extern int subshell_environment;
 extern REDIRECT *redirection_undo_list;
 extern char *exec_argv0;
 
@@ -190,8 +190,11 @@ exec_builtin (list)
 
   /* Decrement SHLVL by 1 so a new shell started here has the same value,
      preserving the appearance.  After we do that, we need to change the
-     exported environment to include the new value. */
-  if (cleanenv == 0)
+     exported environment to include the new value.  If we've already forked
+     and are in a subshell, we don't want to decrement the shell level,
+     since we are `increasing' the level */
+
+  if (cleanenv == 0 && (subshell_environment & SUBSHELL_PAREN) == 0)
     adjust_shell_level (-1);
 
   if (cleanenv)
@@ -219,6 +222,11 @@ exec_builtin (list)
     default_tty_job_signals ();                /* undo initialize_job_signals */
 #endif /* JOB_CONTROL */
 
+#if defined (BUFFERED_INPUT)
+  if (default_buffered_input >= 0)
+    sync_buffered_stream (default_buffered_input);
+#endif
+
   exit_value = shell_execve (command, args, env);
 
   /* We have to set this to NULL because shell_execve has called realloc()
index f28c2342c4b4a3a14e281bd3697769b40376c00a..5167b2e0cc07e5fa9cc8e56decf67079f1a59ae6 100644 (file)
@@ -41,17 +41,14 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../jobs.h"
+#include "../trap.h"
 
 #include "common.h"
 #include "builtext.h"  /* for jobs_builtin */
 
 extern int check_jobs_at_exit;
-extern int last_command_exit_value;
-extern int running_trap, trap_saved_exit_value;
-extern int subshell_environment;
-extern sh_builtin_func_t *this_shell_builtin;
-extern sh_builtin_func_t *last_shell_builtin;
 
 static int exit_or_logout __P((WORD_LIST *));
 static int sourced_logout;
index fe164710e65a293c089260b6b6c577e528c84132..62a28c4c5e136ed7886cc0bf4ecb96292116d4f2 100644 (file)
@@ -75,6 +75,7 @@ $END
 #include "../shell.h"
 #include "../builtins.h"
 #include "../flags.h"
+#include "../parser.h"
 #include "../bashhist.h"
 #include "maxpath.h"
 #include <readline/history.h>
@@ -85,11 +86,6 @@ $END
 extern int errno;
 #endif /* !errno */
 
-extern int current_command_line_count;
-extern int literal_history;
-extern int posixly_correct;
-extern int subshell_environment, interactive_shell;
-
 extern int unlink __P((const char *));
 
 extern FILE *sh_mktmpfp __P((char *, int, char **));
@@ -423,6 +419,7 @@ fc_builtin (list)
     {
       sh_wrerror ();
       fclose (stream);
+      FREE (fn);
       return (EXECUTION_FAILURE);
     }
   fclose (stream);
@@ -463,7 +460,7 @@ fc_builtin (list)
   /* Turn on the `v' flag while fc_execute_file runs so the commands
      will be echoed as they are read by the parser. */
   begin_unwind_frame ("fc builtin");
-  add_unwind_protect ((Function *)xfree, fn);
+  add_unwind_protect (xfree, fn);
   add_unwind_protect (unlink, fn);
   add_unwind_protect (set_verbose_flag, (char *)NULL);
   echo_input_at_read = 1;
index 1565e0a12224f7cb19263f6ce3f9f0054135ad00..6a68d6ab097039aeae6c8b93106f6ed4f768ed15 100644 (file)
@@ -46,13 +46,12 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../jobs.h"
 #include "common.h"
 #include "bashgetopt.h"
 
 #if defined (JOB_CONTROL)
-extern char *this_command_name;
-
 static int fg_bg __P((WORD_LIST *, int));
 
 /* How to bring a job into the foreground. */
index 590b110357732e427c8c1dda3d1cc29bc65f19fe..f473ef01dec1233049ff316afd5c6714afd09c40 100644 (file)
@@ -77,6 +77,7 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "common.h"
 #include "bashgetopt.h"
 #include "getopt.h"
@@ -85,8 +86,6 @@ $END
 #define G_INVALID_OPT  -2
 #define G_ARG_MISSING  -3
 
-extern char *this_command_name;
-
 static int getopts_unbind_variable __P((char *));
 static int getopts_bind_variable __P((char *, char *));
 static int dogetopts __P((int, char **));
index bec4b073b3310e114c50f24ad3fcd9396e77c0f6..b303930812ca628ea06fdb238710f80416c413be 100644 (file)
@@ -61,15 +61,14 @@ $END
 
 #include "../shell.h"
 #include "../builtins.h"
+#include "../execute_cmd.h"
 #include "../flags.h"
 #include "../findcmd.h"
 #include "../hashcmd.h"
 #include "common.h"
 #include "bashgetopt.h"
 
-extern int posixly_correct;
 extern int dot_found_in_search;
-extern char *this_command_name;
 
 static int add_hashed_command __P((char *, int));
 static int print_hash_info __P((BUCKET_CONTENTS *));
@@ -149,10 +148,23 @@ hash_builtin (list)
     return (list_hashed_filename_targets (list, list_portably));
       
 #if defined (RESTRICTED_SHELL)
-  if (restricted && pathname && strchr (pathname, '/'))
+  if (restricted && pathname)
     {
-      sh_restricted (pathname);
-      return (EXECUTION_FAILURE);
+      if (strchr (pathname, '/'))
+       {
+          sh_restricted (pathname);
+          return (EXECUTION_FAILURE);
+       }
+      /* If we are changing the hash table in a restricted shell, make sure the
+        target pathname can be found using a $PATH search. */
+      w = find_user_command (pathname);
+      if (w == 0 || *w == 0 || executable_file (w) == 0)
+       {
+         sh_notfound (pathname);
+         free (w);
+         return (EXECUTION_FAILURE);
+       }
+      free (w);
     }
 #endif
 
index 95a1a360b13f4b8028edf7c0d41107d37eff61e8..006c4b5d185a03dcca1fb4c51328efc3b858515a 100644 (file)
@@ -37,7 +37,7 @@ Options:
                PATTERN
 
 Arguments:
-  PATTERN      Pattern specifiying a help topic
+  PATTERN      Pattern specifying a help topic
 
 Exit Status:
 Returns success unless PATTERN is not found or an invalid option is given.
@@ -64,6 +64,7 @@ $END
 
 #include "../shell.h"
 #include "../builtins.h"
+#include "../execute_cmd.h"
 #include "../pathexp.h"
 #include "common.h"
 #include "bashgetopt.h"
@@ -78,9 +79,6 @@ extern int errno;
 extern const char * const bash_copyright;
 extern const char * const bash_license;
 
-extern char *this_command_name;
-extern struct builtin *current_builtin;
-
 static void show_builtin_command_help __P((void));
 static int open_helpfile __P((char *));
 static void show_desc __P((char *, int));
@@ -132,7 +130,7 @@ help_builtin (list)
 
   if (glob_pattern_p (list->word->word))
     {
-      printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
+      printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
       print_word_list (list, ", ");
       printf ("'\n\n");
     }
@@ -260,7 +258,7 @@ show_desc (name, i)
      char *name;
      int i;
 {
-  register int j;
+  register int j, r;
   char **doc, *line;
   int fd, usefile;
 
@@ -272,8 +270,9 @@ show_desc (name, i)
       fd = open_helpfile (doc[0]);
       if (fd < 0)
        return;
-      zmapfd (fd, &line, doc[0]);
+      r = zmapfd (fd, &line, doc[0]);
       close (fd);
+      /* XXX - handle errors if zmapfd returns < 0 */
     }
   else
     line = doc ? doc[0] : (char *)NULL;
@@ -421,7 +420,6 @@ wdispcolumn (i, buf, bufsize, width, height)
   char *helpdoc;
   wchar_t *wcstr;
   size_t slen, n;
-  int wclen;
 
   /* first column */
   helpdoc = _(shell_builtins[i].short_doc);
@@ -531,10 +529,7 @@ Use `man -k' or `info' to find out more about commands not in this list.\n\
 A star (*) next to a name means that the command is disabled.\n\
 \n"));
 
-  t = get_string_value ("COLUMNS");
-  width = (t && *t) ? atoi (t) : 80;
-  if (width <= 0)
-    width = 80;
+  width = default_columns ();
 
   width /= 2;
   if (width > sizeof (blurb))
index 48b59aeb5af63c7b0ae93646028a67968c3ebb2c..77093a45513f5cb13802414b0a26734fc859541c 100644 (file)
@@ -1,7 +1,7 @@
 This file is history.def, from which is created history.c.
 It implements the builtin "history" in Bash.
 
-Copyright (C) 1987-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -31,7 +31,8 @@ entry with a `*'.  An argument of N lists only the last N entries.
 
 Options:
   -c   clear the history list by deleting all of the entries
-  -d offset    delete the history entry at position OFFSET.
+  -d offset    delete the history entry at position OFFSET. Negative
+               offsets count back from the end of the history list
 
   -a   append history lines from this session to the history file
   -n   read all history lines not already read from the history file
@@ -74,6 +75,7 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../parser.h"
 #include "../bashhist.h"
 #include <readline/history.h>
 #include "bashgetopt.h"
@@ -83,9 +85,6 @@ $END
 extern int errno;
 #endif
 
-extern int current_command_line_count;
-extern int force_append_history;       /* shopt -s histappend */
-
 static char *histtime __P((HIST_ENTRY *, const char *));
 static int display_history __P((WORD_LIST *));
 static void push_history __P((WORD_LIST *));
@@ -104,8 +103,8 @@ int
 history_builtin (list)
      WORD_LIST *list;
 {
-  int flags, opt, result, old_history_lines, obase;
-  char *filename, *delete_arg;
+  int flags, opt, result, old_history_lines, obase, ind;
+  char *filename, *delete_arg, *range;
   intmax_t delete_offset;
 
   flags = 0;
@@ -178,16 +177,82 @@ history_builtin (list)
       return (sh_chkwrite (EXECUTION_SUCCESS));
     }
 #endif
+  else if ((flags & DFLAG) && (range = strchr ((delete_arg[0] == '-') ? delete_arg + 1 : delete_arg, '-')))
+    {
+      intmax_t delete_start, delete_end;
+      *range++ = '\0';
+      if (legal_number (delete_arg, &delete_start) == 0 || legal_number (range, &delete_end) == 0)
+       {
+         range[-1] = '-';
+         sh_erange (delete_arg, _("history position"));
+         return (EXECUTION_FAILURE);
+       }
+      if (delete_arg[0] == '-' && delete_start < 0)
+        {
+         /* the_history[history_length] == 0x0, so this is correct */
+          delete_start += history_length;
+         if (delete_start < history_base)
+           {
+start_error:
+             sh_erange (delete_arg, _("history position"));
+             return (EXECUTION_FAILURE);
+           }
+        }
+      /* numbers as displayed by display_history are offset by history_base */
+      else if (delete_start > 0)
+       delete_start -= history_base;
+      if (delete_start < 0 || delete_start >= history_length)
+       goto start_error;
+      if (range[0] == '-' && delete_end < 0)
+        {
+          delete_end += history_length;
+         if (delete_end < history_base)
+           {
+range_error:
+             sh_erange (range, _("history position"));
+             return (EXECUTION_FAILURE);
+           }
+        }
+      else if (delete_end > 0)
+       delete_end -= history_base;
+      if (delete_end < 0 || delete_end >= history_length)
+       goto range_error;
+      result = bash_delete_history_range (delete_start, delete_end);
+      if (where_history () > history_length)
+       history_set_pos (history_length);
+      return (result ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+    }
   else if (flags & DFLAG)
     {
-      if ((legal_number (delete_arg, &delete_offset) == 0)
-         || (delete_offset < history_base)
-         || (delete_offset > (history_base + history_length)))
+      if (legal_number (delete_arg, &delete_offset) == 0)
        {
          sh_erange (delete_arg, _("history position"));
          return (EXECUTION_FAILURE);
        }
-      opt = delete_offset;
+      /* check for negative offsets, count back from end of list */
+      if (delete_arg[0] == '-' && delete_offset < 0)
+       {
+         /* since the_history[history_length] == 0x0, this calculation means
+            that history -d -1 will delete the last history entry, which at
+            this point is the history -d -1 we just added. */
+         ind = history_length + delete_offset;
+         if (ind < history_base)
+           {
+             sh_erange (delete_arg, _("history position"));
+             return (EXECUTION_FAILURE);
+           }
+         opt = ind + history_base;     /* compensate for opt - history_base below */
+       }
+      else if ((delete_offset < history_base) || (delete_offset > (history_base + history_length)))
+       {
+         sh_erange (delete_arg, _("history position"));
+         return (EXECUTION_FAILURE);
+       }
+      else
+       opt = delete_offset;
+
+      /* Positive arguments from numbers as displayed by display_history need
+        to be offset by history_base */
       result = bash_delete_histent (opt - history_base);
       /* Since remove_history changes history_length, this can happen if
         we delete the last history entry. */
@@ -256,10 +321,12 @@ histtime (hlist, histtimefmt)
 {
   static char timestr[128];
   time_t t;
+  struct tm *tm;
 
   t = history_get_time (hlist);
-  if (t)
-    strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t));
+  tm = t ? localtime (&t) : 0;
+  if (t && tm)
+    strftime (timestr, sizeof (timestr), histtimefmt, tm);
   else if (hlist->timestamp && hlist->timestamp[0])
     snprintf (timestr, sizeof (timestr), _("%s: invalid timestamp"),
        (hlist->timestamp[0] == '#') ? hlist->timestamp + 1: hlist->timestamp);
index f05189dec8a23a82bf8f897fca3aa4becde9cac5..8d6e3ed12ccf90fe4f00b01b5fe5c31f00bbd134 100644 (file)
@@ -70,8 +70,6 @@ $END
 extern int errno;
 #endif /* !errno */
 
-extern int posixly_correct;
-
 static void kill_error __P((pid_t, int));
 
 #if !defined (CONTINUE_AFTER_KILL_ERROR)
@@ -120,6 +118,7 @@ kill_builtin (list)
          if (list)
            {
              sigspec = list->word->word;
+use_sigspec:
              if (sigspec[0] == '0' && sigspec[1] == '\0')
                sig = 0;
              else
@@ -133,6 +132,16 @@ kill_builtin (list)
              return (EXECUTION_FAILURE);
            }
        }
+      else if (word[0] == '-' && word[1] == 's' && ISALPHA (word[2]))
+       {
+         sigspec = word + 2;
+         goto use_sigspec;
+       }
+      else if (word[0] == '-' && word[1] == 'n' && ISDIGIT (word[2]))
+       {
+         sigspec = word + 2;
+         goto use_sigspec;
+       }
       else if (ISOPTION (word, '-'))
        {
          list = list->next;
index 23e684fdc934dd93ac896946dc8ed16d877a3aeb..d090a45bc51f2f1e032413a9e0a3a049407bb85d 100644 (file)
@@ -100,7 +100,7 @@ let_builtin (list)
 
   for (; list; list = list->next)
     {
-      ret = evalexp (list->word->word, &expok);
+      ret = evalexp (list->word->word, EXP_EXPANDED, &expok);
       if (expok == 0)
        return (EXECUTION_FAILURE);
     }
@@ -124,7 +124,7 @@ exp_builtin (list)
     }
 
   exp = string_list (list);
-  ret = evalexp (exp, &expok);
+  ret = evalexp (exp, EXP_EXPANDED, &expok);
   (void)free (exp);
   return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
 }
index 0d64f6189db35d612addc21713aafe581f144910..995d34acdb45abda428079b6812e423f78c2b8fc 100644 (file)
@@ -59,7 +59,7 @@ $END
 
 $BUILTIN readarray
 $FUNCTION mapfile_builtin
-$SHORT_DOC readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+$SHORT_DOC readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
 Read lines from a file into an array variable.
 
 A synonym for `mapfile'.
@@ -232,7 +232,7 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n
        break;
     }
 
-  xfree (line);
+  free (line);
 
   if (unbuffered_read == 0)
     zsyncfd (fd);
@@ -244,12 +244,11 @@ int
 mapfile_builtin (list)
      WORD_LIST *list;
 {
-  int opt, code, fd, clear_array, flags;
+  int opt, code, fd, flags;
   intmax_t intval;
   long lines, origin, nskip, callback_quantum;
   char *array_name, *callback;
 
-  clear_array = 1;
   fd = 0;
   lines = origin = nskip = 0;
   flags = MAPF_CLEARARRAY;
index d39a6d3f263ef951e7c09c7e4a0634def66a8d0e..bc6ef57deca1a495485242d71bdc83d3d3b5efe0 100644 (file)
@@ -1,7 +1,7 @@
 This file is printf.def, from which is created printf.c.
 It implements the builtin "printf" in Bash.
 
-Copyright (C) 1997-2016 Free Software Foundation, Inc.
+Copyright (C) 1997-2017 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -148,8 +148,11 @@ extern int errno;
       QUIT; \
       if (vflag) \
        { \
-         bind_printf_variable  (vname, vbuf, 0); \
+         SHELL_VAR *v; \
+         v = bind_printf_variable  (vname, vbuf, 0); \
          stupidly_hack_special_variables (vname); \
+         if (v == 0 || readonly_p (v) || noassign_p (v)) \
+           return (EXECUTION_FAILURE); \
        } \
       if (conv_bufsize > 4096 ) \
        { \
@@ -244,6 +247,9 @@ printf_builtin (list)
   char mbch[25];               /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/
   int mbind, mblen;
 #endif
+#if defined (ARRAY_VARS)
+  int arrayflags;
+#endif
 
   conversion_error = 0;
   retval = EXECUTION_SUCCESS;
@@ -258,7 +264,8 @@ printf_builtin (list)
        case 'v':
          vname = list_optarg;
 #if defined (ARRAY_VARS)
-         if (legal_identifier (vname) || valid_array_reference (vname, 0))
+         arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+         if (legal_identifier (vname) || valid_array_reference (vname, arrayflags))
 #else
          if (legal_identifier (vname))
 #endif
@@ -293,9 +300,10 @@ printf_builtin (list)
   /* Allow printf -v var "" to act like var="" */
   if (vflag && list->word->word && list->word->word[0] == '\0')
     {
-      bind_printf_variable (vname, "", 0);
+      SHELL_VAR *v;
+      v = bind_printf_variable (vname, "", 0);
       stupidly_hack_special_variables (vname);
-      return (EXECUTION_SUCCESS);
+      return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
     }
 
   if (list->word->word == 0 || list->word->word[0] == '\0')
@@ -577,7 +585,7 @@ printf_builtin (list)
                else if (ansic_shouldquote (p))
                  xp = ansic_quote (p, 0, (int *)0);
                else
-                 xp = sh_backslash_quote (p, 0, 1);
+                 xp = sh_backslash_quote (p, 0, 3);
                if (xp)
                  {
                    /* Use printstr to get fieldwidth and precision right. */
@@ -711,8 +719,8 @@ printstr (fmt, string, len, fieldwidth, precision)
   int fw, pr;                  /* fieldwidth and precision */
   intmax_t mfw, mpr;
 
-  if (string == 0 || len == 0)
-    return 0;
+  if (string == 0)
+    string = "";
 
 #if 0
   s = fmt;
@@ -955,7 +963,9 @@ bexpand (string, len, sawc, lenp)
        *sawc = 0;
       if (lenp)
        *lenp = 0;
-      return ((char *)NULL);
+      ret = (char *)xmalloc (1);
+      ret[0] = '\0';
+      return (ret);
     }
 
   ret = (char *)xmalloc (len + 1);
@@ -1192,8 +1202,10 @@ getuintmax ()
   if (*ep)
     {
       sh_invalidnum (garglist->word->word);
+#if 0
       /* Same POSIX.2 conversion error requirements as getintmax(). */
       ret = 0;
+#endif
       conversion_error = 1;
     }
   else if (errno == ERANGE)
@@ -1221,8 +1233,10 @@ getfloatmax ()
   if (*ep)
     {
       sh_invalidnum (garglist->word->word);
+#if 0
       /* Same thing about POSIX.2 conversion error requirements. */
       ret = 0;
+#endif
       conversion_error = 1;
     }
   else if (errno == ERANGE)
@@ -1239,18 +1253,17 @@ asciicode ()
   register intmax_t ch;
 #if defined (HANDLE_MULTIBYTE)
   wchar_t wc;
-  size_t mblength, slen;
+  size_t slen;
+  int mblength;
 #endif
   DECLARE_MBSTATE;
 
 #if defined (HANDLE_MULTIBYTE)
   slen = strlen (garglist->word->word+1);
-  mblength = MBLEN (garglist->word->word+1, slen);
-  if (mblength > 1)
-    {
-      mblength = mbtowc (&wc, garglist->word->word+1, slen);
-      ch = wc;         /* XXX */
-    }
+  wc = 0;
+  mblength = mbtowc (&wc, garglist->word->word+1, slen);
+  if (mblength > 0)
+    ch = wc;           /* XXX */
   else
 #endif
     ch = (unsigned char)garglist->word->word[1];
@@ -1268,10 +1281,10 @@ bind_printf_variable (name, value, flags)
   SHELL_VAR *v;
 
 #if defined (ARRAY_VARS)
-  if (valid_array_reference (name, 0) == 0)
+  if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
     v = bind_variable (name, value, flags);
   else
-    v = assign_array_element (name, value, flags);
+    v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0));
 #else /* !ARRAY_VARS */
   v = bind_variable (name, value, flags);
 #endif /* !ARRAY_VARS */
index 6579e4c8a2049641560edc1f277005b09c196c29..71e0409790c5e9089c540fb1b1081991cf1e520e 100644 (file)
@@ -678,7 +678,7 @@ get_directory_stack (flags)
     d = ".";
   else
     {
-      t = polite_directory_format (d);
+      t = (flags&1) ? polite_directory_format (d) : d;
       /* polite_directory_format sometimes returns its argument unchanged.
         If it does not, we can free d right away.  If it does, we need to
         mark d to be deleted later. */
index b54b3af6ce19dba6a5490b19da2c9261a20bef24..b57c8c398e18f4ffd1de627274cc24e80c834b9d 100644 (file)
@@ -1,7 +1,7 @@
 This file is read.def, from which is created read.c.
 It implements the builtin "read" in Bash.
 
-Copyright (C) 1987-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -39,7 +39,7 @@ Options:
                variable ARRAY, starting at zero
   -d delim     continue until the first character of DELIM is read, rather
                than newline
-  -e   use Readline to obtain the line in an interactive shell
+  -e   use Readline to obtain the line
   -i text      use TEXT as the initial text for Readline
   -n nchars    return after reading NCHARS characters rather than waiting
                for a newline, but honor a delimiter if fewer than
@@ -93,6 +93,7 @@ $END
 #include "../shell.h"
 #include "common.h"
 #include "bashgetopt.h"
+#include "trap.h"
 
 #include <shtty.h>
 
@@ -111,15 +112,10 @@ $END
 extern int errno;
 #endif
 
-extern void run_pending_traps __P((void));
-
-extern int posixly_correct;
-extern int trapped_signal_received;
-
 struct ttsave
 {
   int fd;
-  TTYSTRUCT *attrs;
+  TTYSTRUCT attrs;
 };
 
 #if defined (READLINE)
@@ -152,9 +148,8 @@ static struct ttsave termsave;
    avoids problems with the semi-tricky stuff we do with the xfree of
    input_string at the top of the unwind-protect list (see below). */
 
-/* Set a flag that CHECK_ALRM can check.  This relies on zread calling
-   trap.c:check_signals_and_traps(), which knows about sigalrm_seen and
-   alrmbuf. */
+/* Set a flag that CHECK_ALRM can check.  This relies on zread or read_builtin
+   calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */
 static sighandler
 sigalrm (s)
      int s;
@@ -181,10 +176,12 @@ read_builtin (list)
      WORD_LIST *list;
 {
   register char *varname;
-  int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
+  int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2, nflag;
   volatile int i;
   int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
-  int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
+  int raw, edit, nchars, silent, have_timeout, ignore_delim, fd;
+  int lastsig, t_errno;
+  int mb_cur_max;
   unsigned int tmsec, tmusec;
   long ival, uval;
   intmax_t intval;
@@ -196,6 +193,7 @@ read_builtin (list)
   TTYSTRUCT ttattrs, ttset;
 #if defined (ARRAY_VARS)
   WORD_LIST *alist;
+  int vflags;
 #endif
 #if defined (READLINE)
   char *rlbuf, *itext;
@@ -239,10 +237,11 @@ read_builtin (list)
   rlind = 0;
 #endif
 
+  mb_cur_max = MB_CUR_MAX;
   tmsec = tmusec = 0;          /* no timeout */
   nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0;
   delim = '\n';                /* read until newline */
-  ignore_delim = 0;
+  ignore_delim = nflag = 0;
 
   reset_internal_getopt ();
   while ((opt = internal_getopt (list, "ersa:d:i:n:p:t:u:N:")) != -1)
@@ -291,6 +290,7 @@ read_builtin (list)
          ignore_delim = 1;
          delim = -1;
        case 'n':
+         nflag = 1;
          code = legal_number (list_optarg, &intval);
          if (code == 0 || intval < 0 || intval != (int)intval)
            {
@@ -338,7 +338,8 @@ read_builtin (list)
   /* Convenience: check early whether or not the first of possibly several
      variable names is a valid identifier, and bail early if so. */
 #if defined (ARRAY_VARS)
-  if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0)
+  vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+  if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
 #else
   if (list && legal_identifier (list->word->word) == 0)
 #endif
@@ -364,6 +365,14 @@ read_builtin (list)
   input_string = (char *)xmalloc (size = 112); /* XXX was 128 */
   input_string[0] = '\0';
 
+  /* More input and options validation */
+  if (nflag == 1 && nchars == 0)
+    {
+      retval = read (fd, &c, 0);
+      retval = (retval >= 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE;
+      goto assign_vars;                /* bail early if asked to read 0 chars */
+    }
+
   /* $TMOUT, if set, is the default timeout for read. */
   if (have_timeout == 0 && (e = get_string_value ("TMOUT")))
     {
@@ -384,7 +393,11 @@ read_builtin (list)
     sync_buffered_stream (default_buffered_input);
 #endif
 
+#if 1
   input_is_tty = isatty (fd);
+#else
+  input_is_tty = 1;
+#endif
   if (input_is_tty == 0)
 #ifndef __CYGWIN__
     input_is_pipe = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE);
@@ -484,7 +497,7 @@ read_builtin (list)
          /* ttsave() */
          termsave.fd = fd;
          ttgetattr (fd, &ttattrs);
-         termsave.attrs = &ttattrs;
+         termsave.attrs = ttattrs;
 
          ttset = ttattrs;        
          i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset);
@@ -501,7 +514,7 @@ read_builtin (list)
       /* ttsave (); */
       termsave.fd = fd;
       ttgetattr (fd, &ttattrs);
-      termsave.attrs = &ttattrs;
+      termsave.attrs = ttattrs;
 
       ttset = ttattrs;
       i = ttfd_noecho (fd, &ttset);                    /* ttnoecho (); */
@@ -544,7 +557,7 @@ read_builtin (list)
        {
          if (rlbuf && rlbuf[rlind] == '\0')
            {
-             xfree (rlbuf);
+             free (rlbuf);
              rlbuf = (char *)0;
            }
          if (rlbuf == 0)
@@ -574,11 +587,8 @@ read_builtin (list)
          print_ps2 = 0;
        }
 
-#if 0
-      if (posixly_correct == 0)
-       interrupt_immediately++;
-#endif
       reading = 1;
+      CHECK_ALRM;
       if (unbuffered_read == 2)
        retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr);
       else if (unbuffered_read)
@@ -586,15 +596,12 @@ read_builtin (list)
       else
        retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c);
       reading = 0;
-#if 0
-      if (posixly_correct == 0)
-       interrupt_immediately--;
-#endif
 
       if (retval <= 0)
        {
          if (retval < 0 && errno == EINTR)
            {
+             check_signals ();         /* in case we didn't call zread via zreadc */
              lastsig = LASTSIG();
              if (lastsig == 0)
                lastsig = trapped_signal_received;
@@ -609,14 +616,16 @@ read_builtin (list)
          break;
        }
 
-      CHECK_ALRM;
       QUIT;            /* in case we didn't call check_signals() */
 #if defined (READLINE)
        }
 #endif
 
-      CHECK_ALRM;
-      if (i + 4 >= size)       /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */
+      if (retval <= 0)                 /* XXX shouldn't happen */
+       CHECK_ALRM;
+
+      /* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */
+      if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size)
        {
          char *t;
          t = (char *)xrealloc (input_string, size += 128);
@@ -637,7 +646,8 @@ read_builtin (list)
          pass_next = 0;
          if (c == '\n')
            {
-             i--;              /* back up over the CTLESC */
+             if (skip_ctlesc == 0 && i > 0)
+               i--;            /* back up over the CTLESC */
              if (interactive && input_is_tty && raw == 0)
                print_ps2 = 1;
            }
@@ -675,10 +685,31 @@ add_char:
       CHECK_ALRM;
 
 #if defined (HANDLE_MULTIBYTE)
-      if (nchars > 0 && MB_CUR_MAX > 1 && is_basic (c) == 0)
+      /* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */
+      if (mb_cur_max > 1 && is_basic (c) == 0)
        {
          input_string[i] = '\0';       /* for simplicity and debugging */
-         i += read_mbchar (fd, input_string, i, c, unbuffered_read);
+         /* If we got input from readline, grab the next multibyte char from
+            rlbuf. */
+#  if defined (READLINE)
+         if (edit)
+           {
+             size_t clen;
+             clen = mbrlen (rlbuf + rlind - 1, mb_cur_max, (mbstate_t *)NULL);
+             /* We only deal with valid multibyte sequences longer than one
+                byte. If we get anything else, we leave the one character
+                copied and move on to the next. */
+             if ((int)clen > 1)
+               {
+                 memcpy (input_string+i, rlbuf+rlind, clen-1);
+                 i += clen - 1;
+                 rlind += clen - 1;
+               }
+           }
+         else
+#  endif
+         if (locale_utf8locale == 0 || ((c & 0x80) != 0))
+           i += read_mbchar (fd, input_string, i, c, unbuffered_read);
        }
 #endif
 
@@ -742,20 +773,20 @@ assign_vars:
       if (legal_identifier (arrayname) == 0)
        {
          sh_invalidid (arrayname);
-         xfree (input_string);
+         free (input_string);
          return (EXECUTION_FAILURE);
        }
 
       var = find_or_make_array_variable (arrayname, 1);
       if (var == 0)
        {
-         xfree (input_string);
+         free (input_string);
          return EXECUTION_FAILURE;     /* readonly or noassign */
        }
       if (assoc_p (var))
        {
           builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
-         xfree (input_string);
+         free (input_string);
          return EXECUTION_FAILURE;     /* existing associative array */
        }
       else if (invisible_p (var))
@@ -772,7 +803,7 @@ assign_vars:
          assign_array_var_from_word_list (var, alist, 0);
          dispose_words (alist);
        }
-      xfree (input_string);
+      free (input_string);
       return (retval);
     }
 #endif /* ARRAY_VARS */ 
@@ -808,7 +839,7 @@ assign_vars:
       else
        VUNSETATTR (var, att_invisible);
 
-      xfree (input_string);
+      free (input_string);
       return (retval);
     }
 
@@ -825,13 +856,13 @@ assign_vars:
     {
       varname = list->word->word;
 #if defined (ARRAY_VARS)
-      if (legal_identifier (varname) == 0 && valid_array_reference (varname, 0) == 0)
+      if (legal_identifier (varname) == 0 && valid_array_reference (varname, vflags) == 0)
 #else
       if (legal_identifier (varname) == 0)
 #endif
        {
          sh_invalidid (varname);
-         xfree (orig_input_string);
+         free (orig_input_string);
          return (EXECUTION_FAILURE);
        }
 
@@ -849,7 +880,7 @@ assign_vars:
            {
              t1 = dequote_string (t);
              var = bind_read_variable (varname, t1);
-             xfree (t1);
+             free (t1);
            }
          else
            var = bind_read_variable (varname, t ? t : "");
@@ -863,7 +894,7 @@ assign_vars:
       FREE (t);
       if (var == 0)
        {
-         xfree (orig_input_string);
+         free (orig_input_string);
          return (EXECUTION_FAILURE);
        }
 
@@ -873,13 +904,13 @@ assign_vars:
 
   /* Now assign the rest of the line to the last variable argument. */
 #if defined (ARRAY_VARS)
-  if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0)
+  if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
 #else
   if (legal_identifier (list->word->word) == 0)
 #endif
     {
       sh_invalidid (list->word->word);
-      xfree (orig_input_string);
+      free (orig_input_string);
       return (EXECUTION_FAILURE);
     }
 
@@ -910,7 +941,7 @@ assign_vars:
     {
       t = dequote_string (input_string);
       var = bind_read_variable (list->word->word, t);
-      xfree (t);
+      free (t);
     }
   else
     var = bind_read_variable (list->word->word, input_string ? input_string : "");
@@ -924,7 +955,7 @@ assign_vars:
     retval = EXECUTION_FAILURE;
 
   FREE (tofree);
-  xfree (orig_input_string);
+  free (orig_input_string);
 
   return (retval);
 }
@@ -936,10 +967,10 @@ bind_read_variable (name, value)
   SHELL_VAR *v;
 
 #if defined (ARRAY_VARS)
-  if (valid_array_reference (name, 0) == 0)
+  if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
     v = bind_variable (name, value, 0);
   else
-    v = assign_array_element (name, value, 0);
+    v = assign_array_element (name, value, assoc_expand_once ? ASS_NOEXPAND : 0);
 #else /* !ARRAY_VARS */
   v = bind_variable (name, value, 0);
 #endif /* !ARRAY_VARS */
@@ -973,12 +1004,15 @@ read_mbchar (fd, string, ind, ch, unbuffered)
       if (ret == (size_t)-2)
        {
          ps = ps_back;
+
          /* We don't want to be interrupted during a multibyte char read */
-         if (unbuffered)
+         if (unbuffered == 2)
+           r = zreadn (fd, &c, 1);
+         else if (unbuffered)
            r = zread (fd, &c, 1);
          else
            r = zreadc (fd, &c);
-         if (r < 0)
+         if (r <= 0)
            goto mbchar_return;
          mbchar[i++] = c;      
          continue;
@@ -1001,7 +1035,7 @@ static void
 ttyrestore (ttp)
      struct ttsave *ttp;
 {
-  ttsetattr (ttp->fd, ttp->attrs);
+  ttsetattr (ttp->fd, &(ttp->attrs));
   tty_modified = 0;
 }
 
index 4d9fef1d29942d6b2912768cf8ac2d006db69945..77e8d7c78ce5c2b214cabb6e9f1bb3b172d98385 100644 (file)
@@ -46,13 +46,10 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "common.h"
 #include "bashgetopt.h"
 
-extern int last_command_exit_value;
-extern int subshell_environment;
-extern int return_catch_flag, return_catch_value;
-
 /* If we are executing a user-defined function then exit with the value
    specified as an argument.  if no argument is given, then the last
    exit status is used. */
index 8122361e38996387b127f3efd542f4398f885c65..d2bba434dd4ea03a6c733f216a6c6e3e3d6803cd 100644 (file)
@@ -1,7 +1,7 @@
 This file is set.def, from which is created set.c.
 It implements the "set" and "unset" builtins in Bash.
 
-Copyright (C) 1987-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -35,6 +35,7 @@ $PRODUCES set.c
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../parser.h"
 #include "../flags.h"
 #include "common.h"
 #include "bashgetopt.h"
@@ -49,14 +50,6 @@ $PRODUCES set.c
 #  include "../bashhist.h"
 #endif
 
-extern int posixly_correct, ignoreeof, eof_encountered_limit;
-#if defined (HISTORY)
-extern int dont_save_function_defs;
-#endif
-#if defined (READLINE)
-extern int no_line_editing;
-#endif /* READLINE */
-
 $BUILTIN set
 $FUNCTION set_builtin
 $SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
@@ -161,6 +154,8 @@ $END
 typedef int setopt_set_func_t __P((int, char *));
 typedef int setopt_get_func_t __P((char *));
 
+static int find_minus_o_option __P((char *));
+
 static void print_minus_o_option __P((char *, int, int));
 static void print_all_shell_variables __P((void));
 
@@ -249,6 +244,18 @@ const struct {
   ((o_options[i].set_func) ? (*o_options[i].set_func) (onoff, name) \
                           : (*o_options[i].variable = (onoff == FLAG_ON)))
 
+static int
+find_minus_o_option (name)
+     char *name;
+{
+  register int i;
+
+  for (i = 0; o_options[i].name; i++)
+    if (STREQ (name, o_options[i].name))
+      return i;
+  return -1;
+}
+
 int
 minus_o_option_value (name)
      char *name;
@@ -256,21 +263,17 @@ minus_o_option_value (name)
   register int i;
   int *on_or_off;
 
-  for (i = 0; o_options[i].name; i++)
+  i = find_minus_o_option (name);
+  if (i < 0)
+    return (-1);
+
+  if (o_options[i].letter)
     {
-      if (STREQ (name, o_options[i].name))
-       {
-         if (o_options[i].letter)
-           {
-             on_or_off = find_flag (o_options[i].letter);
-             return ((on_or_off == FLAG_UNKNOWN) ? -1 : *on_or_off);
-           }
-         else
-           return (GET_BINARY_O_OPTION_VALUE (i, name));
-       }
+      on_or_off = find_flag (o_options[i].letter);
+      return ((on_or_off == FLAG_UNKNOWN) ? -1 : *on_or_off);
     }
-
-  return (-1);
+  else
+    return (GET_BINARY_O_OPTION_VALUE (i, name));
 }
 
 #define MINUS_O_FORMAT "%-15s\t%s\n"
@@ -330,9 +333,12 @@ char *
 get_current_options ()
 {
   char *temp;
-  int i;
+  int i, posixopts;
 
-  temp = (char *)xmalloc (1 + N_O_OPTIONS);
+  posixopts = num_posix_options ();    /* shopts modified by posix mode */
+  /* Make the buffer big enough to hold the set -o options and the shopt
+     options modified by posix mode. */
+  temp = (char *)xmalloc (1 + N_O_OPTIONS + posixopts);
   for (i = 0; o_options[i].name; i++)
     {
       if (o_options[i].letter)
@@ -340,7 +346,11 @@ get_current_options ()
       else
        temp[i] = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name);
     }
-  temp[i] = '\0';
+
+  /* Add the shell options that are modified by posix mode to the end of the
+     bitmap. They will be handled in set_current_options() */
+  get_posix_options (temp+i);
+  temp[i+posixopts] = '\0';
   return (temp);
 }
 
@@ -352,6 +362,7 @@ set_current_options (bitmap)
 
   if (bitmap == 0)
     return;
+
   for (i = 0; o_options[i].name; i++)
     {
       if (o_options[i].letter)
@@ -359,6 +370,9 @@ set_current_options (bitmap)
       else
        SET_BINARY_O_OPTION_VALUE (i, bitmap[i] ? FLAG_ON : FLAG_OFF, o_options[i].name);
     }
+
+  /* Now reset the variables changed by posix mode */
+  set_posix_options (bitmap+i);
 }
 
 static int
@@ -458,32 +472,29 @@ set_minus_o_option (on_or_off, option_name)
 {
   register int i;
 
-  for (i = 0; o_options[i].name; i++)
+  i = find_minus_o_option (option_name);
+  if (i < 0)
     {
-      if (STREQ (option_name, o_options[i].name))
-       {
-         if (o_options[i].letter == 0)
-           {
-             previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name);
-             SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name);
-             return (EXECUTION_SUCCESS);
-           }
-         else
-           {
-             if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR)
-               {
-                 sh_invalidoptname (option_name);
-                 return (EXECUTION_FAILURE);
-               }
-             else
-               return (EXECUTION_SUCCESS);
-           }
+      sh_invalidoptname (option_name);
+      return (EX_USAGE);
+    }
 
+  if (o_options[i].letter == 0)
+    {
+      previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name);
+      SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name);
+      return (EXECUTION_SUCCESS);
+    }
+  else
+    {
+      if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR)
+       {
+         sh_invalidoptname (option_name);
+         return (EXECUTION_FAILURE);
        }
+      else
+       return (EXECUTION_SUCCESS);
     }
-
-  sh_invalidoptname (option_name);
-  return (EX_USAGE);
 }
 
 static void
@@ -807,7 +818,7 @@ unset_builtin (list)
   WORD_LIST *list;
 {
   int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
-  int global_unset_func, global_unset_var;
+  int global_unset_func, global_unset_var, vflags;
   char *name, *tname;
 
   unset_function = unset_variable = unset_array = nameref = any_failed = 0;
@@ -844,6 +855,10 @@ unset_builtin (list)
   else if (unset_function && nameref)
     nameref = 0;
 
+#if defined (ARRAY_VARS)
+  vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+#endif
+
   while (list)
     {
       SHELL_VAR *var;
@@ -859,7 +874,8 @@ unset_builtin (list)
 
 #if defined (ARRAY_VARS)
       unset_array = 0;
-      if (!unset_function && nameref == 0 && valid_array_reference (name, 0))
+      /* XXX valid array reference second arg was 0 */
+      if (!unset_function && nameref == 0 && valid_array_reference (name, vflags))
        {
          t = strchr (name, '[');
          *t++ = '\0';
@@ -916,7 +932,7 @@ unset_builtin (list)
       if (var && unset_array)
        {
          /* Let unbind_array_element decide what to do with non-array vars */
-         tem = unbind_array_element (var, t);
+         tem = unbind_array_element (var, t, vflags);  /* XXX new third arg */
          if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0)
            {
              builtin_error (_("%s: not an array variable"), var->name);
@@ -938,8 +954,8 @@ unset_builtin (list)
              if (valid_array_reference (nameref_cell (var), 0))
                {
                  tname = savestring (nameref_cell (var));
-                 if (var = array_variable_part (tname, &t, 0))
-                   tem = unbind_array_element (var, t);
+                 if (var = array_variable_part (tname, 0, &t, (int *)0))
+                   tem = unbind_array_element (var, t, vflags);        /* XXX new third arg */
                  free (tname);
                }
              else
index 8f29e11e8aaecbc04572249914360c4bd0423ae8..251bcacbcc32bd4ba1ee9d7a0db1cd8c899ea048 100644 (file)
@@ -34,13 +34,11 @@ $PRODUCES setattr.c
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../flags.h"
 #include "common.h"
 #include "bashgetopt.h"
 
-extern int posixly_correct;
-extern int array_needs_making;
-extern char *this_command_name;
 extern sh_builtin_func_t *this_shell_builtin;
 
 #ifdef ARRAY_VARS
@@ -279,6 +277,12 @@ set_or_show_attributes (list, attribute, nodefs)
            }
 
          set_var_attribute (name, attribute, undo);
+         if (assign)           /* restore word */
+           {
+             name[assign] = '=';
+             if (aflags & ASS_APPEND)
+               name[assign-1] = '+';
+           }
          list = list->next;
        }
     }
@@ -506,7 +510,7 @@ show_name_attributes (name, nodefs)
   var = find_variable_noref (name);
 #endif
 
-  if (var /* && invisible_p (var) == 0 */)     /* XXX bash-4.4/bash-5.0 */
+  if (var /* && invisible_p (var) == 0 */)
     {
       show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
       return (0);
@@ -539,7 +543,7 @@ set_var_attribute (name, attribute, undo)
      int attribute, undo;
 {
   SHELL_VAR *var, *tv, *v, *refvar;
-  char *tvalue, *refname;
+  char *tvalue;
 
   if (undo)
     var = find_variable (name);
@@ -562,18 +566,23 @@ set_var_attribute (name, attribute, undo)
          var->attributes |= tv->attributes & ~att_tempvar;
          /* This avoids an error message when propagating a read-only var
             later on. */
-         if (var->context == 0 && (attribute & att_readonly))
+         if (posixly_correct || shell_compatibility_level <= 44)
            {
-             /* Don't bother to set the `propagate to the global variables
-                table' flag if we've just bound the variable in that table */
-             v = find_global_variable (tv->name);
-             if (v != var)
+             if (var->context == 0 && (attribute & att_readonly))
+               {
+                 /* Don't bother to set the `propagate to the global variables
+                    table' flag if we've just bound the variable in that
+                    table */
+                 v = find_global_variable (tv->name);
+                 if (v != var)
+                   VSETATTR (tv, att_propagate);
+               }
+             else
                VSETATTR (tv, att_propagate);
+             if (var->context != 0)
+               VSETATTR (var, att_propagate);
            }
-         else
-           VSETATTR (tv, att_propagate);
-         if (var->context != 0)
-           VSETATTR (var, att_propagate);
+
          SETVARATTR (tv, attribute, undo);     /* XXX */
 
          stupidly_hack_special_variables (tv->name);
index 2febb7eeb6b506336456b92b916bd29e56520e1c..f6dc6f97cf3c2c4921b8a837076bcdc0b63a210b 100644 (file)
@@ -1,7 +1,7 @@
 This file is shopt.def, from which is created shopt.c.
 It implements the Bash `shopt' builtin.
 
-Copyright (C) 1994-2016 Free Software Foundation, Inc.
+Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -26,8 +26,8 @@ $SHORT_DOC shopt [-pqsu] [-o] [optname ...]
 Set and unset shell options.
 
 Change the setting of each shell option OPTNAME.  Without any option
-arguments, list all shell options with an indication of whether or not each
-is set. 
+arguments, list each supplied OPTNAME, or all shell options if no
+OPTNAMEs are given, with an indication of whether or not each is set.
 
 Options:
   -o   restrict OPTNAMEs to those defined for use with `set -o'
@@ -91,6 +91,8 @@ extern int glob_star;
 extern int glob_asciirange;
 extern int lastpipe_opt;
 extern int inherit_errexit;
+extern int localvar_inherit;
+extern int localvar_unset;
 
 #if defined (EXTENDED_GLOB)
 extern int extended_glob;
@@ -108,20 +110,25 @@ extern int enable_hostname_completion __P((int));
 
 #if defined (PROGRAMMABLE_COMPLETION)
 extern int prog_completion_enabled;
-#endif
-
-#if defined (RESTRICTED_SHELL)
-extern char *shell_name;
+extern int progcomp_alias;
 #endif
 
 #if defined (DEBUGGER)
 extern int debugging_mode;
 #endif
 
+#if defined (ARRAY_VARS)
+extern int assoc_expand_once;
+extern int array_expand_once;
+#endif
+
+#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT)
+extern int syslog_history;
+#endif
+
 static void shopt_error __P((char *));
 
 static int set_shellopts_after_change __P((char *, int));
-static int shopt_enable_hostname_completion __P((char *, int));
 static int set_compatibility_level __P((char *, int));
 
 #if defined (RESTRICTED_SHELL)
@@ -129,6 +136,7 @@ static int set_restricted_shell __P((char *, int));
 #endif
 
 #if defined (READLINE)
+static int shopt_enable_hostname_completion __P((char *, int));
 static int shopt_set_complete_direxpand __P((char *, int));
 #endif
 
@@ -141,6 +149,7 @@ static int shopt_compat40;
 static int shopt_compat41;
 static int shopt_compat42;
 static int shopt_compat43;
+static int shopt_compat44;
 
 typedef int shopt_set_func_t __P((char *, int));
 
@@ -153,6 +162,9 @@ static struct {
   shopt_set_func_t *set_func;
 } shopt_vars[] = {
   { "autocd", &autocd, (shopt_set_func_t *)NULL },
+#if defined (ARRAY_VARS)
+  { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL },
+#endif
   { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL },
   { "cdspell", &cdspelling, (shopt_set_func_t *)NULL },
   { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL },
@@ -169,6 +181,7 @@ static struct {
   { "compat41", &shopt_compat41, set_compatibility_level },
   { "compat42", &shopt_compat42, set_compatibility_level },
   { "compat43", &shopt_compat43, set_compatibility_level },
+  { "compat44", &shopt_compat44, set_compatibility_level },
 #if defined (READLINE)
   { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
   { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand },
@@ -206,6 +219,8 @@ static struct {
 #if defined (HISTORY)
   { "lithist", &literal_history, (shopt_set_func_t *)NULL },
 #endif
+  { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL },
+  { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL },
   { "login_shell", &shopt_login_shell, set_login_shell },
   { "mailwarn", &mail_warning, (shopt_set_func_t *)NULL },
 #if defined (READLINE)
@@ -216,6 +231,9 @@ static struct {
   { "nullglob",        &allow_null_glob_expansion, (shopt_set_func_t *)NULL },
 #if defined (PROGRAMMABLE_COMPLETION)
   { "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL },
+#  if defined (ALIAS)
+  { "progcomp_alias", &progcomp_alias, (shopt_set_func_t *)NULL },
+#  endif
 #endif
   { "promptvars", &promptvars, (shopt_set_func_t *)NULL },
 #if defined (RESTRICTED_SHELL)
@@ -223,6 +241,9 @@ static struct {
 #endif
   { "shift_verbose", &print_shift_error, (shopt_set_func_t *)NULL },
   { "sourcepath", &source_uses_path, (shopt_set_func_t *)NULL },
+#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT)
+  { "syslog_history", &syslog_history, (shopt_set_func_t *)NULL },
+#endif
   { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL },
   { (char *)0, (int *)0, (shopt_set_func_t *)NULL }
 };
@@ -345,6 +366,14 @@ reset_shopt_options ()
   command_oriented_history = 1;
 #endif
 
+#if defined (SYSLOG_HISTORY)
+#  if defined (SYSLOG_SHOPT)
+  syslog_history = SYSLOG_SHOPT;
+#  else
+  syslog_history = 1;
+#  endif /* SYSLOG_SHOPT */
+#endif
+
 #if defined (READLINE)
   complete_fullquote = 1;
   force_fignore = 1;
@@ -572,10 +601,13 @@ shopt_set_debug_mode (option_name, mode)
 #if defined (DEBUGGER)
   error_trace_mode = function_trace_mode = debugging_mode;
   set_shellopts ();
+  if (debugging_mode)
+    init_bash_argv ();
 #endif
   return (0);
 }
 
+#if defined (READLINE)
 static int
 shopt_enable_hostname_completion (option_name, mode)
      char *option_name;
@@ -583,6 +615,7 @@ shopt_enable_hostname_completion (option_name, mode)
 {
   return (enable_hostname_completion (mode));
 }
+#endif
 
 static int
 set_compatibility_level (option_name, mode)
@@ -590,6 +623,7 @@ set_compatibility_level (option_name, mode)
      int mode;
 {
   int ind;
+  char *rhs;
 
   /* If we're setting something, redo some of the work we did above in
      toggle_shopt().  Unset everything and reset the appropriate option
@@ -598,6 +632,7 @@ set_compatibility_level (option_name, mode)
     {
       shopt_compat31 = shopt_compat32 = 0;
       shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0;
+      shopt_compat44 = 0;
       ind = find_shopt (option_name);
       *shopt_vars[ind].value = mode;
     }
@@ -615,9 +650,16 @@ set_compatibility_level (option_name, mode)
     shell_compatibility_level = 42;
   else if (shopt_compat43)
     shell_compatibility_level = 43;
+  else if (shopt_compat44)
+    shell_compatibility_level = 44;
   else
     shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
 
+  /* Make sure the current compatibility level is reflected in BASH_COMPAT */
+  rhs = itos (shell_compatibility_level);
+  bind_variable ("BASH_COMPAT", rhs, 0);
+  free (rhs);
+
   return 0;
 }
 
@@ -628,10 +670,13 @@ set_compatibility_opts ()
 {
   shopt_compat31 = shopt_compat32 = 0;
   shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0;
+  shopt_compat44 = 0;
   switch (shell_compatibility_level)
     {
       case DEFAULT_COMPAT_LEVEL:
        break;
+      case 44:
+       shopt_compat44 = 1; break;
       case 43:
        shopt_compat43 = 1; break;
       case 42:
index b3df1f9fd0c3719f5edc5016491689aa76c3d8c7..bdd197fd1e16e3ebd8601653496636181ab3536b 100644 (file)
@@ -69,6 +69,7 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../flags.h"
 #include "../findcmd.h"
 #include "common.h"
@@ -79,10 +80,6 @@ $END
 extern int errno;
 #endif /* !errno */
 
-extern int posixly_correct;
-extern int last_command_exit_value;
-extern int executing_command_builtin;
-
 static void maybe_pop_dollar_vars __P((void));
 
 /* If non-zero, `.' uses $PATH to look up the script to be sourced. */
@@ -169,12 +166,14 @@ source_builtin (list)
     }
 
   begin_unwind_frame ("source");
-  add_unwind_protect ((Function *)xfree, filename);
+  add_unwind_protect (xfree, filename);
 
   if (list->next)
     {
       push_dollar_vars ();
       add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL);
+      if (debugging_mode || shell_compatibility_level <= 44)
+       init_bash_argv ();      /* Initialize BASH_ARGV and BASH_ARGC */
       remember_args (list->next, 1);
       if (debugging_mode)
        push_args (list->next); /* Update BASH_ARGV and BASH_ARGC */
index d6c89bf9b4499302246e849b4c77a692fb50aa30..bd9a203b656800f28854f766d2755f6a78d7f1a3 100644 (file)
@@ -125,11 +125,10 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../test.h"
 #include "common.h"
 
-extern char *this_command_name;
-
 /* TEST/[ builtin. */
 int
 test_builtin (list)
index d43b0ef665bb1cae4945b9c5a2f6adc9756d28be..09846981f75b23684a41912228e0ab4734cc98f6 100644 (file)
@@ -97,9 +97,6 @@ static int display_traps __P((WORD_LIST *));
 #define REVERT 1               /* Revert to this signals original value. */
 #define IGNORE 2               /* Ignore this signal. */
 
-extern int posixly_correct, subshell_environment;
-extern int sourcelevel, running_trap;
-
 int
 trap_builtin (list)
      WORD_LIST *list;
index 3187add221e132dea25d40cb770482094fd2f571..699ecd2003b83d49d11203dbb65e6fcb573e7597 100644 (file)
@@ -64,6 +64,8 @@ $END
 #include "../bashintl.h"
 
 #include "../shell.h"
+#include "../parser.h"
+#include "../execute_cmd.h"
 #include "../findcmd.h"
 #include "../hashcmd.h"
 
@@ -76,9 +78,6 @@ $END
 
 extern int find_reserved_word __P((char *));
 
-extern char *this_command_name;
-extern int expand_aliases, posixly_correct;
-
 /* For each word in LIST, find out what the shell is going to do with
    it as a simple command. i.e., which file would this shell use to
    execve, or if it is a builtin command, or an alias.  Possible flag
index 62def4f6f9a4e5d099f4a38ad5ba06ce678a5f64..9b88c8cb3a50b733250c6837e2e35d1d3f94aa4c 100644 (file)
@@ -203,8 +203,6 @@ extern int errno;
 
 #define BLOCKSIZE(x)   (((x) == POSIXBLK) ? (posixly_correct ? 512 : 1024) : (x))
 
-extern int posixly_correct;
-
 static int _findlim __P((int));
 
 static int ulimit_internal __P((int, char *, int, int));
index 974f959b7f53db95dc812361c486a8a7a331156c..5deb3735c40ceb717e980e2e8f2b290f349423dd 100644 (file)
@@ -1,7 +1,7 @@
 This file is wait.def, from which is created wait.c.
 It implements the builtin "wait" in Bash.
 
-Copyright (C) 1987-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -22,18 +22,21 @@ $BUILTIN wait
 $FUNCTION wait_builtin
 $DEPENDS_ON JOB_CONTROL
 $PRODUCES wait.c
-$SHORT_DOC wait [-n] [id ...]
+$SHORT_DOC wait [-fn] [id ...]
 Wait for job completion and return exit status.
 
 Waits for each process identified by an ID, which may be a process ID or a
 job specification, and reports its termination status.  If ID is not
 given, waits for all currently active child processes, and the return
-status is zero.  If ID is a job specification, waits for all processes
+status is zero.  If ID is a job specification, waits for all processes
 in that job's pipeline.
 
 If the -n option is supplied, waits for the next job to terminate and
 returns its exit status.
 
+If the -f option is supplied, and job control is enabled, waits for the
+specified ID to terminate, instead of waiting for it to change status.
+
 Exit Status:
 Returns the status of the last ID; fails if ID is invalid or an invalid
 option is given.
@@ -68,12 +71,12 @@ $END
 #include "../bashansi.h"
 
 #include "../shell.h"
+#include "../execute_cmd.h"
 #include "../jobs.h"
 #include "common.h"
 #include "bashgetopt.h"
 
 extern int wait_signal_received;
-extern int last_command_exit_signal;
 
 procenv_t wait_intr_buf;
 int wait_intr_flag;
@@ -97,14 +100,14 @@ int
 wait_builtin (list)
      WORD_LIST *list;
 {
-  int status, code, opt, nflag;
+  int status, code, opt, nflag, wflags;
   volatile int old_interrupt_immediately;
 
   USE_VAR(list);
 
-  nflag = 0;
+  nflag = wflags = 0;
   reset_internal_getopt ();
-  while ((opt = internal_getopt (list, "n")) != -1)
+  while ((opt = internal_getopt (list, "nf")) != -1)
     {
       switch (opt)
        {
@@ -112,6 +115,9 @@ wait_builtin (list)
        case 'n':
          nflag = 1;
          break;
+       case 'f':
+         wflags |= JWAIT_FORCE;
+         break;
 #endif
        CASE_HELPOPT;
        default:
@@ -151,7 +157,7 @@ wait_builtin (list)
 #if defined (JOB_CONTROL)
   if (nflag)
     {
-      status = wait_for_any_job ();
+      status = wait_for_any_job (wflags);
       if (status < 0)
        status = 127;
       WAIT_RETURN (status);
@@ -179,7 +185,7 @@ wait_builtin (list)
          if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value)
            {
              pid = (pid_t)pid_value;
-             status = wait_for_single_pid (pid, 1);
+             status = wait_for_single_pid (pid, wflags|JWAIT_PERROR);
            }
          else
            {
@@ -209,7 +215,7 @@ wait_builtin (list)
 
          /* Job spec used.  Wait for the last pid in the pipeline. */
          UNBLOCK_CHILD (oset);
-         status = wait_for_job (job);
+         status = wait_for_job (job, wflags);
        }
 #endif /* JOB_CONTROL */
       else
index 3da5b77da5634fb2ad6843dbe2a0bbd4fd62b1de..32495162af65d1eb3af0944c6b193b070646cba2 100644 (file)
--- a/command.h
+++ b/command.h
@@ -94,13 +94,15 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
 #define W_HASQUOTEDNULL        0x040000        /* word contains a quoted null character */
 #define W_DQUOTE       0x080000        /* word should be treated as if double-quoted */
 #define W_NOPROCSUB    0x100000        /* don't perform process substitution */
-#define W_HASCTLESC    0x200000        /* word contains literal CTLESC characters */
+#define W_SAWQUOTEDNULL        0x200000        /* word contained a quoted null that was removed */
 #define W_ASSIGNASSOC  0x400000        /* word looks like associative array assignment */
 #define W_ASSIGNARRAY  0x800000        /* word looks like a compound indexed array assignment */
 #define W_ARRAYIND     0x1000000       /* word is an array index being expanded */
 #define W_ASSNGLOBAL   0x2000000       /* word is a global assignment to declare (declare/typeset -g) */
 #define W_NOBRACE      0x4000000       /* Don't perform brace expansion */
 #define W_COMPLETE     0x8000000       /* word is being expanded for completion */
+#define W_CHKLOCAL     0x10000000      /* check for local vars on assignment */
+#define W_NOASSNTILDE  0x20000000      /* don't do tilde expansion like an assignment statement */
 
 /* Flags for the `pflags' argument to param_expand() and various
    parameter_brace_expand_xxx functions; also used for string_list_dollar_at */
@@ -352,6 +354,7 @@ typedef struct group_com {
 
 typedef struct subshell_com {
   int flags;
+  int line;
   COMMAND *command;
 } SUBSHELL_COM;
 
index d89682e5b1bdd06f721e6baed08718139cc37795..56dbd51e61ad5baf4ac53da0907dba9de93c1d45 100644 (file)
@@ -53,7 +53,7 @@
 /* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message
    when a job exits due to SIGTERM, since that's the default signal sent
    by the kill builtin. */
-/* #define DONT_REPORT_SIGTERM */
+#define DONT_REPORT_SIGTERM
 
 /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
    like `echo' and `printf' to report errors when output does not succeed
   "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
 #endif
 
+/* If you want to unconditionally set a value for PATH in every restricted
+   shell, set this. */
+/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */
+
 /* The value for PATH when invoking `command -p'.  This is only used when
    the Posix.2 confstr () function, or CS_PATH define are not present. */
 #ifndef STANDARD_UTILS_PATH
 #  define OPENLOG_OPTS LOG_PID
 #endif
 
+/* Define if you want syslogging history to be controllable at runtime via a
+   shell option; if defined, the value is the default for the syslog_history
+   shopt option */
+#if defined (SYSLOG_HISTORY)
+/* #define SYSLOG_SHOPT 1 */
+#endif
+
 /* Define if you want to include code in shell.c to support wordexp(3) */
 /* #define WORDEXP_OPTION */
 
-/* Define as 1 if you want to enable code that implements multiple coprocs */
+/* Define as 1 if you want to enable code that implements multiple coprocs
+   executing simultaneously */
 #ifndef MULTIPLE_COPROCS
 #  define MULTIPLE_COPROCS 0
 #endif
 
 /* Define to 0 if you want the checkwinsize option off by default, 1 if you
    want it on. */
-#define CHECKWINSIZE_DEFAULT   0
+#define CHECKWINSIZE_DEFAULT   1
 
 /* Define to 1 if you want to optimize for sequential array assignment when
    using indexed arrays, 0 if you want bash-4.2 behavior, which favors
    no longer exists.  This behavior is the default in Posix mode. */
 #define CHECKHASH_DEFAULT 0
 
-/* Define to the maximum level of recursion you want for the eval builtin.
+/* Define to the maximum level of recursion you want for the eval builtin
+   and trap handlers (since traps are run as if run by eval).
    0 means the limit is not active. */
 #define EVALNEST_MAX 0
 
 /* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */
 #define USE_MKTEMP
 #define USE_MKSTEMP
+
+/* Define to force the value of OLDPWD inherited from the environment to be a
+   directory */
+#define OLDPWD_CHECK_DIRECTORY 1
+
+/* Define to set the initial size of the history list ($HISTSIZE). This must
+   be a string. */
+/*#define HISTSIZE_DEFAULT "500"*/
+
+/* Define to 0 if you want history expansion to be disabled by default in
+   interactive shells; define to 1 for the historical behavior of enabling
+   when the shell is interactive. */
+#define HISTEXPAND_DEFAULT     1
index a5ad9e7292280b63ff2df93632e6ebdcb459e9d8..8554aecca12a1ffa92b6da74d0e7e758b2b46f33 100644 (file)
 /* The number of bytes in a `long long', if we have one. */
 #undef SIZEOF_LONG_LONG
 
+/* The number of bytes in a `wchar_t', if supported */
+#undef SIZEOF_WCHAR_T
+
 /* System paths */
 
 #define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail"
 #undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
 #undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC
 
+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
 #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
 #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
 #undef HAVE_STRUCT_STAT_ST_ATIMENSEC
 /* Define if you have the fcntl function.  */
 #undef HAVE_FCNTL
 
+/* Define if you have the fnmatch function.  */
+#undef HAVE_FNMATCH
+
+/* Can fnmatch be used as a fallback to match [=equiv=] with collation weights? */
+#undef FNMATCH_EQUIV_FALLBACK
+
 /* Define if you have the fpurge/__fpurge function.  */
 #undef HAVE_FPURGE
 #undef HAVE___FPURGE
 /* Define if you have the <sys/ioctl.h> header file.  */
 #undef HAVE_SYS_IOCTL_H
 
+/* Define if you have the <sys/mman.h> header file.  */
+#undef HAVE_SYS_MMAN_H
+
 /* Define if you have the <sys/ndir.h> header file.  */
 #undef HAVE_SYS_NDIR_H
 
 
 #undef GETCWD_BROKEN
 
+#undef DEV_FD_STAT_BROKEN
+
 /* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */
 
 /* Define if you have the <argz.h> header file. */
 /* Define if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
+/* Define if you have the `mremap' function. */
+#undef HAVE_MREMAP
+
 /* Define if you have the `munmap' function. */
 #undef HAVE_MUNMAP
 
index 60f86d6495027f4b23f7e859e09f99f9d17571a7..2f62662979458764a2b50479748ac3a14942d2b9 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.ac for Bash 4.4, version 4.082.
+# From configure.ac for Bash 5.0, version 5.005.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bash 4.4-release.
+# Generated by GNU Autoconf 2.69 for bash 5.0-release.
 #
 # Report bugs to <bug-bash@gnu.org>.
 #
@@ -581,8 +581,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='bash'
 PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='4.4-release'
-PACKAGE_STRING='bash 4.4-release'
+PACKAGE_VERSION='5.0-release'
+PACKAGE_STRING='bash 5.0-release'
 PACKAGE_BUGREPORT='bug-bash@gnu.org'
 PACKAGE_URL=''
 
@@ -802,6 +802,7 @@ enable_cond_command
 enable_cond_regexp
 enable_coprocesses
 enable_debugger
+enable_dev_fd_stat_broken
 enable_direxpand_default
 enable_directory_stack
 enable_disabled_builtins
@@ -1393,7 +1394,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures bash 4.4-release to adapt to many kinds of systems.
+\`configure' configures bash 5.0-release to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1458,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bash 4.4-release:";;
+     short | recursive ) echo "Configuration of bash 5.0-release:";;
    esac
   cat <<\_ACEOF
 
@@ -1486,6 +1487,9 @@ Optional Features:
   --enable-coprocesses    enable coprocess support and the coproc reserved
                           word
   --enable-debugger       enable support for bash debugger
+  --enable-dev-fd-stat-broken
+                          enable this option if stat on /dev/fd/N and fstat on
+                          file descriptor N don't return the same results
   --enable-direxpand-default
                           enable the direxpand shell option by default
   --enable-directory-stack
@@ -1562,7 +1566,7 @@ Some influential environment variables:
   CC_FOR_BUILD
               C compiler used when compiling binaries used only at build time
   CFLAGS_FOR_BUILD
-              Compliation options (CFLAGS) used when compiling binaries used
+              Compilation options (CFLAGS) used when compiling binaries used
               only at build time
   LDFLAGS_FOR_BUILD
               Linker options (LDFLAGS) used when compiling binaries used only
@@ -1651,7 +1655,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bash configure 4.4-release
+bash configure 5.0-release
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2360,7 +2364,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bash $as_me 4.4-release, which was
+It was created by bash $as_me 5.0-release, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2645,6 +2649,7 @@ as_fn_append ac_header_list " unistd.h"
 as_fn_append ac_header_list " sys/param.h"
 as_fn_append ac_header_list " sys/time.h"
 as_fn_append ac_func_list " alarm"
+as_fn_append ac_func_list " sbrk"
 as_fn_append ac_func_list " fpurge"
 as_fn_append ac_func_list " __fpurge"
 as_fn_append ac_func_list " snprintf"
@@ -2753,7 +2758,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 ac_config_headers="$ac_config_headers config.h"
 
 
-BASHVERS=4.4
+BASHVERS=5.0
 RELSTATUS=release
 
 case "$RELSTATUS" in
@@ -2842,33 +2847,38 @@ opt_with_installed_readline=no
 #htmldir=
 
 case "${host_cpu}-${host_os}" in
+# mostly obsolete platforms
 alpha*-*)      opt_bash_malloc=no ;;   # alpha running osf/1 or linux
 *[Cc]ray*-*)   opt_bash_malloc=no ;;   # Crays
 *-osf1*)       opt_bash_malloc=no ;;   # other osf/1 machines
+*-dgux*)       opt_bash_malloc=no ;;   # DG/UX machines
 sparc-svr4*)   opt_bash_malloc=no ;;   # sparc SVR4, SVR4.2
-sparc-netbsd*) opt_bash_malloc=no ;;   # needs 8-byte alignment
-mips-irix6*)   opt_bash_malloc=no ;;   # needs 8-byte alignment
 m68k-sysv)     opt_bash_malloc=no ;;   # fixes file descriptor leak in closedir
+*-bsdi2.1|*-bsdi3.?)   opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
+*-opennt*|*-interix*)  opt_bash_malloc=no ;;   # Interix, now owned by Microsoft
+*-beos*)       opt_bash_malloc=no ;;   # they say it's suitable
+# These need additional investigation
 sparc-linux*)  opt_bash_malloc=no ;;   # sparc running linux; requires ELF
-#*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
-#*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
-*-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
-*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
+*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
+# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-openstep*)   opt_bash_malloc=no ;;   # i386/Sparc/HP machines running Openstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
 *-rhapsody*)   opt_bash_malloc=no ;;   # Apple Rhapsody (MacOS X)
 *-darwin*)     opt_bash_malloc=no ;;   # Apple Darwin (MacOS X)
-*-dgux*)       opt_bash_malloc=no ;;   # DG/UX machines
-*-qnx*)                opt_bash_malloc=no ;;   # QNX 4.2, QNX 6.x
 *-machten4)    opt_bash_malloc=no ;;   # MachTen 4.x
-*-bsdi2.1|*-bsdi3.?)   opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
-*-beos*)       opt_bash_malloc=no ;;   # they say it's suitable
-*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
-*-opennt*|*-interix*)  opt_bash_malloc=no ;;   # Interix, now owned by Microsoft
+# Niche or non-mainstream-shell-user systems
+*-qnx*)                opt_bash_malloc=no ;;   # QNX 4.2, QNX [67].x
 *-nsk*)                opt_bash_malloc=no ;;   # HP NonStop
 *-haiku*)      opt_bash_malloc=no ;;   # Haiku OS
+# Deprecated -- bash malloc is suitable
+#sparc-netbsd*)        opt_bash_malloc=no ;;   # needs 8-byte alignment
+#mips-irix6*)  opt_bash_malloc=no ;;   # needs 8-byte alignment
+#*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
+#*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
+#*-openbsd*)   opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+#*-mirbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 esac
 
 # memory scrambling on free()
@@ -2976,8 +2986,9 @@ opt_casemod_attrs=yes
 opt_casemod_expansions=yes
 opt_extglob_default=no
 opt_dircomplete_expand_default=no
-opt_globascii_default=no
+opt_globascii_default=yes
 opt_function_import=yes
+opt_dev_fd_stat_broken=no
 
 opt_static_link=no
 opt_profiling=no
@@ -2998,7 +3009,7 @@ if test $opt_minimal_config = yes; then
        opt_net_redirs=no opt_progcomp=no opt_separate_help=no
        opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
        opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
-       opt_globascii_default=no
+       opt_globascii_default=yes
 fi
 
 # Check whether --enable-alias was given.
@@ -3061,6 +3072,11 @@ if test "${enable_debugger+set}" = set; then :
   enableval=$enable_debugger; opt_debugger=$enableval
 fi
 
+# Check whether --enable-dev-fd-stat-broken was given.
+if test "${enable_dev_fd_stat_broken+set}" = set; then :
+  enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval
+fi
+
 # Check whether --enable-direxpand-default was given.
 if test "${enable_direxpand_default+set}" = set; then :
   enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval
@@ -3326,6 +3342,10 @@ fi
 if test $opt_function_import = yes; then
 $as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h
 
+fi
+if test $opt_dev_fd_stat_broken = yes; then
+$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h
+
 fi
 
 if test $opt_memscramble = yes; then
@@ -4896,6 +4916,9 @@ if test "x$cross_compiling" = "xyes"; then
     i[3456]86-*-beos*)
        cross_cache=${srcdir}/cross-build/x86-beos.cache
        ;;
+    *-qnx*)
+       cross_cache=${srcdir}/cross-build/qnx.cache
+       ;;
     *) echo "configure: cross-compiling for $host is not supported" >&2
        ;;
     esac
@@ -4915,16 +4938,10 @@ fi
 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"}   # XXX
 
-# turn off paren warnings in gcc
-if test "$GCC" = yes # && test -n "$DEBUG"
-then
-       CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
-fi
-
 if test "$opt_profiling" = "yes"; then
        PROFILE_FLAGS=-pg
        case "$host_os" in
-       solaris2*)      ;;
+       solaris2*|linux*)       ;;
        *)              opt_static_link=yes ;;
        esac
        DEBUG= MALLOC_DEBUG=
@@ -4940,7 +4957,7 @@ if test "$opt_static_link" = yes; then
        if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then
                STATIC_LD="-static"
                case "$host_os" in
-               solaris2*)      ;;
+               solaris2*|linux*)       ;;
                *)              LDFLAGS="$LDFLAGS -static" ;;   # XXX experimental
                esac
        fi
@@ -4952,7 +4969,11 @@ fi
 if test "X$cross_compiling" = "Xno"; then
        CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
        CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"}    # XXX - should it be '$(CPPFLAGS)'
-       LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+       if test X"$opt_profiling" = Xyes; then
+               LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'}
+       else
+               LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+       fi
        # CFLAGS set above to default value if not passed in environment
        CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
        LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
@@ -5195,6 +5216,45 @@ fi
 $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
 if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then :
   bash_cv_termcap_lib=libncurses
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+$as_echo_n "checking for tgetent in -lncursesw... " >&6; }
+if ${ac_cv_lib_ncursesw_tgetent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncursesw  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent ();
+int
+main ()
+{
+return tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ncursesw_tgetent=yes
+else
+  ac_cv_lib_ncursesw_tgetent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then :
+  bash_cv_termcap_lib=libncursesw
 else
   bash_cv_termcap_lib=gnutermcap
 fi
@@ -5209,6 +5269,8 @@ fi
 
 fi
 
+fi
+
 if test "X$_bash_needmsg" = "Xyes"; then
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
 $as_echo_n "checking which library has the termcap functions... " >&6; }
@@ -5268,7 +5330,7 @@ if ${ac_cv_rl_version+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
-  ac_cv_rl_version='6.3'
+  ac_cv_rl_version='8.0'
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -5382,7 +5444,7 @@ fi
 
 
        case "$ac_cv_rl_version" in
-       5*|6*|7*|8*|9*) ;;
+       8*|9*)  ;;
        *)      opt_with_installed_readline=no
                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5
 $as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;}
@@ -9270,7 +9332,7 @@ fi
 done
 
 for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
-                sys/param.h sys/socket.h sys/stat.h \
+                sys/mman.h sys/param.h sys/socket.h sys/stat.h \
                 sys/time.h sys/times.h sys/types.h sys/wait.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -9804,7 +9866,7 @@ fi
 
 for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \
                getpagesize getpeername getrlimit getrusage gettimeofday \
-               kill killpg lstat pselect readlink sbrk select setdtablesize \
+               kill killpg lstat pselect readlink select setdtablesize \
                setitimer tcgetpgrp uname ulimit waitpid
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -10265,7 +10327,7 @@ else
 int
 main ()
 {
-int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}
+long double r; char *foo, bar; r = strtold(foo, &bar);
   ;
   return 0;
 }
@@ -11024,7 +11086,7 @@ fi
 rm -f conftest.mmap conftest.txt
 
 for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \
-               munmap stpcpy strcspn
+               munmap mremap stpcpy strcspn
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -11445,6 +11507,40 @@ done
        LIBS="$OLDLIBS"
 fi
 
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+$as_echo_n "checking size of wchar_t... " >&6; }
+if ${ac_cv_sizeof_wchar_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_wchar_t" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (wchar_t)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_wchar_t=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
+_ACEOF
+
+
+
 
 
 if test "$opt_static_link" != yes; then
 
 
 
+
+
+
+
+  if test X$ac_cv_func_sbrk = Xyes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5
+$as_echo_n "checking for working sbrk... " >&6; }
+if ${bash_cv_func_sbrk+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5
+$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;}
+    bash_cv_func_sbrk=yes
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int c, char **v)
+{
+       void *x;
+
+       x = sbrk (4096);
+       exit ((x == (void *)-1) ? 1 : 0);
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  bash_cv_func_sbrk=yes
+else
+  bash_cv_func_snprintf=sbrk
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5
+$as_echo "$bash_cv_func_sbrk" >&6; }
+    if test $bash_cv_func_sbrk = no; then
+      ac_cv_func_sbrk=no
+    fi
+  fi
+  if test $ac_cv_func_sbrk = no; then
+
+$as_echo "#define HAVE_SBRK 0" >>confdefs.h
+
+  fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5
 $as_echo_n "checking for the existence of strsignal... " >&6; }
 if ${bash_cv_have_strsignal+:} false; then :
@@ -15118,6 +15269,67 @@ $as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5
+$as_echo_n "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; }
+if ${bash_cv_fnmatch_equiv_fallback+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5
+$as_echo "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;}
+    bash_cv_fnmatch_equiv_fallback=no
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fnmatch.h>
+#include <locale.h>
+
+char *pattern = "[[=a=]]";
+
+/* char *string = "ä"; */
+unsigned char string[4] = { '\xc3', '\xa4', '\0' };
+
+int
+main (int c, char **v)
+{
+  setlocale (LC_ALL, "de_DE.UTF-8");
+  if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
+    exit (0);
+  exit (1);
+}
+
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  bash_cv_fnmatch_equiv_fallback=yes
+else
+  bash_cv_fnmatch_equiv_fallback=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5
+$as_echo "$bash_cv_fnmatch_equiv_fallback" >&6; }
+if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then
+    bash_cv_fnmatch_equiv_value=1
+else
+    bash_cv_fnmatch_equiv_value=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value
+_ACEOF
+
+
+
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5
@@ -15141,7 +15353,7 @@ else
 
 typedef RETSIGTYPE sigfunc();
 
-int nsigint;
+volatile int nsigint;
 
 #ifdef HAVE_POSIX_SIGNALS
 sigfunc *
 $as_echo_n "checking for presence of necessary job control definitions... " >&6; }
 if ${bash_cv_job_control_missing+:} false; then :
   $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5
-$as_echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;}
-     bash_cv_job_control_missing=missing
-
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -15220,51 +15426,54 @@ else
 #endif
 #include <signal.h>
 
-/* Add more tests in here as appropriate. */
-main()
-{
+/* add more tests in here as appropriate */
+
 /* signal type */
 #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
-exit(1);
+#error
 #endif
 
 /* signals and tty control. */
 #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
-exit (1);
+#error
 #endif
 
 /* process control */
 #if !defined (WNOHANG) || !defined (WUNTRACED)
-exit(1);
+#error
 #endif
 
 /* Posix systems have tcgetpgrp and waitpid. */
 #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
-exit(1);
+#error
 #endif
 
 #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
-exit(1);
+#error
 #endif
 
 /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
 #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
-exit(1);
+#error
 #endif
 
-exit(0);
+
+int
+main ()
+{
+
+  ;
+  return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"; then :
   bash_cv_job_control_missing=present
 else
   bash_cv_job_control_missing=missing
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
 
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5
 $as_echo "$bash_cv_job_control_missing" >&6; }
 $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
 if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then :
   bash_cv_termcap_lib=libncurses
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+$as_echo_n "checking for tgetent in -lncursesw... " >&6; }
+if ${ac_cv_lib_ncursesw_tgetent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncursesw  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent ();
+int
+main ()
+{
+return tgetent ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ncursesw_tgetent=yes
+else
+  ac_cv_lib_ncursesw_tgetent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then :
+  bash_cv_termcap_lib=libncursesw
 else
   bash_cv_termcap_lib=gnutermcap
 fi
@@ -15902,6 +16150,8 @@ fi
 
 fi
 
+fi
+
 if test "X$_bash_needmsg" = "Xyes"; then
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
 $as_echo_n "checking which library has the termcap functions... " >&6; }
@@ -15976,9 +16226,7 @@ $as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; }
 if ${bash_cv_dev_stdin+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then
-   bash_cv_dev_stdin=present
- elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then
+  if (exec test -r /dev/stdin < /dev/null) ; then
    bash_cv_dev_stdin=present
  else
    bash_cv_dev_stdin=absent
@@ -16065,10 +16313,12 @@ solaris2*)    LOCAL_CFLAGS=-DSOLARIS ;;
 lynxos*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
 linux*)                LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
                case "`uname -r`" in
-               2.[456789]*|[34]*)      $as_echo "#define PGRP_PIPE 1" >>confdefs.h
+               1.*|2.[0123]*)  : ;;
+               *)      $as_echo "#define PGRP_PIPE 1" >>confdefs.h
  ;;
                esac ;;
-*qnx6*)                LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
+netbsd*|openbsd*)      LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
+*qnx[67]*)     LOCAL_LIBS="-lncurses" ;;
 *qnx*)         LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
 powerux*)      LOCAL_LIBS="-lgen" ;;
 cygwin*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
@@ -16106,6 +16356,16 @@ m88k-motorola-sysv3)   LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
 mips-pyramid-sysv4)    LOCAL_CFLAGS=-Xa ;;
 esac
 
+# turn off paren warnings in gcc
+if test "$GCC" = yes # && test -n "$DEBUG"
+then
+       CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
+#      if test -n "$DEBUG"
+#      then
+#              CFLAGS="$CFLAGS -Werror"
+#      fi
+fi
+
 #
 # Shared object configuration section.  These values are generated by
 # ${srcdir}/support/shobj-conf
@@ -16124,6 +16384,9 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6;
 
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5
 $as_echo "$SHOBJ_STATUS" >&6; }
+else
+       SHOBJ_STATUS=unsupported
+
 fi
 
 # try to create a directory tree if the source is elsewhere
@@ -16194,7 +16457,7 @@ fi
 #AC_SUBST(ALLOCA_SOURCE)
 #AC_SUBST(ALLOCA_OBJECT)
 
-ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc"
+ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh"
 
 ac_config_commands="$ac_config_commands default"
 
@@ -16705,7 +16968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by bash $as_me 4.4-release, which was
+This file was extended by bash $as_me 5.0-release, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16771,7 +17034,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-bash config.status 4.4-release
+bash config.status 5.0-release
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -16922,6 +17185,7 @@ do
     "examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;;
     "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;;
     "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;;
+    "support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
index ce4e9b6075e5ca5104d0b282b96f965c6b5193a7..52b4cdbdbc9aee14a4288777a7b90cd8ada61981 100644 (file)
@@ -1,11 +1,11 @@
 dnl
-dnl Configure script for bash-4.4
+dnl Configure script for bash-5.0
 dnl
 dnl report bugs to chet@po.cwru.edu
 dnl
 dnl Process this file with autoconf to produce a configure script.
 
-# Copyright (C) 1987-2016 Free Software Foundation, Inc.
+# Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
 #
 #   This program is free software: you can redistribute it and/or modify
@@ -21,9 +21,9 @@ dnl Process this file with autoconf to produce a configure script.
 #   You should have received a copy of the GNU General Public License
 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_REVISION([for Bash 4.4, version 4.082])dnl
+AC_REVISION([for Bash 5.0, version 5.005])dnl
 
-define(bashvers, 4.4)
+define(bashvers, 5.0)
 define(relstatus, release)
 
 AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
@@ -63,33 +63,38 @@ dnl some systems should be configured without the bash malloc by default
 dnl and some need a special compiler or loader
 dnl look in the NOTES file for more
 case "${host_cpu}-${host_os}" in
+# mostly obsolete platforms
 alpha*-*)      opt_bash_malloc=no ;;   # alpha running osf/1 or linux
 *[[Cc]]ray*-*) opt_bash_malloc=no ;;   # Crays
 *-osf1*)       opt_bash_malloc=no ;;   # other osf/1 machines
+*-dgux*)       opt_bash_malloc=no ;;   # DG/UX machines
 sparc-svr4*)   opt_bash_malloc=no ;;   # sparc SVR4, SVR4.2
-sparc-netbsd*) opt_bash_malloc=no ;;   # needs 8-byte alignment
-mips-irix6*)   opt_bash_malloc=no ;;   # needs 8-byte alignment
 m68k-sysv)     opt_bash_malloc=no ;;   # fixes file descriptor leak in closedir
+*-bsdi2.1|*-bsdi3.?)   opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
+*-opennt*|*-interix*)  opt_bash_malloc=no ;;   # Interix, now owned by Microsoft
+*-beos*)       opt_bash_malloc=no ;;   # they say it's suitable
+# These need additional investigation
 sparc-linux*)  opt_bash_malloc=no ;;   # sparc running linux; requires ELF
-#*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
-#*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
-*-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
-*-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 *-aix*)                opt_bash_malloc=no ;;   # AIX machines
+*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
+# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
 *-nextstep*)   opt_bash_malloc=no ;;   # NeXT machines running NeXTstep
 *-openstep*)   opt_bash_malloc=no ;;   # i386/Sparc/HP machines running Openstep
 *-macos*)      opt_bash_malloc=no ;;   # Apple MacOS X
 *-rhapsody*)   opt_bash_malloc=no ;;   # Apple Rhapsody (MacOS X)
 *-darwin*)     opt_bash_malloc=no ;;   # Apple Darwin (MacOS X)
-*-dgux*)       opt_bash_malloc=no ;;   # DG/UX machines
-*-qnx*)                opt_bash_malloc=no ;;   # QNX 4.2, QNX 6.x
 *-machten4)    opt_bash_malloc=no ;;   # MachTen 4.x
-*-bsdi2.1|*-bsdi3.?)   opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins
-*-beos*)       opt_bash_malloc=no ;;   # they say it's suitable
-*-cygwin*)     opt_bash_malloc=no ;;   # Cygnus's CYGWIN environment
-*-opennt*|*-interix*)  opt_bash_malloc=no ;;   # Interix, now owned by Microsoft
+# Niche or non-mainstream-shell-user systems
+*-qnx*)                opt_bash_malloc=no ;;   # QNX 4.2, QNX [67].x
 *-nsk*)                opt_bash_malloc=no ;;   # HP NonStop
 *-haiku*)      opt_bash_malloc=no ;;   # Haiku OS
+# Deprecated -- bash malloc is suitable
+#sparc-netbsd*)        opt_bash_malloc=no ;;   # needs 8-byte alignment
+#mips-irix6*)  opt_bash_malloc=no ;;   # needs 8-byte alignment
+#*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
+#*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
+#*-openbsd*)   opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
+#*-mirbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
 esac
 
 # memory scrambling on free()
@@ -177,8 +182,9 @@ opt_casemod_attrs=yes
 opt_casemod_expansions=yes
 opt_extglob_default=no
 opt_dircomplete_expand_default=no
-opt_globascii_default=no
+opt_globascii_default=yes
 opt_function_import=yes
+opt_dev_fd_stat_broken=no
 
 dnl options that affect how bash is compiled and linked
 opt_static_link=no
@@ -199,7 +205,7 @@ if test $opt_minimal_config = yes; then
        opt_net_redirs=no opt_progcomp=no opt_separate_help=no
        opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
        opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
-       opt_globascii_default=no
+       opt_globascii_default=yes
 fi
 
 AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
@@ -214,6 +220,7 @@ AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the
 AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
 AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
 AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
+AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval)
 AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
 AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
 AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
@@ -246,7 +253,7 @@ AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash sta
 
 dnl So-called `precious' variables
 AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
-AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time])
+AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time])
 AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time])
 AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time])
 
@@ -347,6 +354,9 @@ fi
 if test $opt_function_import = yes; then
 AC_DEFINE(FUNCTION_IMPORT)
 fi
+if test $opt_dev_fd_stat_broken = yes; then
+AC_DEFINE(DEV_FD_STAT_BROKEN)
+fi
 
 if test $opt_memscramble = yes; then
 AC_DEFINE(MEMSCRAMBLE)
@@ -440,6 +450,9 @@ if test "x$cross_compiling" = "xyes"; then
     i[[3456]]86-*-beos*)
        cross_cache=${srcdir}/cross-build/x86-beos.cache
        ;;
+    *-qnx*)
+       cross_cache=${srcdir}/cross-build/qnx.cache
+       ;;
     *) echo "configure: cross-compiling for $host is not supported" >&2
        ;;
     esac
@@ -461,18 +474,12 @@ dnl default values
 CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
 # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"}   # XXX
 
-# turn off paren warnings in gcc
-if test "$GCC" = yes # && test -n "$DEBUG"
-then
-       CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
-fi
-
 dnl handle options that alter how bash is compiled and linked
 dnl these must come after the test for cc/gcc
 if test "$opt_profiling" = "yes"; then
        PROFILE_FLAGS=-pg
        case "$host_os" in
-       solaris2*)      ;;
+       solaris2*|linux*)       ;;
        *)              opt_static_link=yes ;;
        esac
        DEBUG= MALLOC_DEBUG=
@@ -488,7 +495,7 @@ if test "$opt_static_link" = yes; then
        if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
                STATIC_LD="-static" 
                case "$host_os" in
-               solaris2*)      ;;
+               solaris2*|linux*)       ;;
                *)              LDFLAGS="$LDFLAGS -static" ;;   # XXX experimental
                esac
        fi
@@ -500,7 +507,11 @@ fi
 if test "X$cross_compiling" = "Xno"; then
        CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'}
        CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"}    # XXX - should it be '$(CPPFLAGS)'
-       LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+       if test X"$opt_profiling" = Xyes; then
+               LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'}
+       else
+               LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
+       fi
        # CFLAGS set above to default value if not passed in environment
        CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
        LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
@@ -538,7 +549,7 @@ then
        RL_LIB_READLINE_VERSION
 
        case "$ac_cv_rl_version" in
-       5*|6*|7*|8*|9*) ;;
+       8*|9*)  ;;
        *)      opt_with_installed_readline=no 
                AC_MSG_WARN([installed readline library is too old to be linked with bash])
                AC_MSG_WARN([using private bash version])
@@ -702,7 +713,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
                 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
                 regex.h syslog.h ulimit.h)
 AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
-                sys/param.h sys/socket.h sys/stat.h \
+                sys/mman.h sys/param.h sys/socket.h sys/stat.h \
                 sys/time.h sys/times.h sys/types.h sys/wait.h)
 AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
 
@@ -770,7 +781,7 @@ AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
 dnl checks for system calls
 AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
                getpagesize getpeername getrlimit getrusage gettimeofday \
-               kill killpg lstat pselect readlink sbrk select setdtablesize \
+               kill killpg lstat pselect readlink select setdtablesize \
                setitimer tcgetpgrp uname ulimit waitpid)
 AC_REPLACE_FUNCS(rename)
 
@@ -808,7 +819,7 @@ AC_CHECK_DECLS([strtold], [
     AC_CACHE_VAL(bash_cv_strtold_broken,
        [AC_TRY_COMPILE(
            [#include <stdlib.h>],
-           [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}],
+           [long double r; char *foo, bar; r = strtold(foo, &bar);],
            bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
            [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
        ]
@@ -838,7 +849,7 @@ AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
 dnl AC_FUNC_MALLOC
 AC_FUNC_MMAP
 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \
-               munmap stpcpy strcspn])
+               munmap mremap stpcpy strcspn])
 
 INTL_DEP= INTL_INC= LIBINTL_H=
 if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
@@ -980,6 +991,9 @@ BASH_STRUCT_WEXITSTATUS_OFFSET
 BASH_CHECK_TYPE_STRUCT_TIMESPEC
 BASH_STAT_TIME
 
+dnl checks for system calls
+BASH_FUNC_SBRK
+
 dnl presence and behavior of C library functions
 BASH_FUNC_STRSIGNAL
 BASH_FUNC_OPENDIR_CHECK
@@ -1010,6 +1024,8 @@ fi
 
 BASH_FUNC_PRINTF_A_FORMAT
 
+BASH_FUNC_FNMATCH_EQUIV_FALLBACK
+
 dnl presence and behavior of OS functions
 BASH_SYS_REINSTALL_SIGHANDLERS
 BASH_SYS_JOB_CONTROL_MISSING
@@ -1093,9 +1109,11 @@ solaris2*)       LOCAL_CFLAGS=-DSOLARIS ;;
 lynxos*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
 linux*)                LOCAL_LDFLAGS=-rdynamic          # allow dynamic loading
                case "`uname -r`" in
-               2.[[456789]]*|[[34]]*)  AC_DEFINE(PGRP_PIPE) ;;
+               1.*|2.[[0123]]*)        : ;;
+               *)      AC_DEFINE(PGRP_PIPE) ;;
                esac ;;
-*qnx6*)                LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
+netbsd*|openbsd*)      LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
+*qnx[[67]]*)   LOCAL_LIBS="-lncurses" ;;
 *qnx*)         LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
 powerux*)      LOCAL_LIBS="-lgen" ;;
 cygwin*)       LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
@@ -1135,6 +1153,16 @@ m88k-motorola-sysv3)     LOCAL_CFLAGS=-DWAITPID_BROKEN ;;
 mips-pyramid-sysv4)    LOCAL_CFLAGS=-Xa ;;
 esac
 
+# turn off paren warnings in gcc
+if test "$GCC" = yes # && test -n "$DEBUG"
+then
+       CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
+#      if test -n "$DEBUG"
+#      then
+#              CFLAGS="$CFLAGS -Werror"
+#      fi
+fi
+
 #
 # Shared object configuration section.  These values are generated by
 # ${srcdir}/support/shobj-conf
@@ -1151,6 +1179,9 @@ then
        AC_SUBST(SHOBJ_LIBS)
        AC_SUBST(SHOBJ_STATUS)
        AC_MSG_RESULT($SHOBJ_STATUS)
+else
+       SHOBJ_STATUS=unsupported
+       AC_SUBST(SHOBJ_STATUS)
 fi
 
 # try to create a directory tree if the source is elsewhere
@@ -1227,7 +1258,7 @@ AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
          lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
          examples/loadables/Makefile examples/loadables/Makefile.inc \
          examples/loadables/perl/Makefile \
-         support/bash.pc],
+         support/bash.pc support/bashbug.sh],
 [
 # Makefile uses this timestamp file to record whether config.h is up to date.
 echo timestamp > stamp-h
index 826e0c3a4650b1833888176d50c93d62a2ce9d4e..d2b5bc9c186dbb1f337ac1c99c67ddbe3394e199 100644 (file)
@@ -69,12 +69,20 @@ WORD_LIST *
 copy_word_list (list)
      WORD_LIST *list;
 {
-  WORD_LIST *new_list;
+  WORD_LIST *new_list, *tl;
 
-  for (new_list = (WORD_LIST *)NULL; list; list = list->next)
-    new_list = make_word_list (copy_word (list->word), new_list);
+  for (new_list = tl = (WORD_LIST *)NULL; list; list = list->next)
+    {
+      if (new_list == 0)
+       new_list = tl = make_word_list (copy_word (list->word), new_list);
+      else
+       {
+         tl->next = make_word_list (copy_word (list->word), (WORD_LIST *)NULL);
+         tl = tl->next;
+       }
+    }
 
-  return (REVERSE_LIST (new_list, WORD_LIST *));
+  return (new_list);
 }
 
 static PATTERN_LIST *
@@ -221,6 +229,7 @@ copy_subshell_command (com)
   new_subshell = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM));
   new_subshell->command = copy_command (com->command);
   new_subshell->flags = com->flags;
+  new_subshell->line = com->line;
   return (new_subshell);
 }
 
diff --git a/cross-build/qnx.cache b/cross-build/qnx.cache
new file mode 100644 (file)
index 0000000..3f630fd
--- /dev/null
@@ -0,0 +1,66 @@
+bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax=yes}
+bash_cv_decl_strtol=${bash_cv_decl_strtol=yes}
+bash_cv_decl_strtoll=${bash_cv_decl_strtoll=yes}
+bash_cv_decl_strtoul=${bash_cv_decl_strtoul=yes}
+bash_cv_decl_strtoull=${bash_cv_decl_strtoull=yes}
+bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax=yes}
+bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist=no}
+bash_cv_dev_fd=${bash_cv_dev_fd=absent}
+bash_cv_dev_stdin=${bash_cv_dev_stdin=present}
+bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no}
+bash_cv_dirent_has_d_namlen=${bash_cv_dirent_has_d_namlen=no}
+bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino=yes}
+bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
+bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl=yes}
+bash_cv_func_ctype_nonascii=${bash_cv_func_ctype_nonascii=no}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
+bash_cv_func_snprintf=${bash_cv_func_snprintf=yes}
+bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
+bash_cv_func_vsnprintf=${bash_cv_func_vsnprintf=yes}
+bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes}
+bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
+bash_cv_getpw_declared=${bash_cv_getpw_declared=yes}
+bash_cv_have_gethostbyname=${bash_cv_have_gethostbyname=no}
+bash_cv_have_socklib=${bash_cv_have_socklib=no}
+bash_cv_have_strsignal=${bash_cv_have_strsignal=yes}
+bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
+bash_cv_langinfo_codeset=${bash_cv_langinfo_codeset=no}
+bash_cv_mail_dir=${bash_cv_mail_dir=unknown}
+bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
+bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
+bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
+bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
+bash_cv_signal_vintage=${bash_cv_signal_vintage=posix}
+bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types=no}
+bash_cv_std_putenv=${bash_cv_std_putenv=yes}
+bash_cv_std_unsetenv=${bash_cv_std_unsetenv=yes}
+bash_cv_strtold_broken=${bash_cv_strtold_broken=no}
+bash_cv_struct_timeval=${bash_cv_struct_timeval=yes}
+bash_cv_struct_timezone=${bash_cv_struct_timezone=yes}
+bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_h}
+bash_cv_sys_errlist=${bash_cv_sys_errlist=no}
+bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
+bash_cv_sys_siglist=${bash_cv_sys_siglist=yes}
+bash_cv_sys_struct_timespec_in_time_h=${bash_cv_sys_struct_timespec_in_time_h=yes}
+bash_cv_termcap_lib=${bash_cv_termcap_lib=libtermcap}
+bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl=no}
+bash_cv_type_clock_t=${bash_cv_type_clock_t=yes}
+bash_cv_type_intmax_t=${bash_cv_type_intmax_t=yes}
+bash_cv_type_long_long=${bash_cv_type_long_long='long long'}
+bash_cv_type_quad_t=${bash_cv_type_quad_t=no}
+bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
+bash_cv_type_sig_atomic_t=${bash_cv_type_sig_atomic_t=yes}
+bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes}
+bash_cv_type_socklen_t=${bash_cv_type_socklen_t=yes}
+bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t=yes}
+bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'}
+bash_cv_type_wchar_t=${bash_cv_type_wchar_t=yes}
+bash_cv_type_wctype_t=${bash_cv_type_wctype_t=yes}
+bash_cv_type_wint_t=${bash_cv_type_wint_t=yes}
+bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=no}
+bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no}
+bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
+bash_cv_void_sighandler=${bash_cv_void_sighandler=yes}
+bash_cv_wcontinued_broken=${bash_cv_wcontinued_broken=no}
+bash_cv_wcwidth_broken=${bash_cv_wcwidth_broken=no}
+bash_cv_wexitstatus_offset=${bash_cv_wexitstatus_offset=8}
diff --git a/doc/FAQ b/doc/FAQ
index 87dbb2d0254d4f127991b3eff22241525509042b..104d0bc1c322e55191b6d430af96cde3fdc2a073 100644 (file)
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -1,6 +1,4 @@
-This is the Bash FAQ, version 4.14, for Bash version 4.4.
-
-[THIS FAQ IS NO LONGER MAINTAINED]
+This is the Bash FAQ, version 4.15, for Bash version 5.0.
 
 This document contains a set of frequently-asked questions concerning
 Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
@@ -962,7 +960,7 @@ o `complete' and `compgen' now take a `-o value' option, which controls some
                     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
+o When `set' is called without options, it prints function definitions 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.
@@ -2171,17 +2169,11 @@ You may also need
 
 Finally, you need to tell readline that you will be inputting and
 displaying eight-bit characters.  You use readline variables to do
-this.  convert-meta says what to do if you read a character with its
-eighth bit set.  input-meta says whether to permit characters with the
-eighth bit at all.  output-meta determines how to display characters
-with the eighth bit set: if on, they are output directly; if it is off,
-such characters are displayed as a meta-prefixed escape sequence.
-
-These variables can be set in your .inputrc or using the bash
+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 input-meta on'
+       bash$ bind 'set meta-flag on'
        bash$ bind 'set output-meta on'
 
 The `set' commands between the single quotes may also be placed
@@ -2287,7 +2279,7 @@ 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:
+substitution, use $PWD.  Here are some examples:
 
        PS1='\w$ '      # current directory with tilde
        PS1='\W$ '      # basename of current directory
@@ -2404,7 +2396,7 @@ 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 `xx.yy' variables (including some of the .sh.* variables) and
-       associated disipline functions
+       associated discipline functions
 Some of the new ksh93 pattern matching operators, like backreferencing
 
 H5) When will the next release appear?
index 031be8a4fd7164cb27022e19f36661735636f5f2..a062b8ace38eaacc8bb0245ecf6b85726ab52e2b 100644 (file)
@@ -9,7 +9,7 @@ S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
        b\bba\bas\bsh\bh [options] [command_string | file]
 
 C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
-       Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc.
+       Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc.
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
        B\bBa\bas\bsh\bh  is  an  s\bsh\bh-compatible  command language interpreter that executes
@@ -22,9 +22,9 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
 O\bOP\bPT\bTI\bIO\bON\bNS\bS
        All of the single-character shell options documented in the description
-       of the s\bse\bet\bt builtin command can be used as options  when  the  shell  is
-       invoked.  In addition, b\bba\bas\bsh\bh interprets the following options when it is
-       invoked:
+       of the s\bse\bet\bt builtin command, including -\b-o\bo, can be used as  options  when
+       the  shell  is  invoked.   In  addition,  b\bba\bas\bsh\bh interprets the following
+       options when it is invoked:
 
        -\b-c\bc        If the -\b-c\bc option is present, then commands are read from  the
                  first non-option argument _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b__\bs_\bt_\br_\bi_\bn_\bg.  If there are argu-
@@ -41,67 +41,68 @@ O\bOP\bPT\bTI\bIO\bON\bNS\bS
        -\b-s\bs        If the -\b-s\bs 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.
-       -\b-D\bD        A  list of all double-quoted strings preceded by $\b$ is printed
-                 on the standard output.  These are the strings that are  sub-
+                 set  when invoking an interactive shell or when reading input
+                 through a pipe.
+       -\b-D\bD        A list of all double-quoted strings preceded by $\b$ is  printed
+                 on  the standard output.  These are the strings that are sub-
                  ject to language translation when the current locale is not C\bC
-                 or P\bPO\bOS\bSI\bIX\bX.  This implies the -\b-n\bn option; no  commands  will  be
+                 or  P\bPO\bOS\bSI\bIX\bX.   This  implies the -\b-n\bn option; no commands will be
                  executed.
        [\b[-\b-+\b+]\b]O\bO [\b[_\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\bn]\b]
-                 _\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\b is  one  of  the  shell options accepted by the
-                 s\bsh\bho\bop\bpt\bt  builtin  (see  S\bSH\bHE\bEL\bLL\bL  B\bBU\bUI\bIL\bLT\bTI\bIN\bN  C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS  below).    If
+                 _\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\bis one of the  shell  options  accepted  by  the
+                 s\bsh\bho\bop\bpt\bt   builtin  (see  S\bSH\bHE\bEL\bLL\bL  B\bBU\bUI\bIL\bLT\bTI\bIN\bN  C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS  below).   If
                  _\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\bn is present, -\b-O\bO sets the value of that option; +\b+O\bO
-                 unsets it.  If _\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\bn is not supplied,  the  names  and
-                 values  of the shell options accepted by s\bsh\bho\bop\bpt\bt are printed on
-                 the standard output.  If the invocation  option  is  +\b+O\bO,  the
+                 unsets  it.   If  _\bs_\bh_\bo_\bp_\bt_\b__\bo_\bp_\bt_\bi_\bo_\bn is not supplied, the names and
+                 values of the shell options accepted by s\bsh\bho\bop\bpt\bt are printed  on
+                 the  standard  output.   If  the invocation option is +\b+O\bO, the
                  output is displayed in a format that may be reused as input.
-       -\b--\b-        A  -\b--\b-  signals the end of options and disables further option
-                 processing.  Any arguments after the -\b--\b- are treated as  file-
+       -\b--\b-        A -\b--\b- signals the end of options and disables  further  option
+                 processing.   Any arguments after the -\b--\b- are treated as file-
                  names and arguments.  An argument of -\b- is equivalent to -\b--\b-.
 
-       B\bBa\bas\bsh\b also  interprets  a  number  of  multi-character  options.  These
-       options must appear on the command  line  before  the  single-character
+       B\bBa\bas\bsh\balso  interprets  a  number  of  multi-character  options.   These
+       options  must  appear  on  the command line before the single-character
        options to be recognized.
 
        -\b--\b-d\bde\beb\bbu\bug\bgg\bge\ber\br
               Arrange for the debugger profile to be executed before the shell
-              starts.  Turns on extended debugging mode (see  the  description
+              starts.   Turns  on extended debugging mode (see the description
               of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option to the s\bsh\bho\bop\bpt\bt builtin below).
        -\b--\b-d\bdu\bum\bmp\bp-\b-p\bpo\bo-\b-s\bst\btr\bri\bin\bng\bgs\bs
-              Equivalent  to -\b-D\bD, but the output is in the GNU _\bg_\be_\bt_\bt_\be_\bx_\bt p\bpo\bo (por-
+              Equivalent to -\b-D\bD, but the output is in the GNU _\bg_\be_\bt_\bt_\be_\bx_\bt p\bpo\b (por-
               table object) file format.
        -\b--\b-d\bdu\bum\bmp\bp-\b-s\bst\btr\bri\bin\bng\bgs\bs
               Equivalent to -\b-D\bD.
-       -\b--\b-h\bhe\bel\blp\bp Display a usage message on standard  output  and  exit  success-
+       -\b--\b-h\bhe\bel\blp\bp Display  a  usage  message  on standard output and exit success-
               fully.
        -\b--\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be _\bf_\bi_\bl_\be
        -\b--\b-r\brc\bcf\bfi\bil\ble\be _\bf_\bi_\bl_\be
               Execute commands from _\bf_\bi_\bl_\be instead of the standard personal ini-
-              tialization file _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc if  the  shell  is  interactive  (see
+              tialization  file  _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc  if  the  shell is interactive (see
               I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN below).
 
        -\b--\b-l\blo\bog\bgi\bin\bn
               Equivalent to -\b-l\bl.
 
        -\b--\b-n\bno\boe\bed\bdi\bit\bti\bin\bng\bg
-              Do  not  use the GNU r\bre\bea\bad\bdl\bli\bin\bne\be library to read command lines when
+              Do not use the GNU r\bre\bea\bad\bdl\bli\bin\bne\be library to read command  lines  when
               the shell is interactive.
 
        -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be
-              Do not read either the system-wide startup file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\b or
-              any   of  the  personal  initialization  files  _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bp_\br_\bo_\bf_\bi_\bl_\be,
-              _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bi_\bn, or _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be.   By  default,  b\bba\bas\bsh\bh  reads  these
-              files  when  it  is  invoked  as  a  login shell (see I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
+              Do  not read either the system-wide startup file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be or
+              any  of  the  personal  initialization  files   _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bp_\br_\bo_\bf_\bi_\bl_\be,
+              _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bi_\bn,  or  _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be.   By  default,  b\bba\bas\bsh\bh reads these
+              files when it is  invoked  as  a  login  shell  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
               below).
 
        -\b--\b-n\bno\bor\brc\bc Do  not  read  and  execute  the  personal  initialization  file
-              _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\b if  the  shell  is interactive.  This option is on by
+              _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bif the shell is interactive.  This  option  is  on  by
               default if the shell is invoked as s\bsh\bh.
 
        -\b--\b-p\bpo\bos\bsi\bix\bx
-              Change the behavior of b\bba\bas\bsh\bh where the default operation  differs
+              Change  the behavior of b\bba\bas\bsh\bh where the default operation differs
               from the POSIX standard to match the standard (_\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be).  See
-              S\bSE\bEE\bA\bAL\bLS\bSO\bO below for a reference to a document  that  details  how
+              S\bSE\bEE\b A\bAL\bLS\bSO\bO  below  for a reference to a document that details how
               posix mode affects bash's behavior.
 
        -\b--\b-r\bre\bes\bst\btr\bri\bic\bct\bte\bed\bd
@@ -111,115 +112,115 @@ O\bOP\bPT\bTI\bIO\bON\bNS\bS
               Equivalent to -\b-v\bv.
 
        -\b--\b-v\bve\ber\brs\bsi\bio\bon\bn
-              Show  version information for this instance of b\bba\bas\bsh\bh on the stan-
+              Show version information for this instance of b\bba\bas\bsh\bh on the  stan-
               dard output and exit successfully.
 
 A\bAR\bRG\bGU\bUM\bME\bEN\bNT\bTS\bS
        If arguments remain after option processing, and neither the -\b-c\bc nor the
-       -\b-s\b option  has  been supplied, the first argument is assumed to be the
-       name of a file containing shell commands.  If b\bba\bas\bsh\bh is invoked  in  this
-       fashion,  $\b$0\b0 is set to the name of the file, and the positional parame-
-       ters are set to the remaining arguments.  B\bBa\bas\bsh\bh reads and executes  com-
-       mands  from this file, then exits.  B\bBa\bas\bsh\bh's exit status is the exit sta-
-       tus 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
+       -\b-s\boption has been supplied, the first argument is assumed  to  be  the
+       name  of  a file containing shell commands.  If b\bba\bas\bsh\bh is invoked in this
+       fashion, $\b$0\b0 is set to the name of the file, and the positional  parame-
+       ters  are set to the remaining arguments.  B\bBa\bas\bsh\bh reads and executes com-
+       mands from this file, then exits.  B\bBa\bas\bsh\bh's exit status is the exit  sta-
+       tus  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 P\bPA\bAT\bTH\bH for the script.
 
 I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
-       A  _\bl_\bo_\bg_\bi_\bn _\bs_\bh_\be_\bl_\bl is one whose first character of argument zero is a -\b-, or
+       A _\bl_\bo_\bg_\bi_\bn _\bs_\bh_\be_\bl_\bl is one whose first character of argument zero is a -\b-,  or
        one started with the -\b--\b-l\blo\bog\bgi\bin\bn option.
 
-       An _\bi_\bn_\bt_\be_\br_\ba_\bc_\bt_\bi_\bv_\be  shell  is  one  started  without  non-option  arguments
+       An  _\bi_\bn_\bt_\be_\br_\ba_\bc_\bt_\bi_\bv_\be  shell  is  one  started  without  non-option arguments
        (unless -\b-s\bs is specified) and without the -\b-c\bc option whose standard input
        and error are both connected to terminals (as determined by _\bi_\bs_\ba_\bt_\bt_\by(3)),
-       or  one  started  with  the -\b-i\bi option.  P\bPS\bS1\b1 is set and $\b$-\b- includes i\bi if
-       b\bba\bas\bsh\bis interactive, allowing a shell script or a startup file to  test
+       or one started with the -\b-i\bi option.  P\bPS\bS1\b1 is set and  $\b$-\b-  includes  i\b if
+       b\bba\bas\bsh\b is interactive, allowing a shell script or a startup file to test
        this state.
 
-       The  following paragraphs describe how b\bba\bas\bsh\bh executes its startup files.
-       If any of the files exist but cannot be read, b\bba\bas\bsh\bh  reports  an  error.
-       Tildes  are expanded in filenames as described below under T\bTi\bil\bld\bde\be E\bEx\bxp\bpa\ban\bn-\b-
+       The following paragraphs describe how b\bba\bas\bsh\bh executes its startup  files.
+       If  any  of  the files exist but cannot be read, b\bba\bas\bsh\bh reports an error.
+       Tildes are expanded in filenames as described below under T\bTi\bil\bld\bde\b E\bEx\bxp\bpa\ban\bn-\b-
        s\bsi\bio\bon\bn in the E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN section.
 
-       When b\bba\bas\bsh\bh is invoked as an interactive login shell, or as a  non-inter-
-       active  shell with the -\b--\b-l\blo\bog\bgi\bin\bn option, it first reads and executes com-
-       mands from the file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be, if that file exists.   After  reading
+       When  b\bba\bas\bsh\bh is invoked as an interactive login shell, or as a non-inter-
+       active shell with the -\b--\b-l\blo\bog\bgi\bin\bn option, it first reads and executes  com-
+       mands  from  the file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be, if that file exists.  After reading
        that file, it looks for _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bp_\br_\bo_\bf_\bi_\bl_\be, _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bi_\bn, and _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be,
-       in that order, and reads and executes commands from the first one  that
-       exists  and  is  readable.  The -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be option may be used when the
+       in  that order, and reads and executes commands from the first one that
+       exists and is readable.  The -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be option may be  used  when  the
        shell is started to inhibit this behavior.
 
        When an interactive login shell exits, or a non-interactive login shell
-       executes  the  e\bex\bxi\bit\bt  builtin  command, b\bba\bas\bsh\bh reads and executes commands
+       executes the e\bex\bxi\bit\bt builtin command, b\bba\bas\bsh\bh  reads  and  executes  commands
        from the file _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bo_\bu_\bt, if it exists.
 
-       When an interactive shell that is not a login shell  is  started,  b\bba\bas\bsh\bh
-       reads  and executes commands from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that file exists.  This
-       may be inhibited by using the -\b--\b-n\bno\bor\brc\bc option.  The -\b--\b-r\brc\bcf\bfi\bil\ble\be _\bf_\bi_\bl_\b option
-       will  force  b\bba\bas\bsh\bh  to  read  and  execute commands from _\bf_\bi_\bl_\be instead of
+       When  an  interactive  shell that is not a login shell is started, b\bba\bas\bsh\bh
+       reads and executes commands from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that file exists.   This
+       may  be inhibited by using the -\b--\b-n\bno\bor\brc\bc option.  The -\b--\b-r\brc\bcf\bfi\bil\ble\be _\bf_\bi_\bl_\be option
+       will force b\bba\bas\bsh\bh to read and  execute  commands  from  _\bf_\bi_\bl_\be  instead  of
        _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc.
 
-       When b\bba\bas\bsh\bh is started non-interactively, to  run  a  shell  script,  for
+       When  b\bba\bas\bsh\bh  is  started  non-interactively,  to run a shell script, for
        example, it looks for the variable B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV 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\bBa\bas\bsh\bh behaves as if the following com-
+       its  value if it appears there, and uses the expanded value as the name
+       of a file to read and execute.  B\bBa\bas\bsh\bh behaves as if the  following  com-
        mand were executed:
               if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
-       but the value of the P\bPA\bAT\bTH\bH variable is not used to search for the  file-
+       but  the value of the P\bPA\bAT\bTH\bH variable is not used to search for the file-
        name.
 
-       If  b\bba\bas\bsh\bh  is  invoked  with  the name s\bsh\bh, it tries to mimic the startup
-       behavior of historical versions of s\bsh\bh as  closely  as  possible,  while
-       conforming  to the POSIX standard as well.  When invoked as an interac-
-       tive login shell, or a non-interactive shell with the  -\b--\b-l\blo\bog\bgi\bin\b option,
-       it  first  attempts  to read and execute commands from _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be and
-       _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be, in that order.  The  -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be  option  may  be  used  to
-       inhibit  this  behavior.  When invoked as an interactive shell with the
-       name s\bsh\bh, b\bba\bas\bsh\bh looks for the variable E\bEN\bNV\bV, expands its value  if  it  is
-       defined,  and uses the expanded value as the name of a file to read and
+       If b\bba\bas\bsh\bh is invoked with the name s\bsh\bh, it  tries  to  mimic  the  startup
+       behavior  of  historical  versions  of s\bsh\bh as closely as possible, while
+       conforming to the POSIX standard as well.  When invoked as an  interac-
+       tive  login  shell, or a non-interactive shell with the -\b--\b-l\blo\bog\bgi\bin\bn option,
+       it first attempts to read and execute commands  from  _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\b and
+       _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be,  in  that  order.   The  -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be  option may be used to
+       inhibit this behavior.  When invoked as an interactive shell  with  the
+       name  s\bsh\bh,  b\bba\bas\bsh\bh  looks for the variable E\bEN\bNV\bV, 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 s\bsh\bh does not attempt to read and exe-
-       cute  commands from any other startup files, the -\b--\b-r\brc\bcf\bfi\bil\ble\be option has no
-       effect.  A non-interactive shell invoked with  the  name  s\bsh\bh  does  not
-       attempt  to  read  any  other  startup files.  When invoked as s\bsh\bh, b\bba\bas\bsh\bh
+       cute commands from any other startup files, the -\b--\b-r\brc\bcf\bfi\bil\ble\be option has  no
+       effect.   A  non-interactive  shell  invoked  with the name s\bsh\bh does not
+       attempt to read any other startup files.   When  invoked  as  s\bsh\bh,  b\bba\bas\bsh\bh
        enters _\bp_\bo_\bs_\bi_\bx mode after the startup files are read.
 
-       When b\bba\bas\bsh\bh is started in _\bp_\bo_\bs_\bi_\bx mode, as with the  -\b--\b-p\bpo\bos\bsi\bix\bx  command  line
+       When  b\bba\bas\bsh\bh  is  started in _\bp_\bo_\bs_\bi_\bx mode, as with the -\b--\b-p\bpo\bos\bsi\bix\bx command line
        option, it follows the POSIX standard for startup files.  In this mode,
-       interactive shells expand the E\bEN\bNV\bV variable and commands  are  read  and
-       executed  from  the  file  whose  name is the expanded value.  No other
+       interactive  shells  expand  the E\bEN\bNV\bV variable and commands are read and
+       executed from the file whose name is  the  expanded  value.   No  other
        startup files are read.
 
        B\bBa\bas\bsh\bh attempts to determine when it is being run with its standard input
        connected to a network connection, as when executed by the remote shell
-       daemon, usually _\br_\bs_\bh_\bd, or the secure shell daemon _\bs_\bs_\bh_\bd.  If b\bba\bas\bsh\b deter-
-       mines  it  is being run in this fashion, it reads and executes commands
-       from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that file exists and is readable.  It  will  not  do
-       this  if  invoked as s\bsh\bh.  The -\b--\b-n\bno\bor\brc\bc option may be used to inhibit this
-       behavior, and the -\b--\b-r\brc\bcf\bfi\bil\ble\be option may be used to force another file  to
-       be  read,  but  neither  _\br_\bs_\bh_\bd  nor _\bs_\bs_\bh_\bd generally invoke the shell with
+       daemon,  usually _\br_\bs_\bh_\bd, or the secure shell daemon _\bs_\bs_\bh_\bd.  If b\bba\bas\bsh\bh deter-
+       mines it is being run in this fashion, it reads and  executes  commands
+       from  _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc,  if  that file exists and is readable.  It will not do
+       this if invoked as s\bsh\bh.  The -\b--\b-n\bno\bor\brc\bc option may be used to  inhibit  this
+       behavior,  and the -\b--\b-r\brc\bcf\bfi\bil\ble\be option may be used to force another file to
+       be read, but neither _\br_\bs_\bh_\bd nor _\bs_\bs_\bh_\bd  generally  invoke  the  shell  with
        those options or allow them to be specified.
 
        If the shell is started with the effective user (group) id not equal to
        the real user (group) id, and the -\b-p\bp option is not supplied, no startup
        files are read, shell functions are not inherited from the environment,
-       the  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS,  B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS,  C\bCD\bDP\bPA\bAT\bTH\bH,  and  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE variables, if they
-       appear in the environment, are ignored, and the effective  user  id  is
-       set  to  the real user id.  If the -\b-p\bp option is supplied at invocation,
-       the startup behavior is the same, but the  effective  user  id  is  not
+       the S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS, B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS, C\bCD\bDP\bPA\bAT\bTH\bH,  and  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE  variables,  if  they
+       appear  in  the  environment, are ignored, and the effective user id is
+       set to the real user id.  If the -\b-p\bp option is supplied  at  invocation,
+       the  startup  behavior  is  the  same, but the effective user id is not
        reset.
 
 D\bDE\bEF\bFI\bIN\bNI\bIT\bTI\bIO\bON\bNS\bS
-       The  following  definitions  are used throughout the rest of this docu-
+       The following definitions are used throughout the rest  of  this  docu-
        ment.
        b\bbl\bla\ban\bnk\bk  A space or tab.
-       w\bwo\bor\brd\bd   A sequence of characters considered as  a  single  unit  by  the
+       w\bwo\bor\brd\bd   A  sequence  of  characters  considered  as a single unit by the
               shell.  Also known as a t\bto\bok\bke\ben\bn.
-       n\bna\bam\bme\be   A  _\bw_\bo_\br_\bd  consisting  only  of alphanumeric characters and under-
-              scores, and beginning with an alphabetic character or an  under-
+       n\bna\bam\bme\be   A _\bw_\bo_\br_\bd consisting only of  alphanumeric  characters  and  under-
+              scores,  and beginning with an alphabetic character or an under-
               score.  Also referred to as an i\bid\bde\ben\bnt\bti\bif\bfi\bie\ber\br.
        m\bme\bet\bta\bac\bch\bha\bar\bra\bac\bct\bte\ber\br
-              A  character  that,  when unquoted, separates words.  One of the
+              A character that, when unquoted, separates words.   One  of  the
               following:
               |\b|  &\b& ;\b; (\b( )\b) <\b< >\b> s\bsp\bpa\bac\bce\be t\bta\bab\bb n\bne\bew\bwl\bli\bin\bne\be
        c\bco\bon\bnt\btr\bro\bol\bl o\bop\bpe\ber\bra\bat\bto\bor\br
@@ -230,63 +231,66 @@ D\bDE\bEF\bFI\bIN\bNI\bIT\bTI\bIO\bON\bNS\bS
 R\bRE\bES\bSE\bER\bRV\bVE\bED\bD W\bWO\bOR\bRD\bDS\bS
        _\bR_\be_\bs_\be_\br_\bv_\be_\bd _\bw_\bo_\br_\bd_\bs 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 S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR below) or the third
+       first word of a simple command (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR below) or  the  third
        word of a c\bca\bas\bse\be or f\bfo\bor\br command:
 
-       !\bc\bca\bas\bse\be  c\bco\bop\bpr\bro\boc\bc  d\bdo\bo d\bdo\bon\bne\be e\bel\bli\bif\bf e\bel\bls\bse\be e\bes\bsa\bac\bc f\bfi\bi f\bfo\bor\br  f\bfu\bun\bnc\bct\bti\bio\bon\bn  i\bif\bf  i\bin\b s\bse\bel\ble\bec\bct\bt
+       !\b c\bca\bas\bse\be   c\bco\bop\bpr\bro\boc\bc   d\bdo\bo  d\bdo\bon\bne\be e\bel\bli\bif\bf e\bel\bls\bse\be e\bes\bsa\bac\bc f\bfi\bi f\bfo\bor\br f\bfu\bun\bnc\bct\bti\bio\bon\bn i\bif\bf i\bin\bn s\bse\bel\ble\bec\bct\bt
        t\bth\bhe\ben\bn u\bun\bnt\bti\bil\bl w\bwh\bhi\bil\ble\be {\b{ }\b} t\bti\bim\bme\be [\b[[\b[ ]\b]]\b]
 
 S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
    S\bSi\bim\bmp\bpl\ble\be C\bCo\bom\bmm\bma\ban\bnd\bds\bs
-       A  _\bs_\bi_\bm_\bp_\bl_\be  _\bc_\bo_\bm_\bm_\ba_\bn_\bd  is a sequence of optional variable assignments fol-
-       lowed by b\bbl\bla\ban\bnk\bk-separated words and redirections, and  terminated  by  a
+       A _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd is a sequence of optional  variable  assignments  fol-
+       lowed  by  b\bbl\bla\ban\bnk\bk-separated  words and redirections, and terminated by a
        _\bc_\bo_\bn_\bt_\br_\bo_\bl _\bo_\bp_\be_\br_\ba_\bt_\bo_\br.  The first word specifies the command to be executed,
-       and is passed as argument zero.  The  remaining  words  are  passed  as
+       and  is  passed  as  argument  zero.  The remaining words are passed as
        arguments to the invoked command.
 
-       The  return  value  of a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd is its exit status, or 128+_\bn if
+       The return value of a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd is its exit status,  or  128+_\b if
        the command is terminated by signal _\bn.
 
    P\bPi\bip\bpe\bel\bli\bin\bne\bes\bs
-       A _\bp_\bi_\bp_\be_\bl_\bi_\bn_\be is a sequence of one or more commands separated  by  one  of
+       A  _\bp_\bi_\bp_\be_\bl_\bi_\bn_\be  is  a sequence of one or more commands separated by one of
        the control operators |\b| or |\b|&\b&.  The format for a pipeline is:
 
               [t\bti\bim\bme\be [-\b-p\bp]] [ ! ] _\bc_\bo_\bm_\bm_\ba_\bn_\bd [ [|\b|||\b|&\b&] _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2 ... ]
 
-       The  standard output of _\bc_\bo_\bm_\bm_\ba_\bn_\bd is connected via a pipe to the standard
-       input of _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2.  This connection is performed  before  any  redirec-
+       The standard output of _\bc_\bo_\bm_\bm_\ba_\bn_\bd is connected via a pipe to the  standard
+       input  of  _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2.   This connection is performed before any redirec-
        tions specified by the command (see R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN below).  If |\b|&\b& is used,
-       _\bc_\bo_\bm_\bm_\ba_\bn_\bd's standard error, in addition to its standard output,  is  con-
-       nected  to  _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2's standard input through the pipe; it is shorthand
-       for 2\b2>\b>&\b&1\b1 |\b|.  This implicit redirection of the  standard  error  to  the
-       standard  output  is  performed after any redirections specified by the
+       _\bc_\bo_\bm_\bm_\ba_\bn_\bd's  standard  error, in addition to its standard output, is con-
+       nected to _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2's standard input through the pipe; it  is  shorthand
+       for  2\b2>\b>&\b&1\b1  |\b|.   This  implicit redirection of the standard error to the
+       standard output is performed after any redirections  specified  by  the
        command.
 
        The return status of a pipeline is the exit status of the last command,
-       unless  the  p\bpi\bip\bpe\bef\bfa\bai\bil\bl  option  is enabled.  If p\bpi\bip\bpe\bef\bfa\bai\bil\bl is enabled, the
-       pipeline's return status is the value of the last  (rightmost)  command
-       to  exit  with a non-zero status, or zero if all commands exit success-
+       unless the p\bpi\bip\bpe\bef\bfa\bai\bil\bl option is enabled.  If  p\bpi\bip\bpe\bef\bfa\bai\bil\bl  is  enabled,  the
+       pipeline's  return  status is the value of the last (rightmost) command
+       to exit with a non-zero status, or zero if all commands  exit  success-
        fully.  If the reserved word !\b!  precedes a pipeline, the exit status of
-       that  pipeline  is the logical negation of the exit status as described
-       above.  The shell waits for all commands in the pipeline  to  terminate
+       that pipeline is the logical negation of the exit status  as  described
+       above.   The  shell waits for all commands in the pipeline to terminate
        before returning a value.
 
-       If  the  t\bti\bim\bme\be 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 -\b-p\bp option changes the output format to that
-       specified by POSIX.  When the shell is in _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, it does not  rec-
-       ognize  t\bti\bim\bme\be  as  a  reserved word if the next token begins with a `-'.
-       The T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable may be set to a format  string  that  specifies
-       how  the timing information should be displayed; see the description of
+       If the t\bti\bim\bme\be 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 -\b-p\bp option changes the output format  to  that
+       specified  by POSIX.  When the shell is in _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, it does not rec-
+       ognize t\bti\bim\bme\be as a reserved word if the next token  begins  with  a  `-'.
+       The  T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT  variable  may be set to a format string that specifies
+       how the timing information should be displayed; see the description  of
        T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT under S\bSh\bhe\bel\bll\bl V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs below.
 
        When the shell is in _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, t\bti\bim\bme\be may be followed by a newline.  In
-       this  case,  the shell displays the total user and system time consumed
-       by the shell and its children.  The T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable may be used  to
+       this case, the shell displays the total user and system  time  consumed
+       by  the shell and its children.  The T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable may be used to
        specify the format of the time information.
 
-       Each  command in a pipeline is executed as a separate process (i.e., in
-       a subshell).
+       Each command in a pipeline is executed as a separate process (i.e.,  in
+       a  subshell).  See C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT for a description of a
+       subshell environment.  If the l\bla\bas\bst\btp\bpi\bip\bpe\be  option  is  enabled  using  the
+       s\bsh\bho\bop\bpt\bt builtin (see the description of s\bsh\bho\bop\bpt\bt below), the last element of
+       a pipeline may be run by the shell process.
 
    L\bLi\bis\bst\bts\bs
        A _\bl_\bi_\bs_\bt is a sequence of one or more pipelines separated by one  of  the
@@ -301,107 +305,108 @@ S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
 
        If a command is terminated by the control operator &\b&,  the  shell  exe-
        cutes  the command in the _\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd 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.
-
-       AND  and  OR  lists are sequences of one or more pipelines separated by
-       the &\b&&\b& and |\b||\b| control operators, respectively.  AND and  OR  lists  are
+       wait for the command to finish, and the return status is 0.  These  are
+       referred  to  as  _\ba_\bs_\by_\bn_\bc_\bh_\br_\bo_\bn_\bo_\bu_\bs commands.  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 exe-
+       cuted.
+
+       AND and OR lists are sequences of one or more  pipelines  separated  by
+       the  &\b&&\b&  and  |\b||\b| control operators, respectively.  AND and OR lists are
        executed with left associativity.  An AND list has the form
 
               _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 &\b&&\b& _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2
 
-       _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b is  executed if, and only if, _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 returns an exit status
-       of zero.
+       _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bis executed if, and only if, _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 returns an  exit  status
+       of zero (success).
 
        An OR list has the form
 
               _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 |\b||\b| _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b2
 
-       _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bis executed if and only if _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 returns  a  non-zero  exit
-       status.   The  return  status of AND and OR lists is the exit status of
+       _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b is executed if, and only if, _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b1 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.
 
    C\bCo\bom\bmp\bpo\bou\bun\bnd\bd C\bCo\bom\bmm\bma\ban\bnd\bds\bs
-       A _\bc_\bo_\bm_\bp_\bo_\bu_\bn_\bd _\bc_\bo_\bm_\bm_\ba_\bn_\bd is one of the following.  In most cases a _\bl_\bi_\bs_\bt in  a
-       command's  description may be separated from the rest of the command by
-       one or more newlines, and may be followed by a newline in  place  of  a
+       A  _\bc_\bo_\bm_\bp_\bo_\bu_\bn_\bd _\bc_\bo_\bm_\bm_\ba_\bn_\bd is one of the following.  In most cases a _\bl_\bi_\bs_\bt in a
+       command's description may be separated from the rest of the command  by
+       one  or  more  newlines, and may be followed by a newline in place of a
        semicolon.
 
-       (_\bl_\bi_\bs_\bt) _\bl_\bi_\bs_\b is  executed in a subshell environment (see C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bU-\b-
-              T\bTI\bIO\bON\bE\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT below).  Variable assignments and builtin  com-
-              mands  that  affect  the  shell's  environment  do not remain in
-              effect after the command completes.  The return  status  is  the
+       (_\bl_\bi_\bs_\bt) _\bl_\bi_\bs_\bis executed in a subshell environment (see  C\bCO\bOM\bMM\bMA\bAN\bND\b E\bEX\bXE\bEC\bCU\bU-\b-
+              T\bTI\bIO\bON\b E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT below).  Variable assignments and builtin com-
+              mands that affect the  shell's  environment  do  not  remain  in
+              effect  after  the  command completes.  The return status is the
               exit status of _\bl_\bi_\bs_\bt.
 
        { _\bl_\bi_\bs_\bt; }
-              _\bl_\bi_\bs_\b is simply executed in the current shell environment.  _\bl_\bi_\bs_\bt
-              must be terminated with a newline or semicolon.  This  is  known
-              as  a  _\bg_\br_\bo_\bu_\bp  _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   The return status is the exit status of
-              _\bl_\bi_\bs_\bt.  Note that unlike the metacharacters (\b( and )\b), {\b{ and }\b are
+              _\bl_\bi_\bs_\bis simply executed in the current shell environment.   _\bl_\bi_\bs_\bt
+              must  be  terminated with a newline or semicolon.  This is known
+              as a _\bg_\br_\bo_\bu_\bp _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  The return status is  the  exit  status  of
+              _\bl_\bi_\bs_\bt.   Note that unlike the metacharacters (\b( and )\b), {\b{ and }\b} are
               _\br_\be_\bs_\be_\br_\bv_\be_\bd _\bw_\bo_\br_\bd_\bs 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  _\bl_\bi_\bs_\bt  by  whitespace or another shell
+              to  be  recognized.   Since they do not cause a word break, they
+              must be separated from  _\bl_\bi_\bs_\bt  by  whitespace  or  another  shell
               metacharacter.
 
        ((_\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn))
-              The _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn is evaluated according  to  the  rules  described
-              below  under A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN.  If the value of the expres-
-              sion is non-zero, the return status is 0; otherwise  the  return
+              The  _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn  is  evaluated  according to the rules described
+              below under A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN.  If the value of the  expres-
+              sion  is  non-zero, the return status is 0; otherwise the return
               status is 1.  This is exactly equivalent to l\ble\bet\bt "\b"_\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn"\b".
 
        [\b[[\b[ _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn ]\b]]\b]
-              Return  a  status  of  0 or 1 depending on the evaluation of the
-              conditional expression _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn.  Expressions are composed  of
-              the  primaries  described  below  under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
-              Word splitting and pathname expansion are not performed  on  the
-              words  between  the  [\b[[\b[  and  ]\b]]\b]; tilde expansion, parameter and
-              variable expansion, arithmetic expansion, command  substitution,
-              process  substitution,  and quote removal are performed.  Condi-
+              Return a status of 0 or 1 depending on  the  evaluation  of  the
+              conditional  expression _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn.  Expressions are composed of
+              the primaries described  below  under  C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\b E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
+              Word  splitting  and pathname expansion are not performed on the
+              words between the [\b[[\b[ and  ]\b]]\b];  tilde  expansion,  parameter  and
+              variable  expansion, arithmetic expansion, command substitution,
+              process substitution, and quote removal are  performed.   Condi-
               tional operators such as -\b-f\bf must be unquoted to be recognized as
               primaries.
 
-              When  used with [\b[[\b[, the <\b< and >\b> operators sort lexicographically
+              When used with [\b[[\b[, the <\b< and >\b> operators sort  lexicographically
               using the current locale.
 
-              When the =\b==\b= and !\b!=\b= operators are used, the string to  the  right
+              When  the  =\b==\b= and !\b!=\b= operators are used, the string to the right
               of the operator is considered a pattern and matched according to
               the rules described below under P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg, as if the e\bex\bxt\bt-\b-
               g\bgl\blo\bob\bb shell option were enabled.  The =\b= operator is equivalent to
-              =\b==\b=.  If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell option is enabled,  the  match  is
-              performed  without  regard to the case of alphabetic characters.
-              The return value is 0 if the string matches  (=\b==\b=)  or  does  not
-              match  (!\b!=\b=)  the pattern, and 1 otherwise.  Any part of the pat-
-              tern may be quoted to force the quoted portion to be matched  as
+              =\b==\b=.   If  the  n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell option is enabled, the match is
+              performed without regard to the case of  alphabetic  characters.
+              The  return  value  is  0 if the string matches (=\b==\b=) or does not
+              match (!\b!=\b=) the pattern, and 1 otherwise.  Any part of  the  pat-
+              tern  may be quoted to force the quoted portion to be matched as
               a string.
 
-              An  additional  binary operator, =\b=~\b~, is available, with the same
-              precedence as =\b==\b= and !\b!=\b=.  When it is used,  the  string  to  the
-              right  of the operator is considered an extended regular expres-
-              sion and matched accordingly (as in _\br_\be_\bg_\be_\bx(3)).  The return value
-              is 0 if the string matches the pattern, and 1 otherwise.  If the
-              regular expression is syntactically incorrect,  the  conditional
-              expression's return value is 2.  If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell option
-              is enabled, the match is performed without regard to the case of
-              alphabetic characters.  Any part of the pattern may be quoted to
-              force the quoted portion to be matched  as  a  string.   Bracket
-              expressions  in  regular  expressions must be treated carefully,
-              since normal quoting  characters  lose  their  meanings  between
-              brackets.  If the pattern is stored in a shell variable, quoting
-              the variable expansion forces the entire pattern to  be  matched
-              as a string.  Substrings matched by parenthesized subexpressions
-              within the regular expression are saved in  the  array  variable
-              B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH.   The  element of B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH with index 0 is the
-              portion of the string matching the  entire  regular  expression.
-              The  element  of B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH with index _\bn is the portion of the
-              string matching the _\bnth parenthesized subexpression.
-
-              Expressions may  be  combined  using  the  following  operators,
+              An additional binary operator, =\b=~\b~, is available, with  the  same
+              precedence  as  =\b==\b=  and  !\b!=\b=.  When it is used, the string to the
+              right of the operator is considered  a  POSIX  extended  regular
+              expression and matched accordingly (as in _\br_\be_\bg_\be_\bx(3)).  The return
+              value is 0 if the string matches the pattern, and  1  otherwise.
+              If the regular expression is syntactically incorrect, the condi-
+              tional expression's return value is 2.  If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell
+              option  is enabled, the match is performed without regard to the
+              case of alphabetic characters.  Any part of the pattern  may  be
+              quoted  to  force  the quoted portion to be matched as a string.
+              Bracket expressions in regular expressions must be treated care-
+              fully,  since  normal  quoting  characters  lose  their meanings
+              between brackets.  If the pattern is stored in a shell variable,
+              quoting  the  variable expansion forces the entire pattern to be
+              matched as a string.  Substrings matched by parenthesized subex-
+              pressions  within  the regular expression are saved in the array
+              variable B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH.  The element of B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH with index 0
+              is the portion of the string matching the entire regular expres-
+              sion.  The element of B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH with index _\bn is  the  portion
+              of the string matching the _\bnth parenthesized subexpression.
+
+              Expressions  may  be  combined  using  the  following operators,
               listed in decreasing order of precedence:
 
               (\b( _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn )\b)
-                     Returns  the  value  of  _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn.  This may be used to
+                     Returns the value of _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn.  This  may  be  used  to
                      override the normal precedence of operators.
               !\b! _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
                      True if _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn is false.
@@ -411,110 +416,111 @@ S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
                      True if either _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b1 or _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b2 is true.
 
               The &\b&&\b& and |\b||\b| operators do not evaluate _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b2 if the value
-              of  _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b1  is  sufficient to determine the return value of
+              of _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b1 is sufficient to determine the  return  value  of
               the entire conditional expression.
 
        f\bfo\bor\br _\bn_\ba_\bm_\be [ [ i\bin\bn [ _\bw_\bo_\br_\bd _\b._\b._\b. ] ] ; ] d\bdo\bo _\bl_\bi_\bs_\bt ; d\bdo\bon\bne\be
               The list of words following i\bin\bn is expanded, generating a list of
               items.  The variable _\bn_\ba_\bm_\be is set to each element of this list in
-              turn, and _\bl_\bi_\bs_\bt is executed each time.  If the i\bin\bn _\bw_\bo_\br_\bd  is  omit-
-              ted,  the  f\bfo\bor\br  command  executes  _\bl_\bi_\bs_\bt once for each positional
+              turn,  and  _\bl_\bi_\bs_\bt is executed each time.  If the i\bin\bn _\bw_\bo_\br_\bd is omit-
+              ted, the f\bfo\bor\br command executes  _\bl_\bi_\bs_\bt  once  for  each  positional
               parameter that is set (see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS below).  The return status
-              is  the  exit  status of the last command that executes.  If the
+              is the exit status of the last command that  executes.   If  the
               expansion of the items following i\bin\bn results in an empty list, no
               commands are executed, and the return status is 0.
 
        f\bfo\bor\br (( _\be_\bx_\bp_\br_\b1 ; _\be_\bx_\bp_\br_\b2 ; _\be_\bx_\bp_\br_\b3 )) ; d\bdo\bo _\bl_\bi_\bs_\bt ; d\bdo\bon\bne\be
               First, the arithmetic expression _\be_\bx_\bp_\br_\b1 is evaluated according to
-              the rules described  below  under  A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC  E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN.   The
-              arithmetic  expression  _\be_\bx_\bp_\br_\b2 is then evaluated repeatedly until
-              it evaluates to zero.  Each time _\be_\bx_\bp_\br_\b2 evaluates to  a  non-zero
-              value,  _\bl_\bi_\bs_\bt  is executed and the arithmetic expression _\be_\bx_\bp_\br_\b3 is
-              evaluated.  If any expression is omitted, it behaves  as  if  it
+              the  rules  described  below  under  A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN.  The
+              arithmetic expression _\be_\bx_\bp_\br_\b2 is then evaluated  repeatedly  until
+              it  evaluates  to zero.  Each time _\be_\bx_\bp_\br_\b2 evaluates to a non-zero
+              value, _\bl_\bi_\bs_\bt is executed and the arithmetic expression  _\be_\bx_\bp_\br_\b 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 _\bl_\bi_\bs_\bt that is executed, or false if any of the expres-
               sions is invalid.
 
        s\bse\bel\ble\bec\bct\bt _\bn_\ba_\bm_\be [ i\bin\bn _\bw_\bo_\br_\bd ] ; d\bdo\bo _\bl_\bi_\bs_\bt ; d\bdo\bon\bne\be
               The list of words following i\bin\bn 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 i\bin\bn _\bw_\bo_\br_\bd is omitted,
-              the positional parameters are printed  (see  P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\b below).
-              The  P\bPS\bS3\b3 prompt is then displayed and a line read from the stan-
-              dard input.  If the line consists of a number  corresponding  to
-              one  of  the  displayed  words, then the value of _\bn_\ba_\bm_\be is set to
-              that word.  If the line is empty, the words and prompt are  dis-
+              items.   The  set  of  expanded words is printed on the standard
+              error, each preceded by a number.  If the i\bin\bn  _\bw_\bo_\br_\bd  is  omitted,
+              the  positional  parameters  are printed (see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS below).
+              The P\bPS\bS3\b3 prompt is then displayed and a line read from the  stan-
+              dard  input.   If the line consists of a number corresponding to
+              one of the displayed words, then the value of  _\bn_\ba_\bm_\be  is  set  to
+              that  word.  If the line is empty, the words and prompt are dis-
               played again.  If EOF is read, the command completes.  Any other
-              value read causes _\bn_\ba_\bm_\be to be set to  null.   The  line  read  is
-              saved  in  the  variable R\bRE\bEP\bPL\bLY\bY.  The _\bl_\bi_\bs_\bt is executed after each
+              value  read  causes  _\bn_\ba_\bm_\be  to  be set to null.  The line read is
+              saved in the variable R\bRE\bEP\bPL\bLY\bY.  The _\bl_\bi_\bs_\bt is  executed  after  each
               selection until a b\bbr\bre\bea\bak\bk command is executed.  The exit status of
-              s\bse\bel\ble\bec\bct\b is the exit status of the last command executed in _\bl_\bi_\bs_\bt,
+              s\bse\bel\ble\bec\bct\bis the exit status of the last command executed in  _\bl_\bi_\bs_\bt,
               or zero if no commands were executed.
 
        c\bca\bas\bse\be _\bw_\bo_\br_\bd i\bin\bn [ [(] _\bp_\ba_\bt_\bt_\be_\br_\bn [ |\b| _\bp_\ba_\bt_\bt_\be_\br_\bn ] ... ) _\bl_\bi_\bs_\bt ;; ] ... e\bes\bsa\bac\bc
               A c\bca\bas\bse\be command first expands _\bw_\bo_\br_\bd, and tries to match it against
-              each _\bp_\ba_\bt_\bt_\be_\br_\bn in turn, using the same matching rules as for path-
-              name expansion (see P\bPa\bat\bth\bhn\bna\bam\bme\be  E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn  below).   The  _\bw_\bo_\br_\bd  is
-              expanded  using  tilde  expansion, parameter and variable expan-
-              sion, arithmetic expansion, command substitution,  process  sub-
-              stitution  and quote removal.  Each _\bp_\ba_\bt_\bt_\be_\br_\bn examined is expanded
-              using tilde expansion, parameter and variable expansion,  arith-
-              metic expansion, command substitution, and process substitution.
-              If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell option is enabled, the  match  is  per-
-              formed  without  regard  to  the  case of alphabetic characters.
-              When a match is found, the corresponding _\bl_\bi_\bs_\bt is  executed.   If
-              the  ;\b;;\b;  operator  is  used, no subsequent matches are attempted
-              after the first pattern match.  Using ;\b;&\b& in place of  ;\b;;\b;  causes
-              execution to continue with the _\bl_\bi_\bs_\bt associated with the next set
-              of patterns.  Using ;\b;;\b;&\b& in place of ;\b;;\b; causes the shell to  test
-              the  next pattern list in the statement, if any, and execute any
-              associated _\bl_\bi_\bs_\bt on a successful match.  The exit status is  zero
-              if  no pattern matches.  Otherwise, it is the exit status of the
-              last command executed in _\bl_\bi_\bs_\bt.
+              each _\bp_\ba_\bt_\bt_\be_\br_\bn in turn, using the matching rules  described  under
+              P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg below.  The _\bw_\bo_\br_\bd is expanded using tilde expan-
+              sion, parameter and variable  expansion,  arithmetic  expansion,
+              command  substitution,  process  substitution and quote removal.
+              Each _\bp_\ba_\bt_\bt_\be_\br_\bn examined is expanded using tilde expansion, parame-
+              ter  and  variable expansion, arithmetic expansion, command sub-
+              stitution, and process substitution.  If the  n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh  shell
+              option  is enabled, the match is performed without regard to the
+              case of alphabetic characters.  When a match is found, the  cor-
+              responding  _\bl_\bi_\bs_\bt  is  executed.   If the ;\b;;\b; operator is used, no
+              subsequent matches are attempted after the first pattern  match.
+              Using  ;\b;&\b&  in  place of ;\b;;\b; causes execution to continue with the
+              _\bl_\bi_\bs_\bt associated with the next set of  patterns.   Using  ;\b;;\b;&\b&  in
+              place  of  ;\b;;\b;  causes the shell to test the next pattern list in
+              the statement, if any, and execute any associated _\bl_\bi_\bs_\bt on a suc-
+              cessful  match.   The exit status is zero if no pattern matches.
+              Otherwise, it is the exit status of the last command executed in
+              _\bl_\bi_\bs_\bt.
 
        i\bif\bf _\bl_\bi_\bs_\bt; t\bth\bhe\ben\bn _\bl_\bi_\bs_\bt; [ e\bel\bli\bif\bf _\bl_\bi_\bs_\bt; t\bth\bhe\ben\bn _\bl_\bi_\bs_\bt; ] ... [ e\bel\bls\bse\be _\bl_\bi_\bs_\bt; ] f\bfi\bi
-              The i\bif\bf _\bl_\bi_\bs_\bt is executed.  If its exit status is zero,  the  t\bth\bhe\ben\bn
-              _\bl_\bi_\bs_\b is  executed.   Otherwise,  each  e\bel\bli\bif\bf _\bl_\bi_\bs_\bt is executed in
-              turn, and if its exit status is  zero,  the  corresponding  t\bth\bhe\ben\bn
+              The  i\bif\bf  _\bl_\bi_\bs_\bt is executed.  If its exit status is zero, the t\bth\bhe\ben\bn
+              _\bl_\bi_\bs_\bis executed.  Otherwise, each  e\bel\bli\bif\bf  _\bl_\bi_\bs_\bt  is  executed  in
+              turn,  and  if  its  exit status is zero, the corresponding t\bth\bhe\ben\bn
               _\bl_\bi_\bs_\bt is executed and the command completes.  Otherwise, the e\bel\bls\bse\be
-              _\bl_\bi_\bs_\bis executed, if present.  The exit status is the exit  sta-
+              _\bl_\bi_\bs_\b is executed, if present.  The exit status is the exit sta-
               tus of the last command executed, or zero if no condition tested
               true.
 
        w\bwh\bhi\bil\ble\be _\bl_\bi_\bs_\bt_\b-_\b1; d\bdo\bo _\bl_\bi_\bs_\bt_\b-_\b2; d\bdo\bon\bne\be
        u\bun\bnt\bti\bil\bl _\bl_\bi_\bs_\bt_\b-_\b1; d\bdo\bo _\bl_\bi_\bs_\bt_\b-_\b2; d\bdo\bon\bne\be
-              The w\bwh\bhi\bil\ble\be command continuously executes the list _\bl_\bi_\bs_\bt_\b-_\b2 as  long
+              The  w\bwh\bhi\bil\ble\be command continuously executes the list _\bl_\bi_\bs_\bt_\b-_\b2 as long
               as the last command in the list _\bl_\bi_\bs_\bt_\b-_\b1 returns an exit status of
-              zero.  The u\bun\bnt\bti\bil\bl command is  identical  to  the  w\bwh\bhi\bil\ble\b command,
-              except  that  the test is negated: _\bl_\bi_\bs_\bt_\b-_\b2 is executed as long as
-              the last command in _\bl_\bi_\bs_\bt_\b-_\b1 returns a non-zero exit status.   The
-              exit  status  of the w\bwh\bhi\bil\ble\be and u\bun\bnt\bti\bil\bl commands is the exit status
+              zero.   The  u\bun\bnt\bti\bil\bl  command  is  identical to the w\bwh\bhi\bil\ble\be command,
+              except that the test is negated: _\bl_\bi_\bs_\bt_\b-_\b2 is executed as  long  as
+              the  last command in _\bl_\bi_\bs_\bt_\b-_\b1 returns a non-zero exit status.  The
+              exit status of the w\bwh\bhi\bil\ble\be and u\bun\bnt\bti\bil\bl commands is the  exit  status
               of the last command executed in _\bl_\bi_\bs_\bt_\b-_\b2, or zero if none was exe-
               cuted.
 
    C\bCo\bop\bpr\bro\boc\bce\bes\bss\bse\bes\bs
        A _\bc_\bo_\bp_\br_\bo_\bc_\be_\bs_\bs is a shell command preceded by the c\bco\bop\bpr\bro\boc\bc reserved word.  A
-       coprocess is executed asynchronously in a subshell, as if  the  command
-       had  been  terminated  with the &\b& control operator, with a two-way pipe
+       coprocess  is  executed asynchronously in a subshell, as if the command
+       had been terminated with the &\b& control operator, with  a  two-way  pipe
        established between the executing shell and the coprocess.
 
        The format for a coprocess is:
 
               c\bco\bop\bpr\bro\boc\bc [_\bN_\bA_\bM_\bE] _\bc_\bo_\bm_\bm_\ba_\bn_\bd [_\br_\be_\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn_\bs]
 
-       This creates a coprocess named _\bN_\bA_\bM_\bE.  If  _\bN_\bA_\bM_\bE  is  not  supplied,  the
+       This  creates  a  coprocess  named  _\bN_\bA_\bM_\bE.  If _\bN_\bA_\bM_\bE is not supplied, the
        default name is C\bCO\bOP\bPR\bRO\bOC\bC.  _\bN_\bA_\bM_\bE must not be supplied if _\bc_\bo_\bm_\bm_\ba_\bn_\bd is a _\bs_\bi_\bm_\b-
        _\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd (see above); otherwise, it is interpreted as the first word
-       of  the simple command.  When the coprocess is executed, the shell cre-
-       ates an array variable (see A\bAr\brr\bra\bay\bys\bs below) named _\bN_\bA_\bM_\bE in the context  of
+       of the simple command.  When the coprocess is executed, the shell  cre-
+       ates  an array variable (see A\bAr\brr\bra\bay\bys\bs below) named _\bN_\bA_\bM_\bE in the context of
        the executing shell.  The standard output of _\bc_\bo_\bm_\bm_\ba_\bn_\bd is connected via a
-       pipe to a file  descriptor  in  the  executing  shell,  and  that  file
-       descriptor  is  assigned  to _\bN_\bA_\bM_\bE[0].  The standard input of _\bc_\bo_\bm_\bm_\ba_\bn_\bd is
-       connected via a pipe to a file descriptor in the executing  shell,  and
-       that  file descriptor is assigned to _\bN_\bA_\bM_\bE[1].  This pipe is established
-       before any redirections  specified  by  the  command  (see  R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
-       below).   The  file  descriptors  can be utilized as arguments to shell
-       commands and redirections using standard  word  expansions.   The  file
+       pipe  to  a  file  descriptor  in  the  executing  shell, and that file
+       descriptor is assigned to _\bN_\bA_\bM_\bE[0].  The standard input  of  _\bc_\bo_\bm_\bm_\ba_\bn_\bd  is
+       connected  via  a pipe to a file descriptor in the executing shell, and
+       that file descriptor is assigned to _\bN_\bA_\bM_\bE[1].  This pipe is  established
+       before  any  redirections  specified  by  the  command (see R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
+       below).  The file descriptors can be utilized  as  arguments  to  shell
+       commands  and  redirections using standard word expansions.  Other than
+       those created to execute command and process  substitutions,  the  file
        descriptors  are  not  available  in  subshells.  The process ID of the
        shell spawned to execute the coprocess is available as the value of the
        variable  _\bN_\bA_\bM_\bE_PID.   The  w\bwa\bai\bit\bt builtin command may be used to wait for
@@ -617,7 +623,7 @@ Q\bQU\bUO\bOT\bTI\bIN\bNG\bG
               \\b\"\b"     double quote
               \\b\?\b?     question mark
               \\b\_\bn_\bn_\bn   the  eight-bit  character  whose value is the octal value
-                     _\bn_\bn_\bn (one to three digits)
+                     _\bn_\bn_\bn (one to three octal digits)
               \\b\x\bx_\bH_\bH   the eight-bit character whose value  is  the  hexadecimal
                      value _\bH_\bH (one or two hex digits)
               \\b\u\bu_\bH_\bH_\bH_\bH the  Unicode (ISO/IEC 10646) character whose value is the
@@ -730,76 +736,86 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               is the first character of the value of the I\bIF\bFS\bS variable.  If I\bIF\bFS\bS
               is unset, the parameters are separated by  spaces.   If  I\bIF\bFS\bS  is
               null, the parameters are joined without intervening separators.
-       @\b@      Expands  to  the positional parameters, starting from one.  When
+       @\b@      Expands  to  the  positional  parameters, starting from one.  In
+              contexts where word splitting is performed,  this  expands  each
+              positional  parameter  to  a separate word; if not within double
+              quotes, these words are subject to word splitting.  In  contexts
+              where  word splitting is not performed, this expands to a single
+              word with each positional parameter separated by a space.   When
               the  expansion  occurs  within  double  quotes,  each  parameter
               expands to a separate word.  That is, "$\b$@\b@" is equivalent to "$\b$1\b1"
-              "$\b$2\b2" ...  If the double-quoted expansion occurs within  a  word,
-              the  expansion  of the first parameter is joined with the begin-
-              ning part of the original word, and the expansion  of  the  last
-              parameter  is  joined  with  the last part of the original word.
-              When there are no positional parameters, "$\b$@\b@" and $\b$@\b@  expand  to
+              "$\b$2\b2"  ...   If the double-quoted expansion occurs within a word,
+              the expansion of the first parameter is joined with  the  begin-
+              ning  part  of  the original word, and the expansion of the last
+              parameter is joined with the last part  of  the  original  word.
+              When  there  are no positional parameters, "$\b$@\b@" and $\b$@\b@ expand to
               nothing (i.e., they are removed).
        #\b#      Expands to the number of positional parameters in decimal.
-       ?\b?      Expands  to  the exit status of the most recently executed fore-
+       ?\b?      Expands to the exit status of the most recently  executed  fore-
               ground pipeline.
-       -\b-      Expands to the current option flags as  specified  upon  invoca-
-              tion,  by  the  s\bse\bet\bt  builtin  command, or those set by the shell
+       -\b-      Expands  to  the  current option flags as specified upon invoca-
+              tion, by the s\bse\bet\bt builtin command, or  those  set  by  the  shell
               itself (such as the -\b-i\bi option).
-       $\b$      Expands to the process ID of the shell.  In a  ()  subshell,  it
-              expands  to  the  process  ID of the current shell, not the sub-
+       $\b$      Expands  to  the  process ID of the shell.  In a () subshell, it
+              expands to the process ID of the current  shell,  not  the  sub-
               shell.
-       !\b!      Expands to the process ID of the job most recently  placed  into
-              the  background,  whether executed as an asynchronous command or
+       !\b!      Expands  to  the process ID of the job most recently placed into
+              the background, whether executed as an asynchronous  command  or
               using the b\bbg\bg builtin (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL below).
-       0\b0      Expands to the name of the shell or shell script.  This  is  set
+       0\b0      Expands  to  the name of the shell or shell script.  This is set
               at shell initialization.  If b\bba\bas\bsh\bh is invoked with a file of com-
-              mands, $\b$0\b0 is set to the name of that file.  If b\bba\bas\bsh\bh  is  started
-              with  the  -\b-c\bc option, then $\b$0\b0 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 b\bba\bas\bsh\bh, as given by argument
+              mands,  $\b$0\b0  is set to the name of that file.  If b\bba\bas\bsh\bh is started
+              with the -\b-c\bc option, then $\b$0\b0 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 b\bba\bas\bsh\bh, as  given  by  argument
               zero.
-       _\b_      At shell startup, set to the absolute pathname  used  to  invoke
-              the  shell or shell script being executed as passed in the envi-
-              ronment or argument list.  Subsequently,  expands  to  the  last
-              argument  to the previous command, after expansion.  Also set to
-              the full pathname used  to  invoke  each  command  executed  and
-              placed in the environment exported to that command.  When check-
-              ing mail, this parameter holds the name of the  mail  file  cur-
-              rently being checked.
+       _\b_      At  shell  startup,  set to the absolute pathname used to invoke
+              the shell or shell script being executed as passed in the  envi-
+              ronment  or  argument  list.   Subsequently, expands to the last
+              argument to the previous simple command executed  in  the  fore-
+              ground,  after expansion.  Also set to the full pathname used to
+              invoke each command  executed  and  placed  in  the  environment
+              exported  to  that  command.  When checking mail, this parameter
+              holds the name of the mail file currently being checked.
 
    S\bSh\bhe\bel\bll\bl V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
        The following variables are set by the shell:
 
-       B\bBA\bAS\bSH\bH   Expands  to  the  full  filename used to invoke this instance of
+       B\bBA\bAS\bSH\bH   Expands to the full filename used to  invoke  this  instance  of
               b\bba\bas\bsh\bh.
        B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS
-              A colon-separated list of enabled shell options.  Each  word  in
-              the  list  is  a  valid  argument for the -\b-s\bs option to the s\bsh\bho\bop\bpt\bt
+              A  colon-separated  list of enabled shell options.  Each word in
+              the list is a valid argument for the  -\b-s\bs  option  to  the  s\bsh\bho\bop\bpt\bt
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).  The options
-              appearing  in  B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS  are  those reported as _\bo_\bn by s\bsh\bho\bop\bpt\bt.  If
-              this variable is in the environment when b\bba\bas\bsh\bh  starts  up,  each
-              shell  option  in  the  list  will be enabled before reading any
+              appearing in B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS are those reported as  _\bo_\bn  by  s\bsh\bho\bop\bpt\bt.   If
+              this  variable  is  in the environment when b\bba\bas\bsh\bh starts up, each
+              shell option in the list will  be  enabled  before  reading  any
               startup files.  This variable is read-only.
        B\bBA\bAS\bSH\bHP\bPI\bID\bD
-              Expands to the process ID of the  current  b\bba\bas\bsh\bh  process.   This
-              differs  from  $\b$$\b$ under certain circumstances, such as subshells
-              that do not require b\bba\bas\bsh\bh to be re-initialized.
+              Expands  to  the  process  ID of the current b\bba\bas\bsh\bh process.  This
+              differs from $\b$$\b$ under certain circumstances, such  as  subshells
+              that  do  not require b\bba\bas\bsh\bh to be re-initialized.  Assignments to
+              B\bBA\bAS\bSH\bHP\bPI\bID\bD have no effect.  If B\bBA\bAS\bSH\bHP\bPI\bID\bD is unset, it loses its  spe-
+              cial properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_A\bAL\bLI\bIA\bAS\bSE\bES\bS
-              An associative array variable whose members  correspond  to  the
-              internal  list  of  aliases  as maintained by the a\bal\bli\bia\bas\bs builtin.
-              Elements added to this array appear in the alias list;  however,
-              unsetting  array elements currently does not cause aliases to be
+              An  associative  array  variable whose members correspond to the
+              internal list of aliases as maintained  by  the  a\bal\bli\bia\bas\b builtin.
+              Elements  added to this array appear in the alias list; however,
+              unsetting array elements currently does not cause aliases to  be
               removed from the alias list.  If B\bBA\bAS\bSH\bH_\b_A\bAL\bLI\bIA\bAS\bSE\bES\bS is unset, it loses
               its special properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC
-              An  array  variable whose values are the number of parameters in
+              An array variable whose values are the number of  parameters  in
               each frame of the current b\bba\bas\bsh\bh execution call stack.  The number
-              of  parameters  to  the  current  subroutine  (shell function or
-              script executed with .\b. or s\bso\bou\bur\brc\bce\be) is at the top  of  the  stack.
-              When  a  subroutine is executed, the number of parameters passed
+              of parameters to  the  current  subroutine  (shell  function  or
+              script  executed  with  .\b. or s\bso\bou\bur\brc\bce\be) is at the top of the stack.
+              When a subroutine is executed, the number of  parameters  passed
               is pushed onto B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC.  The shell sets B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC only when in
-              extended  debugging  mode  (see  the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg
-              option to the s\bsh\bho\bop\bpt\bt builtin below)
+              extended debugging mode (see the  description  of  the  e\bex\bxt\btd\bde\beb\bbu\bug\bg
+              option  to the s\bsh\bho\bop\bpt\bt builtin below).  Setting e\bex\bxt\btd\bde\beb\bbu\bug\bg after the
+              shell has started to execute a script, or referencing this vari-
+              able  when  e\bex\bxt\btd\bde\beb\bbu\bug\bg is not set, may result in inconsistent val-
+              ues.
        B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV
               An array variable containing all of the parameters in  the  cur-
               rent b\bba\bas\bsh\bh execution call stack.  The final parameter of the last
@@ -808,7 +824,15 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               cuted, the parameters supplied are pushed onto  B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV.   The
               shell  sets  B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV only when in extended debugging mode (see
               the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg  option  to  the  s\bsh\bho\bop\bpt\bt  builtin
-              below)
+              below).  Setting e\bex\bxt\btd\bde\beb\bbu\bug\bg after the shell has started to execute
+              a script, or referencing this variable when e\bex\bxt\btd\bde\beb\bbu\bug\bg is not set,
+              may result in inconsistent values.
+       B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0
+              When  referenced, this variable expands to the name of the shell
+              or shell script (identical to $\b$0\b0; see the description of special
+              parameter  0  above).  Assignment to B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 causes the value
+              assigned to also be assigned to $\b$0\b0.  If B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 is unset,  it
+              loses its special properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_C\bCM\bMD\bDS\bS
               An  associative  array  variable whose members correspond to the
               internal hash table  of  commands  as  maintained  by  the  h\bha\bas\bsh\bh
@@ -918,71 +942,82 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               able  will  not  change  the  current directory.  If D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK is
               unset, it loses its special properties, even  if  it  is  subse-
               quently reset.
-       E\bEU\bUI\bID\bD   Expands  to  the effective user ID of the current user, initial-
+       E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE
+              Each time this parameter is referenced, it expands to the number
+              of seconds since the Unix Epoch  (see  _\bt_\bi_\bm_\be(3))  as  a  floating
+              point  value  with  micro-second  granularity.   Assignments  to
+              E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE are ignored.  If E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE is unset, it  loses
+              its special properties, even if it is subsequently reset.
+       E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS
+              Each time this parameter is referenced, it expands to the number
+              of seconds since the Unix Epoch (see _\bt_\bi_\bm_\be(3)).   Assignments  to
+              E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS  are  ignored.   If E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses
+              its special properties, even if it is subsequently reset.
+       E\bEU\bUI\bID\bD   Expands to the effective user ID of the current  user,  initial-
               ized at shell startup.  This variable is readonly.
        F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE
-              An array variable containing the names of  all  shell  functions
+              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 bot-
-              tom-most  element  (the  one  with the highest index) is "main".
-              This variable exists only when a shell  function  is  executing.
-              Assignments  to  F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE have no effect.  If F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE is unset,
-              it loses its special properties,  even  if  it  is  subsequently
+              tom-most element (the one with the  highest  index)  is  "main".
+              This  variable  exists  only when a shell function is executing.
+              Assignments to F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE have no effect.  If F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  is  unset,
+              it  loses  its  special  properties,  even if it is subsequently
               reset.
 
-              This  variable  can  be  used  with B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO and B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE.
-              Each  element  of  F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  has   corresponding   elements   in
-              B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\b and  B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE  to  describe the call stack.  For
-              instance,   $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b}   was   called   from    the    file
-              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\b at  line  number  $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b}.  The
+              This variable can be  used  with  B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO  and  B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE.
+              Each   element   of   F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  has  corresponding  elements  in
+              B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\band B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE to describe  the  call  stack.   For
+              instance,    $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b}    was   called   from   the   file
+              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\bat  line  number  $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b}.   The
               c\bca\bal\bll\ble\ber\br builtin displays the current call stack using this infor-
               mation.
-       G\bGR\bRO\bOU\bUP\bPS\bS An  array  variable  containing  the list of groups of which the
+       G\bGR\bRO\bOU\bUP\bPS\bS An array variable containing the list of  groups  of  which  the
               current user is a member.  Assignments to G\bGR\bRO\bOU\bUP\bPS\bS have no effect.
-              If  G\bGR\bRO\bOU\bUP\bPS\bS is unset, it loses its special properties, even if it
+              If G\bGR\bRO\bOU\bUP\bPS\bS is unset, it loses its special properties, even if  it
               is subsequently reset.
        H\bHI\bIS\bST\bTC\bCM\bMD\bD
               The history number, or index in the history list, of the current
-              command.   If H\bHI\bIS\bST\bTC\bCM\bMD\bD is unset, it loses its special properties,
+              command.  If H\bHI\bIS\bST\bTC\bCM\bMD\bD is unset, it loses its special  properties,
               even if it is subsequently reset.
        H\bHO\bOS\bST\bTN\bNA\bAM\bME\bE
               Automatically set to the name of the current host.
        H\bHO\bOS\bST\bTT\bTY\bYP\bPE\bE
-              Automatically set to a string that uniquely describes  the  type
-              of  machine  on which b\bba\bas\bsh\bh is executing.  The default is system-
+              Automatically  set  to a string that uniquely describes the type
+              of machine on which b\bba\bas\bsh\bh is executing.  The default  is  system-
               dependent.
-       L\bLI\bIN\bNE\bEN\bNO\bO 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
+       L\bLI\bIN\bNE\bEN\bNO\bO 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 L\bLI\bIN\bNE\bEN\bNO\bO is unset, it loses its special proper-
               ties, even if it is subsequently reset.
        M\bMA\bAC\bCH\bHT\bTY\bYP\bPE\bE
-              Automatically  set  to  a string that fully describes the system
-              type on which b\bba\bas\bsh\bh is executing, in the  standard  GNU  _\bc_\bp_\bu_\b-_\bc_\bo_\bm_\b-
+              Automatically set to a string that fully  describes  the  system
+              type  on  which  b\bba\bas\bsh\bh is executing, in the standard GNU _\bc_\bp_\bu_\b-_\bc_\bo_\bm_\b-
               _\bp_\ba_\bn_\by_\b-_\bs_\by_\bs_\bt_\be_\bm format.  The default is system-dependent.
        M\bMA\bAP\bPF\bFI\bIL\bLE\bE
-              An  array  variable  (see A\bAr\brr\bra\bay\bys\bs below) created to hold the text
+              An array variable (see A\bAr\brr\bra\bay\bys\bs below) created to  hold  the  text
               read by the m\bma\bap\bpf\bfi\bil\ble\be builtin when no variable name is supplied.
        O\bOL\bLD\bDP\bPW\bWD\bD The previous working directory as set by the c\bcd\bd command.
-       O\bOP\bPT\bTA\bAR\bRG\bG The value of the last option argument processed by  the  g\bge\bet\bto\bop\bpt\bts\bs
+       O\bOP\bPT\bTA\bAR\bRG\bG The  value  of the last option argument processed by the g\bge\bet\bto\bop\bpt\bts\bs
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       O\bOP\bPT\bTI\bIN\bND\bD The  index  of  the next argument to be processed by the g\bge\bet\bto\bop\bpt\bts\bs
+       O\bOP\bPT\bTI\bIN\bND\bD The index of the next argument to be processed  by  the  g\bge\bet\bto\bop\bpt\bts\bs
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       O\bOS\bST\bTY\bYP\bPE\bE Automatically set to a string that describes the operating  sys-
-              tem  on  which  b\bba\bas\bsh\bh is executing.  The default is system-depen-
+       O\bOS\bST\bTY\bYP\bPE\bE Automatically  set to a string that describes the operating sys-
+              tem on which b\bba\bas\bsh\bh is executing.  The  default  is  system-depen-
               dent.
        P\bPI\bIP\bPE\bES\bST\bTA\bAT\bTU\bUS\bS
-              An array variable (see A\bAr\brr\bra\bay\bys\bs below) containing a list  of  exit
-              status  values  from the processes in the most-recently-executed
+              An  array  variable (see A\bAr\brr\bra\bay\bys\bs 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).
-       P\bPP\bPI\bID\bD   The process ID of the shell's parent.  This  variable  is  read-
+       P\bPP\bPI\bID\bD   The  process  ID  of the shell's parent.  This variable is read-
               only.
        P\bPW\bWD\bD    The current working directory as set by the c\bcd\bd command.
        R\bRA\bAN\bND\bDO\bOM\bM 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 R\bRA\bAN\bND\bDO\bOM\bM.  If R\bRA\bAN\bND\bDO\bOM\bM is unset,
-              it loses its special properties,  even  if  it  is  subsequently
+              it  loses  its  special  properties,  even if it is subsequently
               reset.
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE
               The contents of the r\bre\bea\bad\bdl\bli\bin\bne\be line buffer, for use with "bind -x"
@@ -990,197 +1025,202 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT
               The position of the insertion point in the r\bre\bea\bad\bdl\bli\bin\bne\be line buffer,
               for use with "bind -x" (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       R\bRE\bEP\bPL\bLY\bY  Set  to  the line of input read by the r\bre\bea\bad\bd builtin command when
+       R\bRE\bEP\bPL\bLY\bY  Set to the line of input read by the r\bre\bea\bad\bd builtin  command  when
               no arguments are supplied.
        S\bSE\bEC\bCO\bON\bND\bDS\bS
-              Each time this parameter is referenced, the  number  of  seconds
-              since  shell  invocation is returned.  If a value is assigned to
-              S\bSE\bEC\bCO\bON\bND\bDS\bS, the value returned upon subsequent  references  is  the
-              number  of seconds since the assignment plus the value assigned.
+              Each  time  this  parameter is referenced, the number of seconds
+              since shell invocation is returned.  If a value is  assigned  to
+              S\bSE\bEC\bCO\bON\bND\bDS\bS,  the  value  returned upon subsequent references is the
+              number of seconds since the assignment plus the value  assigned.
               If S\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses its special properties, even if it
               is subsequently reset.
        S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
-              A  colon-separated  list of enabled shell options.  Each word in
-              the list is a valid argument  for  the  -\b-o\bo  option  to  the  s\bse\bet\bt
+              A colon-separated list of enabled shell options.  Each  word  in
+              the  list  is  a  valid  argument  for  the -\b-o\bo option to the s\bse\bet\bt
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).  The options
-              appearing in S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS are those reported as _\bo_\bn by s\bse\bet\bt  -\b-o\bo.   If
-              this  variable  is  in the environment when b\bba\bas\bsh\bh starts up, each
-              shell option in the list will  be  enabled  before  reading  any
+              appearing  in  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS are those reported as _\bo_\bn by s\bse\bet\bt -\b-o\bo.  If
+              this variable is in the environment when b\bba\bas\bsh\bh  starts  up,  each
+              shell  option  in  the  list  will be enabled before reading any
               startup files.  This variable is read-only.
        S\bSH\bHL\bLV\bVL\bL  Incremented by one each time an instance of b\bba\bas\bsh\bh is started.
        U\bUI\bID\bD    Expands to the user ID of the current user, initialized at shell
               startup.  This variable is readonly.
 
-       The following variables are used by the shell.   In  some  cases,  b\bba\bas\bsh\bh
+       The  following  variables  are  used by the shell.  In some cases, b\bba\bas\bsh\bh
        assigns a default value to a variable; these cases are noted below.
 
        B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT
-              The  value  is used to set the shell's compatibility level.  See
-              the description of the s\bsh\bho\bop\bpt\bt builtin below under  S\bSH\bHE\bEL\bLL\b B\bBU\bUI\bIL\bLT\bTI\bIN\bN
-              C\bCO\bOM\bMM\bMA\bAN\bND\bDS\b for  a description of the various compatibility levels
-              and their effects.  The value may be  a  decimal  number  (e.g.,
-              4.2)  or an integer (e.g., 42) corresponding to the desired com-
-              patibility level.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is unset or set to  the  empty
-              string,  the  compatibility  level is set to the default for the
-              current version.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is set to a value that  is  not
+              The value is used to set the shell's compatibility  level.   See
+              the  description  of the s\bsh\bho\bop\bpt\bt builtin below under S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN
+              C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bfor a description of the various  compatibility  levels
+              and  their  effects.   The  value may be a decimal number (e.g.,
+              4.2) or an integer (e.g., 42) corresponding to the desired  com-
+              patibility  level.   If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is unset or set to the empty
+              string, the compatibility level is set to the  default  for  the
+              current  version.   If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is set to a value that is not
               one of the valid compatibility levels, the shell prints an error
-              message and sets the compatibility level to the default for  the
-              current  version.   The valid compatibility levels correspond to
-              the  compatibility  options  accepted  by  the   s\bsh\bho\bop\bpt\b  builtin
+              message  and sets the compatibility level to the default for the
+              current version.  The valid compatibility levels  correspond  to
+              the   compatibility   options  accepted  by  the  s\bsh\bho\bop\bpt\bt  builtin
               described below (for example, c\bco\bom\bmp\bpa\bat\bt4\b42\b2 means that 4.2 and 42 are
               valid values).  The current version is also a valid value.
        B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV
-              If this parameter is set when b\bba\bas\bsh\bh is executing a shell  script,
-              its  value  is  interpreted as a filename containing commands to
+              If  this parameter is set when b\bba\bas\bsh\bh is executing a shell script,
+              its value is interpreted as a filename  containing  commands  to
               initialize the shell, as in _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc.  The value of B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV is
-              subjected  to  parameter  expansion,  command  substitution, and
-              arithmetic expansion before being  interpreted  as  a  filename.
+              subjected to  parameter  expansion,  command  substitution,  and
+              arithmetic  expansion  before  being  interpreted as a filename.
               P\bPA\bAT\bTH\bH is not used to search for the resultant filename.
        B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD
-              If  set  to an integer corresponding to a valid file descriptor,
-              b\bba\bas\bsh\bwill write the  trace  output  generated  when  _\bs_\be_\bt  _\b-_\b is
-              enabled  to that file descriptor.  The file descriptor is closed
-              when B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD is unset or assigned a new value.   Unsetting
-              B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\b or assigning it the empty string causes the trace
-              output to be sent to the  standard  error.   Note  that  setting
+              If set to an integer corresponding to a valid  file  descriptor,
+              b\bba\bas\bsh\b will  write  the  trace  output  generated  when _\bs_\be_\bt _\b-_\bx is
+              enabled to that file descriptor.  The file descriptor is  closed
+              when  B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD is unset or assigned a new value.  Unsetting
+              B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bor assigning it the empty string causes the  trace
+              output  to  be  sent  to  the standard error.  Note that setting
               B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD to 2 (the standard error file descriptor) and then
               unsetting it will result in the standard error being closed.
-       C\bCD\bDP\bPA\bAT\bTH\bH The search path for the c\bcd\bd command.  This is  a  colon-separated
-              list  of  directories  in  which the shell looks for destination
-              directories specified by the c\bcd\bd  command.   A  sample  value  is
+       C\bCD\bDP\bPA\bAT\bTH\bH The  search  path for the c\bcd\bd command.  This is a colon-separated
+              list of directories in which the  shell  looks  for  destination
+              directories  specified  by  the  c\bcd\bd  command.  A sample value is
               ".:~:/usr".
        C\bCH\bHI\bIL\bLD\bD_\b_M\bMA\bAX\bX
-              Set  the  number  of exited child status values for the shell to
-              remember.  Bash will not allow this value to be decreased  below
-              a  POSIX-mandated  minimum,  and  there is a maximum value (cur-
-              rently 8192) that this may not exceed.   The  minimum  value  is
+              Set the number of exited child status values for  the  shell  to
+              remember.   Bash will not allow this value to be decreased below
+              a POSIX-mandated minimum, and there is  a  maximum  value  (cur-
+              rently  8192)  that  this  may not exceed.  The minimum value is
               system-dependent.
        C\bCO\bOL\bLU\bUM\bMN\bNS\bS
-              Used  by  the  s\bse\bel\ble\bec\bct\bt compound command to determine the terminal
-              width when printing selection lists.  Automatically set  if  the
-              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\b option  is enabled or in an interactive shell upon
+              Used by the s\bse\bel\ble\bec\bct\bt compound command to  determine  the  terminal
+              width  when  printing selection lists.  Automatically set if the
+              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\boption is enabled or in an interactive  shell  upon
               receipt of a S\bSI\bIG\bGW\bWI\bIN\bNC\bCH\bH.
        C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
               An array variable from which b\bba\bas\bsh\bh reads the possible completions
-              generated  by  a shell function invoked by the programmable com-
-              pletion facility  (see  P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be  C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn  below).   Each
+              generated by a shell function invoked by the  programmable  com-
+              pletion  facility  (see  P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be  C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn  below).  Each
               array element contains one possible completion.
-       E\bEM\bMA\bAC\bCS\bS  If  b\bba\bas\bsh\bh  finds  this variable in the environment when the shell
-              starts with value "t", it assumes that the shell is  running  in
+       E\bEM\bMA\bAC\bCS\bS  If b\bba\bas\bsh\bh finds this variable in the environment  when  the  shell
+              starts  with  value "t", it assumes that the shell is running in
               an Emacs shell buffer and disables line editing.
-       E\bEN\bNV\bV    Similar  to  B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV;  used  when the shell is invoked in POSIX
-              mode.
+       E\bEN\bNV\bV    Similar to B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV; used when the shell  is  invoked  in  _\bp_\bo_\bs_\bi_\bx
+              _\bm_\bo_\bd_\be.
        E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE
-              A colon-separated list of shell patterns (see P\bPa\bat\btt\bte\ber\brn\b M\bMa\bat\btc\bch\bhi\bin\bng\bg)
-              defining  the  list of filenames to be ignored by command search
-              using P\bPA\bAT\bTH\bH.  Files whose full pathnames match one of these  pat-
-              terns  are  not  considered executable files for the purposes of
+              A  colon-separated list of shell patterns (see P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg)
+              defining the list of filenames to be ignored by  command  search
+              using  P\bPA\bAT\bTH\bH.  Files whose full pathnames match one of these pat-
+              terns are not considered executable files for  the  purposes  of
               completion and command execution via P\bPA\bAT\bTH\bH lookup.  This does not
               affect the behavior of the [\b[, t\bte\bes\bst\bt, and [\b[[\b[ commands.  Full path-
-              names in the command hash table are not subject  to  E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE.
-              Use  this  variable to ignore shared library files that have the
-              executable bit set, but are not executable files.   The  pattern
+              names  in  the command hash table are not subject to E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE.
+              Use this variable to ignore shared library files that  have  the
+              executable  bit  set, but are not executable files.  The pattern
               matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell option.
        F\bFC\bCE\bED\bDI\bIT\bT The default editor for the f\bfc\bc builtin command.
        F\bFI\bIG\bGN\bNO\bOR\bRE\bE
-              A  colon-separated  list  of  suffixes to ignore when performing
+              A colon-separated list of suffixes  to  ignore  when  performing
               filename completion (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE below).  A filename whose suf-
-              fix  matches  one of the entries in F\bFI\bIG\bGN\bNO\bOR\bRE\bE is excluded from the
+              fix matches one of the entries in F\bFI\bIG\bGN\bNO\bOR\bRE\bE is excluded  from  the
               list of matched filenames.  A sample value is ".o:~".
        F\bFU\bUN\bNC\bCN\bNE\bES\bST\bT
-              If set to a numeric value greater  than  0,  defines  a  maximum
-              function  nesting  level.  Function invocations that exceed this
+              If  set  to  a  numeric  value greater than 0, defines a maximum
+              function nesting level.  Function invocations that  exceed  this
               nesting level will cause the current command to abort.
        G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE
-              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
-              G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE, it is removed from the list of matches.
+              A  colon-separated  list  of  patterns  defining the set of file
+              names to be ignored by  pathname  expansion.   If  a  file  name
+              matched  by a pathname expansion pattern also matches one of the
+              patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE, it is removed from the list of matches.
        H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL
-              A  colon-separated  list  of values controlling how commands are
-              saved on the history list.   If  the  list  of  values  includes
-              _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be,  lines  which  begin with a s\bsp\bpa\bac\bce\be character are not
-              saved in the history list.  A value of _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs  causes  lines
+              A colon-separated list of values controlling  how  commands  are
+              saved  on  the  history  list.   If  the list of values includes
+              _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be, lines which begin with a s\bsp\bpa\bac\bce\be  character  are  not
+              saved  in  the history list.  A value of _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs causes lines
               matching the previous history entry to not be saved.  A value of
               _\bi_\bg_\bn_\bo_\br_\be_\bb_\bo_\bt_\bh is shorthand for _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be and _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs.  A value
               of _\be_\br_\ba_\bs_\be_\bd_\bu_\bp_\bs 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 H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL is
-              unset, or does not include a valid value, all lines read by  the
+              to  be  removed from the history list before that line is saved.
+              Any value not in the above list is ignored.  If  H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\b 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 H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.  The second and subsequent lines of a  multi-line
-              compound  command  are  not tested, and are added to the history
+              of  H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.  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 H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL.
        H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE
               The name of the file in which command history is saved (see H\bHI\bIS\bS-\b-
-              T\bTO\bOR\bRY\b below).   The default value is _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bh_\bi_\bs_\bt_\bo_\br_\by.  If unset,
+              T\bTO\bOR\bRY\bbelow).  The default value is _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bh_\bi_\bs_\bt_\bo_\br_\by.   If  unset,
               the command history is not saved when a shell exits.
        H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bES\bSI\bIZ\bZE\bE
               The maximum number of lines contained in the history file.  When
-              this  variable  is  assigned  a value, the history file is trun-
-              cated, if necessary, to contain no  more  than  that  number  of
-              lines  by removing the oldest entries.  The history file is also
-              truncated to this size after writing it when a shell exits.   If
-              the  value  is  0,  the  history file is truncated to zero size.
-              Non-numeric values and numeric values  less  than  zero  inhibit
-              truncation.   The  shell  sets the default value to the value of
+              this variable is assigned a value, the  history  file  is  trun-
+              cated,  if  necessary,  to  contain  no more than that number of
+              lines by removing the oldest entries.  The history file is  also
+              truncated  to this size after writing it when a shell exits.  If
+              the value is 0, the history file  is  truncated  to  zero  size.
+              Non-numeric  values  and  numeric  values less than zero inhibit
+              truncation.  The shell sets the default value to  the  value  of
               H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE after reading any startup files.
        H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE
-              A colon-separated list of patterns used to decide which  command
-              lines  should  be  saved  on  the history list.  Each pattern is
-              anchored at the beginning of the line and must  match  the  com-
-              plete  line  (no  implicit  `*\b*'  is  appended).  Each pattern is
-              tested against the line after the checks specified  by  H\bHI\bIS\bST\bTC\bCO\bON\bN-\b-
-              T\bTR\bRO\bOL\b are  applied.   In  addition  to  the normal shell pattern
+              A  colon-separated list of patterns used to decide which command
+              lines should be saved on the  history  list.   Each  pattern  is
+              anchored  at  the  beginning of the line and must match the com-
+              plete line (no implicit  `*\b*'  is  appended).   Each  pattern  is
+              tested  against  the line after the checks specified by H\bHI\bIS\bST\bTC\bCO\bON\bN-\b-
+              T\bTR\bRO\bOL\bare applied.  In  addition  to  the  normal  shell  pattern
               matching characters, `&\b&' matches the previous history line.  `&\b&'
-              may  be  escaped  using  a  backslash;  the backslash is removed
+              may be escaped using  a  backslash;  the  backslash  is  removed
               before attempting a match.  The second and subsequent lines of a
               multi-line compound command are not tested, and are added to the
-              history regardless of the  value  of  H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.   The  pattern
+              history  regardless  of  the  value  of H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.  The pattern
               matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell option.
        H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE
-              The  number  of commands to remember in the command history (see
-              H\bHI\bIS\bST\bTO\bOR\bRY\bbelow).  If the value is 0, commands are  not  saved  in
+              The number of commands to remember in the command  history  (see
+              H\bHI\bIS\bST\bTO\bOR\bRY\b below).   If  the value is 0, commands are not saved in
               the history list.  Numeric values less than zero result in every
-              command being saved on the history list  (there  is  no  limit).
-              The  shell  sets  the  default  value  to  500 after reading any
+              command  being  saved  on  the history list (there is no limit).
+              The shell sets the  default  value  to  500  after  reading  any
               startup files.
        H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT
-              If this variable is set and not null, its value  is  used  as  a
+              If  this  variable  is  set and not null, its value is used as a
               format string for _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3) to print the time stamp associated
-              with each history entry displayed by the  h\bhi\bis\bst\bto\bor\bry\by  builtin.   If
-              this  variable  is  set,  time stamps are written to the history
-              file so they may be preserved across shell sessions.  This  uses
-              the  history  comment  character  to distinguish timestamps from
+              with  each  history  entry displayed by the h\bhi\bis\bst\bto\bor\bry\by builtin.  If
+              this variable is set, time stamps are  written  to  the  history
+              file  so they may be preserved across shell sessions.  This uses
+              the history comment character  to  distinguish  timestamps  from
               other history lines.
        H\bHO\bOM\bME\bE   The home directory of the current user; the default argument for
               the c\bcd\bd builtin command.  The value of this variable is also used
               when performing tilde expansion.
        H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE
-              Contains the name of a file in the  same  format  as  _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs
+              Contains  the  name  of  a file in the same format as _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs
               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\bba\bas\bsh\bh adds the contents  of
-              the  new file to the existing list.  If H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is set, but has
-              no value, or does not name a readable  file,  b\bba\bas\bsh\bh  attempts  to
-              read  _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs to obtain the list of possible hostname comple-
+              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\bba\bas\bsh\bh adds the contents of
+              the new file to the existing list.  If H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is set, but  has
+              no  value,  or  does  not name a readable file, b\bba\bas\bsh\bh attempts to
+              read _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs to obtain the list of possible hostname  comple-
               tions.  When H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is unset, the hostname list is cleared.
-       I\bIF\bFS\bS    The _\bI_\bn_\bt_\be_\br_\bn_\ba_\bl _\bF_\bi_\be_\bl_\bd _\bS_\be_\bp_\ba_\br_\ba_\bt_\bo_\br that is  used  for  word  splitting
-              after  expansion  and  to  split  lines into words with the r\bre\bea\bad\bd
+       I\bIF\bFS\bS    The  _\bI_\bn_\bt_\be_\br_\bn_\ba_\bl  _\bF_\bi_\be_\bl_\bd  _\bS_\be_\bp_\ba_\br_\ba_\bt_\bo_\br  that is used for word splitting
+              after expansion and to split lines  into  words  with  the  r\bre\bea\bad\bd
               builtin  command.   The  default  value  is  ``<space><tab><new-
               line>''.
        I\bIG\bGN\bNO\bOR\bRE\bEE\bEO\bOF\bF
               Controls the action of an interactive shell on receipt of an E\bEO\bOF\bF
               character as the sole input.  If set, the value is the number of
-              consecutive  E\bEO\bOF\bF  characters  which  must  be typed as the first
-              characters on an input line before b\bba\bas\bsh\bh 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,  E\bEO\bOF\bF  signifies  the
+              consecutive E\bEO\bOF\bF characters which must  be  typed  as  the  first
+              characters  on an input line before b\bba\bas\bsh\bh 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, E\bEO\bOF\bF signifies the
               end of input to the shell.
        I\bIN\bNP\bPU\bUT\bTR\bRC\bC
-              The  filename  for  the  r\bre\bea\bad\bdl\bli\bin\bne\be  startup  file, overriding the
+              The filename for  the  r\bre\bea\bad\bdl\bli\bin\bne\be  startup  file,  overriding  the
               default of _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE below).
+       I\bIN\bNS\bSI\bID\bDE\bE_\b_E\bEM\bMA\bAC\bCS\bS
+              If  this  variable  appears  in  the  environment when the shell
+              starts, b\bba\bas\bsh\bh assumes that it is running inside  an  Emacs  shell
+              buffer  and  may disable line editing, depending on the value of
+              T\bTE\bER\bRM\bM.
        L\bLA\bAN\bNG\bG   Used to determine the  locale  category  for  any  category  not
               specifically selected with a variable starting with L\bLC\bC_\b_.
        L\bLC\bC_\b_A\bAL\bLL\bL This  variable  overrides  the  value  of L\bLA\bAN\bNG\bG and any other L\bLC\bC_\b_
@@ -1246,39 +1286,40 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               shell enters _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be before reading the startup files, as  if
               the  -\b--\b-p\bpo\bos\bsi\bix\bx  invocation option had been supplied.  If it is set
               while the shell is running, b\bba\bas\bsh\bh enables _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, as  if  the
-              command _\bs_\be_\bt _\b-_\bo _\bp_\bo_\bs_\bi_\bx had been executed.
+              command  _\bs_\be_\bt  _\b-_\bo _\bp_\bo_\bs_\bi_\bx had been executed.  When the shell enters
+              _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, it sets this variable if it was not already set.
        P\bPR\bRO\bOM\bMP\bPT\bT_\b_C\bCO\bOM\bMM\bMA\bAN\bND\bD
               If set, the value is executed as a command prior to issuing each
               primary prompt.
        P\bPR\bRO\bOM\bMP\bPT\bT_\b_D\bDI\bIR\bRT\bTR\bRI\bIM\bM
-              If set to a number greater than zero, the value is used  as  the
+              If  set  to a number greater than zero, the value is used as the
               number of trailing directory components to retain when expanding
-              the \\b\w\bw and \\b\W\bW  prompt  string  escapes  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below).
+              the  \\b\w\bw  and  \\b\W\bW  prompt  string  escapes (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below).
               Characters removed are replaced with an ellipsis.
-       P\bPS\bS0\b0    The  value  of  this parameter is expanded (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below)
-              and displayed by interactive shells after reading a command  and
+       P\bPS\bS0\b0    The value of this parameter is expanded  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below)
+              and  displayed by interactive shells after reading a command and
               before the command is executed.
-       P\bPS\bS1\b1    The  value  of  this parameter is expanded (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below)
-              and used as the primary prompt string.   The  default  value  is
+       P\bPS\bS1\b1    The value of this parameter is expanded  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below)
+              and  used  as  the  primary prompt string.  The default value is
               ``\\b\s\bs-\b-\\b\v\bv\\b\$\b$ ''.
-       P\bPS\bS2\b2    The  value of this parameter is expanded as with P\bPS\bS1\b1 and used as
+       P\bPS\bS2\b2    The value of this parameter is expanded as with P\bPS\bS1\b1 and used  as
               the secondary prompt string.  The default is ``>\b> ''.
        P\bPS\bS3\b3    The value of this parameter is used as the prompt for the s\bse\bel\ble\bec\bct\bt
               command (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR above).
-       P\bPS\bS4\b4    The  value  of  this  parameter  is expanded as with P\bPS\bS1\b1 and the
-              value is printed before each command  b\bba\bas\bsh\bh  displays  during  an
-              execution  trace.  The first character of P\bPS\bS4\b4 is replicated mul-
-              tiple times, as necessary, to indicate multiple levels of  indi-
-              rection.  The default is ``+\b+ ''.
+       P\bPS\bS4\b4    The value of this parameter is expanded  as  with  P\bPS\bS1\b1  and  the
+              value  is  printed  before  each command b\bba\bas\bsh\bh displays during an
+              execution trace.  The first character of the expanded  value  of
+              P\bPS\bS4\b4 is replicated multiple times, as necessary, to indicate mul-
+              tiple levels of indirection.  The default is ``+\b+ ''.
        S\bSH\bHE\bEL\bLL\bL  The full pathname to the shell is kept in this environment vari-
-              able.  If it is not set when the shell starts, b\bba\bas\bsh\bh  assigns  to
+              able.   If  it is not set when the shell starts, b\bba\bas\bsh\bh assigns to
               it the full pathname of the current user's login shell.
        T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT
-              The  value of this parameter is used as a format string specify-
-              ing how the timing information for pipelines prefixed  with  the
-              t\bti\bim\bme\b reserved word should be displayed.  The %\b% character intro-
-              duces an escape sequence that is expanded to  a  time  value  or
-              other  information.  The escape sequences and their meanings are
+              The value of this parameter is used as a format string  specify-
+              ing  how  the timing information for pipelines prefixed with the
+              t\bti\bim\bme\breserved word should be displayed.  The %\b% character  intro-
+              duces  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.
               %\b%%\b%        A literal %\b%.
               %\b%[\b[_\bp]\b][\b[l\bl]\b]R\bR  The elapsed time in seconds.
@@ -1286,77 +1327,77 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               %\b%[\b[_\bp]\b][\b[l\bl]\b]S\bS  The number of CPU seconds spent in system mode.
               %\b%P\bP        The CPU percentage, computed as (%U + %S) / %R.
 
-              The optional _\bp is a digit specifying the _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn,  the  number
+              The  optional  _\bp is a digit specifying the _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn, 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 _\bp greater
-              than 3 are changed to 3.  If _\bp is not specified, the value 3  is
+              after the decimal point may be specified; values  of  _\b greater
+              than  3 are changed to 3.  If _\bp is not specified, the value 3 is
               used.
 
-              The  optional l\bl specifies a longer format, including minutes, of
-              the form _\bM_\bMm_\bS_\bS._\bF_\bFs.  The value of _\bp determines  whether  or  not
+              The optional l\bl specifies a longer format, including minutes,  of
+              the  form  _\bM_\bMm_\bS_\bS._\bF_\bFs.   The value of _\bp determines whether or not
               the fraction is included.
 
-              If  this  variable  is not set, b\bba\bas\bsh\bh acts as if it had the value
-              $\b$'\b'\\b\n\bnr\bre\bea\bal\bl\\b\t\bt%\b%3\b3l\blR\bR\\b\n\bnu\bus\bse\ber\br\\b\t\bt%\b%3\b3l\blU\bU\\b\n\bns\bsy\bys\bs\\b\t\bt%\b%3\b3l\blS\bS'\b'.  If the value  is  null,
+              If this variable is not set, b\bba\bas\bsh\bh acts as if it  had  the  value
+              $\b$'\b'\\b\n\bnr\bre\bea\bal\bl\\b\t\bt%\b%3\b3l\blR\bR\\b\n\bnu\bus\bse\ber\br\\b\t\bt%\b%3\b3l\blU\bU\\b\n\bns\bsy\bys\bs\\b\t\bt%\b%3\b3l\blS\bS'\b'.   If  the value is null,
               no timing information is displayed.  A trailing newline is added
               when the format string is displayed.
-       T\bTM\bMO\bOU\bUT\bT  If set to a value greater than zero, T\bTM\bMO\bOU\bUT\bT  is  treated  as  the
+       T\bTM\bMO\bOU\bUT\bT  If  set  to  a  value greater than zero, T\bTM\bMO\bOU\bUT\bT is treated as the
               default timeout for the r\bre\bea\bad\bd builtin.  The s\bse\bel\ble\bec\bct\bt command termi-
               nates if input does not arrive after T\bTM\bMO\bOU\bUT\bT seconds when input is
-              coming  from  a terminal.  In an interactive shell, the value is
+              coming from a terminal.  In an interactive shell, the  value  is
               interpreted as the number of seconds to wait for a line of input
               after issuing the primary prompt.  B\bBa\bas\bsh\bh terminates after waiting
-              for that number of seconds if a complete line of input does  not
+              for  that number of seconds if a complete line of input does not
               arrive.
-       T\bTM\bMP\bPD\bDI\bIR\bR If  set, b\bba\bas\bsh\bh uses its value as the name of a directory in which
+       T\bTM\bMP\bPD\bDI\bIR\bR If set, b\bba\bas\bsh\bh uses its value as the name of a directory in  which
               b\bba\bas\bsh\bh creates temporary files for the shell's use.
        a\bau\but\bto\bo_\b_r\bre\bes\bsu\bum\bme\be
               This variable controls how the shell interacts with the user and
-              job  control.   If this variable is set, single word simple com-
+              job control.  If this variable is set, single word  simple  com-
               mands without redirections are treated as candidates for resump-
               tion 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 _\bn_\ba_\bm_\be of a
-              stopped job, in this context, is the command line used to  start
-              it.   If  set to the value _\be_\bx_\ba_\bc_\bt, the string supplied must match
-              the name of a stopped job exactly;  if  set  to  _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg,  the
-              string  supplied  needs  to  match  a substring of the name of a
-              stopped job.  The _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg value provides functionality  analo-
-              gous  to the %\b%?\b?  job identifier (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL below).  If set
-              to any other value, the supplied string must be a  prefix  of  a
+              if  there  is more than one job beginning with the string typed,
+              the job most recently accessed  is  selected.   The  _\bn_\ba_\bm_\be  of  a
+              stopped  job, in this context, is the command line used to start
+              it.  If set to the value _\be_\bx_\ba_\bc_\bt, the string supplied  must  match
+              the  name  of  a  stopped  job exactly; if set to _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg, the
+              string supplied needs to match a substring  of  the  name  of  a
+              stopped  job.  The _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg value provides functionality analo-
+              gous to the %\b%?\b?  job identifier (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL 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%_\bs_\bt_\br_\bi_\bn_\bg job identifier.
        h\bhi\bis\bst\btc\bch\bha\bar\brs\bs
-              The two or three characters which control history expansion  and
+              The  two or three characters which control history expansion and
               tokenization (see H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN below).  The first character
-              is the _\bh_\bi_\bs_\bt_\bo_\br_\by _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn character, the character which  signals
-              the  start  of  a  history  expansion, normally `!\b!'.  The second
-              character is the _\bq_\bu_\bi_\bc_\bk _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn character, which is used  as
-              shorthand  for  re-running the previous command entered, substi-
-              tuting one string for another in the command.   The  default  is
-              `^\b^'.   The optional third character is the character which indi-
-              cates that the remainder of the line is a comment when found  as
-              the  first  character of a word, normally `#\b#'.  The history com-
+              is  the _\bh_\bi_\bs_\bt_\bo_\br_\by _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn character, the character which signals
+              the start of a history  expansion,  normally  `!\b!'.   The  second
+              character  is the _\bq_\bu_\bi_\bc_\bk _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn character, which is used as
+              shorthand for re-running the previous command  entered,  substi-
+              tuting  one  string  for another in the command.  The default is
+              `^\b^'.  The optional third character is the character which  indi-
+              cates  that the remainder of the line is a comment when found as
+              the first character of a word, normally `#\b#'.  The  history  com-
               ment character causes history substitution to be skipped for the
-              remaining  words on the line.  It does not necessarily cause the
+              remaining words on the line.  It does not necessarily cause  the
               shell parser to treat the rest of the line as a comment.
 
    A\bAr\brr\bra\bay\bys\bs
-       B\bBa\bas\bsh\bprovides one-dimensional indexed and associative array  variables.
-       Any  variable may be used as an indexed array; the d\bde\bec\bcl\bla\bar\bre\be 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 con-
-       tiguously.  Indexed arrays are  referenced  using  integers  (including
+       B\bBa\bas\bsh\b provides one-dimensional indexed and associative array variables.
+       Any variable may be used as an indexed array; the d\bde\bec\bcl\bla\bar\bre\be 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  con-
+       tiguously.   Indexed  arrays  are  referenced using integers (including
        arithmetic expressions) and are zero-based; associative arrays are ref-
        erenced using arbitrary strings.  Unless otherwise noted, indexed array
        indices must be non-negative integers.
 
-       An  indexed  array is created automatically if any variable is assigned
+       An indexed array is created automatically if any variable  is  assigned
        to using the syntax _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\be.  The _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is treated as
        an arithmetic expression that must evaluate to a number.  To explicitly
-       declare an indexed array, use d\bde\bec\bcl\bla\bar\bre\be -\b-a\ba _\bn_\ba_\bm_\be (see S\bSH\bHE\bEL\bLL\bL  B\bBU\bUI\bIL\bLT\bTI\bIN\b C\bCO\bOM\bM-\b-
-       M\bMA\bAN\bND\bDS\b below).   d\bde\bec\bcl\bla\bar\bre\be  -\b-a\ba _\bn_\ba_\bm_\be[\b[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]\b] is also accepted; the _\bs_\bu_\bb_\b-
+       declare  an  indexed array, use d\bde\bec\bcl\bla\bar\bre\be -\b-a\ba _\bn_\ba_\bm_\be (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bM-\b-
+       M\bMA\bAN\bND\bDS\bbelow).  d\bde\bec\bcl\bla\bar\bre\be -\b-a\ba _\bn_\ba_\bm_\be[\b[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]\b] is also  accepted;  the  _\bs_\bu_\bb_\b-
        _\bs_\bc_\br_\bi_\bp_\bt is ignored.
 
        Associative arrays are created using d\bde\bec\bcl\bla\bar\bre\be -\b-A\bA _\bn_\ba_\bm_\be.
@@ -1364,96 +1405,103 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
        Attributes may be specified for an array variable using the d\bde\bec\bcl\bla\bar\bre\be and
        r\bre\bea\bad\bdo\bon\bnl\bly\by builtins.  Each attribute applies to all members of an array.
 
-       Arrays   are  assigned  to  using  compound  assignments  of  the  form
-       _\bn_\ba_\bm_\be=(\b(value_\b... value_\bn)\b),  where  each  _\bv_\ba_\bl_\bu_\be  is  of  the  form  [_\bs_\bu_\bb_\b-
-       _\bs_\bc_\br_\bi_\bp_\bt]=_\bs_\bt_\br_\bi_\bn_\bg.   Indexed array assignments do not require anything but
+       Arrays  are  assigned  to  using  compound  assignments  of  the   form
+       _\bn_\ba_\bm_\be=(\b(value_\b ...  value_\bn)\b),  where  each  _\bv_\ba_\bl_\bu_\be  is  of  the form [_\bs_\bu_\bb_\b-
+       _\bs_\bc_\br_\bi_\bp_\bt]=_\bs_\bt_\br_\bi_\bn_\bg.  Indexed array assignments do not require anything  but
        _\bs_\bt_\br_\bi_\bn_\bg.  When assigning to indexed arrays, 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
+       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.
 
        When assigning to an associative array, the subscript is required.
 
-       This  syntax is also accepted by the d\bde\bec\bcl\bla\bar\bre\be builtin.  Individual array
-       elements may be assigned  to  using  the  _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\b syntax
-       introduced  above.  When assigning to an indexed array, if _\bn_\ba_\bm_\be is sub-
-       scripted by a negative number, that number is interpreted  as  relative
-       to  one  greater  than  the  maximum index of _\bn_\ba_\bm_\be, so negative indices
+       This syntax is also accepted by the d\bde\bec\bcl\bla\bar\bre\be builtin.  Individual  array
+       elements  may  be  assigned  to  using the _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\be syntax
+       introduced above.  When assigning to an indexed array, if _\bn_\ba_\bm_\be is  sub-
+       scripted  by  a negative number, that number is interpreted as relative
+       to one greater than the maximum index  of  _\bn_\ba_\bm_\be,  so  negative  indices
        count back from the end of the array, and an index of -1 references the
        last element.
 
-       Any  element  of  an  array may be referenced using ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.
+       Any element of an array may  be  referenced  using  ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.
        The braces are required to avoid conflicts with pathname expansion.  If
-       _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\b is  @\b@  or *\b*, the word expands to all members of _\bn_\ba_\bm_\be.  These
-       subscripts differ only when the word appears within double quotes.   If
+       _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bis @\b@ or *\b*, the word expands to all members  of  _\bn_\ba_\bm_\be.   These
+       subscripts  differ only when the word appears within double quotes.  If
        the word is double-quoted, ${_\bn_\ba_\bm_\be[*]} expands to a single word with the
-       value of each array member separated by the first character of the  I\bIF\bFS\bS
+       value  of each array member separated by the first character of the I\bIF\bFS\bS
        special variable, and ${_\bn_\ba_\bm_\be[@]} expands each element of _\bn_\ba_\bm_\be to a sep-
-       arate word.  When there are no array  members,  ${_\bn_\ba_\bm_\be[@]}  expands  to
-       nothing.   If  the  double-quoted  expansion  occurs within a word, the
-       expansion of the first parameter is joined with the beginning  part  of
-       the  original  word,  and the expansion of the last parameter is joined
-       with the last part of the original word.   This  is  analogous  to  the
-       expansion  of  the  special  parameters *\b* and @\b@ (see S\bSp\bpe\bec\bci\bia\bal\bl P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs
-       above).  ${#_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}  expands  to  the  length  of  ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\b-
-       _\bs_\bc_\br_\bi_\bp_\bt]}.   If _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is *\b* or @\b@, the expansion is the number of ele-
-       ments in the array.  If the _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt used to reference an  element  of
-       an  indexed  array  evaluates  to a number less than zero, it is inter-
-       preted as relative to one greater than the maximum index of the  array,
-       so  negative indices count back from the end of the array, and an index
+       arate  word.   When  there  are no array members, ${_\bn_\ba_\bm_\be[@]} expands to
+       nothing.  If the double-quoted expansion  occurs  within  a  word,  the
+       expansion  of  the first parameter is joined with the beginning part of
+       the original word, and the expansion of the last  parameter  is  joined
+       with  the  last  part  of  the original word.  This is analogous to the
+       expansion of the special parameters *\b* and  @\b@  (see  S\bSp\bpe\bec\bci\bia\bal\b P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs
+       above).   ${#_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}  expands  to  the  length  of ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\b-
+       _\bs_\bc_\br_\bi_\bp_\bt]}.  If _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is *\b* or @\b@, the expansion is the number of  ele-
+       ments  in  the array.  If the _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt used to reference an element of
+       an indexed array evaluates to a number less than  zero,  it  is  inter-
+       preted  as relative to one greater than the maximum index of the array,
+       so negative indices count back from the end of the array, and an  index
        of -1 references the last element.
 
        Referencing an array variable without a subscript is equivalent to ref-
-       erencing  the array with a subscript of 0.  Any reference to a variable
+       erencing the array with a subscript of 0.  Any reference to a  variable
        using a valid subscript is legal, and b\bba\bas\bsh\bh will create an array if nec-
        essary.
 
-       An  array variable is considered set if a subscript has been assigned a
+       An array variable is considered set if a subscript has been assigned  a
        value.  The null string is a valid value.
 
-       It is possible to obtain the keys (indices) of an array as well as  the
-       values.   ${!\b!_\bn_\ba_\bm_\be[_\b@]} and ${!\b!_\bn_\ba_\bm_\be[_\b*]} expand to the indices assigned in
+       It  is possible to obtain the keys (indices) of an array as well as the
+       values.  ${!\b!_\bn_\ba_\bm_\be[_\b@]} and ${!\b!_\bn_\ba_\bm_\be[_\b*]} expand to the indices assigned  in
        array variable _\bn_\ba_\bm_\be.  The treatment when in double quotes is similar to
        the expansion of the special parameters _\b@ and _\b* within double quotes.
 
-       The  u\bun\bns\bse\bet\bt  builtin  is  used to destroy arrays.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]
-       destroys the array element at index _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt.  Negative subscripts  to
-       indexed  arrays are interpreted as described above.  Care must be taken
-       to avoid unwanted side effects caused  by  pathname  expansion.   u\bun\bns\bse\bet\bt
-       _\bn_\ba_\bm_\be, where _\bn_\ba_\bm_\be is an array, or u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt], where _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt
-       is *\b* or @\b@, removes the entire array.
-
-       The d\bde\bec\bcl\bla\bar\bre\be, l\blo\boc\bca\bal\bl, and r\bre\bea\bad\bdo\bon\bnl\bly\by builtins each accept a  -\b-a\ba  option  to
-       specify  an  indexed  array  and  a -\b-A\bA option to specify an associative
-       array.  If both options are supplied, -\b-A\bA takes  precedence.   The  r\bre\bea\bad\bd
-       builtin  accepts  a  -\b-a\ba  option to assign a list of words read from the
+       The u\bun\bns\bse\bet\bt builtin is used to  destroy  arrays.   u\bun\bns\bse\bet\bt  _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]
+       destroys  the  array  element  at index _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt, for both indexed and
+       associative arrays.  Negative subscripts to indexed arrays  are  inter-
+       preted  as  described  above.   Unsetting  the last element of an array
+       variable does not unset the variable.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be,  where  _\bn_\ba_\bm_\be  is  an
+       array, or u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt], where _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is *\b* or @\b@, removes the
+       entire array.
+
+       When using a variable name with a subscript as an argument  to  a  com-
+       mand,  such  as  with  u\bun\bns\bse\bet\bt,  without  using the word expansion syntax
+       described above, the argument is subject  to  pathname  expansion.   If
+       pathname expansion is not desired, the argument should be quoted.
+
+       The  d\bde\bec\bcl\bla\bar\bre\be,  l\blo\boc\bca\bal\bl,  and r\bre\bea\bad\bdo\bon\bnl\bly\by builtins each accept a -\b-a\ba option to
+       specify an indexed array and a -\b-A\bA  option  to  specify  an  associative
+       array.   If  both  options are supplied, -\b-A\bA takes precedence.  The r\bre\bea\bad\bd
+       builtin accepts a -\b-a\ba option to assign a list of  words  read  from  the
        standard input to an array.  The s\bse\bet\bt and d\bde\bec\bcl\bla\bar\bre\be builtins display array
        values in a way that allows them to be reused as assignments.
 
 E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        Expansion is performed on the command line after it has been split into
-       words.  There are seven kinds of expansion performed: _\bb_\br_\ba_\bc_\b _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn,
-       _\bt_\bi_\bl_\bd_\b _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn,  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  _\ba_\bn_\bd _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, _\bc_\bo_\bm_\bm_\ba_\bn_\bd _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\b-
+       words.   There are seven kinds of expansion performed: _\bb_\br_\ba_\bc_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn,
+       _\bt_\bi_\bl_\bd_\b_\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br _\ba_\bn_\bd _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be  _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn,  _\bc_\bo_\bm_\bm_\ba_\bn_\b _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\b-
        _\bt_\bi_\bo_\bn, _\ba_\br_\bi_\bt_\bh_\bm_\be_\bt_\bi_\bc _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, _\bw_\bo_\br_\bd _\bs_\bp_\bl_\bi_\bt_\bt_\bi_\bn_\bg, and _\bp_\ba_\bt_\bh_\bn_\ba_\bm_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn.
 
        The order of expansions is: brace expansion; tilde expansion, parameter
-       and  variable expansion, arithmetic expansion, and command substitution
-       (done in a left-to-right fashion); word splitting; and pathname  expan-
+       and variable expansion, arithmetic expansion, and command  substitution
+       (done  in a left-to-right fashion); word splitting; and pathname expan-
        sion.
 
        On systems that can support it, there is an additional expansion avail-
-       able: _\bp_\br_\bo_\bc_\be_\bs_\bs _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn.  This is performed  at  the  same  time  as
-       tilde,  parameter,  variable, and arithmetic expansion and command sub-
+       able:  _\bp_\br_\bo_\bc_\be_\bs_\bs  _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn.   This  is  performed at the same time as
+       tilde, parameter, variable, and arithmetic expansion and  command  sub-
        stitution.
 
-       After these expansions are performed, quote characters present  in  the
-       original  word  are  removed  unless  they  have been quoted themselves
+       After  these  expansions are performed, quote characters present in the
+       original word are removed  unless  they  have  been  quoted  themselves
        (_\bq_\bu_\bo_\bt_\be _\br_\be_\bm_\bo_\bv_\ba_\bl).
 
-       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 "$\b$@\b@" and "$\b${\b{_\bn_\ba_\bm_\be[\b[@\b@]\b]}\b}" as explained above (see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS).
+       Only  brace  expansion,  word  splitting,  and  pathname  expansion can
+       increase 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 "$\b$@\b@"  and  "$\b${\b{_\bn_\ba_\bm_\be[\b[@\b@]\b]}\b}",  and,  in  most  cases,  $\b$*\b*  and
+       $\b${\b{_\bn_\ba_\bm_\be[\b[*\b*]\b]}\b} as explained above (see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS).
 
    B\bBr\bra\bac\bce\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
        _\bB_\br_\ba_\bc_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn is a mechanism by which arbitrary strings may be gener-
@@ -1492,7 +1540,8 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        expression.  Any incorrectly formed brace expansion is left  unchanged.
        A {\b{ or ,\b, may be quoted with a backslash to prevent its being considered
        part of a brace expression.  To avoid conflicts with  parameter  expan-
-       sion, the string $\b${\b{ is not considered eligible for brace expansion.
+       sion, the string $\b${\b{ is not considered eligible for brace expansion, and
+       inhibits brace expansion until the closing }\b}.
 
        This construct is typically used as shorthand when the common prefix of
        the strings to be generated is longer than in the above example:
@@ -1501,36 +1550,36 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        or
               chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
 
-       Brace expansion introduces a  slight  incompatibility  with  historical
-       versions  of s\bsh\bh.  s\bsh\bh does not treat opening or closing braces specially
-       when they appear as part of a word, and preserves them in  the  output.
-       B\bBa\bas\bsh\b removes  braces  from  words as a consequence of brace expansion.
-       For example, a word entered to s\bsh\bh as _\bf_\bi_\bl_\be_\b{_\b1_\b,_\b2_\b} appears  identically  in
-       the  output.  The same word is output as _\bf_\bi_\bl_\be_\b1 _\bf_\bi_\bl_\be_\b2 after expansion by
-       b\bba\bas\bsh\bh.  If strict compatibility with s\bsh\bh is desired, start b\bba\bas\bsh\bh with  the
+       Brace  expansion  introduces  a  slight incompatibility with historical
+       versions of s\bsh\bh.  s\bsh\bh does not treat opening or closing braces  specially
+       when  they  appear as part of a word, and preserves them in the output.
+       B\bBa\bas\bsh\bremoves braces from words as a  consequence  of  brace  expansion.
+       For  example,  a word entered to s\bsh\bh as _\bf_\bi_\bl_\be_\b{_\b1_\b,_\b2_\b} appears identically in
+       the output.  The same word is output as _\bf_\bi_\bl_\be_\b1 _\bf_\bi_\bl_\be_\b2 after expansion  by
+       b\bba\bas\bsh\bh.   If strict compatibility with s\bsh\bh is desired, start b\bba\bas\bsh\bh with the
        +\b+B\bB option or disable brace expansion with the +\b+B\bB option to the s\bse\bet\bt com-
        mand (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
 
    T\bTi\bil\bld\bde\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
-       If a word begins with an unquoted tilde character  (`~\b~'),  all  of  the
-       characters  preceding  the  first unquoted slash (or all characters, if
-       there is no unquoted slash) are considered a _\bt_\bi_\bl_\bd_\be_\b-_\bp_\br_\be_\bf_\bi_\bx.  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 _\bl_\bo_\bg_\bi_\b _\bn_\ba_\bm_\be.
-       If  this  login name is the null string, the tilde is replaced with the
-       value of the shell parameter H\bHO\bOM\bME\bE.  If H\bHO\bOM\bME\bE is unset, the  home  direc-
-       tory  of  the  user executing the shell is substituted instead.  Other-
-       wise, the tilde-prefix is replaced with the home  directory  associated
+       If  a  word  begins  with an unquoted tilde character (`~\b~'), all of the
+       characters preceding the first unquoted slash (or  all  characters,  if
+       there  is no unquoted slash) are considered a _\bt_\bi_\bl_\bd_\be_\b-_\bp_\br_\be_\bf_\bi_\bx.  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 _\bl_\bo_\bg_\bi_\bn _\bn_\ba_\bm_\be.
+       If this login name is the null string, the tilde is replaced  with  the
+       value  of  the shell parameter H\bHO\bOM\bME\bE.  If H\bHO\bOM\bME\bE is unset, the home direc-
+       tory of the user executing the shell is  substituted  instead.   Other-
+       wise,  the  tilde-prefix is replaced with the home directory associated
        with the specified login name.
 
-       If  the  tilde-prefix  is  a  `~+', the value of the shell variable P\bPW\bWD\bD
+       If the tilde-prefix is a `~+', the value  of  the  shell  variable  P\bPW\bWD\bD
        replaces the tilde-prefix.  If the tilde-prefix is a `~-', the value of
-       the  shell variable O\bOL\bLD\bDP\bPW\bWD\bD, if it is set, is substituted.  If the char-
-       acters following the tilde in the tilde-prefix consist of a  number  _\bN,
-       optionally  prefixed  by  a  `+' or a `-', the tilde-prefix is replaced
+       the shell variable O\bOL\bLD\bDP\bPW\bWD\bD, if it is set, is substituted.  If the  char-
+       acters  following  the tilde in the tilde-prefix consist of a number _\bN,
+       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 d\bdi\bir\brs\bs builtin invoked with the tilde-prefix as an argu-
-       ment.  If the characters following the tilde in the  tilde-prefix  con-
+       ment.   If  the characters following the tilde in the tilde-prefix con-
        sist of a number without a leading `+' or `-', `+' is assumed.
 
        If the login name is invalid, or the tilde expansion fails, the word is
@@ -1538,10 +1587,15 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
 
        Each variable assignment is checked for unquoted tilde-prefixes immedi-
        ately following a :\b: or the first =\b=.  In these cases, tilde expansion is
-       also performed.  Consequently, one may use  filenames  with  tildes  in
-       assignments  to  P\bPA\bAT\bTH\bH,  M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH, and C\bCD\bDP\bPA\bAT\bTH\bH, and the shell assigns the
+       also  performed.   Consequently,  one  may use filenames with tildes in
+       assignments to P\bPA\bAT\bTH\bH, M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH, and C\bCD\bDP\bPA\bAT\bTH\bH, and the  shell  assigns  the
        expanded value.
 
+       Bash  also  performs tilde expansion on words satisfying the conditions
+       of variable assignments (as described above under P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS) when they
+       appear  as arguments to simple commands.  Bash does not do this, except
+       for the _\bd_\be_\bc_\bl_\ba_\br_\ba_\bt_\bi_\bo_\bn commands listed above, when in _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be.
+
    P\bPa\bar\bra\bam\bme\bet\bte\ber\br E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
        The `$\b$' character introduces parameter expansion, command substitution,
        or  arithmetic  expansion.  The parameter name or symbol to be expanded
@@ -1563,16 +1617,18 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
               (A\bAr\brr\bra\bay\bys\bs).
 
        If the first character of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an exclamation  point  (!\b!),  and
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is not a _\bn_\ba_\bm_\be_\br_\be_\bf, it introduces a level of variable indirec-
-       tion.  B\bBa\bas\bsh\bh uses the value of the variable  formed  from  the  rest  of
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  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  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  itself.  This is known as _\bi_\bn_\bd_\bi_\br_\be_\bc_\bt _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn.  If
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is a nameref, this expands to the name of the variable refer-
-       enced  by  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br instead of performing the complete indirect expan-
-       sion.  The exceptions to this are the  expansions  of  ${!\b!_\bp_\br_\be_\bf_\bi_\bx*\b*}  and
-       ${!\b!_\bn_\ba_\bm_\be[_\b@]}  described  below.   The exclamation point must immediately
-       follow the left brace in order to introduce indirection.
+       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is not a _\bn_\ba_\bm_\be_\br_\be_\bf, it introduces a level of indirection.  B\bBa\bas\bsh\bh
+       uses the value formed by expanding the rest of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  as  the  new
+       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br;  this is then expanded and that value is used in the rest of
+       the expansion, rather than the expansion  of  the  original  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.
+       This  is  known  as  _\bi_\bn_\bd_\bi_\br_\be_\bc_\bt _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn.  The value is subject to tilde
+       expansion, parameter expansion, command  substitution,  and  arithmetic
+       expansion.   If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is a nameref, this expands to the name of the
+       parameter referenced by _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br instead of  performing  the  complete
+       indirect  expansion.   The  exceptions  to  this  are the expansions of
+       ${!\b!_\bp_\br_\be_\bf_\bi_\bx*\b*} and ${!\b!_\bn_\ba_\bm_\be[_\b@]} described  below.   The  exclamation  point
+       must  immediately  follow the left brace in order to introduce indirec-
+       tion.
 
        In each of the cases below, _\bw_\bo_\br_\bd is subject to tilde expansion, parame-
        ter expansion, command substitution, and arithmetic expansion.
@@ -1673,100 +1729,105 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br#\b#_\bw_\bo_\br_\bd}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br#\b##\b#_\bw_\bo_\br_\bd}
               R\bRe\bem\bmo\bov\bve\be m\bma\bat\btc\bch\bhi\bin\bng\bg p\bpr\bre\bef\bfi\bix\bx p\bpa\bat\btt\bte\ber\brn\bn.  The _\bw_\bo_\br_\bd is expanded to produce
-              a pattern just as in pathname expansion.  If the pattern matches
-              the  beginning of the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of the
+              a pattern just as in pathname expansion, and matched against the
+              expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br using the rules described under P\bPa\bat\bt-\b-
+              t\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg below.  If the pattern matches  the  beginning  of
+              the  value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of the expansion is the
+              expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with the shortest  matching  pattern
+              (the  ``#\b#''  case)  or  the longest matching pattern (the ``#\b##\b#''
+              case) deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@  or  *\b*,  the  pattern  removal
+              operation  is  applied to each positional parameter in turn, and
+              the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  an  array
+              variable  subscripted with @\b@ or *\b*, the pattern removal operation
+              is applied to each member of the array in turn, and  the  expan-
+              sion is the resultant list.
+
+       ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br%\b%_\bw_\bo_\br_\bd}
+       ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br%\b%%\b%_\bw_\bo_\br_\bd}
+              R\bRe\bem\bmo\bov\bve\be m\bma\bat\btc\bch\bhi\bin\bng\bg s\bsu\buf\bff\bfi\bix\bx p\bpa\bat\btt\bte\ber\brn\bn.  The _\bw_\bo_\br_\bd is expanded to produce
+              a pattern just as in pathname expansion, and matched against the
+              expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br using the rules described under P\bPa\bat\bt-\b-
+              t\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg below.  If the pattern matches a trailing  portion
+              of  the  expanded  value  of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br,  then the result of the
               expansion is the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with  the  shortest
-              matching  pattern  (the ``#\b#'' case) or the longest matching pat-
-              tern (the ``#\b##\b#'' case) deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  @\b@  or  *\b*,  the
+              matching  pattern  (the ``%\b%'' case) or the longest matching pat-
+              tern (the ``%\b%%\b%'' case) deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  @\b@  or  *\b*,  the
               pattern  removal operation is applied to each positional parame-
               ter in turn, and the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\b-
               _\be_\bt_\be_\br  is  an array variable subscripted with @\b@ or *\b*, the pattern
               removal operation is applied to each  member  of  the  array  in
               turn, and the expansion is the resultant list.
 
-       ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br%\b%_\bw_\bo_\br_\bd}
-       ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br%\b%%\b%_\bw_\bo_\br_\bd}
-              R\bRe\bem\bmo\bov\bve\be m\bma\bat\btc\bch\bhi\bin\bng\bg s\bsu\buf\bff\bfi\bix\bx p\bpa\bat\btt\bte\ber\brn\bn.  The _\bw_\bo_\br_\bd is expanded to produce
-              a pattern just as in pathname expansion.  If the pattern matches
-              a  trailing portion of the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the
-              result of the expansion is the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  with
-              the  shortest  matching  pattern (the ``%\b%'' case) or the longest
-              matching pattern (the ``%\b%%\b%'' case) deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is  @\b@
-              or  *\b*,  the  pattern  removal operation is applied to each posi-
-              tional parameter in turn, and the  expansion  is  the  resultant
-              list.   If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array variable subscripted with @\b@ or
-              *\b*, the pattern removal operation is applied to  each  member  of
-              the array in turn, and the expansion is the resultant list.
-
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br/\b/_\bp_\ba_\bt_\bt_\be_\br_\bn/\b/_\bs_\bt_\br_\bi_\bn_\bg}
               P\bPa\bat\btt\bte\ber\brn\bn s\bsu\bub\bbs\bst\bti\bit\btu\but\bti\bio\bon\bn.  The _\bp_\ba_\bt_\bt_\be_\br_\bn is expanded to produce a pat-
-              tern just as in pathname expansion.  _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  expanded  and
+              tern just as in pathname expansion, _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\b is  expanded  and
               the  longest match of _\bp_\ba_\bt_\bt_\be_\br_\bn against its value is replaced with
-              _\bs_\bt_\br_\bi_\bn_\bg.  If _\bp_\ba_\bt_\bt_\be_\br_\bn begins with /\b/, all matches  of  _\bp_\ba_\bt_\bt_\be_\br_\bn  are
-              replaced   with  _\bs_\bt_\br_\bi_\bn_\bg.   Normally  only  the  first  match  is
-              replaced.  If _\bp_\ba_\bt_\bt_\be_\br_\bn begins with #\b#, it must match at the begin-
-              ning of the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  If _\bp_\ba_\bt_\bt_\be_\br_\bn begins with
-              %\b%, it must match at the end of the expanded value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.
-              If _\bs_\bt_\br_\bi_\bn_\bg is null, matches of _\bp_\ba_\bt_\bt_\be_\br_\bn are deleted and the /\b/ fol-
-              lowing _\bp_\ba_\bt_\bt_\be_\br_\bn may be omitted.  If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh shell  option
-              is enabled, the match is performed without regard to the case of
-              alphabetic characters.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the substitution
-              operation  is  applied to each positional parameter in turn, and
-              the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  an  array
-              variable  subscripted with @\b@ or *\b*, the substitution operation is
-              applied to each member of the array in turn, and  the  expansion
-              is the resultant list.
+              _\bs_\bt_\br_\bi_\bn_\bg.  The match is performed using the rules described  under
+              P\bPa\bat\btt\bte\ber\brn\bn  M\bMa\bat\btc\bch\bhi\bin\bng\bg  below.  If _\bp_\ba_\bt_\bt_\be_\br_\bn begins with /\b/, all matches
+              of _\bp_\ba_\bt_\bt_\be_\br_\bn are replaced with _\bs_\bt_\br_\bi_\bn_\bg.  Normally  only  the  first
+              match  is  replaced.  If _\bp_\ba_\bt_\bt_\be_\br_\bn begins with #\b#, it must match at
+              the beginning of the expanded value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.   If  _\bp_\ba_\bt_\bt_\be_\br_\bn
+              begins with %\b%, it must match at the end of the expanded value of
+              _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  If _\bs_\bt_\br_\bi_\bn_\bg is null, matches of  _\bp_\ba_\bt_\bt_\be_\br_\bn  are  deleted
+              and  the /\b/ following _\bp_\ba_\bt_\bt_\be_\br_\bn may be omitted.  If the n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh
+              shell option is enabled, the match is performed  without  regard
+              to  the  case of alphabetic characters.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*,
+              the substitution operation is applied to each positional parame-
+              ter in turn, and the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\b-
+              _\be_\bt_\be_\br is an array variable subscripted with @\b@ or *\b*, the substitu-
+              tion  operation  is applied to each member of the array in turn,
+              and the expansion is the resultant list.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br^\b^_\bp_\ba_\bt_\bt_\be_\br_\bn}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br^\b^^\b^_\bp_\ba_\bt_\bt_\be_\br_\bn}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br,\b,_\bp_\ba_\bt_\bt_\be_\br_\bn}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br,\b,,\b,_\bp_\ba_\bt_\bt_\be_\br_\bn}
-              C\bCa\bas\bse\b m\bmo\bod\bdi\bif\bfi\bic\bca\bat\bti\bio\bon\bn.   This expansion modifies the case of alpha-
-              betic characters in _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  The _\bp_\ba_\bt_\bt_\be_\br_\bn is expanded to  pro-
+              C\bCa\bas\bse\bm\bmo\bod\bdi\bif\bfi\bic\bca\bat\bti\bio\bon\bn.  This expansion modifies the case  of  alpha-
+              betic  characters in _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  The _\bp_\ba_\bt_\bt_\be_\br_\bn is expanded to pro-
               duce a pattern just as in pathname expansion.  Each character in
-              the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is tested against _\bp_\ba_\bt_\bt_\be_\br_\bn,  and,
-              if  it  matches the pattern, its case is converted.  The pattern
-              should not attempt to match more  than  one  character.   The  ^\b^
-              operator  converts  lowercase letters matching _\bp_\ba_\bt_\bt_\be_\br_\bn to upper-
+              the  expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is tested against _\bp_\ba_\bt_\bt_\be_\br_\bn, and,
+              if it matches the pattern, its case is converted.   The  pattern
+              should  not  attempt  to  match  more than one character.  The ^\b^
+              operator converts lowercase letters matching _\bp_\ba_\bt_\bt_\be_\br_\bn  to  upper-
               case; the ,\b, operator converts matching uppercase letters to low-
               ercase.  The ^\b^^\b^ and ,\b,,\b, expansions convert each matched character
-              in the expanded value; the ^\b^ and ,\b, expansions match and  convert
-              only  the  first character in the expanded value.  If _\bp_\ba_\bt_\bt_\be_\br_\bn is
-              omitted, it is treated like a ?\b?, which matches every  character.
-              If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is  @\b@  or  *\b*,  the case modification operation is
-              applied to each positional parameter in turn, and the  expansion
-              is  the  resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array variable sub-
+              in  the expanded value; the ^\b^ and ,\b, expansions match and convert
+              only the first character in the expanded value.  If  _\bp_\ba_\bt_\bt_\be_\br_\b is
+              omitted,  it is treated like a ?\b?, which matches every character.
+              If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or  *\b*,  the  case  modification  operation  is
+              applied  to each positional parameter in turn, and the expansion
+              is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array  variable  sub-
               scripted with @\b@ or *\b*, the case modification operation is applied
-              to  each  member  of the array in turn, and the expansion is the
+              to each member of the array in turn, and the  expansion  is  the
               resultant list.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br@\b@_\bo_\bp_\be_\br_\ba_\bt_\bo_\br}
               P\bPa\bar\bra\bam\bme\bet\bte\ber\br t\btr\bra\ban\bns\bsf\bfo\bor\brm\bma\bat\bti\bio\bon\bn.  The expansion is either a transforma-
-              tion  of  the  value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br or information about _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
-              itself, depending on the value of _\bo_\bp_\be_\br_\ba_\bt_\bo_\br.  Each _\bo_\bp_\be_\br_\ba_\bt_\bo_\br is  a
+              tion of the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br or  information  about  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
+              itself,  depending on the value of _\bo_\bp_\be_\br_\ba_\bt_\bo_\br.  Each _\bo_\bp_\be_\br_\ba_\bt_\bo_\br is a
               single letter:
 
-              Q\bQ      The  expansion is a string that is the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
+              Q\bQ      The expansion is a string that is the value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
                      quoted in a format that can be reused as input.
-              E\bE      The expansion is a string that is the value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
-                     with  backslash  escape  sequences  expanded  as with the
-                     $\b$'\b'.\b..\b..\b.'\b' quoting mechansim.
+              E\bE      The  expansion is a string that is the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
+                     with backslash escape  sequences  expanded  as  with  the
+                     $\b$'\b'.\b..\b..\b.'\b' quoting mechanism.
               P\bP      The expansion is a string that is the result of expanding
                      the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br as if it were a prompt string (see
                      P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below).
-              A\bA      The expansion is a string in the form  of  an  assignment
-                     statement  or  d\bde\bec\bcl\bla\bar\bre\be  command  that, if evaluated, will
+              A\bA      The  expansion  is  a string in the form of an assignment
+                     statement or d\bde\bec\bcl\bla\bar\bre\be command  that,  if  evaluated,  will
                      recreate _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with its attributes and value.
-              a\ba      The expansion is a string consisting of flag values  rep-
+              a\ba      The  expansion is a string consisting of flag values rep-
                      resenting _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br's attributes.
 
-              If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is @\b@ or *\b*, the operation is applied to each posi-
-              tional parameter in turn, and the  expansion  is  the  resultant
-              list.   If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array variable subscripted with @\b@ or
-              *\b*, the case modification operation is applied to each member  of
-              the array in turn, and the expansion is the resultant list.
+              If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the operation is applied to  each  posi-
+              tional  parameter  in  turn,  and the expansion is the resultant
+              list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array variable subscripted with  @\b or
+              *\b*, the operation is applied to each member of the array in turn,
+              and the expansion is the resultant list.
 
-              The  result  of  the  expansion is subject to word splitting and
+              The result of the expansion is subject  to  word  splitting  and
               pathname expansion as described below.
 
    C\bCo\bom\bmm\bma\ban\bnd\bd S\bSu\bub\bbs\bst\bti\bit\btu\but\bti\bio\bon\bn
@@ -1780,174 +1841,178 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        B\bBa\bas\bsh\bh performs the expansion by executing _\bc_\bo_\bm_\bm_\ba_\bn_\bd in a subshell environ-
        ment and replacing the command substitution with the standard output of
        the command, with any trailing newlines deleted.  Embedded newlines are
-       not deleted, but they may be removed during word splitting.   The  com-
-       mand  substitution  $\b$(\b(c\bca\bat\bt  _\bf_\bi_\bl_\be)\b)  can be replaced by the equivalent but
+       not  deleted,  but they may be removed during word splitting.  The com-
+       mand substitution $\b$(\b(c\bca\bat\bt _\bf_\bi_\bl_\be)\b) can be replaced  by  the  equivalent  but
        faster $\b$(\b(<\b< _\bf_\bi_\bl_\be)\b).
 
-       When the old-style backquote form of substitution  is  used,  backslash
-       retains  its  literal  meaning except when followed by $\b$, `\b`, or \\b\.  The
+       When  the  old-style  backquote form of substitution is used, backslash
+       retains its literal meaning except when followed by $\b$, `\b`,  or  \\b\.   The
        first backquote not preceded by a backslash terminates the command sub-
-       stitution.   When using the $(_\bc_\bo_\bm_\bm_\ba_\bn_\bd) form, all characters between the
+       stitution.  When using the $(_\bc_\bo_\bm_\bm_\ba_\bn_\bd) form, all characters between  the
        parentheses make up the command; none are treated specially.
 
        Command substitutions may be nested.  To nest when using the backquoted
        form, escape the inner backquotes with backslashes.
 
-       If  the  substitution  appears within double quotes, word splitting and
+       If the substitution appears within double quotes,  word  splitting  and
        pathname expansion are not performed on the results.
 
    A\bAr\bri\bit\bth\bhm\bme\bet\bti\bic\bc E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
-       Arithmetic expansion allows the evaluation of an arithmetic  expression
-       and  the  substitution of the result.  The format for arithmetic expan-
+       Arithmetic  expansion allows the evaluation of an arithmetic expression
+       and the substitution of the result.  The format for  arithmetic  expan-
        sion is:
 
               $\b$(\b((\b(_\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn)\b))\b)
 
-       The _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn is treated as if it were within  double  quotes,  but  a
-       double  quote  inside  the  parentheses  is not treated specially.  All
+       The  _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn  is  treated  as if it were within double quotes, but a
+       double quote inside the parentheses  is  not  treated  specially.   All
        tokens in the expression undergo parameter and variable expansion, com-
-       mand  substitution,  and  quote  removal.  The result is treated as the
-       arithmetic expression to be evaluated.  Arithmetic  expansions  may  be
+       mand substitution, and quote removal.  The result  is  treated  as  the
+       arithmetic  expression  to  be evaluated.  Arithmetic expansions may be
        nested.
 
-       The  evaluation  is performed according to the rules listed below under
+       The evaluation is performed according to the rules listed  below  under
        A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN.  If _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn is invalid, b\bba\bas\bsh\bh prints a message
        indicating failure and no substitution occurs.
 
    P\bPr\bro\boc\bce\bes\bss\bs S\bSu\bub\bbs\bst\bti\bit\btu\but\bti\bio\bon\bn
-       _\bP_\br_\bo_\bc_\be_\bs_\b _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn allows a process's input or output to be referred
-       to using a filename.  It takes the form of  <\b<(\b(_\bl_\bi_\bs_\bt)\b)  or  >\b>(\b(_\bl_\bi_\bs_\bt)\b).   The
-       process  _\bl_\bi_\bs_\bt is run asynchronously, and its input or output appears as
+       _\bP_\br_\bo_\bc_\be_\bs_\b_\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn allows a process's input or output to be  referred
+       to  using  a  filename.   It takes the form of <\b<(\b(_\bl_\bi_\bs_\bt)\b) or >\b>(\b(_\bl_\bi_\bs_\bt)\b).  The
+       process _\bl_\bi_\bs_\bt is run asynchronously, and its input or output appears  as
        a filename.  This filename is passed as an argument to the current com-
-       mand  as  the  result  of  the expansion.  If the >\b>(\b(_\bl_\bi_\bs_\bt)\b) form is used,
-       writing to the file will provide input for _\bl_\bi_\bs_\bt.  If the  <\b<(\b(_\bl_\bi_\bs_\bt)\b form
-       is  used,  the  file passed as an argument should be read to obtain the
+       mand as the result of the expansion.  If  the  >\b>(\b(_\bl_\bi_\bs_\bt)\b)  form  is  used,
+       writing  to  the file will provide input for _\bl_\bi_\bs_\bt.  If the <\b<(\b(_\bl_\bi_\bs_\bt)\b) form
+       is used, the file passed as an argument should be read  to  obtain  the
        output of _\bl_\bi_\bs_\bt.  Process substitution is supported on systems that sup-
        port named pipes (_\bF_\bI_\bF_\bO_\bs) or the /\b/d\bde\bev\bv/\b/f\bfd\bd method of naming open files.
 
-       When  available,  process substitution is performed simultaneously with
-       parameter and variable expansion, command substitution, and  arithmetic
+       When available, process substitution is performed  simultaneously  with
+       parameter  and variable expansion, command substitution, and arithmetic
        expansion.
 
    W\bWo\bor\brd\bd S\bSp\bpl\bli\bit\btt\bti\bin\bng\bg
-       The  shell  scans the results of parameter expansion, command substitu-
-       tion, and arithmetic expansion that did not occur within double  quotes
+       The shell scans the results of parameter expansion,  command  substitu-
+       tion,  and arithmetic expansion that did not occur within double quotes
        for _\bw_\bo_\br_\bd _\bs_\bp_\bl_\bi_\bt_\bt_\bi_\bn_\bg.
 
-       The  shell  treats each character of I\bIF\bFS\bS as a delimiter, and splits the
-       results of the other expansions into words using  these  characters  as
-       field   terminators.   If  I\bIF\bFS\bS  is  unset,  or  its  value  is  exactly
-       <\b<s\bsp\bpa\bac\bce\be>\b><\b<t\bta\bab\bb>\b><\b<n\bne\bew\bwl\bli\bin\bne\be>\b>, the default, then sequences of  <\b<s\bsp\bpa\bac\bce\be>\b>,  <\b<t\bta\bab\bb>\b>,
-       and  <\b<n\bne\bew\bwl\bli\bin\bne\be>\b>  at the beginning and end of the results of the previous
-       expansions are ignored, and any sequence of I\bIF\bFS\bS characters not  at  the
-       beginning  or  end  serves  to delimit words.  If I\bIF\bFS\bS has a value other
-       than the default, then sequences of the  whitespace  characters  s\bsp\bpa\bac\bce\be,
-       t\bta\bab\bb,  and  n\bne\bew\bwl\bli\bin\bne\be are ignored at the beginning and end of the word, as
-       long as the whitespace character is in the value of I\bIF\bFS\bS (an I\bIF\bFS\b white-
-       space  character).   Any  character  in I\bIF\bFS\bS that is not I\bIF\bFS\bS whitespace,
+       The shell treats each character of I\bIF\bFS\bS as a delimiter, and  splits  the
+       results  of  the  other expansions into words using these characters as
+       field  terminators.   If  I\bIF\bFS\bS  is  unset,  or  its  value  is   exactly
+       <\b<s\bsp\bpa\bac\bce\be>\b><\b<t\bta\bab\bb>\b><\b<n\bne\bew\bwl\bli\bin\bne\be>\b>,  the  default, then sequences of <\b<s\bsp\bpa\bac\bce\be>\b>, <\b<t\bta\bab\bb>\b>,
+       and <\b<n\bne\bew\bwl\bli\bin\bne\be>\b> at the beginning and end of the results of  the  previous
+       expansions  are  ignored, and any sequence of I\bIF\bFS\bS characters not at the
+       beginning or end serves to delimit words.  If I\bIF\bFS\bS  has  a  value  other
+       than  the  default,  then sequences of the whitespace characters s\bsp\bpa\bac\bce\be,
+       t\bta\bab\bb, and n\bne\bew\bwl\bli\bin\bne\be are ignored at the beginning and end of the  word,  as
+       long  as the whitespace character is in the value of I\bIF\bFS\bS (an I\bIF\bFS\bS white-
+       space character).  Any character in I\bIF\bFS\bS that  is  not  I\bIF\bFS\b whitespace,
        along with any adjacent I\bIF\bFS\bS whitespace characters, delimits a field.  A
-       sequence  of  I\bIF\bFS\bS whitespace characters is also treated as a delimiter.
+       sequence of I\bIF\bFS\bS whitespace characters is also treated as  a  delimiter.
        If the value of I\bIF\bFS\bS is null, no word splitting occurs.
 
-       Explicit null arguments ("\b""\b" or '\b''\b') are retained and passed to  commands
+       Explicit  null arguments ("\b""\b" or '\b''\b') are retained and passed to commands
        as empty strings.  Unquoted implicit null arguments, resulting from the
        expansion of parameters that have no values, are removed.  If a parame-
-       ter  with  no  value  is expanded within double quotes, a null argument
-       results and is retained and passed to a command  as  an  empty  string.
-       When  a  quoted null argument appears as part of a word whose expansion
-       is non-null, the null argument is removed.   That  is,  the  word  -d''
+       ter with no value is expanded within double  quotes,  a  null  argument
+       results  and  is  retained  and passed to a command as an empty string.
+       When a quoted null argument appears as part of a word  whose  expansion
+       is  non-null,  the  null  argument  is removed.  That is, the word -d''
        becomes -d after word splitting and null argument removal.
 
        Note that if no expansion occurs, no splitting is performed.
 
    P\bPa\bat\bth\bhn\bna\bam\bme\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
-       After  word  splitting,  unless  the -\b-f\bf option has been set, b\bba\bas\bsh\bh scans
-       each word for the characters *\b*, ?\b?, and [\b[.  If one of  these  characters
-       appears,  then  the word is regarded as a _\bp_\ba_\bt_\bt_\be_\br_\bn, and replaced with an
-       alphabetically sorted list of filenames matching the pattern (see  P\bPa\bat\bt-\b-
-       t\bte\ber\brn\b M\bMa\bat\btc\bch\bhi\bin\bng\bg  below).   If  no  matching filenames are found, and the
-       shell option n\bnu\bul\bll\blg\bgl\blo\bob\bb is not enabled, the word is left  unchanged.   If
-       the  n\bnu\bul\bll\blg\bgl\blo\bob\bb  option  is  set,  and  no matches are found, the word is
-       removed.  If the f\bfa\bai\bil\blg\bgl\blo\bob\bb shell option  is  set,  and  no  matches  are
+       After word splitting, unless the -\b-f\bf option has  been  set,  b\bba\bas\bsh\b scans
+       each  word  for the characters *\b*, ?\b?, and [\b[.  If one of these characters
+       appears, then the word is regarded as a _\bp_\ba_\bt_\bt_\be_\br_\bn, and replaced  with  an
+       alphabetically  sorted list of filenames matching the pattern (see P\bPa\bat\bt-\b-
+       t\bte\ber\brn\bM\bMa\bat\btc\bch\bhi\bin\bng\bg below).  If no matching  filenames  are  found,  and  the
+       shell  option  n\bnu\bul\bll\blg\bgl\blo\bob\bb is not enabled, the word is left unchanged.  If
+       the n\bnu\bul\bll\blg\bgl\blo\bob\bb option is set, and no  matches  are  found,  the  word  is
+       removed.   If  the  f\bfa\bai\bil\blg\bgl\blo\bob\bb  shell  option  is set, and no matches are
        found, an error message is printed and the command is not executed.  If
-       the shell option n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb 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``\b`.\b.'\b''\b'  at the start of a name  or
-       immediately  following  a  slash must be matched explicitly, unless the
-       shell option d\bdo\bot\btg\bgl\blo\bob\bb is set.  When matching a pathname, the slash char-
-       acter  must  always  be  matched explicitly.  In other cases, the `\b``\b`.\b.'\b''\b'
-       character is not treated specially.  See the description of s\bsh\bho\bop\bpt\bt below
-       under S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS for a description of the n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb, n\bnu\bul\bll\bl-\b-
-       g\bgl\blo\bob\bb, f\bfa\bai\bil\blg\bgl\blo\bob\bb, and d\bdo\bot\btg\bgl\blo\bob\bb shell options.
-
-       The G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE shell variable may be used to restrict the set of  file-
-       names matching a _\bp_\ba_\bt_\bt_\be_\br_\bn.  If G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is set, each matching filename
-       that also matches one of the patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is removed from the
-       list of matches.  If the n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb option is set, the matching against
-       the patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is performed without regard  to  case.   The
-       filenames  `\b``\b`.\b.'\b''\b'  and `\b``\b`.\b..\b.'\b''\b'  are always ignored when G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is set
-       and not null.  However, setting G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE to a non-null value has  the
-       effect  of  enabling  the  d\bdo\bot\btg\bgl\blo\bob\bb shell option, so all other filenames
-       beginning with a `\b``\b`.\b.'\b''\b'  will match.  To get the old behavior of  ignor-
-       ing  filenames beginning with a `\b``\b`.\b.'\b''\b', make `\b``\b`.\b.*\b*'\b''\b'  one of the patterns
-       in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE.  The d\bdo\bot\btg\bgl\blo\bob\bb  option  is  disabled  when  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE  is
-       unset.   The  pattern  matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell
+       the  shell option n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb 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``\b`.\b.'\b''\b'  at the start of a name or
+       immediately following a slash must be matched  explicitly,  unless  the
+       shell  option  d\bdo\bot\btg\bgl\blo\bob\bb  is  set.  The filenames `\b``\b`.\b.'\b''\b'  and `\b``\b`.\b..\b.'\b''\b'  must
+       always be matched explicitly, even if d\bdo\bot\btg\bgl\blo\bob\bb is set.  In other  cases,
+       the  `\b``\b`.\b.'\b''\b'   character is not treated specially.  When matching a path-
+       name, the slash character must always be matched explicitly by a  slash
+       in  the  pattern, but in other matching contexts it can be matched by a
+       special pattern character as described below  under  P\bPa\bat\btt\bte\ber\brn\bn  M\bMa\bat\btc\bch\bhi\bin\bng\bg.
+       See  the  description of s\bsh\bho\bop\bpt\bt below under S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS for a
+       description of the n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb, n\bnu\bul\bll\blg\bgl\blo\bob\bb, f\bfa\bai\bil\blg\bgl\blo\bob\bb,  and  d\bdo\bot\btg\bgl\blo\bob\bb  shell
+       options.
+
+       The  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE  shell variable may be used to restrict the set of file
+       names matching a _\bp_\ba_\bt_\bt_\be_\br_\bn.  If G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is  set,  each  matching  file
+       name  that  also  matches  one of the patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is removed
+       from the list of matches.  If the n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb option is set, the  match-
+       ing  against  the patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE is performed without regard to
+       case.  The filenames `\b``\b`.\b.'\b''\b'  and `\b``\b`.\b..\b.'\b''\b'  are always ignored when G\bGL\bLO\bOB\bBI\bIG\bG-\b-
+       N\bNO\bOR\bRE\bE  is  set  and not null.  However, setting G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE to a non-null
+       value has the effect of enabling the d\bdo\bot\btg\bgl\blo\bob\bb shell option, so all other
+       filenames  beginning with a `\b``\b`.\b.'\b''\b'  will match.  To get the old behavior
+       of ignoring filenames beginning with a `\b``\b`.\b.'\b''\b', make `\b``\b`.\b.*\b*'\b''\b'  one  of  the
+       patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE.  The d\bdo\bot\btg\bgl\blo\bob\bb option is disabled when G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE
+       is unset.  The pattern matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell
        option.
 
        P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg
 
        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 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.
 
        The special pattern characters have the following meanings:
 
-              *\b*      Matches any string, including the null string.  When  the
-                     g\bgl\blo\bob\bbs\bst\bta\bar\b shell  option  is  enabled,  and *\b* is used in a
-                     pathname expansion context, two adjacent  *\b*s  used  as  a
-                     single  pattern  will  match  all  files and zero or more
-                     directories and subdirectories.  If followed by a /\b/,  two
-                     adjacent  *\b*s  will match only directories and subdirecto-
+              *\b*      Matches  any string, including the null string.  When the
+                     g\bgl\blo\bob\bbs\bst\bta\bar\bshell option is enabled, and  *\b*  is  used  in  a
+                     pathname  expansion  context,  two  adjacent *\b*s used as a
+                     single pattern will match all  files  and  zero  or  more
+                     directories  and subdirectories.  If followed by a /\b/, two
+                     adjacent *\b*s will match only directories  and  subdirecto-
                      ries.
               ?\b?      Matches any single character.
-              [\b[.\b..\b..\b.]\b]  Matches any one of the enclosed characters.   A  pair  of
-                     characters  separated by a hyphen denotes a _\br_\ba_\bn_\bg_\be _\be_\bx_\bp_\br_\be_\bs_\b-
-                     _\bs_\bi_\bo_\bn; any character that falls between those two  charac-
-                     ters,  inclusive,  using  the  current locale's collating
-                     sequence and character set, is  matched.   If  the  first
+              [\b[.\b..\b..\b.]\b]  Matches  any  one  of the enclosed characters.  A pair of
+                     characters separated by a hyphen denotes a _\br_\ba_\bn_\bg_\b _\be_\bx_\bp_\br_\be_\bs_\b-
+                     _\bs_\bi_\bo_\bn;  any character that falls between those two charac-
+                     ters, 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 charac-
-                     ter not enclosed is matched.  The sorting order of  char-
-                     acters  in range expressions is determined by the current
-                     locale and the values of the L\bLC\bC_\b_C\bCO\bOL\bLL\bLA\bAT\bTE\bE or  L\bLC\bC_\b_A\bAL\bLL\b shell
+                     ter  not enclosed is matched.  The sorting order of char-
+                     acters in range expressions is determined by the  current
+                     locale  and  the values of the L\bLC\bC_\b_C\bCO\bOL\bLL\bLA\bAT\bTE\bE or L\bLC\bC_\b_A\bAL\bLL\bL shell
                      variables, if set.  To obtain the traditional interpreta-
-                     tion of range expressions, where [\b[a\ba-\b-d\bd]\b] is  equivalent  to
-                     [\b[a\bab\bbc\bcd\bd]\b],  set  value of the L\bLC\bC_\b_A\bAL\bLL\bL shell variable to C\bC, or
-                     enable the g\bgl\blo\bob\bba\bas\bsc\bci\bii\bir\bra\ban\bng\bge\bes\bs shell  option.   A  -\b-  may  be
+                     tion  of  range expressions, where [\b[a\ba-\b-d\bd]\b] is equivalent to
+                     [\b[a\bab\bbc\bcd\bd]\b], set value of the L\bLC\bC_\b_A\bAL\bLL\bL shell variable to  C\bC,  or
+                     enable  the  g\bgl\blo\bob\bba\bas\bsc\bci\bii\bir\bra\ban\bng\bge\bes\bs  shell  option.   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.
 
-                     Within  [\b[ and ]\b], _\bc_\bh_\ba_\br_\ba_\bc_\bt_\be_\br _\bc_\bl_\ba_\bs_\bs_\be_\bs can be specified using
+                     Within [\b[ and ]\b], _\bc_\bh_\ba_\br_\ba_\bc_\bt_\be_\br _\bc_\bl_\ba_\bs_\bs_\be_\bs can be specified  using
                      the syntax [\b[:\b:_\bc_\bl_\ba_\bs_\bs:\b:]\b], where _\bc_\bl_\ba_\bs_\bs is one of the following
                      classes defined in the POSIX standard:
-                     a\bal\bln\bnu\bum\b a\bal\blp\bph\bha\ba  a\bas\bsc\bci\bii\bi  b\bbl\bla\ban\bnk\bk  c\bcn\bnt\btr\brl\bl d\bdi\big\bgi\bit\bt g\bgr\bra\bap\bph\bh l\blo\bow\bwe\ber\br p\bpr\bri\bin\bnt\bt
+                     a\bal\bln\bnu\bum\ba\bal\blp\bph\bha\ba a\bas\bsc\bci\bii\bi b\bbl\bla\ban\bnk\bk c\bcn\bnt\btr\brl\bl  d\bdi\big\bgi\bit\bt  g\bgr\bra\bap\bph\bh  l\blo\bow\bwe\ber\b p\bpr\bri\bin\bnt\bt
                      p\bpu\bun\bnc\bct\bt s\bsp\bpa\bac\bce\be u\bup\bpp\bpe\ber\br w\bwo\bor\brd\bd x\bxd\bdi\big\bgi\bit\bt
                      A character class matches any character belonging to that
                      class.  The w\bwo\bor\brd\bd character class matches letters, digits,
                      and the character _.
 
-                     Within [\b[ and ]\b], an _\be_\bq_\bu_\bi_\bv_\ba_\bl_\be_\bn_\bc_\be  _\bc_\bl_\ba_\bs_\bs  can  be  specified
+                     Within  [\b[  and  ]\b],  an _\be_\bq_\bu_\bi_\bv_\ba_\bl_\be_\bn_\bc_\be _\bc_\bl_\ba_\bs_\bs can be specified
                      using the syntax [\b[=\b=_\bc=\b=]\b], which matches all characters with
-                     the same collation weight  (as  defined  by  the  current
+                     the  same  collation  weight  (as  defined by the current
                      locale) as the character _\bc.
 
                      Within [\b[ and ]\b], the syntax [\b[.\b._\bs_\by_\bm_\bb_\bo_\bl.\b.]\b] matches the collat-
                      ing symbol _\bs_\by_\bm_\bb_\bo_\bl.
 
        If the e\bex\bxt\btg\bgl\blo\bob\bb shell option is enabled using the s\bsh\bho\bop\bpt\bt builtin, several
-       extended  pattern  matching operators are recognized.  In the following
+       extended pattern matching operators are recognized.  In  the  following
        description, a _\bp_\ba_\bt_\bt_\be_\br_\bn_\b-_\bl_\bi_\bs_\bt is a list of one or more patterns separated
        by a |\b|.  Composite patterns may be formed using one or more of the fol-
        lowing sub-patterns:
@@ -1963,63 +2028,71 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
               !\b!(\b(_\bp_\ba_\bt_\bt_\be_\br_\bn_\b-_\bl_\bi_\bs_\bt)\b)
                      Matches anything except one of the given patterns
 
+       Complicated  extended  pattern  matching  against long strings is slow,
+       especially when the patterns contain alternations and the strings  con-
+       tain multiple matches.  Using separate matches against shorter strings,
+       or using arrays of strings instead of a  single  long  string,  may  be
+       faster.
+
    Q\bQu\buo\bot\bte\be R\bRe\bem\bmo\bov\bva\bal\bl
        After the preceding expansions, all unquoted occurrences of the charac-
-       ters  \\b\,  '\b', and "\b" that did not result from one of the above expansions
+       ters \\b\, '\b', and "\b" that did not result from one of the  above  expansions
        are removed.
 
 R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
-       Before a command is executed, its input and output  may  be  _\br_\be_\bd_\bi_\br_\be_\bc_\bt_\be_\bd
-       using  a special notation interpreted by the shell.  Redirection allows
-       commands' file handles to be duplicated, opened, closed, made to  refer
+       Before  a  command  is executed, its input and output may be _\br_\be_\bd_\bi_\br_\be_\bc_\bt_\be_\bd
+       using a special notation interpreted by the shell.  Redirection  allows
+       commands'  file handles to be duplicated, opened, closed, made to refer
        to different files, and can change the files the command reads from and
-       writes to.  Redirection may also be used to modify file handles in  the
-       current  shell execution environment.  The following redirection opera-
+       writes  to.  Redirection may also be used to modify file handles in the
+       current shell execution environment.  The following redirection  opera-
        tors may precede or appear anywhere within a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd or may fol-
-       low  a  _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   Redirections are processed in the order they appear,
+       low a _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  Redirections are processed in the  order  they  appear,
        from left to right.
 
-       Each redirection that may be preceded by a file descriptor  number  may
+       Each  redirection  that may be preceded by a file descriptor number may
        instead be preceded by a word of the form {_\bv_\ba_\br_\bn_\ba_\bm_\be}.  In this case, for
        each redirection operator except >&- and <&-, the shell will allocate a
-       file  descriptor  greater than or equal to 10 and assign it to _\bv_\ba_\br_\bn_\ba_\bm_\be.
-       If >&- or <&- is preceded by {_\bv_\ba_\br_\bn_\ba_\bm_\be}, the value  of  _\bv_\ba_\br_\bn_\ba_\bm_\be  defines
-       the file descriptor to close.
-
-       In  the  following descriptions, if the file descriptor number is omit-
-       ted, and the first character of the redirection operator is <\b<, the  re-
-       direction  refers  to  the  standard input (file descriptor 0).  If the
-       first character of the  redirection  operator  is  >\b>,  the  redirection
+       file descriptor greater than or equal to 10 and assign it  to  _\bv_\ba_\br_\bn_\ba_\bm_\be.
+       If  >&-  or  <&- is preceded by {_\bv_\ba_\br_\bn_\ba_\bm_\be}, the value of _\bv_\ba_\br_\bn_\ba_\bm_\be defines
+       the file descriptor to close.  If {_\bv_\ba_\br_\bn_\ba_\bm_\be} is supplied, the  redirect-
+       ion  persists  beyond the scope of the command, allowing the shell pro-
+       grammer to manage the file descriptor himself.
+
+       In the following descriptions, if the file descriptor number  is  omit-
+       ted,  and the first character of the redirection operator is <\b<, the re-
+       direction refers to the standard input (file  descriptor  0).   If  the
+       first  character  of  the  redirection  operator  is >\b>, the redirection
        refers to the standard output (file descriptor 1).
 
-       The  word  following the redirection operator in the following descrip-
-       tions, unless otherwise noted, is subjected to brace  expansion,  tilde
-       expansion,  parameter  and  variable  expansion,  command substitution,
-       arithmetic expansion,  quote  removal,  pathname  expansion,  and  word
+       The word following the redirection operator in the  following  descrip-
+       tions,  unless  otherwise noted, is subjected to brace expansion, tilde
+       expansion, parameter  and  variable  expansion,  command  substitution,
+       arithmetic  expansion,  quote  removal,  pathname  expansion,  and word
        splitting.  If it expands to more than one word, b\bba\bas\bsh\bh reports an error.
 
-       Note  that  the order of redirections is significant.  For example, the
+       Note that the order of redirections is significant.  For  example,  the
        command
 
               ls >\b> dirlist 2>\b>&\b&1
 
-       directs both standard output and standard error to  the  file  _\bd_\bi_\br_\bl_\bi_\bs_\bt,
+       directs  both  standard  output and standard error to the file _\bd_\bi_\br_\bl_\bi_\bs_\bt,
        while the command
 
               ls 2>\b>&\b&1 >\b> dirlist
 
-       directs  only the standard output to file _\bd_\bi_\br_\bl_\bi_\bs_\bt, because the standard
-       error was duplicated from the standard output before the standard  out-
+       directs only the standard output to file _\bd_\bi_\br_\bl_\bi_\bs_\bt, because the  standard
+       error  was duplicated from the standard output before the standard out-
        put was redirected to _\bd_\bi_\br_\bl_\bi_\bs_\bt.
 
        B\bBa\bas\bsh\bh handles several filenames specially when they are used in redirec-
        tions, as described in the following table.  If the operating system on
        which b\bba\bas\bsh\bh is running provides these special files, bash will use them;
-       otherwise it will emulate them internally with the  behavior  described
+       otherwise  it  will emulate them internally with the behavior described
        below.
 
               /\b/d\bde\bev\bv/\b/f\bfd\bd/\b/_\bf_\bd
-                     If  _\bf_\bd  is  a valid integer, file descriptor _\bf_\bd is dupli-
+                     If _\bf_\bd is a valid integer, file descriptor  _\bf_\bd  is  dupli-
                      cated.
               /\b/d\bde\bev\bv/\b/s\bst\btd\bdi\bin\bn
                      File descriptor 0 is duplicated.
@@ -2029,22 +2102,22 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
                      File descriptor 2 is duplicated.
               /\b/d\bde\bev\bv/\b/t\btc\bcp\bp/\b/_\bh_\bo_\bs_\bt/\b/_\bp_\bo_\br_\bt
                      If _\bh_\bo_\bs_\bt is a valid hostname or Internet address, and _\bp_\bo_\br_\bt
-                     is  an integer port number or service name, b\bba\bas\bsh\bh attempts
+                     is an integer port number or service name, b\bba\bas\bsh\b attempts
                      to open the corresponding TCP socket.
               /\b/d\bde\bev\bv/\b/u\bud\bdp\bp/\b/_\bh_\bo_\bs_\bt/\b/_\bp_\bo_\br_\bt
                      If _\bh_\bo_\bs_\bt is a valid hostname or Internet address, and _\bp_\bo_\br_\bt
-                     is  an integer port number or service name, b\bba\bas\bsh\bh attempts
+                     is an integer port number or service name, b\bba\bas\bsh\b attempts
                      to open the corresponding UDP socket.
 
        A failure to open or create a file causes the redirection to fail.
 
-       Redirections using file descriptors greater than 9 should be used  with
-       care,  as they may conflict with file descriptors the shell uses inter-
+       Redirections  using file descriptors greater than 9 should be used with
+       care, as they may conflict with file descriptors the shell uses  inter-
        nally.
 
    R\bRe\bed\bdi\bir\bre\bec\bct\bti\bin\bng\bg I\bIn\bnp\bpu\but\bt
        Redirection of input causes the file whose name results from the expan-
-       sion  of  _\bw_\bo_\br_\bd  to  be  opened for reading on file descriptor _\bn, or the
+       sion of _\bw_\bo_\br_\bd to be opened for reading on  file  descriptor  _\bn,  or  the
        standard input (file descriptor 0) if _\bn is not specified.
 
        The general format for redirecting input is:
@@ -2052,27 +2125,27 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
               [_\bn]<\b<_\bw_\bo_\br_\bd
 
    R\bRe\bed\bdi\bir\bre\bec\bct\bti\bin\bng\bg O\bOu\but\btp\bpu\but\bt
-       Redirection of output causes the  file  whose  name  results  from  the
+       Redirection  of  output  causes  the  file  whose name results from the
        expansion of _\bw_\bo_\br_\bd to be opened for writing on file descriptor _\bn, or the
        standard output (file descriptor 1) if _\bn is not specified.  If the file
-       does  not exist it is created; if it does exist it is truncated to zero
+       does not exist it is created; if it does exist it is truncated to  zero
        size.
 
        The general format for redirecting output is:
 
               [_\bn]>\b>_\bw_\bo_\br_\bd
 
-       If the redirection operator is >\b>, and the n\bno\boc\bcl\blo\bob\bbb\bbe\ber\br option to  the  s\bse\bet\bt
-       builtin  has  been enabled, the redirection will fail if the file whose
-       name results from the expansion of _\bw_\bo_\br_\bd exists and is a  regular  file.
+       If  the  redirection operator is >\b>, and the n\bno\boc\bcl\blo\bob\bbb\bbe\ber\br option to the s\bse\bet\bt
+       builtin has been enabled, the redirection will fail if the  file  whose
+       name  results  from the expansion of _\bw_\bo_\br_\bd exists and is a regular file.
        If the redirection operator is >\b>|\b|, or the redirection operator is >\b> and
        the n\bno\boc\bcl\blo\bob\bbb\bbe\ber\br option to the s\bse\bet\bt builtin command is not enabled, the re-
        direction is attempted even if the file named by _\bw_\bo_\br_\bd exists.
 
    A\bAp\bpp\bpe\ben\bnd\bdi\bin\bng\bg R\bRe\bed\bdi\bir\bre\bec\bct\bte\bed\bd O\bOu\but\btp\bpu\but\bt
-       Redirection  of  output  in  this  fashion  causes  the file whose name
-       results from the expansion of _\bw_\bo_\br_\bd to be opened for appending  on  file
-       descriptor  _\bn,  or  the standard output (file descriptor 1) if _\bn is not
+       Redirection of output in  this  fashion  causes  the  file  whose  name
+       results  from  the expansion of _\bw_\bo_\br_\bd to be opened for appending on file
+       descriptor _\bn, or the standard output (file descriptor 1) if  _\bn  is  not
        specified.  If the file does not exist it is created.
 
        The general format for appending output is:
@@ -2080,11 +2153,11 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
               [_\bn]>\b>>\b>_\bw_\bo_\br_\bd
 
    R\bRe\bed\bdi\bir\bre\bec\bct\bti\bin\bng\bg S\bSt\bta\ban\bnd\bda\bar\brd\bd O\bOu\but\btp\bpu\but\bt a\ban\bnd\bd S\bSt\bta\ban\bnd\bda\bar\brd\bd E\bEr\brr\bro\bor\br
-       This construct allows both the standard output (file descriptor 1)  and
-       the  standard  error output (file descriptor 2) to be redirected to the
+       This  construct allows both the standard output (file descriptor 1) and
+       the standard error output (file descriptor 2) to be redirected  to  the
        file whose name is the expansion of _\bw_\bo_\br_\bd.
 
-       There are two formats for  redirecting  standard  output  and  standard
+       There  are  two  formats  for  redirecting standard output and standard
        error:
 
               &\b&>\b>_\bw_\bo_\br_\bd
@@ -2096,13 +2169,13 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
 
               >\b>_\bw_\bo_\br_\bd 2>\b>&\b&1
 
-       When using the second form, _\bw_\bo_\br_\bd may not expand to a number or  -\b-.   If
-       it  does,  other  redirection  operators  apply  (see  D\bDu\bup\bpl\bli\bic\bca\bat\bti\bin\bng\bg F\bFi\bil\ble\be
+       When  using  the second form, _\bw_\bo_\br_\bd may not expand to a number or -\b-.  If
+       it does,  other  redirection  operators  apply  (see  D\bDu\bup\bpl\bli\bic\bca\bat\bti\bin\bng\b F\bFi\bil\ble\be
        D\bDe\bes\bsc\bcr\bri\bip\bpt\bto\bor\brs\bs below) for compatibility reasons.
 
    A\bAp\bpp\bpe\ben\bnd\bdi\bin\bng\bg S\bSt\bta\ban\bnd\bda\bar\brd\bd O\bOu\but\btp\bpu\but\bt a\ban\bnd\bd S\bSt\bta\ban\bnd\bda\bar\brd\bd E\bEr\brr\bro\bor\br
-       This construct allows both the standard output (file descriptor 1)  and
-       the  standard  error  output  (file descriptor 2) to be appended to the
+       This  construct allows both the standard output (file descriptor 1) and
+       the standard error output (file descriptor 2) to  be  appended  to  the
        file whose name is the expansion of _\bw_\bo_\br_\bd.
 
        The format for appending standard output and standard error is:
@@ -2116,10 +2189,10 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
        (see D\bDu\bup\bpl\bli\bic\bca\bat\bti\bin\bng\bg F\bFi\bil\ble\be D\bDe\bes\bsc\bcr\bri\bip\bpt\bto\bor\brs\bs below).
 
    H\bHe\ber\bre\be D\bDo\boc\bcu\bum\bme\ben\bnt\bts\bs
-       This type of redirection instructs the shell to  read  input  from  the
+       This  type  of  redirection  instructs the shell to read input from the
        current source until a line containing only _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br (with no trailing
-       blanks) is seen.  All of the lines read up to that point are then  used
-       as  the  standard  input (or file descriptor _\bn if _\bn is specified) for a
+       blanks)  is seen.  All of the lines read up to that point are then used
+       as the standard input (or file descriptor _\bn if _\bn is  specified)  for  a
        command.
 
        The format of here-documents is:
@@ -2128,18 +2201,18 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
                       _\bh_\be_\br_\be_\b-_\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt
               _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br
 
-       No parameter and variable expansion, command  substitution,  arithmetic
-       expansion,  or pathname expansion is performed on _\bw_\bo_\br_\bd.  If any part of
-       _\bw_\bo_\br_\bis quoted, the _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br is the result of quote removal  on  _\bw_\bo_\br_\bd,
-       and  the  lines  in  the  here-document  are  not expanded.  If _\bw_\bo_\br_\bd is
-       unquoted, all lines of the here-document  are  subjected  to  parameter
-       expansion,  command substitution, and arithmetic expansion, the charac-
-       ter sequence \\b\<\b<n\bne\bew\bwl\bli\bin\bne\be>\b> is ignored, and \\b\ must be  used  to  quote  the
+       No  parameter  and variable expansion, command substitution, arithmetic
+       expansion, or pathname expansion is performed on _\bw_\bo_\br_\bd.  If any part  of
+       _\bw_\bo_\br_\b is  quoted, the _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br is the result of quote removal on _\bw_\bo_\br_\bd,
+       and the lines in the  here-document  are  not  expanded.   If  _\bw_\bo_\br_\b is
+       unquoted,  all  lines  of  the here-document are subjected to parameter
+       expansion, command substitution, and arithmetic expansion, the  charac-
+       ter  sequence  \\b\<\b<n\bne\bew\bwl\bli\bin\bne\be>\b>  is  ignored, and \\b\ must be used to quote the
        characters \\b\, $\b$, and `\b`.
 
        If the redirection operator is <\b<<\b<-\b-, then all leading tab characters are
-       stripped from input lines and  the  line  containing  _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br.   This
-       allows  here-documents within shell scripts to be indented in a natural
+       stripped  from  input  lines  and  the line containing _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br.  This
+       allows here-documents within shell scripts to be indented in a  natural
        fashion.
 
    H\bHe\ber\bre\be S\bSt\btr\bri\bin\bng\bgs\bs
@@ -2147,12 +2220,11 @@ R\bRE\bED\bDI\bIR\bRE\bEC\bCT\bTI\bIO\bON\bN
 
               [_\bn]<\b<<\b<<\b<_\bw_\bo_\br_\bd
 
-       The _\bw_\bo_\br_\bd undergoes brace  expansion,  tilde  expansion,  parameter  and
-       variable  expansion,  command  substitution,  arithmetic expansion, and
-       quote removal.  Pathname expansion and  word  splitting  are  not  per-
-       formed.   The  result  is  supplied  as a single string, with a newline
-       appended, to the command on its standard input (or file descriptor _\bn if
-       _\bn is specified).
+       The  _\bw_\bo_\br_\bd  undergoes tilde expansion, parameter and variable expansion,
+       command substitution, arithmetic expansion, and quote  removal.   Path-
+       name  expansion  and  word  splitting are not performed.  The result is
+       supplied as a single string, with a newline appended, to the command on
+       its standard input (or file descriptor _\bn if _\bn is specified).
 
    D\bDu\bup\bpl\bli\bic\bca\bat\bti\bin\bng\bg F\bFi\bil\ble\be D\bDe\bes\bsc\bcr\bri\bip\bpt\bto\bor\brs\bs
        The redirection operator
@@ -2232,19 +2304,19 @@ A\bAL\bLI\bIA\bAS\bSE\bES\bS
        s\bsh\bho\bop\bpt\bt under S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
 
        The rules concerning the definition and use  of  aliases  are  somewhat
-       confusing.   B\bBa\bas\bsh\b always  reads  at  least  one complete line of input
-       before executing any  of  the  commands  on  that  line.   Aliases  are
-       expanded  when  a command is read, not when it is executed.  Therefore,
-       an alias definition appearing on the same line as another command  does
-       not  take  effect  until  the next line of input is read.  The commands
-       following the alias definition on that line are not affected by the new
-       alias.   This  behavior  is  also an issue when functions are executed.
-       Aliases are expanded when a function definition is read, not  when  the
-       function  is  executed,  because a function definition is itself a com-
-       mand.  As a consequence, aliases defined in a function are  not  avail-
-       able  until  after  that  function is executed.  To be safe, always put
-       alias definitions on a separate line, and do not use a\bal\bli\bia\bas\bs in  compound
-       commands.
+       confusing.   B\bBa\bas\bsh\balways reads at least one complete line of input, and
+       all lines that make up a compound command, before executing any of  the
+       commands  on  that  line or the compound command.  Aliases are expanded
+       when a command is read, not when it is executed.  Therefore,  an  alias
+       definition  appearing on the same line as another command does not take
+       effect until the next line of input is read.   The  commands  following
+       the  alias  definition  on that line are not affected by the new alias.
+       This behavior is also an issue when functions  are  executed.   Aliases
+       are  expanded when a function definition is read, not when the function
+       is executed, because a function definition is itself a command.   As  a
+       consequence,  aliases  defined  in  a  function are not available until
+       after that function is executed.  To be safe, always put alias  defini-
+       tions on a separate line, and do not use a\bal\bli\bia\bas\bs in compound commands.
 
        For almost every purpose, aliases are superseded by shell functions.
 
@@ -2273,29 +2345,57 @@ F\bFU\bUN\bNC\bCT\bTI\bIO\bON\bNS\bS
 
        Variables  local to the function may be declared with the l\blo\boc\bca\bal\bl builtin
        command.  Ordinarily, variables and their values are shared between the
-       function and its caller.
-
-       The  F\bFU\bUN\bNC\bCN\bNE\bES\bST\bT  variable,  if  set  to  a  numeric value greater than 0,
-       defines a maximum function nesting level.   Function  invocations  that
+       function  and  its  caller.  If a variable is declared l\blo\boc\bca\bal\bl, the vari-
+       able's visible scope is restricted to that function  and  its  children
+       (including the functions it calls).  Local variables "shadow" variables
+       with the same name declared at previous scopes.  For instance, a  local
+       variable  declared  in  a  function hides a global variable of the same
+       name: references and assignments refer to the local  variable,  leaving
+       the  global variable unmodified.  When the function returns, the global
+       variable is once again visible.
+
+       The shell uses _\bd_\by_\bn_\ba_\bm_\bi_\bc  _\bs_\bc_\bo_\bp_\bi_\bn_\bg  to  control  a  variable's  visibility
+       within  functions.   With  dynamic scoping, visible variables and their
+       values are a result of the sequence of function calls that caused  exe-
+       cution  to  reach the current function.  The value of a variable that a
+       function sees depends on its value within its caller, if  any,  whether
+       that  caller  is the "global" scope or another shell function.  This is
+       also the value that a local variable  declaration  "shadows",  and  the
+       value that is restored when the function returns.
+
+       For  example, if a variable _\bv_\ba_\br is declared as local in function _\bf_\bu_\bn_\bc_\b1,
+       and _\bf_\bu_\bn_\bc_\b1 calls another function _\bf_\bu_\bn_\bc_\b2, references  to  _\bv_\ba_\br  made  from
+       within _\bf_\bu_\bn_\bc_\b2 will resolve to the local variable _\bv_\ba_\br from _\bf_\bu_\bn_\bc_\b1, shadow-
+       ing any global variable named _\bv_\ba_\br.
+
+       The u\bun\bns\bse\bet\bt builtin also acts using the same dynamic scope: if a variable
+       is local to the current scope, u\bun\bns\bse\bet\bt will unset it; otherwise the unset
+       will refer to the variable found in  any  calling  scope  as  described
+       above.   If  a  variable  at  the current local scope is unset, it will
+       remain so until it is  reset  in  that  scope  or  until  the  function
+       returns.   Once the function returns, any instance of the variable at a
+       previous scope will become visible.  If the unset acts on a variable at
+       a  previous  scope,  any instance of a variable with that name that had
+       been shadowed will become visible.
+
+       The F\bFU\bUN\bNC\bCN\bNE\bES\bST\bT variable, if set  to  a  numeric  value  greater  than  0,
+       defines  a  maximum  function nesting level.  Function invocations that
        exceed the limit cause the entire command to abort.
 
-       If  the  builtin command r\bre\bet\btu\bur\brn\bn is executed in a function, the function
-       completes and execution resumes with the next command after  the  func-
-       tion  call.   Any  command  associated with the R\bRE\bET\bTU\bUR\bRN\bN trap is executed
+       If the builtin command r\bre\bet\btu\bur\brn\bn is executed in a function,  the  function
+       completes  and  execution resumes with the next command after the func-
+       tion call.  Any command associated with the  R\bRE\bET\bTU\bUR\bRN\bN  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
+       positional parameters and the special parameter #\b# are restored  to  the
        values they had prior to the function's execution.
 
-       Function names and definitions may be listed with the -\b-f\bf option to  the
+       Function  names and definitions may be listed with the -\b-f\bf option to the
        d\bde\bec\bcl\bla\bar\bre\be or t\bty\byp\bpe\bes\bse\bet\bt builtin commands.  The -\b-F\bF option to d\bde\bec\bcl\bla\bar\bre\be or t\bty\byp\bpe\be-\b-
-       s\bse\bet\bt will list the function names only (and optionally the  source  file
-       and  line  number, if the e\bex\bxt\btd\bde\beb\bbu\bug\bg shell option is enabled).  Functions
-       may be exported so that subshells automatically have them defined  with
-       the  -\b-f\bf  option  to  the  e\bex\bxp\bpo\bor\brt\bt builtin.  A function definition may be
-       deleted using the -\b-f\bf option to the  u\bun\bns\bse\bet\bt  builtin.   Note  that  shell
-       functions and variables with the same name may result in multiple iden-
-       tically-named entries in the environment passed to  the  shell's  chil-
-       dren.  Care should be taken in cases where this may cause a problem.
+       s\bse\bet\bt  will  list the function names only (and optionally the source file
+       and line number, if the e\bex\bxt\btd\bde\beb\bbu\bug\bg shell option is  enabled).   Functions
+       may  be exported so that subshells automatically have them defined with
+       the -\b-f\bf option to the e\bex\bxp\bpo\bor\brt\bt builtin.   A  function  definition  may  be
+       deleted using the -\b-f\bf option to the u\bun\bns\bse\bet\bt builtin.
 
        Functions may be recursive.  The F\bFU\bUN\bNC\bCN\bNE\bES\bST\bT variable may be used to limit
        the depth of the function call stack and restrict the number  of  func-
@@ -2314,9 +2414,9 @@ A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN
 
        _\bi_\bd+\b++\b+ _\bi_\bd-\b--\b-
               variable post-increment and post-decrement
+       -\b- +\b+    unary minus and plus
        +\b++\b+_\bi_\bd -\b--\b-_\bi_\bd
               variable pre-increment and pre-decrement
-       -\b- +\b+    unary minus and plus
        !\b! ~\b~    logical and bitwise negation
        *\b**\b*     exponentiation
        *\b* /\b/ %\b%  multiplication, division, remainder
@@ -2365,15 +2465,19 @@ A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN
 C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS
        Conditional expressions are used by the [\b[[\b[  compound  command  and  the
        t\bte\bes\bst\bt  and [\b[ builtin commands to test file attributes and perform string
-       and arithmetic comparisons.  Expressions are formed from the  following
-       unary  or  binary  primaries.  B\bBa\bas\bsh\bh handles several filenames specially
-       when they are used in expressions.  If the operating  system  on  which
-       b\bba\bas\bsh\bh  is running provides these special files, bash will use them; oth-
-       erwise it will emulate them internally with this behavior: If any  _\bf_\bi_\bl_\be
-       argument  to  one  of the primaries is of the form _\b/_\bd_\be_\bv_\b/_\bf_\bd_\b/_\bn, then file
-       descriptor _\bn is checked.  If the _\bf_\bi_\bl_\be argument to one of the  primaries
-       is  one  of _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\bi_\bn, _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\bo_\bu_\bt, or _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\be_\br_\br, file descriptor 0,
-       1, or 2, respectively, is checked.
+       and arithmetic comparisons.  The t\bte\bes\bst\bt abd [\b[  commands  determine  their
+       behavior  based  on  the  number  of arguments; see the descriptions of
+       those commands for any other command-specific actions.
+
+       Expressions are formed from the following unary  or  binary  primaries.
+       B\bBa\bas\bsh\bh  handles several filenames specially when they are used in expres-
+       sions.  If the operating system on which b\bba\bas\bsh\bh is running provides these
+       special  files,  bash  will  use  them;  otherwise it will emulate them
+       internally with this behavior: If any _\bf_\bi_\bl_\be argument to one of the  pri-
+       maries is of the form _\b/_\bd_\be_\bv_\b/_\bf_\bd_\b/_\bn, then file descriptor _\bn is checked.  If
+       the _\bf_\bi_\bl_\be argument to  one  of  the  primaries  is  one  of  _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\bi_\bn,
+       _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\bo_\bu_\bt,  or _\b/_\bd_\be_\bv_\b/_\bs_\bt_\bd_\be_\br_\br, file descriptor 0, 1, or 2, respectively,
+       is checked.
 
        Unless otherwise specified, primaries that operate on files follow sym-
        bolic links and operate on the target of the link, rather than the link
@@ -2470,7 +2574,9 @@ C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS
               binary  operators return true if _\ba_\br_\bg_\b1 is equal to, not equal to,
               less than, less than or equal to, greater than, or greater  than
               or  equal  to _\ba_\br_\bg_\b2, respectively.  _\bA_\br_\bg_\b1 and _\ba_\br_\bg_\b2 may be positive
-              or negative integers.
+              or negative integers.  When used with the [\b[[\b[ command,  _\bA_\br_\bg_\b1  and
+              _\bA_\br_\bg_\b2  are  evaluated  as arithmetic expressions  (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC
+              E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN above).
 
 S\bSI\bIM\bMP\bPL\bLE\bE C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        When a simple command is executed, the  shell  performs  the  following
@@ -2529,43 +2635,44 @@ C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN
        performed only if the command is not found in the hash table.   If  the
        search is unsuccessful, the shell searches for a defined shell function
        named c\bco\bom\bmm\bma\ban\bnd\bd_\b_n\bno\bot\bt_\b_f\bfo\bou\bun\bnd\bd_\b_h\bha\ban\bnd\bdl\ble\be.  If that function exists, it is invoked
-       with  the  original command and the original command's arguments as its
-       arguments, and the function's exit status becomes the  exit  status  of
-       the  shell.  If that function is not defined, the shell prints an error
-       message and returns an exit status of 127.
+       in  a  separate execution environment with the original command and the
+       original command's arguments as its arguments, and the function's  exit
+       status  becomes  the exit status of that subshell.  If that function is
+       not defined, the shell prints an error message and returns an exit sta-
+       tus of 127.
 
-       If the search is successful, or if the command  name  contains  one  or
+       If  the  search  is  successful, or if the command name contains one or
        more slashes, the shell executes the named program in a separate execu-
        tion environment.  Argument 0 is set to the name given, and the remain-
        ing arguments to the command are set to the arguments given, if any.
 
-       If  this  execution fails because the file is not in executable format,
-       and the file is not a directory, it is assumed to be a _\bs_\bh_\be_\bl_\bl _\bs_\bc_\br_\bi_\bp_\bt,  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  h\bha\bas\bsh\b below
+       If this execution fails because the file is not in  executable  format,
+       and  the file is not a directory, it is assumed to be a _\bs_\bh_\be_\bl_\bl _\bs_\bc_\br_\bi_\bp_\bt, 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 h\bha\bas\bsh\bh below
        under S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS) are retained by the child.
 
-       If  the program is a file beginning with #\b#!\b!, the remainder of the first
-       line specifies an interpreter for the program.  The shell executes  the
+       If the program is a file beginning with #\b#!\b!, the remainder of the  first
+       line  specifies an interpreter for the program.  The shell executes the
        specified interpreter on operating systems that do not handle this exe-
        cutable format themselves.  The arguments to the interpreter consist of
-       a  single optional argument following the interpreter name on the first
-       line of the program, followed by the name of the program,  followed  by
+       a single optional argument following the interpreter name on the  first
+       line  of  the program, followed by the name of the program, followed by
        the command arguments, if any.
 
 C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
-       The  shell  has an _\be_\bx_\be_\bc_\bu_\bt_\bi_\bo_\bn _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt, which consists of the follow-
+       The shell has an _\be_\bx_\be_\bc_\bu_\bt_\bi_\bo_\bn _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt, which consists of  the  follow-
        ing:
 
-       +\bo      open files inherited by the shell at invocation, as modified  by
+       +\bo      open  files inherited by the shell at invocation, as modified by
               redirections supplied to the e\bex\bxe\bec\bc builtin
 
-       +\bo      the  current  working directory as set by c\bcd\bd, p\bpu\bus\bsh\bhd\bd, or p\bpo\bop\bpd\bd, or
+       +\bo      the current working directory as set by c\bcd\bd, p\bpu\bus\bsh\bhd\bd, or  p\bpo\bop\bpd\bd,  or
               inherited by the shell at invocation
 
-       +\bo      the file creation mode mask as set by u\bum\bma\bas\bsk\bk  or  inherited  from
+       +\bo      the  file  creation  mode mask as set by u\bum\bma\bas\bsk\bk or inherited from
               the shell's parent
 
        +\bo      current traps set by t\btr\bra\bap\bp
@@ -2573,238 +2680,245 @@ C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bN
        +\bo      shell parameters that are set by variable assignment or with s\bse\bet\bt
               or inherited from the shell's parent in the environment
 
-       +\bo      shell functions defined during execution or inherited  from  the
+       +\bo      shell  functions  defined during execution or inherited from the
               shell's parent in the environment
 
-       +\bo      options  enabled  at  invocation (either by default or with com-
+       +\bo      options enabled at invocation (either by default  or  with  com-
               mand-line arguments) or by s\bse\bet\bt
 
        +\bo      options enabled by s\bsh\bho\bop\bpt\bt
 
        +\bo      shell aliases defined with a\bal\bli\bia\bas\bs
 
-       +\bo      various process IDs, including those  of  background  jobs,  the
+       +\bo      various  process  IDs,  including  those of background jobs, the
               value of $\b$$\b$, and the value of P\bPP\bPI\bID\bD
 
-       When  a  simple command other than a builtin or shell function is to be
-       executed, it is invoked in a separate execution environment  that  con-
-       sists  of the following.  Unless otherwise noted, the values are inher-
+       When a simple command other than a builtin or shell function is  to  be
+       executed,  it  is invoked in a separate execution environment that con-
+       sists of the following.  Unless otherwise noted, the values are  inher-
        ited from the shell.
 
 
-       +\bo      the shell's open files, plus  any  modifications  and  additions
+       +\bo      the  shell's  open  files,  plus any modifications and additions
               specified by redirections to the command
 
        +\bo      the current working directory
 
        +\bo      the file creation mode mask
 
-       +\bo      shell  variables  and  functions  marked  for export, along with
+       +\bo      shell variables and functions  marked  for  export,  along  with
               variables exported for the command, passed in the environment
 
        +\bo      traps caught by the shell are reset to the values inherited from
               the shell's parent, and traps ignored by the shell are ignored
 
-       A  command  invoked  in  this  separate  environment  cannot affect the
+       A command invoked  in  this  separate  environment  cannot  affect  the
        shell's execution environment.
 
-       Command substitution, commands grouped with parentheses, and  asynchro-
+       Command  substitution, commands grouped with parentheses, and asynchro-
        nous commands are invoked in a subshell environment that is a duplicate
-       of the shell environment, except that traps caught  by  the  shell  are
+       of  the  shell  environment,  except that traps caught by the shell are
        reset to the values that the shell inherited from its parent at invoca-
        tion.  Builtin commands that are invoked as part of a pipeline are also
        executed in a subshell environment.  Changes made to the subshell envi-
        ronment cannot affect the shell's execution environment.
 
        Subshells spawned to execute command substitutions inherit the value of
-       the  -\b-e\be  option  from  the  parent shell.  When not in _\bp_\bo_\bs_\bi_\bx mode, b\bba\bas\bsh\bh
+       the -\b-e\be option from the parent shell.  When  not  in  _\bp_\bo_\bs_\bi_\bx  _\bm_\bo_\bd_\be,  b\bba\bas\bsh\bh
        clears the -\b-e\be option in such subshells.
 
-       If a command is followed by a &\b& and job  control  is  not  active,  the
-       default  standard  input  for  the command is the empty file _\b/_\bd_\be_\bv_\b/_\bn_\bu_\bl_\bl.
-       Otherwise, the invoked command inherits the  file  descriptors  of  the
+       If  a  command  is  followed  by a &\b& and job control is not active, the
+       default standard input for the command is  the  empty  file  _\b/_\bd_\be_\bv_\b/_\bn_\bu_\bl_\bl.
+       Otherwise,  the  invoked  command  inherits the file descriptors of the
        calling shell as modified by redirections.
 
 E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
-       When  a  program  is invoked it is given an array of strings called the
+       When a program is invoked it is given an array of  strings  called  the
        _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt.   This  is  a  list  of  _\bn_\ba_\bm_\be-_\bv_\ba_\bl_\bu_\be  pairs,  of  the  form
        _\bn_\ba_\bm_\be=_\bv_\ba_\bl_\bu_\be.
 
-       The  shell  provides  several  ways  to manipulate the environment.  On
+       The shell provides several ways  to  manipulate  the  environment.   On
        invocation, the shell scans its own environment and creates a parameter
-       for  each name found, automatically marking it for _\be_\bx_\bp_\bo_\br_\bt to child pro-
-       cesses.  Executed commands inherit the  environment.   The  e\bex\bxp\bpo\bor\brt\b and
-       d\bde\bec\bcl\bla\bar\bre\b -\b-x\bx  commands allow parameters and functions to be added to and
+       for each name found, automatically marking it for _\be_\bx_\bp_\bo_\br_\bt to child  pro-
+       cesses.   Executed  commands  inherit  the environment.  The e\bex\bxp\bpo\bor\brt\bt and
+       d\bde\bec\bcl\bla\bar\bre\b-\b-x\bx commands allow parameters and functions to be added  to  and
        deleted from the environment.  If the value of a parameter in the envi-
-       ronment  is  modified,  the  new value becomes part of the environment,
-       replacing the old.  The environment inherited by any  executed  command
-       consists  of the shell's initial environment, whose values may be modi-
-       fied in the shell, less any pairs removed by the  u\bun\bns\bse\bet\bt  command,  plus
+       ronment is modified, the new value becomes  part  of  the  environment,
+       replacing  the  old.  The environment inherited by any executed command
+       consists of the shell's initial environment, whose values may be  modi-
+       fied  in  the  shell, less any pairs removed by the u\bun\bns\bse\bet\bt command, plus
        any additions via the e\bex\bxp\bpo\bor\brt\bt and d\bde\bec\bcl\bla\bar\bre\be -\b-x\bx commands.
 
-       The  environment  for  any  _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd or function may be augmented
-       temporarily by prefixing it with parameter  assignments,  as  described
+       The environment for any _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd or  function  may  be  augmented
+       temporarily  by  prefixing  it with parameter assignments, as described
        above in P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS.  These assignment statements affect only the envi-
        ronment seen by that command.
 
-       If the -\b-k\bk option is set (see the s\bse\bet\bt builtin command below),  then  _\ba_\bl_\bl
-       parameter  assignments are placed in the environment for a command, not
+       If  the  -\b-k\bk option is set (see the s\bse\bet\bt builtin command below), then _\ba_\bl_\bl
+       parameter assignments are placed in the environment for a command,  not
        just those that precede the command name.
 
-       When b\bba\bas\bsh\bh invokes an external command, the variable _\b_  is  set  to  the
+       When  b\bba\bas\bsh\bh  invokes  an  external command, the variable _\b_ is set to the
        full filename of the command and passed to that command in its environ-
        ment.
 
 E\bEX\bXI\bIT\bT S\bST\bTA\bAT\bTU\bUS\bS
-       The exit status of an executed command is the  value  returned  by  the
+       The  exit  status  of  an executed command is the value returned by the
        _\bw_\ba_\bi_\bt_\bp_\bi_\bd system call or equivalent function.  Exit statuses fall between
-       0 and 255, though, as explained below, the shell may use  values  above
+       0  and  255, though, as explained below, the shell may use values above
        125 specially.  Exit statuses from shell builtins and compound commands
        are also limited to this range.  Under certain circumstances, the shell
        will use special values to indicate specific failure modes.
 
        For the shell's purposes, a command which exits with a zero exit status
-       has succeeded.  An exit status of zero indicates success.   A  non-zero
-       exit  status  indicates  failure.  When a command terminates on a fatal
+       has  succeeded.   An exit status of zero indicates success.  A non-zero
+       exit status indicates failure.  When a command terminates  on  a  fatal
        signal _\bN, b\bba\bas\bsh\bh uses the value of 128+_\bN as the exit status.
 
-       If a command is not found, the child  process  created  to  execute  it
-       returns  a status of 127.  If a command is found but is not executable,
+       If  a  command  is  not  found, the child process created to execute it
+       returns a status of 127.  If a command is found but is not  executable,
        the return status is 126.
 
        If a command fails because of an error during expansion or redirection,
        the exit status is greater than zero.
 
-       Shell  builtin  commands return a status of 0 (_\bt_\br_\bu_\be) if successful, and
-       non-zero (_\bf_\ba_\bl_\bs_\be) if an error occurs while they execute.   All  builtins
-       return  an  exit  status  of  2  to indicate incorrect usage, generally
+       Shell builtin commands return a status of 0 (_\bt_\br_\bu_\be) if  successful,  and
+       non-zero  (_\bf_\ba_\bl_\bs_\be)  if an error occurs while they execute.  All builtins
+       return an exit status of  2  to  indicate  incorrect  usage,  generally
        invalid options or missing arguments.
 
-       B\bBa\bas\bsh\bitself returns the exit  status  of  the  last  command  executed,
-       unless  a  syntax  error occurs, in which case it exits with a non-zero
+       B\bBa\bas\bsh\b 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 e\bex\bxi\bit\bt builtin command below.
 
 S\bSI\bIG\bGN\bNA\bAL\bLS\bS
-       When b\bba\bas\bsh\bh is interactive, in the  absence  of  any  traps,  it  ignores
+       When  b\bba\bas\bsh\bh  is  interactive,  in  the  absence of any traps, it ignores
        S\bSI\bIG\bGT\bTE\bER\bRM\bM (so that k\bki\bil\bll\bl 0\b0 does not kill an interactive shell), and S\bSI\bIG\bGI\bIN\bNT\bT
-       is caught and handled (so that the w\bwa\bai\bit\bt builtin is interruptible).   In
-       all  cases,  b\bba\bas\bsh\bh  ignores  S\bSI\bIG\bGQ\bQU\bUI\bIT\bT.  If job control is in effect, b\bba\bas\bsh\bh
+       is  caught and handled (so that the w\bwa\bai\bit\bt builtin is interruptible).  In
+       all cases, b\bba\bas\bsh\bh ignores S\bSI\bIG\bGQ\bQU\bUI\bIT\bT.  If job control  is  in  effect,  b\bba\bas\bsh\bh
        ignores S\bSI\bIG\bGT\bTT\bTI\bIN\bN, S\bSI\bIG\bGT\bTT\bTO\bOU\bU, and S\bSI\bIG\bGT\bTS\bST\bTP\bP.
 
        Non-builtin commands run by b\bba\bas\bsh\bh have signal handlers set to the values
-       inherited  by  the  shell  from its parent.  When job control is not in
-       effect, asynchronous commands ignore S\bSI\bIG\bGI\bIN\bNT\bT and S\bSI\bIG\bGQ\bQU\bUI\bIT\bT in addition  to
-       these  inherited handlers.  Commands run as a result of command substi-
+       inherited by the shell from its parent.  When job  control  is  not  in
+       effect,  asynchronous commands ignore S\bSI\bIG\bGI\bIN\bNT\bT and S\bSI\bIG\bGQ\bQU\bUI\bIT\bT in addition to
+       these inherited handlers.  Commands run as a result of command  substi-
        tution ignore the keyboard-generated job control signals S\bSI\bIG\bGT\bTT\bTI\bIN\bN, S\bSI\bIG\bGT\bT-\b-
        T\bTO\bOU\bU, and S\bSI\bIG\bGT\bTS\bST\bTP\bP.
 
-       The  shell  exits by default upon receipt of a S\bSI\bIG\bGH\bHU\bUP\bP.  Before exiting,
-       an interactive shell  resends  the  S\bSI\bIG\bGH\bHU\bUP\bP  to  all  jobs,  running  or
+       The shell exits by default upon receipt of a S\bSI\bIG\bGH\bHU\bUP\bP.   Before  exiting,
+       an  interactive  shell  resends  the  S\bSI\bIG\bGH\bHU\bUP\bP  to  all  jobs, running or
        stopped.  Stopped jobs are sent S\bSI\bIG\bGC\bCO\bON\bNT\bT to ensure that they receive the
-       S\bSI\bIG\bGH\bHU\bUP\bP.  To prevent the shell from sending the signal to  a  particular
-       job,  it  should be removed from the jobs table with the d\bdi\bis\bso\bow\bwn\bn builtin
-       (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below) or  marked  to  not  receive  S\bSI\bIG\bGH\bHU\bUP\bP
+       S\bSI\bIG\bGH\bHU\bUP\bP.   To  prevent the shell from sending the signal to a particular
+       job, it should be removed from the jobs table with the  d\bdi\bis\bso\bow\bwn\b builtin
+       (see  S\bSH\bHE\bEL\bLL\bL  B\bBU\bUI\bIL\bLT\bTI\bIN\bN  C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS  below)  or marked to not receive S\bSI\bIG\bGH\bHU\bUP\bP
        using d\bdi\bis\bso\bow\bwn\bn -\b-h\bh.
 
-       If  the  h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt  shell  option has been set with s\bsh\bho\bop\bpt\bt, b\bba\bas\bsh\bh sends a
+       If the h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt shell option has been set with  s\bsh\bho\bop\bpt\bt,  b\bba\bas\bsh\bh  sends  a
        S\bSI\bIG\bGH\bHU\bUP\bP to all jobs when an interactive login shell exits.
 
-       If b\bba\bas\bsh\bh is waiting for a command to complete and receives a signal  for
+       If  b\bba\bas\bsh\bh is waiting for a command to complete and receives a signal for
        which a trap has been set, the trap will not be executed until the com-
-       mand completes.  When b\bba\bas\bsh\bh is waiting for an asynchronous  command  via
-       the  w\bwa\bai\bit\bt  builtin, the reception of a signal for which a trap has been
+       mand  completes.   When b\bba\bas\bsh\bh is waiting for an asynchronous command via
+       the w\bwa\bai\bit\bt builtin, the reception of a signal for which a trap  has  been
        set will cause the w\bwa\bai\bit\bt builtin to return immediately with an exit sta-
        tus greater than 128, immediately after which the trap is executed.
 
 J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL
-       _\bJ_\bo_\b _\bc_\bo_\bn_\bt_\br_\bo_\bl  refers  to  the ability to selectively stop (_\bs_\bu_\bs_\bp_\be_\bn_\bd) the
+       _\bJ_\bo_\b_\bc_\bo_\bn_\bt_\br_\bo_\bl refers to the ability to  selectively  stop  (_\bs_\bu_\bs_\bp_\be_\bn_\bd)  the
        execution of processes and continue (_\br_\be_\bs_\bu_\bm_\be) their execution at a later
-       point.   A  user  typically  employs  this  facility via an interactive
-       interface supplied jointly by the operating  system  kernel's  terminal
+       point.  A user typically  employs  this  facility  via  an  interactive
+       interface  supplied  jointly  by the operating system kernel's terminal
        driver and b\bba\bas\bsh\bh.
 
-       The  shell  associates  a  _\bj_\bo_\bb with each pipeline.  It keeps a table of
-       currently executing jobs, which may be listed with  the  j\bjo\bob\bbs\b command.
-       When  b\bba\bas\bsh\bh starts a job asynchronously (in the _\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd), it prints a
+       The shell associates a _\bj_\bo_\bb with each pipeline.  It  keeps  a  table  of
+       currently  executing  jobs,  which may be listed with the j\bjo\bob\bbs\bs command.
+       When b\bba\bas\bsh\bh starts a job asynchronously (in the _\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd), it prints  a
        line that looks like:
 
               [1] 25647
 
        indicating that this job is job number 1 and that the process ID of the
        last process in the pipeline associated with this job is 25647.  All of
-       the processes in a single pipeline are members of the same  job.   B\bBa\bas\bsh\bh
+       the  processes  in a single pipeline are members of the same job.  B\bBa\bas\bsh\bh
        uses the _\bj_\bo_\bb abstraction as the basis for job control.
 
-       To  facilitate the implementation of the user interface to job control,
+       To facilitate the implementation of the user interface to job  control,
        the operating system maintains the notion of a _\bc_\bu_\br_\br_\be_\bn_\bt _\bt_\be_\br_\bm_\bi_\bn_\ba_\bl _\bp_\br_\bo_\bc_\be_\bs_\bs
        _\bg_\br_\bo_\bu_\bp _\bI_\bD.  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 S\bSI\bIG\bGI\bIN\bNT\bT.  These processes are said to be in
-       the _\bf_\bo_\br_\be_\bg_\br_\bo_\bu_\bn_\bd.  _\bB_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd processes are those whose process group  ID
+       generated signals such as S\bSI\bIG\bGI\bIN\bNT\bT.  These processes are said  to  be  in
+       the  _\bf_\bo_\br_\be_\bg_\br_\bo_\bu_\bn_\bd.  _\bB_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd processes are those whose process group ID
        differs from the terminal's; such processes are immune to keyboard-gen-
        erated signals.  Only foreground processes are allowed to read from or,
-       if  the  user  so  specifies  with  stty tostop, write to the terminal.
-       Background processes which attempt to read from  (write  to  when  stty
-       tostop  is  in effect) the terminal are sent a S\bSI\bIG\bGT\bTT\bTI\bIN\bN (\b(S\bSI\bIG\bGT\bTT\bTO\bOU\bU)\b) signal
-       by the kernel's terminal driver, which,  unless  caught,  suspends  the
+       if the user so specifies with  stty  tostop,  write  to  the  terminal.
+       Background  processes  which  attempt  to read from (write to when stty
+       tostop is in effect) the terminal are sent a S\bSI\bIG\bGT\bTT\bTI\bIN\bN  (\b(S\bSI\bIG\bGT\bTT\bTO\bOU\bU)\b signal
+       by  the  kernel's  terminal  driver, which, unless caught, suspends the
        process.
 
-       If  the operating system on which b\bba\bas\bsh\bh is running supports job control,
+       If the operating system on which b\bba\bas\bsh\bh is running supports job  control,
        b\bba\bas\bsh\bh contains facilities to use it.  Typing the _\bs_\bu_\bs_\bp_\be_\bn_\bd character (typ-
        ically ^\b^Z\bZ, Control-Z) while a process is running causes that process to
-       be stopped and returns control to b\bba\bas\bsh\bh.   Typing  the  _\bd_\be_\bl_\ba_\by_\be_\b _\bs_\bu_\bs_\bp_\be_\bn_\bd
-       character  (typically  ^\b^Y\bY,  Control-Y) causes the process to be stopped
-       when it attempts to read input from the terminal,  and  control  to  be
-       returned  to b\bba\bas\bsh\bh.  The user may then manipulate the state of this job,
-       using the b\bbg\bg command to continue it in the background, the  f\bfg\b command
+       be  stopped  and  returns  control to b\bba\bas\bsh\bh.  Typing the _\bd_\be_\bl_\ba_\by_\be_\bd _\bs_\bu_\bs_\bp_\be_\bn_\bd
+       character (typically ^\b^Y\bY, Control-Y) causes the process  to  be  stopped
+       when  it  attempts  to  read input from the terminal, and control to be
+       returned to b\bba\bas\bsh\bh.  The user may then manipulate the state of this  job,
+       using  the  b\bbg\bg command to continue it in the background, the f\bfg\bg command
        to continue it in the foreground, or the k\bki\bil\bll\bl command to kill it.  A ^\b^Z\bZ
        takes effect immediately, and has the additional side effect of causing
        pending output and typeahead to be discarded.
 
        There are a number of ways to refer to a job in the shell.  The charac-
-       ter %\b% introduces a job specification (_\bj_\bo_\bb_\bs_\bp_\be_\bc).  Job number  _\bn  may  be
+       ter  %\b%  introduces  a job specification (_\bj_\bo_\bb_\bs_\bp_\be_\bc).  Job number _\bn may be
        referred to as %\b%n\bn.  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%c\bce\be  refers  to  a  stopped c\bce\be job.  If a prefix
-       matches more than one job, b\bba\bas\bsh\bh reports an error.  Using %\b%?\b?c\bce\be,  on  the
-       other  hand,  refers to any job containing the string c\bce\be in its command
-       line.  If the substring matches more than  one  job,  b\bba\bas\bsh\bh  reports  an
-       error.   The  symbols %\b%%\b% and %\b%+\b+ refer to the shell's notion of the _\bc_\bu_\br_\b-
-       _\br_\be_\bn_\b_\bj_\bo_\bb, which is the last job stopped while it was in the  foreground
+       line.  For example, %\b%c\bce\be refers to  a  stopped  c\bce\be  job.   If  a  prefix
+       matches  more  than one job, b\bba\bas\bsh\bh reports an error.  Using %\b%?\b?c\bce\be, on the
+       other hand, refers to any job containing the string c\bce\be in  its  command
+       line.   If  the  substring  matches  more than one job, b\bba\bas\bsh\bh reports an
+       error.  The symbols %\b%%\b% and %\b%+\b+ refer to the shell's notion of  the  _\bc_\bu_\br_\b-
+       _\br_\be_\bn_\b _\bj_\bo_\bb, which is the last job stopped while it was in the foreground
        or started in the background.  The _\bp_\br_\be_\bv_\bi_\bo_\bu_\bs _\bj_\bo_\bb may be referenced using
        %\b%-\b-.  If there is only a single job, %\b%+\b+ and %\b%-\b- can both be used to refer
-       to  that  job.   In  output pertaining to jobs (e.g., the output of the
+       to that job.  In output pertaining to jobs (e.g.,  the  output  of  the
        j\bjo\bob\bbs\bs command), the current job is always flagged with a +\b+, and the pre-
-       vious  job  with  a -\b-.  A single % (with no accompanying job specifica-
+       vious job with a -\b-.  A single % (with no  accompanying  job  specifica-
        tion) also refers to the current job.
 
-       Simply naming a job can be used to bring it into the foreground: %\b%1\b is
-       a  synonym  for  `\b``\b`f\bfg\bg %\b%1\b1'\b''\b', bringing job 1 from the background into the
-       foreground.  Similarly, `\b``\b`%\b%1\b1 &\b&'\b''\b'  resumes  job  1  in  the  background,
+       Simply  naming a job can be used to bring it into the foreground: %\b%1\b1 is
+       a synonym for `\b``\b`f\bfg\bg %\b%1\b1'\b''\b', bringing job 1 from the  background  into  the
+       foreground.   Similarly,  `\b``\b`%\b%1\b1  &\b&'\b''\b'  resumes  job  1 in the background,
        equivalent to `\b``\b`b\bbg\bg %\b%1\b1'\b''\b'.
 
-       The  shell  learns immediately whenever a job changes state.  Normally,
+       The shell learns immediately whenever a job changes  state.   Normally,
        b\bba\bas\bsh\bh 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\bb
+       in a job's status so as to not interrupt any other output.  If  the  -\b-b\bb
        option to the s\bse\bet\bt builtin command is enabled, b\bba\bas\bsh\bh reports such changes
-       immediately.   Any  trap  on  S\bSI\bIG\bGC\bCH\bHL\bLD\bD  is  executed for each child that
+       immediately.  Any trap on S\bSI\bIG\bGC\bCH\bHL\bLD\bD  is  executed  for  each  child  that
        exits.
 
-       If an attempt to exit b\bba\bas\bsh\bh is made while jobs are stopped (or,  if  the
-       c\bch\bhe\bec\bck\bkj\bjo\bob\bbs\b shell  option has been enabled using the s\bsh\bho\bop\bpt\bt builtin, run-
+       If  an  attempt to exit b\bba\bas\bsh\bh is made while jobs are stopped (or, if the
+       c\bch\bhe\bec\bck\bkj\bjo\bob\bbs\bshell option has been enabled using the s\bsh\bho\bop\bpt\bt  builtin,  run-
        ning), the shell prints a warning message, and, if the c\bch\bhe\bec\bck\bkj\bjo\bob\bbs\bs option
-       is  enabled,  lists  the jobs and their statuses.  The j\bjo\bob\bbs\bs command may
-       then be used to inspect their status.  If a second attempt to  exit  is
-       made  without  an intervening command, the shell does not print another
+       is enabled, lists the jobs and their statuses.  The  j\bjo\bob\bbs\bs  command  may
+       then  be  used to inspect their status.  If a second attempt to exit is
+       made without an intervening command, the shell does not  print  another
        warning, and any stopped jobs are terminated.
 
+       When  the shell is waiting for a job or process using the w\bwa\bai\bit\bt builtin,
+       and job control is enabled, w\bwa\bai\bit\bt  will  return  when  the  job  changes
+       state.  The  -\b-f\bf option will force w\bwa\bai\bit\bt to wait until the job or process
+       terminates before returning.
+
 P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
        When executing interactively, b\bba\bas\bsh\bh displays the primary prompt P\bPS\bS1\b1 when
        it  is  ready  to  read a command, and the secondary prompt P\bPS\bS2\b2 when it
        needs more input to complete a command.  B\bBa\bas\bsh\bh  displays  P\bPS\bS0\b0  after  it
-       reads  a  command  but  before  executing it.  B\bBa\bas\bsh\bh allows these prompt
-       strings to be customized by inserting  a  number  of  backslash-escaped
-       special characters that are decoded as follows:
+       reads  a  command  but  before  executing  it.   B\bBa\bas\bsh\bh  displays  P\bPS\bS4\b4 as
+       described above before tracing each  command  when  the  -\b-x\bx  option  is
+       enabled.   B\bBa\bas\bsh\bh allows these prompt strings to be customized by insert-
+       ing a number of backslash-escaped special characters that  are  decoded
+       as follows:
               \\b\a\ba     an ASCII bell character (07)
               \\b\d\bd     the  date  in "Weekday Month Date" format (e.g., "Tue May
                      26")
@@ -3066,185 +3180,201 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
               Controls whether readline begins with a set of key bindings sim-
               ilar to _\bE_\bm_\ba_\bc_\bs or _\bv_\bi.  e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be can be set to either e\bem\bma\bac\bcs\bs or
               v\bvi\bi.
+       e\bem\bma\bac\bcs\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b(@\b@)\b)
+              If  the  _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this string is
+              displayed immediately before the last line of the primary prompt
+              when emacs editing mode is active.  The value is expanded like a
+              key binding, so the standard set of meta- and  control  prefixes
+              and  backslash escape sequences is available.  Use the \1 and \2
+              escapes to begin and end sequences of  non-printing  characters,
+              which  can be used to embed a terminal control sequence into the
+              mode string.
        e\ben\bna\bab\bbl\ble\be-\b-b\bbr\bra\bac\bck\bke\bet\bte\bed\bd-\b-p\bpa\bas\bst\bte\be (\b(O\bOf\bff\bf)\b)
-              When  set  to  O\bOn\bn, readline will configure the terminal in a way
+              When set to O\bOn\bn, readline will configure the terminal  in  a  way
               that will enable it to insert each paste into the editing buffer
               as a single string of characters, instead of treating each char-
-              acter as if it had been read from the keyboard.  This  can  pre-
-              vent  pasted  characters  from being interpreted as editing com-
+              acter  as  if it had been read from the keyboard.  This can pre-
+              vent pasted characters from being interpreted  as  editing  com-
               mands.
        e\ben\bna\bab\bbl\ble\be-\b-k\bke\bey\byp\bpa\bad\bd (\b(O\bOf\bff\bf)\b)
               When set to O\bOn\bn, readline will try to enable the application key-
-              pad  when  it  is  called.  Some systems need this to enable the
+              pad when it is called.  Some systems need  this  to  enable  the
               arrow keys.
        e\ben\bna\bab\bbl\ble\be-\b-m\bme\bet\bta\ba-\b-k\bke\bey\by (\b(O\bOn\bn)\b)
-              When set to O\bOn\bn, readline will try to enable  any  meta  modifier
-              key  the  terminal claims to support when it is called.  On many
+              When  set  to  O\bOn\bn, readline will try to enable any meta modifier
+              key the terminal claims to support when it is called.   On  many
               terminals, the meta key is used to send eight-bit characters.
        e\bex\bxp\bpa\ban\bnd\bd-\b-t\bti\bil\bld\bde\be (\b(O\bOf\bff\bf)\b)
-              If set  to  O\bOn\bn,  tilde  expansion  is  performed  when  readline
+              If  set  to  O\bOn\bn,  tilde  expansion  is  performed  when readline
               attempts word completion.
        h\bhi\bis\bst\bto\bor\bry\by-\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-p\bpo\boi\bin\bnt\bt (\b(O\bOf\bff\bf)\b)
-              If  set  to  O\bOn\bn, the history code attempts to place point at the
-              same location on each history line retrieved with  p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bs-\b-
+              If set to O\bOn\bn, the history code attempts to place  point  at  the
+              same  location on each history line retrieved with p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bs-\b-
               t\bto\bor\bry\by or n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by.
        h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsi\biz\bze\be (\b(u\bun\bns\bse\bet\bt)\b)
-              Set  the  maximum number of history entries saved in the history
-              list.  If set to zero, any existing history entries are  deleted
+              Set the maximum number of history entries saved in  the  history
+              list.   If set to zero, any existing history entries are deleted
               and no new entries are saved.  If set to a value less than zero,
-              the number of history entries is not limited.  By  default,  the
-              number  of  history  entries is set to the value of the H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE
-              shell variable.  If an attempt is made to set _\bh_\bi_\bs_\bt_\bo_\br_\by_\b-_\bs_\bi_\bz_\be to  a
+              the  number  of history entries is not limited.  By default, the
+              number of history entries is set to the value  of  the  H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE
+              shell  variable.  If an attempt is made to set _\bh_\bi_\bs_\bt_\bo_\br_\by_\b-_\bs_\bi_\bz_\be to a
               non-numeric value, the maximum number of history entries will be
               set to 500.
        h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsc\bcr\bro\bol\bll\bl-\b-m\bmo\bod\bde\be (\b(O\bOf\bff\bf)\b)
-              When set to O\bOn\bn, makes readline use a single  line  for  display,
+              When  set  to  O\bOn\bn, 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
+              becomes  longer  than the screen width rather than wrapping to a
               new line.
        i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
-              If  set to O\bOn\bn, readline will enable eight-bit input (that is, it
-              will not strip the eighth bit from  the  characters  it  reads),
+              If set to O\bOn\bn, readline will enable eight-bit input (that is,  it
+              will  not  strip  the  eighth bit from the characters it reads),
               regardless of what the terminal claims it can support.  The name
-              m\bme\bet\bta\ba-\b-f\bfl\bla\bag\bis a synonym for this variable.  The default  is  _\bO_\bf_\bf,
-              but  readline will set it to _\bO_\bn if the locale contains eight-bit
+              m\bme\bet\bta\ba-\b-f\bfl\bla\bag\b is  a synonym for this variable.  The default is _\bO_\bf_\bf,
+              but readline will set it to _\bO_\bn if the locale contains  eight-bit
               characters.
        i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs (\b(`\b``\b`C\bC-\b-[\b[C\bC-\b-J\bJ'\b''\b')\b)
-              The string of characters that should  terminate  an  incremental
-              search  without  subsequently  executing the character as a com-
-              mand.  If this variable has not been given a value, the  charac-
+              The  string  of  characters that should terminate an incremental
+              search without subsequently executing the character  as  a  com-
+              mand.   If this variable has not been given a value, the charac-
               ters _\bE_\bS_\bC and _\bC_\b-_\bJ will terminate an incremental search.
        k\bke\bey\bym\bma\bap\bp (\b(e\bem\bma\bac\bcs\bs)\b)
-              Set  the current readline keymap.  The set of valid keymap names
-              is _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b,  _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b,  _\bv_\bi_\b _\bv_\bi_\b-_\bc_\bo_\bm_\b-
-              _\bm_\ba_\bn_\bd,  and  _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.  _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd; _\be_\bm_\ba_\bc_\bs is
-              equivalent to _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd.  The default value is  _\be_\bm_\ba_\bc_\bs;  the
+              Set the current readline keymap.  The set of valid keymap  names
+              is  _\be_\bm_\ba_\bc_\bs_\b,  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b,  _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b, _\bv_\bi_\b, _\bv_\bi_\b-_\bc_\bo_\bm_\b-
+              _\bm_\ba_\bn_\bd, and _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.  _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd;  _\be_\bm_\ba_\bc_\b is
+              equivalent  to  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd.  The default value is _\be_\bm_\ba_\bc_\bs; the
               value of e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be also affects the default keymap.
-       e\bem\bma\bac\bcs\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b(@\b@)\b)
-              This string is displayed immediately before the last line of the
-              primary prompt when emacs editing mode is active.  The value  is
-              expanded  like  a  key binding, so the standard set of meta- and
-              control prefixes and backslash escape  sequences  is  available.
-              Use  the  \1  and  \2 escapes to begin and end sequences of non-
-              printing characters, which can be used to embed a terminal  con-
-              trol sequence into the mode string.
        k\bke\bey\bys\bse\beq\bq-\b-t\bti\bim\bme\beo\bou\but\bt (\b(5\b50\b00\b0)\b)
-              Specifies  the  duration _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait for a character when
-              reading an ambiguous key sequence (one that can form a  complete
+              Specifies the duration _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait for a  character  when
+              reading  an ambiguous key sequence (one that can form a complete
               key sequence using the input read so far, or can take additional
-              input to complete a  longer  key  sequence).   If  no  input  is
-              received  within  the timeout, _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will use the shorter but
-              complete key sequence.  The value is specified in  milliseconds,
-              so  a value of 1000 means that _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait one second for
-              additional input.  If this variable is set to a value less  than
-              or  equal to zero, or to a non-numeric value, _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait
-              until another key is pressed to decide  which  key  sequence  to
+              input  to  complete  a  longer  key  sequence).   If no input is
+              received within the timeout, _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will use the  shorter  but
+              complete  key sequence.  The value is specified in milliseconds,
+              so a value of 1000 means that _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will wait one second  for
+              additional  input.  If this variable is set to a value less than
+              or equal to zero, or to a non-numeric value, _\br_\be_\ba_\bd_\bl_\bi_\bn_\be will  wait
+              until  another  key  is  pressed to decide which key sequence to
               complete.
        m\bma\bar\brk\bk-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOn\bn)\b)
               If set to O\bOn\bn, completed directory names have a slash appended.
        m\bma\bar\brk\bk-\b-m\bmo\bod\bdi\bif\bfi\bie\bed\bd-\b-l\bli\bin\bne\bes\bs (\b(O\bOf\bff\bf)\b)
-              If  set  to  O\bOn\bn,  history lines that have been modified are dis-
+              If set to O\bOn\bn, history lines that have  been  modified  are  dis-
               played with a preceding asterisk (*\b*).
        m\bma\bar\brk\bk-\b-s\bsy\bym\bml\bli\bin\bnk\bke\bed\bd-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOf\bff\bf)\b)
               If set to O\bOn\bn, completed names which are symbolic links to direc-
-              tories   have   a  slash  appended  (subject  to  the  value  of
+              tories  have  a  slash  appended  (subject  to  the   value   of
               m\bma\bar\brk\bk-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs).
        m\bma\bat\btc\bch\bh-\b-h\bhi\bid\bdd\bde\ben\bn-\b-f\bfi\bil\ble\bes\bs (\b(O\bOn\bn)\b)
-              This variable, when set to O\bOn\bn, causes readline  to  match  files
-              whose  names  begin  with  a  `.' (hidden files) when performing
-              filename completion.  If set to O\bOf\bff\bf, the  leading  `.'  must  be
+              This  variable,  when  set to O\bOn\bn, causes readline to match files
+              whose names begin with a  `.'  (hidden  files)  when  performing
+              filename  completion.   If  set  to O\bOf\bff\bf, the leading `.' must be
               supplied by the user in the filename to be completed.
        m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
-              If  set to O\bOn\bn, menu completion displays the common prefix of the
+              If set to O\bOn\bn, menu completion displays the common prefix of  the
               list of possible completions (which may be empty) before cycling
               through the list.
        o\bou\but\btp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
-              If  set  to O\bOn\bn, readline will display characters with the eighth
+              If set to O\bOn\bn, readline will display characters with  the  eighth
               bit set directly rather than as a meta-prefixed escape sequence.
               The default is _\bO_\bf_\bf, but readline will set it to _\bO_\bn if the locale
               contains eight-bit characters.
        p\bpa\bag\bge\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(O\bOn\bn)\b)
-              If set to O\bOn\bn, readline uses an internal _\bm_\bo_\br_\be-like pager to  dis-
+              If  set to O\bOn\bn, readline uses an internal _\bm_\bo_\br_\be-like pager to dis-
               play a screenful of possible completions at a time.
        p\bpr\bri\bin\bnt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bll\bly\by (\b(O\bOf\bff\bf)\b)
-              If  set  to  O\bOn\bn,  readline will display completions with matches
-              sorted horizontally in alphabetical order, rather than down  the
+              If set to O\bOn\bn, readline will  display  completions  with  matches
+              sorted  horizontally in alphabetical order, rather than down the
               screen.
        r\bre\bev\bve\ber\brt\bt-\b-a\bal\bll\bl-\b-a\bat\bt-\b-n\bne\bew\bwl\bli\bin\bne\be (\b(O\bOf\bff\bf)\b)
-              If  set  to  O\bOn\bn, readline will undo all changes to history lines
+              If set to O\bOn\bn, readline will undo all changes  to  history  lines
               before returning when a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be is executed.  By default, his-
-              tory  lines  may  be  modified  and retain individual undo lists
+              tory lines may be modified  and  retain  individual  undo  lists
               across calls to r\bre\bea\bad\bdl\bli\bin\bne\be.
        s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs (\b(O\bOf\bff\bf)\b)
-              This alters the default behavior of  the  completion  functions.
+              This  alters  the  default behavior of the completion functions.
               If set to O\bOn\bn, words which have more than one possible completion
-              cause the matches to be listed immediately  instead  of  ringing
+              cause  the  matches  to be listed immediately instead of ringing
               the bell.
        s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-u\bun\bnm\bmo\bod\bdi\bif\bfi\bie\bed\bd (\b(O\bOf\bff\bf)\b)
-              This  alters the default behavior of the completion functions in
+              This alters the default behavior of the completion functions  in
               a fashion similar to s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs.  If set to O\bOn\bn, words
-              which  have more than one possible completion without any possi-
-              ble partial completion (the possible completions don't  share  a
-              common  prefix)  cause  the  matches  to  be  listed immediately
+              which have more than one possible completion without any  possi-
+              ble  partial  completion (the possible completions don't share a
+              common prefix)  cause  the  matches  to  be  listed  immediately
               instead of ringing the bell.
        s\bsh\bho\bow\bw-\b-m\bmo\bod\bde\be-\b-i\bin\bn-\b-p\bpr\bro\bom\bmp\bpt\bt (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn, add a character to the  beginning  of  the  prompt
-              indicating  the  editing  mode:  emacs (@), vi command (:) or vi
-              insertion (+).
+              If  set to O\bOn\bn, add a string to the beginning of the prompt indi-
+              cating the editing mode: emacs, vi  command,  or  vi  insertion.
+              The mode strings are user-settable (e.g., _\be_\bm_\ba_\bc_\bs_\b-_\bm_\bo_\bd_\be_\b-_\bs_\bt_\br_\bi_\bn_\bg).
        s\bsk\bki\bip\bp-\b-c\bco\bom\bmp\bpl\ble\bet\bte\bed\bd-\b-t\bte\bex\bxt\bt (\b(O\bOf\bff\bf)\b)
-              If set to O\bOn\bn, this alters the default completion  behavior  when
-              inserting  a  single match into the line.  It's only active when
-              performing completion in the middle  of  a  word.   If  enabled,
-              readline  does  not  insert  characters from the completion that
-              match characters after point in the  word  being  completed,  so
+              If  set  to O\bOn\bn, this alters the default completion behavior when
+              inserting a single match into the line.  It's only  active  when
+              performing  completion  in  the  middle  of a word.  If enabled,
+              readline does not insert characters  from  the  completion  that
+              match  characters  after  point  in the word being completed, so
               portions of the word following the cursor are not duplicated.
        v\bvi\bi-\b-c\bcm\bmd\bd-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(c\bcm\bmd\bd)\b))\b)
-              This string is displayed immediately before the last line of the
-              primary prompt when vi editing mode is  active  and  in  command
-              mode.  The value is expanded like a key binding, so the standard
-              set of meta- and control prefixes and backslash escape sequences
-              is  available.   Use  the  \1  and  \2  escapes to begin and end
-              sequences of non-printing characters, which can be used to embed
-              a terminal control sequence into the mode string.
+              If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this  string  is
+              displayed immediately before the last line of the primary prompt
+              when vi editing mode is active and in command mode.   The  value
+              is expanded like a key binding, so the standard set of meta- and
+              control prefixes and backslash escape  sequences  is  available.
+              Use  the  \1  and  \2 escapes to begin and end sequences of non-
+              printing characters, which can be used to embed a terminal  con-
+              trol sequence into the mode string.
        v\bvi\bi-\b-i\bin\bns\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(i\bin\bns\bs)\b))\b)
-              This string is displayed immediately before the last line of the
-              primary prompt when vi editing mode is active and  in  insertion
-              mode.  The value is expanded like a key binding, so the standard
-              set of meta- and control prefixes and backslash escape sequences
-              is  available.   Use  the  \1  and  \2  escapes to begin and end
-              sequences of non-printing characters, which can be used to embed
-              a terminal control sequence into the mode string.
+              If  the  _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt variable is enabled, this string is
+              displayed immediately before the last line of the primary prompt
+              when vi editing mode is active and in insertion mode.  The value
+              is expanded like a key binding, so the standard set of meta- and
+              control  prefixes  and  backslash escape sequences is available.
+              Use the \1 and \2 escapes to begin and  end  sequences  of  non-
+              printing  characters, which can be used to embed a terminal con-
+              trol sequence into the mode string.
        v\bvi\bis\bsi\bib\bbl\ble\be-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
-              If  set to O\bOn\bn, a character denoting a file's type as reported by
-              _\bs_\bt_\ba_\bt(2) is appended to the filename when listing  possible  com-
+              If set to O\bOn\bn, a character denoting a file's type as reported  by
+              _\bs_\bt_\ba_\bt(2)  is  appended to the filename when listing possible com-
               pletions.
 
    R\bRe\bea\bad\bdl\bli\bin\bne\be C\bCo\bon\bnd\bdi\bit\bti\bio\bon\bna\bal\bl C\bCo\bon\bns\bst\btr\bru\buc\bct\bts\bs
-       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
+       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.
 
-       $\b$i\bif\bf    The $\b$i\bif\bf construct allows bindings to be made based on the  edit-
-              ing  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.
-
-              m\bmo\bod\bde\be   The  m\bmo\bod\bde\be=\b=  form  of  the  $\b$i\bif\bf  directive is used to test
-                     whether readline is in emacs or vi  mode.   This  may  be
-                     used  in  conjunction  with  the  s\bse\bet\bt k\bke\bey\bym\bma\bap\bp command, for
-                     instance, to  set  bindings  in  the  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd  and
-                     _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx  keymaps  only  if readline is starting out in
+       $\b$i\bif\bf    The  $\b$i\bif\bf construct allows bindings to be made based on the edit-
+              ing mode, the terminal being  used,  or  the  application  using
+              readline.  The text of the test, after any comparison operator,
+               extends  to  the  end  of  the line; unless otherwise noted, no
+              characters are required to isolate it.
+
+              m\bmo\bod\bde\be   The m\bmo\bod\bde\be=\b= form of the  $\b$i\bif\bf  directive  is  used  to  test
+                     whether  readline  is  in  emacs or vi mode.  This may be
+                     used in conjunction with  the  s\bse\bet\bt  k\bke\bey\bym\bma\bap\bp  command,  for
+                     instance,  to  set  bindings  in  the  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd and
+                     _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx keymaps only if readline is  starting  out  in
                      emacs mode.
 
-              t\bte\ber\brm\bm   The t\bte\ber\brm\bm=\b= form may be used to  include  terminal-specific
+              t\bte\ber\brm\bm   The  t\bte\ber\brm\bm=\b=  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 both the full name of the ter-
-                     minal and the portion of the  terminal  name  before  the
-                     first  -\b-.  This allows _\bs_\bu_\bn to match both _\bs_\bu_\bn and _\bs_\bu_\bn_\b-_\bc_\bm_\bd,
+                     minal  and  the  portion  of the terminal name before the
+                     first -\b-.  This allows _\bs_\bu_\bn to match both _\bs_\bu_\bn and  _\bs_\bu_\bn_\b-_\bc_\bm_\bd,
                      for instance.
 
+              v\bve\ber\brs\bsi\bio\bon\bn
+                     The  v\bve\ber\brs\bsi\bio\bon\bn  test  may  be  used  to perform comparisons
+                     against specific readline versions.  The v\bve\ber\brs\bsi\bio\bon\bn  expands
+                     to  the  current readline version.  The set of comparison
+                     operators includes =\b=, (and =\b==\b=), !\b!=\b=, <\b<=\b=,  >\b>=\b=,  <\b<,  and  >\b>.
+                     The  version  number  supplied  on  the right side of the
+                     operator consists of a major version number, an  optional
+                     decimal point, and an optional minor version (e.g., 7\b7.\b.1\b1).
+                     If the minor version is omitted, it is assumed to  be  0\b0.
+                     The operator may be separated from the string v\bve\ber\brs\bsi\bio\bon\bn and
+                     from the version number argument by whitespace.
+
               a\bap\bpp\bpl\bli\bic\bca\bat\bti\bio\bon\bn
                      The a\bap\bpp\bpl\bli\bic\bca\bat\bti\bio\bon\bn construct is used to include application-
                      specific  settings.   Each  program  using  the  readline
@@ -3260,6 +3390,16 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
                      "\C-xq": "\eb\"\ef\""
                      $\b$e\ben\bnd\bdi\bif\bf
 
+              _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be
+                     The _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be construct provides simple equality tests for
+                     readline variables and values.  The permitted  comparison
+                     operators  are  _\b=, _\b=_\b=, and _\b!_\b=.  The variable name must be
+                     separated from the comparison operator by whitespace; the
+                     operator  may  be  separated  from the value on the right
+                     hand side by whitespace.  Both string and  boolean  vari-
+                     ables  may  be  tested.  Boolean variables must be tested
+                     against the values _\bo_\bn and _\bo_\bf_\bf.
+
        $\b$e\ben\bnd\bdi\bif\bf This command, as seen in the previous example, terminates an $\b$i\bif\bf
               command.
 
@@ -3267,51 +3407,51 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
               test fails.
 
        $\b$i\bin\bnc\bcl\blu\bud\bde\be
-              This  directive takes a single filename as an argument and reads
-              commands and bindings from that file.  For example, the  follow-
+              This directive takes a single filename as an argument and  reads
+              commands  and bindings from that file.  For example, the follow-
               ing directive would read _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc:
 
               $\b$i\bin\bnc\bcl\blu\bud\bde\be  _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc
 
    S\bSe\bea\bar\brc\bch\bhi\bin\bng\bg
-       Readline  provides  commands  for searching through the command history
+       Readline provides commands for searching through  the  command  history
        (see H\bHI\bIS\bST\bTO\bOR\bRY\bY below) for lines containing a specified string.  There are
        two search modes: _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl and _\bn_\bo_\bn_\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl.
 
-       Incremental  searches  begin  before  the  user has finished typing the
-       search string.  As each character of the search string is typed,  read-
+       Incremental searches begin before the  user  has  finished  typing  the
+       search  string.  As each character of the search string is typed, read-
        line 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 i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs variable are used to terminate  an
+       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 i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs 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
+       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.
 
-       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 _\bn_\be_\bw_\bl_\bi_\bn_\be will termi-
+       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 _\bn_\be_\bw_\bl_\bi_\bn_\be  will  termi-
        nate the search and accept the line, thereby executing the command from
        the history list.
 
        Readline remembers the last incremental search string.  If two Control-
-       Rs are typed without any intervening characters defining a  new  search
+       Rs  are  typed without any intervening characters defining a new search
        string, any remembered search string is used.
 
-       Non-incremental  searches read the entire search string before starting
-       to search for matching history lines.  The search string may  be  typed
+       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.
 
    R\bRe\bea\bad\bdl\bli\bin\bne\be C\bCo\bom\bmm\bma\ban\bnd\bd N\bNa\bam\bme\bes\bs
-       The  following  is  a list of the names of the commands and the default
+       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 accom-
        panying key sequence are unbound by default.  In the following descrip-
-       tions, _\bp_\bo_\bi_\bn_\bt refers to the current cursor position, and _\bm_\ba_\br_\bk refers  to
-       a  cursor position saved by the s\bse\bet\bt-\b-m\bma\bar\brk\bk command.  The text between the
+       tions,  _\bp_\bo_\bi_\bn_\bt refers to the current cursor position, and _\bm_\ba_\br_\bk refers to
+       a cursor position saved by the s\bse\bet\bt-\b-m\bma\bar\brk\bk command.  The text between  the
        point and mark is referred to as the _\br_\be_\bg_\bi_\bo_\bn.
 
    C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMo\bov\bvi\bin\bng\bg
@@ -3327,17 +3467,29 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
               Move forward to the end of the next word.  Words are composed of
               alphanumeric characters (letters and digits).
        b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-b\bb)\b)
-              Move  back  to the start of the current or previous word.  Words
+              Move back to the start of the current or previous  word.   Words
               are composed of alphanumeric characters (letters and digits).
        s\bsh\bhe\bel\bll\bl-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
-              Move forward to the end of the next word.  Words  are  delimited
+              Move  forward  to the end of the next word.  Words are delimited
               by non-quoted shell metacharacters.
        s\bsh\bhe\bel\bll\bl-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
-              Move  back  to the start of the current or previous word.  Words
+              Move back to the start of the current or previous  word.   Words
               are delimited by non-quoted shell metacharacters.
+       p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+              Attempt  to move point to the same physical screen column on the
+              previous physical screen line. This will not  have  the  desired
+              effect  if  the current Readline line does not take up more than
+              one physical line or if point is not greater than the length  of
+              the prompt plus the screen width.
+       n\bne\bex\bxt\bt-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+              Attempt  to move point to the same physical screen column on the
+              next physical screen line. This will not have the desired effect
+              if  the  current  Readline  line  does not take up more than one
+              physical line or if the length of the current Readline  line  is
+              not greater than the length of the prompt plus the screen width.
        c\bcl\ble\bea\bar\br-\b-s\bsc\bcr\bre\bee\ben\bn (\b(C\bC-\b-l\bl)\b)
-              Clear the screen leaving the current line  at  the  top  of  the
-              screen.   With  an  argument,  refresh  the current line without
+              Clear  the  screen  leaving  the  current line at the top of the
+              screen.  With an argument,  refresh  the  current  line  without
               clearing the screen.
        r\bre\bed\bdr\bra\baw\bw-\b-c\bcu\bur\brr\bre\ben\bnt\bt-\b-l\bli\bin\bne\be
               Refresh the current line.
@@ -3345,60 +3497,70 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
    C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMa\ban\bni\bip\bpu\bul\bla\bat\bti\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by
        a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be (\b(N\bNe\bew\bwl\bli\bin\bne\be,\b, R\bRe\bet\btu\bur\brn\bn)\b)
               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 H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL variable.  If the line is a modified  history
+              is non-empty, add it to the history list according to the  state
+              of  the H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL variable.  If the line is a modified history
               line, then restore the history line to its original state.
        p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-p\bp)\b)
               Fetch the previous command from the history list, moving back in
               the list.
        n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-n\bn)\b)
-              Fetch the next command from the history list, moving forward  in
+              Fetch  the next command from the history list, moving forward in
               the list.
        b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-<\b<)\b)
               Move to the first line in the history.
        e\ben\bnd\bd-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b->\b>)\b)
-              Move  to  the end of the input history, i.e., the line currently
+              Move to the end of the input history, i.e., the  line  currently
               being entered.
        r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-r\br)\b)
-              Search backward starting at the current  line  and  moving  `up'
-              through  the  history  as  necessary.   This  is  an incremental
+              Search  backward  starting  at  the current line and moving `up'
+              through the  history  as  necessary.   This  is  an  incremental
               search.
        f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-s\bs)\b)
-              Search forward starting at the current line  and  moving  `down'
-              through  the  history  as  necessary.   This  is  an incremental
+              Search  forward  starting  at the current line and moving `down'
+              through the  history  as  necessary.   This  is  an  incremental
               search.
        n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-p\bp)\b)
               Search backward through the history starting at the current line
-              using  a  non-incremental  search  for  a string supplied by the
+              using a non-incremental search for  a  string  supplied  by  the
               user.
        n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-n\bn)\b)
-              Search forward  through  the  history  using  a  non-incremental
+              Search  forward  through  the  history  using  a non-incremental
               search for a string supplied by the user.
        h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
-              Search  forward through the history for the string of characters
-              between the start of the current line and the point.  This is  a
+              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.
        h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
               Search backward through the history for the string of characters
-              between the start of the current line and the point.  This is  a
+              between  the start of the current line and the point.  This is a
               non-incremental search.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
+              Search backward through the history for the string of characters
+              between  the  start  of  the current line and the current cursor
+              position (the _\bp_\bo_\bi_\bn_\bt).  The search string may match anywhere in a
+              history line.  This is a non-incremental search.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
+              Search  forward through the history for the string of characters
+              between the start of the current line and the point.  The search
+              string  may  match  anywhere  in a history line.  This is a non-
+              incremental search.
        y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg (\b(M\bM-\b-C\bC-\b-y\by)\b)
-              Insert  the  first argument to the previous command (usually the
+              Insert the first argument to the previous command  (usually  the
               second word on the previous line) at point.  With an argument _\bn,
-              insert  the _\bnth word from the previous command (the words in the
-              previous command  begin  with  word  0).   A  negative  argument
+              insert the _\bnth word from the previous command (the words in  the
+              previous  command  begin  with  word  0).   A  negative argument
               inserts the _\bnth word from the end of the previous command.  Once
-              the argument _\bn is computed, the argument is extracted as if  the
+              the  argument _\bn is computed, the argument is extracted as if the
               "!_\bn" history expansion had been specified.
        y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg (\b(M\bM-\b-.\b.,\b, M\bM-\b-_\b_)\b)
-              Insert  the last argument to the previous command (the last word
+              Insert the last argument to the previous command (the last  word
               of the previous history entry).  With a numeric argument, behave
-              exactly  like  y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg.   Successive calls to y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg
-              move back through the history list, inserting the last word  (or
-              the  word  specified  by the argument to the first call) of each
+              exactly like y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg.  Successive  calls  to  y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg
+              move  back through the history list, inserting the last word (or
+              the word specified by the argument to the first  call)  of  each
               line in turn.  Any numeric argument supplied to these successive
-              calls  determines  the direction to move through the history.  A
-              negative argument switches the  direction  through  the  history
+              calls determines the direction to move through the  history.   A
+              negative  argument  switches  the  direction through the history
               (back or forward).  The history expansion facilities are used to
               extract the last word, as if the "!$" history expansion had been
               specified.
@@ -3407,24 +3569,25 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
               tory expansion as well as all of the shell word expansions.  See
               H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN below for a description of history expansion.
        h\bhi\bis\bst\bto\bor\bry\by-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-l\bli\bin\bne\be (\b(M\bM-\b-^\b^)\b)
-              Perform  history  expansion  on  the  current line.  See H\bHI\bIS\bST\bTO\bOR\bRY\bY
+              Perform history expansion on  the  current  line.   See  H\bHI\bIS\bST\bTO\bOR\bRY\bY
               E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN below for a description of history expansion.
        m\bma\bag\bgi\bic\bc-\b-s\bsp\bpa\bac\bce\be
-              Perform history expansion on  the  current  line  and  insert  a
+              Perform  history  expansion  on  the  current  line and insert a
               space.  See H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN below for a description of history
               expansion.
        a\bal\bli\bia\bas\bs-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-l\bli\bin\bne\be
-              Perform alias expansion on the current line.  See A\bAL\bLI\bIA\bAS\bSE\bES\b above
+              Perform  alias expansion on the current line.  See A\bAL\bLI\bIA\bAS\bSE\bES\bS above
               for a description of alias expansion.
        h\bhi\bis\bst\bto\bor\bry\by-\b-a\ban\bnd\bd-\b-a\bal\bli\bia\bas\bs-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-l\bli\bin\bne\be
               Perform history and alias expansion on the current line.
        i\bin\bns\bse\ber\brt\bt-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt (\b(M\bM-\b-.\b.,\b, M\bM-\b-_\b_)\b)
               A synonym for y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg.
        o\bop\bpe\ber\bra\bat\bte\be-\b-a\ban\bnd\bd-\b-g\bge\bet\bt-\b-n\bne\bex\bxt\bt (\b(C\bC-\b-o\bo)\b)
-              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.
-       e\bed\bdi\bit\bt-\b-a\ban\bnd\bd-\b-e\bex\bxe\bec\bcu\but\bte\be-\b-c\bco\bom\bmm\bma\ban\bnd\bd (\b(C\bC-\b-x\bxC\bC-\b-e\be)\b)
+              Accept the current line for execution and fetch  the  next  line
+              relative  to  the  current line from the history for editing.  A
+              numeric argument, if supplied, specifies the  history  entry  to
+              use instead of the current line.
+       e\bed\bdi\bit\bt-\b-a\ban\bnd\bd-\b-e\bex\bxe\bec\bcu\but\bte\be-\b-c\bco\bom\bmm\bma\ban\bnd\bd (\b(C\bC-\b-x\bx C\bC-\b-e\be)\b)
               Invoke  an  editor  on the current command line, and execute the
               result as shell commands.   B\bBa\bas\bsh\bh  attempts  to  invoke  $\b$V\bVI\bIS\bSU\bUA\bAL\bL,
               $\b$E\bED\bDI\bIT\bTO\bOR\bR, and _\be_\bm_\ba_\bc_\bs as the editor, in that order.
@@ -3647,103 +3810,107 @@ R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
        a\bab\bbo\bor\brt\bt (\b(C\bC-\b-g\bg)\b)
               Abort  the  current editing command and ring the terminal's bell
               (subject to the setting of b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be).
-       d\bdo\bo-\b-u\bup\bpp\bpe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-a\ba,\b, M\bM-\b-b\bb,\b, M\bM-\b-_\bx,\b, .\b..\b..\b.)\b)
-              If the metafied character _\bx is lowercase, run the  command  that
-              is bound to the corresponding uppercase character.
+       d\bdo\bo-\b-l\blo\bow\bwe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-A\bA,\b, M\bM-\b-B\bB,\b, M\bM-\b-_\bx,\b, .\b..\b..\b.)\b)
+              If the metafied character _\bx is uppercase, run the  command  that
+              is bound to the corresponding metafied lowercase character.  The
+              behavior is undefined if _\bx is already lowercase.
        p\bpr\bre\bef\bfi\bix\bx-\b-m\bme\bet\bta\ba (\b(E\bES\bSC\bC)\b)
               Metafy the next character typed.  E\bES\bSC\bC f\bf is equivalent to M\bMe\bet\bta\ba-\b-f\bf.
        u\bun\bnd\bdo\bo (\b(C\bC-\b-_\b_,\b, C\bC-\b-x\bx C\bC-\b-u\bu)\b)
               Incremental undo, separately remembered for each line.
        r\bre\bev\bve\ber\brt\bt-\b-l\bli\bin\bne\be (\b(M\bM-\b-r\br)\b)
-              Undo  all changes made to this line.  This is like executing the
-              u\bun\bnd\bdo\bcommand enough times to return  the  line  to  its  initial
+              Undo all changes made to this line.  This is like executing  the
+              u\bun\bnd\bdo\b command  enough  times  to  return the line to its initial
               state.
        t\bti\bil\bld\bde\be-\b-e\bex\bxp\bpa\ban\bnd\bd (\b(M\bM-\b-&\b&)\b)
               Perform tilde expansion on the current word.
        s\bse\bet\bt-\b-m\bma\bar\brk\bk (\b(C\bC-\b-@\b@,\b, M\bM-\b-<\b<s\bsp\bpa\bac\bce\be>\b>)\b)
-              Set  the  mark to the point.  If a numeric argument is supplied,
+              Set the mark to the point.  If a numeric argument  is  supplied,
               the mark is set to that position.
        e\bex\bxc\bch\bha\ban\bng\bge\be-\b-p\bpo\boi\bin\bnt\bt-\b-a\ban\bnd\bd-\b-m\bma\bar\brk\bk (\b(C\bC-\b-x\bx C\bC-\b-x\bx)\b)
-              Swap the point with the mark.  The current  cursor  position  is
-              set  to the saved position, and the old cursor position is saved
+              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.
        c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh (\b(C\bC-\b-]\b])\b)
               A character is read and point is moved to the next occurrence of
-              that  character.   A negative count searches for previous occur-
+              that character.  A negative count searches for  previous  occur-
               rences.
        c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd (\b(M\bM-\b-C\bC-\b-]\b])\b)
-              A character is read and point is moved to  the  previous  occur-
-              rence  of  that character.  A negative count searches for subse-
+              A  character  is  read and point is moved to the previous occur-
+              rence of that character.  A negative count searches  for  subse-
               quent occurrences.
        s\bsk\bki\bip\bp-\b-c\bcs\bsi\bi-\b-s\bse\beq\bqu\bue\ben\bnc\bce\be
-              Read enough characters to consume a multi-key sequence  such  as
-              those  defined for keys like Home and End.  Such sequences begin
+              Read  enough  characters to consume a multi-key sequence such as
+              those defined for keys like Home and End.  Such sequences  begin
               with a Control Sequence Indicator (CSI), usually ESC-[.  If this
-              sequence  is  bound  to "\[", keys producing such sequences will
-              have no effect unless explicitly bound to  a  readline  command,
-              instead  of  inserting stray characters into the editing buffer.
+              sequence is bound to "\[", keys producing  such  sequences  will
+              have  no  effect  unless explicitly bound to a readline command,
+              instead of inserting stray characters into the  editing  buffer.
               This is unbound by default, but usually bound to ESC-[.
        i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt (\b(M\bM-\b-#\b#)\b)
-              Without a numeric argument,  the  value  of  the  readline  c\bco\bom\bm-\b-
-              m\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\b variable is inserted at the beginning of the current
+              Without  a  numeric  argument,  the  value  of the readline c\bco\bom\bm-\b-
+              m\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bvariable 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 c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn, the value is inserted,  other-
+              toggle: if the characters at the beginning of the  line  do  not
+              match  the value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn, the value is inserted, other-
               wise the characters in c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn are deleted from the begin-
-              ning of the line.  In either case, the line is accepted as if  a
-              newline  had  been  typed.   The  default value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn
-              causes this command to make the current line  a  shell  comment.
-              If  a  numeric  argument  causes  the  comment  character  to be
+              ning  of the line.  In either case, the line is accepted as if a
+              newline had been typed.   The  default  value  of  c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn
+              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.
        g\bgl\blo\bob\bb-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-g\bg)\b)
-              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  filenames  for  possible
+              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 filenames for possible
               completions.
        g\bgl\blo\bob\bb-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-w\bwo\bor\brd\bd (\b(C\bC-\b-x\bx *\b*)\b)
-              The  word  before  point  is  treated  as a pattern for pathname
-              expansion, and the  list  of  matching  filenames  is  inserted,
-              replacing  the  word.   If  a  numeric  argument is supplied, an
+              The word before point is  treated  as  a  pattern  for  pathname
+              expansion,  and  the  list  of  matching  filenames is inserted,
+              replacing the word.  If  a  numeric  argument  is  supplied,  an
               asterisk is appended before pathname expansion.
        g\bgl\blo\bob\bb-\b-l\bli\bis\bst\bt-\b-e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bns\bs (\b(C\bC-\b-x\bx g\bg)\b)
-              The list  of  expansions  that  would  have  been  generated  by
-              g\bgl\blo\bob\bb-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-w\bwo\bor\brd\b is  displayed,  and the line is redrawn.  If a
-              numeric argument is supplied, an  asterisk  is  appended  before
+              The  list  of  expansions  that  would  have  been  generated by
+              g\bgl\blo\bob\bb-\b-e\bex\bxp\bpa\ban\bnd\bd-\b-w\bwo\bor\brd\bis displayed, and the line is  redrawn.   If  a
+              numeric  argument  is  supplied,  an asterisk is appended before
               pathname expansion.
        d\bdu\bum\bmp\bp-\b-f\bfu\bun\bnc\bct\bti\bio\bon\bns\bs
-              Print  all  of the functions and their key bindings to the read-
+              Print all of the functions and their key bindings to  the  read-
               line output stream.  If a numeric argument is supplied, the out-
-              put  is  formatted  in such a way that it can be made part of an
+              put is formatted in such a way that it can be made  part  of  an
               _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
        d\bdu\bum\bmp\bp-\b-v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
               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
+              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 _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
        d\bdu\bum\bmp\bp-\b-m\bma\bac\bcr\bro\bos\bs
-              Print  all of the readline key sequences bound to macros and the
-              strings they output.  If a numeric  argument  is  supplied,  the
+              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
               _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
        d\bdi\bis\bsp\bpl\bla\bay\by-\b-s\bsh\bhe\bel\bll\bl-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(C\bC-\b-x\bx C\bC-\b-v\bv)\b)
               Display version information about the current instance of b\bba\bas\bsh\bh.
 
    P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn
-       When word completion is attempted for an  argument  to  a  command  for
-       which  a  completion  specification (a _\bc_\bo_\bm_\bp_\bs_\bp_\be_\bc) has been defined using
-       the c\bco\bom\bmp\bpl\ble\bet\bte\be builtin (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below),  the  program-
+       When  word  completion  is  attempted  for an argument to a command for
+       which a completion specification (a _\bc_\bo_\bm_\bp_\bs_\bp_\be_\bc) has  been  defined  using
+       the  c\bco\bom\bmp\bpl\ble\bet\bte\be  builtin (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below), the program-
        mable completion facilities are invoked.
 
-       First,  the  command  name  is  identified.  If the command word is the
-       empty string (completion attempted at the beginning of an empty  line),
-       any  compspec  defined  with  the  -\b-E\bE option to c\bco\bom\bmp\bpl\ble\bet\bte\be is used.  If a
-       compspec has been defined for that command, the  compspec  is  used  to
+       First, the command name is identified.  If  the  command  word  is  the
+       empty  string (completion attempted at the beginning of an empty line),
+       any compspec defined with the -\b-E\bE option to  c\bco\bom\bmp\bpl\ble\bet\bte\be  is  used.   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.
-       If  those  searches  do  not result in a compspec, any compspec defined
-       with the -\b-D\bD option to c\bco\bom\bmp\bpl\ble\bet\bte\be is used as the default.
+       word  is  a full pathname, a compspec for the full pathname is searched
+       for first.  If no compspec is found for the full pathname,  an  attempt
+       is  made  to find a compspec for the portion following the final slash.
+       If those searches do not result in a  compspec,  any  compspec  defined
+       with  the -\b-D\bD option to c\bco\bom\bmp\bpl\ble\bet\bte\be is used as the default.  If there is no
+       default compspec, b\bba\bas\bsh\bh attempts alias expansion on the command word  as
+       a  final  resort,  and attempts to find a compspec for the command word
+       from any successful expansion.
 
        Once a compspec has been found, it is used  to  generate  the  list  of
        matching  words.   If a compspec is not found, the default b\bba\bas\bsh\bh comple-
@@ -3871,8 +4038,8 @@ H\bHI\bIS\bST\bTO\bOR\bRY\bY
        S\bSI\bIZ\bZE\bE  is unset, or set to null, a non-numeric value, or a numeric value
        less than zero, the history file is not truncated.   When  the  history
        file  is  read, lines beginning with the history comment character fol-
-       lowed immediately by a digit are interpreted as timestamps for the pre-
-       ceding history line.  These timestamps are optionally displayed depend-
+       lowed immediately by a digit are interpreted as timestamps for the fol-
+       lowing history line.  These timestamps are optionally displayed depend-
        ing on the value of the H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable.   When  a  shell  with
        history  enabled  exits,  the  last $\b$H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE lines are copied from the
        history list to $\b$H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE.  If the h\bhi\bis\bst\bta\bap\bpp\bpe\ben\bnd\bd shell option  is  enabled
@@ -3908,7 +4075,7 @@ H\bHI\bIS\bST\bTO\bOR\bRY\bY
 
 H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        The  shell  supports a history expansion feature that is similar to the
-       history expansion in c\bcs\bsh\bh.\b.  This section describes what syntax  features
+       history expansion in c\bcs\bsh\bh.  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\bH option to the s\bse\bet\bt builtin com-
        mand (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).  Non-interactive shells do not
@@ -3920,96 +4087,97 @@ H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        commands quickly.
 
        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 _\be_\bv_\be_\bn_\bt, and the portions of that line that  are  acted  upon  are
-       _\bw_\bo_\br_\bd_\bs.   Various  _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs  are  available  to manipulate the selected
-       words.  The line is broken into words in the same fashion as when read-
-       ing  input, so that several _\bm_\be_\bt_\ba_\bc_\bh_\ba_\br_\ba_\bc_\bt_\be_\br-separated words surrounded by
-       quotes are considered one word.  History expansions are  introduced  by
-       the  appearance  of  the  history  expansion  character,  which is !\b! by
-       default.  Only backslash (\\b\) and single quotes can  quote  the  history
-       expansion  character,  but  the  history  expansion  character  is also
-       treated as quoted if it immediately precedes the closing  double  quote
-       in a double-quoted string.
-
-       Several  characters inhibit history expansion if found immediately fol-
-       lowing the history expansion character, even if it is unquoted:  space,
-       tab,  newline,  carriage return, and =\b=.  If the e\bex\bxt\btg\bgl\blo\bob\bb shell option is
+       read, before the shell breaks it into words, and is performed  on  each
+       line  individually  without  taking  quoting  on  previous  lines  into
+       account.  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 _\be_\bv_\be_\bn_\bt, and the portions of
+       that line that are acted upon are _\bw_\bo_\br_\bd_\bs.  Various _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs are  avail-
+       able  to  manipulate the selected words.  The line is broken into words
+       in the same fashion as when reading input, so that several  _\bm_\be_\bt_\ba_\bc_\bh_\ba_\br_\ba_\bc_\b-
+       _\bt_\be_\br-separated words surrounded by quotes are considered one word.  His-
+       tory expansions are introduced by the appearance of the history  expan-
+       sion  character,  which is !\b! by default.  Only backslash (\\b\) and single
+       quotes can quote the  history  expansion  character,  but  the  history
+       expansion  character  is  also treated as quoted if it immediately pre-
+       cedes the closing double quote in a double-quoted string.
+
+       Several characters inhibit history expansion if found immediately  fol-
+       lowing  the history expansion character, even if it is unquoted: space,
+       tab, newline, carriage return, and =\b=.  If the e\bex\bxt\btg\bgl\blo\bob\bb shell  option  is
        enabled, (\b( will also inhibit expansion.
 
-       Several shell options settable with the s\bsh\bho\bop\bpt\bt builtin may  be  used  to
-       tailor  the  behavior  of  history  expansion.  If the h\bhi\bis\bst\btv\bve\ber\bri\bif\bfy\by shell
+       Several  shell  options  settable with the s\bsh\bho\bop\bpt\bt builtin may be used to
+       tailor the behavior of history  expansion.   If  the  h\bhi\bis\bst\btv\bve\ber\bri\bif\bfy\b shell
        option is enabled (see the description of the s\bsh\bho\bop\bpt\bt builtin below), and
-       r\bre\bea\bad\bdl\bli\bin\bne\b is  being  used,  history  substitutions  are not immediately
-       passed to the shell parser.  Instead, the  expanded  line  is  reloaded
+       r\bre\bea\bad\bdl\bli\bin\bne\bis being  used,  history  substitutions  are  not  immediately
+       passed  to  the  shell  parser.  Instead, the expanded line is reloaded
        into the r\bre\bea\bad\bdl\bli\bin\bne\be editing buffer for further modification.  If r\bre\bea\bad\bdl\bli\bin\bne\be
-       is being used, and the h\bhi\bis\bst\btr\bre\bee\bed\bdi\bit\bt shell option  is  enabled,  a  failed
-       history  substitution will be reloaded into the r\bre\bea\bad\bdl\bli\bin\bne\be editing buffer
-       for correction.  The -\b-p\bp option to the h\bhi\bis\bst\bto\bor\bry\by builtin  command  may  be
-       used  to  see what a history expansion will do before using it.  The -\b-s\bs
+       is  being  used,  and  the h\bhi\bis\bst\btr\bre\bee\bed\bdi\bit\bt shell option is enabled, a failed
+       history substitution will be reloaded into the r\bre\bea\bad\bdl\bli\bin\bne\be editing  buffer
+       for  correction.   The  -\b-p\bp option to the h\bhi\bis\bst\bto\bor\bry\by builtin command may be
+       used to see what a history expansion will do before using it.   The  -\b-s\bs
        option to the h\bhi\bis\bst\bto\bor\bry\by builtin may be used to add commands to the end of
-       the  history  list  without  actually  executing them, so that they are
+       the history list without actually executing  them,  so  that  they  are
        available for subsequent recall.
 
-       The shell allows control of the various characters used by the  history
+       The  shell allows control of the various characters used by the history
        expansion mechanism (see the description of h\bhi\bis\bst\btc\bch\bha\bar\brs\bs above under S\bSh\bhe\bel\bll\bl
-       V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs).  The shell uses the history comment character to mark  his-
+       V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs).   The shell uses the history comment character to mark his-
        tory timestamps when writing the history file.
 
    E\bEv\bve\ben\bnt\bt D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
-       An  event designator is a reference to a command line entry in the his-
-       tory list.  Unless the reference is absolute, events  are  relative  to
+       An event designator is a reference to a command line entry in the  his-
+       tory  list.   Unless  the reference is absolute, events are relative to
        the current position in the history list.
 
-       !\b!      Start  a  history substitution, except when followed by a b\bbl\bla\ban\bnk\bk,
-              newline, carriage return, = or ( (when the e\bex\bxt\btg\bgl\blo\bob\bb shell  option
+       !\b!      Start a history substitution, except when followed by  a  b\bbl\bla\ban\bnk\bk,
+              newline,  carriage return, = or ( (when the e\bex\bxt\btg\bgl\blo\bob\bb shell option
               is enabled using the s\bsh\bho\bop\bpt\bt builtin).
        !\b!_\bn     Refer to command line _\bn.
        !\b!-\b-_\bn    Refer to the current command minus _\bn.
        !\b!!\b!     Refer to the previous command.  This is a synonym for `!-1'.
        !\b!_\bs_\bt_\br_\bi_\bn_\bg
-              Refer  to the most recent command preceding the current position
+              Refer to the most recent command preceding the current  position
               in the history list starting with _\bs_\bt_\br_\bi_\bn_\bg.
        !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b]
-              Refer to the most recent command preceding the current  position
-              in  the  history  list containing _\bs_\bt_\br_\bi_\bn_\bg.  The trailing ?\b? may be
+              Refer  to the most recent command preceding the current position
+              in the history list containing _\bs_\bt_\br_\bi_\bn_\bg.  The trailing  ?\b?  may  be
               omitted if _\bs_\bt_\br_\bi_\bn_\bg is followed immediately by a newline.
        ^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b1^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b2^\b^
-              Quick substitution.   Repeat  the  previous  command,  replacing
-              _\bs_\bt_\br_\bi_\bn_\bg_\b with  _\bs_\bt_\br_\bi_\bn_\bg_\b2.  Equivalent to ``!!:s/_\bs_\bt_\br_\bi_\bn_\bg_\b1/_\bs_\bt_\br_\bi_\bn_\bg_\b2/''
+              Quick  substitution.   Repeat  the  previous  command, replacing
+              _\bs_\bt_\br_\bi_\bn_\bg_\bwith _\bs_\bt_\br_\bi_\bn_\bg_\b2.  Equivalent  to  ``!!:s/_\bs_\bt_\br_\bi_\bn_\bg_\b1/_\bs_\bt_\br_\bi_\bn_\bg_\b2/''
               (see M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs below).
        !\b!#\b#     The entire command line typed so far.
 
    W\bWo\bor\brd\bd D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
-       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 ^\b^, $\b$, *\b*, -\b-, or  %\b%.   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  sepa-
+       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 ^\b^, $\b$, *\b*, -\b-, or %\b%.  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 sepa-
        rated by single spaces.
 
        0\b0 (\b(z\bze\ber\bro\bo)\b)
               The zeroth word.  For the shell, this is the command word.
        _\bn      The _\bnth word.
        ^\b^      The first argument.  That is, word 1.
-       $\b$      The  last  word.   This  is  usually the last argument, but will
+       $\b$      The last word.  This is usually  the  last  argument,  but  will
               expand to the zeroth word if there is only one word in the line.
        %\b%      The word matched by the most recent `?_\bs_\bt_\br_\bi_\bn_\bg?' search.
        _\bx-\b-_\by    A range of words; `-_\by' abbreviates `0-_\by'.
-       *\b*      All of the words but the zeroth.  This is a synonym  for  `_\b1_\b-_\b$'.
-              It  is  not  an  error to use *\b* if there is just one word in the
+       *\b*      All  of  the words but the zeroth.  This is a synonym for `_\b1_\b-_\b$'.
+              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.
        x\bx*\b*     Abbreviates _\bx_\b-_\b$.
        x\bx-\b-     Abbreviates _\bx_\b-_\b$ like x\bx*\b*, but omits the last word.
 
-       If a word designator is supplied without an  event  specification,  the
+       If  a  word  designator is supplied without an event specification, the
        previous command is used as the event.
 
    M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs
-       After  the optional word designator, there may appear a sequence of one
+       After the optional word designator, there may appear a sequence of  one
        or more of the following modifiers, each preceded by a `:'.
 
        h\bh      Remove a trailing filename component, leaving only the head.
@@ -4018,80 +4186,80 @@ H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        e\be      Remove all but the trailing suffix.
        p\bp      Print the new command but do not execute it.
        q\bq      Quote the substituted words, escaping further substitutions.
-       x\bx      Quote the substituted words as with q\bq, but break into  words  at
+       x\bx      Quote  the  substituted words as with q\bq, but break into words at
               b\bbl\bla\ban\bnk\bks\bs and newlines.
        s\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/
-              Substitute  _\bn_\be_\bw  for  the  first  occurrence of _\bo_\bl_\bd 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 _\bo_\bl_\bd and _\bn_\be_\bw with a  single
-              backslash.   If & appears in _\bn_\be_\bw, it is replaced by _\bo_\bl_\bd.  A sin-
-              gle backslash will quote the &.  If _\bo_\bl_\bd is null, it  is  set  to
-              the  last  _\bo_\bl_\bd substituted, or, if no previous history substitu-
+              Substitute _\bn_\be_\bw for the first occurrence  of  _\bo_\bl_\bd  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 _\bo_\bl_\bd and _\bn_\be_\bw with a single
+              backslash.  If & appears in _\bn_\be_\bw, it is replaced by _\bo_\bl_\bd.  A  sin-
+              gle  backslash  will  quote the &.  If _\bo_\bl_\bd is null, it is set to
+              the last _\bo_\bl_\bd substituted, or, if no previous  history  substitu-
               tions took place, the last _\bs_\bt_\br_\bi_\bn_\bg in a !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b]  search.
        &\b&      Repeat the previous substitution.
        g\bg      Cause changes to be applied over the entire event line.  This is
-              used  in  conjunction  with `:\b:s\bs' (e.g., `:\b:g\bgs\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/') or `:\b:&\b&'.
-              If used with `:\b:s\bs', any delimiter can be used in place of /,  and
-              the  final  delimiter is optional if it is the last character of
+              used in conjunction with `:\b:s\bs' (e.g.,  `:\b:g\bgs\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/')  or  `:\b:&\b&'.
+              If  used with `:\b:s\bs', 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 a\ba may be used as a synonym for g\bg.
-       G\bG      Apply the following `s\bs' modifier once to each word in the  event
+       G\bG      Apply  the following `s\bs' modifier once to each word in the event
               line.
 
 S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        Unless otherwise noted, each builtin command documented in this section
        as accepting options preceded by -\b- accepts -\b--\b- to signify the end of the
-       options.   The  :\b:, t\btr\bru\bue\be, f\bfa\bal\bls\bse\be, and t\bte\bes\bst\bt builtins do not accept options
-       and do not treat -\b--\b- specially.  The e\bex\bxi\bit\bt, l\blo\bog\bgo\bou\but\bt, r\bre\bet\btu\bur\brn\bn,  b\bbr\bre\bea\bak\bk,  c\bco\bon\bn-\b-
-       t\bti\bin\bnu\bue\be,  l\ble\bet\bt,  and s\bsh\bhi\bif\bft\bt builtins accept and process arguments beginning
-       with -\b- without requiring -\b--\b-.  Other builtins that accept arguments  but
-       are  not  specified  as accepting options interpret arguments beginning
-       with -\b- as invalid options and require -\b--\b- to  prevent  this  interpreta-
+       options.  The :\b:, t\btr\bru\bue\be, f\bfa\bal\bls\bse\be, and t\bte\bes\bst\bt/[\b[ builtins do not accept options
+       and  do  not treat -\b--\b- specially.  The e\bex\bxi\bit\bt, l\blo\bog\bgo\bou\but\bt, r\bre\bet\btu\bur\brn\bn, b\bbr\bre\bea\bak\bk, c\bco\bon\bn-\b-
+       t\bti\bin\bnu\bue\be, l\ble\bet\bt, and s\bsh\bhi\bif\bft\bt builtins accept and process  arguments  beginning
+       with  -\b- without requiring -\b--\b-.  Other builtins that accept arguments but
+       are not specified as accepting options  interpret  arguments  beginning
+       with  -\b-  as  invalid options and require -\b--\b- to prevent this interpreta-
        tion.
        :\b: [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              No  effect;  the command does nothing beyond expanding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs
+              No effect; the command does nothing beyond  expanding  _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs
               and performing any specified redirections.  The return status is
               zero.
 
         .\b.  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
        s\bso\bou\bur\brc\bce\be _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              Read  and  execute  commands  from _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be in the current shell
-              environment and return the exit status of the last command  exe-
-              cuted  from  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be.   If  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  does not contain a slash,
-              filenames in P\bPA\bAT\bTH\bH are used  to  find  the  directory  containing
+              Read and execute commands from _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  in  the  current  shell
+              environment  and return the exit status of the last command exe-
+              cuted from _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  does  not  contain  a  slash,
+              filenames  in  P\bPA\bAT\bTH\bH  are  used  to find the directory containing
               _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be.  The file searched for in P\bPA\bAT\bTH\bH need not be executable.
-              When b\bba\bas\bsh\bh is  not  in  _\bp_\bo_\bs_\bi_\bx  _\bm_\bo_\bd_\be,  the  current  directory  is
-              searched  if no file is found in P\bPA\bAT\bTH\bH.  If the s\bso\bou\bur\brc\bce\bep\bpa\bat\bth\bh option
-              to the s\bsh\bho\bop\bpt\bt builtin command is turned  off,  the  P\bPA\bAT\bTH\bH  is  not
-              searched.   If any _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs are supplied, they become the posi-
-              tional parameters when  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  is  executed.   Otherwise  the
-              positional  parameters  are  unchanged.   If  the  -\b-T\bT  option is
-              enabled, s\bso\bou\bur\brc\bce\be inherits any trap on D\bDE\bEB\bBU\bUG\bG; if it  is  not,  any
-              D\bDE\bEB\bBU\bUG\b trap  string  is  saved  and  restored around the call to
-              s\bso\bou\bur\brc\bce\be, and s\bso\bou\bur\brc\bce\be unsets the D\bDE\bEB\bBU\bUG\bG trap while it executes.   If
-              -\b-T\b is not set, and the sourced file changes the D\bDE\bEB\bBU\bUG\bG trap, the
-              new value is retained when s\bso\bou\bur\brc\bce\be completes.  The return  status
+              When  b\bba\bas\bsh\bh  is  not  in  _\bp_\bo_\bs_\bi_\bx  _\bm_\bo_\bd_\be,  the  current directory is
+              searched if no file is found in P\bPA\bAT\bTH\bH.  If the s\bso\bou\bur\brc\bce\bep\bpa\bat\bth\b option
+              to  the  s\bsh\bho\bop\bpt\bt  builtin  command  is turned off, the P\bPA\bAT\bTH\bH is not
+              searched.  If any _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs are supplied, they become the  posi-
+              tional  parameters  when  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  is  executed.  Otherwise the
+              positional parameters  are  unchanged.   If  the  -\b-T\bT  option  is
+              enabled,  s\bso\bou\bur\brc\bce\be  inherits  any trap on D\bDE\bEB\bBU\bUG\bG; if it is not, any
+              D\bDE\bEB\bBU\bUG\btrap string is saved  and  restored  around  the  call  to
+              s\bso\bou\bur\brc\bce\be,  and s\bso\bou\bur\brc\bce\be unsets the D\bDE\bEB\bBU\bUG\bG trap while it executes.  If
+              -\b-T\bis not set, and the sourced file changes the D\bDE\bEB\bBU\bUG\bG trap,  the
+              new  value is retained when s\bso\bou\bur\brc\bce\be completes.  The return status
               is the status of the last command exited within the script (0 if
               no commands are executed), and false if _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is not found or
               cannot be read.
 
        a\bal\bli\bia\bas\bs [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
               A\bAl\bli\bia\bas\bs with no arguments or with the -\b-p\bp option prints the list of
-              aliases in the form a\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be=_\bv_\ba_\bl_\bu_\be on standard  output.   When
-              arguments  are supplied, an alias is defined for each _\bn_\ba_\bm_\be whose
-              _\bv_\ba_\bl_\bu_\bis given.  A trailing space in _\bv_\ba_\bl_\bu_\be causes the next  word
+              aliases  in  the form a\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be=_\bv_\ba_\bl_\bu_\be on standard output.  When
+              arguments are supplied, an alias is defined for each _\bn_\ba_\bm_\b whose
+              _\bv_\ba_\bl_\bu_\b is given.  A trailing space in _\bv_\ba_\bl_\bu_\be causes the next word
               to be checked for alias substitution when the alias is expanded.
-              For each _\bn_\ba_\bm_\be in the argument list for which no  _\bv_\ba_\bl_\bu_\be  is  sup-
-              plied,  the  name  and  value  of  the  alias is printed.  A\bAl\bli\bia\bas\bs
-              returns true unless a _\bn_\ba_\bm_\be is given for which no alias has  been
+              For  each  _\bn_\ba_\bm_\be  in the argument list for which no _\bv_\ba_\bl_\bu_\be is sup-
+              plied, the name and  value  of  the  alias  is  printed.   A\bAl\bli\bia\bas\bs
+              returns  true unless a _\bn_\ba_\bm_\be is given for which no alias has been
               defined.
 
        b\bbg\bg [_\bj_\bo_\bb_\bs_\bp_\be_\bc ...]
-              Resume  each  suspended  job _\bj_\bo_\bb_\bs_\bp_\be_\bc in the background, as if it
+              Resume each suspended job _\bj_\bo_\bb_\bs_\bp_\be_\bc in the background,  as  if  it
               had been started with &\b&.  If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, the shell's
-              notion  of the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb is used.  b\bbg\bg _\bj_\bo_\bb_\bs_\bp_\be_\bc returns 0 unless
-              run when job control is disabled or, when run with  job  control
-              enabled,  any  specified  _\bj_\bo_\bb_\bs_\bp_\be_\bc  was  not found or was started
+              notion of the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb is used.  b\bbg\bg _\bj_\bo_\bb_\bs_\bp_\be_\bc returns 0  unless
+              run  when  job control is disabled or, when run with job control
+              enabled, any specified _\bj_\bo_\bb_\bs_\bp_\be_\bc was  not  found  or  was  started
               without job control.
 
        b\bbi\bin\bnd\bd [-\b-m\bm _\bk_\be_\by_\bm_\ba_\bp] [-\b-l\blp\bps\bsv\bvP\bPS\bSV\bVX\bX]
@@ -4100,29 +4268,29 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        b\bbi\bin\bnd\bd [-\b-m\bm _\bk_\be_\by_\bm_\ba_\bp] -\b-x\bx _\bk_\be_\by_\bs_\be_\bq:_\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd
        b\bbi\bin\bnd\bd [-\b-m\bm _\bk_\be_\by_\bm_\ba_\bp] _\bk_\be_\by_\bs_\be_\bq:_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be
        b\bbi\bin\bnd\bd [-\b-m\bm _\bk_\be_\by_\bm_\ba_\bp] _\bk_\be_\by_\bs_\be_\bq:_\br_\be_\ba_\bd_\bl_\bi_\bn_\be_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd
-              Display current r\bre\bea\bad\bdl\bli\bin\bne\be key and function bindings, bind  a  key
-              sequence  to  a  r\bre\bea\bad\bdl\bli\bin\bne\be  function  or macro, or set a r\bre\bea\bad\bdl\bli\bin\bne\be
-              variable.  Each non-option argument is a  command  as  it  would
-              appear  in  _\b._\bi_\bn_\bp_\bu_\bt_\br_\bc, but each binding or command must be passed
-              as a separate argument; e.g.,  '"\C-x\C-r":  re-read-init-file'.
+              Display  current  r\bre\bea\bad\bdl\bli\bin\bne\be key and function bindings, bind a key
+              sequence to a r\bre\bea\bad\bdl\bli\bin\bne\be function or  macro,  or  set  a  r\bre\bea\bad\bdl\bli\bin\bne\be
+              variable.   Each  non-option  argument  is a command as it would
+              appear in _\b._\bi_\bn_\bp_\bu_\bt_\br_\bc, but each binding or command must  be  passed
+              as  a  separate argument; e.g., '"\C-x\C-r": re-read-init-file'.
               Options, if supplied, have the following meanings:
               -\b-m\bm _\bk_\be_\by_\bm_\ba_\bp
                      Use _\bk_\be_\by_\bm_\ba_\bp as the keymap to be affected by the subsequent
                      bindings.  Acceptable _\bk_\be_\by_\bm_\ba_\bp names are _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\b-
-                     _\bd_\ba_\br_\bd_\b _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b,  _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b,  _\bv_\bi_\b, _\bv_\bi_\b-_\bm_\bo_\bv_\be_\b, _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd,
-                     and _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.  _\bv_\bi is equivalent to  _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\b (_\bv_\bi_\b-_\bm_\bo_\bv_\be
-                     is  also  a  synonym); _\be_\bm_\ba_\bc_\bs is equivalent to _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\b-
+                     _\bd_\ba_\br_\bd_\b_\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b,  _\bv_\bi_\b,  _\bv_\bi_\b-_\bm_\bo_\bv_\be_\b _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd,
+                     and  _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.   _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd (_\bv_\bi_\b-_\bm_\bo_\bv_\be
+                     is also a synonym); _\be_\bm_\ba_\bc_\bs is  equivalent  to  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\b-
                      _\bd_\ba_\br_\bd.
               -\b-l\bl     List the names of all r\bre\bea\bad\bdl\bli\bin\bne\be functions.
-              -\b-p\bp     Display r\bre\bea\bad\bdl\bli\bin\bne\be function names and bindings  in  such  a
+              -\b-p\bp     Display  r\bre\bea\bad\bdl\bli\bin\bne\be  function  names and bindings in such a
                      way that they can be re-read.
               -\b-P\bP     List current r\bre\bea\bad\bdl\bli\bin\bne\be function names and bindings.
-              -\b-s\bs     Display  r\bre\bea\bad\bdl\bli\bin\bne\be  key  sequences bound to macros and the
-                     strings they output in such a way that they  can  be  re-
+              -\b-s\bs     Display r\bre\bea\bad\bdl\bli\bin\bne\be key sequences bound to  macros  and  the
+                     strings  they  output  in such a way that they can be re-
                      read.
-              -\b-S\bS     Display  r\bre\bea\bad\bdl\bli\bin\bne\be  key  sequences bound to macros and the
+              -\b-S\bS     Display r\bre\bea\bad\bdl\bli\bin\bne\be key sequences bound to  macros  and  the
                      strings they output.
-              -\b-v\bv     Display r\bre\bea\bad\bdl\bli\bin\bne\be variable names and values in such a  way
+              -\b-v\bv     Display  r\bre\bea\bad\bdl\bli\bin\bne\be variable names and values in such a way
                      that they can be re-read.
               -\b-V\bV     List current r\bre\bea\bad\bdl\bli\bin\bne\be variable names and values.
               -\b-f\bf _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
@@ -4134,125 +4302,132 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-r\br _\bk_\be_\by_\bs_\be_\bq
                      Remove any current binding for _\bk_\be_\by_\bs_\be_\bq.
               -\b-x\bx _\bk_\be_\by_\bs_\be_\bq:\b:_\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd
-                     Cause  _\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd  to  be  executed whenever _\bk_\be_\by_\bs_\be_\bq is
-                     entered.  When _\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd is executed, the shell  sets
-                     the  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE  variable to the contents of the r\bre\bea\bad\bd-\b-
-                     l\bli\bin\bne\bline buffer and the R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT variable  to  the
+                     Cause _\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd to be  executed  whenever  _\bk_\be_\by_\bs_\be_\b is
+                     entered.   When _\bs_\bh_\be_\bl_\bl_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd is executed, the shell sets
+                     the R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE variable to the contents of  the  r\bre\bea\bad\bd-\b-
+                     l\bli\bin\bne\b line  buffer and the R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT variable to the
                      current location of the insertion point.  If the executed
-                     command changes  the  value  of  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE  or  R\bRE\bEA\bAD\bD-\b-
-                     L\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT,  those  new  values  will be reflected in the
+                     command  changes  the  value  of  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE  or R\bRE\bEA\bAD\bD-\b-
+                     L\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT, those new values will  be  reflected  in  the
                      editing state.
-              -\b-X\bX     List all key sequences bound to shell  commands  and  the
-                     associated  commands  in  a  format that can be reused as
+              -\b-X\bX     List  all  key  sequences bound to shell commands and the
+                     associated commands in a format that  can  be  reused  as
                      input.
 
-              The return value is 0 unless an unrecognized option is given  or
+              The  return value is 0 unless an unrecognized option is given or
               an error occurred.
 
        b\bbr\bre\bea\bak\bk [_\bn]
-              Exit  from  within a f\bfo\bor\br, w\bwh\bhi\bil\ble\be, u\bun\bnt\bti\bil\bl, or s\bse\bel\ble\bec\bct\bt loop.  If _\bn is
-              specified, break _\bn levels.  _\bn must be >= 1.   If  _\bn  is  greater
-              than  the  number  of  enclosing  loops, all enclosing loops are
-              exited.  The return value is 0 unless _\bn is not greater  than  or
+              Exit from within a f\bfo\bor\br, w\bwh\bhi\bil\ble\be, u\bun\bnt\bti\bil\bl, or s\bse\bel\ble\bec\bct\bt loop.  If  _\b is
+              specified,  break  _\bn  levels.   _\bn must be >= 1.  If _\bn is greater
+              than the number of enclosing  loops,  all  enclosing  loops  are
+              exited.   The  return value is 0 unless _\bn is not greater than or
               equal to 1.
 
        b\bbu\bui\bil\blt\bti\bin\bn _\bs_\bh_\be_\bl_\bl_\b-_\bb_\bu_\bi_\bl_\bt_\bi_\bn [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              Execute  the  specified shell builtin, passing it _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs, and
+              Execute the specified shell builtin, passing it  _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs,  and
               return its exit status.  This is useful when defining a function
-              whose  name  is the same as a shell builtin, retaining the func-
+              whose name is the same as a shell builtin, retaining  the  func-
               tionality of the builtin within the function.  The c\bcd\bd builtin is
-              commonly  redefined  this  way.   The  return status is false if
+              commonly redefined this way.  The  return  status  is  false  if
               _\bs_\bh_\be_\bl_\bl_\b-_\bb_\bu_\bi_\bl_\bt_\bi_\bn is not a shell builtin command.
 
        c\bca\bal\bll\ble\ber\br [_\be_\bx_\bp_\br]
               Returns the context of any active subroutine call (a shell func-
               tion or a script executed with the .\b. or s\bso\bou\bur\brc\bce\be builtins).  With-
               out _\be_\bx_\bp_\br, c\bca\bal\bll\ble\ber\br displays the line number and source filename of
-              the  current subroutine call.  If a non-negative integer is sup-
+              the current subroutine call.  If a non-negative integer is  sup-
               plied as _\be_\bx_\bp_\br, c\bca\bal\bll\ble\ber\br 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  sub-
-              routine  call or _\be_\bx_\bp_\br does not correspond to a valid position in
+              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 sub-
+              routine call or _\be_\bx_\bp_\br does not correspond to a valid position  in
               the call stack.
 
        c\bcd\bd [-\b-L\bL|[-\b-P\bP [-\b-e\be]] [-@]] [_\bd_\bi_\br]
-              Change the current directory to _\bd_\bi_\br.  if _\bd_\bi_\br  is  not  supplied,
-              the  value of the H\bHO\bOM\bME\bE shell variable is the default.  Any addi-
+              Change  the  current  directory to _\bd_\bi_\br.  if _\bd_\bi_\br is not supplied,
+              the value of the H\bHO\bOM\bME\bE shell variable is the default.  Any  addi-
               tional arguments following _\bd_\bi_\br are ignored.  The variable C\bCD\bDP\bPA\bAT\bTH\bH
-              defines  the  search path for the directory containing _\bd_\bi_\br: each
-              directory name in  C\bCD\bDP\bPA\bAT\bTH\bH  is  searched  for  _\bd_\bi_\br.   Alternative
-              directory  names in C\bCD\bDP\bPA\bAT\bTH\bH are separated by a colon (:).  A null
-              directory name in C\bCD\bDP\bPA\bAT\bTH\bH is the same as the  current  directory,
+              defines the search path for the directory containing  _\bd_\bi_\br:  each
+              directory  name  in  C\bCD\bDP\bPA\bAT\bTH\bH  is  searched  for _\bd_\bi_\br.  Alternative
+              directory names in C\bCD\bDP\bPA\bAT\bTH\bH are separated by a colon (:).  A  null
+              directory  name  in C\bCD\bDP\bPA\bAT\bTH\bH is the same as the current directory,
               i.e., ``.\b.''.  If _\bd_\bi_\br begins with a slash (/), then C\bCD\bDP\bPA\bAT\bTH\bH is not
-              used.  The -\b-P\bP option causes c\bcd\bd to  use  the  physical  directory
-              structure  by  resolving symbolic links while traversing _\bd_\bi_\br and
+              used.   The  -\b-P\bP  option  causes c\bcd\bd to use the physical directory
+              structure by resolving symbolic links while traversing  _\bd_\bi_\b and
               before processing instances of _\b._\b. in _\bd_\bi_\br (see also the -\b-P\bP option
               to the s\bse\bet\bt builtin command); the -\b-L\bL option forces symbolic links
-              to be followed by resolving the link after processing  instances
+              to  be followed by resolving the link after processing instances
               of _\b._\b. in _\bd_\bi_\br.  If _\b._\b. appears in _\bd_\bi_\br, it is processed by removing
-              the immediately previous pathname component from _\bd_\bi_\br, back to  a
-              slash  or  the  beginning  of _\bd_\bi_\br.  If the -\b-e\be option is supplied
-              with -\b-P\bP, and the current working directory  cannot  be  success-
-              fully  determined  after  a successful directory change, c\bcd\bd will
-              return an unsuccessful status.  On systems that support it,  the
-              -\b-@\b option  presents  the  extended attributes associated with a
-              file as a directory.  An argument of -\b- is converted  to  $\b$O\bOL\bLD\bDP\bPW\bWD\bD
+              the  immediately previous pathname component from _\bd_\bi_\br, back to a
+              slash or the beginning of _\bd_\bi_\br.  If the  -\b-e\be  option  is  supplied
+              with  -\b-P\bP,  and  the current working directory cannot be success-
+              fully determined after a successful directory  change,  c\bcd\b will
+              return  an unsuccessful status.  On systems that support it, the
+              -\b-@\boption presents the extended  attributes  associated  with  a
+              file  as  a directory.  An argument of -\b- is converted to $\b$O\bOL\bLD\bDP\bPW\bWD\bD
               before the directory change is attempted.  If a non-empty direc-
-              tory name from C\bCD\bDP\bPA\bAT\bTH\bH is used, or if -\b- is  the  first  argument,
+              tory  name  from  C\bCD\bDP\bPA\bAT\bTH\bH is used, or if -\b- is the first argument,
               and the directory change is successful, the absolute pathname of
-              the new working directory is written  to  the  standard  output.
-              The  return  value  is  true  if  the directory was successfully
+              the  new  working  directory  is written to the standard output.
+              The return value is  true  if  the  directory  was  successfully
               changed; false otherwise.
 
        c\bco\bom\bmm\bma\ban\bnd\bd [-\b-p\bpV\bVv\bv] _\bc_\bo_\bm_\bm_\ba_\bn_\bd [_\ba_\br_\bg ...]
-              Run _\bc_\bo_\bm_\bm_\ba_\bn_\bd with _\ba_\br_\bg_\bs  suppressing  the  normal  shell  function
+              Run  _\bc_\bo_\bm_\bm_\ba_\bn_\bd  with  _\ba_\br_\bg_\bs  suppressing  the normal shell function
               lookup.  Only builtin commands or commands found in the P\bPA\bAT\bTH\bH are
-              executed.  If the -\b-p\bp option is given, the search for _\bc_\bo_\bm_\bm_\ba_\bn_\b is
-              performed  using  a default value for P\bPA\bAT\bTH\bH that is guaranteed to
-              find all of the standard utilities.  If  either  the  -\b-V\bV  or  -\b-v\bv
+              executed.   If the -\b-p\bp option is given, the search for _\bc_\bo_\bm_\bm_\ba_\bn_\bd is
+              performed using a default value for P\bPA\bAT\bTH\bH that is  guaranteed  to
+              find  all  of  the  standard  utilities.  If either the -\b-V\bV or -\b-v\bv
               option is supplied, a description of _\bc_\bo_\bm_\bm_\ba_\bn_\bd is printed.  The -\b-v\bv
-              option causes a single word indicating the command  or  filename
+              option  causes  a single word indicating the command or filename
               used to invoke _\bc_\bo_\bm_\bm_\ba_\bn_\bd to be displayed; the -\b-V\bV option produces a
-              more verbose description.  If the -\b-V\bV or -\b-v\bv option  is  supplied,
-              the  exit  status  is  0 if _\bc_\bo_\bm_\bm_\ba_\bn_\bd was found, and 1 if not.  If
+              more  verbose  description.  If the -\b-V\bV or -\b-v\bv option is supplied,
+              the exit status is 0 if _\bc_\bo_\bm_\bm_\ba_\bn_\bd was found, and  1  if  not.   If
               neither option is supplied and an error occurred or _\bc_\bo_\bm_\bm_\ba_\bn_\bd can-
-              not  be found, the exit status is 127.  Otherwise, the exit sta-
+              not be found, the exit status is 127.  Otherwise, the exit  sta-
               tus of the c\bco\bom\bmm\bma\ban\bnd\bd builtin is the exit status of _\bc_\bo_\bm_\bm_\ba_\bn_\bd.
 
        c\bco\bom\bmp\bpg\bge\ben\bn [_\bo_\bp_\bt_\bi_\bo_\bn] [_\bw_\bo_\br_\bd]
-              Generate possible completion matches for _\bw_\bo_\br_\bd according  to  the
-              _\bo_\bp_\bt_\bi_\bo_\bns,  which  may  be  any  option  accepted  by the c\bco\bom\bmp\bpl\ble\bet\bte\be
-              builtin with the exception of -\b-p\bp and -\b-r\br, and write  the  matches
-              to  the  standard  output.  When using the -\b-F\bF or -\b-C\bC options, the
-              various shell  variables  set  by  the  programmable  completion
+              Generate  possible  completion matches for _\bw_\bo_\br_\bd according to the
+              _\bo_\bp_\bt_\bi_\bo_\bns, which may  be  any  option  accepted  by  the  c\bco\bom\bmp\bpl\ble\bet\bte\be
+              builtin  with  the exception of -\b-p\bp and -\b-r\br, and write the matches
+              to the standard output.  When using the -\b-F\bF or  -\b-C\bC  options,  the
+              various  shell  variables  set  by  the  programmable completion
               facilities, while available, will not have useful values.
 
               The matches will be generated in the same way as if the program-
               mable completion code had generated them directly from a comple-
-              tion  specification  with the same flags.  If _\bw_\bo_\br_\bd is specified,
+              tion specification with the same flags.  If _\bw_\bo_\br_\bd  is  specified,
               only those completions matching _\bw_\bo_\br_\bd will be displayed.
 
-              The return value is true unless an invalid option  is  supplied,
+              The  return  value is true unless an invalid option is supplied,
               or no matches were generated.
 
-       c\bco\bom\bmp\bpl\ble\bet\bte\b [-\b-a\bab\bbc\bcd\bde\bef\bfg\bgj\bjk\bks\bsu\buv\bv]  [-\b-o\bo _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bE] [-\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn] [-\b-G\bG _\bg_\bl_\bo_\bb_\b-
+       c\bco\bom\bmp\bpl\ble\bet\bte\b[-\b-a\bab\bbc\bcd\bde\bef\bfg\bgj\bjk\bks\bsu\buv\bv] [-\b-o\bo _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bEI\bI] [-\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn] [-\b-G\b _\bg_\bl_\bo_\bb_\b-
        _\bp_\ba_\bt] [-\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt] [-\b-F\bF _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn] [-\b-C\bC _\bc_\bo_\bm_\bm_\ba_\bn_\bd]
               [-\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt] [-\b-P\bP _\bp_\br_\be_\bf_\bi_\bx] [-\b-S\bS _\bs_\bu_\bf_\bf_\bi_\bx] _\bn_\ba_\bm_\be [_\bn_\ba_\bm_\be _\b._\b._\b.]
-       c\bco\bom\bmp\bpl\ble\bet\bte\be -\b-p\bpr\br [-\b-D\bDE\bE] [_\bn_\ba_\bm_\be ...]
-              Specify how arguments to each _\bn_\ba_\bm_\be should be completed.  If  the
-              -\b-p\b option  is supplied, or if no options are supplied, existing
-              completion specifications are printed in a way that allows  them
+       c\bco\bom\bmp\bpl\ble\bet\bte\be -\b-p\bpr\br [-\b-D\bDE\bEI\bI] [_\bn_\ba_\bm_\be ...]
+              Specify  how arguments to each _\bn_\ba_\bm_\be should be completed.  If the
+              -\b-p\boption 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 -\b-r\br option removes a completion spec-
-              ification for each _\bn_\ba_\bm_\be, or, if no _\bn_\ba_\bm_\bes are supplied, all  com-
-              pletion  specifications.   The  -\b-D\bD  option  indicates  that  the
-              remaining options and actions should apply  to  the  ``default''
-              command  completion;  that is, completion attempted on a command
-              for which no completion has previously  been  defined.   The  -\b-E\bE
-              option  indicates  that the remaining options and actions should
-              apply to  ``empty''  command  completion;  that  is,  completion
-              attempted on a blank line.
+              ification  for each _\bn_\ba_\bm_\be, or, if no _\bn_\ba_\bm_\bes are supplied, all com-
+              pletion specifications.  The -\b-D\bD option indicates that other sup-
+              plied  options  and actions should apply to the ``default'' com-
+              mand completion; that is, completion attempted on a command  for
+              which  no completion has previously been defined.  The -\b-E\bE option
+              indicates that other supplied options and actions  should  apply
+              to  ``empty''  command completion; that is, completion attempted
+              on a blank line.  The -\b-I\bI option indicates  that  other  supplied
+              options  and  actions  should  apply to completion on the inital
+              non-assignment word on the line, or after  a  command  delimiter
+              such  as  ;\b;  or |\b|, which is usually command name completion.  If
+              multiple options are supplied, the -\b-D\bD  option  takes  precedence
+              over -\b-E\bE, and both take precedence over -\b-I\bI.  If any of -\b-D\bD, -\b-E\bE, or
+              -\b-I\bI are supplied, any other _\bn_\ba_\bm_\be  arguments  are  ignored;  these
+              completions only apply to the case specified by the option.
 
               The  process  of  applying  these completion specifications when
               word completion is attempted is described above  under  P\bPr\bro\bog\bgr\bra\bam\bm-\b-
@@ -4361,9 +4536,11 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt
                       The  _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt  is  split using the characters in the I\bIF\bFS\bS
                       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  com-
-                      pleted.
+                      is  expanded.  Shell quoting is honored within _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt,
+                      in order to provide a mechanism for the words to contain
+                      shell  metacharacters or characters in the value of I\bIF\bFS\bS.
+                      The possible completions are the members of  the  resul-
+                      tant list which match the word being completed.
               -\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt
                       _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt  is  a pattern as used for pathname expansion.
                       It is applied to the list of possible completions gener-
@@ -4378,18 +4555,22 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               for a _\bn_\ba_\bm_\be for which no specification exists, or an error occurs
               adding a completion specification.
 
-       c\bco\bom\bmp\bpo\bop\bpt\bt [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bE] [+\b+o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be]
+       c\bco\bom\bmp\bpo\bop\bpt\bt [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bEI\bI] [+\b+o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be]
               Modify  completion  options  for  each  _\bn_\ba_\bm_\be  according  to  the
               _\bo_\bp_\bt_\bi_\bo_\bns,  or  for the currently-executing completion if no _\bn_\ba_\bm_\bes
               are supplied.  If no _\bo_\bp_\bt_\bi_\bo_\bns are given, display  the  completion
               options  for  each _\bn_\ba_\bm_\be or the current completion.  The possible
               values of _\bo_\bp_\bt_\bi_\bo_\bn  are  those  valid  for  the  c\bco\bom\bmp\bpl\ble\bet\bte\be  builtin
-              described  above.   The  -\b-D\b option indicates that the remaining
+              described  above.   The  -\b-D\boption indicates that other supplied
               options should apply to the ``default'' command completion; that
               is,  completion  attempted  on a command for which no completion
-              has previously been defined.  The -\b-E\bE option indicates  that  the
-              remaining  options should apply to ``empty'' command completion;
-              that is, completion attempted on a blank line.
+              has previously been defined.  The -\b-E\bE option indicates that other
+              supplied  options  should apply to ``empty'' command completion;
+              that is, completion attempted on a blank line.   The  -\b-I\bI  option
+              indicates that other supplied options should apply to completion
+              on the inital non-assignment word on the line, or after  a  com-
+              mand  delimiter  such  as  ;\b; or |\b|, which is usually command name
+              completion.
 
               The return value is true unless an invalid option  is  supplied,
               an attempt is made to modify the options for a _\bn_\ba_\bm_\be for which no
@@ -4455,16 +4636,16 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      environment.
 
               Using `+' instead of `-' turns off the attribute  instead,  with
-              the exceptions that +\b+a\ba may not be used to destroy an array vari-
-              able and +\b+r\br will not remove the readonly attribute.   When  used
-              in a function, d\bde\bec\bcl\bla\bar\bre\be and t\bty\byp\bpe\bes\bse\bet\bt make each _\bn_\ba_\bm_\be local, as with
-              the l\blo\boc\bca\bal\bl command, unless the -\b-g\bg option is supplied.  If a vari-
-              able  name  is  followed by =_\bv_\ba_\bl_\bu_\be, the value of the variable is
-              set to _\bv_\ba_\bl_\bu_\be.  When using -\b-a\ba or -\b-A\bA and the  compound  assignment
-              syntax  to  create array variables, additional attributes do not
-              take effect until subsequent assignments.  The return value is 0
-              unless  an  invalid option is encountered, an attempt is made to
-              define a function using ``-f foo=bar'', an attempt  is  made  to
+              the  exceptions  that +\b+a\ba and +\b+A\bA may not be used to destroy array
+              variables and +\b+r\br will not remove the readonly  attribute.   When
+              used in a function, d\bde\bec\bcl\bla\bar\bre\be and t\bty\byp\bpe\bes\bse\bet\bt make each _\bn_\ba_\bm_\be local, as
+              with the l\blo\boc\bca\bal\bl command, unless the -\b-g\bg option is supplied.  If  a
+              variable  name  is followed by =_\bv_\ba_\bl_\bu_\be, the value of the variable
+              is set to _\bv_\ba_\bl_\bu_\be.  When using -\b-a\ba or -\b-A\bA and the  compound  assign-
+              ment  syntax to create array variables, additional attributes do
+              not take effect until subsequent assignments.  The return  value
+              is 0 unless an invalid option is encountered, an attempt is made
+              to define a function using ``-f foo=bar'', an attempt is made to
               assign  a  value  to  a readonly variable, an attempt is made to
               assign a value to an array variable without using  the  compound
               assignment  syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not a
@@ -4579,141 +4760,142 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               not be executed for some reason, a non-interactive shell  exits,
               unless  the  e\bex\bxe\bec\bcf\bfa\bai\bil\bl shell option is enabled.  In that case, it
               returns failure.  An interactive shell returns  failure  if  the
-              file cannot be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any redi-
-              rections take effect in the current shell, and the return status
-              is 0.  If there is a redirection error, the return status is 1.
+              file  cannot  be  executed.  A subshell exits unconditionally if
+              e\bex\bxe\bec\bc fails.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd 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.
 
        e\bex\bxi\bit\bt [_\bn]
-              Cause  the  shell  to exit with a status of _\bn.  If _\bn is omitted,
+              Cause the shell to exit with a status of _\bn.  If  _\bn  is  omitted,
               the exit status is that of the last command executed.  A trap on
               E\bEX\bXI\bIT\bT is executed before the shell terminates.
 
        e\bex\bxp\bpo\bor\brt\bt [-\b-f\bfn\bn] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd]] ...
        e\bex\bxp\bpo\bor\brt\bt -\b-p\bp
-              The  supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the envi-
-              ronment of subsequently executed commands.  If the -\b-f\bf option  is
-              given,  the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given, or
-              if the -\b-p\bp option is supplied, a list of names  of  all  exported
-              variables  is printed.  The -\b-n\bn option causes the export property
+              The supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the  envi-
+              ronment  of subsequently executed commands.  If the -\b-f\bf option is
+              given, the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given,  or
+              if  the  -\b-p\bp  option is supplied, a list of names of all exported
+              variables is printed.  The -\b-n\bn option causes the export  property
               to be removed from each _\bn_\ba_\bm_\be.  If a variable name is followed by
               =_\bw_\bo_\br_\bd, the value of the variable is set to _\bw_\bo_\br_\bd.  e\bex\bxp\bpo\bor\brt\bt returns
               an exit status of 0 unless an invalid option is encountered, one
-              of  the  _\bn_\ba_\bm_\be_\bs is not a valid shell variable name, or -\b-f\bf is sup-
+              of the _\bn_\ba_\bm_\be_\bs is not a valid shell variable name, or -\b-f\bf  is  sup-
               plied with a _\bn_\ba_\bm_\be that is not a function.
 
        f\bfc\bc [-\b-e\be _\be_\bn_\ba_\bm_\be] [-\b-l\bln\bnr\br] [_\bf_\bi_\br_\bs_\bt] [_\bl_\ba_\bs_\bt]
        f\bfc\bc -\b-s\bs [_\bp_\ba_\bt=_\br_\be_\bp] [_\bc_\bm_\bd]
-              The first form selects a range of commands from  _\bf_\bi_\br_\bs_\bt  to  _\bl_\ba_\bs_\bt
-              from  the  history  list  and  displays or edits and re-executes
-              them.  _\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  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 other-
-              wise.  If _\bf_\bi_\br_\bs_\bt is not specified it is set to the previous  com-
+              The  first  form  selects a range of commands from _\bf_\bi_\br_\bs_\bt to _\bl_\ba_\bs_\bt
+              from the history list and  displays  or  edits  and  re-executes
+              them.   _\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 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_\b other-
+              wise.  If _\bf_\bi_\br_\bs_\bt is not specified, it is set to the previous com-
               mand for editing and -16 for listing.
 
-              The  -\b-n\bn option suppresses the command numbers when listing.  The
-              -\b-r\boption reverses the order of the commands.  If the -\b-l\b option
-              is  given,  the  commands are listed on standard output.  Other-
-              wise, the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file  containing
-              those  commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the F\bFC\bCE\bED\bDI\bIT\bT
-              variable is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not  set.
-              If  neither  variable  is set, _\bv_\bi is used.  When editing is com-
+              The -\b-n\bn option suppresses the command numbers when listing.   The
+              -\b-r\b option reverses the order of the commands.  If the -\b-l\bl option
+              is given, the commands are listed on  standard  output.   Other-
+              wise,  the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file containing
+              those commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the  F\bFC\bCE\bED\bDI\bIT\bT
+              variable  is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not set.
+              If neither variable is set, _\bv_\bi is used.  When  editing  is  com-
               plete, the edited commands are echoed and executed.
 
-              In the second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after  each  instance
-              of  _\bp_\ba_\bt  is  replaced by _\br_\be_\bp.  _\bC_\bo_\bm_\bm_\ba_\bn_\bd is intepreted the same as
-              _\bf_\bi_\br_\bs_\babove.  A useful alias to use with this is ``r="fc  -s"'',
-              so  that  typing  ``r  cc'' runs the last command beginning with
+              In  the  second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after each instance
+              of _\bp_\ba_\bt is replaced by _\br_\be_\bp.  _\bC_\bo_\bm_\bm_\ba_\bn_\bd is interpreted the  same  as
+              _\bf_\bi_\br_\bs_\b above.  A useful alias to use with this is ``r="fc -s"'',
+              so that typing ``r cc'' runs the  last  command  beginning  with
               ``cc'' and typing ``r'' re-executes the last command.
 
-              If the first form is used, the  return  value  is  0  unless  an
-              invalid  option  is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt specify history
-              lines out of range.  If the -\b-e\be option is  supplied,  the  return
+              If  the  first  form  is  used,  the return value is 0 unless an
+              invalid option is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt  specify  history
+              lines  out  of  range.  If the -\b-e\be 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-exe-
-              cuted, unless _\bc_\bm_\bd does not specify  a  valid  history  line,  in
+              form is used, the return status is that of the  command  re-exe-
+              cuted,  unless  _\bc_\bm_\bd  does  not  specify a valid history line, in
               which case f\bfc\bc returns failure.
 
        f\bfg\bg [_\bj_\bo_\bb_\bs_\bp_\be_\bc]
-              Resume  _\bj_\bo_\bb_\bs_\bp_\be_\bc  in the foreground, and make it the current job.
+              Resume _\bj_\bo_\bb_\bs_\bp_\be_\bc in the foreground, and make it the  current  job.
               If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, the shell's notion of the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb
-              is  used.   The  return value is that of the command placed into
-              the foreground, or failure if run when job control  is  disabled
+              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 _\bj_\bo_\bb_\bs_\bp_\be_\bc does not spec-
-              ify a valid job or _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies  a  job  that  was  started
+              ify  a  valid  job  or  _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies a job that was started
               without job control.
 
        g\bge\bet\bto\bop\bpt\bts\bs _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg _\bn_\ba_\bm_\be [_\ba_\br_\bg_\bs]
-              g\bge\bet\bto\bop\bpt\bts\b is used by shell procedures to parse positional parame-
-              ters.  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg contains the option  characters  to  be  recog-
-              nized;  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,  g\bge\bet\bto\bop\bpt\bts\bs
-              places  the next option in the shell variable _\bn_\ba_\bm_\be, initializing
+              g\bge\bet\bto\bop\bpt\bts\bis used by shell procedures to parse positional  parame-
+              ters.   _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  contains  the  option characters to be recog-
+              nized; 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, g\bge\bet\bto\bop\bpt\bts\bs
+              places the next option in the shell variable _\bn_\ba_\bm_\be,  initializing
               _\bn_\ba_\bm_\be if it does not exist, and the index of the next argument to
               be processed into the variable O\bOP\bPT\bTI\bIN\bND\bD.  O\bOP\bPT\bTI\bIN\bND\bD is initialized to
-              1 each time the shell or a shell script  is  invoked.   When  an
-              option  requires  an argument, g\bge\bet\bto\bop\bpt\bts\bs places that argument into
-              the variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\b automati-
-              cally;  it  must  be  manually  reset  between multiple calls to
+              1  each  time  the  shell or a shell script is invoked.  When an
+              option requires an argument, g\bge\bet\bto\bop\bpt\bts\bs places that  argument  into
+              the  variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\bD automati-
+              cally; it must be  manually  reset  between  multiple  calls  to
               g\bge\bet\bto\bop\bpt\bts\bs within the same shell invocation if a new set of parame-
               ters is to be used.
 
-              When  the  end  of  options is encountered, g\bge\bet\bto\bop\bpt\bts\bs exits with a
-              return value greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the  index  of
+              When the end of options is encountered,  g\bge\bet\bto\bop\bpt\bts\bs  exits  with  a
+              return  value  greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the index of
               the first non-option argument, and _\bn_\ba_\bm_\be is set to ?.
 
-              g\bge\bet\bto\bop\bpt\bts\b normally  parses the positional parameters, but if more
+              g\bge\bet\bto\bop\bpt\bts\bnormally parses the positional parameters, but  if  more
               arguments are given in _\ba_\br_\bg_\bs, g\bge\bet\bto\bop\bpt\bts\bs parses those instead.
 
-              g\bge\bet\bto\bop\bpt\bts\bcan report errors in two ways.  If the  first  character
-              of  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  is  a  colon, _\bs_\bi_\bl_\be_\bn_\bt error reporting is used.  In
-              normal operation, diagnostic messages are printed  when  invalid
-              options  or  missing  option  arguments are encountered.  If the
-              variable O\bOP\bPT\bTE\bER\bRR\bR is set to 0, no  error  messages  will  be  dis-
+              g\bge\bet\bto\bop\bpt\bts\b can  report errors in two ways.  If the first character
+              of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is a colon, _\bs_\bi_\bl_\be_\bn_\bt error  reporting  is  used.   In
+              normal  operation,  diagnostic messages are printed when invalid
+              options or missing option arguments  are  encountered.   If  the
+              variable  O\bOP\bPT\bTE\bER\bRR\bR  is  set  to  0, no error messages will be dis-
               played, even if the first character of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is not a colon.
 
               If an invalid option is seen, g\bge\bet\bto\bop\bpt\bts\bs places ? into _\bn_\ba_\bm_\be and, if
-              not silent, prints an  error  message  and  unsets  O\bOP\bPT\bTA\bAR\bRG\bG.   If
-              g\bge\bet\bto\bop\bpt\bts\b is  silent,  the  option  character  found is placed in
+              not  silent,  prints  an  error  message  and unsets O\bOP\bPT\bTA\bAR\bRG\bG.  If
+              g\bge\bet\bto\bop\bpt\bts\bis silent, the  option  character  found  is  placed  in
               O\bOP\bPT\bTA\bAR\bRG\bG and no diagnostic message is printed.
 
-              If a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not  silent,
-              a  question  mark  (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is unset, and a
-              diagnostic message is printed.  If g\bge\bet\bto\bop\bpt\bts\bs  is  silent,  then  a
-              colon  (:\b:)  is  placed  in  _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG is set to the option
+              If  a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not silent,
+              a question mark (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is  unset,  and  a
+              diagnostic  message  is  printed.   If g\bge\bet\bto\bop\bpt\bts\bs is silent, then a
+              colon (:\b:) is placed in _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG  is  set  to  the  option
               character found.
 
-              g\bge\bet\bto\bop\bpt\bts\breturns true if an option, specified or unspecified,  is
+              g\bge\bet\bto\bop\bpt\bts\b returns true if an option, specified or unspecified, is
               found.  It returns false if the end of options is encountered or
               an error occurs.
 
        h\bha\bas\bsh\bh [-\b-l\blr\br] [-\b-p\bp _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [-\b-d\bdt\bt] [_\bn_\ba_\bm_\be]
               Each time h\bha\bas\bsh\bh is invoked, the full pathname of the command _\bn_\ba_\bm_\be
-              is  determined  by searching the directories in $\b$P\bPA\bAT\bTH\bH and remem-
+              is determined by searching the directories in $\b$P\bPA\bAT\bTH\bH  and  remem-
               bered.  Any previously-remembered pathname is discarded.  If the
               -\b-p\bp option is supplied, no path search is performed, and _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
-              is used as the full filename of  the  command.   The  -\b-r\b option
-              causes  the  shell  to  forget all remembered locations.  The -\b-d\bd
-              option causes the shell to forget  the  remembered  location  of
-              each  _\bn_\ba_\bm_\be.   If the -\b-t\bt option is supplied, the full pathname to
-              which each _\bn_\ba_\bm_\be corresponds is printed.  If multiple _\bn_\ba_\bm_\b argu-
-              ments  are  supplied  with  -\b-t\bt,  the  _\bn_\ba_\bm_\be is printed before the
-              hashed full pathname.  The -\b-l\bl option causes output  to  be  dis-
+              is  used  as  the  full  filename of the command.  The -\b-r\br option
+              causes the shell to forget all  remembered  locations.   The  -\b-d\bd
+              option  causes  the  shell  to forget the remembered location of
+              each _\bn_\ba_\bm_\be.  If the -\b-t\bt option is supplied, the full  pathname  to
+              which  each _\bn_\ba_\bm_\be corresponds is printed.  If multiple _\bn_\ba_\bm_\be argu-
+              ments are supplied with -\b-t\bt,  the  _\bn_\ba_\bm_\be  is  printed  before  the
+              hashed  full  pathname.   The -\b-l\bl option causes output to be dis-
               played in a format that may be reused as input.  If no arguments
-              are given, or if only -\b-l\bl is supplied, information  about  remem-
-              bered  commands  is printed.  The return status is true unless a
+              are  given,  or if only -\b-l\bl is supplied, information about remem-
+              bered commands is printed.  The return status is true  unless  a
               _\bn_\ba_\bm_\be is not found or an invalid option is supplied.
 
        h\bhe\bel\blp\bp [-\b-d\bdm\bms\bs] [_\bp_\ba_\bt_\bt_\be_\br_\bn]
-              Display helpful information about builtin commands.  If  _\bp_\ba_\bt_\bt_\be_\br_\bn
-              is  specified, h\bhe\bel\blp\bp gives detailed help on all commands matching
-              _\bp_\ba_\bt_\bt_\be_\br_\bn; otherwise help for all the builtins and  shell  control
+              Display  helpful information about builtin commands.  If _\bp_\ba_\bt_\bt_\be_\br_\bn
+              is specified, h\bhe\bel\blp\bp gives detailed help on all commands  matching
+              _\bp_\ba_\bt_\bt_\be_\br_\bn;  otherwise  help for all the builtins and shell control
               structures is printed.
               -\b-d\bd     Display a short description of each _\bp_\ba_\bt_\bt_\be_\br_\bn
               -\b-m\bm     Display the description of each _\bp_\ba_\bt_\bt_\be_\br_\bn in a manpage-like
@@ -4725,50 +4907,59 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        h\bhi\bis\bst\bto\bor\bry\by [\b[_\bn]\b]
        h\bhi\bis\bst\bto\bor\bry\by -\b-c\bc
        h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
+       h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd _\bs_\bt_\ba_\br_\bt-_\be_\bn_\bd
        h\bhi\bis\bst\bto\bor\bry\by -\b-a\ban\bnr\brw\bw [_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
        h\bhi\bis\bst\bto\bor\bry\by -\b-p\bp _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
        h\bhi\bis\bst\bto\bor\bry\by -\b-s\bs _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
               With no options, display the command history list with line num-
               bers.  Lines listed with a *\b* have been modified.  An argument of
-              _\blists only the last _\bn lines.  If the shell variable  H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
-              F\bFO\bOR\bRM\bMA\bAT\b is  set  and not null, it is used as a format string for
-              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3) to display the time stamp associated with each  dis-
-              played  history  entry.  No intervening blank is printed between
-              the formatted time stamp and the history line.  If  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\b is
-              supplied,  it  is  used as the name of the history file; if not,
-              the value of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied,  have  the
+              _\b lists only the last _\bn lines.  If the shell variable H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
+              F\bFO\bOR\bRM\bMA\bAT\bis set and not null, it is used as a  format  string  for
+              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3)  to display the time stamp associated with each dis-
+              played history entry.  No intervening blank is  printed  between
+              the  formatted  time stamp and the history line.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is
+              supplied, it is used as the name of the history  file;  if  not,
+              the  value  of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied, have the
               following meanings:
               -\b-c\bc     Clear the history list by deleting all the entries.
               -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
-                     Delete the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.
-              -\b-a\ba     Append  the  ``new''  history  lines to the history file.
-                     These are history lines entered since  the  beginning  of
+                     Delete the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.   If  _\bo_\bf_\bf_\bs_\be_\bt
+                     is negative, it is interpreted as relative to one greater
+                     than the last history position, so negative indices count
+                     back  from  the  end  of  the history, and an index of -1
+                     refers to the current h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd command.
+              -\b-d\bd _\bs_\bt_\ba_\br_\bt-_\be_\bn_\bd
+                     Delete the history entries between  positions  _\bs_\bt_\ba_\br_\bt  and
+                     _\be_\bn_\bd,  inclusive.   Positive and negative values for _\bs_\bt_\ba_\br_\bt
+                     and _\be_\bn_\bd are interpreted as described above.
+              -\b-a\ba     Append the ``new'' history lines  to  the  history  file.
+                     These  are  history  lines entered since the beginning of
                      the current b\bba\bas\bsh\bh session, but not already appended to the
                      history file.
-              -\b-n\bn     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
+              -\b-n\bn     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 b\bba\bas\bsh\bh session.
-              -\b-r\br     Read  the contents of the history file and append them to
+              -\b-r\br     Read the contents of the history file and append them  to
                      the current history list.
               -\b-w\bw     Write the current history list to the history file, over-
                      writing the history file's contents.
-              -\b-p\bp     Perform  history  substitution  on the following _\ba_\br_\bg_\bs and
-                     display the result on  the  standard  output.   Does  not
-                     store  the results in the history list.  Each _\ba_\br_\bg must be
+              -\b-p\bp     Perform history substitution on the  following  _\ba_\br_\bg_\b and
+                     display  the  result  on  the  standard output.  Does not
+                     store the results in the history list.  Each _\ba_\br_\bg must  be
                      quoted to disable normal history expansion.
-              -\b-s\bs     Store the _\ba_\br_\bg_\bs in the history list  as  a  single  entry.
-                     The  last  command  in the history list is removed before
+              -\b-s\bs     Store  the  _\ba_\br_\bg_\bs  in  the history list as a single entry.
+                     The last command in the history list  is  removed  before
                      the _\ba_\br_\bg_\bs are added.
 
-              If the H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable is set, the time  stamp  informa-
-              tion  associated  with each history entry is written to the his-
-              tory file, marked with the history comment character.  When  the
-              history  file  is read, lines beginning with the history comment
-              character followed immediately by a  digit  are  interpreted  as
+              If  the  H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT variable is set, the time stamp informa-
+              tion associated with each history entry is written to  the  his-
+              tory  file, marked with the history comment character.  When the
+              history file is read, lines beginning with the  history  comment
+              character  followed  immediately  by  a digit are interpreted as
               timestamps for the following history entry.  The return value is
               0 unless an invalid option is encountered, an error occurs while
-              reading  or  writing the history file, an invalid _\bo_\bf_\bf_\bs_\be_\bt is sup-
+              reading or writing the history file, an invalid _\bo_\bf_\bf_\bs_\be_\bt  is  sup-
               plied as an argument to -\b-d\bd, or the history expansion supplied as
               an argument to -\b-p\bp fails.
 
@@ -4777,208 +4968,210 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               The first form lists the active jobs.  The options have the fol-
               lowing meanings:
               -\b-l\bl     List process IDs in addition to the normal information.
-              -\b-n\bn     Display information only about  jobs  that  have  changed
+              -\b-n\bn     Display  information  only  about  jobs that have changed
                      status since the user was last notified of their status.
-              -\b-p\bp     List  only  the  process  ID  of  the job's process group
+              -\b-p\bp     List only the process  ID  of  the  job's  process  group
                      leader.
               -\b-r\br     Display only running jobs.
               -\b-s\bs     Display only stopped jobs.
 
-              If _\bj_\bo_\bb_\bs_\bp_\be_\bc is given, output is restricted to  information  about
-              that  job.   The  return status is 0 unless an invalid option is
+              If  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is given, output is restricted to information about
+              that job.  The return status is 0 unless an  invalid  option  is
               encountered or an invalid _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied.
 
               If the -\b-x\bx option is supplied, j\bjo\bob\bbs\bs replaces any _\bj_\bo_\bb_\bs_\bp_\be_\bc found in
-              _\bc_\bo_\bm_\bm_\ba_\bn_\b or  _\ba_\br_\bg_\bs  with  the corresponding process group ID, and
+              _\bc_\bo_\bm_\bm_\ba_\bn_\bor _\ba_\br_\bg_\bs with the corresponding  process  group  ID,  and
               executes _\bc_\bo_\bm_\bm_\ba_\bn_\bd passing it _\ba_\br_\bg_\bs, returning its exit status.
 
        k\bki\bil\bll\bl [-\b-s\bs _\bs_\bi_\bg_\bs_\bp_\be_\bc | -\b-n\bn _\bs_\bi_\bg_\bn_\bu_\bm | -\b-_\bs_\bi_\bg_\bs_\bp_\be_\bc] [_\bp_\bi_\bd | _\bj_\bo_\bb_\bs_\bp_\be_\bc] ...
        k\bki\bil\bll\bl -\b-l\bl|-\b-L\bL [_\bs_\bi_\bg_\bs_\bp_\be_\bc | _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs]
-              Send the signal named by _\bs_\bi_\bg_\bs_\bp_\be_\bc  or  _\bs_\bi_\bg_\bn_\bu_\bm  to  the  processes
-              named  by  _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either a case-insensitive
-              signal name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix)  or
-              a  signal  number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc is not
-              present, then S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl  lists  the
-              signal  names.   If any arguments are supplied when -\b-l\bl is given,
-              the names of the signals  corresponding  to  the  arguments  are
+              Send  the  signal  named  by  _\bs_\bi_\bg_\bs_\bp_\be_\bc or _\bs_\bi_\bg_\bn_\bu_\bm to the processes
+              named by _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either  a  case-insensitive
+              signal  name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix) or
+              a signal number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  not
+              present,  then  S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl lists the
+              signal names.  If any arguments are supplied when -\b-l\bl  is  given,
+              the  names  of  the  signals  corresponding to the arguments are
               listed, and the return status is 0.  The _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs argument to
-              -\b-l\bis a number specifying either a signal  number  or  the  exit
-              status  of  a  process terminated by a signal.  The -\b-L\bL option is
-              equivalent to -\b-l\bl.  k\bki\bil\bll\bl returns true if at least one signal  was
-              successfully  sent,  or  false  if an error occurs or an invalid
+              -\b-l\b is  a  number  specifying either a signal number or the exit
+              status of a process terminated by a signal.  The  -\b-L\bL  option  is
+              equivalent  to -\b-l\bl.  k\bki\bil\bll\bl returns true if at least one signal was
+              successfully sent, or false if an error  occurs  or  an  invalid
               option is encountered.
 
        l\ble\bet\bt _\ba_\br_\bg [_\ba_\br_\bg ...]
               Each _\ba_\br_\bg is an arithmetic expression to be evaluated (see A\bAR\bRI\bIT\bTH\bH-\b-
-              M\bME\bET\bTI\bIC\b E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN  above).   If the last _\ba_\br_\bg evaluates to 0, l\ble\bet\bt
+              M\bME\bET\bTI\bIC\bE\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN above).  If the last _\ba_\br_\bg evaluates  to  0,  l\ble\bet\bt
               returns 1; 0 is returned otherwise.
 
        l\blo\boc\bca\bal\bl [_\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ... | - ]
-              For each argument, a local variable named _\bn_\ba_\bm_\be is  created,  and
-              assigned  _\bv_\ba_\bl_\bu_\be.   The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the options accepted
+              For  each  argument, a local variable named _\bn_\ba_\bm_\be is created, and
+              assigned _\bv_\ba_\bl_\bu_\be.  The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the  options  accepted
               by d\bde\bec\bcl\bla\bar\bre\be.  When l\blo\boc\bca\bal\bl is used within a function, it causes the
-              variable  _\bn_\ba_\bm_\be  to have a visible scope restricted to that func-
-              tion and its children.  If _\bn_\ba_\bm_\be is -, the set of  shell  options
-              is  made  local to the function in which l\blo\boc\bca\bal\bl is invoked: shell
-              options changed using the s\bse\bet\bt builtin inside  the  function  are
-              restored  to  their  original  values when the function returns.
-              With no operands, l\blo\boc\bca\bal\bl writes a list of local variables to  the
-              standard  output.  It is an error to use l\blo\boc\bca\bal\bl when not within a
+              variable _\bn_\ba_\bm_\be to have a visible scope restricted to  that  func-
+              tion  and  its children.  If _\bn_\ba_\bm_\be is -, the set of shell options
+              is made local to the function in which l\blo\boc\bca\bal\bl is  invoked:  shell
+              options  changed  using  the s\bse\bet\bt builtin inside the function are
+              restored to their original values  when  the  function  returns.
+              With  no operands, l\blo\boc\bca\bal\bl writes a list of local variables to the
+              standard output.  It is an error to use l\blo\boc\bca\bal\bl when not within  a
               function.  The return status is 0 unless l\blo\boc\bca\bal\bl is used outside a
-              function,  an  invalid  _\bn_\ba_\bm_\be  is supplied, or _\bn_\ba_\bm_\be is a readonly
+              function, an invalid _\bn_\ba_\bm_\be is supplied, or  _\bn_\ba_\bm_\be  is  a  readonly
               variable.
 
        l\blo\bog\bgo\bou\but\bt Exit a login shell.
 
-       m\bma\bap\bpf\bfi\bil\ble\b[-\b-d\bd _\bd_\be_\bl_\bi_\bm] [-\b-n\bn _\bc_\bo_\bu_\bn_\bt] [-\b-O\bO _\bo_\br_\bi_\bg_\bi_\bn] [-\b-s\bs _\bc_\bo_\bu_\bn_\bt] [-\b-t\bt] [-\b-u\bu  _\bf_\bd]  [-\b-C\bC
+       m\bma\bap\bpf\bfi\bil\ble\b [-\b-d\bd  _\bd_\be_\bl_\bi_\bm] [-\b-n\bn _\bc_\bo_\bu_\bn_\bt] [-\b-O\bO _\bo_\br_\bi_\bg_\bi_\bn] [-\b-s\bs _\bc_\bo_\bu_\bn_\bt] [-\b-t\bt] [-\b-u\bu _\bf_\bd] [-\b-C\bC
        _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk] [-\b-c\bc _\bq_\bu_\ba_\bn_\bt_\bu_\bm] [_\ba_\br_\br_\ba_\by]
        r\bre\bea\bad\bda\bar\brr\bra\bay\by [-\b-d\bd _\bd_\be_\bl_\bi_\bm] [-\b-n\bn _\bc_\bo_\bu_\bn_\bt] [-\b-O\bO _\bo_\br_\bi_\bg_\bi_\bn] [-\b-s\bs _\bc_\bo_\bu_\bn_\bt] [-\b-t\bt] [-\b-u\bu _\bf_\bd] [-\b-C\bC
        _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk] [-\b-c\bc _\bq_\bu_\ba_\bn_\bt_\bu_\bm] [_\ba_\br_\br_\ba_\by]
-              Read lines from the standard input into the indexed array  vari-
-              able  _\ba_\br_\br_\ba_\by, or from file descriptor _\bf_\bd if the -\b-u\bu option is sup-
-              plied.  The variable M\bMA\bAP\bPF\bFI\bIL\bLE\bE is the default _\ba_\br_\br_\ba_\by.  Options,  if
+              Read  lines from the standard input into the indexed array vari-
+              able _\ba_\br_\br_\ba_\by, or from file descriptor _\bf_\bd if the -\b-u\bu option is  sup-
+              plied.   The variable M\bMA\bAP\bPF\bFI\bIL\bLE\bE is the default _\ba_\br_\br_\ba_\by.  Options, if
               supplied, have the following meanings:
-              -\b-d\bd     The  first  character  of _\bd_\be_\bl_\bi_\bm is used to terminate each
-                     input line, rather than newline.
-              -\b-n\bn     Copy at most _\bc_\bo_\bu_\bn_\bt lines.  If _\bc_\bo_\bu_\bn_\bt is 0, all  lines  are
+              -\b-d\bd     The first character of _\bd_\be_\bl_\bi_\bm is used  to  terminate  each
+                     input  line,  rather than newline.  If _\bd_\be_\bl_\bi_\bm is the empty
+                     string, m\bma\bap\bpf\bfi\bil\ble\be will terminate a line when it reads a NUL
+                     character.
+              -\b-n\bn     Copy  at  most _\bc_\bo_\bu_\bn_\bt lines.  If _\bc_\bo_\bu_\bn_\bt is 0, all lines are
                      copied.
-              -\b-O\bO     Begin  assigning  to  _\ba_\br_\br_\ba_\by at index _\bo_\br_\bi_\bg_\bi_\bn.  The default
+              -\b-O\bO     Begin assigning to _\ba_\br_\br_\ba_\by at index  _\bo_\br_\bi_\bg_\bi_\bn.   The  default
                      index is 0.
               -\b-s\bs     Discard the first _\bc_\bo_\bu_\bn_\bt lines read.
-              -\b-t\bt     Remove a trailing _\bd_\be_\bl_\bi_\bm (default newline) from each  line
+              -\b-t\bt     Remove  a trailing _\bd_\be_\bl_\bi_\bm (default newline) from each line
                      read.
-              -\b-u\bu     Read  lines  from file descriptor _\bf_\bd instead of the stan-
+              -\b-u\bu     Read lines from file descriptor _\bf_\bd instead of  the  stan-
                      dard input.
-              -\b-C\bC     Evaluate _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk each time _\bq_\bu_\ba_\bn_\bt_\bu_\bm lines are read.   The
+              -\b-C\bC     Evaluate  _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk each time _\bq_\bu_\ba_\bn_\bt_\bu_\bm lines are read.  The
                      -\b-c\bc option specifies _\bq_\bu_\ba_\bn_\bt_\bu_\bm.
-              -\b-c\bc     Specify  the  number  of  lines read between each call to
+              -\b-c\bc     Specify the number of lines read  between  each  call  to
                      _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk.
 
-              If -\b-C\bC is specified without -\b-c\bc,  the  default  quantum  is  5000.
+              If  -\b-C\bC  is  specified  without  -\b-c\bc, the default quantum is 5000.
               When _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk is evaluated, it is supplied the index of the next
               array element to be assigned and the line to be assigned to that
-              element  as  additional  arguments.  _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk is evaluated after
+              element as additional arguments.  _\bc_\ba_\bl_\bl_\bb_\ba_\bc_\bk  is  evaluated  after
               the line is read but before the array element is assigned.
 
-              If not supplied with an  explicit  origin,  m\bma\bap\bpf\bfi\bil\ble\be  will  clear
+              If  not  supplied  with  an  explicit origin, m\bma\bap\bpf\bfi\bil\ble\be will clear
               _\ba_\br_\br_\ba_\by before assigning to it.
 
-              m\bma\bap\bpf\bfi\bil\ble\b returns successfully unless an invalid option or option
-              argument is supplied, _\ba_\br_\br_\ba_\by is invalid or  unassignable,  or  if
+              m\bma\bap\bpf\bfi\bil\ble\breturns successfully unless an invalid option or  option
+              argument  is  supplied,  _\ba_\br_\br_\ba_\by is invalid or unassignable, or if
               _\ba_\br_\br_\ba_\by is not an indexed array.
 
        p\bpo\bop\bpd\bd [-n\bn] [+_\bn] [-_\bn]
-              Removes  entries  from  the directory stack.  With no arguments,
-              removes the top directory from the stack, and performs a  c\bcd\b to
+              Removes entries from the directory stack.   With  no  arguments,
+              removes  the  top directory from the stack, and performs a c\bcd\bd to
               the new top directory.  Arguments, if supplied, have the follow-
               ing meanings:
-              -\b-n\bn     Suppresses the normal change of directory  when  removing
-                     directories  from  the  stack,  so that only the stack is
+              -\b-n\bn     Suppresses  the  normal change of directory when removing
+                     directories from the stack, so that  only  the  stack  is
                      manipulated.
-              +\b+_\bn     Removes the _\bnth entry counting from the left of the  list
-                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
+              +\b+_\bn     Removes  the _\bnth entry counting from the left of the list
+                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
                      +0'' removes the first directory, ``popd +1'' the second.
               -\b-_\bn     Removes the _\bnth entry counting from the right of the list
-                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
-                     -0'' removes the last directory, ``popd -1'' the next  to
+                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
+                     -0''  removes the last directory, ``popd -1'' the next to
                      last.
 
-              If  the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as well,
-              and the return status is 0.  p\bpo\bop\bpd\bd returns false  if  an  invalid
+              If the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as  well,
+              and  the  return  status is 0.  p\bpo\bop\bpd\bd returns false if an invalid
               option is encountered, the directory stack is empty, a non-exis-
               tent directory stack entry is specified, or the directory change
               fails.
 
        p\bpr\bri\bin\bnt\btf\bf [-\b-v\bv _\bv_\ba_\br] _\bf_\bo_\br_\bm_\ba_\bt [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              Write  the  formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output under the
-              control of the _\bf_\bo_\br_\bm_\ba_\bt.  The -\b-v\bv option causes the  output  to  be
-              assigned  to  the  variable _\bv_\ba_\br rather than being printed to the
+              Write the formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output  under  the
+              control  of  the  _\bf_\bo_\br_\bm_\ba_\bt.  The -\b-v\bv option causes the output to be
+              assigned to the variable _\bv_\ba_\br rather than being  printed  to  the
               standard output.
 
-              The _\bf_\bo_\br_\bm_\ba_\bt 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  _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.   In
+              The  _\bf_\bo_\br_\bm_\ba_\bt  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 _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.  In
               addition to the standard _\bp_\br_\bi_\bn_\bt_\bf(1) format specifications, p\bpr\bri\bin\bnt\btf\bf
               interprets the following extensions:
               %\b%b\bb     causes p\bpr\bri\bin\bnt\btf\bf to expand backslash escape sequences in the
                      corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt in the same way as e\bec\bch\bho\bo -\b-e\be.
-              %\b%q\bq     causes  p\bpr\bri\bin\bnt\btf\bf  to output the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt in a
+              %\b%q\bq     causes p\bpr\bri\bin\bnt\btf\bf to output the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt  in  a
                      format that can be reused as shell input.
               %\b%(\b(_\bd_\ba_\bt_\be_\bf_\bm_\bt)\b)T\bT
-                     causes p\bpr\bri\bin\bnt\btf\bf to output the  date-time  string  resulting
-                     from  using  _\bd_\ba_\bt_\be_\bf_\bm_\bt  as a format string for _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3).
+                     causes  p\bpr\bri\bin\bnt\btf\bf  to  output the date-time string resulting
+                     from using _\bd_\ba_\bt_\be_\bf_\bm_\bt as a format  string  for  _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3).
                      The corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt is an integer representing the
-                     number  of seconds since the epoch.  Two special argument
-                     values may be used: -1 represents the current  time,  and
-                     -2  represents  the  time  the  shell was invoked.  If no
-                     argument is specified, conversion behaves as  if  -1  had
-                     been  given.   This  is  an exception to the usual p\bpr\bri\bin\bnt\btf\bf
+                     number of seconds since the epoch.  Two special  argument
+                     values  may  be used: -1 represents the current time, and
+                     -2 represents the time the  shell  was  invoked.   If  no
+                     argument  is  specified,  conversion behaves as if -1 had
+                     been given.  This is an exception  to  the  usual  p\bpr\bri\bin\bnt\btf\bf
                      behavior.
 
-              Arguments to non-string format specifiers are treated as C  con-
+              Arguments  to non-string format specifiers are treated as C con-
               stants, except that a leading plus or minus sign is allowed, and
-              if the leading character is a single or double quote, the  value
+              if  the leading character is a single or double quote, the value
               is the ASCII value of the following character.
 
-              The  _\bf_\bo_\br_\bm_\ba_\bt  is  reused as necessary to consume all of the _\ba_\br_\bg_\bu_\b-
+              The _\bf_\bo_\br_\bm_\ba_\bt is reused as necessary to consume all  of  the  _\ba_\br_\bg_\bu_\b-
               _\bm_\be_\bn_\bt_\bs.  If the _\bf_\bo_\br_\bm_\ba_\bt requires more _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs than are supplied,
-              the  extra  format  specifications  behave as if a zero value or
-              null string, as appropriate,  had  been  supplied.   The  return
+              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.
 
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [+_\bn] [-_\bn]
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [_\bd_\bi_\br]
-              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,  p\bpu\bus\bsh\bhd\bd  exchanges  the top two
-              directories and returns 0, unless the directory stack is  empty.
+              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,  p\bpu\bus\bsh\bhd\bd  exchanges  the  top  two
+              directories  and returns 0, unless the directory stack is empty.
               Arguments, if supplied, have the following meanings:
-              -\b-n\bn     Suppresses  the  normal change of directory when rotating
-                     or adding directories to the  stack,  so  that  only  the
+              -\b-n\bn     Suppresses the normal change of directory  when  rotating
+                     or  adding  directories  to  the  stack, so that only the
                      stack is manipulated.
-              +\b+_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
-                     from the left of the list shown by  d\bdi\bir\brs\bs,  starting  with
+              +\b+_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
+                     from  the  left  of the list shown by d\bdi\bir\brs\bs, starting with
                      zero) is at the top.
-              -\b-_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
-                     from the right of the list shown by d\bdi\bir\brs\bs,  starting  with
+              -\b-_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
+                     from  the  right of the list shown by d\bdi\bir\brs\bs, starting with
                      zero) is at the top.
               _\bd_\bi_\br    Adds _\bd_\bi_\br to the directory stack at the top, making it the
-                     new current working directory as if it had been  supplied
+                     new  current working directory as if it had been supplied
                      as the argument to the c\bcd\bd builtin.
 
               If the p\bpu\bus\bsh\bhd\bd command is successful, a d\bdi\bir\brs\bs is performed as well.
-              If the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to  _\bd_\bi_\br
-              fails.   With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the direc-
-              tory stack is empty, a non-existent directory stack  element  is
-              specified,  or the directory change to the specified new current
+              If  the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to _\bd_\bi_\br
+              fails.  With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the  direc-
+              tory  stack  is empty, a non-existent directory stack element is
+              specified, or the directory change to the specified new  current
               directory fails.
 
        p\bpw\bwd\bd [-\b-L\bLP\bP]
-              Print the absolute pathname of the  current  working  directory.
+              Print  the  absolute  pathname of the current working directory.
               The pathname printed contains no symbolic links if the -\b-P\bP option
               is supplied or the -\b-o\bo p\bph\bhy\bys\bsi\bic\bca\bal\bl option to the s\bse\bet\bt builtin command
-              is  enabled.  If the -\b-L\bL 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
+              is enabled.  If the -\b-L\bL 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.
 
        r\bre\bea\bad\bd [-\b-e\ber\brs\bs] [-\b-a\ba _\ba_\bn_\ba_\bm_\be] [-\b-d\bd _\bd_\be_\bl_\bi_\bm] [-\b-i\bi _\bt_\be_\bx_\bt] [-\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs] [-\b-N\bN _\bn_\bc_\bh_\ba_\br_\bs] [-\b-p\bp
        _\bp_\br_\bo_\bm_\bp_\bt] [-\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-u\bu _\bf_\bd] [_\bn_\ba_\bm_\be ...]
-              One  line  is  read  from  the  standard input, or from the file
-              descriptor _\bf_\bd supplied as an argument to the  -\b-u\bu  option,  split
-              into  words  as  described  above  under W\bWo\bor\brd\bd S\bSp\bpl\bli\bit\btt\bti\bin\bng\bg, and the
+              One line is read from the  standard  input,  or  from  the  file
+              descriptor  _\bf_\bd  supplied  as an argument to the -\b-u\bu option, split
+              into words as described above  under  W\bWo\bor\brd\bd  S\bSp\bpl\bli\bit\btt\bti\bin\bng\bg,  and  the
               first word is assigned to the first _\bn_\ba_\bm_\be, the second word to the
               second _\bn_\ba_\bm_\be, and so on.  If there are more words than names, the
               remaining words and their intervening delimiters are assigned to
-              the  last  _\bn_\ba_\bm_\be.   If  there are fewer words read from the input
-              stream than names, the remaining names are assigned  empty  val-
-              ues.   The  characters  in  I\bIF\bFS\bS  are used to split the line into
+              the last _\bn_\ba_\bm_\be.  If there are fewer words  read  from  the  input
+              stream  than  names, the remaining names are assigned empty val-
+              ues.  The characters in I\bIF\bFS\bS are used  to  split  the  line  into
               words  using  the  same  rules  the  shell  uses  for  expansion
               (described above under W\bWo\bor\brd\bd S\bSp\bpl\bli\bit\btt\bti\bin\bng\bg).  The backslash character
               (\\b\) may be used to remove any special meaning for the next char-
-              acter  read  and  for  line continuation.  Options, if supplied,
+              acter read and for line  continuation.   Options,  if  supplied,
               have the following meanings:
               -\b-a\ba _\ba_\bn_\ba_\bm_\be
                      The words are assigned to sequential indices of the array
@@ -4986,12 +5179,15 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      new  values  are  assigned.   Other  _\bn_\ba_\bm_\be  arguments  are
                      ignored.
               -\b-d\bd _\bd_\be_\bl_\bi_\bm
-                     The  first  character  of  _\bd_\be_\bl_\bi_\bm is used to terminate the
-                     input line, rather than newline.
+                     The first character of _\bd_\be_\bl_\bi_\bm is  used  to  terminate  the
+                     input  line,  rather than newline.  If _\bd_\be_\bl_\bi_\bm is the empty
+                     string, r\bre\bea\bad\bd will terminate a line when it  reads  a  NUL
+                     character.
               -\b-e\be     If the standard input is coming from a terminal, r\bre\bea\bad\bdl\bli\bin\bne\be
-                     (see  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE  above) is used to obtain the line.  Read-
-                     line uses the current (or default, if  line  editing  was
-                     not previously active) editing settings.
+                     (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE above) is used to obtain the  line.   Read-
+                     line  uses  the  current (or default, if line editing was
+                     not previously active) editing settings, but  uses  Read-
+                     line's default filename completion.
               -\b-i\bi _\bt_\be_\bx_\bt
                      If  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used  to  read the line, _\bt_\be_\bx_\bt is
                      placed into the editing buffer before editing begins.
@@ -5016,8 +5212,8 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      displayed only if input is coming from a terminal.
               -\b-r\br     Backslash does not act as an escape character.  The back-
                      slash is considered to be part of the line.  In  particu-
-                     lar,  a  backslash-newline pair may not be used as a line
-                     continuation.
+                     lar,  a  backslash-newline pair may not then be used as a
+                     line continuation.
               -\b-s\bs     Silent mode.  If input is coming from a terminal, charac-
                      ters are not echoed.
               -\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt
@@ -5066,7 +5262,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               that of the last command executed  in  the  function  body.   If
               r\bre\bet\btu\bur\brn\bn  is  executed by a trap handler, the last command used to
               determine the status is the last  command  executed  before  the
-              trap  handler.   if  r\bre\bet\btu\bur\brn\bn is executed during a D\bDE\bEB\bBU\bUG\bG trap, the
+              trap  handler.   If  r\bre\bet\btu\bur\brn\bn is executed during a D\bDE\bEB\bBU\bUG\bG trap, the
               last command used to determine the status is  the  last  command
               executed  by  the  trap  handler  before r\bre\bet\btu\bur\brn\bn was invoked.  If
               r\bre\bet\btu\bur\brn\bn is used outside a function, but  during  execution  of  a
@@ -5085,7 +5281,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               Without  options,  the name and value of each shell variable are
               displayed in a format that can be reused as input for setting or
               resetting the currently-set variables.  Read-only variables can-
-              not be reset.  In _\bp_\bo_\bs_\bi_\bmode, only shell variables  are  listed.
+              not be reset.  In _\bp_\bo_\bs_\bi_\b_\bm_\bo_\bd_\be, only shell variables  are  listed.
               The  output  is  sorted  according  to the current locale.  When
               options are specified, they set or unset shell attributes.   Any
               arguments  remaining after option processing are treated as val-
@@ -5279,64 +5475,74 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-o\bo option is used, those available with the -\b-o\bo option to the s\bse\bet\bt
               builtin command.  With no options, or with the -\b-p\bp option, a list
               of  all  settable  options  is  displayed, with an indication of
-              whether or not each is set.  The -\b-p\bp option causes output  to  be
-              displayed  in a form that may be reused as input.  Other options
-              have the following meanings:
+              whether or not each is set; if _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are supplied, the output
+              is  restricted to those options.  The -\b-p\bp option causes output to
+              be displayed in a form that  may  be  reused  as  input.   Other
+              options have the following meanings:
               -\b-s\bs     Enable (set) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
               -\b-u\bu     Disable (unset) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
-              -\b-q\bq     Suppresses normal output (quiet mode); the return  status
+              -\b-q\bq     Suppresses  normal output (quiet mode); the return status
                      indicates whether the _\bo_\bp_\bt_\bn_\ba_\bm_\be is set or unset.  If multi-
-                     ple _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return  sta-
-                     tus  is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero other-
+                     ple  _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return sta-
+                     tus is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero  other-
                      wise.
-              -\b-o\bo     Restricts the values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those  defined  for
+              -\b-o\bo     Restricts  the  values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those defined for
                      the -\b-o\bo option to the s\bse\bet\bt builtin.
 
-              If  either  -\b-s\bs  or  -\b-u\bu  is used with no _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments, s\bsh\bho\bop\bpt\bt
-              shows only those options which are set or  unset,  respectively.
-              Unless  otherwise  noted, the s\bsh\bho\bop\bpt\bt options are disabled (unset)
+              If either -\b-s\bs or -\b-u\bu is used  with  no  _\bo_\bp_\bt_\bn_\ba_\bm_\be  arguments,  s\bsh\bho\bop\bpt\bt
+              shows  only  those options which are set or unset, respectively.
+              Unless otherwise noted, the s\bsh\bho\bop\bpt\bt options are  disabled  (unset)
               by default.
 
-              The return status when listing options is zero if  all  _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
-              are  enabled,  non-zero  otherwise.   When  setting or unsetting
-              options, the return status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be  is  not  a
+              The  return  status when listing options is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
+              are enabled, non-zero  otherwise.   When  setting  or  unsetting
+              options,  the  return  status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be is not a
               valid shell option.
 
               The list of s\bsh\bho\bop\bpt\bt options is:
 
-              a\bau\but\bto\boc\bcd\bd  If  set,  a command name that is the name of a directory
-                      is executed as if it were the argument to  the  c\bcd\bd  com-
+              a\bas\bss\bso\boc\bc_\b_e\bex\bxp\bpa\ban\bnd\bd_\b_o\bon\bnc\bce\be
+                      If set, the  shell  suppresses  multiple  evaluation  of
+                      associative  array  subscripts during arithmetic expres-
+                      sion evaluation, while executing builtins that can  per-
+                      form  variable assignments, and while executing builtins
+                      that perform array dereferencing.
+              a\bau\but\bto\boc\bcd\bd  If set, a command name that is the name of  a  directory
+                      is  executed  as  if it were the argument to the c\bcd\bd com-
                       mand.  This option is only used by interactive shells.
               c\bcd\bda\bab\bbl\ble\be_\b_v\bva\bar\brs\bs
-                      If  set,  an  argument to the c\bcd\bd builtin command that is
-                      not a directory is assumed to be the name of a  variable
+                      If set, an argument to the c\bcd\bd builtin  command  that  is
+                      not  a directory is assumed to be the name of a variable
                       whose value is the directory to change to.
               c\bcd\bds\bsp\bpe\bel\bll\bl If set, minor errors in the spelling of a directory com-
-                      ponent in a c\bcd\bd command will be  corrected.   The  errors
+                      ponent  in  a  c\bcd\bd command will be corrected.  The errors
                       checked for are transposed characters, a missing charac-
-                      ter, and one character too many.   If  a  correction  is
-                      found,  the  corrected filename is printed, and the com-
-                      mand proceeds.  This option is only used by  interactive
+                      ter,  and  one  character  too many.  If a correction is
+                      found, the corrected filename is printed, and  the  com-
+                      mand  proceeds.  This option is only used by interactive
                       shells.
               c\bch\bhe\bec\bck\bkh\bha\bas\bsh\bh
                       If set, b\bba\bas\bsh\bh checks that a command found in the hash ta-
-                      ble exists before trying to execute  it.   If  a  hashed
-                      command  no  longer exists, a normal path search is per-
+                      ble  exists  before  trying  to execute it.  If a hashed
+                      command no longer exists, a normal path search  is  per-
                       formed.
               c\bch\bhe\bec\bck\bkj\bjo\bob\bbs\bs
                       If set, b\bba\bas\bsh\bh lists the status of any stopped and running
-                      jobs  before  exiting an interactive shell.  If any jobs
+                      jobs before exiting an interactive shell.  If  any  jobs
                       are running, this causes the exit to be deferred until a
-                      second  exit is attempted without an intervening command
-                      (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL above).   The  shell  always  postpones
+                      second exit is attempted without an intervening  command
+                      (see  J\bJO\bOB\bB  C\bCO\bON\bNT\bTR\bRO\bOL\bL  above).   The shell always postpones
                       exiting if any jobs are stopped.
               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.
+                      If set, b\bba\bas\bsh\bh checks the window size after each  external
+                      (non-builtin)  command  and,  if  necessary, updates the
+                      values of L\bLI\bIN\bNE\bES\bS and C\bCO\bOL\bLU\bUM\bMN\bNS\bS.  This option is enabled  by
+                      default.
               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.
+                      easy  re-editing of multi-line commands.  This option is
+                      enabled by default, but only has an  effect  if  command
+                      history is enabled, as described above under H\bHI\bIS\bST\bTO\bOR\bRY\bY.
               c\bco\bom\bmp\bpa\bat\bt3\b31\b1
                       If set, b\bba\bas\bsh\bh changes its behavior to that of version 3.1
                       with respect to quoted arguments to the  [\b[[\b[  conditional
@@ -5363,7 +5569,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       rupt;  previous  versions continue with the next command
                       in the list.
               c\bco\bom\bmp\bpa\bat\bt4\b41\b1
-                      If set, b\bba\bas\bsh\bh, when in _\bp_\bo_\bs_\bi_\bmode, treats a single  quote
+                      If set, b\bba\bas\bsh\bh, when in _\bp_\bo_\bs_\bi_\b_\bm_\bo_\bd_\be, treats a single  quote
                       in  a  double-quoted  parameter  expansion  as a special
                       character.  The single quotes must match (an  even  num-
                       ber)  and  the  characters between the single quotes are
@@ -5384,6 +5590,10 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       the loop state when a shell function is  executed  (this
                       allows  b\bbr\bre\bea\bak\bk  or c\bco\bon\bnt\bti\bin\bnu\bue\be in a shell function to affect
                       loops in the caller's context).
+              c\bco\bom\bmp\bpa\bat\bt4\b44\b4
+                      If  set,  b\bba\bas\bsh\bh  saves  the  positional   parameters   to
+                      BASH_ARGV and BASH_ARGC before they are used, regardless
+                      of whether or not extended debugging mode is enabled.
               c\bco\bom\bmp\bpl\ble\bet\bte\be_\b_f\bfu\bul\bll\blq\bqu\buo\bot\bte\be
                       If set, b\bba\bas\bsh\bh quotes all shell  metacharacters  in  file-
                       names  and  directory  names when performing completion.
@@ -5409,7 +5619,9 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       names  during word completion if the directory name ini-
                       tially supplied does not exist.
               d\bdo\bot\btg\bgl\blo\bob\bb If set, b\bba\bas\bsh\bh includes filenames beginning with a `.'  in
-                      the results of pathname expansion.
+                      the  results of pathname expansion.  The filenames `\b``\b`.\b.'\b''\b'
+                      and `\b``\b`.\b..\b.'\b''\b'  must always be matched explicitly,  even  if
+                      d\bdo\bot\btg\bgl\blo\bob\bb is set.
               e\bex\bxe\bec\bcf\bfa\bai\bil\bl
                       If set, a non-interactive shell will not exit if it can-
                       not execute the file specified as  an  argument  to  the
@@ -5513,37 +5725,55 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               l\bli\bit\bth\bhi\bis\bst\bt If set, and the c\bcm\bmd\bdh\bhi\bis\bst\bt option  is  enabled,  multi-line
                       commands are saved to the history with embedded newlines
                       rather than using semicolon separators where possible.
+              l\blo\boc\bca\bal\blv\bva\bar\br_\b_i\bin\bnh\bhe\ber\bri\bit\bt
+                      If set, local variables inherit the value and attributes
+                      of a variable of the same name that exists at a previous
+                      scope before any new value  is  assigned.   The  nameref
+                      attribute is not inherited.
+              l\blo\boc\bca\bal\blv\bva\bar\br_\b_u\bun\bns\bse\bet\bt
+                      If  set,  calling  u\bun\bns\bse\bet\bt  on local variables in previous
+                      function scopes marks them so  subsequent  lookups  find
+                      them  unset until that function returns. This is identi-
+                      cal to the behavior of unsetting local variables at  the
+                      current function scope.
               l\blo\bog\bgi\bin\bn_\b_s\bsh\bhe\bel\bll\bl
-                      The shell sets this option if it is started as  a  login
-                      shell  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN  above).   The  value may not be
+                      The  shell  sets this option if it is started as a login
+                      shell (see I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN above).   The  value  may  not  be
                       changed.
               m\bma\bai\bil\blw\bwa\bar\brn\bn
-                      If set, and a file that b\bba\bas\bsh\bh is checking  for  mail  has
-                      been  accessed  since  the last time it was checked, the
-                      message ``The mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read''  is  dis-
+                      If  set,  and  a file that b\bba\bas\bsh\bh is checking for mail has
+                      been accessed since the last time it  was  checked,  the
+                      message  ``The  mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read'' is dis-
                       played.
               n\bno\bo_\b_e\bem\bmp\bpt\bty\by_\b_c\bcm\bmd\bd_\b_c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn
-                      If  set,  and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh will not
+                      If set, and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh  will  not
                       attempt to search the P\bPA\bAT\bTH\bH for possible completions when
                       completion is attempted on an empty line.
               n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb
-                      If  set,  b\bba\bas\bsh\bh  matches  filenames in a case-insensitive
+                      If set, b\bba\bas\bsh\bh matches  filenames  in  a  case-insensitive
                       fashion when performing pathname expansion (see P\bPa\bat\bth\bhn\bna\bam\bme\be
                       E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above).
               n\bno\boc\bca\bas\bse\bem\bma\bat\btc\bch\bh
-                      If  set,  b\bba\bas\bsh\bh  matches  patterns  in a case-insensitive
+                      If set, b\bba\bas\bsh\bh  matches  patterns  in  a  case-insensitive
                       fashion when performing matching while executing c\bca\bas\bse\be or
                       [\b[[\b[ conditional commands, when performing pattern substi-
-                      tution word expansions, or when filtering possible  com-
+                      tution  word expansions, or when filtering possible com-
                       pletions as part of programmable completion.
               n\bnu\bul\bll\blg\bgl\blo\bob\bb
-                      If  set,  b\bba\bas\bsh\bh allows patterns which match no files (see
-                      P\bPa\bat\bth\bhn\bna\bam\bme\bE\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above) to expand to  a  null  string,
+                      If set, b\bba\bas\bsh\bh allows patterns which match no  files  (see
+                      P\bPa\bat\bth\bhn\bna\bam\bme\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn  above)  to expand to a null string,
                       rather than themselves.
               p\bpr\bro\bog\bgc\bco\bom\bmp\bp
                       If set, the programmable completion facilities (see P\bPr\bro\bo-\b-
                       g\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn above) are enabled.  This option is
                       enabled by default.
+              p\bpr\bro\bog\bgc\bco\bom\bmp\bp_\b_a\bal\bli\bia\bas\bs
+                      If set, and programmable  completion  is  enabled,  b\bba\bas\bsh\bh
+                      treats  a command name that doesn't have any completions
+                      as a possible alias and attempts alias expansion. If  it
+                      has  an  alias,  b\bba\bas\bsh\bh  attempts  programmable completion
+                      using the  command  word  resulting  from  the  expanded
+                      alias.
               p\bpr\bro\bom\bmp\bpt\btv\bva\bar\brs\bs
                       If set, prompt strings undergo parameter expansion, com-
                       mand  substitution,  arithmetic  expansion,  and   quote
@@ -5755,7 +5985,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               then  -\b-f\bf is assumed.  Values are in 1024-byte increments, except
               for -\b-t\bt, which is in seconds; -\b-p\bp, which is in units  of  512-byte
               blocks;  -\b-P\bP,  -\b-T\bT, -\b-b\bb, -\b-k\bk, -\b-n\bn, and -\b-u\bu, which are unscaled values;
-              and, when in Posix mode, -\b-c\bc and -\b-f\bf, which are in 512-byte incre-
+              and, when in posix mode, -\b-c\bc and -\b-f\bf, which are in 512-byte incre-
               ments.  The return status is 0 unless an invalid option or argu-
               ment is supplied, or an error occurs while setting a new limit.
 
@@ -5794,22 +6024,25 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               sequently reset.  The exit status is true unless a _\bn_\ba_\bm_\be is read-
               only.
 
-       w\bwa\bai\bit\bt [-\b-n\bn] [_\bn _\b._\b._\b.]
+       w\bwa\bai\bit\bt [-\b-f\bfn\bn] [_\bi_\bd _\b._\b._\b.]
               Wait for each specified child process and return its termination
-              status.  Each _\bn 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 _\bn is not given, all currently active child pro-
+              status.   Each _\bi_\bd 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 _\bi_\bd is not given, all currently active child pro-
               cesses are waited for, and the return status is zero.  If the -\b-n\bn
               option  is  supplied,  w\bwa\bai\bit\bt  waits  for any job to terminate and
-              returns its exit status.  If _\bn 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.
+              returns its exit status.  If the -\b-f\bf option is supplied, and  job
+              control is enabled, w\bwa\bai\bit\bt forces _\bi_\bd to terminate before returning
+              its status, instead of returning when it changes status.  If  _\bi_\bd
+              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.
 
 R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        If b\bba\bas\bsh\bh is started with the name r\brb\bba\bas\bsh\bh, or the -\b-r\br 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\bba\bas\bsh\bh with the exception that the following are
+       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\bba\bas\bsh\bh with the exception that the  following  are
        disallowed or not performed:
 
        +\bo      changing directories with c\bcd\bd
@@ -5818,16 +6051,16 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
 
        +\bo      specifying command names containing /\b/
 
-       +\bo      specifying a filename containing a /\b/ as an  argument  to  the  .\b.
+       +\bo      specifying  a  filename  containing  a /\b/ as an argument to the .\b.
               builtin command
 
-       +\bo      specifying  a  filename containing a slash as an argument to the
+       +\bo      specifying a filename containing a slash as an argument  to  the
               -\b-p\bp option to the h\bha\bas\bsh\bh builtin command
 
-       +\bo      importing function definitions from  the  shell  environment  at
+       +\bo      importing  function  definitions  from  the shell environment at
               startup
 
-       +\bo      parsing  the  value  of  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from the shell environment at
+       +\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-
@@ -5836,10 +6069,10 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        +\bo      using the e\bex\bxe\bec\bc builtin command to replace the shell with another
               command
 
-       +\bo      adding or deleting builtin commands with the -\b-f\bf and  -\b-d\b options
+       +\bo      adding  or  deleting builtin commands with the -\b-f\bf and -\b-d\bd options
               to the e\ben\bna\bab\bbl\ble\be builtin command
 
-       +\bo      using  the  e\ben\bna\bab\bbl\ble\be  builtin  command  to  enable  disabled shell
+       +\bo      using the  e\ben\bna\bab\bbl\ble\be  builtin  command  to  enable  disabled  shell
               builtins
 
        +\bo      specifying the -\b-p\bp option to the c\bco\bom\bmm\bma\ban\bnd\bd builtin command
@@ -5849,14 +6082,14 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        These restrictions are enforced after any startup files are read.
 
        When a command that is found to be a shell script is executed (see C\bCO\bOM\bM-\b-
-       M\bMA\bAN\bND\b E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN  above),  r\brb\bba\bas\bsh\bh turns off any restrictions in the shell
+       M\bMA\bAN\bND\bE\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN above), r\brb\bba\bas\bsh\bh turns off any restrictions  in  the  shell
        spawned to execute the script.
 
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
        _\bB_\ba_\bs_\bh _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bM_\ba_\bn_\bu_\ba_\bl, Brian Fox and Chet Ramey
        _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
        _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
-       _\bP_\bo_\br_\bt_\ba_\bb_\bl_\b_\bO_\bp_\be_\br_\ba_\bt_\bi_\bn_\bg _\bS_\by_\bs_\bt_\be_\bm _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be _\b(_\bP_\bO_\bS_\bI_\bX_\b) _\bP_\ba_\br_\bt _\b2_\b:  _\bS_\bh_\be_\bl_\bl  _\ba_\bn_\b _\bU_\bt_\bi_\bl_\bi_\b-
+       _\bP_\bo_\br_\bt_\ba_\bb_\bl_\b _\bO_\bp_\be_\br_\ba_\bt_\bi_\bn_\bg  _\bS_\by_\bs_\bt_\be_\bm  _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be _\b(_\bP_\bO_\bS_\bI_\bX_\b) _\bP_\ba_\br_\bt _\b2_\b: _\bS_\bh_\be_\bl_\bl _\ba_\bn_\bd _\bU_\bt_\bi_\bl_\bi_\b-
        _\bt_\bi_\be_\bs, IEEE --
               http://pubs.opengroup.org/onlinepubs/9699919799/
        http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode
@@ -5874,7 +6107,7 @@ F\bFI\bIL\bLE\bES\bS
        _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc
               The individual per-interactive-shell startup file
        _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bo_\bu_\bt
-              The  individual  login shell cleanup file, executed when a login
+              The individual login shell cleanup file, executed when  a  login
               shell exits
        _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc
               Individual _\br_\be_\ba_\bd_\bl_\bi_\bn_\be initialization file
@@ -5888,14 +6121,14 @@ A\bAU\bUT\bTH\bHO\bOR\bRS\bS
 
 B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
        If you find a bug in b\bba\bas\bsh\bh,\b, 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  b\bba\bas\bsh\bh.   The  latest  version  is  always  available   from
+       make sure that it really is a bug, and that it appears  in  the  latest
+       version   of  b\bba\bas\bsh\bh.   The  latest  version  is  always  available  from
        _\bf_\bt_\bp_\b:_\b/_\b/_\bf_\bt_\bp_\b._\bg_\bn_\bu_\b._\bo_\br_\bg_\b/_\bp_\bu_\bb_\b/_\bg_\bn_\bu_\b/_\bb_\ba_\bs_\bh_\b/.
 
-       Once  you  have  determined that a bug actually exists, use the _\bb_\ba_\bs_\bh_\bb_\bu_\bg
-       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  _\bb_\bu_\bg_\b-_\bb_\ba_\bs_\bh_\b@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet  newsgroup
+       Once you have determined that a bug actually exists,  use  the  _\bb_\ba_\bs_\bh_\bb_\bu_\bg
+       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  _\bb_\bu_\bg_\b-_\bb_\ba_\bs_\bh_\b@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet newsgroup
        g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
 
        ALL bug reports should include:
@@ -5906,7 +6139,7 @@ B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
        A description of the bug behaviour
        A short script or `recipe' which exercises the bug
 
-       _\bb_\ba_\bs_\bh_\bb_\bu_\b inserts  the first three items automatically into the template
+       _\bb_\ba_\bs_\bh_\bb_\bu_\binserts the first three items automatically into  the  template
        it provides for filing a bug report.
 
        Comments and bug reports concerning this manual page should be directed
@@ -5923,10 +6156,10 @@ B\bBU\bUG\bGS\bS
        Shell builtin commands and functions are not stoppable/restartable.
 
        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
+       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.
 
        Array variables may not (yet) be exported.
@@ -5935,4 +6168,4 @@ B\bBU\bUG\bGS\bS
 
 
 
-GNU Bash 4.4                    2016 August 26                         BASH(1)
+GNU Bash 5.0                    2018 December 7                        BASH(1)
index 9a7a384aebf0538600b1e16421c7985eec871982..e6cd08db3867a8e0c166b44c91c1a6c078d5154f 100644 (file)
@@ -5,12 +5,12 @@
 .\"    Case Western Reserve University
 .\"    chet.ramey@case.edu
 .\"
-.\"    Last Change: Fri Aug 26 09:45:10 EDT 2016
+.\"    Last Change: Fri Dec  7 09:48:47 EST 2018
 .\"
 .\" bash_builtins, strip all but Built-Ins section
 .if \n(zZ=1 .ig zZ
 .if \n(zY=1 .ig zY
-.TH BASH 1 "2016 August 26" "GNU Bash 4.4"
+.TH BASH 1 "2018 December 7" "GNU Bash 5.0"
 .\"
 .\" There's some problem with having a `@'
 .\" in a tagged paragraph with the BSD man macros.
 .\" 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
-..
+.\" .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.
@@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell
 [options]
 [command_string | file]
 .SH COPYRIGHT
-.if n Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc.
-.if t Bash is Copyright \(co 1989-2016 by the Free Software Foundation, Inc.
+.if n Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2018 by the Free Software Foundation, Inc.
 .SH DESCRIPTION
 .B Bash
 is an \fBsh\fR-compatible command language interpreter that
@@ -68,8 +68,8 @@ Shell and Utilities portion of the IEEE POSIX specification
 can be configured to be POSIX-conformant by default.
 .SH OPTIONS
 All of the single-character shell options documented in the
-description of the \fBset\fR builtin command can be used as options
-when the shell is invoked.
+description of the \fBset\fR builtin command, including \fB\-o\fP,
+can be used as options when the shell is invoked.
 In addition, \fBbash\fR
 interprets the following options when it is invoked:
 .PP
@@ -119,7 +119,8 @@ If the
 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.
+when invoking an interactive shell or when reading input
+through a pipe.
 .TP
 .B \-D
 A list of all double-quoted strings preceded by \fB$\fP
@@ -590,6 +591,13 @@ the time information.
 .PP
 Each command in a pipeline is executed as a separate process (i.e., in a
 subshell).
+See
+.SM
+\fBCOMMAND EXECUTION ENVIRONMENT\fP
+for a description of a subshell environment.
+If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin
+(see the description of \fBshopt\fP below),
+the last element of a pipeline may be run by the shell process.
 .SS Lists
 .PP
 A \fIlist\fP is a sequence of one or more pipelines separated by one
@@ -621,8 +629,11 @@ of a semicolon to delimit commands.
 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
+in a subshell.
+The shell does not wait for the command to
+finish, and the return status is 0.
+These are referred to as \fIasynchronous\fP commands.
+Commands separated by a
 .B ;
 are executed sequentially; the shell waits for each
 command to terminate in turn.  The return status is the
@@ -640,7 +651,7 @@ An AND list has the form
 .I command2
 is executed if, and only if,
 .I command1
-returns an exit status of zero.
+returns an exit status of zero (success).
 .PP
 An OR list has the form
 .RS
@@ -650,7 +661,7 @@ An OR list has the form
 .RE
 .PP
 .I command2
-is executed if and only if
+is executed if, and only if,
 .I command1
 returns a non-zero exit status.
 The return status of
@@ -731,7 +742,7 @@ to be matched as a string.
 An additional binary operator, \fB=~\fP, is available, with the same
 precedence as \fB==\fP and \fB!=\fP.
 When it is used, the string to the right of the operator is considered
-an extended regular expression and matched accordingly (as in \fIregex\fP(3)).
+a POSIX extended regular expression and matched accordingly (as in \fIregex\fP(3)).
 The return value is 0 if the string matches
 the pattern, and 1 otherwise.
 If the regular expression is syntactically incorrect, the conditional
@@ -861,10 +872,10 @@ or zero if no commands were executed.
 \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).
+it against each \fIpattern\fP in turn, using the matching rules
+described under
+.B Pattern Matching
+below.
 The \fIword\fP is expanded using tilde
 expansion, parameter and variable expansion, arithmetic expansion,
 command substitution, process substitution and quote removal.
@@ -955,7 +966,8 @@ command (see
 below).
 The file descriptors can be utilized as arguments to shell commands
 and redirections using standard word expansions.
-The file descriptors are not available in subshells.
+Other than those created to execute command and process substitutions,
+the file descriptors are not available in subshells.
 The process ID of the shell spawned to execute the coprocess is
 available as the value of the variable \fINAME\fP_PID.
 The \fBwait\fP
@@ -1142,7 +1154,7 @@ question mark
 .TP
 .B \e\fInnn\fP
 the eight-bit character whose value is the octal value \fInnn\fP
-(one to three digits)
+(one to three octal digits)
 .TP
 .B \ex\fIHH\fP
 the eight-bit character whose value is the hexadecimal value \fIHH\fP
@@ -1348,7 +1360,14 @@ If
 is null, the parameters are joined without intervening separators.
 .TP
 .B @
-Expands to the positional parameters, starting from one.  When the
+Expands to the positional parameters, starting from one.
+In contexts where word splitting is performed, this expands each
+positional parameter to a separate word; if not within double
+quotes, these words are subject to word splitting.
+In contexts where word splitting is not performed,
+this expands to a single word
+with each positional parameter separated by a space.
+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" ...
@@ -1411,8 +1430,8 @@ as given by argument zero.
 At shell startup, set to the absolute pathname used to invoke the
 shell or shell script being executed as passed in the environment
 or argument list.
-Subsequently, expands to the last argument to the previous command,
-after expansion.
+Subsequently, expands to the last argument to the previous simple
+command executed in the foreground, after expansion.
 Also set to the full pathname used to invoke each command executed
 and placed in the environment exported to that command.
 When checking mail, this parameter holds the name of the mail file
@@ -1453,6 +1472,14 @@ This variable is read-only.
 Expands to the process ID of the current \fBbash\fP process.
 This differs from \fB$$\fP under certain circumstances, such as subshells
 that do not require \fBbash\fP to be re-initialized.
+Assignments to
+.SM
+.B BASHPID
+have no effect.
+If
+.B BASHPID
+is unset, it loses its special properties, even if it is
+subsequently reset.
 .TP
 .B BASH_ALIASES
 An associative array variable whose members correspond to the internal
@@ -1481,7 +1508,10 @@ only when in extended debugging mode (see the description of the
 .B extdebug
 option to the
 .B shopt
-builtin below)
+builtin below).
+Setting \fBextdebug\fP after the shell has started to execute a script,
+or referencing this variable when \fBextdebug\fP is not set,
+may result in inconsistent values.
 .TP
 .B BASH_ARGV
 An array variable containing all of the parameters in the current \fBbash\fP
@@ -1499,7 +1529,23 @@ only when in extended debugging mode
 .B extdebug
 option to the
 .B shopt
-builtin below)
+builtin below).
+Setting \fBextdebug\fP after the shell has started to execute a script,
+or referencing this variable when \fBextdebug\fP is not set,
+may result in inconsistent values.
+.TP
+.B BASH_ARGV0
+When referenced, this variable expands to the name of the shell or shell
+script (identical to
+.BR $0 ;
+see the description of special parameter 0 above).
+Assignment to
+.B BASH_ARGV0
+causes the value assigned to also be assigned to \fB$0\fP.
+If
+.B BASH_ARGV0
+is unset, it loses its special properties, even if it is
+subsequently reset.
 .TP
 .B BASH_CMDS
 An associative array variable whose members correspond to the internal
@@ -1687,6 +1733,33 @@ If
 is unset, it loses its special properties, even if it is
 subsequently reset.
 .TP
+.B EPOCHREALTIME
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see \fItime\fP\fR(3)\fP) as a floating point value
+with micro-second granularity.
+Assignments to
+.SM
+.B EPOCHREALTIME
+are ignored.
+If
+.SM
+.B EPOCHREALTIME
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B EPOCHSECONDS
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see \fItime\fP\fR(3)\fP).
+Assignments to
+.SM
+.B EPOCHSECONDS
+are ignored.
+If
+.SM
+.B EPOCHSECONDS
+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.
@@ -2011,7 +2084,7 @@ line editing.
 Similar to
 .SM
 .BR BASH_ENV ;
-used when the shell is invoked in POSIX mode.
+used when the shell is invoked in \fIposix mode\fP.
 .TP
 .B EXECIGNORE
 A colon-separated list of shell patterns (see \fBPattern Matching\fP)
@@ -2053,9 +2126,9 @@ nesting level.  Function invocations that exceed this nesting level
 will cause the current command to abort.
 .TP
 .B GLOBIGNORE
-A colon-separated list of patterns defining the set of filenames to
+A colon-separated list of patterns defining the set of file names to
 be ignored by pathname expansion.
-If a filename matched by a pathname expansion pattern also matches one
+If a file name matched by a pathname expansion pattern also matches one
 of the patterns in
 .SM
 .BR GLOBIGNORE ,
@@ -2076,7 +2149,7 @@ A value of
 .I ignoreboth
 is shorthand for \fIignorespace\fP and \fIignoredups\fP.
 A value of
-.IR erasedups
+.I 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.
@@ -2216,6 +2289,11 @@ startup file, overriding the default of
 .B READLINE
 below).
 .TP
+.B INSIDE_EMACS
+If this variable appears in the environment when the shell starts,
+\fBbash\fP assumes that it is running inside an Emacs shell buffer
+and may disable line editing, depending on the value of \fBTERM\fP.
+.TP
 .B LANG
 Used to determine the locale category for any category not specifically
 selected with a variable starting with \fBLC_\fP.
@@ -2339,6 +2417,8 @@ 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.
+When the shell enters \fIposix mode\fP, it sets this variable if it was
+not already set.
 .TP
 .B PROMPT_COMMAND
 If set, the value is executed as a command prior to issuing each primary
@@ -2388,6 +2468,7 @@ The value of this parameter is expanded as with
 and the value is printed before each command
 .B bash
 displays during an execution trace.  The first character of
+the expanded value of
 .SM
 .B PS4
 is replicated multiple times, as necessary, to indicate multiple
@@ -2624,14 +2705,19 @@ special parameters \fI@\fP and \fI*\fP within double quotes.
 The
 .B unset
 builtin is used to destroy arrays.  \fBunset\fP \fIname\fP[\fIsubscript\fP]
-destroys the array element at index \fIsubscript\fP.
+destroys the array element at index \fIsubscript\fP,
+for both indexed and associative arrays.
 Negative subscripts to indexed arrays are interpreted as described above.
-Care must be taken to avoid unwanted side effects caused by pathname
-expansion.
+Unsetting the last element of an array variable does not unset the variable.
 \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
+When using a variable name with a subscript as an argument to a command,
+such as with \fBunset\fP, without using the word expansion syntax
+described above, the argument is subject to pathname expansion.
+If pathname expansion is not desired, the argument should be quoted.
+.PP
 The
 .BR declare ,
 .BR local ,
@@ -2686,10 +2772,11 @@ original word are removed unless they have been quoted themselves
 (\fIquote removal\fP).
 .PP
 Only brace expansion, word splitting, and pathname expansion
-can change the number of words of the expansion; other expansions
+can increase 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"
+"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP",
+and, in most cases, \fB$*\fP and \fB${\fP\fIname\fP\fB[*]}\fP
 as explained above (see
 .SM
 .BR PARAMETERS ).
@@ -2730,7 +2817,7 @@ lexicographically between \fIx\fP and \fIy\fP, inclusive,
 using the default C locale.
 Note that both \fIx\fP and \fIy\fP must be of the same type.
 When the increment is supplied, it is used as the difference between
-each term.  The default increment is 1 or -1 as appropriate.
+each term.  The default increment is 1 or \-1 as appropriate.
 .PP
 Brace expansion is performed before any other expansions,
 and any characters special to other expansions are preserved
@@ -2746,7 +2833,8 @@ 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.
+is not considered eligible for brace expansion, and inhibits brace
+expansion until the closing \fB}\fP.
 .PP
 This construct is typically used as shorthand when the common
 prefix of the strings to be generated is longer than in the
@@ -2845,6 +2933,14 @@ and
 .SM
 .BR CDPATH ,
 and the shell assigns the expanded value.
+.PP
+Bash also performs tilde expansion on words satisfying the conditions of
+variable assignments (as described above under
+.SM
+.BR PARAMETERS )
+when they appear as arguments to simple commands.
+Bash does not do this, except for the \fIdeclaration\fP commands listed
+above, when in \fIposix mode\fP.
 .SS Parameter Expansion
 .PP
 The `\fB$\fP' character introduces parameter expansion,
@@ -2876,14 +2972,16 @@ The \fIparameter\fP is a shell parameter as described above
 .PP
 If the first character of \fIparameter\fP is an exclamation point (\fB!\fP),
 and \fIparameter\fP is not a \fInameref\fP,
-it introduces a level of variable indirection.
-\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.
+it introduces a level of indirection.
+\fBBash\fP uses the value formed by expanding the rest of
+\fIparameter\fP as the new \fIparameter\fP; this is then
+expanded and that value is used in the rest of the expansion, rather
+than the expansion of the original \fIparameter\fP.
 This is known as \fIindirect expansion\fP.
+The value is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
 If \fIparameter\fP is a nameref, this expands to the name of the
-variable referenced by \fIparameter\fP instead of performing the
+parameter referenced by \fIparameter\fP instead of performing the
 complete indirect expansion.
 The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\fP} and
 ${\fB!\fP\fIname\fP[\fI@\fP]} described below.
@@ -2975,7 +3073,7 @@ one space to avoid being confused with the \fB:-\fP expansion.
 If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
 parameters beginning at \fIoffset\fP.
 A negative \fIoffset\fP is taken relative to one greater than the greatest
-positional parameter, so an offset of -1 evaluates to the last positional
+positional parameter, so an offset of \-1 evaluates to the last positional
 parameter.
 It is an expansion error if \fIlength\fP evaluates to a number less than
 zero.
@@ -3056,7 +3154,12 @@ ${\fIparameter\fP\fB##\fP\fIword\fP}
 The
 .I word
 is expanded to produce a pattern just as in pathname
-expansion.  If the pattern matches the beginning of
+expansion, and matched against the expanded value of
+.I parameter
+using the rules described under
+.B Pattern Matching
+below.
+If the pattern matches the beginning of
 the value of
 .IR parameter ,
 then the result of the expansion is the expanded value of
@@ -3087,7 +3190,11 @@ ${\fIparameter\fP\fB%%\fP\fIword\fP}
 .PD
 \fBRemove matching suffix pattern\fP.
 The \fIword\fP is expanded to produce a pattern just as in
-pathname expansion.
+pathname expansion, and matched against the expanded value of
+.I parameter
+using the rules described under
+.B Pattern Matching
+below.
 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
@@ -3114,9 +3221,12 @@ array in turn, and the expansion is the resultant list.
 ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
 \fBPattern substitution\fP.
 The \fIpattern\fP is expanded to produce a pattern just as in
-pathname expansion.
+pathname expansion,
 \fIParameter\fP is expanded and the longest match of \fIpattern\fP
 against its value is replaced with \fIstring\fP.
+The match is performed using the rules described under
+.B Pattern Matching
+below.
 If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are
 replaced with \fIstring\fP.  Normally only the first match is replaced.
 If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
@@ -3202,7 +3312,7 @@ format that can be reused as input.
 .TP
 .B E
 The expansion is a string that is the value of \fIparameter\fP with backslash
-escape sequences expanded as with the \fB$'...'\fP quoting mechansim.
+escape sequences expanded as with the \fB$'...'\fP quoting mechanism.
 .TP
 .B P
 The expansion is a string that is the result of expanding the value of
@@ -3232,7 +3342,7 @@ is an array variable subscripted with
 .B @
 or
 .BR * ,
-the case modification operation is applied to each member of the
+the operation is applied to each member of the
 array in turn, and the expansion is the resultant list.
 .sp 1
 The result of the expansion is subject to word splitting and pathname
@@ -3372,7 +3482,7 @@ are ignored at the beginning and end of the
 word, as long as the whitespace character is in the
 value of
 .SM
-.BR IFS
+.B IFS
 (an
 .SM
 .B IFS
@@ -3455,11 +3565,22 @@ 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.
+The filenames
+.B ``.''
+and
+.B ``..''
+must always be matched explicitly, even if
+.B dotglob
+is set.
 In other cases, the
 .B ``.''
 character is not treated specially.
+When matching a pathname, the slash character must always be
+matched explicitly by a slash in the pattern, but in other matching
+contexts it can be matched by a special pattern character as described
+below under
+.SM
+.BR "Pattern Matching" .
 See the description of
 .B shopt
 below under
@@ -3476,12 +3597,12 @@ shell options.
 The
 .SM
 .B GLOBIGNORE
-shell variable may be used to restrict the set of filenames matching a
+shell variable may be used to restrict the set of file names matching a
 .IR pattern .
 If
 .SM
 .B GLOBIGNORE
-is set, each matching filename that also matches one of the patterns in
+is set, each matching file name that also matches one of the patterns in
 .SM
 .B GLOBIGNORE
 is removed from the list of matches.
@@ -3654,6 +3775,12 @@ Matches one of the given patterns
 Matches anything except one of the given patterns
 .RE
 .PD
+.PP
+Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.
+Using separate matches against shorter strings, or using arrays of
+strings instead of a single long string, may be faster.
 .SS Quote Removal
 .PP
 After the preceding expansions, all unquoted occurrences of the
@@ -3689,6 +3816,9 @@ than or equal to 10 and assign it to \fIvarname\fP.
 If >&- or <&- is preceded
 by {\fIvarname\fP}, the value of \fIvarname\fP defines the file
 descriptor to close.
+If {\fIvarname\fP} is supplied, the redirection persists beyond
+the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 .PP
 In the following descriptions, if the file descriptor number is
 omitted, and the first character of the redirection operator is
@@ -3952,7 +4082,7 @@ A variant of here documents, the format is:
 .RE
 .PP
 The \fIword\fP undergoes
-brace expansion, tilde expansion, parameter and variable expansion,
+tilde expansion, parameter and variable expansion,
 command substitution, arithmetic expansion, and quote removal.
 Pathname expansion and word splitting are not performed.
 The result is supplied as a single string, with a newline appended,
@@ -4105,9 +4235,10 @@ below).
 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
+always reads at least one complete line of input,
+and all lines that make up a compound command,
+before executing any of the commands on that line or the compound command.
+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.
@@ -4178,6 +4309,44 @@ 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.
+If a variable is declared \fBlocal\fP, the variable's visible scope
+is restricted to that function and its children (including the functions
+it calls).
+Local variables "shadow" variables with the same name declared at
+previous scopes.
+For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+.PP
+The shell uses \fIdynamic scoping\fP to control a variable's visibility
+within functions.
+With dynamic scoping, visible variables and their values
+are a result of the sequence of function calls that caused execution
+to reach the current function.
+The value of a variable that a function sees depends
+on its value within its caller, if any, whether that caller is
+the "global" scope or another shell function.
+This is also the value that a local variable
+declaration "shadows", and the value that is restored when the function
+returns.
+.PP
+For example, if a variable \fIvar\fP is declared as local in function
+\fIfunc1\fP, and \fIfunc1\fP calls another function \fIfunc2\fP,
+references to \fIvar\fP made from within \fIfunc2\fP will resolve to the
+local variable \fIvar\fP from \fIfunc1\fP, shadowing any global variable
+named \fIvar\fP.
+.PP
+The \fBunset\fP builtin also acts using the same dynamic scope: if a
+variable is local to the current scope, \fBunset\fP will unset it;
+otherwise the unset will refer to the variable found in any calling scope
+as described above.
+If a variable at the current local scope is unset, it will remain so
+until it is reset in that scope or until the function returns.
+Once the function returns, any instance of the variable at a previous
+scope will become visible.
+If the unset acts on a variable at a previous scope, any instance of a
+variable with that name that had been shadowed will become visible.
 .PP
 The \fBFUNCNEST\fP variable, if set to a numeric value greater
 than 0, defines a maximum function nesting level.  Function
@@ -4222,10 +4391,6 @@ A function definition may be deleted using the \fB\-f\fP option to
 the
 .B unset
 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.
 The \fBFUNCNEST\fP variable may be used to limit the depth of the
@@ -4248,12 +4413,12 @@ The levels are listed in order of decreasing precedence.
 .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 ++\fIid\fP \-\-\fIid\fP
+variable pre-increment and pre-decrement
+.TP
 .B ! ~
 logical and bitwise negation
 .TP
@@ -4308,7 +4473,7 @@ 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.
+\fIinteger\fP attribute using \fBdeclare \-i\fP is assigned a value.
 A null value evaluates to 0.
 A shell variable need not have its \fIinteger\fP attribute
 turned on to be used in an expression.
@@ -4333,6 +4498,10 @@ rules above.
 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.
+The \fBtest\fP abd \fB[\fP commands determine their behavior based on
+the number of arguments; see the descriptions of those commands for any
+other command-specific actions.
+.PP
 Expressions are formed from the following unary or binary primaries.
 \fBBash\fP handles several filenames specially when they are used in
 expressions.
@@ -4501,6 +4670,14 @@ greater than, or greater than or equal to \fIarg2\fP, respectively.
 and
 .I arg2
 may be positive or negative integers.
+When used with the \fB[[\fP command,
+.I Arg1
+and
+.I Arg2
+are evaluated as arithmetic expressions  (see
+.SM
+.B "ARITHMETIC EVALUATION"
+above).
 .PD
 .SH "SIMPLE COMMAND EXPANSION"
 When a simple command is executed, the shell performs the following
@@ -4573,9 +4750,10 @@ A full search of the directories in
 is performed only if the command is not found in the hash table.
 If the search is unsuccessful, the shell searches for a defined shell
 function named \fBcommand_not_found_handle\fP.
-If that function exists, it is invoked with the original command and
+If that function exists, it is invoked in a separate execution environment
+with the original command and
 the original command's arguments as its arguments, and the function's
-exit status becomes the exit status of thshell.
+exit status becomes the exit status of that subshell.
 If that function is not defined, the shell prints an error
 message and returns an exit status of 127.
 .PP
@@ -4675,7 +4853,7 @@ subshell environment.  Changes made to the subshell environment
 cannot affect the shell's execution environment.
 .PP
 Subshells spawned to execute command substitutions inherit the value of
-the \fB\-e\fP option from the parent shell.  When not in \fIposix\fP mode,
+the \fB\-e\fP option from the parent shell.  When not in \fIposix mode\fP,
 \fBbash\fP clears the \fB\-e\fP option in such subshells.
 .PP
 If a command is followed by a \fB&\fP and job control is not active, the
@@ -5030,6 +5208,11 @@ command may then be used to inspect their status.
 If a second attempt to exit is made without an intervening command,
 the shell does not print another warning, and any stopped
 jobs are terminated.
+.PP
+When the shell is waiting for a job or process using the \fBwait\fP
+builtin, and job control is enabled, \fBwait\fP will return when the
+job changes state. The \fB\-f\fP option will force \fBwait\fP to wait
+until the job or process terminates before returning.
 .SH PROMPTING
 When executing interactively,
 .B bash
@@ -5042,9 +5225,16 @@ when it is ready to read a command, and the secondary prompt
 when it needs more input to complete a command.
 .B Bash
 displays
+.SM
 .B PS0
 after it reads a command but before executing it.
 .B Bash
+displays
+.SM
+.B PS4
+as described above
+before tracing each command when the \fB\-x\fP option is enabled.
+.B Bash
 allows these prompt strings to be customized by inserting a number of
 backslash-escaped special characters that are decoded as follows:
 .RS
@@ -5497,13 +5687,13 @@ in emacs mode and to
 .B #
 in vi command mode.
 .TP
-.B completion\-display\-width (-1)
+.B completion\-display\-width (\-1)
 The number of screen columns used to display possible matches
 when performing completion.
 The value is ignored if it is less than 0 or greater than the terminal
 screen width.
 A value of 0 will cause matches to be displayed one per line.
-The default value is -1.
+The default value is \-1.
 .TP
 .B completion\-ignore\-case (Off)
 If set to \fBOn\fP, readline performs filename matching and completion
@@ -5557,6 +5747,16 @@ can be set to either
 or
 .BR vi .
 .TP
+.B emacs\-mode\-string (@)
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active.  The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \e1 and \e2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+.TP
 .B enable\-bracketed\-paste (Off)
 When set to \fBOn\fP, readline will configure the terminal in a way
 that will enable it to insert each paste into the editing buffer as a
@@ -5626,15 +5826,6 @@ the value of
 .B editing\-mode
 also affects the default keymap.
 .TP
-.B emacs\-mode\-string (@)
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active.  The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-.TP
 .B keyseq\-timeout (500)
 Specifies the duration \fIreadline\fP will wait for a character when reading an
 ambiguous key sequence (one that can form a complete key sequence using
@@ -5712,9 +5903,9 @@ a common prefix) cause the matches to be listed immediately instead
 of ringing the bell.
 .TP
 .B show\-mode\-in\-prompt (Off)
-If set to \fBOn\fP, add a character to the beginning of the prompt
-indicating the editing mode: emacs (@), vi command (:) or vi
-insertion (+).
+If set to \fBOn\fP, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP).
 .TP
 .B skip\-completed\-text (Off)
 If set to \fBOn\fP, this alters the default completion behavior when
@@ -5725,7 +5916,8 @@ after point in the word being completed, so portions of the word
 following the cursor are not duplicated.
 .TP
 .B vi\-cmd\-mode\-string ((cmd))
-This string is displayed immediately before the last line of the primary
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in command mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -5735,7 +5927,8 @@ non-printing characters, which can be used to embed a terminal control
 sequence into the mode string.
 .TP
 .B vi\-ins\-mode\-string ((ins))
-This string is displayed immediately before the last line of the primary
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in insertion mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -5760,8 +5953,9 @@ 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.
+readline.  The text of the test, after any comparison operator,
+ extends to the end of the line;
+unless otherwise noted, 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
@@ -5783,6 +5977,26 @@ to match both
 and
 .IR sun\-cmd ,
 for instance.
+.IP \fBversion\fP
+The \fBversion\fP test may be used to perform comparisons against
+specific readline versions.
+The \fBversion\fP expands to the current readline version.
+The set of comparison operators includes
+.BR = ,
+(and
+.BR == ),
+.BR != ,
+.BR <= ,
+.BR >= ,
+.BR < ,
+and
+.BR > .
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., \fB7.1\fP). If the minor version is omitted, it
+is assumed to be \fB0\fP.
+The operator may be separated from the string \fBversion\fP   
+and from the version number argument by whitespace.
 .IP \fBapplication\fP
 The \fBapplication\fP construct is used to include
 application-specific settings.  Each program using the readline
@@ -5800,6 +6014,15 @@ key sequence that quotes the current or previous word in \fBbash\fP:
 \fB$endif\fP
 .fi
 .RE
+.IP \fIvariable\fP
+The \fIvariable\fP construct provides simple equality tests for readline
+variables and values.
+The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values \fIon\fP and \fIoff\fP.
 .RE
 .IP \fB$endif\fP
 This command, as seen in the previous example, terminates an
@@ -5901,6 +6124,19 @@ Words are delimited by non-quoted shell metacharacters.
 Move back to the start of the current or previous word.
 Words are delimited by non-quoted shell metacharacters.
 .TP
+.B previous\-screen\-line
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not  
+greater than the length of the prompt plus the screen width.
+.TP
+.B next\-screen\-line
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+.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
@@ -5962,6 +6198,19 @@ 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 history\-substring\-search\-backward
+Search backward through the history for the string of characters   
+between the start of the current line and the current cursor
+position (the \fIpoint\fP).
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+.TP
+.B history\-substring\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+.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.
@@ -6024,10 +6273,11 @@ 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.
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
 .TP
-.B edit\-and\-execute\-command (C\-xC\-e)
+.B edit\-and\-execute\-command (C\-x C\-e)
 Invoke an editor on the current command line, and execute the result as shell
 commands.
 \fBBash\fP attempts to invoke
@@ -6342,9 +6592,10 @@ 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.
+.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is uppercase, run the command
+that is bound to the corresponding metafied lowercase character. 
+The behavior is undefined if \fIx\fP is already lowercase. 
 .TP
 .B prefix\-meta (ESC)
 Metafy the next character typed.
@@ -6467,6 +6718,9 @@ If no compspec is found for the full pathname, an attempt is made to
 find a compspec for the portion following the final slash.
 If those searches do not result in a compspec, any compspec defined with
 the \fB\-D\fP option to \fBcomplete\fP is used as the default.
+If there is no default compspec, \fBbash\fP attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion.
 .PP
 Once a compspec has been found, it is used to generate the list of
 matching words.
@@ -6608,7 +6862,7 @@ of the setting of the \fBmark-symlinked\-directories\fP readline variable.
 .PP
 There is some support for dynamically modifying completions.  This is
 most useful when used in combination with a default completion specified
-with \fBcomplete -D\fP.
+with \fBcomplete \-D\fP.
 It's possible for shell functions executed as completion
 handlers to indicate that completion should be retried by returning an
 exit status of 124.  If a shell function returns 124, and changes
@@ -6679,7 +6933,7 @@ If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value,
 or a numeric value less than zero, the history file is not truncated.
 When the history file is read,
 lines beginning with the history comment character followed immediately
-by a digit are interpreted as timestamps for the preceding history line.
+by a digit are interpreted as timestamps for the following history line.
 These timestamps are optionally displayed depending on the value of the
 .SM
 .B HISTTIMEFORMAT
@@ -6765,7 +7019,7 @@ for information on setting and unsetting shell options.
 .PP
 The shell supports a history expansion feature that
 is similar to the history expansion in
-.BR csh.
+.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
@@ -6784,7 +7038,9 @@ 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.
+is read, before the shell breaks it into words, and is performed
+on each line individually without taking quoting on previous lines into
+account.
 It takes place in two parts.
 The first is to determine which line from the history list
 to use during substitution.
@@ -7045,7 +7301,7 @@ section as accepting options preceded by
 accepts
 .B \-\-
 to signify the end of the options.
-The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins
+The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP/\fB[\fP builtins
 do not accept options and do not treat \fB\-\-\fP specially.
 The \fBexit\fP, \fBlogout\fP, \fBreturn\fP,
 \fBbreak\fP, \fBcontinue\fP, \fBlet\fP,
@@ -7419,12 +7675,12 @@ will be displayed.
 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\-DE\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP]
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP]
 .br
 [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP]
 .PD 0
 .TP
-\fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fIname\fP ...]
+\fBcomplete\fP \fB\-pr\fP [\fB\-DEI\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,
@@ -7433,12 +7689,21 @@ 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.
-The \fB\-D\fP option indicates that the remaining options and actions should
+The \fB\-D\fP option indicates that other supplied options and actions should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The \fB\-E\fP option indicates that the remaining options and actions should
+The \fB\-E\fP option indicates that other supplied options and actions should
 apply to ``empty'' command completion; that is, completion attempted on a
 blank line.
+The \fB\-I\fP option indicates that other supplied options and actions should
+apply to completion on the inital non-assignment word on the line, or after
+a command delimiter such as \fB;\fP or \fB|\fP, which is usually command
+name completion.
+If multiple options are supplied, the \fB\-D\fP option takes precedence
+over \fB\-E\fP, and both take precedence over \fB\-I\fP.
+If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other
+\fIname\fP arguments are ignored; these completions only apply to the case
+specified by the option.
 .sp 1
 The process of applying these completion specifications when word completion
 is attempted is described above under \fBProgrammable Completion\fP.
@@ -7609,6 +7874,12 @@ The \fIwordlist\fP is split using the characters in the
 .SM
 .B IFS
 special variable as delimiters, and each resultant word is expanded.
+Shell quoting is honored within \fIwordlist\fP,
+in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of
+.SM
+.BR IFS .
 The possible completions are the members of the resultant list which
 match the word being completed.
 .TP 8
@@ -7628,7 +7899,7 @@ a \fIname\fP for which no specification exists, or
 an error occurs adding a completion specification.
 .RE
 .TP
-\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DE\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP]
+\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DEI\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP]
 Modify completion options for each \fIname\fP according to the
 \fIoption\fPs, or for the
 currently-executing completion if no \fIname\fPs are supplied.
@@ -7636,12 +7907,16 @@ If no \fIoption\fPs are given, display the completion options for each
 \fIname\fP or the current completion.
 The possible values of \fIoption\fP are those valid for the \fBcomplete\fP
 builtin described above.
-The \fB\-D\fP option indicates that the remaining options should
+The \fB\-D\fP option indicates that other supplied options should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The \fB\-E\fP option indicates that the remaining options should
+The \fB\-E\fP option indicates that other supplied options should
 apply to ``empty'' command completion; that is, completion attempted on a
 blank line.
+The \fB\-I\fP option indicates that other supplied options should
+apply to completion on the inital non-assignment word on the line,
+or after a command delimiter such as \fB;\fP or \fB|\fP, which is usually
+command name completion.
 .sp 1
 The return value is true unless an invalid option is supplied, an attempt
 is made to modify the options for a \fIname\fP for which no completion
@@ -7764,8 +8039,8 @@ Mark \fIname\fPs for export to subsequent commands via the environment.
 .PP
 Using `+' instead of `\-'
 turns off the attribute instead,
-with the exceptions that \fB+a\fP
-may not be used to destroy an array variable and \fB+r\fP will not
+with the exceptions that \fB+a\fP and \fB+A\fP
+may not be used to destroy array variables and \fB+r\fP will not
 remove the readonly attribute.
 When used in a function,
 .B declare
@@ -8020,6 +8295,7 @@ unless the
 shell option
 is enabled.  In that case, it returns failure.
 An interactive shell returns failure if the file cannot be executed.
+A subshell exits unconditionally if \fBexec\fP fails.
 If
 .I command
 is not specified, any redirections take effect in the current shell,
@@ -8089,7 +8365,7 @@ 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
+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
@@ -8098,7 +8374,7 @@ prints the last 10 commands) and to
 otherwise.
 If
 .I first
-is not specified it is set to the previous
+is not specified, it is set to the previous
 command for editing and \-16 for listing.
 .sp 1
 The
@@ -8134,7 +8410,7 @@ 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.
-\fICommand\fP is intepreted the same as \fIfirst\fP above.
+\fICommand\fP is interpreted the same as \fIfirst\fP above.
 A useful alias to use with this is
 .if n ``r="fc -s"'',
 .if t \f(CWr='fc \-s'\fP,
@@ -8353,6 +8629,8 @@ The return status is 0 unless no command matches
 .TP
 \fBhistory \-d\fP \fIoffset\fP
 .TP
+\fBhistory \-d\fP \fIstart\fP\-\fIend\fP
+.TP
 \fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
 .TP
 \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
@@ -8389,6 +8667,15 @@ Clear the history list by deleting all the entries.
 .TP
 \fB\-d\fP \fIoffset\fP
 Delete the history entry at position \fIoffset\fP.
+If \fIoffset\fP is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of \-1 refers to the current
+\fBhistory -d\fP command.
+.TP
+\fB\-d\fP \fIstart\fP\-\fIend\fP
+Delete the history entries between positions \fIstart\fP and \fIend\fP,
+inclusive.  Positive and negative values for \fIstart\fP and \fIend\fP
+are interpreted as described above.
 .TP
 .B \-a
 Append the ``new'' history lines to the history file.
@@ -8591,7 +8878,7 @@ Exit a login shell.
 Read lines from the standard input into the indexed array variable
 .IR array ,
 or from file descriptor
-.IR fd
+.I fd
 if the
 .B \-u
 option is supplied.
@@ -8606,6 +8893,8 @@ Options, if supplied, have the following meanings:
 .B \-d
 The first character of \fIdelim\fP is used to terminate each input line,
 rather than newline.
+If \fIdelim\fP is the empty string, \fBmapfile\fP will terminate a line
+when it reads a NUL character.
 .TP
 .B \-n
 Copy at most
@@ -8738,9 +9027,9 @@ causes \fBprintf\fP to output the date-time string resulting from using
 \fIdatefmt\fP as a format string for \fIstrftime\fP(3).
 The corresponding \fIargument\fP is an integer representing the number of
 seconds since the epoch.
-Two special argument values may be used: -1 represents the current
-time, and -2 represents the time the shell was invoked.
-If no argument is specified, conversion behaves as if -1 had been given.
+Two special argument values may be used: \-1 represents the current
+time, and \-2 represents the time the shell was invoked.
+If no argument is specified, conversion behaves as if \-1 had been given.
 This is an exception to the usual \fBprintf\fP behavior.
 .PD
 .PP
@@ -8865,6 +9154,8 @@ Other \fIname\fP arguments are ignored.
 .B \-d \fIdelim\fP
 The first character of \fIdelim\fP is used to terminate the input line,
 rather than newline.
+If \fIdelim\fP is the empty string, \fBread\fP will terminate a line
+when it reads a NUL character.
 .TP
 .B \-e
 If the standard input
@@ -8875,7 +9166,7 @@ is coming from a terminal,
 .B READLINE
 above) is used to obtain the line.
 Readline uses the current (or default, if line editing was not previously
-active) editing settings.
+active) editing settings, but uses Readline's default filename completion.
 .TP
 .B \-i \fItext\fP
 If
@@ -8907,7 +9198,7 @@ is displayed only if input is coming from a terminal.
 .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
+In particular, a backslash-newline pair may not then be used as a line
 continuation.
 .TP
 .B \-s
@@ -8996,7 +9287,7 @@ is omitted, the return status is that of the last command
 executed in the function body.
 If \fBreturn\fP is executed by a trap handler, the last command used to
 determine the status is the last command executed before the trap handler.
-if \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command
+If \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command
 used to determine the status is the last command executed by the trap
 handler before \fBreturn\fP was invoked.
 If
@@ -9028,7 +9319,7 @@ Without options, the name and value of each shell variable are displayed
 in a format that can be reused as input
 for setting or resetting the currently-set variables.
 Read-only variables cannot be reset.
-In \fIposix\fP mode, only shell variables are listed.
+In \fIposix mode\fP, only shell variables are listed.
 The output is sorted according to the current locale.
 When options are specified, they set or unset shell attributes.
 Any arguments remaining after option processing are treated
@@ -9426,7 +9717,8 @@ option to the \fBset\fP builtin command.
 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.
+an indication of whether or not each is set;
+if \fIoptnames\fP are supplied, the output is restricted to those options.
 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:
@@ -9475,6 +9767,12 @@ The list of \fBshopt\fP options is:
 .if n .sp 1v
 .PD 0
 .TP 8
+.B assoc_expand_once
+If set, the shell suppresses multiple evaluation of associative array
+subscripts during arithmetic expression evaluation, while executing
+builtins that can perform variable assignments,
+and while executing builtins that perform array dereferencing.
+.TP 8
 .B autocd
 If set, a command name that is the name of a directory is executed as if
 it were the argument to the \fBcd\fP command.
@@ -9513,13 +9811,14 @@ above).  The shell always
 postpones exiting if any jobs are stopped.
 .TP 8
 .B checkwinsize
-If set, \fBbash\fP checks the window size after each command
-and, if necessary, updates the values of
+If set, \fBbash\fP checks the window size after each external (non-builtin)
+command and, if necessary, updates the values of
 .SM
 .B LINES
 and
 .SM
 .BR COLUMNS .
+This option is enabled by default.
 .TP 8
 .B cmdhist
 If set,
@@ -9527,6 +9826,10 @@ If set,
 attempts to save all lines of a multiple-line
 command in the same history entry.  This allows
 easy re-editing of multi-line commands.
+This option is enabled by default, but only has an effect if command
+history is enabled, as described above under
+.SM
+.BR HISTORY .
 .TP 8
 .B compat31
 If set,
@@ -9564,7 +9867,7 @@ interrupt; previous versions continue with the next command in the list.
 .B compat41
 If set,
 .BR bash ,
-when in \fIposix\fP mode, treats a single quote in a double-quoted
+when in \fIposix mode\fP, treats a single quote in a double-quoted
 parameter expansion as a special character.  The single quotes must match
 (an even number) and the characters between the single quotes are considered
 quoted.  This is the behavior of posix mode through version 4.1.
@@ -9588,6 +9891,12 @@ and does not reset the
 loop state when a shell function is executed (this allows \fBbreak\fP or
 \fBcontinue\fP in a shell function to affect loops in the caller's context).
 .TP 8
+.B compat44
+If set,
+.B bash
+saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
+used, regardless of whether or not extended debugging mode is enabled.
+.TP 8
 .B complete_fullquote
 If set,
 .B bash
@@ -9628,6 +9937,13 @@ If set,
 .B bash
 includes filenames beginning with a `.' in the results of pathname
 expansion.
+The filenames
+.B ``.''
+and
+.B ``..''
+must always be matched explicitly, even if
+.B dotglob
+is set.
 .TP 8
 .B execfail
 If set, a non-interactive shell will not exit if
@@ -9797,6 +10113,17 @@ If set, and the
 option is enabled, multi-line commands are saved to the history with
 embedded newlines rather than using semicolon separators where possible.
 .TP 8
+.B localvar_inherit
+If set, local variables inherit the value and attributes of a variable of
+the same name that exists at a previous scope before any new value is
+assigned.  The nameref attribute is not inherited.
+.TP 8
+.B localvar_unset
+If set, calling \fBunset\fP on local variables in previous function scopes
+marks them so subsequent lookups find them unset until that function
+returns. This is identical to the behavior of unsetting local variables
+at the current function scope.
+.TP 8
 .B login_shell
 The shell sets this option if it is started as a login shell (see
 .SM
@@ -9850,6 +10177,12 @@ If set, the programmable completion facilities (see
 \fBProgrammable Completion\fP above) are enabled.
 This option is enabled by default.
 .TP 8
+.B progcomp_alias
+If set, and programmable completion is enabled, \fBbash\fP treats a command
+name that doesn't have any completions as a possible alias and attempts
+alias expansion. If it has an alias, \fBbash\fP attempts programmable
+completion using the command word resulting from the expanded alias.
+.TP 8
 .B promptvars
 If set, prompt strings undergo
 parameter expansion, command substitution, arithmetic
@@ -10318,7 +10651,7 @@ which is in units of 512-byte blocks;
 and
 .BR \-u ,
 which are unscaled values;
-and, when in Posix mode,
+and, when in posix mode,
 .B \-c
 and
 .BR \-f ,
@@ -10410,20 +10743,23 @@ subsequently reset.  The exit status is true unless a
 .I name
 is readonly.
 .TP
-\fBwait\fP [\fB\-n\fP] [\fIn ...\fP]
+\fBwait\fP [\fB\-fn\fP] [\fIid ...\fP]
 Wait for each specified child process and return its termination status.
 Each
-.I n
+.I id
 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
+.I id
 is not given, all currently active child processes
 are waited for, and the return status is zero.
 If the \fB\-n\fP option is supplied, \fBwait\fP waits for any job to
 terminate and returns its exit status.
+If the \fB\-f\fP option is supplied, and job control is enabled,
+\fBwait\fP forces \fIid\fP to terminate before returning its status,
+instead of returning when it changes status.
 If
-.I n
+.I id
 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.
index 983284e84d9c1081ca735260cbf7c035b2e4e691..3da23fb648e54e46a3c7dba73ca3306e6d2273d9 100644 (file)
@@ -3,7 +3,7 @@
 </HEAD>
 <BODY><TABLE WIDTH=100%>
 <TR>
-<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2016 August 26<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2018 December 7<TH ALIGN=RIGHT width=33%>BASH(1)
 </TR>
 </TABLE>
 <BR><A HREF="#index">Index</A>
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
@@ -42,7 +54,7 @@ bash - GNU Bourne-Again SHell
 <H3>COPYRIGHT</H3>
 
 
-Bash is Copyright &#169; 1989-2016 by the Free Software Foundation, Inc.
+Bash is Copyright &#169; 1989-2018 by the Free Software Foundation, Inc.
 <A NAME="lbAE">&nbsp;</A>
 <H3>DESCRIPTION</H3>
 
@@ -68,8 +80,8 @@ can be configured to be POSIX-conformant by default.
 <H3>OPTIONS</H3>
 
 All of the single-character shell options documented in the
-description of the <B>set</B> builtin command can be used as options
-when the shell is invoked.
+description of the <B>set</B> builtin command, including <B>-o</B>,
+can be used as options when the shell is invoked.
 In addition, <B>bash</B>
 interprets the following options when it is invoked:
 <P>
@@ -139,7 +151,8 @@ If the
 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.
+when invoking an interactive shell or when reading input
+through a pipe.
 <DT><B>-D</B>
 
 <DD>
@@ -780,6 +793,12 @@ the time information.
 
 Each command in a pipeline is executed as a separate process (i.e., in a
 subshell).
+See
+<FONT SIZE=-1><B>COMMAND EXECUTION ENVIRONMENT</B></FONT>
+for a description of a subshell environment.
+If the <B>lastpipe</B> option is enabled using the <B>shopt</B> builtin
+(see the description of <B>shopt</B> below),
+the last element of a pipeline may be run by the shell process.
 <A NAME="lbAN">&nbsp;</A>
 <H4>Lists</H4>
 
@@ -829,8 +848,11 @@ If a command is terminated by the control operator
 <B>&amp;</B>,
 
 the shell executes the command in the <I>background</I>
-in a subshell.  The shell does not wait for the command to
-finish, and the return status is 0.  Commands separated by a
+in a subshell.
+The shell does not wait for the command to
+finish, and the return status is 0.
+These are referred to as <I>asynchronous</I> commands.
+Commands separated by a
 <B>;</B>
 
 are executed sequentially; the shell waits for each
@@ -855,7 +877,7 @@ An AND list has the form
 is executed if, and only if,
 <I>command1</I>
 
-returns an exit status of zero.
+returns an exit status of zero (success).
 <P>
 
 An OR list has the form
@@ -871,7 +893,7 @@ An OR list has the form
 
 <I>command2</I>
 
-is executed if and only if
+is executed if, and only if,
 <I>command1</I>
 
 returns a non-zero exit status.
@@ -958,7 +980,7 @@ to be matched as a string.
 An additional binary operator, <B>=~</B>, is available, with the same
 precedence as <B>==</B> and <B>!=</B>.
 When it is used, the string to the right of the operator is considered
-an extended regular expression and matched accordingly (as in <I>regex</I>(3)).
+a POSIX extended regular expression and matched accordingly (as in <I>regex</I>(3)).
 The return value is 0 if the string matches
 the pattern, and 1 otherwise.
 If the regular expression is syntactically incorrect, the conditional
@@ -1110,11 +1132,11 @@ or zero if no commands were executed.
 <DT><B>case</B> <I>word</I> <B>in</B> [ [(] <I>pattern</I> [ <B>|</B> <I>pattern</I> ] 
 <DD>
 A <B>case</B> command first expands <I>word</I>, and tries to match
-it against each <I>pattern</I> in turn, using the same matching rules
-as for pathname expansion (see
-<B>Pathname Expansion</B>
+it against each <I>pattern</I> in turn, using the matching rules
+described under
+<B>Pattern Matching</B>
 
-below).
+below.
 The <I>word</I> is expanded using tilde
 expansion, parameter and variable expansion, arithmetic expansion,
 command substitution, process substitution and quote removal.
@@ -1217,7 +1239,8 @@ command (see
 below).
 The file descriptors can be utilized as arguments to shell commands
 and redirections using standard word expansions.
-The file descriptors are not available in subshells.
+Other than those created to execute command and process substitutions,
+the file descriptors are not available in subshells.
 The process ID of the shell spawned to execute the coprocess is
 available as the value of the variable <I>NAME</I>_PID.
 The <B>wait</B>
@@ -1463,7 +1486,7 @@ question mark
 
 <DD>
 the eight-bit character whose value is the octal value <I>nnn</I>
-(one to three digits)
+(one to three octal digits)
 <DT><B>\x</B><I>HH</I>
 
 <DD>
@@ -1730,7 +1753,14 @@ is null, the parameters are joined without intervening separators.
 <DT><B>@</B>
 
 <DD>
-Expands to the positional parameters, starting from one.  When the
+Expands to the positional parameters, starting from one.
+In contexts where word splitting is performed, this expands each
+positional parameter to a separate word; if not within double
+quotes, these words are subject to word splitting.
+In contexts where word splitting is not performed,
+this expands to a single word
+with each positional parameter separated by a space.
+When the
 expansion occurs within double quotes, each parameter expands to a
 separate word.  That is, &quot;<B>$@</B>&quot; is equivalent to
 &quot;<B>$1</B>&quot; &quot;<B>$2</B>&quot; ...
@@ -1810,8 +1840,8 @@ as given by argument zero.
 At shell startup, set to the absolute pathname used to invoke the
 shell or shell script being executed as passed in the environment
 or argument list.
-Subsequently, expands to the last argument to the previous command,
-after expansion.
+Subsequently, expands to the last argument to the previous simple
+command executed in the foreground, after expansion.
 Also set to the full pathname used to invoke each command executed
 and placed in the environment exported to that command.
 When checking mail, this parameter holds the name of the mail file
@@ -1868,6 +1898,16 @@ This variable is read-only.
 Expands to the process ID of the current <B>bash</B> process.
 This differs from <B>$$</B> under certain circumstances, such as subshells
 that do not require <B>bash</B> to be re-initialized.
+Assignments to
+<FONT SIZE=-1><B>BASHPID</B>
+
+</FONT>
+have no effect.
+If
+<B>BASHPID</B>
+
+is unset, it loses its special properties, even if it is
+subsequently reset.
 <DT><B>BASH_ALIASES</B>
 
 <DD>
@@ -1903,7 +1943,10 @@ only when in extended debugging mode (see the description of the
 option to the
 <B>shopt</B>
 
-builtin below)
+builtin below).
+Setting <B>extdebug</B> after the shell has started to execute a script,
+or referencing this variable when <B>extdebug</B> is not set,
+may result in inconsistent values.
 <DT><B>BASH_ARGV</B>
 
 <DD>
@@ -1926,7 +1969,27 @@ only when in extended debugging mode
 option to the
 <B>shopt</B>
 
-builtin below)
+builtin below).
+Setting <B>extdebug</B> after the shell has started to execute a script,
+or referencing this variable when <B>extdebug</B> is not set,
+may result in inconsistent values.
+<DT><B>BASH_ARGV0</B>
+
+<DD>
+When referenced, this variable expands to the name of the shell or shell
+script (identical to
+<B>$0</B>;
+
+see the description of special parameter 0 above).
+Assignment to
+<B>BASH_ARGV0</B>
+
+causes the value assigned to also be assigned to <B>$0</B>.
+If
+<B>BASH_ARGV0</B>
+
+is unset, it loses its special properties, even if it is
+subsequently reset.
 <DT><B>BASH_CMDS</B>
 
 <DD>
@@ -2152,6 +2215,39 @@ Assignment to this variable will not change the current directory.
 If
 <FONT SIZE=-1><B>DIRSTACK</B>
 
+</FONT>
+is unset, it loses its special properties, even if it is
+subsequently reset.
+<DT><B>EPOCHREALTIME</B>
+
+<DD>
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see <I>time</I>(3)) as a floating point value
+with micro-second granularity.
+Assignments to
+<FONT SIZE=-1><B>EPOCHREALTIME</B>
+
+</FONT>
+are ignored.
+If
+<FONT SIZE=-1><B>EPOCHREALTIME</B>
+
+</FONT>
+is unset, it loses its special properties, even if it is
+subsequently reset.
+<DT><B>EPOCHSECONDS</B>
+
+<DD>
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see <I>time</I>(3)).
+Assignments to
+<FONT SIZE=-1><B>EPOCHSECONDS</B>
+
+</FONT>
+are ignored.
+If
+<FONT SIZE=-1><B>EPOCHSECONDS</B>
+
 </FONT>
 is unset, it loses its special properties, even if it is
 subsequently reset.
@@ -2562,7 +2658,7 @@ Similar to
 <FONT SIZE=-1><B>BASH_ENV</B>;
 
 </FONT>
-used when the shell is invoked in POSIX mode.
+used when the shell is invoked in <I>posix mode</I>.
 <DT><B>EXECIGNORE</B>
 
 <DD>
@@ -2612,9 +2708,9 @@ will cause the current command to abort.
 <DT><B>GLOBIGNORE</B>
 
 <DD>
-A colon-separated list of patterns defining the set of filenames to
+A colon-separated list of patterns defining the set of file names to
 be ignored by pathname expansion.
-If a filename matched by a pathname expansion pattern also matches one
+If a file name matched by a pathname expansion pattern also matches one
 of the patterns in
 <FONT SIZE=-1><B>GLOBIGNORE</B>,
 
@@ -2815,6 +2911,12 @@ startup file, overriding the default of
 
 </FONT>
 below).
+<DT><B>INSIDE_EMACS</B>
+
+<DD>
+If this variable appears in the environment when the shell starts,
+<B>bash</B> assumes that it is running inside an Emacs shell buffer
+and may disable line editing, depending on the value of <B>TERM</B>.
 <DT><B>LANG</B>
 
 <DD>
@@ -2971,6 +3073,8 @@ running, <B>bash</B> enables <I>posix mode</I>, as if the command
 <TT>set -o posix</TT>
 
 had been executed.
+When the shell enters <I>posix mode</I>, it sets this variable if it was
+not already set.
 <DT><B>PROMPT_COMMAND</B>
 
 <DD>
@@ -3035,6 +3139,7 @@ and the value is printed before each command
 <B>bash</B>
 
 displays during an execution trace.  The first character of
+the expanded value of
 <FONT SIZE=-1><B>PS4</B>
 
 </FONT>
@@ -3327,15 +3432,21 @@ The
 <B>unset</B>
 
 builtin is used to destroy arrays.  <B>unset</B> <I>name</I>[<I>subscript</I>]
-destroys the array element at index <I>subscript</I>.
+destroys the array element at index <I>subscript</I>,
+for both indexed and associative arrays.
 Negative subscripts to indexed arrays are interpreted as described above.
-Care must be taken to avoid unwanted side effects caused by pathname
-expansion.
+Unsetting the last element of an array variable does not unset the variable.
 <B>unset</B> <I>name</I>, where <I>name</I> is an array, or
 <B>unset</B> <I>name</I>[<I>subscript</I>], where
 <I>subscript</I> is <B>*</B> or <B>@</B>, removes the entire array.
 <P>
 
+When using a variable name with a subscript as an argument to a command,
+such as with <B>unset</B>, without using the word expansion syntax
+described above, the argument is subject to pathname expansion.
+If pathname expansion is not desired, the argument should be quoted.
+<P>
+
 The
 <B>declare</B>,
 
@@ -3413,10 +3524,11 @@ original word are removed unless they have been quoted themselves
 <P>
 
 Only brace expansion, word splitting, and pathname expansion
-can change the number of words of the expansion; other expansions
+can increase 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
-&quot;<B>$@</B>&quot; and &quot;<B>${</B><I>name</I><B>[@]}</B>&quot;
+&quot;<B>$@</B>&quot; and &quot;<B>${</B><I>name</I><B>[@]}</B>&quot;,
+and, in most cases, <B>$*</B> and <B>${</B><I>name</I><B>[*]}</B>
 as explained above (see
 <FONT SIZE=-1><B>PARAMETERS</B>).
 
@@ -3485,7 +3597,8 @@ Any incorrectly formed brace expansion is left unchanged.
 A <B>{</B> or <B>,</B> may be quoted with a backslash to prevent its
 being considered part of a brace expression.
 To avoid conflicts with parameter expansion, the string <B>${</B>
-is not considered eligible for brace expansion.
+is not considered eligible for brace expansion, and inhibits brace
+expansion until the closing <B>}</B>.
 <P>
 
 This construct is typically used as shorthand when the common
@@ -3617,6 +3730,16 @@ and
 
 </FONT>
 and the shell assigns the expanded value.
+<P>
+
+Bash also performs tilde expansion on words satisfying the conditions of
+variable assignments (as described above under
+<FONT SIZE=-1><B>PARAMETERS</B>)
+
+</FONT>
+when they appear as arguments to simple commands.
+Bash does not do this, except for the <I>declaration</I> commands listed
+above, when in <I>posix mode</I>.
 <A NAME="lbBB">&nbsp;</A>
 <H4>Parameter Expansion</H4>
 
@@ -3657,14 +3780,16 @@ The <I>parameter</I> is a shell parameter as described above
 
 If the first character of <I>parameter</I> is an exclamation point (<B>!</B>),
 and <I>parameter</I> is not a <I>nameref</I>,
-it introduces a level of variable indirection.
-<B>Bash</B> uses the value of the variable formed from the rest of
-<I>parameter</I> 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 <I>parameter</I> itself.
+it introduces a level of indirection.
+<B>Bash</B> uses the value formed by expanding the rest of
+<I>parameter</I> as the new <I>parameter</I>; this is then
+expanded and that value is used in the rest of the expansion, rather
+than the expansion of the original <I>parameter</I>.
 This is known as <I>indirect expansion</I>.
+The value is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
 If <I>parameter</I> is a nameref, this expands to the name of the
-variable referenced by <I>parameter</I> instead of performing the
+parameter referenced by <I>parameter</I> instead of performing the
 complete indirect expansion.
 The exceptions to this are the expansions of ${<B>!</B><I>prefix</I><B>*</B>} and
 ${<B>!</B><I>name</I>[<I>@</I>]} described below.
@@ -3848,7 +3973,14 @@ The
 <I>word</I>
 
 is expanded to produce a pattern just as in pathname
-expansion.  If the pattern matches the beginning of
+expansion, and matched against the expanded value of
+<I>parameter</I>
+
+using the rules described under
+<B>Pattern Matching</B>
+
+below.
+If the pattern matches the beginning of
 the value of
 <I>parameter</I>,
 
@@ -3885,7 +4017,13 @@ array in turn, and the expansion is the resultant list.
 
 <B>Remove matching suffix pattern</B>.
 The <I>word</I> is expanded to produce a pattern just as in
-pathname expansion.
+pathname expansion, and matched against the expanded value of
+<I>parameter</I>
+
+using the rules described under
+<B>Pattern Matching</B>
+
+below.
 If the pattern matches a trailing portion of the expanded value of
 <I>parameter</I>,
 
@@ -3919,9 +4057,13 @@ array in turn, and the expansion is the resultant list.
 <DT>${<I>parameter</I><B>/</B><I>pattern</I><B>/</B><I>string</I>}<DD>
 <B>Pattern substitution</B>.
 The <I>pattern</I> is expanded to produce a pattern just as in
-pathname expansion.
+pathname expansion,
 <I>Parameter</I> is expanded and the longest match of <I>pattern</I>
 against its value is replaced with <I>string</I>.
+The match is performed using the rules described under
+<B>Pattern Matching</B>
+
+below.
 If <I>pattern</I> begins with <B>/</B>, all matches of <I>pattern</I> are
 replaced with <I>string</I>.  Normally only the first match is replaced.
 If <I>pattern</I> begins with <B>#</B>, it must match at the beginning
@@ -4018,7 +4160,7 @@ format that can be reused as input.
 
 <DD>
 The expansion is a string that is the value of <I>parameter</I> with backslash
-escape sequences expanded as with the <B>$'...'</B> quoting mechansim.
+escape sequences expanded as with the <B>$'...'</B> quoting mechanism.
 <DT><B>P</B>
 
 <DD>
@@ -4059,7 +4201,7 @@ is an array variable subscripted with
 or
 <B>*</B>,
 
-the case modification operation is applied to each member of the
+the operation is applied to each member of the
 array in turn, and the expansion is the resultant list.
 <P>
 The result of the expansion is subject to word splitting and pathname
@@ -4354,12 +4496,27 @@ must be matched explicitly, unless the shell option
 <B>dotglob</B>
 
 is set.
-When matching a pathname, the slash character must always be
-matched explicitly.
+The filenames
+<B>``.''</B>
+
+and
+<B>``..''</B>
+
+must always be matched explicitly, even if
+<B>dotglob</B>
+
+is set.
 In other cases, the
 <B>``.''</B>
 
 character is not treated specially.
+When matching a pathname, the slash character must always be
+matched explicitly by a slash in the pattern, but in other matching
+contexts it can be matched by a special pattern character as described
+below under
+<FONT SIZE=-1><B>Pattern Matching</B>.
+
+</FONT>
 See the description of
 <B>shopt</B>
 
@@ -4384,14 +4541,14 @@ The
 <FONT SIZE=-1><B>GLOBIGNORE</B>
 
 </FONT>
-shell variable may be used to restrict the set of filenames matching a
+shell variable may be used to restrict the set of file names matching a
 <I>pattern</I>.
 
 If
 <FONT SIZE=-1><B>GLOBIGNORE</B>
 
 </FONT>
-is set, each matching filename that also matches one of the patterns in
+is set, each matching file name that also matches one of the patterns in
 <FONT SIZE=-1><B>GLOBIGNORE</B>
 
 </FONT>
@@ -4613,6 +4770,13 @@ Matches anything except one of the given patterns
 </DL></DL>
 
 
+<P>
+
+Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.
+Using separate matches against shorter strings, or using arrays of
+strings instead of a single long string, may be faster.
 <A NAME="lbBH">&nbsp;</A>
 <H4>Quote Removal</H4>
 
@@ -4659,6 +4823,9 @@ than or equal to 10 and assign it to <I>varname</I>.
 If &gt;&amp;- or &lt;&amp;- is preceded
 by {<I>varname</I>}, the value of <I>varname</I> defines the file
 descriptor to close.
+If {<I>varname</I>} is supplied, the redirection persists beyond
+the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 <P>
 
 In the following descriptions, if the file descriptor number is
@@ -5035,7 +5202,7 @@ A variant of here documents, the format is:
 <P>
 
 The <I>word</I> undergoes
-brace expansion, tilde expansion, parameter and variable expansion,
+tilde expansion, parameter and variable expansion,
 command substitution, arithmetic expansion, and quote removal.
 Pathname expansion and word splitting are not performed.
 The result is supplied as a single string, with a newline appended,
@@ -5250,9 +5417,10 @@ The rules concerning the definition and use of aliases are
 somewhat confusing.
 <B>Bash</B>
 
-always reads at least one complete line
-of input before executing any
-of the commands on that line.  Aliases are expanded when a
+always reads at least one complete line of input,
+and all lines that make up a compound command,
+before executing any of the commands on that line or the compound command.
+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.
@@ -5339,6 +5507,47 @@ Variables local to the function may be declared with the
 
 builtin command.  Ordinarily, variables and their values
 are shared between the function and its caller.
+If a variable is declared <B>local</B>, the variable's visible scope
+is restricted to that function and its children (including the functions
+it calls).
+Local variables &quot;shadow&quot; variables with the same name declared at
+previous scopes.
+For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+<P>
+
+The shell uses <I>dynamic scoping</I> to control a variable's visibility
+within functions.
+With dynamic scoping, visible variables and their values
+are a result of the sequence of function calls that caused execution
+to reach the current function.
+The value of a variable that a function sees depends
+on its value within its caller, if any, whether that caller is
+the &quot;global&quot; scope or another shell function.
+This is also the value that a local variable
+declaration &quot;shadows&quot;, and the value that is restored when the function
+returns.
+<P>
+
+For example, if a variable <I>var</I> is declared as local in function
+<I>func1</I>, and <I>func1</I> calls another function <I>func2</I>,
+references to <I>var</I> made from within <I>func2</I> will resolve to the
+local variable <I>var</I> from <I>func1</I>, shadowing any global variable
+named <I>var</I>.
+<P>
+
+The <B>unset</B> builtin also acts using the same dynamic scope: if a
+variable is local to the current scope, <B>unset</B> will unset it;
+otherwise the unset will refer to the variable found in any calling scope
+as described above.
+If a variable at the current local scope is unset, it will remain so
+until it is reset in that scope or until the function returns.
+Once the function returns, any instance of the variable at a previous
+scope will become visible.
+If the unset acts on a variable at a previous scope, any instance of a
+variable with that name that had been shadowed will become visible.
 <P>
 
 The <B>FUNCNEST</B> variable, if set to a numeric value greater
@@ -5397,10 +5606,6 @@ the
 <B>unset</B>
 
 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.
 <P>
 
 Functions may be recursive.
@@ -5428,14 +5633,14 @@ The levels are listed in order of decreasing precedence.
 
 <DD>
 variable post-increment and post-decrement
-<DT><B>++</B><I>id</I> --<I>id</I>
-
-<DD>
-variable pre-increment and pre-decrement
 <DT><B>- +</B>
 
 <DD>
 unary minus and plus
+<DT><B>++</B><I>id</I> --<I>id</I>
+
+<DD>
+variable pre-increment and pre-decrement
 <DT><B>! ~</B>
 
 <DD>
@@ -5537,6 +5742,11 @@ rules above.
 Conditional expressions are used by the <B>[[</B> compound command and
 the <B>test</B> and <B>[</B> builtin commands to test file attributes
 and perform string and arithmetic comparisons.
+The <B>test</B> abd <B>[</B> commands determine their behavior based on
+the number of arguments; see the descriptions of those commands for any
+other command-specific actions.
+<P>
+
 Expressions are formed from the following unary or binary primaries.
 <B>Bash</B> handles several filenames specially when they are used in
 expressions.
@@ -5742,6 +5952,17 @@ and
 <I>arg2</I>
 
 may be positive or negative integers.
+When used with the <B>[[</B> command,
+<I>Arg1</I>
+
+and
+<I>Arg2</I>
+
+are evaluated as arithmetic expressions  (see
+<FONT SIZE=-1><B>ARITHMETIC EVALUATION</B>
+
+</FONT>
+above).
 
 </DL>
 <A NAME="lbBX">&nbsp;</A>
@@ -5834,9 +6055,10 @@ A full search of the directories in
 is performed only if the command is not found in the hash table.
 If the search is unsuccessful, the shell searches for a defined shell
 function named <B>command_not_found_handle</B>.
-If that function exists, it is invoked with the original command and
+If that function exists, it is invoked in a separate execution environment
+with the original command and
 the original command's arguments as its arguments, and the function's
-exit status becomes the exit status of thshell.
+exit status becomes the exit status of that subshell.
 If that function is not defined, the shell prints an error
 message and returns an exit status of 127.
 <P>
@@ -5951,7 +6173,7 @@ cannot affect the shell's execution environment.
 <P>
 
 Subshells spawned to execute command substitutions inherit the value of
-the <B>-e</B> option from the parent shell.  When not in <I>posix</I> mode,
+the <B>-e</B> option from the parent shell.  When not in <I>posix mode</I>,
 <B>bash</B> clears the <B>-e</B> option in such subshells.
 <P>
 
@@ -6427,6 +6649,12 @@ command may then be used to inspect their status.
 If a second attempt to exit is made without an intervening command,
 the shell does not print another warning, and any stopped
 jobs are terminated.
+<P>
+
+When the shell is waiting for a job or process using the <B>wait</B>
+builtin, and job control is enabled, <B>wait</B> will return when the
+job changes state. The <B>-f</B> option will force <B>wait</B> to wait
+until the job or process terminates before returning.
 <A NAME="lbCE">&nbsp;</A>
 <H3>PROMPTING</H3>
 
@@ -6445,11 +6673,20 @@ when it needs more input to complete a command.
 <B>Bash</B>
 
 displays
-<B>PS0</B>
+<FONT SIZE=-1><B>PS0</B>
 
+</FONT>
 after it reads a command but before executing it.
 <B>Bash</B>
 
+displays
+<FONT SIZE=-1><B>PS4</B>
+
+</FONT>
+as described above
+before tracing each command when the <B>-x</B> option is enabled.
+<B>Bash</B>
+
 allows these prompt strings to be customized by inserting a number of
 backslash-escaped special characters that are decoded as follows:
 <DL COMPACT><DT><DD>
@@ -7134,6 +7371,17 @@ can be set to either
 or
 <B>vi</B>.
 
+<DT><B>emacs-mode-string (@)</B>
+
+<DD>
+If the <I>show-mode-in-prompt</I> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active.  The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \1 and \2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
 <DT><B>enable-bracketed-paste (Off)</B>
 
 <DD>
@@ -7217,16 +7465,6 @@ the value of
 <B>editing-mode</B>
 
 also affects the default keymap.
-<DT><B>emacs-mode-string (@)</B>
-
-<DD>
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active.  The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the \1 and \2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
 <DT><B>keyseq-timeout (500)</B>
 
 <DD>
@@ -7320,9 +7558,9 @@ of ringing the bell.
 <DT><B>show-mode-in-prompt (Off)</B>
 
 <DD>
-If set to <B>On</B>, add a character to the beginning of the prompt
-indicating the editing mode: emacs (@), vi command (:) or vi
-insertion (+).
+If set to <B>On</B>, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., <I>emacs-mode-string</I>).
 <DT><B>skip-completed-text (Off)</B>
 
 <DD>
@@ -7335,7 +7573,8 @@ following the cursor are not duplicated.
 <DT><B>vi-cmd-mode-string ((cmd))</B>
 
 <DD>
-This string is displayed immediately before the last line of the primary
+If the <I>show-mode-in-prompt</I> variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in command mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -7346,7 +7585,8 @@ sequence into the mode string.
 <DT><B>vi-ins-mode-string ((ins))</B>
 
 <DD>
-This string is displayed immediately before the last line of the primary
+If the <I>show-mode-in-prompt</I> variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in insertion mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -7378,8 +7618,9 @@ The
 
 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.
+readline.  The text of the test, after any comparison operator,
+<BR>&nbsp;extends&nbsp;to&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;line;
+unless otherwise noted, no characters are required to isolate it.
 <DL COMPACT><DT><DD>
 <DL COMPACT>
 <DT><B>mode</B><DD>
@@ -7406,6 +7647,33 @@ and
 <I>sun-cmd</I>,
 
 for instance.
+<DT><B>version</B><DD>
+The <B>version</B> test may be used to perform comparisons against
+specific readline versions.
+The <B>version</B> expands to the current readline version.
+The set of comparison operators includes
+<B>=</B>,
+
+(and
+<B>==</B>),
+
+<B>!=</B>,
+
+<B>&lt;=</B>,
+
+<B>&gt;=</B>,
+
+<B>&lt;</B>,
+
+and
+<B>&gt;</B>.
+
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., <B>7.1</B>). If the minor version is omitted, it
+is assumed to be <B>0</B>.
+The operator may be separated from the string <B>version</B>   
+and from the version number argument by whitespace.
 <DT><B>application</B><DD>
 The <B>application</B> construct is used to include
 application-specific settings.  Each program using the readline
@@ -7425,6 +7693,15 @@ key sequence that quotes the current or previous word in <B>bash</B>:
 
 </DL>
 
+<DT><I>variable</I><DD>
+The <I>variable</I> construct provides simple equality tests for readline
+variables and values.
+The permitted comparison operators are <I>=</I>, <I>==</I>, and <I>!=</I>.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <I>on</I> and <I>off</I>.
 </DL></DL>
 
 <DT><B>$endif</B><DD>
@@ -7554,6 +7831,21 @@ Words are delimited by non-quoted shell metacharacters.
 <DD>
 Move back to the start of the current or previous word.
 Words are delimited by non-quoted shell metacharacters.
+<DT><B>previous-screen-line</B>
+
+<DD>
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not  
+greater than the length of the prompt plus the screen width.
+<DT><B>next-screen-line</B>
+
+<DD>
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
 <DT><B>clear-screen (C-l)</B>
 
 <DD>
@@ -7634,6 +7926,21 @@ This is a non-incremental search.
 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.
+<DT><B>history-substring-search-backward</B>
+
+<DD>
+Search backward through the history for the string of characters   
+between the start of the current line and the current cursor
+position (the <I>point</I>).
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+<DT><B>history-substring-search-forward</B>
+
+<DD>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
 <DT><B>yank-nth-arg (M-C-y)</B>
 
 <DD>
@@ -7710,9 +8017,10 @@ A synonym for <B>yank-last-arg</B>.
 
 <DD>
 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.
-<DT><B>edit-and-execute-command (C-xC-e)</B>
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+<DT><B>edit-and-execute-command (C-x C-e)</B>
 
 <DD>
 Invoke an editor on the current command line, and execute the result as shell
@@ -8124,11 +8432,12 @@ Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 <B>bell-style</B>).
 
-<DT><B>do-uppercase-version (M-a, M-b, M-</B><I>x</I>, ...)
+<DT><B>do-lowercase-version (M-A, M-B, M-</B><I>x</I>, ...)
 
 <DD>
-If the metafied character <I>x</I> is lowercase, run the command
-that is bound to the corresponding uppercase character.
+If the metafied character <I>x</I> is uppercase, run the command
+that is bound to the corresponding metafied lowercase character. 
+The behavior is undefined if <I>x</I> is already lowercase. 
 <DT><B>prefix-meta (ESC)</B>
 
 <DD>
@@ -8281,6 +8590,9 @@ If no compspec is found for the full pathname, an attempt is made to
 find a compspec for the portion following the final slash.
 If those searches do not result in a compspec, any compspec defined with
 the <B>-D</B> option to <B>complete</B> is used as the default.
+If there is no default compspec, <B>bash</B> attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion.
 <P>
 
 Once a compspec has been found, it is used to generate the list of
@@ -8542,7 +8854,7 @@ If <B>HISTFILESIZE</B> is unset, or set to null, a non-numeric value,
 or a numeric value less than zero, the history file is not truncated.
 When the history file is read,
 lines beginning with the history comment character followed immediately
-by a digit are interpreted as timestamps for the preceding history line.
+by a digit are interpreted as timestamps for the following history line.
 These timestamps are optionally displayed depending on the value of the
 <FONT SIZE=-1><B>HISTTIMEFORMAT</B>
 
@@ -8652,7 +8964,7 @@ for information on setting and unsetting shell options.
 
 The shell supports a history expansion feature that
 is similar to the history expansion in
-<B>csh.</B>
+<B>csh</B>.
 
 This section describes what syntax features are available.  This
 feature is enabled by default for interactive shells, and can be
@@ -8677,7 +8989,9 @@ fix errors in previous commands quickly.
 <P>
 
 History expansion is performed immediately after a complete line
-is read, before the shell breaks it into words.
+is read, before the shell breaks it into words, and is performed
+on each line individually without taking quoting on previous lines into
+account.
 It takes place in two parts.
 The first is to determine which line from the history list
 to use during substitution.
@@ -9035,7 +9349,7 @@ accepts
 <B>--</B>
 
 to signify the end of the options.
-The <B>:</B>, <B>true</B>, <B>false</B>, and <B>test</B> builtins
+The <B>:</B>, <B>true</B>, <B>false</B>, and <B>test</B>/<B>[</B> builtins
 do not accept options and do not treat <B>--</B> specially.
 The <B>exit</B>, <B>logout</B>, <B>return</B>,
 <B>break</B>, <B>continue</B>, <B>let</B>,
@@ -9482,12 +9796,12 @@ will be displayed.
 <P>
 The return value is true unless an invalid option is supplied, or no
 matches were generated.
-<DT><B>complete</B> [<B>-abcdefgjksuv</B>] [<B>-o</B> <I>comp-option</I>] [<B>-DE</B>] [<B>-A</B> <I>action</I>] [<B>-G</B> <I>globpat</I>] [<B>-W</B> <I>wordlist</I>] [<B>-F</B> <I>function</I>] [<B>-C</B> <I>command</I>]<DD>
+<DT><B>complete</B> [<B>-abcdefgjksuv</B>] [<B>-o</B> <I>comp-option</I>] [<B>-DEI</B>] [<B>-A</B> <I>action</I>] [<B>-G</B> <I>globpat</I>] [<B>-W</B> <I>wordlist</I>] [<B>-F</B> <I>function</I>] [<B>-C</B> <I>command</I>]<DD>
 <BR>
 
 [<B>-X</B> <I>filterpat</I>] [<B>-P</B> <I>prefix</I>] [<B>-S</B> <I>suffix</I>] <I>name</I> [<I>name ...</I>]
 
-<DT><B>complete</B> <B>-pr</B> [<B>-DE</B>] [<I>name</I> ...]<DD>
+<DT><B>complete</B> <B>-pr</B> [<B>-DEI</B>] [<I>name</I> ...]<DD>
 
 Specify how arguments to each <I>name</I> should be completed.
 If the <B>-p</B> option is supplied, or if no options are supplied,
@@ -9496,12 +9810,21 @@ them to be reused as input.
 The <B>-r</B> option removes a completion specification for
 each <I>name</I>, or, if no <I>name</I>s are supplied, all
 completion specifications.
-The <B>-D</B> option indicates that the remaining options and actions should
+The <B>-D</B> option indicates that other supplied options and actions should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The <B>-E</B> option indicates that the remaining options and actions should
+The <B>-E</B> option indicates that other supplied options and actions should
 apply to ``empty'' command completion; that is, completion attempted on a
 blank line.
+The <B>-I</B> option indicates that other supplied options and actions should
+apply to completion on the inital non-assignment word on the line, or after
+a command delimiter such as <B>;</B> or <B>|</B>, which is usually command
+name completion.
+If multiple options are supplied, the <B>-D</B> option takes precedence
+over <B>-E</B>, and both take precedence over <B>-I</B>.
+If any of <B>-D</B>, <B>-E</B>, or <B>-I</B> are supplied, any other
+<I>name</I> arguments are ignored; these completions only apply to the case
+specified by the option.
 <P>
 The process of applying these completion specifications when word completion
 is attempted is described above under <B>Programmable Completion</B>.
@@ -9705,6 +10028,13 @@ The <I>wordlist</I> is split using the characters in the
 
 </FONT>
 special variable as delimiters, and each resultant word is expanded.
+Shell quoting is honored within <I>wordlist</I>,
+in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of
+<FONT SIZE=-1><B>IFS</B>.
+
+</FONT>
 The possible completions are the members of the resultant list which
 match the word being completed.
 <DT><B>-X</B> <I>filterpat</I><DD>
@@ -9725,7 +10055,7 @@ a <I>name</I> for which no specification exists, or
 an error occurs adding a completion specification.
 </DL>
 
-<DT><B>compopt</B> [<B>-o</B> <I>option</I>] [<B>-DE</B>] [<B>+o</B> <I>option</I>] [<I>name</I>]<DD>
+<DT><B>compopt</B> [<B>-o</B> <I>option</I>] [<B>-DEI</B>] [<B>+o</B> <I>option</I>] [<I>name</I>]<DD>
 Modify completion options for each <I>name</I> according to the
 <I>option</I>s, or for the
 currently-executing completion if no <I>name</I>s are supplied.
@@ -9733,12 +10063,16 @@ If no <I>option</I>s are given, display the completion options for each
 <I>name</I> or the current completion.
 The possible values of <I>option</I> are those valid for the <B>complete</B>
 builtin described above.
-The <B>-D</B> option indicates that the remaining options should
+The <B>-D</B> option indicates that other supplied options should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The <B>-E</B> option indicates that the remaining options should
+The <B>-E</B> option indicates that other supplied options should
 apply to ``empty'' command completion; that is, completion attempted on a
 blank line.
+The <B>-I</B> option indicates that other supplied options should
+apply to completion on the inital non-assignment word on the line,
+or after a command delimiter such as <B>;</B> or <B>|</B>, which is usually
+command name completion.
 <P>
 The return value is true unless an invalid option is supplied, an attempt
 is made to modify the options for a <I>name</I> for which no completion
@@ -9889,8 +10223,8 @@ Mark <I>name</I>s for export to subsequent commands via the environment.
 
 Using `+' instead of `-'
 turns off the attribute instead,
-with the exceptions that <B>+a</B>
-may not be used to destroy an array variable and <B>+r</B> will not
+with the exceptions that <B>+a</B> and <B>+A</B>
+may not be used to destroy array variables and <B>+r</B> will not
 remove the readonly attribute.
 When used in a function,
 <B>declare</B>
@@ -10209,6 +10543,7 @@ unless the
 shell option
 is enabled.  In that case, it returns failure.
 An interactive shell returns failure if the file cannot be executed.
+A subshell exits unconditionally if <B>exec</B> fails.
 If
 <I>command</I>
 
@@ -10292,7 +10627,7 @@ where a negative number is used as an offset from the current
 command number).  If
 <I>last</I>
 
-is not specified it is set to
+is not specified, it is set to
 the current command for listing (so that
 
 <TT>fc -l -10</TT>
@@ -10303,7 +10638,7 @@ otherwise.
 If
 <I>first</I>
 
-is not specified it is set to the previous
+is not specified, it is set to the previous
 command for editing and -16 for listing.
 <P>
 The
@@ -10349,7 +10684,7 @@ echoed and executed.
 <P>
 In the second form, <I>command</I> is re-executed after each instance
 of <I>pat</I> is replaced by <I>rep</I>.
-<I>Command</I> is intepreted the same as <I>first</I> above.
+<I>Command</I> is interpreted the same as <I>first</I> above.
 A useful alias to use with this is
 
 <TT>r='fc -s'</TT>,
@@ -10621,6 +10956,7 @@ The return status is 0 unless no command matches
 
 <DT><B>history</B> <B>-c</B><DD>
 <DT><B>history -d</B> <I>offset</I><DD>
+<DT><B>history -d</B> <I>start</I>-<I>end</I><DD>
 <DT><B>history</B> <B>-anrw</B> [<I>filename</I>]<DD>
 <DT><B>history</B> <B>-p</B> <I>arg</I> [<I>arg ...</I>]<DD>
 <DT><B>history</B> <B>-s</B> <I>arg</I> [<I>arg ...</I>]<DD>
@@ -10661,6 +10997,14 @@ is used.  Options, if supplied, have the following meanings:
 Clear the history list by deleting all the entries.
 <DT><B>-d</B> <I>offset</I><DD>
 Delete the history entry at position <I>offset</I>.
+If <I>offset</I> is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of -1 refers to the current
+<B>history -d</B> command.
+<DT><B>-d</B> <I>start</I>-<I>end</I><DD>
+Delete the history entries between positions <I>start</I> and <I>end</I>,
+inclusive.  Positive and negative values for <I>start</I> and <I>end</I>
+are interpreted as described above.
 <DT><B>-a</B>
 
 <DD>
@@ -10935,6 +11279,8 @@ Options, if supplied, have the following meanings:
 <DD>
 The first character of <I>delim</I> is used to terminate each input line,
 rather than newline.
+If <I>delim</I> is the empty string, <B>mapfile</B> will terminate a line
+when it reads a NUL character.
 <DT><B>-n</B>
 
 <DD>
@@ -11250,6 +11596,8 @@ Other <I>name</I> arguments are ignored.
 <DD>
 The first character of <I>delim</I> is used to terminate the input line,
 rather than newline.
+If <I>delim</I> is the empty string, <B>read</B> will terminate a line
+when it reads a NUL character.
 <DT><B>-e</B>
 
 <DD>
@@ -11263,7 +11611,7 @@ is coming from a terminal,
 </FONT>
 above) is used to obtain the line.
 Readline uses the current (or default, if line editing was not previously
-active) editing settings.
+active) editing settings, but uses Readline's default filename completion.
 <DT><B>-i </B><I>text</I>
 
 <DD>
@@ -11301,7 +11649,7 @@ is displayed only if input is coming from a terminal.
 <DD>
 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
+In particular, a backslash-newline pair may not then be used as a line
 continuation.
 <DT><B>-s</B>
 
@@ -11409,7 +11757,7 @@ is omitted, the return status is that of the last command
 executed in the function body.
 If <B>return</B> is executed by a trap handler, the last command used to
 determine the status is the last command executed before the trap handler.
-if <B>return</B> is executed during a <B>DEBUG</B> trap, the last command
+If <B>return</B> is executed during a <B>DEBUG</B> trap, the last command
 used to determine the status is the last command executed by the trap
 handler before <B>return</B> was invoked.
 If
@@ -11443,7 +11791,7 @@ Without options, the name and value of each shell variable are displayed
 in a format that can be reused as input
 for setting or resetting the currently-set variables.
 Read-only variables cannot be reset.
-In <I>posix</I> mode, only shell variables are listed.
+In <I>posix mode</I>, only shell variables are listed.
 The output is sorted according to the current locale.
 When options are specified, they set or unset shell attributes.
 Any arguments remaining after option processing are treated
@@ -11970,7 +12318,8 @@ With no options, or with the
 <B>-p</B>
 
 option, a list of all settable options is displayed, with
-an indication of whether or not each is set.
+an indication of whether or not each is set;
+if <I>optnames</I> are supplied, the output is restricted to those options.
 The <B>-p</B> option causes output to be displayed in a form that
 may be reused as input.
 Other options have the following meanings:
@@ -12035,6 +12384,13 @@ The list of <B>shopt</B> options is:
 
 
 <DL COMPACT>
+<DT><B>assoc_expand_once</B>
+
+<DD>
+If set, the shell suppresses multiple evaluation of associative array
+subscripts during arithmetic expression evaluation, while executing
+builtins that can perform variable assignments,
+and while executing builtins that perform array dereferencing.
 <DT><B>autocd</B>
 
 <DD>
@@ -12083,8 +12439,8 @@ postpones exiting if any jobs are stopped.
 <DT><B>checkwinsize</B>
 
 <DD>
-If set, <B>bash</B> checks the window size after each command
-and, if necessary, updates the values of
+If set, <B>bash</B> checks the window size after each external (non-builtin)
+command and, if necessary, updates the values of
 <FONT SIZE=-1><B>LINES</B>
 
 </FONT>
@@ -12092,6 +12448,7 @@ and
 <FONT SIZE=-1><B>COLUMNS</B>.
 
 </FONT>
+This option is enabled by default.
 <DT><B>cmdhist</B>
 
 <DD>
@@ -12101,6 +12458,11 @@ If set,
 attempts to save all lines of a multiple-line
 command in the same history entry.  This allows
 easy re-editing of multi-line commands.
+This option is enabled by default, but only has an effect if command
+history is enabled, as described above under
+<FONT SIZE=-1><B>HISTORY</B>.
+
+</FONT>
 <DT><B>compat31</B>
 
 <DD>
@@ -12148,7 +12510,7 @@ interrupt; previous versions continue with the next command in the list.
 If set,
 <B>bash</B>,
 
-when in <I>posix</I> mode, treats a single quote in a double-quoted
+when in <I>posix mode</I>, treats a single quote in a double-quoted
 parameter expansion as a special character.  The single quotes must match
 (an even number) and the characters between the single quotes are considered
 quoted.  This is the behavior of posix mode through version 4.1.
@@ -12175,6 +12537,14 @@ to make them fatal errors that cause the shell to exit),
 and does not reset the
 loop state when a shell function is executed (this allows <B>break</B> or
 <B>continue</B> in a shell function to affect loops in the caller's context).
+<DT><B>compat44</B>
+
+<DD>
+If set,
+<B>bash</B>
+
+saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
+used, regardless of whether or not extended debugging mode is enabled.
 <DT><B>complete_fullquote</B>
 
 <DD>
@@ -12226,6 +12596,16 @@ If set,
 
 includes filenames beginning with a `.' in the results of pathname
 expansion.
+The filenames
+<B>``.''</B>
+
+and
+<B>``..''</B>
+
+must always be matched explicitly, even if
+<B>dotglob</B>
+
+is set.
 <DT><B>execfail</B>
 
 <DD>
@@ -12441,6 +12821,19 @@ If set, and the
 
 option is enabled, multi-line commands are saved to the history with
 embedded newlines rather than using semicolon separators where possible.
+<DT><B>localvar_inherit</B>
+
+<DD>
+If set, local variables inherit the value and attributes of a variable of
+the same name that exists at a previous scope before any new value is
+assigned.  The nameref attribute is not inherited.
+<DT><B>localvar_unset</B>
+
+<DD>
+If set, calling <B>unset</B> on local variables in previous function scopes
+marks them so subsequent lookups find them unset until that function
+returns. This is identical to the behavior of unsetting local variables
+at the current function scope.
 <DT><B>login_shell</B>
 
 <DD>
@@ -12510,6 +12903,13 @@ to expand to a null string, rather than themselves.
 If set, the programmable completion facilities (see
 <B>Programmable Completion</B> above) are enabled.
 This option is enabled by default.
+<DT><B>progcomp_alias</B>
+
+<DD>
+If set, and programmable completion is enabled, <B>bash</B> treats a command
+name that doesn't have any completions as a possible alias and attempts
+alias expansion. If it has an alias, <B>bash</B> attempts programmable
+completion using the command word resulting from the expanded alias.
 <DT><B>promptvars</B>
 
 <DD>
@@ -13106,7 +13506,7 @@ and
 <B>-u</B>,
 
 which are unscaled values;
-and, when in Posix mode,
+and, when in posix mode,
 <B>-c</B>
 
 and
@@ -13221,22 +13621,25 @@ subsequently reset.  The exit status is true unless a
 <I>name</I>
 
 is readonly.
-<DT><B>wait</B> [<B>-n</B>] [<I>n ...</I>]<DD>
+<DT><B>wait</B> [<B>-fn</B>] [<I>id ...</I>]<DD>
 Wait for each specified child process and return its termination status.
 Each
-<I>n</I>
+<I>id</I>
 
 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</I>
+<I>id</I>
 
 is not given, all currently active child processes
 are waited for, and the return status is zero.
 If the <B>-n</B> option is supplied, <B>wait</B> waits for any job to
 terminate and returns its exit status.
+If the <B>-f</B> option is supplied, and job control is enabled,
+<B>wait</B> forces <I>id</I> to terminate before returning its status,
+instead of returning when it changes status.
 If
-<I>n</I>
+<I>id</I>
 
 specifies a non-existent process or job, the return status is
 127.  Otherwise, the return status is the exit status of the last
@@ -13529,7 +13932,7 @@ There may be only one active coprocess at a time.
 <HR>
 <TABLE WIDTH=100%>
 <TR>
-<TH ALIGN=LEFT width=33%>GNU Bash 4.4<TH ALIGN=CENTER width=33%>2016 August 26<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>GNU Bash 5.0<TH ALIGN=CENTER width=33%>2018 December 7<TH ALIGN=RIGHT width=33%>BASH(1)
 </TR>
 </TABLE>
 <HR>
@@ -13635,6 +14038,6 @@ There may be only one active coprocess at a time.
 </DL>
 <HR>
 This document was created by man2html from bash.1.<BR>
-Time: 31 August 2016 10:24:30 EDT
+Time: 02 January 2019 09:14:47 EST
 </BODY>
 </HTML>
index fac67865204b0604e2db844495b4267d5f2a491c..39f32125f265cdd6489d99e4388636edf9909147 100644 (file)
@@ -1,13 +1,13 @@
-This is bash.info, produced by makeinfo version 6.1 from
+This is bash.info, produced by makeinfo version 6.5 from
 bashref.texi.
 
 This text is a brief description of the features that are present in the
-Bash shell (version 4.4, 7 September 2016).
+Bash shell (version 5.0, 7 December 2018).
 
-   This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 4.4.
+   This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.0.
 
-   Copyright (C) 1988-2016 Free Software Foundation, Inc.
+   Copyright (C) 1988-2018 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -27,11 +27,11 @@ Bash Features
 *************
 
 This text is a brief description of the features that are present in the
-Bash shell (version 4.4, 7 September 2016).  The Bash home page is
+Bash shell (version 5.0, 7 December 2018).  The Bash home page is
 <http://www.gnu.org/software/bash/>.
 
-   This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 4.4.
+   This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.0.
 
    Bash contains features that appear in other popular shells, and some
 features that only appear in Bash.  Some of the shells that Bash has
@@ -451,7 +451,7 @@ decoded as follows:
      question mark
 '\NNN'
      the eight-bit character whose value is the octal value NNN (one to
-     three digits)
+     three octal digits)
 '\xHH'
      the eight-bit character whose value is the hexadecimal value HH
      (one or two hex digits)
@@ -586,16 +586,20 @@ information.
    If the pipeline is not executed asynchronously (*note Lists::), the
 shell waits for all commands in the pipeline to complete.
 
-   Each command in a pipeline is executed in its own subshell (*note
-Command Execution Environment::).  The exit status of a pipeline is the
-exit status of the last command in the pipeline, unless the 'pipefail'
-option is enabled (*note The Set Builtin::).  If 'pipefail' is enabled,
-the pipeline's return status is the value of the last (rightmost)
-command to exit with a non-zero status, or zero if all commands exit
-successfully.  If the reserved word '!' precedes the pipeline, the exit
-status is the logical negation of the exit status as described above.
-The shell waits for all commands in the pipeline to terminate before
-returning a value.
+   Each command in a pipeline is executed in its own subshell, which is
+a separate process (*note Command Execution Environment::).  If the
+'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt
+Builtin::), the last element of a pipeline may be run by the shell
+process.
+
+   The exit status of a pipeline is the exit status of the last command
+in the pipeline, unless the 'pipefail' option is enabled (*note The Set
+Builtin::).  If 'pipefail' is enabled, the pipeline's return status is
+the value of the last (rightmost) command to exit with a non-zero
+status, or zero if all commands exit successfully.  If the reserved word
+'!' precedes the pipeline, the exit status is the logical negation of
+the exit status as described above.  The shell waits for all commands in
+the pipeline to terminate before returning a value.
 
 \1f
 File: bash.info,  Node: Lists,  Next: Compound Commands,  Prev: Pipelines,  Up: Shell Commands
@@ -615,11 +619,12 @@ commands, equivalent to a semicolon.
 
    If a command is terminated by the control operator '&', the shell
 executes the command asynchronously in a subshell.  This is known as
-executing the command in the BACKGROUND.  The shell does not wait for
-the command to finish, and the return status is 0 (true).  When job
-control is not active (*note Job Control::), the standard input for
-asynchronous commands, in the absence of any explicit redirections, is
-redirected from '/dev/null'.
+executing the command in the BACKGROUND, and these are referred to as
+ASYNCHRONOUS commands.  The shell does not wait for the command to
+finish, and the return status is 0 (true).  When job control is not
+active (*note Job Control::), the standard input for asynchronous
+commands, in the absence of any explicit redirections, is redirected
+from '/dev/null'.
 
    Commands separated by a ';' are executed sequentially; the shell
 waits for each command to terminate in turn.  The return status is the
@@ -633,7 +638,7 @@ executed with left associativity.
      COMMAND1 && COMMAND2
 
 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of
-zero.
+zero (success).
 
    An OR list has the form
      COMMAND1 || COMMAND2
@@ -656,11 +661,12 @@ File: bash.info,  Node: Compound Commands,  Next: Coprocesses,  Prev: Lists,  Up
 * Conditional Constructs::     Shell commands for conditional execution.
 * Command Grouping::           Ways to group commands.
 
-Compound commands are the shell programming constructs.  Each construct
-begins with a reserved word or control operator and is terminated by a
-corresponding reserved word or operator.  Any redirections (*note
-Redirections::) associated with a compound command apply to all commands
-within that compound command unless explicitly overridden.
+Compound commands are the shell programming language constructs.  Each
+construct begins with a reserved word or control operator and is
+terminated by a corresponding reserved word or operator.  Any
+redirections (*note Redirections::) associated with a compound command
+apply to all commands within that compound command unless explicitly
+overridden.
 
    In most cases a list of commands in a compound command's description
 may be separated from the rest of the command by one or more newlines,
@@ -705,14 +711,16 @@ syntax, it may be replaced with one or more newlines.
 
           for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done
 
-     Expand WORDS, and execute COMMANDS once for each member in the
-     resultant list, with NAME bound to the current member.  If 'in
-     WORDS' is not present, the 'for' command executes the COMMANDS once
-     for each positional parameter that is set, as if 'in "$@"' had been
-     specified (*note Special Parameters::).  The return status is the
-     exit status of the last command that executes.  If there are no
-     items in the expansion of WORDS, no commands are executed, and the
-     return status is zero.
+     Expand WORDS (*note Shell Expansions::), and execute COMMANDS once
+     for each member in the resultant list, with NAME bound to the
+     current member.  If 'in WORDS' is not present, the 'for' command
+     executes the COMMANDS once for each positional parameter that is
+     set, as if 'in "$@"' had been specified (*note Special
+     Parameters::).
+
+     The return status is the exit status of the last command that
+     executes.  If there are no items in the expansion of WORDS, no
+     commands are executed, and the return status is zero.
 
      An alternate form of the 'for' command is also supported:
 
@@ -761,23 +769,26 @@ File: bash.info,  Node: Conditional Constructs,  Next: Command Grouping,  Prev:
 'case'
      The syntax of the 'case' command is:
 
-          case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac
+          case WORD in
+              [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]...
+          esac
 
      'case' will selectively execute the COMMAND-LIST corresponding to
-     the first PATTERN that matches WORD.  If the 'nocasematch' shell
-     option (see the description of 'shopt' in *note The Shopt
-     Builtin::) is enabled, the match is performed without regard to the
-     case of alphabetic characters.  The '|' is used to separate
-     multiple patterns, and the ')' operator terminates a pattern list.
-     A list of patterns and an associated command-list is known as a
-     CLAUSE.
+     the first PATTERN that matches WORD.  The match is performed
+     according to the rules described below in *note Pattern Matching::.
+     If the 'nocasematch' shell option (see the description of 'shopt'
+     in *note The Shopt Builtin::) is enabled, the match is performed
+     without regard to the case of alphabetic characters.  The '|' is
+     used to separate multiple patterns, and the ')' operator terminates
+     a pattern list.  A list of patterns and an associated command-list
+     is known as a CLAUSE.
 
      Each clause must be terminated with ';;', ';&', or ';;&'.  The WORD
      undergoes tilde expansion, parameter expansion, command
-     substitution, arithmetic expansion, and quote removal before
-     matching is attempted.  Each PATTERN undergoes tilde expansion,
-     parameter expansion, command substitution, and arithmetic
-     expansion.
+     substitution, arithmetic expansion, and quote removal (*note Shell
+     Parameter Expansion::) before matching is attempted.  Each PATTERN
+     undergoes tilde expansion, parameter expansion, command
+     substitution, and arithmetic expansion.
 
      There may be an arbitrary number of 'case' clauses, each terminated
      by a ';;', ';&', or ';;&'.  The first pattern that matches
@@ -875,36 +886,36 @@ File: bash.info,  Node: Conditional Constructs,  Next: Command Grouping,  Prev:
      'shopt' in *note The Shopt Builtin::) is enabled, the match is
      performed without regard to the case of alphabetic characters.  The
      return value is 0 if the string matches ('==') or does not match
-     ('!=')the pattern, and 1 otherwise.  Any part of the pattern may be
-     quoted to force the quoted portion to be matched as a string.
+     ('!=') the pattern, and 1 otherwise.  Any part of the pattern may
+     be quoted to force the quoted portion to be matched as a string.
 
      An additional binary operator, '=~', is available, with the same
      precedence as '==' and '!='.  When it is used, the string to the
-     right of the operator is considered an extended regular expression
-     and matched accordingly (as in regex3)).  The return value is 0 if
-     the string matches the pattern, and 1 otherwise.  If the regular
-     expression is syntactically incorrect, the conditional expression's
-     return value is 2.  If the 'nocasematch' shell option (see the
-     description of 'shopt' in *note The Shopt Builtin::) is enabled,
-     the match is performed without regard to the case of alphabetic
-     characters.  Any part of the pattern may be quoted to force the
-     quoted portion to be matched as a string.  Bracket expressions in
-     regular expressions must be treated carefully, since normal quoting
-     characters lose their meanings between brackets.  If the pattern is
-     stored in a shell variable, quoting the variable expansion forces
-     the entire pattern to be matched as a string.  Substrings matched
-     by parenthesized subexpressions within the regular expression are
-     saved in the array variable 'BASH_REMATCH'.  The element of
-     'BASH_REMATCH' with index 0 is the portion of the string matching
-     the entire regular expression.  The element of 'BASH_REMATCH' with
-     index N is the portion of the string matching the Nth parenthesized
-     subexpression.
+     right of the operator is considered a POSIX extended regular
+     expression and matched accordingly (as in regex3)).  The return
+     value is 0 if the string matches the pattern, and 1 otherwise.  If
+     the regular expression is syntactically incorrect, the conditional
+     expression's return value is 2.  If the 'nocasematch' shell option
+     (see the description of 'shopt' in *note The Shopt Builtin::) is
+     enabled, the match is performed without regard to the case of
+     alphabetic characters.  Any part of the pattern may be quoted to
+     force the quoted portion to be matched as a string.  Bracket
+     expressions in regular expressions must be treated carefully, since
+     normal quoting characters lose their meanings between brackets.  If
+     the pattern is stored in a shell variable, quoting the variable
+     expansion forces the entire pattern to be matched as a string.
+     Substrings matched by parenthesized subexpressions within the
+     regular expression are saved in the array variable 'BASH_REMATCH'.
+     The element of 'BASH_REMATCH' with index 0 is the portion of the
+     string matching the entire regular expression.  The element of
+     'BASH_REMATCH' with index N is the portion of the string matching
+     the Nth parenthesized subexpression.
 
      For example, the following will match a line (stored in the shell
      variable LINE) if there is a sequence of characters in the value
      consisting of any number, including zero, of space characters, zero
      or one instances of 'a', then a 'b':
-          [[ $line =~ [[:space:]]*(a)?b ]]
+          [[ $line =~ [[:space:]]*?(a)b ]]
 
      That means values like 'aab' and ' aaaaaab' will match, as will a
      line containing a 'b' anywhere in its value.
@@ -917,7 +928,7 @@ File: bash.info,  Node: Conditional Constructs,  Next: Command Grouping,  Prev:
      to the shell's quote removal.  Using a shell variable to store the
      pattern decreases these problems.  For example, the following is
      equivalent to the above:
-          pattern='[[:space:]]*(a)?b'
+          pattern='[[:space:]]*?(a)b'
           [[ $line =~ $pattern ]]
 
      If you want to match a character that's special to the regular
@@ -1030,7 +1041,8 @@ a file descriptor in the executing shell, and that file descriptor is
 assigned to 'NAME'[1].  This pipe is established before any redirections
 specified by the command (*note Redirections::).  The file descriptors
 can be utilized as arguments to shell commands and redirections using
-standard word expansions.  The file descriptors are not available in
+standard word expansions.  Other than those created to execute command
+and process substitutions, the file descriptors are not available in
 subshells.
 
    The process ID of the shell spawned to execute the coprocess is
@@ -1094,7 +1106,8 @@ read from a file (in this case, filenames listed one per line):
        done < file | process-output
 
 with a more compact syntax reminiscent of lambdas:
-     cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
+     cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
+                process-output
 
    Parallel provides a built-in mechanism to remove filename extensions,
 which lends itself to batch file transformations or renaming:
@@ -1109,17 +1122,25 @@ take arguments from the command line; the above can also be written as
 
    If a command generates output, you may want to preserve the input
 order in the output.  For instance, the following command
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
+     {
+         echo foss.org.my ;
+         echo debian.org ;
+         echo freenetproject.org ;
+     } | parallel traceroute
 will display as output the traceroute invocation that finishes first.
 Adding the '-k' option
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
+     {
+         echo foss.org.my ;
+         echo debian.org ;
+         echo freenetproject.org ;
+     } | parallel -k traceroute
 will ensure that the output of 'traceroute foss.org.my' is displayed
 first.
 
    Finally, Parallel can be used to run a sequence of shell commands in
 parallel, similar to 'cat file | bash'.  It is not uncommon to take a
 list of filenames, create a series of shell commands to operate on them,
-and feed that list of commnds to a shell.  Parallel can speed this up.
+and feed that list of commands to a shell.  Parallel can speed this up.
 Assuming that 'file' contains a list of shell commands, one per line,
 
      parallel -j 10 < file
@@ -1210,7 +1231,57 @@ last command executed before the 'return'.
 
    Variables local to the function may be declared with the 'local'
 builtin.  These variables are visible only to the function and the
-commands it invokes.
+commands it invokes.  This is particularly important when a shell
+function calls other functions.
+
+   Local variables "shadow" variables with the same name declared at
+previous scopes.  For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+
+   The shell uses DYNAMIC SCOPING to control a variable's visibility
+within functions.  With dynamic scoping, visible variables and their
+values are a result of the sequence of function calls that caused
+execution to reach the current function.  The value of a variable that a
+function sees depends on its value within its caller, if any, whether
+that caller is the "global" scope or another shell function.  This is
+also the value that a local variable declaration "shadows", and the
+value that is restored when the function returns.
+
+   For example, if a variable VAR is declared as local in function
+FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
+from within FUNC2 will resolve to the local variable VAR from FUNC1,
+shadowing any global variable named VAR.
+
+   The following script demonstrates this behavior.  When executed, the
+script displays
+
+     In func2, var = func1 local
+
+     func1()
+     {
+         local var='func1 local'
+         func2
+     }
+
+     func2()
+     {
+         echo "In func2, var = $var"
+     }
+
+     var=global
+     func1
+
+   The 'unset' builtin also acts using the same dynamic scope: if a
+variable is local to the current scope, 'unset' will unset it; otherwise
+the unset will refer to the variable found in any calling scope as
+described above.  If a variable at the current local scope is unset, it
+will remain so until it is reset in that scope or until the function
+returns.  Once the function returns, any instance of the variable at a
+previous scope will become visible.  If the unset acts on a variable at
+a previous scope, any instance of a variable with that name that had
+been shadowed will become visible.
 
    Function names and definitions may be listed with the '-f' option to
 the 'declare' ('typeset') builtin command (*note Bash Builtins::).  The
@@ -1218,10 +1289,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::).  The
 (and optionally the source file and line number, if the 'extdebug' shell
 option is enabled).  Functions may be exported so that subshells
 automatically have them defined with the '-f' option to the 'export'
-builtin (*note Bourne Shell Builtins::).  Note that shell functions and
-variables with the same name may result in multiple identically-named
-entries in the environment passed to the shell's children.  Care should
-be taken in cases where this may cause a problem.
+builtin (*note Bourne Shell Builtins::).
 
    Functions may be recursive.  The 'FUNCNEST' variable may be used to
 limit the depth of the function call stack and restrict the number of
@@ -1350,15 +1418,21 @@ only be referenced; assignment to them is not allowed.
      is null, the parameters are joined without intervening separators.
 
 '@'
-     ($@) Expands to the positional parameters, starting from one.  When
-     the expansion occurs within double quotes, each parameter expands
-     to a separate word.  That is, '"$@"' is equivalent to '"$1" "$2"
-     ...'.  If the double-quoted expansion occurs within a word, the
-     expansion of the first parameter is joined with the beginning part
-     of the original word, and the expansion of the last parameter is
-     joined with the last part of the original word.  When there are no
-     positional parameters, '"$@"' and '$@' expand to nothing (i.e.,
-     they are removed).
+     ($@) Expands to the positional parameters, starting from one.  In
+     contexts where word splitting is performed, this expands each
+     positional parameter to a separate word; if not within double
+     quotes, these words are subject to word splitting.  In contexts
+     where word splitting is not performed, this expands to a single
+     word with each positional parameter separated by a space.  When the
+     expansion occurs within double quotes, and word splitting is
+     performed, each parameter expands to a separate word.  That is,
+     '"$@"' is equivalent to '"$1" "$2" ...'.  If the double-quoted
+     expansion occurs within a word, the expansion of the first
+     parameter is joined with the beginning part of the original word,
+     and the expansion of the last parameter is joined with the last
+     part of the original word.  When there are no positional
+     parameters, '"$@"' and '$@' expand to nothing (i.e., they are
+     removed).
 
 '#'
      ($#) Expands to the number of positional parameters in decimal.
@@ -1395,10 +1469,11 @@ only be referenced; assignment to them is not allowed.
      ($_, an underscore.)  At shell startup, set to the absolute
      pathname used to invoke the shell or shell script being executed as
      passed in the environment or argument list.  Subsequently, expands
-     to the last argument to the previous command, after expansion.
-     Also set to the full pathname used to invoke each command executed
-     and placed in the environment exported to that command.  When
-     checking mail, this parameter holds the name of the mail file.
+     to the last argument to the previous simple command executed in the
+     foreground, after expansion.  Also set to the full pathname used to
+     invoke each command executed and placed in the environment exported
+     to that command.  When checking mail, this parameter holds the name
+     of the mail file.
 
 \1f
 File: bash.info,  Node: Shell Expansions,  Next: Redirections,  Prev: Shell Parameters,  Up: Basic Shell Features
@@ -1447,10 +1522,10 @@ original word are removed unless they have been quoted themselves (QUOTE
 REMOVAL).
 
    Only brace expansion, word splitting, and filename expansion can
-change the number of words of the expansion; other expansions expand a
+increase the number of words of the expansion; other expansions expand a
 single word to a single word.  The only exceptions to this are the
-expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"'
-(*note Arrays::).
+expansions of '"$@"' and '$*' (*note Special Parameters::), and
+'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::).
 
    After all expansions, 'quote removal' (*note Quote Removal::) is
 performed.
@@ -1492,9 +1567,7 @@ each term.  The default increment is 1 or -1 as appropriate.
    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 '${' is not
-considered eligible for brace expansion.
+to the context of the expansion or the text between the braces.
 
    A correctly-formed brace expansion must contain unquoted opening and
 closing braces, and at least one unquoted comma or a valid sequence
@@ -1503,7 +1576,7 @@ expression.  Any incorrectly formed brace expansion is left unchanged.
    A { or ',' may be quoted with a backslash to prevent its being
 considered part of a brace expression.  To avoid conflicts with
 parameter expansion, the string '${' is not considered eligible for
-brace expansion.
+brace expansion, and inhibits brace expansion until the closing '}'..
 
    This construct is typically used as shorthand when the common prefix
 of the strings to be generated is longer than in the above example:
@@ -1574,6 +1647,11 @@ assigns the expanded value.
 '~-N'
      The string that would be displayed by 'dirs -N'
 
+   Bash also performs tilde expansion on words satisfying the conditions
+of variable assignments (*note Shell Parameters::) when they appear as
+arguments to simple commands.  Bash does not do this, except for the
+DECLARATION commands listed above, when in POSIX mode.
+
 \1f
 File: bash.info,  Node: Shell Parameter Expansion,  Next: Command Substitution,  Prev: Tilde Expansion,  Up: Shell Expansions
 
@@ -1599,16 +1677,17 @@ parameter with more than one digit, or when PARAMETER is followed by a
 character that is not to be interpreted as part of its name.
 
    If the first character of PARAMETER is an exclamation point (!), and
-PARAMETER is not a NAMEREF, it introduces a level of variable
-indirection.  Bash uses the value of the variable formed from the rest
-of PARAMETER as the name of the variable; this variable is then expanded
-and that value is used in the rest of the substitution, rather than the
-value of PARAMETER itself.  This is known as 'indirect expansion'.  If
-PARAMETER is a nameref, this expands to the name of the variable
-referenced by PARAMETER instead of performing the complete indirect
-expansion.  The exceptions to this are the expansions of ${!PREFIX*} and
-${!NAME[@]} described below.  The exclamation point must immediately
-follow the left brace in order to introduce indirection.
+PARAMETER is not a NAMEREF, it introduces a level of indirection.  Bash
+uses the value formed by expanding the rest of PARAMETER as the new
+PARAMETER; this is then expanded and that value is used in the rest of
+the expansion, rather than the expansion of the original PARAMETER.
+This is known as 'indirect expansion'.  The value is subject to tilde
+expansion, parameter expansion, command substitution, and arithmetic
+expansion.  If PARAMETER is a nameref, this expands to the name of the
+variable referenced by PARAMETER instead of performing the complete
+indirect expansion.  The exceptions to this are the expansions of
+${!PREFIX*} and ${!NAME[@]} described below.  The exclamation point must
+immediately follow the left brace in order to introduce indirection.
 
    In each of the cases below, WORD is subject to tilde expansion,
 parameter expansion, command substitution, and arithmetic expansion.
@@ -1668,7 +1747,7 @@ omitted, the operator tests only for existence.
      $ echo ${string:7}
      7890abcdefgh
      $ echo ${string:7:0}
-
+     
      $ echo ${string:7:2}
      78
      $ echo ${string:7:-2}
@@ -1676,7 +1755,7 @@ omitted, the operator tests only for existence.
      $ echo ${string: -7}
      bcdefgh
      $ echo ${string: -7:0}
-
+     
      $ echo ${string: -7:2}
      bc
      $ echo ${string: -7:-2}
@@ -1685,7 +1764,7 @@ omitted, the operator tests only for existence.
      $ echo ${1:7}
      7890abcdefgh
      $ echo ${1:7:0}
-
+     
      $ echo ${1:7:2}
      78
      $ echo ${1:7:-2}
@@ -1693,7 +1772,7 @@ omitted, the operator tests only for existence.
      $ echo ${1: -7}
      bcdefgh
      $ echo ${1: -7:0}
-
+     
      $ echo ${1: -7:2}
      bc
      $ echo ${1: -7:-2}
@@ -1702,7 +1781,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[0]:7}
      7890abcdefgh
      $ echo ${array[0]:7:0}
-
+     
      $ echo ${array[0]:7:2}
      78
      $ echo ${array[0]:7:-2}
@@ -1710,7 +1789,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[0]: -7}
      bcdefgh
      $ echo ${array[0]: -7:0}
-
+     
      $ echo ${array[0]: -7:2}
      bc
      $ echo ${array[0]: -7:-2}
@@ -1729,7 +1808,7 @@ omitted, the operator tests only for existence.
      $ echo ${@:7}
      7 8 9 0 a b c d e f g h
      $ echo ${@:7:0}
-
+     
      $ echo ${@:7:2}
      7 8
      $ echo ${@:7:-2}
@@ -1741,7 +1820,7 @@ omitted, the operator tests only for existence.
      $ echo ${@:0:2}
      ./bash 1
      $ echo ${@: -7:0}
-
+     
 
      If PARAMETER is an indexed array name subscripted by '@' or '*',
      the result is the LENGTH members of the array beginning with
@@ -1766,7 +1845,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[@]:0:2}
      0 1
      $ echo ${array[@]: -7:0}
-
+     
 
      Substring expansion applied to an associative array produces
      undefined results.
@@ -1803,22 +1882,23 @@ omitted, the operator tests only for existence.
 
 '${PARAMETER#WORD}'
 '${PARAMETER##WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion (*note Filename Expansion::).  If the pattern matches the
-     beginning of the expanded value of PARAMETER, then the result of
-     the expansion is the expanded value of PARAMETER with the shortest
-     matching pattern (the '#' case) or the longest matching pattern
-     (the '##' case) deleted.  If PARAMETER is '@' or '*', the pattern
-     removal operation is applied to each positional parameter in turn,
-     and the expansion is the resultant list.  If PARAMETER is an array
-     variable subscripted with '@' or '*', the pattern removal operation
-     is applied to each member of the array in turn, and the expansion
-     is the resultant list.
+     The WORD is expanded to produce a pattern and matched according to
+     the rules described below (*note Pattern Matching::).  If the
+     pattern matches the beginning of the expanded value of PARAMETER,
+     then the result of the expansion is the expanded value of PARAMETER
+     with the shortest matching pattern (the '#' case) or the longest
+     matching pattern (the '##' case) deleted.  If PARAMETER is '@' or
+     '*', the pattern removal operation is applied to each positional
+     parameter in turn, and the expansion is the resultant list.  If
+     PARAMETER is an array variable subscripted with '@' or '*', the
+     pattern removal operation is applied to each member of the array in
+     turn, and the expansion is the resultant list.
 
 '${PARAMETER%WORD}'
 '${PARAMETER%%WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion.  If the pattern matches a trailing portion of the
+     The WORD is expanded to produce a pattern and matched according to
+     the rules described below (*note Pattern Matching::).  If the
+     pattern matches If the pattern matches a trailing portion of the
      expanded value of PARAMETER, then the result of the expansion is
      the value of PARAMETER with the shortest matching pattern (the '%'
      case) or the longest matching pattern (the '%%' case) deleted.  If
@@ -1832,21 +1912,23 @@ omitted, the operator tests only for existence.
 
      The PATTERN is expanded to produce a pattern just as in filename
      expansion.  PARAMETER is expanded and the longest match of PATTERN
-     against its value is replaced with STRING.  If PATTERN begins with
-     '/', all matches of PATTERN are replaced with STRING.  Normally
-     only the first match is replaced.  If PATTERN begins with '#', it
-     must match at the beginning of the expanded value of PARAMETER.  If
-     PATTERN begins with '%', it must match at the end of the expanded
-     value of PARAMETER.  If STRING is null, matches of PATTERN are
-     deleted and the '/' following PATTERN may be omitted.  If the
-     'nocasematch' shell option (see the description of 'shopt' in *note
-     The Shopt Builtin::) is enabled, the match is performed without
-     regard to the case of alphabetic characters.  If PARAMETER is '@'
-     or '*', the substitution operation is applied to each positional
-     parameter in turn, and the expansion is the resultant list.  If
-     PARAMETER is an array variable subscripted with '@' or '*', the
-     substitution operation is applied to each member of the array in
-     turn, and the expansion is the resultant list.
+     against its value is replaced with STRING.  The match is performed
+     according to the rules described below (*note Pattern Matching::).
+     If PATTERN begins with '/', all matches of PATTERN are replaced
+     with STRING.  Normally only the first match is replaced.  If
+     PATTERN begins with '#', it must match at the beginning of the
+     expanded value of PARAMETER.  If PATTERN begins with '%', it must
+     match at the end of the expanded value of PARAMETER.  If STRING is
+     null, matches of PATTERN are deleted and the '/' following PATTERN
+     may be omitted.  If the 'nocasematch' shell option (see the
+     description of 'shopt' in *note The Shopt Builtin::) is enabled,
+     the match is performed without regard to the case of alphabetic
+     characters.  If PARAMETER is '@' or '*', the substitution operation
+     is applied to each positional parameter in turn, and the expansion
+     is the resultant list.  If PARAMETER is an array variable
+     subscripted with '@' or '*', the substitution operation is applied
+     to each member of the array in turn, and the expansion is the
+     resultant list.
 
 '${PARAMETER^PATTERN}'
 '${PARAMETER^^PATTERN}'
@@ -1881,7 +1963,7 @@ omitted, the operator tests only for existence.
      'E'
           The expansion is a string that is the value of PARAMETER with
           backslash escape sequences expanded as with the '$'...''
-          quoting mechansim.
+          quoting mechanism.
      'P'
           The expansion is a string that is the result of expanding the
           value of PARAMETER as if it were a prompt string (*note
@@ -2046,17 +2128,22 @@ performed without regard to the case of alphabetic characters.
 
    When a pattern is used for filename expansion, the character '.' at
 the start of a filename or immediately following a slash must be matched
-explicitly, unless the shell option 'dotglob' is set.  When matching a
-filename, the slash character must always be matched explicitly.  In
-other cases, the '.' character is not treated specially.
+explicitly, unless the shell option 'dotglob' is set.  The filenames '.'
+and '..' must always be matched explicitly, even if 'dotglob' is set.
+In other cases, the '.' character is not treated specially.
+
+   When matching a filename, the slash character must always be matched
+explicitly by a slash in the pattern, but in other matching contexts it
+can be matched by a special pattern character as described below (*note
+Pattern Matching::).
 
    See the description of 'shopt' in *note The Shopt Builtin::, for a
 description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob'
 options.
 
    The 'GLOBIGNORE' shell variable may be used to restrict the set of
-filenames matching a pattern.  If 'GLOBIGNORE' is set, each matching
-filename that also matches one of the patterns in 'GLOBIGNORE' is
+file names matching a pattern.  If 'GLOBIGNORE' is set, each matching
+file name that also matches one of the patterns in 'GLOBIGNORE' is
 removed from the list of matches.  If the 'nocaseglob' option is set,
 the matching against the patterns in 'GLOBIGNORE' is performed without
 regard to case.  The filenames '.' and '..' are always ignored when
@@ -2149,6 +2236,12 @@ of the following sub-patterns:
 '!(PATTERN-LIST)'
      Matches anything except one of the given patterns.
 
+   Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.  Using separate matches against shorter
+strings, or using arrays of strings instead of a single long string, may
+be faster.
+
 \1f
 File: bash.info,  Node: Quote Removal,  Prev: Filename Expansion,  Up: Shell Expansions
 
@@ -2180,7 +2273,9 @@ instead be preceded by a word of the form {VARNAME}.  In this case, for
 each redirection operator except >&- and <&-, the shell will allocate a
 file descriptor greater than 10 and assign it to {VARNAME}.  If >&- or
 <&- is preceded by {VARNAME}, the value of VARNAME defines the file
-descriptor to close.
+descriptor to close.  If {VARNAME} is supplied, the redirection persists
+beyond the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 
    In the following descriptions, if the file descriptor number is
 omitted, and the first character of the redirection operator is '<', the
@@ -2344,12 +2439,11 @@ fashion.
 A variant of here documents, the format is:
      [N]<<< WORD
 
-   The WORD undergoes brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, arithmetic expansion, and
-quote removal.  Pathname expansion and word splitting are not performed.
-The result is supplied as a single string, with a newline appended, to
-the command on its standard input (or file descriptor N if N is
-specified).
+   The WORD undergoes tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote removal.  Pathname
+expansion and word splitting are not performed.  The result is supplied
+as a single string, with a newline appended, to the command on its
+standard input (or file descriptor N if N is specified).
 
 3.6.8 Duplicating File Descriptors
 ----------------------------------
@@ -2486,11 +2580,11 @@ taken.
      '$PATH' is performed only if the command is not found in the hash
      table.  If the search is unsuccessful, the shell searches for a
      defined shell function named 'command_not_found_handle'.  If that
-     function exists, it is invoked with the original command and the
-     original command's arguments as its arguments, and the function's
-     exit status becomes the exit status of the shell.  If that function
-     is not defined, the shell prints an error message and returns an
-     exit status of 127.
+     function exists, it is invoked in a separate execution environment
+     with the original command and the original command's arguments as
+     its arguments, and the function's exit status becomes the exit
+     status of that subshell.  If that function is not defined, the
+     shell prints an error message and returns an exit status of 127.
 
   4. If the search is successful, or if the command name contains one or
      more slashes, the shell executes the named program in a separate
@@ -2783,13 +2877,13 @@ Completion Builtins::).
 
    Unless otherwise noted, each builtin command documented as accepting
 options preceded by '-' accepts '--' to signify the end of the options.
-The ':', 'true', 'false', and 'test' builtins do not accept options and
-do not treat '--' specially.  The 'exit', 'logout', 'return', 'break',
-'continue', 'let', and 'shift' builtins accept and process arguments
-beginning with '-' without requiring '--'.  Other builtins that accept
-arguments but are not specified as accepting options interpret arguments
-beginning with '-' as invalid options and require '--' to prevent this
-interpretation.
+The ':', 'true', 'false', and 'test'/'[' builtins do not accept options
+and do not treat '--' specially.  The 'exit', 'logout', 'return',
+'break', 'continue', 'let', and 'shift' builtins accept and process
+arguments beginning with '-' without requiring '--'.  Other builtins
+that accept arguments but are not specified as accepting options
+interpret arguments beginning with '-' as invalid options and require
+'--' to prevent this interpretation.
 
 \1f
 File: bash.info,  Node: Bourne Shell Builtins,  Next: Bash Builtins,  Up: Shell Builtin Commands
@@ -2904,10 +2998,11 @@ standard.
      If COMMAND cannot be executed for some reason, a non-interactive
      shell exits, unless the 'execfail' shell option is enabled.  In
      that case, it returns failure.  An interactive shell returns
-     failure if the file cannot be executed.  If no COMMAND is
-     specified, redirections may be used to affect the current shell
-     environment.  If there are no redirection errors, the return status
-     is zero; otherwise the return status is non-zero.
+     failure if the file cannot be executed.  A subshell exits
+     unconditionally if 'exec' fails.  If no COMMAND is specified,
+     redirections may be used to affect the current shell environment.
+     If there are no redirection errors, the return status is zero;
+     otherwise the return status is non-zero.
 
 'exit'
           exit [N]
@@ -2988,7 +3083,7 @@ standard.
      locations.  The '-d' option causes the shell to forget the
      remembered location of each NAME.  If the '-t' option is supplied,
      the full pathname to which each NAME corresponds is printed.  If
-     multiple NAME arguments are supplied with '-t' the NAME is printed
+     multiple NAME arguments are supplied with '-t', the NAME is printed
      before the hashed full pathname.  The '-l' option causes output to
      be displayed in a format that may be reused as input.  If no
      arguments are given, or if only '-l' is supplied, information about
@@ -3032,7 +3127,7 @@ standard.
      status of the last command executed in the function.  If 'return'
      is executed by a trap handler, the last command used to determine
      the status is the last command executed before the trap handler.
-     if 'return' is executed during a 'DEBUG' trap, the last command
+     If 'return' is executed during a 'DEBUG' trap, the last command
      used to determine the status is the last command executed by the
      trap handler before 'return' was invoked.  'return' may also be
      used to terminate execution of a script being executed with the '.'
@@ -3096,7 +3191,7 @@ standard.
           The expression is false.
 
      1 argument
-          The expression is true if and only if the argument is not
+          The expression is true if, and only if, the argument is not
           null.
 
      2 arguments
@@ -3108,17 +3203,21 @@ standard.
           the expression is false.
 
      3 arguments
-          The following conditions are applied in the order listed.  If
-          the second argument is one of the binary conditional operators
-          (*note Bash Conditional Expressions::), the result of the
-          expression is the result of the binary test using the first
-          and third arguments as operands.  The '-a' and '-o' operators
-          are considered binary operators when there are three
-          arguments.  If the first argument is '!', the value is the
-          negation of the two-argument test using the second and third
-          arguments.  If the first argument is exactly '(' and the third
-          argument is exactly ')', the result is the one-argument test
-          of the second argument.  Otherwise, the expression is false.
+          The following conditions are applied in the order listed.
+
+            1. If the second argument is one of the binary conditional
+               operators (*note Bash Conditional Expressions::), the
+               result of the expression is the result of the binary test
+               using the first and third arguments as operands.  The
+               '-a' and '-o' operators are considered binary operators
+               when there are three arguments.
+            2. If the first argument is '!', the value is the negation
+               of the two-argument test using the second and third
+               arguments.
+            3. If the first argument is exactly '(' and the third
+               argument is exactly ')', the result is the one-argument
+               test of the second argument.
+            4. Otherwise, the expression is false.
 
      4 arguments
           If the first argument is '!', the result is the negation of
@@ -3445,11 +3544,12 @@ standard.
           environment.
 
      Using '+' instead of '-' turns off the attribute instead, with the
-     exceptions that '+a' may not be used to destroy an array variable
-     and '+r' will not remove the readonly attribute.  When used in a
-     function, 'declare' makes each NAME local, as with the 'local'
-     command, unless the '-g' option is used.  If a variable name is
-     followed by =VALUE, the value of the variable is set to VALUE.
+     exceptions that '+a' and '+A' may not be used to destroy array
+     variables and '+r' will not remove the readonly attribute.  When
+     used in a function, 'declare' makes each NAME local, as with the
+     'local' command, unless the '-g' option is used.  If a variable
+     name is followed by =VALUE, the value of the variable is set to
+     VALUE.
 
      When using '-a' or '-A' and the compound assignment syntax to
      create array variables, additional attributes do not take effect
@@ -3590,8 +3690,8 @@ standard.
      Exit a login shell, returning a status of N to the shell's parent.
 
 'mapfile'
-          mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
+          mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
+              [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
 
      Read lines from the standard input into the indexed array variable
      ARRAY, or from file descriptor FD if the '-u' option is supplied.
@@ -3600,7 +3700,8 @@ standard.
 
      '-d'
           The first character of DELIM is used to terminate each input
-          line, rather than newline.
+          line, rather than newline.  If DELIM is the empty string,
+          'mapfile' will terminate a line when it reads a NUL character.
      '-n'
           Copy at most COUNT lines.  If COUNT is 0, all lines are
           copied.
@@ -3615,7 +3716,7 @@ standard.
           Read lines from file descriptor FD instead of the standard
           input.
      '-C'
-          Evaluate CALLBACK each time QUANTUMP lines are read.  The '-c'
+          Evaluate CALLBACK each time QUANTUM lines are read.  The '-c'
           option specifies QUANTUM.
      '-c'
           Specify the number of lines read between each call to
@@ -3712,12 +3813,14 @@ standard.
 
      '-d DELIM'
           The first character of DELIM is used to terminate the input
-          line, rather than newline.
+          line, rather than newline.  If DELIM is the empty string,
+          'read' will terminate a line when it reads a NUL character.
 
      '-e'
           Readline (*note Command Line Editing::) is used to obtain the
           line.  Readline uses the current (or default, if line editing
-          was not previously active) editing settings.
+          was not previously active) editing settings, but uses
+          Readline's default filename completion.
 
      '-i TEXT'
           If Readline is being used to read the line, TEXT is placed
@@ -3746,8 +3849,8 @@ standard.
      '-r'
           If this option is given, backslash does not act as an escape
           character.  The backslash is considered to be part of the
-          line.  In particular, a backslash-newline pair may not be used
-          as a line continuation.
+          line.  In particular, a backslash-newline pair may not then be
+          used as a line continuation.
 
      '-s'
           Silent mode.  If input is coming from a terminal, characters
@@ -3771,8 +3874,8 @@ standard.
           Read input from file descriptor FD.
 
 'readarray'
-          readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
+          readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
+              [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
 
      Read lines from the standard input into the indexed array variable
      ARRAY, or from file descriptor FD if the '-u' option is supplied.
@@ -4236,9 +4339,10 @@ This builtin allows you to change additional shell optional behavior.
      option is used, those available with the '-o' option to the 'set'
      builtin command (*note The Set Builtin::).  With no options, or
      with the '-p' option, a list of all settable options is displayed,
-     with an indication of whether or not each is set.  The '-p' option
-     causes output to be displayed in a form that may be reused as
-     input.  Other options have the following meanings:
+     with an indication of whether or not each is set; if OPTNAMES are
+     supplied, the output is restricted to those options.  The '-p'
+     option causes output to be displayed in a form that may be reused
+     as input.  Other options have the following meanings:
 
      '-s'
           Enable (set) each OPTNAME.
@@ -4269,6 +4373,13 @@ This builtin allows you to change additional shell optional behavior.
 
      The list of 'shopt' options is:
 
+     'assoc_expand_once'
+          If set, the shell suppresses multiple evaluation of
+          associative array subscripts during arithmetic expression
+          evaluation, while executing builtins that can perform variable
+          assignments, and while executing builtins that perform array
+          dereferencing.
+
      'autocd'
           If set, a command name that is the name of a directory is
           executed as if it were the argument to the 'cd' command.  This
@@ -4301,13 +4412,16 @@ This builtin allows you to change additional shell optional behavior.
           are stopped.
 
      'checkwinsize'
-          If set, Bash checks the window size after each command and, if
-          necessary, updates the values of 'LINES' and 'COLUMNS'.
+          If set, Bash checks the window size after each external
+          (non-builtin) command and, if necessary, updates the values of
+          'LINES' and 'COLUMNS'.  This option is enabled by default.
 
      '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.
+          re-editing of multi-line commands.  This option is enabled by
+          default, but only has an effect if command history is enabled
+          (*note Bash History Facilities::).
 
      'compat31'
           If set, Bash changes its behavior to that of version 3.1 with
@@ -4357,6 +4471,11 @@ This builtin allows you to change additional shell optional behavior.
           executed (this allows 'break' or 'continue' in a shell
           function to affect loops in the caller's context).
 
+     'compat44'
+          If set, Bash saves the positional parameters to BASH_ARGV and
+          BASH_ARGC before they are used, regardless of whether or not
+          extended debugging mode is enabled.
+
      'complete_fullquote'
           If set, Bash quotes all shell metacharacters in filenames and
           directory names when performing completion.  If not set, Bash
@@ -4384,7 +4503,8 @@ This builtin allows you to change additional shell optional behavior.
 
      'dotglob'
           If set, Bash includes filenames beginning with a '.'  in the
-          results of filename expansion.
+          results of filename expansion.  The filenames '.' and '..'
+          must always be matched explicitly, even if 'dotglob' is set.
 
      'execfail'
           If this is set, a non-interactive shell will not exit if it
@@ -4513,6 +4633,19 @@ This builtin allows you to change additional shell optional behavior.
           commands are saved to the history with embedded newlines
           rather than using semicolon separators where possible.
 
+     'localvar_inherit'
+          If set, local variables inherit the value and attributes of a
+          variable of the same name that exists at a previous scope
+          before any new value is assigned.  The NAMEREF attribute is
+          not inherited.
+
+     'localvar_unset'
+          If set, calling 'unset' on local variables in previous
+          function scopes marks them so subsequent lookups find them
+          unset until that function returns.  This is identical to the
+          behavior of unsetting local variables at the current function
+          scope.
+
      'login_shell'
           The shell sets this option if it is started as a login shell
           (*note Invoking Bash::).  The value may not be changed.
@@ -4547,6 +4680,13 @@ This builtin allows you to change additional shell optional behavior.
           Programmable Completion::) are enabled.  This option is
           enabled by default.
 
+     'progcomp_alias'
+          If set, and programmable completion is enabled, Bash treats a
+          command name that doesn't have any completions as a possible
+          alias and attempts alias expansion.  If it has an alias, Bash
+          attempts programmable completion using the command word
+          resulting from the expanded alias.
+
      'promptvars'
           If set, prompt strings undergo parameter expansion, command
           substitution, arithmetic expansion, and quote removal after
@@ -4676,7 +4816,8 @@ In some cases, Bash assigns a default value to the variable.
      that are expanded before 'PS1' is displayed.
 
 'PS2'
-     The secondary prompt string.  The default value is '> '.
+     The secondary prompt string.  The default value is '> '.  'PS2' is
+     expanded in the same way as 'PS1' before being displayed.
 
 \1f
 File: bash.info,  Node: Bash Variables,  Prev: Bourne Shell Variables,  Up: Shell Variables
@@ -4706,7 +4847,9 @@ Variables::).
 'BASHPID'
      Expands to the process ID of the current Bash process.  This
      differs from '$$' under certain circumstances, such as subshells
-     that do not require Bash to be re-initialized.
+     that do not require Bash to be re-initialized.  Assignments to
+     'BASHPID' have no effect.  If 'BASHPID' is unset, it loses its
+     special properties, even if it is subsequently reset.
 
 'BASH_ALIASES'
      An associative array variable whose members correspond to the
@@ -4725,7 +4868,10 @@ Variables::).
      subroutine is executed, the number of parameters passed is pushed
      onto 'BASH_ARGC'.  The shell sets 'BASH_ARGC' only when in extended
      debugging mode (see *note The Shopt Builtin:: for a description of
-     the 'extdebug' option to the 'shopt' builtin).
+     the 'extdebug' option to the 'shopt' builtin).  Setting 'extdebug'
+     after the shell has started to execute a script, or referencing
+     this variable when 'extdebug' is not set, may result in
+     inconsistent values.
 
 'BASH_ARGV'
      An array variable containing all of the parameters in the current
@@ -4735,7 +4881,17 @@ Variables::).
      the parameters supplied are pushed onto 'BASH_ARGV'.  The shell
      sets 'BASH_ARGV' only when in extended debugging mode (see *note
      The Shopt Builtin:: for a description of the 'extdebug' option to
-     the 'shopt' builtin).
+     the 'shopt' builtin).  Setting 'extdebug' after the shell has
+     started to execute a script, or referencing this variable when
+     'extdebug' is not set, may result in inconsistent values.
+
+'BASH_ARGV0'
+     When referenced, this variable expands to the name of the shell or
+     shell script (identical to '$0'; *Note Special Parameters::, for
+     the description of special parameter 0).  Assignment to
+     'BASH_ARGV0' causes the value assigned to also be assigned to '$0'.
+     If 'BASH_ARGV0' is unset, it loses its special properties, even if
+     it is subsequently reset.
 
 'BASH_CMDS'
      An associative array variable whose members correspond to the
@@ -4932,6 +5088,21 @@ Variables::).
      Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode
      (*note Bash POSIX Mode::).
 
+'EPOCHREALTIME'
+     Each time this parameter is referenced, it expands to the number of
+     seconds since the Unix Epoch as a floating point value with
+     micro-second granularity (see the documentation for the C library
+     function TIME for the definition of Epoch).  Assignments to
+     'EPOCHREALTIME' are ignored.  If 'EPOCHREALTIME' is unset, it loses
+     its special properties, even if it is subsequently reset.
+
+'EPOCHSECONDS'
+     Each time this parameter is referenced, it expands to the number of
+     seconds since the Unix Epoch (see the documentation for the C
+     library function TIME for the definition of Epoch).  Assignments to
+     'EPOCHSECONDS' are ignored.  If 'EPOCHSECONDS' is unset, it loses
+     its special properties, even if it is subsequently reset.
+
 'EUID'
      The numeric effective user id of the current user.  This variable
      is readonly.
@@ -4982,8 +5153,8 @@ Variables::).
      nesting level will cause the current command to abort.
 
 'GLOBIGNORE'
-     A colon-separated list of patterns defining the set of filenames to
-     be ignored by filename expansion.  If a filename matched by a
+     A colon-separated list of patterns defining the set of file names
+     to be ignored by filename expansion.  If a file name matched by a
      filename expansion pattern also matches one of the patterns in
      'GLOBIGNORE', it is removed from the list of matches.  The pattern
      matching honors the setting of the 'extglob' shell option.
@@ -5102,7 +5273,7 @@ Variables::).
      as the sole input.  If set, the value denotes the number of
      consecutive 'EOF' characters that can be read as the first
      character on an input line before the shell will exit.  If the
-     variable exists but does not have a numeric value (or has no value)
+     variable exists but does not have a numeric value, or has no value,
      then the default is 10.  If the variable does not exist, then 'EOF'
      signifies the end of input to the shell.  This is only in effect
      for interactive shells.
@@ -5111,6 +5282,12 @@ Variables::).
      The name of the Readline initialization file, overriding the
      default of '~/.inputrc'.
 
+'INSIDE_EMACS'
+     If Bash finds this variable in the environment when the shell
+     starts, it assumes that the shell is running in an Emacs shell
+     buffer and may disable line editing depending on the value of
+     'TERM'.
+
 'LANG'
      Used to determine the locale category for any category not
      specifically selected with a variable starting with 'LC_'.
@@ -5191,7 +5368,8 @@ Variables::).
      supplied.  If it is set while the shell is running, Bash enables
      POSIX mode, as if the command
           set -o posix
-     had been executed.
+     had been executed.  When the shell enters POSIX mode, it sets this
+     variable if it was not already set.
 
 'PPID'
      The process ID of the shell's parent process.  This variable is
@@ -5218,10 +5396,12 @@ Variables::).
      with '#? '
 
 'PS4'
-     The value is the prompt printed before the command line is echoed
-     when the '-x' option is set (*note The Set Builtin::).  The first
-     character of 'PS4' is replicated multiple times, as necessary, to
-     indicate multiple levels of indirection.  The default is '+ '.
+     The value of this parameter is expanded like PS1 and the expanded
+     value is the prompt printed before the command line is echoed when
+     the '-x' option is set (*note The Set Builtin::).  The first
+     character of the expanded value is replicated multiple times, as
+     necessary, to indicate multiple levels of indirection.  The default
+     is '+ '.
 
 'PWD'
      The current working directory as set by the 'cd' builtin.
@@ -5356,9 +5536,12 @@ File: bash.info,  Node: Invoking Bash,  Next: Bash Startup Files,  Up: Bash Feat
 6.1 Invoking Bash
 =================
 
-     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
-     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...]
-     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
+     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] [ARGUMENT ...]
+     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] -c STRING [ARGUMENT ...]
+     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] [ARGUMENT ...]
 
    All of the single-character options used with the 'set' builtin
 (*note The Set Builtin::) can be used as options when the shell is
@@ -5452,7 +5635,7 @@ invocation which are not available with the 'set' builtin.
      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.
+     interactive shell or when reading input through a pipe.
 
 '-D'
      A list of all double-quoted strings preceded by '$' is printed on
@@ -5678,8 +5861,10 @@ several ways.
 
   3. Bash expands and displays 'PS1' before reading the first line of a
      command, and expands and displays 'PS2' before reading the second
-     and subsequent lines of a multi-line command.  Bash displays 'PS0'
-     after it reads a command but before executing it.
+     and subsequent lines of a multi-line command.  Bash expands and
+     displays 'PS0' after it reads a command but before executing it.
+     See *note Controlling the Prompt::, for a complete list of prompt
+     string escape sequences.
 
   4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
      command before printing the primary prompt, '$PS1' (*note Bash
@@ -5702,8 +5887,8 @@ several ways.
   9. In the absence of any traps, Bash ignores 'SIGTERM' (*note
      Signals::).
 
-  10. In the absence of any traps, 'SIGINT' is caught and handled
-     ((*note Signals::).  'SIGINT' will interrupt some shell builtins.
+  10. In the absence of any traps, 'SIGINT' is caught and handled (*note
+     Signals::).  'SIGINT' will interrupt some shell builtins.
 
   11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if
      the 'huponexit' shell option has been enabled (*note Signals::).
@@ -5749,18 +5934,21 @@ File: bash.info,  Node: Bash Conditional Expressions,  Next: Shell Arithmetic,
 ================================
 
 Conditional expressions are used by the '[[' compound command and the
-'test' and '[' builtin commands.
-
-   Expressions may be unary or binary.  Unary expressions are often used
-to examine the status of a file.  There are string operators and numeric
-comparison operators as well.  Bash handles several filenames specially
-when they are used in expressions.  If the operating system on which
-Bash is running provides these special files, Bash will use them;
-otherwise it will emulate them internally with this behavior: If the
-FILE argument to one of the primaries is of the form '/dev/fd/N', then
-file descriptor N is checked.  If the FILE argument to one of the
-primaries is one of '/dev/stdin', '/dev/stdout', or '/dev/stderr', file
-descriptor 0, 1, or 2, respectively, is checked.
+'test' and '[' builtin commands.  The 'test' and '[' commands determine
+their behavior based on the number of arguments; see the descriptions of
+those commands for any other command-specific actions.
+
+   Expressions may be unary or binary, and are formed from the following
+primaries.  Unary expressions are often used to examine the status of a
+file.  There are string operators and numeric comparison operators as
+well.  Bash handles several filenames specially when they are used in
+expressions.  If the operating system on which Bash is running provides
+these special files, Bash will use them; otherwise it will emulate them
+internally with this behavior: If the FILE argument to one of the
+primaries is of the form '/dev/fd/N', then file descriptor N is checked.
+If the FILE argument to one of the primaries is one of '/dev/stdin',
+'/dev/stdout', or '/dev/stderr', file descriptor 0, 1, or 2,
+respectively, is checked.
 
    When used with '[[', the '<' and '>' operators sort lexicographically
 using the current locale.  The 'test' command uses ASCII ordering.
@@ -5884,7 +6072,9 @@ link itself.
      arithmetic binary operators return true if ARG1 is equal to, not
      equal to, less than, less than or equal to, greater than, or
      greater than or equal to ARG2, respectively.  ARG1 and ARG2 may be
-     positive or negative integers.
+     positive or negative integers.  When used with the '[[' command,
+     ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell
+     Arithmetic::).
 
 \1f
 File: bash.info,  Node: Shell Arithmetic,  Next: Aliases,  Prev: Bash Conditional Expressions,  Up: Bash Features
@@ -6018,9 +6208,10 @@ the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt
 Builtin::).
 
    The rules concerning the definition and use of aliases are somewhat
-confusing.  Bash always reads at least one complete line of input before
-executing any of the commands on that line.  Aliases are expanded when a
-command is read, not when it is executed.  Therefore, an alias
+confusing.  Bash always reads at least one complete line of input, and
+all lines that make up a compound command, before executing any of the
+commands on that line or the compound command.  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
@@ -6122,9 +6313,15 @@ quotes.
    The 'unset' builtin is used to destroy arrays.  'unset
 NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
 Negative subscripts to indexed arrays are interpreted as described
-above.  Care must be taken to avoid unwanted side effects caused by
-filename expansion.  'unset NAME', where NAME is an array, removes the
-entire array.  A subscript of '*' or '@' also removes the entire array.
+above.  Unsetting the last element of an array variable does not unset
+the variable.  'unset NAME', where NAME is an array, removes the entire
+array.  A subscript of '*' or '@' also removes the entire array.
+
+   When using a variable name with a subscript as an argument to a
+command, such as with 'unset', without using the word expansion syntax
+described above, the argument is subject to the shell's filename
+expansion.  If filename expansion is not desired, the argument should be
+quoted.
 
    The 'declare', 'local', and 'readonly' builtins each accept a '-a'
 option to specify an indexed array and a '-A' option to specify an
@@ -6245,7 +6442,7 @@ non-null value, then the value is executed just as if it had been typed
 on the command line.
 
    In addition, the following table describes the special characters
-which can appear in the prompt variables 'PS1' to 'PS4':
+which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
 
 '\a'
      A bell character.
@@ -6315,7 +6512,8 @@ of commands executed during the current shell session.
 
    After the string is decoded, it is expanded via parameter expansion,
 command substitution, arithmetic expansion, and quote removal, subject
-to the value of the 'promptvars' shell option (*note Bash Builtins::).
+to the value of the 'promptvars' shell option (*note The Shopt
+Builtin::).
 
 \1f
 File: bash.info,  Node: The Restricted Shell,  Next: Bash POSIX Mode,  Prev: Controlling the Prompt,  Up: Bash Features
@@ -6373,212 +6571,224 @@ startup files.
 
    The following list is what's changed when 'POSIX mode' is in effect:
 
-  1. When a command in the hash table no longer exists, Bash will
+  1. Bash ensures that the 'POSIXLY_CORRECT' variable is set.
+
+  2. When a command in the hash table no longer exists, Bash will
      re-search '$PATH' to find the new location.  This is also available
      with 'shopt -s checkhash'.
 
-  2. The message printed by the job control code and builtins when a job
+  3. The message printed by the job control code and builtins when a job
      exits with a non-zero status is 'Done(status)'.
 
-  3. The message printed by the job control code and builtins when a job
+  4. The message printed by the job control code and builtins when a job
      is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example,
      'SIGTSTP'.
 
-  4. Alias expansion is always enabled, even in non-interactive shells.
+  5. Alias expansion is always enabled, even in non-interactive shells.
 
-  5. Reserved words appearing in a context where reserved words are
+  6. Reserved words appearing in a context where reserved words are
      recognized do not undergo alias expansion.
 
-  6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+  7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
      and '!!' to '!' are enabled, and parameter expansion is performed
      on the values of 'PS1' and 'PS2' regardless of the setting of the
      'promptvars' option.
 
-  7. The POSIX startup files are executed ('$ENV') rather than the
+  8. The POSIX startup files are executed ('$ENV') rather than the
      normal Bash files.
 
-  8. Tilde expansion is only performed on assignments preceding a
+  9. Tilde expansion is only performed on assignments preceding a
      command name, rather than on all assignment statements on the line.
 
-  9. The default history file is '~/.sh_history' (this is the default
+  10. The default history file is '~/.sh_history' (this is the default
      value of '$HISTFILE').
 
-  10. Redirection operators do not perform filename expansion on the
+  11. Redirection operators do not perform filename expansion on the
      word in the redirection unless the shell is interactive.
 
-  11. Redirection operators do not perform word splitting on the word in
+  12. Redirection operators do not perform word splitting on the word in
      the redirection.
 
-  12. Function names must be valid shell 'name's.  That is, they may not
+  13. Function names must be valid shell 'name's.  That is, they may not
      contain characters other than letters, digits, and underscores, and
      may not start with a digit.  Declaring a function with an invalid
      name causes a fatal syntax error in non-interactive shells.
 
-  13. Function names may not be the same as one of the POSIX special
+  14. Function names may not be the same as one of the POSIX special
      builtins.
 
-  14. POSIX special builtins are found before shell functions during
+  15. POSIX special builtins are found before shell functions during
      command lookup.
 
-  15. When printing shell function definitions (e.g., by 'type'), Bash
+  16. When printing shell function definitions (e.g., by 'type'), Bash
      does not print the 'function' keyword.
 
-  16. Literal tildes that appear as the first character in elements of
+  17. Literal tildes that appear as the first character in elements of
      the 'PATH' variable are not expanded as described above under *note
      Tilde Expansion::.
 
-  17. The 'time' reserved word may be used by itself as a command.  When
+  18. The 'time' reserved word may be used by itself as a command.  When
      used in this way, it displays timing statistics for the shell and
      its completed children.  The 'TIMEFORMAT' variable controls the
      format of the timing information.
 
-  18. When parsing and expanding a ${...} expansion that appears within
+  19. When parsing and expanding a ${...} expansion that appears within
      double quotes, single quotes are no longer special and cannot be
      used to quote a closing brace or other special character, unless
      the operator is one of those defined to perform pattern removal.
      In this case, they do not have to appear as matched pairs.
 
-  19. The parser does not recognize 'time' as a reserved word if the
+  20. The parser does not recognize 'time' as a reserved word if the
      next token begins with a '-'.
 
-  20. The '!' character does not introduce history expansion within a
+  21. The '!' character does not introduce history expansion within a
      double-quoted string, even if the 'histexpand' option is enabled.
 
-  21. If a POSIX special builtin returns an error status, a
+  22. If a POSIX special builtin returns an error status, a
      non-interactive shell exits.  The fatal errors are those listed in
      the POSIX standard, and include things like passing incorrect
      options, redirection errors, variable assignment errors for
      assignments preceding the command name, and so on.
 
-  22. A non-interactive shell exits with an error status if a variable
+  23. 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.
 
-  23. A non-interactive shell exits with an error status if a variable
+  24. A non-interactive shell exits with an error status if a variable
      assignment error occurs in an assignment statement preceding a
      special builtin, but not with any other simple command.
 
-  24. A non-interactive shell exits with an error status if the
+  25. A non-interactive shell exits with an error status if the
      iteration variable in a 'for' statement or the selection variable
      in a 'select' statement is a readonly variable.
 
-  25. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
+  26. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
      found.
 
-  26. Non-interactive shells exit if a syntax error in an arithmetic
+  27. Non-interactive shells exit if a syntax error in an arithmetic
      expansion results in an invalid expression.
 
-  27. Non-interactive shells exit if a parameter expansion error occurs.
+  28. Non-interactive shells exit if a parameter expansion error occurs.
 
-  28. Non-interactive shells exit if there is a syntax error in a script
+  29. Non-interactive shells exit if there is a syntax error in a script
      read with the '.' or 'source' builtins, or in a string processed by
      the 'eval' builtin.
 
-  29. Process substitution is not available.
+  30. Process substitution is not available.
 
-  30. While variable indirection is available, it may not be applied to
+  31. While variable indirection is available, it may not be applied to
      the '#' and '?' special parameters.
 
-  31. When expanding the '*' special parameter in a pattern context
+  32. When expanding the '*' special parameter in a pattern context
      where the expansion is double-quoted does not treat the '$*' as if
      it were double-quoted.
 
-  32. Assignment statements preceding POSIX special builtins persist in
+  33. Assignment statements preceding POSIX special builtins persist in
      the shell environment after the builtin completes.
 
-  33. Assignment statements preceding shell function calls persist in
+  34. Assignment statements preceding shell function calls persist in
      the shell environment after the function returns, as if a POSIX
      special builtin command had been executed.
 
-  34. The 'command' builtin does not prevent builtins that take
+  35. The 'command' builtin does not prevent builtins that take
      assignment statements as arguments from expanding them as
      assignment statements; when not in POSIX mode, assignment builtins
      lose their assignment statement expansion properties when preceded
      by 'command'.
 
-  35. The 'bg' builtin uses the required format to describe each job
+  36. The 'bg' builtin uses the required format to describe each job
      placed in the background, which does not include an indication of
      whether the job is the current or previous job.
 
-  36. The output of 'kill -l' prints all the signal names on a single
+  37. The output of 'kill -l' prints all the signal names on a single
      line, separated by spaces, without the 'SIG' prefix.
 
-  37. The 'kill' builtin does not accept signal names with a 'SIG'
+  38. The 'kill' builtin does not accept signal names with a 'SIG'
      prefix.
 
-  38. The 'export' and 'readonly' builtin commands display their output
+  39. The 'export' and 'readonly' builtin commands display their output
      in the format required by POSIX.
 
-  39. The 'trap' builtin displays signal names without the leading
+  40. The 'trap' builtin displays signal names without the leading
      'SIG'.
 
-  40. The 'trap' builtin doesn't check the first argument for a possible
+  41. The 'trap' builtin doesn't check the first argument for a possible
      signal specification and revert the signal handling to the original
      disposition if it is, unless that argument consists solely of
      digits and is a valid signal number.  If users want to reset the
      handler for a given signal to the original disposition, they should
      use '-' as the first argument.
 
-  41. The '.' and 'source' builtins do not search the current directory
+  42. The '.' and 'source' builtins do not search the current directory
      for the filename argument if it is not found by searching 'PATH'.
 
-  42. Enabling POSIX mode has the effect of setting the
+  43. Enabling POSIX mode has the effect of setting the
      'inherit_errexit' option, so subshells spawned to execute command
      substitutions inherit the value of the '-e' option from the parent
      shell.  When the 'inherit_errexit' option is not enabled, Bash
      clears the '-e' option in such subshells.
 
-  43. When the 'alias' builtin displays alias definitions, it does not
+  44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+     option, so numeric arguments to 'shift' that exceed the number of
+     positional parameters will result in an error message.
+
+  45. When the 'alias' builtin displays alias definitions, it does not
      display them with a leading 'alias ' unless the '-p' option is
      supplied.
 
-  44. When the 'set' builtin is invoked without options, it does not
+  46. When the 'set' builtin is invoked without options, it does not
      display shell function names and definitions.
 
-  45. When the 'set' builtin is invoked without options, it displays
+  47. When the 'set' builtin is invoked without options, it displays
      variable values without quotes, unless they contain shell
      metacharacters, even if the result contains nonprinting characters.
 
-  46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+  48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
      constructed from '$PWD' and the directory name supplied as an
      argument does not refer to an existing directory, 'cd' will fail
      instead of falling back to PHYSICAL mode.
 
-  47. The 'pwd' builtin verifies that the value it prints is the same as
+  49. When the 'cd' builtin cannot change a directory because the length
+     of the pathname constructed from '$PWD' and the directory name
+     supplied as an argument exceeds PATH_MAX when all symbolic links
+     are expanded, 'cd' will fail instead of attempting to use only the
+     supplied directory name.
+
+  50. The 'pwd' builtin verifies that the value it prints is the same as
      the current directory, even if it is not asked to check the file
      system with the '-P' option.
 
-  48. When listing the history, the 'fc' builtin does not include an
+  51. When listing the history, the 'fc' builtin does not include an
      indication of whether or not a history entry has been modified.
 
-  49. The default editor used by 'fc' is 'ed'.
+  52. The default editor used by 'fc' is 'ed'.
 
-  50. The 'type' and 'command' builtins will not report a non-executable
+  53. The 'type' and 'command' builtins will not report a non-executable
      file as having been found, though the shell will attempt to execute
      such a file if it is the only so-named file found in '$PATH'.
 
-  51. The 'vi' editing mode will invoke the 'vi' editor directly when
+  54. The 'vi' editing mode will invoke the 'vi' editor directly when
      the 'v' command is run, instead of checking '$VISUAL' and
      '$EDITOR'.
 
-  52. When the 'xpg_echo' option is enabled, Bash does not attempt to
+  55. When the 'xpg_echo' option is enabled, Bash does not attempt to
      interpret any arguments to 'echo' as options.  Each argument is
      displayed, after escape characters are converted.
 
-  53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+  56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
      and '-f' options.
 
-  54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+  57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
      interrupt the 'wait' builtin and cause it to return immediately.
      The trap command is run once for each child that exits.
 
-  55. The 'read' builtin may be interrupted by a signal for which a trap
+  58. The 'read' builtin may be interrupted by a signal for which a trap
      has been set.  If Bash receives a trapped signal while executing
      'read', the trap handler executes and 'read' returns an exit status
      greater than 128.
 
-  56. Bash removes an exited background process's status from the list
+  59. Bash removes an exited background process's status from the list
      of such statuses after the 'wait' builtin is used to obtain it.
 
    There is other POSIX behavior that Bash does not implement by default
@@ -6699,6 +6909,11 @@ command may then be used to inspect their status.  If a second attempt
 to exit is made without an intervening command, Bash does not print
 another warning, and any stopped jobs are terminated.
 
+   When the shell is waiting for a job or process using the 'wait'
+builtin, and job control is enabled, 'wait' will return when the job
+changes state.  The '-f' option will force 'wait' to wait until the job
+or process terminates before returning.
+
 \1f
 File: bash.info,  Node: Job Control Builtins,  Next: Job Control Variables,  Prev: Job Control Basics,  Up: Job Control
 
@@ -6775,7 +6990,7 @@ File: bash.info,  Node: Job Control Builtins,  Next: Job Control Variables,  Pre
      option is encountered.
 
 'wait'
-          wait [-n] [JOBSPEC or PID ...]
+          wait [-fn] [JOBSPEC or PID ...]
 
      Wait until the child process specified by each process ID PID or
      job specification JOBSPEC exits and return the exit status of the
@@ -6783,7 +6998,10 @@ File: bash.info,  Node: Job Control Builtins,  Next: Job Control Variables,  Pre
      the job are waited for.  If no arguments are given, all currently
      active child processes are waited for, and the return status is
      zero.  If the '-n' option is supplied, 'wait' waits for any job to
-     terminate and returns its exit status.  If neither JOBSPEC nor PID
+     terminate and returns its exit status.  If the '-f' option is
+     supplied, and job control is enabled, 'wait' forces each PID or
+     JOBSPEC to terminate before returning its status, intead of
+     returning when it changes status.  If neither JOBSPEC nor PID
      specifies an active child process of the shell, the return status
      is 127.
 
@@ -7228,7 +7446,7 @@ Variable Settings
           If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
           Readline treats hyphens ('-') and underscores ('_') as
           equivalent when performing case-insensitive filename matching
-          and completion.
+          and completion.  The default value is 'off'.
 
      'completion-prefix-display-length'
           The length in characters of the common prefix of a list of
@@ -7272,14 +7490,14 @@ Variable Settings
           This variable can be set to either 'emacs' or 'vi'.
 
      'emacs-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when emacs editing mode is active.  The
-          value is expanded like a key binding, so the standard set of
-          meta- and control prefixes and backslash escape sequences is
-          available.  Use the '\1' and '\2' escapes to begin and end
-          sequences of non-printing characters, which can be used to
-          embed a terminal control sequence into the mode string.  The
-          default is '@'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when emacs editing mode is active.  The value is
+          expanded like a key binding, so the standard set of meta- and
+          control prefixes and backslash escape sequences is available.
+          Use the '\1' and '\2' escapes to begin and end sequences of
+          non-printing characters, which can be used to embed a terminal
+          control sequence into the mode string.  The default is '@'.
 
      'enable-bracketed-paste'
           When set to 'On', Readline will configure the terminal in a
@@ -7343,13 +7561,13 @@ Variable Settings
 
      'keymap'
           Sets Readline's idea of the current keymap for key binding
-          commands.  Acceptable 'keymap' names are 'emacs',
+          commands.  Built-in 'keymap' names are 'emacs',
           'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
           'vi-command', and 'vi-insert'.  'vi' is equivalent to
           'vi-command' ('vi-move' is also a synonym); 'emacs' is
-          equivalent to 'emacs-standard'.  The default value is 'emacs'.
-          The value of the 'editing-mode' variable also affects the
-          default keymap.
+          equivalent to 'emacs-standard'.  Applications may add
+          additional names.  The default value is 'emacs'.  The value of
+          the 'editing-mode' variable also affects the default keymap.
 
      'keyseq-timeout'
           Specifies the duration Readline will wait for a character when
@@ -7431,10 +7649,10 @@ Variable Settings
           default value is 'off'.
 
      'show-mode-in-prompt'
-          If set to 'on', add a character to the beginning of the prompt
+          If set to 'on', add a string to the beginning of the prompt
           indicating the editing mode: emacs, vi command, or vi
-          insertion.  The mode strings are user-settable.  The default
-          value is 'off'.
+          insertion.  The mode strings are user-settable (e.g.,
+          EMACS-MODE-STRING).  The default value is 'off'.
 
      'skip-completed-text'
           If set to 'on', this alters the default completion behavior
@@ -7450,24 +7668,26 @@ Variable Settings
           'off'.
 
      'vi-cmd-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          command mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(cmd)'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when vi editing mode is active and in command mode.
+          The value is expanded like a key binding, so the standard set
+          of meta- and control prefixes and backslash escape sequences
+          is available.  Use the '\1' and '\2' escapes to begin and end
+          sequences of non-printing characters, which can be used to
+          embed a terminal control sequence into the mode string.  The
+          default is '(cmd)'.
 
      'vi-ins-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          insertion mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(ins)'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when vi editing mode is active and in insertion mode.
+          The value is expanded like a key binding, so the standard set
+          of meta- and control prefixes and backslash escape sequences
+          is available.  Use the '\1' and '\2' escapes to begin and end
+          sequences of non-printing characters, which can be used to
+          embed a terminal control sequence into the mode string.  The
+          default is '(ins)'.
 
      'visible-stats'
           If set to 'on', a character denoting a file's type is appended
@@ -7502,7 +7722,7 @@ Key Bindings
                Meta-Rubout: backward-kill-word
                Control-o: "> output"
 
-          In the above example, 'C-u' is bound to the function
+          In the example above, 'C-u' is bound to the function
           'universal-argument', 'M-DEL' is bound to the function
           'backward-kill-word', and 'C-o' is bound to run the macro
           expressed on the right hand side (that is, to insert the text
@@ -7594,8 +7814,9 @@ four parser directives used.
 '$if'
      The '$if' construct allows bindings to be made based on the editing
      mode, the terminal being used, or the application using Readline.
-     The text of the test extends to the end of the line; no characters
-     are required to isolate it.
+     The text of the test, after any comparison operator, extends to the
+     end of the line; unless otherwise noted, no characters are required
+     to isolate it.
 
      'mode'
           The 'mode=' form of the '$if' directive is used to test
@@ -7612,6 +7833,22 @@ four parser directives used.
           the portion of the terminal name before the first '-'.  This
           allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
 
+     'version'
+          The 'version' test may be used to perform comparisons against
+          specific Readline versions.  The 'version' expands to the
+          current Readline version.  The set of comparison operators
+          includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'.  The
+          version number supplied on the right side of the operator
+          consists of a major version number, an optional decimal point,
+          and an optional minor version (e.g., '7.1').  If the minor
+          version is omitted, it is assumed to be '0'.  The operator may
+          be separated from the string 'version' and from the version
+          number argument by whitespace.  The following example sets a
+          variable if the Readline version being used is 7.0 or newer:
+               $if version >= 7.0
+               set show-mode-in-prompt on
+               $endif
+
      'application'
           The APPLICATION construct is used to include
           application-specific settings.  Each program using the
@@ -7625,6 +7862,20 @@ four parser directives used.
                "\C-xq": "\eb\"\ef\""
                $endif
 
+     'variable'
+          The VARIABLE construct provides simple equality tests for
+          Readline variables and values.  The permitted comparison
+          operators are '=', '==', and '!='.  The variable name must be
+          separated from the comparison operator by whitespace; the
+          operator may be separated from the value on the right hand
+          side by whitespace.  Both string and boolean variables may be
+          tested.  Boolean variables must be tested against the values
+          ON and OFF.  The following example is equivalent to the
+          'mode=emacs' test described above:
+               $if editing-mode == emacs
+               set show-mode-in-prompt on
+               $endif
+
 '$endif'
      This command, as seen in the previous example, terminates an '$if'
      command.
@@ -7810,6 +8061,20 @@ File: bash.info,  Node: Commands For Moving,  Next: Commands For History,  Up: B
      Move back to the start of the current or previous word.  Words are
      delimited by non-quoted shell metacharacters.
 
+'previous-screen-line ()'
+     Attempt to move point to the same physical screen column on the
+     previous physical screen line.  This will not have the desired
+     effect if the current Readline line does not take up more than one
+     physical line or if point is not greater than the length of the
+     prompt plus the screen width.
+
+'next-screen-line ()'
+     Attempt to move point to the same physical screen column on the
+     next physical screen line.  This will not have the desired effect
+     if the current Readline line does not take up more than one
+     physical line or if the length of the current Readline line is not
+     greater than the length of the prompt plus the screen width.
+
 'clear-screen (C-l)'
      Clear the screen and redraw the current line, leaving the current
      line at the top of the screen.
@@ -7876,13 +8141,13 @@ File: bash.info,  Node: Commands For History,  Next: Commands For Text,  Prev: C
      string must match at the beginning of a history line.  This is a
      non-incremental search.  By default, this command is unbound.
 
-'history-substr-search-forward ()'
+'history-substring-search-forward ()'
      Search forward through the history for the string of characters
      between the start of the current line and the point.  The search
      string may match anywhere in a history line.  This is a
      non-incremental search.  By default, this command is unbound.
 
-'history-substr-search-backward ()'
+'history-substring-search-backward ()'
      Search backward through the history for the string of characters
      between the start of the current line and the point.  The search
      string may match anywhere in a history line.  This is a
@@ -7948,7 +8213,7 @@ File: bash.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev: C
      assigned by default.  It allows Readline to insert the pasted text
      as a single unit without treating each character as if it had been
      read from the keyboard.  The characters are inserted as if each one
-     was bound to 'self-insert') instead of executing any editing
+     was bound to 'self-insert' instead of executing any editing
      commands.
 
 'transpose-chars (C-t)'
@@ -8226,9 +8491,10 @@ File: bash.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bin
      Abort the current editing command and ring the terminal's bell
      (subject to the setting of 'bell-style').
 
-'do-uppercase-version (M-a, M-b, M-X, ...)'
-     If the metafied character X is lowercase, run the command that is
-     bound to the corresponding uppercase character.
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+     If the metafied character X is upper case, run the command that is
+     bound to the corresponding metafied lower case character.  The
+     behavior is undefined if X is already lower case.
 
 'prefix-meta (<ESC>)'
      Metafy the next character typed.  This is for keyboards without a
@@ -8347,10 +8613,11 @@ File: bash.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bin
 
 '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.
+     relative to the current line from the history for editing.  A
+     numeric argument, if supplied, specifies the history entry to use
+     instead of the current line.
 
-'edit-and-execute-command (C-xC-e)'
+'edit-and-execute-command (C-x C-e)'
      Invoke an editor on the current command line, and execute the
      result as shell commands.  Bash attempts to invoke '$VISUAL',
      '$EDITOR', and 'emacs' as the editor, in that order.
@@ -8395,7 +8662,10 @@ command word is a full pathname, a compspec for the full pathname is
 searched for first.  If no compspec is found for the full pathname, an
 attempt is made to find a compspec for the portion following the final
 slash.  If those searches do not result in a compspec, any compspec
-defined with the '-D' option to 'complete' is used as the default.
+defined with the '-D' option to 'complete' is used as the default.  If
+there is no default compspec, Bash attempts alias expansion on the
+command word as a final resort, and attempts to find a compspec for the
+command word from any successful expansion
 
    Once a compspec has been found, it is used to generate the list of
 matching words.  If a compspec is not found, the default Bash completion
@@ -8414,13 +8684,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used.
 
    Next, the string specified as the argument to the '-W' option is
 considered.  The string is first split using the characters in the 'IFS'
-special variable as delimiters.  Shell quoting is honored.  Each word is
-then expanded using brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, and arithmetic expansion, as
-described above (*note Shell Expansions::).  The results are split using
-the rules described above (*note Word Splitting::).  The results of the
-expansion are prefix-matched against the word being completed, and the
-matching words become the possible completions.
+special variable as delimiters.  Shell quoting is honored within the
+string, in order to provide a mechanism for the words to contain shell
+metacharacters or characters in the value of 'IFS'.  Each word is then
+expanded using brace expansion, tilde expansion, parameter and variable
+expansion, command substitution, and arithmetic expansion, as described
+above (*note Shell Expansions::).  The results are split using the rules
+described above (*note Word Splitting::).  The results of the expansion
+are prefix-matched against the word being completed, and the matching
+words become the possible completions.
 
    After these matches have been generated, any shell function or
 command specified with the '-F' and '-C' options is invoked.  When the
@@ -8540,26 +8812,34 @@ happening.
      no matches were generated.
 
 'complete'
-          complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST]
-          [-F FUNCTION] [-C COMMAND] [-X FILTERPAT]
+          complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT]
+          [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT]
           [-P PREFIX] [-S SUFFIX] NAME [NAME ...]
-          complete -pr [-DE] [NAME ...]
+          complete -pr [-DEI] [NAME ...]
 
      Specify how arguments to each NAME should be completed.  If the
      '-p' option is supplied, or if no options are supplied, existing
      completion specifications are printed in a way that allows them to
      be reused as input.  The '-r' option removes a completion
      specification for each NAME, or, if no NAMEs are supplied, all
-     completion specifications.  The '-D' option indicates that the
-     remaining options and actions should apply to the "default" command
+     completion specifications.  The '-D' option indicates that other
+     supplied options and actions should apply to the "default" command
      completion; that is, completion attempted on a command for which no
      completion has previously been defined.  The '-E' option indicates
-     that the remaining options and actions should apply to "empty"
+     that other supplied options and actions should apply to "empty"
      command completion; that is, completion attempted on a blank line.
+     The '-I' option indicates that other supplied options and actions
+     should apply to completion on the inital non-assignment word on the
+     line, or after a command delimiter such as ';' or '|', which is
+     usually command name completion.  If multiple options are supplied,
+     the '-D' option takes precedence over '-E', and both take
+     precedence over '-I'.  If any of '-D', '-E', or '-I' are supplied,
+     any other NAME arguments are ignored; these completions only apply
+     to the case specified by the option.
 
      The process of applying these completion specifications when word
      completion is attempted is described above (*note Programmable
-     Completion::).  The '-D' option takes precedence over '-E'.
+     Completion::).
 
      Other options, if specified, have the following meanings.  The
      arguments to the '-G', '-W', and '-X' options (and, if necessary,
@@ -8586,7 +8866,7 @@ happening.
           'filenames'
                Tell Readline that the compspec generates filenames, so
                it can perform any filename-specific processing (like
-               adding a slash to directory names quoting special
+               adding a slash to directory names, quoting special
                characters, or suppressing trailing spaces).  This option
                is intended to be used with shell functions specified
                with '-F'.
@@ -8739,20 +9019,24 @@ happening.
      completion specification.
 
 'compopt'
-          compopt [-o OPTION] [-DE] [+o OPTION] [NAME]
+          compopt [-o OPTION] [-DEI] [+o OPTION] [NAME]
      Modify completion options for each NAME according to the OPTIONs,
      or for the currently-executing completion if no NAMEs are supplied.
      If no OPTIONs are given, display the completion options for each
      NAME or the current completion.  The possible values of OPTION are
      those valid for the 'complete' builtin described above.  The '-D'
-     option indicates that the remaining options should apply to the
+     option indicates that other supplied options should apply to the
      "default" command completion; that is, completion attempted on a
      command for which no completion has previously been defined.  The
-     '-E' option indicates that the remaining options should apply to
+     '-E' option indicates that other supplied options should apply to
      "empty" command completion; that is, completion attempted on a
-     blank line.
+     blank line.  The '-I' option indicates that other supplied options
+     should apply to completion on the inital non-assignment word on the
+     line, or after a command delimiter such as ';' or '|', which is
+     usually command name completion.
 
-     The '-D' option takes precedence over '-E'.
+     If multiple options are supplied, the '-D' option takes precedence
+     over '-E', and both take precedence over '-I'
 
      The return value is true unless an invalid option is supplied, an
      attempt is made to modify the options for a NAME for which no
@@ -8770,10 +9054,9 @@ function and bind it to a particular command using 'complete -F'.
 
    The following function provides completions for the 'cd' builtin.  It
 is a reasonably good example of what shell functions must do when used
-for completion.  This function uses the word passsed as '$2' to
-determine the directory name to complete.  You can also use the
-'COMP_WORDS' array variable; the current word is indexed by the
-'COMP_CWORD' variable.
+for completion.  This function uses the word passed as '$2' to determine
+the directory name to complete.  You can also use the 'COMP_WORDS' array
+variable; the current word is indexed by the 'COMP_CWORD' variable.
 
    The function relies on the 'complete' and 'compgen' builtins to do
 much of the work, adding only the things that the Bash 'cd' does beyond
@@ -8797,7 +9080,7 @@ retrieves the completions from there when the function returns.
          local cur _skipdot _cdpath
          local i j k
 
-         # Tilde expansion, with side effect of expanding tilde to full pathname
+         # Tilde expansion, which also expands tilde to full pathname
          case "$2" in
          \~*)    eval cur="$2" ;;
          *)      cur=$2 ;;
@@ -8942,7 +9225,7 @@ of a multi-line command in the same history entry, adding semicolons
 where necessary to preserve syntactic correctness.  The 'lithist' shell
 option causes the shell to save the command with embedded newlines
 instead of semicolons.  The 'shopt' builtin is used to set these
-options.  *Note Bash Builtins::, for a description of 'shopt'.
+options.  *Note The Shopt Builtin::, for a description of 'shopt'.
 
 \1f
 File: bash.info,  Node: Bash History Builtins,  Next: History Interaction,  Prev: Bash History Facilities,  Up: Using History Interactively
@@ -8962,8 +9245,8 @@ history file.
      FIRST and LAST may be specified as a string (to locate the most
      recent command beginning with that string) or as a number (an index
      into the history list, where a negative number is used as an offset
-     from the current command number).  If LAST is not specified it is
-     set to FIRST.  If FIRST is not specified it is set to the previous
+     from the current command number).  If LAST is not specified, it is
+     set to FIRST.  If FIRST is not specified, it is set to the previous
      command for editing and -16 for listing.  If the '-l' flag is
      given, the commands are listed on standard output.  The '-n' flag
      suppresses the command numbers when listing.  The '-r' flag
@@ -8987,6 +9270,7 @@ history file.
           history [N]
           history -c
           history -d OFFSET
+          history -d START-END
           history [-anrw] [FILENAME]
           history -ps ARG
 
@@ -9005,8 +9289,18 @@ history file.
           options to replace the history list completely.
 
      '-d OFFSET'
-          Delete the history entry at position OFFSET.  OFFSET should be
-          specified as it appears when the history is displayed.
+          Delete the history entry at position OFFSET.  If OFFSET is
+          positive, it should be specified as it appears when the
+          history is displayed.  If OFFSET is negative, it is
+          interpreted as relative to one greater than the last history
+          position, so negative indices count back from the end of the
+          history, and an index of '-1' refers to the current 'history
+          -d' command.
+
+     '-d START-END'
+          Delete the history entries between positions START and END,
+          inclusive.  Positive and negative values for START and END are
+          interpreted as described above.
 
      '-a'
           Append the new history lines to the history file.  These are
@@ -9055,7 +9349,9 @@ a previous command into the current input line, or fix errors in
 previous commands quickly.
 
    History expansion is performed immediately after a complete line is
-read, before the shell breaks it into words.
+read, before the shell breaks it into words, and is performed on each
+line individually.  Bash attempts to inform the history expansion
+functions about quoting still in effect from previous lines.
 
    History expansion takes place in two parts.  The first is to
 determine which line from the history list should be used during
@@ -9066,20 +9362,30 @@ are called "words".  Various "modifiers" are available to manipulate the
 selected words.  The line is broken into words in the same fashion that
 Bash does, so that several words surrounded by quotes are considered one
 word.  History expansions are introduced by the appearance of the
-history expansion character, which is '!' by default.  Only '\' and '''
-may be used to escape the history expansion character, but the history
-expansion character is also treated as quoted if it immediately precedes
-the closing double quote in a double-quoted string.
-
-   Several shell options settable with the 'shopt' builtin (*note Bash
-Builtins::) may be used to tailor the behavior of history expansion.  If
-the 'histverify' shell option is enabled, and Readline is being used,
-history substitutions are not immediately passed to the shell parser.
-Instead, the expanded line is reloaded into the Readline editing buffer
-for further modification.  If Readline is being used, and the
-'histreedit' shell option is enabled, a failed history expansion will be
-reloaded into the Readline editing buffer for correction.  The '-p'
-option to the 'history' builtin command may be used to see what a
+history expansion character, which is '!' by default.
+
+   History expansion implements shell-like quoting conventions: a
+backslash can be used to remove the special handling for the next
+character; single quotes enclose verbatim sequences of characters, and
+can be used to inhibit history expansion; and characters enclosed within
+double quotes may be subject to history expansion, since backslash can
+escape the history expansion character, but single quotes may not, since
+they are not treated specially within double quotes.
+
+   When using the shell, only '\' and ''' may be used to escape the
+history expansion character, but the history expansion character is also
+treated as quoted if it immediately precedes the closing double quote in
+a double-quoted string.
+
+   Several shell options settable with the 'shopt' builtin (*note The
+Shopt Builtin::) may be used to tailor the behavior of history
+expansion.  If the 'histverify' shell option is enabled, and Readline is
+being used, history substitutions are not immediately passed to the
+shell parser.  Instead, the expanded line is reloaded into the Readline
+editing buffer for further modification.  If Readline is being used, and
+the 'histreedit' shell option is enabled, a failed history expansion
+will be reloaded into the Readline editing buffer for correction.  The
+'-p' option to the 'history' builtin command may be used to see what a
 history expansion will do before using it.  The '-s' option to the
 'history' builtin may be used to add commands to the end of the history
 list without actually executing them, so that they are available for
@@ -9319,10 +9625,24 @@ don't want to keep, you may remove or edit it.
    To find out more about the options and arguments that the 'configure'
 script understands, type
 
-     bash-2.04$ ./configure --help
+     bash-4.2$ ./configure --help
 
 at the Bash prompt in your Bash source directory.
 
+   If you want to build Bash in a directory separate from the source
+directory - to build for multiple architectures, for example - just use
+the full path to the configure script.  The following commands will
+build bash in a directory under '/usr/local/build' from the source code
+in '/usr/local/src/bash-4.4':
+
+     mkdir /usr/local/build/bash-4.4
+     cd /usr/local/build/bash-4.4
+     bash /usr/local/src/bash-4.4/configure
+     make
+
+   See *note Compiling For Multiple Architectures:: for more information
+about building in a directory separate from the source.
+
    If you need to do unusual things to compile Bash, please try to
 figure out how 'configure' could check whether or not to do them, and
 mail diffs or instructions to <bash-maintainers@gnu.org> so they can be
@@ -9369,10 +9689,10 @@ time, by placing the object files for each architecture in their own
 directory.  To do this, you must use a version of 'make' that supports
 the 'VPATH' variable, such as GNU 'make'.  'cd' to the directory where
 you want the object files and executables to go and run the 'configure'
-script from the source directory.  You may need to supply the
-'--srcdir=PATH' argument to tell 'configure' where the source files are.
-'configure' automatically checks for the source code in the directory
-that 'configure' is in and in '..'.
+script from the source directory (*note Basic Installation::).  You may
+need to supply the '--srcdir=PATH' argument to tell 'configure' where
+the source files are.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.
 
    If you have to use a 'make' that does not supports the 'VPATH'
 variable, you can compile Bash for one architecture at a time in the
@@ -9538,8 +9858,8 @@ and linked, rather than changing run-time features.
 
 '--enable-largefile'
      Enable support for large files
-     (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if
-     the operating system requires special compiler options to build
+     (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the
+     operating system requires special compiler options to build
      programs which can access large files.  This is enabled by default,
      if the operating system provides large file support.
 
@@ -9611,6 +9931,12 @@ unless the operating system does not provide the necessary support.
 '--enable-debugger'
      Include support for the bash debugger (distributed separately).
 
+'--enable-dev-fd-stat-broken'
+     If calling 'stat' on /dev/fd/N returns different results than
+     calling 'fstat' on file descriptor N, supply this option to enable
+     a workaround.  This has implications for conditional commands that
+     test file attributes.
+
 '--enable-direxpand-default'
      Cause the 'direxpand' shell option (*note The Shopt Builtin::) to
      be enabled by default when the shell starts.  It is normally
@@ -9681,7 +10007,7 @@ unless the operating system does not provide the necessary support.
 
 '--enable-prompt-string-decoding'
      Turn on the interpretation of a number of backslash-escaped
-     characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt
+     characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
      strings.  See *note Controlling the Prompt::, for a complete list
      of prompt string escape sequences.
 
@@ -10636,7 +10962,7 @@ D.1 Index of Shell Builtin Commands
 * ::                                     Bourne Shell Builtins.
                                                               (line  11)
 * [:                                     Bourne Shell Builtins.
-                                                              (line 268)
+                                                              (line 269)
 * alias:                                 Bash Builtins.       (line  11)
 * bg:                                    Job Control Builtins.
                                                               (line   7)
@@ -10653,77 +10979,77 @@ D.1 Index of Shell Builtin Commands
 * complete:                              Programmable Completion Builtins.
                                                               (line  30)
 * compopt:                               Programmable Completion Builtins.
-                                                              (line 229)
+                                                              (line 237)
 * continue:                              Bourne Shell Builtins.
                                                               (line  85)
 * declare:                               Bash Builtins.       (line 148)
 * dirs:                                  Directory Stack Builtins.
                                                               (line   7)
 * disown:                                Job Control Builtins.
-                                                              (line  89)
-* echo:                                  Bash Builtins.       (line 245)
-* enable:                                Bash Builtins.       (line 294)
+                                                              (line  92)
+* echo:                                  Bash Builtins.       (line 246)
+* enable:                                Bash Builtins.       (line 295)
 * eval:                                  Bourne Shell Builtins.
                                                               (line  94)
 * exec:                                  Bourne Shell Builtins.
                                                               (line 102)
 * exit:                                  Bourne Shell Builtins.
-                                                              (line 119)
+                                                              (line 120)
 * export:                                Bourne Shell Builtins.
-                                                              (line 126)
+                                                              (line 127)
 * fc:                                    Bash History Builtins.
                                                               (line  10)
 * fg:                                    Job Control Builtins.
                                                               (line  17)
 * getopts:                               Bourne Shell Builtins.
-                                                              (line 142)
+                                                              (line 143)
 * hash:                                  Bourne Shell Builtins.
-                                                              (line 185)
-* help:                                  Bash Builtins.       (line 323)
+                                                              (line 186)
+* help:                                  Bash Builtins.       (line 324)
 * history:                               Bash History Builtins.
                                                               (line  40)
 * jobs:                                  Job Control Builtins.
                                                               (line  27)
 * kill:                                  Job Control Builtins.
                                                               (line  58)
-* let:                                   Bash Builtins.       (line 342)
-* local:                                 Bash Builtins.       (line 350)
-* logout:                                Bash Builtins.       (line 364)
-* mapfile:                               Bash Builtins.       (line 369)
+* let:                                   Bash Builtins.       (line 343)
+* local:                                 Bash Builtins.       (line 351)
+* logout:                                Bash Builtins.       (line 365)
+* mapfile:                               Bash Builtins.       (line 370)
 * popd:                                  Directory Stack Builtins.
                                                               (line  35)
-* printf:                                Bash Builtins.       (line 414)
+* printf:                                Bash Builtins.       (line 416)
 * pushd:                                 Directory Stack Builtins.
                                                               (line  53)
 * pwd:                                   Bourne Shell Builtins.
-                                                              (line 205)
-* read:                                  Bash Builtins.       (line 458)
-* readarray:                             Bash Builtins.       (line 550)
+                                                              (line 206)
+* read:                                  Bash Builtins.       (line 460)
+* readarray:                             Bash Builtins.       (line 554)
 * readonly:                              Bourne Shell Builtins.
-                                                              (line 215)
+                                                              (line 216)
 * return:                                Bourne Shell Builtins.
-                                                              (line 234)
+                                                              (line 235)
 * set:                                   The Set Builtin.     (line  11)
 * shift:                                 Bourne Shell Builtins.
-                                                              (line 255)
+                                                              (line 256)
 * shopt:                                 The Shopt Builtin.   (line   9)
-* source:                                Bash Builtins.       (line 559)
+* source:                                Bash Builtins.       (line 563)
 * suspend:                               Job Control Builtins.
-                                                              (line 101)
+                                                              (line 104)
 * test:                                  Bourne Shell Builtins.
-                                                              (line 268)
+                                                              (line 269)
 * times:                                 Bourne Shell Builtins.
-                                                              (line 343)
+                                                              (line 348)
 * trap:                                  Bourne Shell Builtins.
-                                                              (line 349)
-* type:                                  Bash Builtins.       (line 564)
-* typeset:                               Bash Builtins.       (line 596)
-* ulimit:                                Bash Builtins.       (line 602)
+                                                              (line 354)
+* type:                                  Bash Builtins.       (line 568)
+* typeset:                               Bash Builtins.       (line 600)
+* ulimit:                                Bash Builtins.       (line 606)
 * umask:                                 Bourne Shell Builtins.
-                                                              (line 398)
-* unalias:                               Bash Builtins.       (line 701)
+                                                              (line 403)
+* unalias:                               Bash Builtins.       (line 705)
 * unset:                                 Bourne Shell Builtins.
-                                                              (line 416)
+                                                              (line 421)
 * wait:                                  Job Control Builtins.
                                                               (line  76)
 
@@ -10738,9 +11064,9 @@ D.2 Index of Shell Reserved Words
 
 * !:                                     Pipelines.           (line   9)
 * [[:                                    Conditional Constructs.
-                                                              (line 121)
+                                                              (line 124)
 * ]]:                                    Conditional Constructs.
-                                                              (line 121)
+                                                              (line 124)
 * {:                                     Command Grouping.    (line  21)
 * }:                                     Command Grouping.    (line  21)
 * case:                                  Conditional Constructs.
@@ -10762,7 +11088,7 @@ D.2 Index of Shell Reserved Words
 * in:                                    Conditional Constructs.
                                                               (line  28)
 * select:                                Conditional Constructs.
-                                                              (line  79)
+                                                              (line  82)
 * then:                                  Conditional Constructs.
                                                               (line   7)
 * time:                                  Pipelines.           (line   9)
@@ -10778,45 +11104,46 @@ D.3 Parameter and Variable Index
 \0\b[index\0\b]
 * Menu:
 
-* !:                                     Special Parameters.  (line  50)
-* #:                                     Special Parameters.  (line  33)
-* $:                                     Special Parameters.  (line  45)
-* $!:                                    Special Parameters.  (line  51)
-* $#:                                    Special Parameters.  (line  34)
-* $$:                                    Special Parameters.  (line  46)
+* !:                                     Special Parameters.  (line  56)
+* #:                                     Special Parameters.  (line  39)
+* $:                                     Special Parameters.  (line  51)
+* $!:                                    Special Parameters.  (line  57)
+* $#:                                    Special Parameters.  (line  40)
+* $$:                                    Special Parameters.  (line  52)
 * $*:                                    Special Parameters.  (line  10)
-* $-:                                    Special Parameters.  (line  41)
-* $0:                                    Special Parameters.  (line  56)
-* $?:                                    Special Parameters.  (line  37)
+* $-:                                    Special Parameters.  (line  47)
+* $0:                                    Special Parameters.  (line  62)
+* $?:                                    Special Parameters.  (line  43)
 * $@:                                    Special Parameters.  (line  23)
-* $_:                                    Special Parameters.  (line  65)
+* $_:                                    Special Parameters.  (line  71)
 * *:                                     Special Parameters.  (line   9)
-* -:                                     Special Parameters.  (line  40)
-* 0:                                     Special Parameters.  (line  55)
-* ?:                                     Special Parameters.  (line  36)
+* -:                                     Special Parameters.  (line  46)
+* 0:                                     Special Parameters.  (line  61)
+* ?:                                     Special Parameters.  (line  42)
 * @:                                     Special Parameters.  (line  22)
-* _:                                     Special Parameters.  (line  64)
+* _:                                     Special Parameters.  (line  70)
 * auto_resume:                           Job Control Variables.
                                                               (line   6)
 * BASH:                                  Bash Variables.      (line  13)
 * BASHOPTS:                              Bash Variables.      (line  16)
 * BASHPID:                               Bash Variables.      (line  25)
-* BASH_ALIASES:                          Bash Variables.      (line  30)
-* BASH_ARGC:                             Bash Variables.      (line  39)
-* BASH_ARGV:                             Bash Variables.      (line  49)
-* BASH_CMDS:                             Bash Variables.      (line  59)
-* BASH_COMMAND:                          Bash Variables.      (line  68)
-* BASH_COMPAT:                           Bash Variables.      (line  73)
-* BASH_ENV:                              Bash Variables.      (line  88)
-* BASH_EXECUTION_STRING:                 Bash Variables.      (line  94)
-* BASH_LINENO:                           Bash Variables.      (line  97)
-* BASH_LOADABLES_PATH:                   Bash Variables.      (line 105)
-* BASH_REMATCH:                          Bash Variables.      (line 109)
-* BASH_SOURCE:                           Bash Variables.      (line 117)
-* BASH_SUBSHELL:                         Bash Variables.      (line 124)
-* BASH_VERSINFO:                         Bash Variables.      (line 129)
-* BASH_VERSION:                          Bash Variables.      (line 152)
-* BASH_XTRACEFD:                         Bash Variables.      (line 155)
+* BASH_ALIASES:                          Bash Variables.      (line  32)
+* BASH_ARGC:                             Bash Variables.      (line  41)
+* BASH_ARGV:                             Bash Variables.      (line  54)
+* BASH_ARGV0:                            Bash Variables.      (line  66)
+* BASH_CMDS:                             Bash Variables.      (line  74)
+* BASH_COMMAND:                          Bash Variables.      (line  83)
+* BASH_COMPAT:                           Bash Variables.      (line  88)
+* BASH_ENV:                              Bash Variables.      (line 103)
+* BASH_EXECUTION_STRING:                 Bash Variables.      (line 109)
+* BASH_LINENO:                           Bash Variables.      (line 112)
+* BASH_LOADABLES_PATH:                   Bash Variables.      (line 120)
+* BASH_REMATCH:                          Bash Variables.      (line 124)
+* BASH_SOURCE:                           Bash Variables.      (line 132)
+* BASH_SUBSHELL:                         Bash Variables.      (line 139)
+* BASH_VERSINFO:                         Bash Variables.      (line 144)
+* BASH_VERSION:                          Bash Variables.      (line 167)
+* BASH_XTRACEFD:                         Bash Variables.      (line 170)
 * bell-style:                            Readline Init File Syntax.
                                                               (line  38)
 * bind-tty-special-chars:                Readline Init File Syntax.
@@ -10825,12 +11152,12 @@ D.3 Parameter and Variable Index
                                                               (line  50)
 * CDPATH:                                Bourne Shell Variables.
                                                               (line   9)
-* CHILD_MAX:                             Bash Variables.      (line 166)
+* CHILD_MAX:                             Bash Variables.      (line 181)
 * colored-completion-prefix:             Readline Init File Syntax.
                                                               (line  55)
 * colored-stats:                         Readline Init File Syntax.
                                                               (line  62)
-* COLUMNS:                               Bash Variables.      (line 173)
+* COLUMNS:                               Bash Variables.      (line 188)
 * comment-begin:                         Readline Init File Syntax.
                                                               (line  68)
 * completion-display-width:              Readline Init File Syntax.
@@ -10843,88 +11170,91 @@ D.3 Parameter and Variable Index
                                                               (line  91)
 * completion-query-items:                Readline Init File Syntax.
                                                               (line  98)
-* COMPREPLY:                             Bash Variables.      (line 225)
-* COMP_CWORD:                            Bash Variables.      (line 179)
-* COMP_KEY:                              Bash Variables.      (line 208)
-* COMP_LINE:                             Bash Variables.      (line 185)
-* COMP_POINT:                            Bash Variables.      (line 190)
-* COMP_TYPE:                             Bash Variables.      (line 198)
-* COMP_WORDBREAKS:                       Bash Variables.      (line 212)
-* COMP_WORDS:                            Bash Variables.      (line 218)
+* COMPREPLY:                             Bash Variables.      (line 240)
+* COMP_CWORD:                            Bash Variables.      (line 194)
+* COMP_KEY:                              Bash Variables.      (line 223)
+* COMP_LINE:                             Bash Variables.      (line 200)
+* COMP_POINT:                            Bash Variables.      (line 205)
+* COMP_TYPE:                             Bash Variables.      (line 213)
+* COMP_WORDBREAKS:                       Bash Variables.      (line 227)
+* COMP_WORDS:                            Bash Variables.      (line 233)
 * convert-meta:                          Readline Init File Syntax.
                                                               (line 108)
-* COPROC:                                Bash Variables.      (line 231)
-* DIRSTACK:                              Bash Variables.      (line 235)
+* COPROC:                                Bash Variables.      (line 246)
+* DIRSTACK:                              Bash Variables.      (line 250)
 * disable-completion:                    Readline Init File Syntax.
                                                               (line 116)
 * echo-control-characters:               Readline Init File Syntax.
                                                               (line 121)
 * editing-mode:                          Readline Init File Syntax.
                                                               (line 126)
-* EMACS:                                 Bash Variables.      (line 245)
+* EMACS:                                 Bash Variables.      (line 260)
 * emacs-mode-string:                     Readline Init File Syntax.
                                                               (line 132)
 * enable-bracketed-paste:                Readline Init File Syntax.
                                                               (line 142)
 * enable-keypad:                         Readline Init File Syntax.
                                                               (line 150)
-* ENV:                                   Bash Variables.      (line 250)
-* EUID:                                  Bash Variables.      (line 254)
-* EXECIGNORE:                            Bash Variables.      (line 258)
+* ENV:                                   Bash Variables.      (line 265)
+* EPOCHREALTIME:                         Bash Variables.      (line 269)
+* EPOCHSECONDS:                          Bash Variables.      (line 277)
+* EUID:                                  Bash Variables.      (line 284)
+* EXECIGNORE:                            Bash Variables.      (line 288)
 * expand-tilde:                          Readline Init File Syntax.
                                                               (line 161)
-* FCEDIT:                                Bash Variables.      (line 271)
-* FIGNORE:                               Bash Variables.      (line 275)
-* FUNCNAME:                              Bash Variables.      (line 281)
-* FUNCNEST:                              Bash Variables.      (line 298)
-* GLOBIGNORE:                            Bash Variables.      (line 303)
-* GROUPS:                                Bash Variables.      (line 310)
-* histchars:                             Bash Variables.      (line 316)
-* HISTCMD:                               Bash Variables.      (line 331)
-* HISTCONTROL:                           Bash Variables.      (line 336)
-* HISTFILE:                              Bash Variables.      (line 352)
-* HISTFILESIZE:                          Bash Variables.      (line 356)
-* HISTIGNORE:                            Bash Variables.      (line 367)
+* FCEDIT:                                Bash Variables.      (line 301)
+* FIGNORE:                               Bash Variables.      (line 305)
+* FUNCNAME:                              Bash Variables.      (line 311)
+* FUNCNEST:                              Bash Variables.      (line 328)
+* GLOBIGNORE:                            Bash Variables.      (line 333)
+* GROUPS:                                Bash Variables.      (line 340)
+* histchars:                             Bash Variables.      (line 346)
+* HISTCMD:                               Bash Variables.      (line 361)
+* HISTCONTROL:                           Bash Variables.      (line 366)
+* HISTFILE:                              Bash Variables.      (line 382)
+* HISTFILESIZE:                          Bash Variables.      (line 386)
+* HISTIGNORE:                            Bash Variables.      (line 397)
 * history-preserve-point:                Readline Init File Syntax.
                                                               (line 165)
 * history-size:                          Readline Init File Syntax.
                                                               (line 171)
-* HISTSIZE:                              Bash Variables.      (line 387)
-* HISTTIMEFORMAT:                        Bash Variables.      (line 394)
+* HISTSIZE:                              Bash Variables.      (line 417)
+* HISTTIMEFORMAT:                        Bash Variables.      (line 424)
 * HOME:                                  Bourne Shell Variables.
                                                               (line  13)
 * horizontal-scroll-mode:                Readline Init File Syntax.
                                                               (line 180)
-* HOSTFILE:                              Bash Variables.      (line 402)
-* HOSTNAME:                              Bash Variables.      (line 413)
-* HOSTTYPE:                              Bash Variables.      (line 416)
+* HOSTFILE:                              Bash Variables.      (line 432)
+* HOSTNAME:                              Bash Variables.      (line 443)
+* HOSTTYPE:                              Bash Variables.      (line 446)
 * IFS:                                   Bourne Shell Variables.
                                                               (line  18)
-* IGNOREEOF:                             Bash Variables.      (line 419)
+* IGNOREEOF:                             Bash Variables.      (line 449)
 * input-meta:                            Readline Init File Syntax.
                                                               (line 187)
-* INPUTRC:                               Bash Variables.      (line 429)
+* INPUTRC:                               Bash Variables.      (line 459)
+* INSIDE_EMACS:                          Bash Variables.      (line 463)
 * isearch-terminators:                   Readline Init File Syntax.
                                                               (line 195)
 * keymap:                                Readline Init File Syntax.
                                                               (line 202)
-* LANG:                                  Bash Variables.      (line 433)
-* LC_ALL:                                Bash Variables.      (line 437)
-* LC_COLLATE:                            Bash Variables.      (line 441)
-* LC_CTYPE:                              Bash Variables.      (line 448)
+* LANG:                                  Bash Variables.      (line 469)
+* LC_ALL:                                Bash Variables.      (line 473)
+* LC_COLLATE:                            Bash Variables.      (line 477)
+* LC_CTYPE:                              Bash Variables.      (line 484)
 * LC_MESSAGES:                           Locale Translation.  (line  11)
-* LC_MESSAGES <1>:                       Bash Variables.      (line 453)
-* LC_NUMERIC:                            Bash Variables.      (line 457)
-* LC_TIME:                               Bash Variables.      (line 461)
-* LINENO:                                Bash Variables.      (line 465)
-* LINES:                                 Bash Variables.      (line 469)
-* MACHTYPE:                              Bash Variables.      (line 475)
+* LC_MESSAGES <1>:                       Bash Variables.      (line 489)
+* LC_NUMERIC:                            Bash Variables.      (line 493)
+* LC_TIME:                               Bash Variables.      (line 497)
+* LINENO:                                Bash Variables.      (line 501)
+* LINES:                                 Bash Variables.      (line 505)
+* MACHTYPE:                              Bash Variables.      (line 511)
 * MAIL:                                  Bourne Shell Variables.
                                                               (line  22)
-* MAILCHECK:                             Bash Variables.      (line 479)
+* MAILCHECK:                             Bash Variables.      (line 515)
 * MAILPATH:                              Bourne Shell Variables.
                                                               (line  27)
-* MAPFILE:                               Bash Variables.      (line 487)
+* MAPFILE:                               Bash Variables.      (line 523)
 * mark-modified-lines:                   Readline Init File Syntax.
                                                               (line 232)
 * mark-symlinked-directories:            Readline Init File Syntax.
@@ -10935,42 +11265,42 @@ D.3 Parameter and Variable Index
                                                               (line 249)
 * meta-flag:                             Readline Init File Syntax.
                                                               (line 187)
-* OLDPWD:                                Bash Variables.      (line 491)
+* OLDPWD:                                Bash Variables.      (line 527)
 * OPTARG:                                Bourne Shell Variables.
                                                               (line  34)
-* OPTERR:                                Bash Variables.      (line 494)
+* OPTERR:                                Bash Variables.      (line 530)
 * OPTIND:                                Bourne Shell Variables.
                                                               (line  38)
-* OSTYPE:                                Bash Variables.      (line 498)
+* OSTYPE:                                Bash Variables.      (line 534)
 * output-meta:                           Readline Init File Syntax.
                                                               (line 254)
 * page-completions:                      Readline Init File Syntax.
                                                               (line 260)
 * PATH:                                  Bourne Shell Variables.
                                                               (line  42)
-* PIPESTATUS:                            Bash Variables.      (line 501)
-* POSIXLY_CORRECT:                       Bash Variables.      (line 506)
-* PPID:                                  Bash Variables.      (line 515)
-* PROMPT_COMMAND:                        Bash Variables.      (line 519)
-* PROMPT_DIRTRIM:                        Bash Variables.      (line 523)
-* PS0:                                   Bash Variables.      (line 529)
+* PIPESTATUS:                            Bash Variables.      (line 537)
+* POSIXLY_CORRECT:                       Bash Variables.      (line 542)
+* PPID:                                  Bash Variables.      (line 552)
+* PROMPT_COMMAND:                        Bash Variables.      (line 556)
+* PROMPT_DIRTRIM:                        Bash Variables.      (line 560)
+* PS0:                                   Bash Variables.      (line 566)
 * PS1:                                   Bourne Shell Variables.
                                                               (line  48)
 * PS2:                                   Bourne Shell Variables.
                                                               (line  53)
-* PS3:                                   Bash Variables.      (line 534)
-* PS4:                                   Bash Variables.      (line 539)
-* PWD:                                   Bash Variables.      (line 545)
-* RANDOM:                                Bash Variables.      (line 548)
-* READLINE_LINE:                         Bash Variables.      (line 553)
-* READLINE_POINT:                        Bash Variables.      (line 557)
-* REPLY:                                 Bash Variables.      (line 561)
+* PS3:                                   Bash Variables.      (line 571)
+* PS4:                                   Bash Variables.      (line 576)
+* PWD:                                   Bash Variables.      (line 584)
+* RANDOM:                                Bash Variables.      (line 587)
+* READLINE_LINE:                         Bash Variables.      (line 592)
+* READLINE_POINT:                        Bash Variables.      (line 596)
+* REPLY:                                 Bash Variables.      (line 600)
 * revert-all-at-newline:                 Readline Init File Syntax.
                                                               (line 270)
-* SECONDS:                               Bash Variables.      (line 564)
-* SHELL:                                 Bash Variables.      (line 570)
-* SHELLOPTS:                             Bash Variables.      (line 575)
-* SHLVL:                                 Bash Variables.      (line 584)
+* SECONDS:                               Bash Variables.      (line 603)
+* SHELL:                                 Bash Variables.      (line 609)
+* SHELLOPTS:                             Bash Variables.      (line 614)
+* SHLVL:                                 Bash Variables.      (line 623)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
                                                               (line 276)
 * show-all-if-unmodified:                Readline Init File Syntax.
@@ -10981,16 +11311,16 @@ D.3 Parameter and Variable Index
                                                               (line 297)
 * TEXTDOMAIN:                            Locale Translation.  (line  11)
 * TEXTDOMAINDIR:                         Locale Translation.  (line  11)
-* TIMEFORMAT:                            Bash Variables.      (line 589)
-* TMOUT:                                 Bash Variables.      (line 627)
-* TMPDIR:                                Bash Variables.      (line 639)
-* UID:                                   Bash Variables.      (line 643)
+* TIMEFORMAT:                            Bash Variables.      (line 628)
+* TMOUT:                                 Bash Variables.      (line 666)
+* TMPDIR:                                Bash Variables.      (line 678)
+* UID:                                   Bash Variables.      (line 682)
 * vi-cmd-mode-string:                    Readline Init File Syntax.
                                                               (line 310)
 * vi-ins-mode-string:                    Readline Init File Syntax.
-                                                              (line 320)
+                                                              (line 321)
 * visible-stats:                         Readline Init File Syntax.
-                                                              (line 330)
+                                                              (line 332)
 
 \1f
 File: bash.info,  Node: Function Index,  Next: Concept Index,  Prev: Variable Index,  Up: Indexes
@@ -11006,7 +11336,7 @@ D.4 Function Index
 * accept-line (Newline or Return):       Commands For History.
                                                               (line   6)
 * alias-expand-line ():                  Miscellaneous Commands.
-                                                              (line 124)
+                                                              (line 125)
 * backward-char (C-b):                   Commands For Moving. (line  15)
 * backward-delete-char (Rubout):         Commands For Text.   (line  17)
 * backward-kill-line (C-x Rubout):       Commands For Killing.
@@ -11021,10 +11351,10 @@ D.4 Function Index
 * call-last-kbd-macro (C-x e):           Keyboard Macros.     (line  13)
 * capitalize-word (M-c):                 Commands For Text.   (line  61)
 * character-search (C-]):                Miscellaneous Commands.
-                                                              (line  41)
+                                                              (line  42)
 * character-search-backward (M-C-]):     Miscellaneous Commands.
-                                                              (line  46)
-* clear-screen (C-l):                    Commands For Moving. (line  34)
+                                                              (line  47)
+* clear-screen (C-l):                    Commands For Moving. (line  48)
 * complete (<TAB>):                      Commands For Completion.
                                                               (line   6)
 * complete-command (M-!):                Commands For Completion.
@@ -11054,56 +11384,56 @@ D.4 Function Index
                                                               (line  46)
 * digit-argument (M-0, M-1, ... M--):    Numeric Arguments.   (line   6)
 * display-shell-version (C-x C-v):       Miscellaneous Commands.
-                                                              (line 109)
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
+                                                              (line 110)
+* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
                                                               (line  14)
 * downcase-word (M-l):                   Commands For Text.   (line  57)
 * dump-functions ():                     Miscellaneous Commands.
-                                                              (line  73)
+                                                              (line  74)
 * dump-macros ():                        Miscellaneous Commands.
-                                                              (line  85)
+                                                              (line  86)
 * dump-variables ():                     Miscellaneous Commands.
-                                                              (line  79)
+                                                              (line  80)
 * dynamic-complete-history (M-<TAB>):    Commands For Completion.
                                                               (line  90)
-* edit-and-execute-command (C-xC-e):     Miscellaneous Commands.
-                                                              (line 138)
+* edit-and-execute-command (C-x C-e):    Miscellaneous Commands.
+                                                              (line 140)
 * end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
 * end-of-file (usually C-d):             Commands For Text.   (line   6)
 * end-of-history (M->):                  Commands For History.
                                                               (line  23)
 * end-of-line (C-e):                     Commands For Moving. (line   9)
 * exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
-                                                              (line  36)
+                                                              (line  37)
 * forward-backward-delete-char ():       Commands For Text.   (line  21)
 * forward-char (C-f):                    Commands For Moving. (line  12)
 * forward-search-history (C-s):          Commands For History.
                                                               (line  31)
 * forward-word (M-f):                    Commands For Moving. (line  18)
 * glob-complete-word (M-g):              Miscellaneous Commands.
-                                                              (line  91)
+                                                              (line  92)
 * glob-expand-word (C-x *):              Miscellaneous Commands.
-                                                              (line  97)
+                                                              (line  98)
 * glob-list-expansions (C-x g):          Miscellaneous Commands.
-                                                              (line 103)
+                                                              (line 104)
 * history-and-alias-expand-line ():      Miscellaneous Commands.
-                                                              (line 127)
+                                                              (line 128)
 * history-expand-line (M-^):             Miscellaneous Commands.
-                                                              (line 117)
+                                                              (line 118)
 * history-search-backward ():            Commands For History.
                                                               (line  53)
 * history-search-forward ():             Commands For History.
                                                               (line  47)
-* history-substr-search-backward ():     Commands For History.
+* history-substring-search-backward ():  Commands For History.
                                                               (line  65)
-* history-substr-search-forward ():      Commands For History.
+* history-substring-search-forward ():   Commands For History.
                                                               (line  59)
 * insert-comment (M-#):                  Miscellaneous Commands.
-                                                              (line  60)
+                                                              (line  61)
 * insert-completions (M-*):              Commands For Completion.
                                                               (line  22)
 * insert-last-argument (M-. or M-_):     Miscellaneous Commands.
-                                                              (line 130)
+                                                              (line 131)
 * kill-line (C-k):                       Commands For Killing.
                                                               (line   6)
 * kill-region ():                        Commands For Killing.
@@ -11113,19 +11443,20 @@ D.4 Function Index
 * kill-word (M-d):                       Commands For Killing.
                                                               (line  19)
 * magic-space ():                        Miscellaneous Commands.
-                                                              (line 120)
+                                                              (line 121)
 * menu-complete ():                      Commands For Completion.
                                                               (line  26)
 * menu-complete-backward ():             Commands For Completion.
                                                               (line  38)
 * next-history (C-n):                    Commands For History.
                                                               (line  17)
+* next-screen-line ():                   Commands For Moving. (line  41)
 * non-incremental-forward-search-history (M-n): Commands For History.
                                                               (line  41)
 * non-incremental-reverse-search-history (M-p): Commands For History.
                                                               (line  35)
 * operate-and-get-next (C-o):            Miscellaneous Commands.
-                                                              (line 133)
+                                                              (line 134)
 * overwrite-mode ():                     Commands For Text.   (line  65)
 * possible-command-completions (C-x !):  Commands For Completion.
                                                               (line  86)
@@ -11140,38 +11471,39 @@ D.4 Function Index
 * possible-variable-completions (C-x $): Commands For Completion.
                                                               (line  68)
 * prefix-meta (<ESC>):                   Miscellaneous Commands.
-                                                              (line  18)
+                                                              (line  19)
 * previous-history (C-p):                Commands For History.
                                                               (line  13)
+* previous-screen-line ():               Commands For Moving. (line  34)
 * print-last-kbd-macro ():               Keyboard Macros.     (line  17)
 * quoted-insert (C-q or C-v):            Commands For Text.   (line  26)
 * re-read-init-file (C-x C-r):           Miscellaneous Commands.
                                                               (line   6)
-* redraw-current-line ():                Commands For Moving. (line  38)
+* redraw-current-line ():                Commands For Moving. (line  52)
 * reverse-search-history (C-r):          Commands For History.
                                                               (line  27)
 * revert-line (M-r):                     Miscellaneous Commands.
-                                                              (line  25)
+                                                              (line  26)
 * self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  30)
 * set-mark (C-@):                        Miscellaneous Commands.
-                                                              (line  32)
+                                                              (line  33)
 * shell-backward-kill-word ():           Commands For Killing.
                                                               (line  33)
 * shell-backward-word ():                Commands For Moving. (line  30)
 * shell-expand-line (M-C-e):             Miscellaneous Commands.
-                                                              (line 112)
+                                                              (line 113)
 * shell-forward-word ():                 Commands For Moving. (line  26)
 * shell-kill-word ():                    Commands For Killing.
                                                               (line  28)
 * skip-csi-sequence ():                  Miscellaneous Commands.
-                                                              (line  51)
+                                                              (line  52)
 * start-kbd-macro (C-x ():               Keyboard Macros.     (line   6)
 * tilde-expand (M-&):                    Miscellaneous Commands.
-                                                              (line  29)
+                                                              (line  30)
 * transpose-chars (C-t):                 Commands For Text.   (line  42)
 * transpose-words (M-t):                 Commands For Text.   (line  48)
 * undo (C-_ or C-x C-u):                 Miscellaneous Commands.
-                                                              (line  22)
+                                                              (line  23)
 * universal-argument ():                 Numeric Arguments.   (line  10)
 * unix-filename-rubout ():               Commands For Killing.
                                                               (line  41)
@@ -11273,13 +11605,13 @@ D.5 Concept Index
 * history list:                          Bash History Facilities.
                                                               (line   6)
 * History, how to use:                   A Programmable Completion Example.
-                                                              (line 114)
+                                                              (line 113)
 * identifier:                            Definitions.         (line  51)
 * initialization file, readline:         Readline Init File.  (line   6)
 * installation:                          Basic Installation.  (line   6)
 * interaction, readline:                 Readline Interaction.
                                                               (line   6)
-* interactive shell:                     Invoking Bash.       (line 128)
+* interactive shell:                     Invoking Bash.       (line 131)
 * interactive shell <1>:                 Interactive Shells.  (line   6)
 * internationalization:                  Locale Translation.  (line   6)
 * job:                                   Definitions.         (line  38)
@@ -11290,7 +11622,7 @@ D.5 Concept Index
 * killing text:                          Readline Killing Commands.
                                                               (line   6)
 * localization:                          Locale Translation.  (line   6)
-* login shell:                           Invoking Bash.       (line 125)
+* login shell:                           Invoking Bash.       (line 128)
 * matching, pattern:                     Pattern Matching.    (line   6)
 * metacharacter:                         Definitions.         (line  46)
 * name:                                  Definitions.         (line  51)
@@ -11351,134 +11683,134 @@ D.5 Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f897
-Node: Introduction\7f2817
-Node: What is Bash?\7f3033
-Node: What is a shell?\7f4147
-Node: Definitions\7f6685
-Node: Basic Shell Features\7f9636
-Node: Shell Syntax\7f10855
-Node: Shell Operation\7f11881
-Node: Quoting\7f13174
-Node: Escape Character\7f14474
-Node: Single Quotes\7f14959
-Node: Double Quotes\7f15307
-Node: ANSI-C Quoting\7f16585
-Node: Locale Translation\7f17838
-Node: Comments\7f18734
-Node: Shell Commands\7f19352
-Node: Simple Commands\7f20224
-Node: Pipelines\7f20855
-Node: Lists\7f23598
-Node: Compound Commands\7f25327
-Node: Looping Constructs\7f26330
-Node: Conditional Constructs\7f28793
-Node: Command Grouping\7f39715
-Node: Coprocesses\7f41194
-Node: GNU Parallel\7f43026
-Node: Shell Functions\7f46999
-Node: Shell Parameters\7f52205
-Node: Positional Parameters\7f56618
-Node: Special Parameters\7f57518
-Node: Shell Expansions\7f60855
-Node: Brace Expansion\7f62949
-Node: Tilde Expansion\7f65730
-Node: Shell Parameter Expansion\7f68078
-Node: Command Substitution\7f82210
-Node: Arithmetic Expansion\7f83565
-Node: Process Substitution\7f84497
-Node: Word Splitting\7f85617
-Node: Filename Expansion\7f87561
-Node: Pattern Matching\7f89845
-Node: Quote Removal\7f93543
-Node: Redirections\7f93838
-Node: Executing Commands\7f103258
-Node: Simple Command Expansion\7f103928
-Node: Command Search and Execution\7f105858
-Node: Command Execution Environment\7f108194
-Node: Environment\7f111178
-Node: Exit Status\7f112837
-Node: Signals\7f114507
-Node: Shell Scripts\7f116474
-Node: Shell Builtin Commands\7f118989
-Node: Bourne Shell Builtins\7f121023
-Node: Bash Builtins\7f141623
-Node: Modifying Shell Behavior\7f170268
-Node: The Set Builtin\7f170613
-Node: The Shopt Builtin\7f181026
-Node: Special Builtins\7f196825
-Node: Shell Variables\7f197804
-Node: Bourne Shell Variables\7f198241
-Node: Bash Variables\7f200272
-Node: Bash Features\7f228652
-Node: Invoking Bash\7f229551
-Node: Bash Startup Files\7f235500
-Node: Interactive Shells\7f240603
-Node: What is an Interactive Shell?\7f241013
-Node: Is this Shell Interactive?\7f241662
-Node: Interactive Shell Behavior\7f242477
-Node: Bash Conditional Expressions\7f245852
-Node: Shell Arithmetic\7f250092
-Node: Aliases\7f252909
-Node: Arrays\7f255457
-Node: The Directory Stack\7f260541
-Node: Directory Stack Builtins\7f261325
-Node: Controlling the Prompt\7f264293
-Node: The Restricted Shell\7f267039
-Node: Bash POSIX Mode\7f268864
-Node: Job Control\7f279215
-Node: Job Control Basics\7f279675
-Node: Job Control Builtins\7f284394
-Node: Job Control Variables\7f288924
-Node: Command Line Editing\7f290080
-Node: Introduction and Notation\7f291751
-Node: Readline Interaction\7f293374
-Node: Readline Bare Essentials\7f294565
-Node: Readline Movement Commands\7f296348
-Node: Readline Killing Commands\7f297308
-Node: Readline Arguments\7f299226
-Node: Searching\7f300270
-Node: Readline Init File\7f302456
-Node: Readline Init File Syntax\7f303603
-Node: Conditional Init Constructs\7f323790
-Node: Sample Init File\7f326315
-Node: Bindable Readline Commands\7f329432
-Node: Commands For Moving\7f330636
-Node: Commands For History\7f331779
-Node: Commands For Text\7f336068
-Node: Commands For Killing\7f339457
-Node: Numeric Arguments\7f341938
-Node: Commands For Completion\7f343077
-Node: Keyboard Macros\7f347268
-Node: Miscellaneous Commands\7f347955
-Node: Readline vi Mode\7f353759
-Node: Programmable Completion\7f354666
-Node: Programmable Completion Builtins\7f362127
-Node: A Programmable Completion Example\7f372013
-Node: Using History Interactively\7f377265
-Node: Bash History Facilities\7f377949
-Node: Bash History Builtins\7f380950
-Node: History Interaction\7f384947
-Node: Event Designators\7f387911
-Node: Word Designators\7f389130
-Node: Modifiers\7f390767
-Node: Installing Bash\7f392169
-Node: Basic Installation\7f393306
-Node: Compilers and Options\7f395997
-Node: Compiling For Multiple Architectures\7f396738
-Node: Installation Names\7f398401
-Node: Specifying the System Type\7f399219
-Node: Sharing Defaults\7f399935
-Node: Operation Controls\7f400608
-Node: Optional Features\7f401566
-Node: Reporting Bugs\7f411823
-Node: Major Differences From The Bourne Shell\7f413017
-Node: GNU Free Documentation License\7f429869
-Node: Indexes\7f455046
-Node: Builtin Index\7f455500
-Node: Reserved Word Index\7f462327
-Node: Variable Index\7f464775
-Node: Function Index\7f480234
-Node: Concept Index\7f493391
+Node: Top\7f895
+Node: Introduction\7f2813
+Node: What is Bash?\7f3029
+Node: What is a shell?\7f4143
+Node: Definitions\7f6681
+Node: Basic Shell Features\7f9632
+Node: Shell Syntax\7f10851
+Node: Shell Operation\7f11877
+Node: Quoting\7f13170
+Node: Escape Character\7f14470
+Node: Single Quotes\7f14955
+Node: Double Quotes\7f15303
+Node: ANSI-C Quoting\7f16581
+Node: Locale Translation\7f17840
+Node: Comments\7f18736
+Node: Shell Commands\7f19354
+Node: Simple Commands\7f20226
+Node: Pipelines\7f20857
+Node: Lists\7f23789
+Node: Compound Commands\7f25580
+Node: Looping Constructs\7f26592
+Node: Conditional Constructs\7f29087
+Node: Command Grouping\7f40170
+Node: Coprocesses\7f41649
+Node: GNU Parallel\7f43552
+Node: Shell Functions\7f47610
+Node: Shell Parameters\7f54693
+Node: Positional Parameters\7f59106
+Node: Special Parameters\7f60006
+Node: Shell Expansions\7f63760
+Node: Brace Expansion\7f65883
+Node: Tilde Expansion\7f68607
+Node: Shell Parameter Expansion\7f71224
+Node: Command Substitution\7f85680
+Node: Arithmetic Expansion\7f87035
+Node: Process Substitution\7f87967
+Node: Word Splitting\7f89087
+Node: Filename Expansion\7f91031
+Node: Pattern Matching\7f93561
+Node: Quote Removal\7f97547
+Node: Redirections\7f97842
+Node: Executing Commands\7f107400
+Node: Simple Command Expansion\7f108070
+Node: Command Search and Execution\7f110000
+Node: Command Execution Environment\7f112376
+Node: Environment\7f115360
+Node: Exit Status\7f117019
+Node: Signals\7f118689
+Node: Shell Scripts\7f120656
+Node: Shell Builtin Commands\7f123171
+Node: Bourne Shell Builtins\7f125209
+Node: Bash Builtins\7f145959
+Node: Modifying Shell Behavior\7f174884
+Node: The Set Builtin\7f175229
+Node: The Shopt Builtin\7f185642
+Node: Special Builtins\7f203284
+Node: Shell Variables\7f204263
+Node: Bourne Shell Variables\7f204700
+Node: Bash Variables\7f206804
+Node: Bash Features\7f237264
+Node: Invoking Bash\7f238163
+Node: Bash Startup Files\7f244176
+Node: Interactive Shells\7f249279
+Node: What is an Interactive Shell?\7f249689
+Node: Is this Shell Interactive?\7f250338
+Node: Interactive Shell Behavior\7f251153
+Node: Bash Conditional Expressions\7f254640
+Node: Shell Arithmetic\7f259217
+Node: Aliases\7f262034
+Node: Arrays\7f264654
+Node: The Directory Stack\7f270020
+Node: Directory Stack Builtins\7f270804
+Node: Controlling the Prompt\7f273772
+Node: The Restricted Shell\7f276538
+Node: Bash POSIX Mode\7f278363
+Node: Job Control\7f289296
+Node: Job Control Basics\7f289756
+Node: Job Control Builtins\7f294724
+Node: Job Control Variables\7f299451
+Node: Command Line Editing\7f300607
+Node: Introduction and Notation\7f302278
+Node: Readline Interaction\7f303901
+Node: Readline Bare Essentials\7f305092
+Node: Readline Movement Commands\7f306875
+Node: Readline Killing Commands\7f307835
+Node: Readline Arguments\7f309753
+Node: Searching\7f310797
+Node: Readline Init File\7f312983
+Node: Readline Init File Syntax\7f314130
+Node: Conditional Init Constructs\7f334569
+Node: Sample Init File\7f338765
+Node: Bindable Readline Commands\7f341882
+Node: Commands For Moving\7f343086
+Node: Commands For History\7f344935
+Node: Commands For Text\7f349230
+Node: Commands For Killing\7f352618
+Node: Numeric Arguments\7f355099
+Node: Commands For Completion\7f356238
+Node: Keyboard Macros\7f360429
+Node: Miscellaneous Commands\7f361116
+Node: Readline vi Mode\7f367069
+Node: Programmable Completion\7f367976
+Node: Programmable Completion Builtins\7f375756
+Node: A Programmable Completion Example\7f386449
+Node: Using History Interactively\7f391689
+Node: Bash History Facilities\7f392373
+Node: Bash History Builtins\7f395378
+Node: History Interaction\7f399909
+Node: Event Designators\7f403529
+Node: Word Designators\7f404748
+Node: Modifiers\7f406385
+Node: Installing Bash\7f407787
+Node: Basic Installation\7f408924
+Node: Compilers and Options\7f412182
+Node: Compiling For Multiple Architectures\7f412923
+Node: Installation Names\7f414616
+Node: Specifying the System Type\7f415434
+Node: Sharing Defaults\7f416150
+Node: Operation Controls\7f416823
+Node: Optional Features\7f417781
+Node: Reporting Bugs\7f428299
+Node: Major Differences From The Bourne Shell\7f429493
+Node: GNU Free Documentation License\7f446345
+Node: Indexes\7f471522
+Node: Builtin Index\7f471976
+Node: Reserved Word Index\7f478803
+Node: Variable Index\7f481251
+Node: Function Index\7f497002
+Node: Concept Index\7f510305
 \1f
 End Tag Table
index 2f64c6f5bf965fd3325dc73e6b86fc67c0c2bb83..54c061ecee2e698f30bb94b92525293d6680f216 100644 (file)
Binary files a/doc/bash.pdf and b/doc/bash.pdf differ
index 35da9d02aa96df8ff29a78e719ae6a8f2f09e57d..8b3b73389ec74900971764c0785891163b09e091 100644 (file)
@@ -1,13 +1,13 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.22.3
-%%CreationDate: Wed Aug 31 10:23:59 2016
+%%CreationDate: Wed Jan  2 09:14:38 2019
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
 %%+ font Courier
 %%+ font Symbol
 %%DocumentSuppliedResources: procset grops 1.22 3
-%%Pages: 78
+%%Pages: 81
 %%PageOrder: Ascend
 %%DocumentMedia: Default 612 792 0 () ()
 %%Orientation: Portrait
@@ -245,7 +245,7 @@ BP
 108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF
 (bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1
 (COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q
-(yright \251 1989-2016 by the Free Softw)-.1 E(are F)-.1 E
+(yright \251 1989-2018 by the Free Softw)-.1 E(are F)-.1 E
 (oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0
 .973(is an)3.474 F F2(sh)3.473 E F0 .973
 (-compatible command language interpreter that e)B -.15(xe)-.15 G .973
@@ -257,19 +257,19 @@ BP
 ell and Utilities portion of the IEEE POSIX)3.027 F
 (speci\214cation \(IEEE Standard 1003.1\).)108 223.2 Q F2(Bash)5 E F0
 (can be con\214gured to be POSIX-conformant by def)2.5 E(ault.)-.1 E F1
-(OPTIONS)72 240 Q F0 .766(All of the single-character shell options doc\
-umented in the description of the)108 252 R F2(set)3.266 E F0 -.2(bu)
-3.266 G .766(iltin command can be).2 F 1.284
-(used as options when the shell is in)108 264 R -.2(vo)-.4 G -.1(ke).2 G
-3.785(d. In).1 F(addition,)3.785 E F2(bash)3.785 E F0 1.285
-(interprets the follo)3.785 F 1.285(wing options when it is)-.25 F(in)
-108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2<ad63>108 292.8 Q F0 .881
-(If the)158 292.8 R F2<ad63>3.381 E F0 .881(option is present, then com\
-mands are read from the \214rst non-option ar)3.381 F(gument)-.18 E F3
-(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G 3.243(ft)-5.743 G
-.743(here are ar)-3.243 F .743(guments after the)-.18 F F3
-(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 F
-.744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419
+(OPTIONS)72 240 Q F0 .483(All of the single-character shell options doc\
+umented in the description of the)108 252 R F2(set)2.983 E F0 -.2(bu)
+2.983 G .483(iltin command, includ-).2 F(ing)108 264 Q F2<ad6f>2.718 E
+F0 2.718(,c)C .218(an be used as options when the shell is in)-2.718 F
+-.2(vo)-.4 G -.1(ke).2 G 2.718(d. In).1 F(addition,)2.719 E F2(bash)
+2.719 E F0 .219(interprets the follo)2.719 F .219(wing options)-.25 F
+(when it is in)108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2<ad63>108
+292.8 Q F0 .881(If the)158 292.8 R F2<ad63>3.381 E F0 .881(option is pr\
+esent, then commands are read from the \214rst non-option ar)3.381 F
+(gument)-.18 E F3(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G
+3.243(ft)-5.743 G .743(here are ar)-3.243 F .743(guments after the)-.18
+F F3(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243
+.744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419
 (and an)2.919 F 2.919(yr)-.15 G .419(emaining ar)-2.919 F .418
 (guments are assigned to the positional parameters.)-.18 F .418
 (The assignment)5.418 F(to)158 328.8 Q F2($0)2.5 E F0
@@ -288,14 +288,14 @@ E F2<ad73>108 376.8 Q F0 .602(If the)158 376.8 R F2<ad73>3.102 E F0 .602
 (guments remain after option processing, then commands)-.18 F .617
 (are read from the standard input.)158 388.8 R .617(This option allo)
 5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158
-400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.)
-.15 E F2<ad44>108 412.8 Q F0 3.183(Al)158 412.8 S .683
-(ist of all double-quoted strings preceded by)-3.183 F F2($)3.184 E F0
-.684(is printed on the standard output.)3.184 F .684(These are)5.684 F
-.458(the strings that are subject to language translation when the curr\
-ent locale is not)158 424.8 R F2(C)2.958 E F0(or)2.958 E F2(POSIX)2.958
-E F0(.)A(This implies the)158 436.8 Q F2<ad6e>2.5 E F0
-(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2
+400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H
+(hell or when reading input through a pipe.).15 E F2<ad44>108 412.8 Q F0
+3.183(Al)158 412.8 S .683(ist of all double-quoted strings preceded by)
+-3.183 F F2($)3.184 E F0 .684(is printed on the standard output.)3.184 F
+.684(These are)5.684 F .458(the strings that are subject to language tr\
+anslation when the current locale is not)158 424.8 R F2(C)2.958 E F0(or)
+2.958 E F2(POSIX)2.958 E F0(.)A(This implies the)158 436.8 Q F2<ad6e>2.5
+E F0(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2
 ([\255+]O [)108 448.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158
 460.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2
 (shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097
@@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E
 1.598(instead of the standard personal initialization \214le)4.279 F F3
 (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti)
 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E
-(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(1)197.055 E 0 Cg EP
+(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(1)193.455 E 0 Cg EP
 %%Page: 2 2
 %%BeginPageSetup
 BP
@@ -462,8 +462,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035
 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25
 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806
 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15
-F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(2)
-197.055 E 0 Cg EP
+F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(2)
+193.455 E 0 Cg EP
 %%Page: 3 3
 %%BeginPageSetup
 BP
@@ -598,7 +598,7 @@ F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389
 -.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q
 (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E
 (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.)
--2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(3)197.055 E 0 Cg
+-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(3)193.455 E 0 Cg
 EP
 %%Page: 4 4
 %%BeginPageSetup
@@ -667,2846 +667,2971 @@ F(ariables)-.92 E F0(belo)108 348 Q -.65(w.)-.25 G .85
 (total user and system time consumed by the shell and its children.)108
 376.8 R(The)6.073 E F4(TIMEFORMA)3.573 E(T)-.855 E F0 -.25(va)3.323 G
 1.073(riable may be).25 F
-(used to specify the format of the time information.)108 388.8 Q
-(Each command in a pipeline is e)108 405.6 Q -.15(xe)-.15 G
-(cuted as a separate process \(i.e., in a subshell\).).15 E F2(Lists)87
-422.4 Q F0(A)108 434.4 Q F1(list)2.849 E F0 .349(is a sequence of one o\
-r more pipelines separated by one of the operators)2.849 F F2(;)2.85 E
-F0(,)A F2(&)2.85 E F0(,)A F2(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85
-E F0 2.85(,a)C .35(nd option-)-2.85 F(ally terminated by one of)108
-446.4 Q F2(;)2.5 E F0(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2(<newline>)
-2.5 E F0(.)A .961(Of these list operators,)108 463.2 R F2(&&)3.461 E F0
-(and)3.461 E F2(||)3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961
-(qual precedence, follo).15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46
-E F2(&)3.46 E F0 3.46(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96
-(qual prece-).15 F(dence.)108 475.2 Q 2.5(As)108 492 S
-(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F1(list)
-2.5 E F0(instead of a semicolon to delimit commands.)2.5 E .029
-(If a command is terminated by the control operator)108 508.8 R F2(&)
+(used to specify the format of the time information.)108 388.8 Q .655
+(Each command in a pipeline is e)108 405.6 R -.15(xe)-.15 G .656
+(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.656 E
+F4 .656(COMMAND EXE-)3.156 F 1.106(CUTION ENVIR)108 417.6 R(ONMENT)-.27
+E F0 1.106(for a description of a subshell en)3.356 F 3.606
+(vironment. If)-.4 F(the)3.606 E F2(lastpipe)3.606 E F0 1.105
+(option is enabled)3.606 F .744(using the)108 429.6 R F2(shopt)3.244 E
+F0 -.2(bu)3.244 G .744(iltin \(see the description of).2 F F2(shopt)
+3.245 E F0(belo)3.245 E .745
+(w\), the last element of a pipeline may be run by)-.25 F
+(the shell process.)108 441.6 Q F2(Lists)87 458.4 Q F0(A)108 470.4 Q F1
+(list)2.85 E F0 .35(is a sequence of one or more pipelines separated by\
+ one of the operators)2.85 F F2(;)2.849 E F0(,)A F2(&)2.849 E F0(,)A F2
+(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F2(||)2.849 E F0 2.849(,a)C .349
+(nd option-)-2.849 F(ally terminated by one of)108 482.4 Q F2(;)2.5 E F0
+(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2(<newline>)2.5 E F0(.)A .96
+(Of these list operators,)108 499.2 R F2(&&)3.46 E F0(and)3.46 E F2(||)
+3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15
+F .961(wed by)-.25 F F2(;)3.461 E F0(and)3.461 E F2(&)3.461 E F0 3.461
+(,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F
+(dence.)108 511.2 Q 2.5(As)108 528 S(equence of one or more ne)-2.5 E
+(wlines may appear in a)-.25 E F1(list)2.5 E F0
+(instead of a semicolon to delimit commands.)2.5 E .029
+(If a command is terminated by the control operator)108 544.8 R F2(&)
 2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029
-(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0
-(in)2.529 E 2.876(as)108 520.8 S 2.876(ubshell. The)-2.876 F .376
-(shell does not w)2.876 F .375
-(ait for the command to \214nish, and the return status is 0.)-.1 F .375
-(Commands sepa-)5.375 F .848(rated by a)108 532.8 R F2(;)3.348 E F0 .848
-(are e)3.348 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F
-.849(aits for each command to terminate in turn.)-.1 F .849(The return)
-5.849 F(status is the e)108 544.8 Q(xit status of the last command e)
--.15 E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences \
-of one or more pipelines separated by the)108 561.6 R F2(&&)3.436 E F0
-(and)3.436 E F2(||)3.436 E F0 .936(control operators,)3.436 F(respecti)
-108 573.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5
-E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G
-2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 590.4 Q F2(&&)
-2.5 E F1(command2)2.5 E(command2)108.2 607.2 Q F0(is e)2.52 E -.15(xe)
+(cutes the command in the).15 F F1(bac)2.528 E(kgr)-.2 E(ound)-.45 E F0
+(in)2.528 E 2.678(as)108 556.8 S 2.678(ubshell. The)-2.678 F .178
+(shell does not w)2.678 F .178
+(ait for the command to \214nish, and the return status is 0.)-.1 F .178
+(These are referred)5.178 F .779(to as)108 568.8 R F1(async)3.279 E(hr)
+-.15 E(onous)-.45 E F0 3.279(commands. Commands)3.279 F .779
+(separated by a)3.279 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15
+G .778(cuted sequentially; the shell w).15 F .778(aits for)-.1 F
+(each command to terminate in turn.)108 580.8 Q
+(The return status is the e)5 E(xit status of the last command e)-.15 E
+-.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences of one \
+or more pipelines separated by the)108 597.6 R F2(&&)3.437 E F0(and)
+3.437 E F2(||)3.437 E F0 .937(control operators,)3.437 F(respecti)108
+609.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E
+-.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G
+2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 626.4 Q F2(&&)
+2.5 E F1(command2)2.5 E(command2)108.2 643.2 Q F0(is e)2.52 E -.15(xe)
 -.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e)
-2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 624 Q F1
-(command1)144 640.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)108.2 657.6
-Q F0 .728(is e)3.248 F -.15(xe)-.15 G .729(cuted if and only if).15 F F1
-(command1)3.429 E F0 .729(returns a non-zero e)3.229 F .729(xit status.)
--.15 F .729(The return status of AND)5.729 F(and OR lists is the e)108
-669.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G
-(cuted in the list.).15 E F2(Compound Commands)87 686.4 Q F0(A)108 698.4
-Q F1 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F
-3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F1(list)3.553 E F0
-1.053(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be)
--3.553 F 1.026(separated from the rest of the command by one or more ne)
-108 710.4 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25
-F 1.027(wline in)-.25 F(place of a semicolon.)108 722.4 Q(GNU Bash 4.4)
-72 768 Q(2016 August 26)142.895 E(4)197.055 E 0 Cg EP
+2.5 E(xit status of zero \(success\).)-.15 E(An OR list has the form)108
+660 Q F1(command1)144 676.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)
+108.2 693.6 Q F0 .435(is e)2.955 F -.15(xe)-.15 G .435
+(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435
+(returns a non-zero e)2.935 F .435(xit status.)-.15 F .434
+(The return status of AND)5.434 F(and OR lists is the e)108 705.6 Q
+(xit status of the last command e)-.15 E -.15(xe)-.15 G
+(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295
+E(4)193.455 E 0 Cg EP
 %%Page: 5 5
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(\()108 84 Q/F1 10
-/Times-Italic@0 SF(list)A F0(\))A F1(list)144 84 Q F0 .011(is e)2.512 F
--.15(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see)
--.4 F/F2 9/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)
--.27 E F0(belo)2.261 E(w\).)-.25 E -1.11(Va)144 96 S 1.063
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.053
+(compound command)3.553 F F0 1.053(is one of the follo)3.553 F 3.553
+(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.054
+(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be)-3.554 F
+1.027(separated from the rest of the command by one or more ne)108 108 R
+1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 F 1.026
+(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list)
+A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.511 F -.15(xe)-.15 G .011
+(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9
+/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0
+(belo)2.262 E(w\).)-.25 E -1.11(Va)144 148.8 S 1.064
 (riable assignments and b)1.11 F 1.064(uiltin commands that af)-.2 F
 1.064(fect the shell')-.25 F 3.564(se)-.55 G -.4(nv)-3.564 G 1.064
-(ironment do not remain in).4 F(ef)144 108 Q
+(ironment do not remain in).4 F(ef)144 160.8 Q
 (fect after the command completes.)-.25 E(The return status is the e)5 E
-(xit status of)-.15 E F1(list)2.5 E F0(.)A({)108 124.8 Q F1(list)2.5 E
-F0 2.5(;})C F1(list)144 124.8 Q F0 .402(is simply e)2.902 F -.15(xe)-.15
-G .401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list)
-5.401 E F0 .401(must be terminated with a ne)2.901 F .401(wline or)-.25
-F 3.214(semicolon. This)144 136.8 R .714(is kno)3.214 F .714(wn as a)
--.25 F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715
-(he return status is the e)-5.715 F .715(xit status of)-.15 F F1(list)
-3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 148.8 R 2.72(et)
--.1 G .22(he metacharacters)-2.72 F/F3 10/Times-Bold@0 SF(\()2.72 E F0
-(and)2.72 E F3(\))2.72 E F0(,)A F3({)2.72 E F0(and)2.72 E F3(})2.719 E
-F0(are)2.719 E F1 -.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0
-.219(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 160.8 S
-.256(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756
-(yd)-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257
-(ord break, the)-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F
-(from)144 172.8 Q F1(list)2.5 E F0
-(by whitespace or another shell metacharacter)2.5 E(.)-.55 E(\(\()108
-189.6 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 201.6 Q F1
--.2(ex)2.552 G(pr).2 E(ession)-.37 E F0 .052(is e)2.552 F -.25(va)-.25 G
-.051(luated according to the rules described belo).25 F 2.551(wu)-.25 G
-(nder)-2.551 E F2 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E(A-)-.54 E
-(TION)144 213.6 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)4.91 F .411
-(alue of the e)-.25 F .411(xpression is non-zero, the return status is \
-0; otherwise the return status)-.15 F(is 1.)144 225.6 Q(This is e)5 E
-(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F3(let ")2.5 E F1 -.2
-(ex)C(pr).2 E(ession)-.37 E F3(")A F0(.)A F3([[)108 242.4 Q F1 -.2(ex)
-2.5 G(pr).2 E(ession)-.37 E F3(]])2.5 E F0 1.3
-(Return a status of 0 or 1 depending on the e)144 254.4 R -.25(va)-.25 G
-1.299(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex)
-3.799 G(pr).2 E(ession)-.37 E F0(.)A 2.273
-(Expressions are composed of the primaries described belo)144 266.4 R
-4.774(wu)-.25 G(nder)-4.774 E F2(CONDITION)4.774 E 2.274(AL EXPRES-)-.18
-F(SIONS)144 278.4 Q F4(.)A F0 -.8(Wo)5.633 G 1.133
+(xit status of)-.15 E F2(list)2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E
+F0 2.5(;})C F2(list)144 177.6 Q F0 .401(is simply e)2.901 F -.15(xe)-.15
+G .401(cuted in the current shell en).15 F(vironment.)-.4 E F2(list)
+5.401 E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25
+F 3.215(semicolon. This)144 189.6 R .715(is kno)3.215 F .715(wn as a)
+-.25 F F2(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715
+(he return status is the e)-5.715 F .714(xit status of)-.15 F F2(list)
+3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 201.6 R 2.719(et)
+-.1 G .219(he metacharacters)-2.719 F F1(\()2.719 E F0(and)2.719 E F1
+(\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719
+E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22
+(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 213.6 S .257
+(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd)
+-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the)
+-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 225.6 Q F2
+(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55
+E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144
+254.4 Q F2 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F
+-.25(va)-.25 G .051(luated according to the rules described belo).25 F
+2.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E
+(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)
+4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\
+n status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q
+(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ")
+2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q
+F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 1.299
+(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G
+1.3(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)3.8 G
+(pr).2 E(ession)-.37 E F0(.)A 2.274
+(Expressions are composed of the primaries described belo)144 319.2 R
+4.773(wu)-.25 G(nder)-4.773 E F3(CONDITION)4.773 E 2.273(AL EXPRES-)-.18
+F(SIONS)144 331.2 Q F4(.)A F0 -.8(Wo)5.632 G 1.133
 (rd splitting and pathname e).8 F 1.133
 (xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F
-F3([[)3.632 E F0(and)144 290.4 Q F3(]])2.963 E F0 2.963(;t)C .463
-(ilde e)-2.963 F .464(xpansion, parameter and v)-.15 F .464(ariable e)
--.25 F .464(xpansion, arithmetic e)-.15 F .464
+F1([[)3.633 E F0(and)144 343.2 Q F1(]])2.964 E F0 2.964(;t)C .464
+(ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e)
+-.25 F .463(xpansion, arithmetic e)-.15 F .463
 (xpansion, command substi-)-.15 F 1.081
-(tution, process substitution, and quote remo)144 302.4 R -.25(va)-.15 G
+(tution, process substitution, and quote remo)144 355.2 R -.25(va)-.15 G
 3.581(la).25 G 1.081(re performed.)-3.581 F 1.081
-(Conditional operators such as)6.081 F F3<ad66>3.58 E F0
-(must be unquoted to be recognized as primaries.)144 314.4 Q
-(When used with)144 332.4 Q F3([[)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E
-F0(and)2.5 E F3(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using the current locale.)-.15 E .502(When the)144
-350.4 R F3(==)3.002 E F0(and)3.002 E F3(!=)3.002 E F0 .502(operators ar\
+(Conditional operators such as)6.081 F F1<ad66>3.581 E F0
+(must be unquoted to be recognized as primaries.)144 367.2 Q
+(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E
+F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E
+(xicographically using the current locale.)-.15 E .503(When the)144
+403.2 R F1(==)3.003 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\
 e used, the string to the right of the operator is considered a pat-)
 3.002 F .81(tern and matched according to the rules described belo)144
-362.4 R 3.31(wu)-.25 G(nder)-3.31 E F3 -.1(Pa)3.31 G(tter).1 E 3.31(nM)
+415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM)
 -.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he)
--3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.389
-(shell option were enabled.)3.889 F(The)6.389 E F3(=)3.889 E F0 1.389
-(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F3(==)3.89
-E F0 6.39(.I)C 3.89(ft)-6.39 G(he)-3.89 E F3(nocasematch)3.89 E F0
-(shell)3.89 E .272(option is enabled, the match is performed without re)
-144 386.4 R -.05(ga)-.15 G .271
-(rd to the case of alphabetic characters.).05 F(The)5.271 E 1.067
-(return v)144 398.4 R 1.068(alue is 0 if the string matches \()-.25 F F3
-(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()-3.568 F
-F3(!=)A F0 3.568(\)t)C 1.068(he pattern, and 1 otherwise.)-3.568 F(An)
-144 410.4 Q 2.5(yp)-.15 G(art of the pattern may be quoted to force the\
- quoted portion to be matched as a string.)-2.5 E .243
-(An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0
+-3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 1.39
+(shell option were enabled.)3.89 F(The)6.39 E F1(=)3.889 E F0 1.389
+(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F1(==)3.889
+E F0 6.389(.I)C 3.889(ft)-6.389 G(he)-3.889 E F1(nocasematch)3.889 E F0
+(shell)3.889 E .271
+(option is enabled, the match is performed without re)144 439.2 R -.05
+(ga)-.15 G .272(rd to the case of alphabetic characters.).05 F(The)5.272
+E 1.068(return v)144 451.2 R 1.068(alue is 0 if the string matches \()
+-.25 F F1(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()
+-3.568 F F1(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.)
+-3.568 F(An)144 463.2 Q 2.5(yp)-.15 G(art of the pattern may be quoted \
+to force the quoted portion to be matched as a string.)-2.5 E .243
+(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0
 2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243
-(ilable, with the same precedence as).25 F F3(==)2.743 E F0(and)2.743 E
-F3(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953
-(used, the string to the right of the operator is considered an e)144
-440.4 R 1.954(xtended re)-.15 F 1.954(gular e)-.15 F 1.954
-(xpression and)-.15 F .207(matched accordingly \(as in)144 452.4 R F1
+(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E
+F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182
+(used, the string to the right of the operator is considered a POSIX e)
+144 493.2 R .182(xtended re)-.15 F .181(gular e)-.15 F .181
+(xpression and)-.15 F .207(matched accordingly \(as in)144 505.2 R F2
 -.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207
 (return v)2.707 F .207
-(alue is 0 if the string matches the pattern, and 1)-.25 F 3.345
-(otherwise. If)144 464.4 R .845(the re)3.345 F .845(gular e)-.15 F .846
+(alue is 0 if the string matches the pattern, and 1)-.25 F 3.346
+(otherwise. If)144 517.2 R .846(the re)3.346 F .846(gular e)-.15 F .845
 (xpression is syntactically incorrect, the conditional e)-.15 F
-(xpression')-.15 E 3.346(sr)-.55 G(eturn)-3.346 E -.25(va)144 476.4 S
-.667(lue is 2.).25 F .667(If the)5.667 F F3(nocasematch)3.167 E F0 .667
+(xpression')-.15 E 3.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 529.2 S
+.666(lue is 2.).25 F .667(If the)5.667 F F1(nocasematch)3.167 E F0 .667
 (shell option is enabled, the match is performed without re)3.167 F -.05
-(ga)-.15 G .666(rd to).05 F .592(the case of alphabetic characters.)144
-488.4 R(An)5.592 E 3.092(yp)-.15 G .593
-(art of the pattern may be quoted to force the quoted por)-3.092 F(-)-.2
-E 1.016(tion to be matched as a string.)144 500.4 R(Brack)6.016 E 1.016
+(ga)-.15 G .667(rd to).05 F .593(the case of alphabetic characters.)144
+541.2 R(An)5.593 E 3.093(yp)-.15 G .592
+(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2
+E 1.016(tion to be matched as a string.)144 553.2 R(Brack)6.016 E 1.016
 (et e)-.1 F 1.016(xpressions in re)-.15 F 1.016(gular e)-.15 F 1.016
-(xpressions must be treated care-)-.15 F(fully)144 512.4 Q 4.435(,s)-.65
-G 1.935
-(ince normal quoting characters lose their meanings between brack)-4.435
-F 4.436(ets. If)-.1 F 1.936(the pattern is)4.436 F .265
-(stored in a shell v)144 524.4 R .265(ariable, quoting the v)-.25 F .264
-(ariable e)-.25 F .264
-(xpansion forces the entire pattern to be matched as)-.15 F 3.773(as)144
-536.4 S 3.773(tring. Substrings)-3.773 F 1.274
-(matched by parenthesized sube)3.773 F 1.274(xpressions within the re)
--.15 F 1.274(gular e)-.15 F 1.274(xpression are)-.15 F(sa)144 548.4 Q
--.15(ve)-.2 G 3.097(di).15 G 3.097(nt)-3.097 G .597(he array v)-3.097 F
-(ariable)-.25 E F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0
-.597(The element of)5.097 F F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E
-F0 .597(with inde)2.847 F 3.097(x0)-.15 G(is)-.001 E .049
-(the portion of the string matching the entire re)144 560.4 R .049
-(gular e)-.15 F 2.549(xpression. The)-.15 F .05(element of)2.55 F F2
--.27(BA)2.55 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 572.4 Q(x)-.15
-E F1(n)2.5 E F0(is the portion of the string matching the)2.5 E F1(n)2.5
-E F0(th parenthesized sube)A(xpression.)-.15 E .786
-(Expressions may be combined using the follo)144 590.4 R .785
+(xpressions must be treated care-)-.15 F(fully)144 565.2 Q 4.436(,s)-.65
+G 1.936
+(ince normal quoting characters lose their meanings between brack)-4.436
+F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264
+(stored in a shell v)144 577.2 R .264(ariable, quoting the v)-.25 F .264
+(ariable e)-.25 F .265
+(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144
+589.2 S 3.774(tring. Substrings)-3.774 F 1.274
+(matched by parenthesized sube)3.774 F 1.273(xpressions within the re)
+-.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 601.2 Q
+-.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F
+(ariable)-.25 E F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0
+.597(The element of)5.097 F F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E
+F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049
+(the portion of the string matching the entire re)144 613.2 R .049
+(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 F F3
+-.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 625.2 Q(x)
+-.15 E F2(n)2.5 E F0(is the portion of the string matching the)2.5 E F2
+(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785
+(Expressions may be combined using the follo)144 643.2 R .786
 (wing operators, listed in decreasing order of prece-)-.25 F(dence:)144
-602.4 Q F3(\()144 620.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F3(\))
-2.5 E F0 .522(Returns the v)180 632.4 R .522(alue of)-.25 F F1 -.2(ex)
+655.2 Q F1(\()144 673.2 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(\))
+2.5 E F0 .523(Returns the v)180 685.2 R .522(alue of)-.25 F F2 -.2(ex)
 3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o)
 -5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F
-(operators.)180 644.4 Q F3(!)144 656.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession)
--.37 E F0 -.35(Tr)180 668.4 S(ue if).35 E F1 -.2(ex)2.5 G(pr).2 E
-(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F1 -.2(ex)144 680.4 S(pr).2 E
-(ession1)-.37 E F3(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0
--.35(Tr)180 692.4 S(ue if both).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1)
--.37 E F0(and)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.)
-2.52 E F1 -.2(ex)144 704.4 S(pr).2 E(ession1)-.37 E F3(||)2.5 E F1 -.2
-(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35
-E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr)
-.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(5)197.055 E 0 Cg EP
+(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E
+(5)193.455 E 0 Cg EP
 %%Page: 6 6
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The)144 84 Q/F1 10
-/Times-Bold@0 SF(&&)3.641 E F0(and)3.641 E F1(||)3.641 E F0 1.141
-(operators do not e)3.641 F -.25(va)-.25 G(luate).25 E/F2 10
-/Times-Italic@0 SF -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141
-(if the v)3.641 F 1.14(alue of)-.25 F F2 -.2(ex)3.64 G(pr).2 E(ession1)
--.37 E F0 1.14(is suf)3.64 F 1.14(\214cient to)-.25 F
-(determine the return v)144 96 Q(alue of the entire conditional e)-.25 E
-(xpression.)-.15 E F1 -.25(fo)108 112.8 S(r).25 E F2(name)2.5 E F0 2.5
-([[)2.5 G F1(in)A F0([)2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5
-(]];])2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .423
-(The list of w)144 124.8 R .423(ords follo)-.1 F(wing)-.25 E F1(in)2.923
-E F0 .423(is e)2.923 F .423(xpanded, generating a list of items.)-.15 F
-.424(The v)5.424 F(ariable)-.25 E F2(name)2.924 E F0 .424(is set to)
-2.924 F .653(each element of this list in turn, and)144 136.8 R F2(list)
-3.153 E F0 .653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F
-.653(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653
-(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .648(command e)
-144 148.8 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(!)144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 E
+F0 -.35(Tr)180 96 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0
+(is f)2.74 E(alse.)-.1 E F2 -.2(ex)144 108 S(pr).2 E(ession1)-.37 E F1
+(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 120 S
+(ue if both).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(and)2.5 E F2
+-.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.)2.52 E F2 -.2(ex)144
+132 S(pr).2 E(ession1)-.37 E F1(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E
+(ession2)-.37 E F0 -.35(Tr)180 144 S(ue if either).35 E F2 -.2(ex)2.5 G
+(pr).2 E(ession1)-.37 E F0(or)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37
+E F0(is true.)2.52 E(The)144 160.8 Q F1(&&)3.64 E F0(and)3.64 E F1(||)
+3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E F2
+-.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141(if the v)3.641 F 1.141
+(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E(ession1)-.37 E F0 1.141
+(is suf)3.641 F 1.141(\214cient to)-.25 F(determine the return v)144
+172.8 Q(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1
+-.25(fo)108 189.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)
+2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2
+(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 201.6 R
+.424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F
+.423(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F
+(ariable)-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653
+(each element of this list in turn, and)144 213.6 R F2(list)3.153 E F0
+.653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653
+(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653
+(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e)
+144 225.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648
 (once for each positional parameter that is set \(see)3.148 F/F3 9
-/Times-Bold@0 SF -.666(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).)
--.25 E .154(The return status is the e)144 160.8 R .153
-(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653
-(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F
-(follo)144 172.8 Q(wing)-.25 E F1(in)2.5 E F0
+/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).)
+-.25 E .153(The return status is the e)144 237.6 R .153
+(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654
+(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F
+(follo)144 249.6 Q(wing)-.25 E F1(in)2.5 E F0
 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G
-(cuted, and the return status is 0.).15 E F1 -.25(fo)108 189.6 S(r).25 E
+(cuted, and the return status is 0.).15 E F1 -.25(fo)108 266.4 S(r).25 E
 F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2
 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2
-(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.235(First, the arithmetic e)
-144 201.6 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e)
-3.735 F -.25(va)-.25 G 1.236
-(luated according to the rules described belo).25 F 3.736(wu)-.25 G
-(nder)-3.736 E F3 .562(ARITHMETIC EV)144 213.6 R(ALU)-1.215 E -.855(AT)
--.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e)
-5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e)
-3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144
-225.6 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 F
+(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e)
+144 278.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e)
+3.736 F -.25(va)-.25 G 1.235
+(luated according to the rules described belo).25 F 3.735(wu)-.25 G
+(nder)-3.735 E F3 .561(ARITHMETIC EV)144 290.4 R(ALU)-1.215 E -.855(AT)
+-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e)
+5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e)
+3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144
+302.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F
 F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592
-(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e)
-3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144
-237.6 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 F
+(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e)
+3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144
+314.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F
 -.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229
 (xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G
-2.729(si)-2.729 G 2.729(fi)-2.729 G 2.728(te)-2.729 G -.25(va)-2.978 G
-.228(luates to 1.).25 F .227(The return v)144 249.6 R .227
-(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2
-(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f)
-.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728
-E -.15(ex)144 261.6 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1
-(select)108 278.4 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)
+2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G
+.229(luates to 1.).25 F .228(The return v)144 326.4 R .228
+(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2
+(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f)
+.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727
+E -.15(ex)144 338.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1
+(select)108 355.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)
 -.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0
-.433(The list of w)144 290.4 R .433(ords follo)-.1 F(wing)-.25 E F1(in)
-2.933 E F0 .432(is e)2.933 F .432(xpanded, generating a list of items.)
--.15 F .432(The set of e)5.432 F .432(xpanded w)-.15 F(ords)-.1 E .842
-(is printed on the standard error)144 302.4 R 3.342(,e)-.4 G .842
+.432(The list of w)144 367.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in)
+2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.)
+-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843
+(is printed on the standard error)144 379.2 R 3.342(,e)-.4 G .842
 (ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he)
--3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .843
-(is omitted, the posi-)3.343 F .201(tional parameters are printed \(see)
-144 314.4 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701
+-3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842
+(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see)
+144 391.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701
 (w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a)
-2.451 F .213(line read from the standard input.)144 326.4 R .213
-(If the line consists of a number corresponding to one of the dis-)5.213
-F 1.538(played w)144 338.4 R 1.538(ords, then the v)-.1 F 1.538(alue of)
--.25 F F2(name)4.398 E F0 1.537(is set to that w)4.218 F 4.037(ord. If)
--.1 F 1.537(the line is empty)4.037 F 4.037(,t)-.65 G 1.537(he w)-4.037
-F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 350.4 R 2.565
-(ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An)
-5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25
-F F2(name)144.36 362.4 Q F0 .954(to be set to null.)3.634 F .954
-(The line read is sa)5.954 F -.15(ve)-.2 G 3.453(di).15 G 3.453(nt)
--3.453 G .953(he v)-3.453 F(ariable)-.25 E F3(REPL)3.453 E(Y)-.828 E F4
-(.)A F0(The)5.453 E F2(list)3.543 E F0 .953(is e)4.133 F -.15(xe)-.15 G
-.953(cuted after).15 F .071(each selection until a)144 374.4 R F1(br)
+2.451 F .214(line read from the standard input.)144 403.2 R .213
+(If the line consists of a number corresponding to one of the dis-)5.214
+F 1.537(played w)144 415.2 R 1.537(ords, then the v)-.1 F 1.537(alue of)
+-.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If)
+-.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038
+F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 427.2 R 2.566
+(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An)
+5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25
+F F2(name)144.36 439.2 Q F0 .953(to be set to null.)3.633 F .953
+(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt)
+-3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4
+(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G
+.954(cuted after).15 F .072(each selection until a)144 451.2 R F1(br)
 2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571
 (cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select)
-2.571 E F0 .071(is the e)2.571 F .072(xit status of the)-.15 F
-(last command e)144 386.4 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E
+2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F
+(last command e)144 463.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E
 F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe)
--.15 G(cuted.).15 E F1(case)108 403.2 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5
-F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2
+-.15 G(cuted.).15 E F1(case)108 480 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E
+F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2
 (pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...)
-2.5 E F1(esac)2.5 E F0(A)144 415.2 Q F1(case)3.265 E F0 .764
-(command \214rst e)3.265 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0
+2.5 E F1(esac)2.5 E F0(A)144 492 Q F1(case)3.264 E F0 .764
+(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0
 3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F
-F2(pattern)3.264 E F0 .764(in turn, using the)3.264 F .595
-(same matching rules as for pathname e)144 427.2 R .595(xpansion \(see)
--.15 F F1 -.1(Pa)3.095 G .596(thname Expansion).1 F F0(belo)3.096 E
-3.096(w\). The)-.25 F F2(wor)3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144
-439.2 S 1.72(panded using tilde e).15 F 1.72(xpansion, parameter and v)
--.15 F 1.72(ariable e)-.25 F 1.72(xpansion, arithmetic e)-.15 F 1.72
-(xpansion, com-)-.15 F 1.268
-(mand substitution, process substitution and quote remo)144 451.2 R -.25
-(va)-.15 G 3.768(l. Each).25 F F2(pattern)3.768 E F0 -.15(ex)3.768 G
-1.269(amined is e).15 F(xpanded)-.15 E .203(using tilde e)144 463.2 R
-.203(xpansion, parameter and v)-.15 F .203(ariable e)-.25 F .203
-(xpansion, arithmetic e)-.15 F .203(xpansion, command substitu-)-.15 F
-.232(tion, and process substitution.)144 475.2 R .233(If the)5.233 F F1
-(nocasematch)2.733 E F0 .233
-(shell option is enabled, the match is performed)2.733 F .234
-(without re)144 487.2 R -.05(ga)-.15 G .234
-(rd to the case of alphabetic characters.).05 F .234
-(When a match is found, the corresponding)5.234 F F2(list)2.734 E F0
-.625(is e)144 499.2 R -.15(xe)-.15 G 3.125(cuted. If).15 F(the)3.125 E
-F1(;;)3.125 E F0 .625(operator is used, no subsequent matches are attem\
-pted after the \214rst pattern)3.125 F 2.932(match. Using)144 511.2 R F1
-(;&)2.932 E F0 .432(in place of)2.932 F F1(;;)2.932 E F0 .432(causes e)
-2.932 F -.15(xe)-.15 G .432(cution to continue with the).15 F F2(list)
-2.932 E F0 .431(associated with the ne)2.931 F(xt)-.15 E .866
-(set of patterns.)144 523.2 R(Using)5.866 E F1(;;&)3.366 E F0 .866
-(in place of)3.366 F F1(;;)3.366 E F0 .866
-(causes the shell to test the ne)3.366 F .866
-(xt pattern list in the state-)-.15 F .878(ment, if an)144 535.2 R 2.178
--.65(y, a)-.15 H .878(nd e).65 F -.15(xe)-.15 G .878(cute an).15 F 3.378
-(ya)-.15 G(ssociated)-3.378 E F2(list)3.378 E F0 .878
-(on a successful match.)3.378 F .878(The e)5.878 F .877
-(xit status is zero if no)-.15 F(pattern matches.)144 547.2 Q
-(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E -.15
-(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2(list)
-2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list)
-2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1
-(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if)
-2.977 E F2(list)3.067 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978
-(cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F
-F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G
-2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.978 E F2(list)2.978
-E F0 1.088(is e)144 588 R -.15(xe)-.15 G 1.088
-(cuted in turn, and if its e).15 F 1.087
+F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F 2.218
+(matching rules described under)144 504 R F1 -.1(Pa)4.718 G(tter).1 E
+4.718(nM)-.15 G(atching)-4.718 E F0(belo)4.718 E 6.017 -.65(w. T)-.25 H
+(he).65 E F2(wor)4.717 E(d)-.37 E F0 2.217(is e)4.717 F 2.217
+(xpanded using tilde)-.15 F -.15(ex)144 516 S 3.968
+(pansion, parameter and v).15 F 3.969(ariable e)-.25 F 3.969
+(xpansion, arithmetic e)-.15 F 3.969(xpansion, command substitution,)
+-.15 F .042(process substitution and quote remo)144 528 R -.25(va)-.15 G
+2.542(l. Each).25 F F2(pattern)2.542 E F0 -.15(ex)2.542 G .042
+(amined is e).15 F .041(xpanded using tilde e)-.15 F(xpansion,)-.15 E .8
+(parameter and v)144 540 R .8(ariable e)-.25 F .8
+(xpansion, arithmetic e)-.15 F .8
+(xpansion, command substitution, and process sub-)-.15 F 2.583
+(stitution. If)144 552 R(the)2.583 E F1(nocasematch)2.583 E F0 .083
+(shell option is enabled, the match is performed without re)2.583 F -.05
+(ga)-.15 G .082(rd to the).05 F .278(case of alphabetic characters.)144
+564 R .279(When a match is found, the corresponding)5.278 F F2(list)
+2.779 E F0 .279(is e)2.779 F -.15(xe)-.15 G 2.779(cuted. If).15 F(the)
+2.779 E F1(;;)2.779 E F0 .812(operator is used, no subsequent matches a\
+re attempted after the \214rst pattern match.)144 576 R(Using)5.812 E F1
+(;&)3.312 E F0(in)3.312 E .007(place of)144 588 R F1(;;)2.507 E F0 .007
+(causes e)2.507 F -.15(xe)-.15 G .007(cution to continue with the).15 F
+F2(list)2.507 E F0 .007(associated with the ne)2.507 F .007
+(xt set of patterns.)-.15 F(Using)5.008 E F1(;;&)144 600 Q F0 .561
+(in place of)3.061 F F1(;;)3.061 E F0 .561
+(causes the shell to test the ne)3.061 F .56
+(xt pattern list in the statement, if an)-.15 F 1.86 -.65(y, a)-.15 H
+.56(nd e).65 F -.15(xe)-.15 G(cute).15 E(an)144 612 Q 2.568(ya)-.15 G
+(ssociated)-2.568 E F2(list)2.568 E F0 .068(on a successful match.)2.568
+F .068(The e)5.068 F .068(xit status is zero if no pattern matches.)-.15
+F(Otherwise,)5.069 E(it is the e)144 624 Q
+(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E
+F2(list)2.5 E F0(.)A F1(if)108 640.8 Q F2(list)2.5 E F0(;)A F1(then)2.5
+E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E
+F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0
+2.5(;])C F1<8c>A F0(The)144 652.8 Q F1(if)2.978 E F2(list)3.068 E F0
+.478(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978
+F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0
+.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)
+2.978 E F1(elif)2.977 E F2(list)2.977 E F0 1.087(is e)144 664.8 R -.15
+(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087
 (xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list)
-3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F
-.103(command completes.)144 600 R .103(Otherwise, the)5.103 F F1(else)
+3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F
+.104(command completes.)144 676.8 R .103(Otherwise, the)5.104 F F1(else)
 2.603 E F2(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103
 (cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e)
--.15 F .104(xit sta-)-.15 F(tus of the last command e)144 612 Q -.15(xe)
--.15 G(cuted, or zero if no condition tested true.).15 E F1(while)108
-628.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1
-(done)2.5 E(until)108 640.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2
-(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 652.8 Q F1(while)3.45 E F0
-.95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15
-F F2(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F
-F2(list-1)144 664.8 Q F0 .205(returns an e)2.705 F .205
-(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205
-(command is identical to the)2.705 F F1(while)2.705 E F0 .205
-(command, e)2.705 F(xcept)-.15 E .6(that the test is ne)144 676.8 R -.05
-(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F -.15(xe)-.15 G
-.599(cuted as long as the last command in).15 F F2(list-1)3.189 E F0
-.599(returns a non-zero)3.099 F -.15(ex)144 688.8 S .204(it status.).15
-F .204(The e)5.204 F .204(xit status of the)-.15 F F1(while)2.704 E F0
-(and)2.704 E F1(until)2.704 E F0 .205(commands is the e)2.704 F .205
-(xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15
-E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)
--.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(6)197.055 E 0 Cg EP
+-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 688.8 Q -.15
+(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while)
+108 705.6 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1
+(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(6)193.455
+E 0 Cg EP
 %%Page: 7 7
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Copr)87 84 Q(ocesses)-.18 E F0(A)108 96 Q/F2 10/Times-Italic@0 SF
-(copr)3.713 E(ocess)-.45 E F0 1.213(is a shell command preceded by the)
-3.713 F F1(copr)3.712 E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F
-3.712(ord. A)-.1 F 1.212(coprocess is e)3.712 F -.15(xe)-.15 G 1.212
-(cuted asyn-).15 F .574(chronously in a subshell, as if the command had\
- been terminated with the)108 108 R F1(&)3.075 E F0 .575
-(control operator)3.075 F 3.075(,w)-.4 G .575(ith a tw)-3.075 F(o-)-.1 E
--.1(wa)108 120 S 2.5(yp).1 G(ipe established between the e)-2.5 E -.15
-(xe)-.15 G(cuting shell and the coprocess.).15 E
-(The format for a coprocess is:)108 136.8 Q F1(copr)144 153.6 Q(oc)-.18
-E F0([)2.5 E F2 -.27(NA)C(ME).27 E F0(])A F2(command)2.5 E F0([)2.5 E F2
--.37(re)C(dir).37 E(ections)-.37 E F0(])A .709
-(This creates a coprocess named)108 170.4 R F2 -.27(NA)3.208 G(ME).27 E
-F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708
-(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208
-E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64
-(must not be supplied if)108 182.4 R F2(command)3.14 E F0 .64(is a)3.14
+SF(until)108 84 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5
+E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 96 Q F1(while)3.45 E
+F0 .95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list)
+.15 F F2(list-2)3.45 E F0 .95(as long as the last command in the list)
+3.45 F F2(list-1)144 108 Q F0 .205(returns an e)2.705 F .205
+(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205
+(command is identical to the)2.705 F F1(while)2.705 E F0 .205
+(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 120 R -.05
+(ga)-.15 G(ted:).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15(xe)
+-.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 E F0
+.6(returns a non-zero)3.1 F -.15(ex)144 132 S .205(it status.).15 F .205
+(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0(and)
+2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204
+(xit status of the last command)-.15 F -.15(exe)144 144 S(cuted in).15 E
+F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)-.1
+E -.15(xe)-.15 G(cuted.).15 E F1(Copr)87 160.8 Q(ocesses)-.18 E F0(A)108
+172.8 Q F2(copr)3.712 E(ocess)-.45 E F0 1.212
+(is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0
+(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213
+(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\
+onously in a subshell, as if the command had been terminated with the)
+108 184.8 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G
+.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 196.8 S 2.5(yp).1 G
+(ipe established between the e)-2.5 E -.15(xe)-.15 G
+(cuting shell and the coprocess.).15 E(The format for a coprocess is:)
+108 213.6 Q F1(copr)144 230.4 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27
+E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37
+E F0(])A .708(This creates a coprocess named)108 247.2 R F2 -.27(NA)
+3.208 G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0
+.708(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)
+3.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64
+(must not be supplied if)108 259.2 R F2(command)3.14 E F0 .64(is a)3.14
 F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G
 .64(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108
-194.4 S 1.44(rd of the simple command.).1 F 1.44
+271.2 S 1.44(rd of the simple command.).1 F 1.44
 (When the coprocess is e)6.44 F -.15(xe)-.15 G 1.44
 (cuted, the shell creates an array v).15 F 1.44(ariable \(see)-.25 F F1
-(Arrays)108 206.4 Q F0(belo)3.67 E 1.17(w\) named)-.25 F F2 -.27(NA)3.67
-G(ME).27 E F0 1.17(in the conte)3.67 F 1.171(xt of the e)-.15 F -.15(xe)
--.15 G 1.171(cuting shell.).15 F 1.171(The standard output of)6.171 F F2
-(command)3.871 E F0(is)4.441 E 2.029
-(connected via a pipe to a \214le descriptor in the e)108 218.4 R -.15
+(Arrays)108 283.2 Q F0(belo)3.671 E 1.171(w\) named)-.25 F F2 -.27(NA)
+3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F
+-.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of)
+6.17 F F2(command)3.87 E F0(is)4.44 E 2.029
+(connected via a pipe to a \214le descriptor in the e)108 295.2 R -.15
 (xe)-.15 G 2.029
 (cuting shell, and that \214le descriptor is assigned to).15 F F2 -.27
-(NA)108 230.4 S(ME).27 E F0 3.856([0]. The)B 1.356(standard input of)
-3.856 F F2(command)4.056 E F0 1.357
-(is connected via a pipe to a \214le descriptor in the e)4.626 F -.15
+(NA)108 307.2 S(ME).27 E F0 3.857([0]. The)B 1.357(standard input of)
+3.857 F F2(command)4.057 E F0 1.356
+(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15
 (xe)-.15 G(cuting).15 E .103
-(shell, and that \214le descriptor is assigned to)108 242.4 R F2 -.27
+(shell, and that \214le descriptor is assigned to)108 319.2 R F2 -.27
 (NA)2.603 G(ME).27 E F0 2.603([1]. This)B .103
-(pipe is established before an)2.603 F 2.603(yr)-.15 G .103
-(edirections spec-)-2.603 F 1.271(i\214ed by the command \(see)108 254.4
+(pipe is established before an)2.603 F 2.604(yr)-.15 G .104
+(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 331.2
 R/F3 9/Times-Bold@0 SF(REDIRECTION)3.771 E F0(belo)3.521 E 3.771
 (w\). The)-.25 F 1.271(\214le descriptors can be utilized as ar)3.771 F
-1.272(guments to)-.18 F .515
-(shell commands and redirections using standard w)108 266.4 R .515
-(ord e)-.1 F 3.015(xpansions. The)-.15 F .515
-(\214le descriptors are not a)3.015 F -.25(va)-.2 G .515(ilable in).25 F
-3.636(subshells. The)108 278.4 R 1.136(process ID of the shell spa)3.636
-F 1.137(wned to e)-.15 F -.15(xe)-.15 G 1.137(cute the coprocess is a)
-.15 F -.25(va)-.2 G 1.137(ilable as the v).25 F 1.137(alue of the)-.25 F
--.25(va)108 290.4 S(riable).25 E F2 -.27(NA)2.5 G(ME).27 E F0 2.5
-(_PID. The)B F1(wait)2.5 E F0 -.2(bu)2.5 G
-(iltin command may be used to w).2 E
+1.271(guments to)-.18 F 1.719
+(shell commands and redirections using standard w)108 343.2 R 1.719
+(ord e)-.1 F 4.219(xpansions. Other)-.15 F 1.72(than those created to e)
+4.219 F -.15(xe)-.15 G(cute).15 E .945
+(command and process substitutions, the \214le descriptors are not a)108
+355.2 R -.25(va)-.2 G .945(ilable in subshells.).25 F .944
+(The process ID of)5.944 F .597(the shell spa)108 367.2 R .597
+(wned to e)-.15 F -.15(xe)-.15 G .597(cute the coprocess is a).15 F -.25
+(va)-.2 G .597(ilable as the v).25 F .597(alue of the v)-.25 F(ariable)
+-.25 E F2 -.27(NA)3.097 G(ME).27 E F0 3.097(_PID. The)B F1(wait)3.098 E
+F0 -.2(bu)108 379.2 S(iltin command may be used to w).2 E
 (ait for the coprocess to terminate.)-.1 E .336
-(Since the coprocess is created as an asynchronous command, the)108
-307.2 R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1
-G .335(ys returns success.).1 F
-(The return status of a coprocess is the e)108 319.2 Q(xit status of)
--.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 336 Q
-F0 2.697(As)108 348 S .198
+(Since the coprocess is created as an asynchronous command, the)108 396
+R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 G .335
+(ys returns success.).1 F(The return status of a coprocess is the e)108
+408 Q(xit status of)-.15 E F2(command)2.5 E F0(.)A F1
+(Shell Function De\214nitions)87 424.8 Q F0 2.697(As)108 436.8 S .198
 (hell function is an object that is called lik)-2.697 F 2.698(eas)-.1 G
 .198(imple command and e)-2.698 F -.15(xe)-.15 G .198
-(cutes a compound command with).15 F 2.5(an)108 360 S .5 -.25(ew s)-2.5
-H(et of positional parameters.).25 E
-(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 376.8
+(cutes a compound command with).15 F 2.5(an)108 448.8 S .5 -.25(ew s)
+-2.5 H(et of positional parameters.).25 E
+(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 465.6
 Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C
-(dir).37 E(ection)-.37 E F0(])A F1(function)108 388.8 Q F2(name)2.5 E F0
+(dir).37 E(ection)-.37 E F0(])A F1(function)108 477.6 Q F2(name)2.5 E F0
 ([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C(dir)
 .37 E(ection)-.37 E F0(])A 1.403(This de\214nes a function named)144
-400.8 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402
+489.6 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402
 (ed w)-.15 F(ord)-.1 E F1(function)3.902 E F0 1.402(is optional.)3.902 F
-1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 412.8 Q .162
+1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 501.6 Q .162
 (ed w)-.15 F .162(ord is supplied, the parentheses are optional.)-.1 F
 (The)5.162 E F2(body)2.662 E F0 .162(of the function is the compound)
-2.662 F(command)144 424.8 Q F2(compound\255command)2.784 E F0(\(see)
+2.662 F(command)144 513.6 Q F2(compound\255command)2.784 E F0(\(see)
 3.354 E F1 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G
-2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 436.8
+2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 525.6
 Q F0 .044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F
 2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044
-(Compound Commands)2.544 F F0(abo)144 448.8 Q -.15(ve)-.15 G 2.902(,w)
+(Compound Commands)2.544 F F0(abo)144 537.6 Q -.15(ve)-.15 G 2.902(,w)
 .15 G .402(ith one e)-2.902 F .402(xception: If the)-.15 F F1(function)
 2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F
 .401(ut the parentheses are not sup-)-.2 F .047
-(plied, the braces are required.)144 460.8 R F2(compound\255command)
+(plied, the braces are required.)144 549.6 R F2(compound\255command)
 5.047 E F0 .047(is e)2.547 F -.15(xe)-.15 G .047(cuted whene).15 F -.15
 (ve)-.25 G(r).15 E F2(name)2.547 E F0 .047(is speci\214ed as the)2.547 F
-1.68(name of a simple command.)144 472.8 R 1.68(When in)6.68 F F2 1.68
+1.68(name of a simple command.)144 561.6 R 1.68(When in)6.68 F F2 1.68
 (posix mode)4.18 F F0(,)A F2(name)4.179 E F0 1.679
-(may not be the name of one of the)4.179 F(POSIX)144 484.8 Q F2 .014
+(may not be the name of one of the)4.179 F(POSIX)144 573.6 Q F2 .014
 (special b)2.513 F(uiltins)-.2 E F0 5.014(.A)C .314 -.15(ny r)-5.014 H
 .014(edirections \(see).15 F F3(REDIRECTION)2.514 E F0(belo)2.264 E .014
 (w\) speci\214ed when a function is)-.25 F 1.12
-(de\214ned are performed when the function is e)144 496.8 R -.15(xe)-.15
+(de\214ned are performed when the function is e)144 585.6 R -.15(xe)-.15
 G 3.619(cuted. The).15 F -.15(ex)3.619 G 1.119
 (it status of a function de\214nition is).15 F .217(zero unless a synta\
 x error occurs or a readonly function with the same name already e)144
-508.8 R 2.717(xists. When)-.15 F -.15(exe)144 520.8 S .546(cuted, the e)
+597.6 R 2.717(xists. When)-.15 F -.15(exe)144 609.6 S .546(cuted, the e)
 .15 F .546(xit status of a function is the e)-.15 F .545
 (xit status of the last command e)-.15 F -.15(xe)-.15 G .545
-(cuted in the body).15 F(.)-.65 E(\(See)144 532.8 Q F3(FUNCTIONS)2.5 E
+(cuted in the body).15 F(.)-.65 E(\(See)144 621.6 Q F3(FUNCTIONS)2.5 E
 F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF
-(COMMENTS)72 549.6 Q F0 .982(In a non-interacti)108 561.6 R 1.282 -.15
+(COMMENTS)72 638.4 Q F0 .982(In a non-interacti)108 650.4 R 1.282 -.15
 (ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H
 .982(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G
 (_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2
-(bu)108 573.6 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F
+(bu)108 662.4 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F
 (UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25
 F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951
 (causes that w)3.451 F(ord)-.1 E .604
-(and all remaining characters on that line to be ignored.)108 585.6 R
+(and all remaining characters on that line to be ignored.)108 674.4 R
 .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the)
-.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 597.6 Q F0
+.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 686.4 Q F0
 1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836
 (omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E
 F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108
-609.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 626.4 S -.438(OT)
-.11 G(ING).438 E F2(Quoting)108 638.4 Q F0 .477(is used to remo)2.977 F
-.777 -.15(ve t)-.15 H .477
-(he special meaning of certain characters or w).15 F .477
-(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185
-(used to disable special treatment for special characters, to pre)108
-650.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184
-(ords from being recognized as)-.1 F(such, and to pre)108 662.4 Q -.15
-(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108
-679.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288
-(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS)
-2.788 E F0 .288(has special meaning to the shell and must be)2.538 F
-(quoted if it is to represent itself.)108 691.2 Q 1.345
-(When the command history e)108 708 R 1.344(xpansion f)-.15 F 1.344
-(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594
-(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the)
--.25 F F2(history e)108 720 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u)
--.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E
--.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(7)197.055 E 0 Cg EP
+698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(7)193.455 E 0 Cg EP
 %%Page: 8 8
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(There are three quoting mechanisms: the)108 84 Q/F1 10/Times-Italic@0
-SF(escape c)2.5 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G
-(ingle quotes, and double quotes.)-2.5 E 2.974(An)108 100.8 S .474
-(on-quoted backslash \()-2.974 F/F2 10/Times-Bold@0 SF(\\)A F0 2.974
-(\)i)C 2.974(st)-2.974 G(he)-2.974 E F1 .474(escape c)2.974 F(har)-.15 E
-(acter)-.15 E F0 5.474(.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474
-(es the literal v)-.15 F .474(alue of the ne)-.25 F .475
-(xt character that)-.15 F(follo)108 112.8 Q 1.554(ws, with the e)-.25 F
-1.553(xception of <ne)-.15 F 4.053(wline>. If)-.25 F(a)4.053 E F2(\\)
-4.053 E F0(<ne)A 1.553
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
+/Times-Bold@0 SF -.11(QU)72 84 S -.438(OT).11 G(ING).438 E/F2 10
+/Times-Italic@0 SF(Quoting)108 96 Q F0 .477(is used to remo)2.977 F .777
+-.15(ve t)-.15 H .477(he special meaning of certain characters or w).15
+F .477(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185
+(used to disable special treatment for special characters, to pre)108
+108 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184
+(ords from being recognized as)-.1 F(such, and to pre)108 120 Q -.15(ve)
+-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 136.8
+R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288(listed abo)
+2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF
+(DEFINITIONS)2.788 E F0 .288
+(has special meaning to the shell and must be)2.538 F
+(quoted if it is to represent itself.)108 148.8 Q 1.345
+(When the command history e)108 165.6 R 1.344(xpansion f)-.15 F 1.344
+(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594
+(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the)
+-.25 F F2(history e)108 177.6 Q(xpansion)-.2 E F0(character)2.5 E 2.5
+(,u)-.4 G(sually)-2.5 E/F4 10/Times-Bold@0 SF(!)2.5 E F0 2.5(,m)C
+(ust be quoted to pre)-2.5 E -.15(ve)-.25 G(nt history e).15 E
+(xpansion.)-.15 E(There are three quoting mechanisms: the)108 194.4 Q F2
+(escape c)2.5 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G
+(ingle quotes, and double quotes.)-2.5 E 2.974(An)108 211.2 S .474
+(on-quoted backslash \()-2.974 F F4(\\)A F0 2.974(\)i)C 2.974(st)-2.974
+G(he)-2.974 E F2 .474(escape c)2.974 F(har)-.15 E(acter)-.15 E F0 5.474
+(.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474(es the literal v)-.15 F
+.474(alue of the ne)-.25 F .475(xt character that)-.15 F(follo)108 223.2
+Q 1.554(ws, with the e)-.25 F 1.553(xception of <ne)-.15 F 4.053
+(wline>. If)-.25 F(a)4.053 E F4(\\)4.053 E F0(<ne)A 1.553
 (wline> pair appears, and the backslash is not itself)-.25 F 1.122
-(quoted, the)108 124.8 R F2(\\)3.622 E F0(<ne)A 1.122
+(quoted, the)108 235.2 R F4(\\)3.622 E F0(<ne)A 1.122
 (wline> is treated as a line continuation \(that is, it is remo)-.25 F
 -.15(ve)-.15 G 3.622(df).15 G 1.123(rom the input stream and)-3.622 F
-(ef)108 136.8 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295
-(Enclosing characters in single quotes preserv)108 153.6 R .295
+(ef)108 247.2 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295
+(Enclosing characters in single quotes preserv)108 264 R .295
 (es the literal v)-.15 F .295(alue of each character within the quotes.)
 -.25 F 2.795(As)5.295 G(in-)-2.795 E
-(gle quote may not occur between single quotes, e)108 165.6 Q -.15(ve)
--.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033
-(Enclosing characters in double quotes preserv)108 182.4 R .034
+(gle quote may not occur between single quotes, e)108 276 Q -.15(ve)-.25
+G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033
+(Enclosing characters in double quotes preserv)108 292.8 R .034
 (es the literal v)-.15 F .034
 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108
-194.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A
-F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107
-(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107
-(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C
-(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F 1.397
-(special meaning within double quotes, e)108 206.4 R -.15(ve)-.25 G
+304.8 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A
+F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107
+(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107
+(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C
+(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F 1.397
+(special meaning within double quotes, e)108 316.8 R -.15(ve)-.25 G
 3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.)
--.15 F 1.398(The characters)6.398 F F2($)3.898 E F0(and)3.898 E F2<92>
+-.15 F 1.398(The characters)6.398 F F4($)3.898 E F0(and)3.898 E F4<92>
 3.898 E F0 .045(retain their special meaning within double quotes.)108
-218.4 R .044(The backslash retains its special meaning only when fol-)
-5.045 F(lo)108 230.4 Q .601(wed by one of the follo)-.25 F .602
-(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(")
-3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2(<newline>)
+328.8 R .044(The backslash retains its special meaning only when fol-)
+5.045 F(lo)108 340.8 Q .601(wed by one of the follo)-.25 F .602
+(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(")
+3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4(<newline>)
 3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131
-(double quotes by preceding it with a backslash.)108 242.4 R .131
+(double quotes by preceding it with a backslash.)108 352.8 R .131
 (If enabled, history e)5.131 F .13(xpansion will be performed unless an)
--.15 F F2(!)2.63 E F0
-(appearing in double quotes is escaped using a backslash.)108 254.4 Q
-(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve)
--.15 G(d.).15 E(The special parameters)108 271.2 Q F2(*)2.5 E F0(and)2.5
-E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H
-(pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF
--.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 288
-S .211(rds of the form).8 F F2($)2.711 E F0<08>A F1(string)A F0 2.711
-<0861>C .211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)
--5.211 F .211(ord e)-.1 F .212(xpands to)-.15 F F1(string)2.712 E F0
-2.712(,w)C .212(ith backslash-escaped char)-2.712 F(-)-.2 E .605
-(acters replaced as speci\214ed by the ANSI C standard.)108 300 R .604
+-.15 F F4(!)2.63 E F0
+(appearing in double quotes is escaped using a backslash.)108 364.8 Q
+(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve)
+-.15 G(d.).15 E(The special parameters)108 381.6 Q F4(*)2.5 E F0(and)2.5
+E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H
+(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G
+(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 398.4 S .211
+(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C
+.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F
+.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C
+.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605
+(acters replaced as speci\214ed by the ANSI C standard.)108 410.4 R .604
 (Backslash escape sequences, if present, are decoded)5.605 F(as follo)
-108 312 Q(ws:)-.25 E F2(\\a)144 324 Q F0(alert \(bell\))180 324 Q F2
-(\\b)144 336 Q F0(backspace)180 336 Q F2(\\e)144 348 Q(\\E)144 360 Q F0
-(an escape character)180 360 Q F2(\\f)144 372 Q F0(form feed)180 372 Q
-F2(\\n)144 384 Q F0(ne)180 384 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 396
-Q F0(carriage return)180 396 Q F2(\\t)144 408 Q F0(horizontal tab)180
-408 Q F2(\\v)144 420 Q F0 -.15(ve)180 420 S(rtical tab).15 E F2(\\\\)144
-432 Q F0(backslash)180 432 Q F2<5c08>144 444 Q F0(single quote)180 444 Q
-F2(\\")144 456 Q F0(double quote)180 456 Q F2(\\?)144 468 Q F0
-(question mark)180 468 Q F2(\\)144 480 Q F1(nnn)A F0
-(the eight-bit character whose v)180 480 Q(alue is the octal v)-.25 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
-492 Q F1(HH)A F0(the eight-bit character whose v)180 492 Q
-(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0
-(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2
-(\\u)144 504 Q F1(HHHH)A F0 1.506
-(the Unicode \(ISO/IEC 10646\) character whose v)180 516 R 1.507
-(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F1(HHHH)
-4.007 E F0(\(one to four he)180 528 Q 2.5(xd)-.15 G(igits\))-2.5 E F2
-(\\U)144 540 Q F1(HHHHHHHH)A F0 .548
-(the Unicode \(ISO/IEC 10646\) character whose v)180 552 R .547
-(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-)
-3.047 E(HHH)180 564 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\))
--2.5 E F2(\\c)144 576 Q F1(x)A F0 2.5(ac)180 576 S(ontrol-)-2.5 E F1(x)A
-F0(character)2.5 E(The e)108 592.8 Q(xpanded result is single-quoted, a\
-s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 609.6 S
-.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F2($)A F0
-(")A F1(string)A F0 .14
-("\) will cause the string to be translated according)B .496
-(to the current locale.)108 621.6 R .495(If the current locale is)5.496
-F F2(C)2.995 E F0(or)2.995 E F2(POSIX)2.995 E F0 2.995(,t)C .495
-(he dollar sign is ignored.)-2.995 F .495(If the string is trans-)5.495
-F(lated and replaced, the replacement is double-quoted.)108 633.6 Q/F4
-10.95/Times-Bold@0 SF -.81(PA)72 650.4 S(RAMETERS).81 E F0(A)108 662.4 Q
-F1(par)4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F
-3.342(alues. It)-.25 F .842(can be a)3.342 F F1(name)3.343 E F0 3.343
-(,an).18 G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843
-(ne of the special characters)-3.343 F .823(listed belo)108 674.4 R
-3.323(wu)-.25 G(nder)-3.323 E F2 .823(Special P)3.323 F(arameters)-.1 E
-F0 5.823(.A)C F1(variable)-2.21 E F0 .823(is a parameter denoted by a)
-3.503 F F1(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823
-(riable has a).25 F F1(value)108 686.4 Q F0 .368(and zero or more)2.868
-F F1(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369
-(utes are assigned using the)-.2 F F2(declar)2.869 E(e)-.18 E F0 -.2(bu)
-2.869 G .369(iltin command \(see).2 F F2(declar)2.869 E(e)-.18 E F0
-(belo)108 698.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E
-(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 715.2
-S .255(arameter is set if it has been assigned a v)-2.755 F 2.754
-(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F
-2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004
-F(may be unset only by using the)108 727.2 Q F2(unset)2.5 E F0 -.2(bu)
-2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
--.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(8)197.055 E 0 Cg EP
+108 422.4 Q(ws:)-.25 E F4(\\a)144 434.4 Q F0(alert \(bell\))180 434.4 Q
+F4(\\b)144 446.4 Q F0(backspace)180 446.4 Q F4(\\e)144 458.4 Q(\\E)144
+470.4 Q F0(an escape character)180 470.4 Q F4(\\f)144 482.4 Q F0
+(form feed)180 482.4 Q F4(\\n)144 494.4 Q F0(ne)180 494.4 Q 2.5(wl)-.25
+G(ine)-2.5 E F4(\\r)144 506.4 Q F0(carriage return)180 506.4 Q F4(\\t)
+144 518.4 Q F0(horizontal tab)180 518.4 Q F4(\\v)144 530.4 Q F0 -.15(ve)
+180 530.4 S(rtical tab).15 E F4(\\\\)144 542.4 Q F0(backslash)180 542.4
+Q F4<5c08>144 554.4 Q F0(single quote)180 554.4 Q F4(\\")144 566.4 Q F0
+(double quote)180 566.4 Q F4(\\?)144 578.4 Q F0(question mark)180 578.4
+Q F4(\\)144 590.4 Q F2(nnn)A F0(the eight-bit character whose v)180
+590.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
+(\(one to three octal digits\))2.5 E F4(\\x)144 602.4 Q F2(HH)A F0
+(the eight-bit character whose v)180 602.4 Q(alue is the he)-.25 E
+(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
+-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 614.4 Q F2(HHHH)A F0
+1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 626.4 R 1.507
+(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.007 E F0(\(one to four he)180 638.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F4
+(\\U)144 650.4 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 662.4 R .547
+(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.047 E(HHH)180 674.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
+(igits\))-2.5 E F4(\\c)144 686.4 Q F2(x)A F0 2.5(ac)180 686.4 S(ontrol-)
+-2.5 E F2(x)A F0(character)2.5 E(The e)108 703.2 Q(xpanded result is si\
+ngle-quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad)
+108 720 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F
+F4($)A F0(")A F2(string)A F0 .14
+("\) will cause the string to be translated according)B(GNU Bash 5.0)72
+768 Q(2018 December 7)139.295 E(8)193.455 E 0 Cg EP
 %%Page: 9 9
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(A)108 84 Q/F1 10
-/Times-Italic@0 SF(variable)2.79 E F0
-(may be assigned to by a statement of the form)2.68 E F1(name)144 100.8
-Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.022 E F0 .232
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .496
+(to the current locale.)108 84 R .495(If the current locale is)5.496 F
+/F1 10/Times-Bold@0 SF(C)2.995 E F0(or)2.995 E F1(POSIX)2.995 E F0 2.995
+(,t)C .495(he dollar sign is ignored.)-2.995 F .495
+(If the string is trans-)5.495 F
+(lated and replaced, the replacement is double-quoted.)108 96 Q/F2 10.95
+/Times-Bold@0 SF -.81(PA)72 112.8 S(RAMETERS).81 E F0(A)108 124.8 Q/F3
+10/Times-Italic@0 SF(par)4.592 E(ameter)-.15 E F0 .842
+(is an entity that stores v)4.072 F 3.342(alues. It)-.25 F .842
+(can be a)3.342 F F3(name)3.343 E F0 3.343(,an).18 G(umber)-3.343 E
+3.343(,o)-.4 G 3.343(ro)-3.343 G .843(ne of the special characters)
+-3.343 F .823(listed belo)108 136.8 R 3.323(wu)-.25 G(nder)-3.323 E F1
+.823(Special P)3.323 F(arameters)-.1 E F0 5.823(.A)C F3(variable)-2.21 E
+F0 .823(is a parameter denoted by a)3.503 F F3(name)3.323 E F0 5.823(.A)
+.18 G -.25(va)-2.5 G .823(riable has a).25 F F3(value)108 148.8 Q F0
+.368(and zero or more)2.868 F F3(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C
+(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E
+(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar)
+2.869 E(e)-.18 E F0(belo)108 160.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9
+/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9
+/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 177.6 S .255
+(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The)
+-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754
+(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F
+(may be unset only by using the)108 189.6 Q F1(unset)2.5 E F0 -.2(bu)2.5
+G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
+-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 206.4 Q F3(variable)2.79 E F0
+(may be assigned to by a statement of the form)2.68 E F3(name)144 223.2
+Q F0(=[)A F3(value)A F0(])A(If)108 240 Q F3(value)3.022 E F0 .232
 (is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232
-(ariable is assigned the null string.)-.25 F(All)5.233 E F1(values)3.023
+(ariable is assigned the null string.)-.25 F(All)5.233 E F3(values)3.023
 E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15
-F .515(and v)108 129.6 R .515(ariable e)-.25 F .515
+F .515(and v)108 252 R .515(ariable e)-.25 F .515
 (xpansion, command substitution, arithmetic e)-.15 F .515
 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see)
--3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108
-141.6 Q 2.698(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its)
--.25 F/F3 10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198
-(ute set, then)-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25
-G .199(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve)
--.25 G(n).15 E .902(if the $\(\(...\)\) e)108 153.6 R .902
-(xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F
-F0(belo)3.401 E 3.401(w\). W)-.25 F .901
-(ord splitting is not performed,)-.8 F 1.178(with the e)108 165.6 R
-1.178(xception of)-.15 F F3("$@")3.678 E F0 1.178(as e)3.678 F 1.179
-(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.179(Special P)
+-3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 264 Q 2.698(w\). If)
+-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E
+F0(attrib)2.698 E .198(ute set, then)-.2 F F3(value)2.988 E F0 .198
+(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199
+(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e)
+108 276 R .902(xpansion is not used \(see)-.15 F F1 .901
+(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901
+(ord splitting is not performed,)-.8 F 1.178(with the e)108 288 R 1.178
+(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179
+(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P)
 3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179
-(xpansion is not)-.15 F 3.649(performed. Assignment)108 177.6 R 1.149
-(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F3
-(alias)3.648 E F0(,)A F3(declar)3.648 E(e)-.18 E F0(,)A F3(typeset)3.648
-E F0(,)A F3(export)3.648 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0
-3.288(,a)C(nd)-3.288 E F3(local)3.288 E F0 -.2(bu)3.288 G .788
-(iltin commands \().2 F F1(declar)A(ation)-.15 E F0 3.288
-(commands\). When)3.288 F(in)3.289 E F1 .789(posix mode)3.289 F F0 3.289
+(xpansion is not)-.15 F 3.649(performed. Assignment)108 300 R 1.149
+(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1
+(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648
+E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 312 S(adonly).18 E F0
+3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788
+(iltin commands \().2 F F3(declar)A(ation)-.15 E F0 3.288
+(commands\). When)3.288 F(in)3.289 E F3 .789(posix mode)3.289 F F0 3.289
 (,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496
-(appear in a command after one or more instances of the)108 201.6 R F3
+(appear in a command after one or more instances of the)108 324 R F1
 (command)3.996 E F0 -.2(bu)3.996 G 1.496
-(iltin and retain these assignment).2 F(statement properties.)108 213.6
-Q .376(In the conte)108 230.4 R .376
+(iltin and retain these assignment).2 F(statement properties.)108 336 Q
+.376(In the conte)108 352.8 R .376
 (xt where an assignment statement is assigning a v)-.15 F .376
 (alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377
 (x, the +=)-.15 F 1.631
-(operator can be used to append to or add to the v)108 242.4 R(ariable')
+(operator can be used to append to or add to the v)108 364.8 R(ariable')
 -.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This)
--.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 254.4 S
-.163(iltin commands such as).2 F F3(declar)2.664 E(e)-.18 E F0 .164
-(that accept assignment statements \()2.664 F F1(declar)A(ation)-.15 E
+-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 376.8 S
+.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164
+(that accept assignment statements \()2.664 F F3(declar)A(ation)-.15 E
 F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252
-(applied to a v)108 266.4 R .252(ariable for which the)-.25 F F1(inte)
+(applied to a v)108 388.8 R .252(ariable for which the)-.25 F F3(inte)
 2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2
-F F1(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251
+F F3(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251
 (luated as an arithmetic e).25 F(xpres-)-.15 E .05
-(sion and added to the v)108 278.4 R(ariable')-.25 E 2.55(sc)-.55 G .05
+(sion and added to the v)108 400.8 R(ariable')-.25 E 2.55(sc)-.55 G .05
 (urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55
 (luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E
-.459(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E
+.459(able using compound assignment \(see)108 412.8 R F1(Arrays)2.959 E
 F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G
 .459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne)
-108 302.4 R 2.765(wv)-.25 G .265(alues are appended to the array be)
+108 424.8 R 2.765(wv)-.25 G .265(alues are appended to the array be)
 -3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm)
 -.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108
-314.4 Q -.15(xe)-.15 G 3.402(da).15 G .902
+436.8 Q -.15(xe)-.15 G 3.402(da).15 G .902
 (rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G<ad76>.15 E .901
 (alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E
-5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 326.4
-S(lued v).25 E(ariable,)-.25 E F1(value)2.5 E F0(is e)2.5 E
+5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 448.8
+S(lued v).25 E(ariable,)-.25 E F3(value)2.5 E F0(is e)2.5 E
 (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G
-(alue.)-2.75 E 3.382(Av)108 343.2 S .882(ariable can be assigned the)
--3.632 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882
-(ute using the)-.2 F F3<ad6e>3.382 E F0 .882(option to the)3.382 F F3
-(declar)3.382 E(e)-.18 E F0(or)3.383 E F3(local)3.383 E F0 -.2(bu)3.383
-G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 355.2 R
-F3(declar)2.816 E(e)-.18 E F0(and)2.816 E F3(local)2.816 E F0(belo)2.816
-E .316(w\) to create a)-.25 F F1(namer)2.815 E(ef)-.37 E F0 2.815(,o)C
+(alue.)-2.75 E 3.382(Av)108 465.6 S .882(ariable can be assigned the)
+-3.632 F F3(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882
+(ute using the)-.2 F F1<ad6e>3.382 E F0 .882(option to the)3.382 F F1
+(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383
+G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 477.6 R
+F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816
+E .316(w\) to create a)-.25 F F3(namer)2.815 E(ef)-.37 E F0 2.815(,o)C
 2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04
-(able. This)108 367.2 R(allo)4.04 E 1.54(ws v)-.25 F 1.54
+(able. This)108 489.6 R(allo)4.04 E 1.54(ws v)-.25 F 1.54
 (ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54
 E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54
 (ariable is referenced,)-.25 F .54
-(assigned to, unset, or has its attrib)108 379.2 R .54
-(utes modi\214ed \(other than using or changing the)-.2 F F1(namer)3.04
+(assigned to, unset, or has its attrib)108 501.6 R .54
+(utes modi\214ed \(other than using or changing the)-.2 F F3(namer)3.04
 E(ef)-.37 E F0(attrib)3.04 E .54(ute itself\),)-.2 F .352
-(the operation is actually performed on the v)108 391.2 R .352
+(the operation is actually performed on the v)108 513.6 R .352
 (ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.852(sv)
 -.55 G 2.852(alue. A)-3.102 F .352(nameref is)2.852 F .972
-(commonly used within shell functions to refer to a v)108 403.2 R .971
+(commonly used within shell functions to refer to a v)108 525.6 R .971
 (ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F
-2.5(function. F)108 415.2 R(or instance, if a v)-.15 E
+2.5(function. F)108 537.6 R(or instance, if a v)-.15 E
 (ariable name is passed to a shell function as its \214rst ar)-.25 E
-(gument, running)-.18 E/F4 10/Courier@0 SF(declare -n ref=$1)144 433.2 Q
-F0 .302(inside the function creates a nameref v)108 451.2 R(ariable)-.25
-E F3 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v)
+(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 555.6 Q
+F0 .302(inside the function creates a nameref v)108 573.6 R(ariable)-.25
+E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v)
 -.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E
-3.592(ment. References)108 463.2 R 1.092(and assignments to)3.592 F F3
+3.592(ment. References)108 585.6 R 1.092(and assignments to)3.592 F F1
 -.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib)
 -3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143
-(ments, and attrib)108 475.2 R .144(ute modi\214cations to the v)-.2 F
-.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F3($1)2.644 E
+(ments, and attrib)108 597.6 R .144(ute modi\214cations to the v)-.2 F
+.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E
 F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144
-(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .868
+(ariable in a)-.25 F F1 -.25(fo)108 609.6 S(r).25 E F0 .868
 (loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867
 (ords can be a list of shell v)-.1 F .867
 (ariables, and a name reference)-.25 F .509
-(will be established for each w)108 499.2 R .509
+(will be established for each w)108 621.6 R .509
 (ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009
 (cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108
-511.2 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F3(namer)4.193 E(ef)
+633.6 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F1(namer)4.193 E(ef)
 -.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G
 2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692
 (ariables can reference array v)-.25 F 1.692(ariables and subscripted)
--.25 F .101(array v)108 523.2 R 2.601(ariables. Namerefs)-.25 F .101
-(can be unset using the)2.601 F F3<ad6e>2.602 E F0 .102(option to the)
-2.602 F F3(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F
-(if)2.602 E F3(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E
-.443(cuted with the name of a nameref v)108 535.2 R .442
+-.25 F .101(array v)108 645.6 R 2.601(ariables. Namerefs)-.25 F .101
+(can be unset using the)2.601 F F1<ad6e>2.602 E F0 .102(option to the)
+2.602 F F1(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F
+(if)2.602 E F1(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E
+.443(cuted with the name of a nameref v)108 657.6 R .442
 (ariable as an ar)-.25 F .442(gument, the v)-.18 F .442
 (ariable referenced by the nameref v)-.25 F(ariable)-.25 E
-(will be unset.)108 547.2 Q F3 -.2(Po)87 564 S(sitional P).2 E
-(arameters)-.1 E F0(A)108 576 Q F1 .705(positional par)4.455 F(ameter)
+(will be unset.)108 669.6 Q F1 -.2(Po)87 686.4 S(sitional P).2 E
+(arameters)-.1 E F0(A)108 698.4 Q F3 .705(positional par)4.455 F(ameter)
 -.15 E F0 .706(is a parameter denoted by one or more digits, other than\
  the single digit 0.)3.935 F(Posi-)5.706 E .445
-(tional parameters are assigned from the shell')108 588 R 2.944(sa)-.55
-G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke)
-.2 G .444(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.333
-E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\
- may not be assigned to with assignment statements.)5.833 F(The)5.834 E
-(positional parameters are temporarily replaced when a shell function i\
-s e)108 612 Q -.15(xe)-.15 G(cuted \(see).15 E F2(FUNCTIONS)2.5 E F0
-(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\
-f more than a single digit is e)108 628.8 R 1.403
-(xpanded, it must be enclosed in)-.15 F(braces \(see)108 640.8 Q F2(EXP)
-2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F3(Special P)87 657.6 Q
-(arameters)-.1 E F0 1.674(The shell treats se)108 669.6 R -.15(ve)-.25 G
-1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675
-(hese parameters may only be referenced; assignment to)-6.675 F
-(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .224
-(Expands to the positional parameters, starting from one.)144 693.6 R
-.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
-(quotes, each positional parameter e)144 705.6 R .662
-(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662
-(xts where it is performed,)-.15 F 1.082(those w)144 717.6 R 1.082
-(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e)
--.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E
-2.548(occurs within double quotes, it e)144 729.6 R 2.549
-(xpands to a single w)-.15 F 2.549(ord with the v)-.1 F 2.549
-(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(9)197.055 E 0 Cg EP
+(tional parameters are assigned from the shell')108 710.4 R 2.944(sa)
+-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1
+(ke).2 G .444(d, and may be reassigned using).1 F(the)108 722.4 Q F1
+(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\
+ parameters may not be assigned to with assignment statements.)5.833 F
+(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(9)193.455 E
+0 Cg EP
 %%Page: 10 10
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.068
-(separated by the \214rst character of the)144 84 R/F1 9/Times-Bold@0 SF
-(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.067
-(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.567("i)C 5.567(se)-5.567
-G(qui)-5.567 E -.25(va)-.25 G 3.067(lent to).25 F(")144 96 Q F2($1)A/F3
-10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.519(", where)B F3
-(c)4.219 E F0 1.519(is the \214rst character of the v)4.329 F 1.52
-(alue of the)-.25 F F1(IFS)4.02 E F0 -.25(va)3.77 G 4.02(riable. If).25
-F F1(IFS)4.02 E F0 1.52(is unset, the)3.77 F .833
-(parameters are separated by spaces.)144 108 R(If)5.833 E F1(IFS)3.333 E
-F0 .832(is null, the parameters are joined without interv)3.083 F(ening)
--.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .605
-(Expands to the positional parameters, starting from one.)144 132 R .606
-(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114
-(ble quotes, each parameter e)144 144 R .114(xpands to a separate w)-.15
-F 2.614(ord. That)-.1 F .113(is, ")2.613 F F2($@)A F0 2.613("i)C 2.613
-(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F2($1)A F0
-2.613("")C F2($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134
-(If the double-quoted e)144 156 R .134(xpansion occurs within a w)-.15 F
-.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined)
--.15 F .151(with the be)144 168 R .151(ginning part of the original w)
--.15 F .151(ord, and the e)-.1 F .15
-(xpansion of the last parameter is joined with)-.15 F .337
-(the last part of the original w)144 180 R 2.837(ord. When)-.1 F .338
-(there are no positional parameters, ")2.837 F F2($@)A F0 2.838("a)C(nd)
--2.838 E F2($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E
-(to nothing \(i.e., the)144 192 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve)
--.15 G(d\).).15 E F2(#)108 204 Q F0
-(Expands to the number of positional parameters in decimal.)144 204 Q F2
-(?)108 216 Q F0(Expands to the e)144 216 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(positional parame\
+ters are temporarily replaced when a shell function is e)108 84 Q -.15
+(xe)-.15 G(cuted \(see).15 E/F1 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0
+(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\
+f more than a single digit is e)108 100.8 R 1.403
+(xpanded, it must be enclosed in)-.15 F(braces \(see)108 112.8 Q F1(EXP)
+2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E/F2 10/Times-Bold@0 SF
+(Special P)87 129.6 Q(arameters)-.1 E F0 1.674(The shell treats se)108
+141.6 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T)
+-.65 G 1.675(hese parameters may only be referenced; assignment to)
+-6.675 F(them is not allo)108 153.6 Q(wed.)-.25 E F2(*)108 165.6 Q F0
+.224(Expands to the positional parameters, starting from one.)144 165.6
+R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
+(quotes, each positional parameter e)144 177.6 R .662
+(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662
+(xts where it is performed,)-.15 F 1.082(those w)144 189.6 R 1.082
+(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e)
+-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E
+.914(occurs within double quotes, it e)144 201.6 R .914
+(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915
+(alue of each parameter sepa-)-.25 F .891
+(rated by the \214rst character of the)144 213.6 R F1(IFS)3.39 E F0 .89
+(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F2($*)A F0
+3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F
+F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A
+(where)144 225.6 Q F3(c)3.532 E F0 .832
+(is the \214rst character of the v)3.642 F .832(alue of the)-.25 F F1
+(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If).25 F F1(IFS)3.332 E F0
+.833(is unset, the parameters are)3.082 F(separated by spaces.)144 237.6
+Q(If)5 E F1(IFS)2.5 E F0
+(is null, the parameters are joined without interv)2.25 E
+(ening separators.)-.15 E F2(@)108 249.6 Q F0 .722
+(Expands to the positional parameters, starting from one.)144 249.6 R
+.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per)
+-.1 F(-)-.2 E 1.165(formed, this e)144 261.6 R 1.165
+(xpands each positional parameter to a separate w)-.15 F 1.165
+(ord; if not within double quotes,)-.1 F .655(these w)144 273.6 R .655
+(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte)
+5.655 F .655(xts where w)-.15 F .654
+(ord splitting is not performed, this)-.1 F -.15(ex)144 285.6 S .748
+(pands to a single w).15 F .748
+(ord with each positional parameter separated by a space.)-.1 F .748
+(When the e)5.748 F(xpan-)-.15 E 1.091
+(sion occurs within double quotes, each parameter e)144 297.6 R 1.091
+(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F2
+($@)A F0 3.59("i)C(s)-3.59 E(equi)144 309.6 Q -.25(va)-.25 G .412
+(lent to ").25 F F2($1)A F0 2.912("")C F2($2)-2.912 E F0 2.912(".)C
+2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413
+(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413
+(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144
+321.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e)
+-.1 F .379(xpansion of the)-.15 F 1.774
+(last parameter is joined with the last part of the original w)144 333.6
+R 4.274(ord. When)-.1 F 1.774(there are no positional)4.274 F
+(parameters, ")144 345.6 Q F2($@)A F0 2.5("a)C(nd)-2.5 E F2($@)2.5 E F0
+-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo)
+-2.5 E -.15(ve)-.15 G(d\).).15 E F2(#)108 357.6 Q F0
+(Expands to the number of positional parameters in decimal.)144 357.6 Q
+F2(?)108 369.6 Q F0(Expands to the e)144 369.6 Q
 (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15
-E(ground pipeline.)-.15 E F2<ad>108 228 Q F0 .882
-(Expands to the current option \215ags as speci\214ed upon in)144 228 R
--.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G
+E(ground pipeline.)-.15 E F2<ad>108 381.6 Q F0 .882
+(Expands to the current option \215ags as speci\214ed upon in)144 381.6
+-.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G
 .881(iltin command, or).2 F(those set by the shell itself \(such as the)
-144 240 Q F2<ad69>2.5 E F0(option\).)2.5 E F2($)108 252 Q F0 .214
-(Expands to the process ID of the shell.)144 252 R .214
+144 393.6 Q F2<ad69>2.5 E F0(option\).)2.5 E F2($)108 405.6 Q F0 .214
+(Expands to the process ID of the shell.)144 405.6 R .214
 (In a \(\) subshell, it e)5.214 F .214
 (xpands to the process ID of the current)-.15 F
-(shell, not the subshell.)144 264 Q F2(!)108 276 Q F0 .499(Expands to t\
-he process ID of the job most recently placed into the background, whet\
-her e)144 276 R -.15(xe)-.15 G(cuted).15 E
-(as an asynchronous command or using the)144 288 Q F2(bg)2.5 E F0 -.2
+(shell, not the subshell.)144 417.6 Q F2(!)108 429.6 Q F0 .499(Expands \
+to the process ID of the job most recently placed into the background, \
+whether e)144 429.6 R -.15(xe)-.15 G(cuted).15 E
+(as an asynchronous command or using the)144 441.6 Q F2(bg)2.5 E F0 -.2
 (bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E
-(w\).)-.25 E F2(0)108 300 Q F0 1.691
-(Expands to the name of the shell or shell script.)144 300 R 1.692
+(w\).)-.25 E F2(0)108 453.6 Q F0 1.691
+(Expands to the name of the shell or shell script.)144 453.6 R 1.692
 (This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E
-F0(is)4.192 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578
+F0(is)4.192 E(in)144 465.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578
 (ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578
 (is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E
 F0 .577(is started with the)3.077 F F2<ad63>3.077 E F0 .368
-(option, then)144 324 R F2($0)2.869 E F0 .369(is set to the \214rst ar)
-2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369
-(cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E
-(wise, it is set to the \214lename used to in)144 336 Q -.2(vo)-.4 G -.1
-(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H
-2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F2(_)108 348
-Q F0 .055(At shell startup, set to the absolute pathname used to in)144
-348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .054
-(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .691
-(as passed in the en)144 360 R .691(vironment or ar)-.4 F .691
-(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692
-(xpands to the last ar)-3.341 F .692(gument to the)-.18 F(pre)144 372 Q
-.571(vious command, after e)-.25 F 3.071(xpansion. Also)-.15 F .571
-(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .77 -.1(ke e)
-.2 H .57(ach command).1 F -.15(exe)144 384 S 1.6
-(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6
-(xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F
-(parameter holds the name of the mail \214le currently being check)144
-396 Q(ed.)-.1 E F2(Shell V)87 412.8 Q(ariables)-.92 E F0(The follo)108
-424.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA)
-108 441.6 S(SH).3 E F0(Expands to the full \214lename used to in)144
-441.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E
-F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.549(Ac)144 465.6 S .049
-(olon-separated list of enabled shell options.)-2.549 F .049(Each w)
+(option, then)144 477.6 R F2($0)2.869 E F0 .369
+(is set to the \214rst ar)2.869 F .369(gument after the string to be e)
+-.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.369 E
+(-)-.2 E(wise, it is set to the \214lename used to in)144 489.6 Q -.2
+(vo)-.4 G -.1(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25
+(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E
+F2(_)108 501.6 Q F0 .055
+(At shell startup, set to the absolute pathname used to in)144 501.6 R
+-.2(vo)-.4 G .255 -.1(ke t).2 H .054(he shell or shell script being e).1
+F -.15(xe)-.15 G(cuted).15 E .691(as passed in the en)144 513.6 R .691
+(vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E
+3.191(,e)-.65 G .692(xpands to the last ar)-3.341 F .692(gument to the)
+-.18 F(pre)144 525.6 Q .752(vious simple command e)-.25 F -.15(xe)-.15 G
+.752(cuted in the fore).15 F .751(ground, after e)-.15 F 3.251
+(xpansion. Also)-.15 F .751(set to the full path-)3.251 F .156
+(name used to in)144 537.6 R -.2(vo)-.4 G .356 -.1(ke e).2 H .156
+(ach command e).1 F -.15(xe)-.15 G .157(cuted and placed in the en).15 F
+.157(vironment e)-.4 F .157(xported to that com-)-.15 F 4.937
+(mand. When)144 549.6 R 2.436(checking mail, this parameter holds the n\
+ame of the mail \214le currently being)4.937 F(check)144 561.6 Q(ed.)-.1
+E F2(Shell V)87 578.4 Q(ariables)-.92 E F0(The follo)108 590.4 Q(wing v)
+-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA)108 607.2 S(SH).3
+E F0(Expands to the full \214lename used to in)144 607.2 Q -.2(vo)-.4 G
+.2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E F0(.)A F2 -.3(BA)108
+619.2 S(SHOPTS).3 E F0 2.548(Ac)144 631.2 S .049
+(olon-separated list of enabled shell options.)-2.548 F .049(Each w)
 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049
-(gument for the)-.18 F F2<ad73>2.548 E F0 1.398(option to the)144 477.6
+(gument for the)-.18 F F2<ad73>2.549 E F0 1.398(option to the)144 643.2
 R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1
 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo)
-3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144
-489.6 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as)
-2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976
-(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F
-(vironment)-.4 E(when)144 501.6 Q F2(bash)3.141 E F0 .642(starts up, ea\
-ch shell option in the list will be enabled before reading an)3.141 F
-3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 513.6 Q
-(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 525.6 S(SHPID).3 E
-F0 .188(Expands to the process ID of the current)144 537.6 R F2(bash)
-2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F
-F2($$)2.687 E F0 .187(under certain circum-)2.687 F
-(stances, such as subshells that do not require)144 549.6 Q F2(bash)2.5
-E F0(to be re-initialized.)2.5 E F2 -.3(BA)108 561.6 S(SH_ALIASES).3 E
-F0 1.195(An associati)144 573.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v)
-.15 F 1.195(ariable whose members correspond to the internal list of al\
-iases as main-)-.25 F .16(tained by the)144 585.6 R F2(alias)2.66 E F0
--.2(bu)2.66 G 2.66(iltin. Elements).2 F .16
+3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144
+655.2 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as)
+2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977
+(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F
+(vironment)-.4 E(when)144 667.2 Q F2(bash)3.142 E F0 .642(starts up, ea\
+ch shell option in the list will be enabled before reading an)3.142 F
+3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 679.2 Q
+(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 691.2 S(SHPID).3 E
+F0 .187(Expands to the process ID of the current)144 703.2 R F2(bash)
+2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F
+F2($$)2.688 E F0 .188(under certain circum-)2.688 F .548
+(stances, such as subshells that do not require)144 715.2 R F2(bash)
+3.048 E F0 .548(to be re-initialized.)3.048 F .548(Assignments to)5.548
+F F1 -.27(BA)3.048 G(SHPID).27 E F0(ha)144 727.2 Q .3 -.15(ve n)-.2 H
+2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F2 -.3(BA)2.5 G(SHPID).3 E
+F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
+-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(10)188.455 E 0 Cg
+EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF -.3(BA)108 84 S(SH_ALIASES).3 E F0 1.195(An associati)144 96 R 1.495
+-.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose members corresp\
+ond to the internal list of aliases as main-)-.25 F .16(tained by the)
+144 108 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66(iltin. Elements).2 F .16
 (added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15
 (ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503
-(array elements currently does not cause aliases to be remo)144 597.6 R
+(array elements currently does not cause aliases to be remo)144 120 R
 -.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If)
-9.503 E F2 -.3(BA)144 609.6 S(SH_ALIASES).3 E F0
+9.503 E F1 -.3(BA)144 132 S(SH_ALIASES).3 E F0
 (is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F2 -.3(BA)108 621.6 S(SH_ARGC).3 E F0 .935(An array v)144 633.6 R
+-2.5 E F1 -.3(BA)108 144 S(SH_ARGC).3 E F0 .935(An array v)144 156 R
 .935(ariable whose v)-.25 F .934
 (alues are the number of parameters in each frame of the current)-.25 F
-F2(bash)3.434 E F0 -.15(exe)144 645.6 S .535(cution call stack.).15 F
-.535(The number of parameters to the current subroutine \(shell functio\
-n or script)5.535 F -.15(exe)144 657.6 S .142(cuted with).15 F F2(.)
-2.642 E F0(or)2.642 E F2(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)
--2.642 G 2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141
+F1(bash)3.434 E F0 -.15(exe)144 168 S .535(cution call stack.).15 F .535
+(The number of parameters to the current subroutine \(shell function or\
+ script)5.535 F -.15(exe)144 180 S .142(cuted with).15 F F1(.)2.642 E F0
+(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G
+2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141
 (When a subroutine is e)5.141 F -.15(xe)-.15 G .141
 (cuted, the number of).15 F 2.63(parameters passed is pushed onto)144
-669.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0
-2.63(The shell sets)7.13 F F1 -.27(BA)5.131 G(SH_ARGC).27 E F0 2.631
-(only when in)4.881 F -.15(ex)144 681.6 S(tended deb).15 E
-(ugging mode \(see the description of the)-.2 E F2(extdeb)2.5 E(ug)-.2 E
-F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E
-(w\))-.25 E F2 -.3(BA)108 693.6 S(SH_ARGV).3 E F0 .98(An array v)144
-705.6 R .979(ariable containing all of the parameters in the current)
--.25 F F2(bash)3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F
-(The)5.979 E .275(\214nal parameter of the last subroutine call is at t\
-he top of the stack; the \214rst parameter of the initial)144 717.6 R
-1.424(call is at the bottom.)144 729.6 R 1.424(When a subroutine is e)
-6.424 F -.15(xe)-.15 G 1.424
-(cuted, the parameters supplied are pushed onto).15 F(GNU Bash 4.4)72
-768 Q(2016 August 26)142.895 E(10)192.055 E 0 Cg EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0
-SF -.27(BA)144 84 S(SH_ARGV).27 E/F2 9/Times-Roman@0 SF(.)A F0 2.197
-(The shell sets)6.697 F F1 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197
-(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197
-(ugging mode \(see the)-.2 F(description of the)144 96 Q/F3 10
-/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F3(shopt)
-2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F3 -.3(BA)108 108 S
-(SH_CMDS).3 E F0 .668(An associati)144 120 R .968 -.15(ve a)-.25 H .668
+192 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9
+/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G
+(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 204 S .284
+(tended deb).15 F .284(ugging mode \(see the description of the)-.2 F F1
+(extdeb)2.784 E(ug)-.2 E F0 .283(option to the)2.783 F F1(shopt)2.783 E
+F0 -.2(bu)2.783 G .283(iltin belo).2 F(w\).)-.25 E(Setting)144 216 Q F1
+(extdeb)3.362 E(ug)-.2 E F0 .862(after the shell has started to e)3.362
+F -.15(xe)-.15 G .863(cute a script, or referencing this v).15 F .863
+(ariable when)-.25 F F1(extdeb)144 228 Q(ug)-.2 E F0
+(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA)
+108 240 S(SH_ARGV).3 E F0 .98(An array v)144 252 R .979
+(ariable containing all of the parameters in the current)-.25 F F1(bash)
+3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F(The)5.979 E
+.275(\214nal parameter of the last subroutine call is at the top of the\
+ stack; the \214rst parameter of the initial)144 264 R 1.424
+(call is at the bottom.)144 276 R 1.424(When a subroutine is e)6.424 F
+-.15(xe)-.15 G 1.424(cuted, the parameters supplied are pushed onto).15
+F F2 -.27(BA)144 288 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets)
+6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F
+2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F .966
+(description of the)144 300 R F1(extdeb)3.466 E(ug)-.2 E F0 .966
+(option to the)3.466 F F1(shopt)3.466 E F0 -.2(bu)3.466 G .966
+(iltin belo).2 F 3.466(w\). Setting)-.25 F F1(extdeb)3.465 E(ug)-.2 E F0
+.965(after the shell)3.465 F .319(has started to e)144 312 R -.15(xe)
+-.15 G .319(cute a script, or referencing this v).15 F .319
+(ariable when)-.25 F F1(extdeb)2.82 E(ug)-.2 E F0 .32
+(is not set, may result in)2.82 F(inconsistent v)144 324 Q(alues.)-.25 E
+F1 -.3(BA)108 336 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144
+348 R .251(ariable e)-.25 F .251
+(xpands to the name of the shell or shell script \(identical to)-.15 F
+F1($0)2.75 E F0 2.75(;s)C(ee)-2.75 E 1.224
+(the description of special parameter 0 abo)144 360 R -.15(ve)-.15 G
+3.724(\). Assignment).15 F(to)3.724 E F1 -.3(BA)3.724 G(SH_ARGV0).3 E F0
+1.225(causes the v)3.724 F(alue)-.25 E .247
+(assigned to also be assigned to)144 372 R F1($0)2.747 E F0 5.247(.I)C
+(f)-5.247 E F1 -.3(BA)2.747 G(SH_ARGV0).3 E F0 .247
+(is unset, it loses its special properties, e)2.747 F -.15(ve)-.25 G(n)
+.15 E(if it is subsequently reset.)144 384 Q F1 -.3(BA)108 396 S
+(SH_CMDS).3 E F0 .667(An associati)144 408 R .967 -.15(ve a)-.25 H .667
 (rray v).15 F .668(ariable whose members correspond to the internal has\
-h table of commands)-.25 F .195(as maintained by the)144 132 R F3(hash)
-2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196
+h table of commands)-.25 F .196(as maintained by the)144 420 R F1(hash)
+2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195
 (added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15
 (ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\
-t cause command names to be remo)144 144 R -.15(ve)-.15 G 3.352(df).15 G
-.852(rom the hash)-3.352 F 2.5(table. If)144 156 R F3 -.3(BA)2.5 G
+t cause command names to be remo)144 432 R -.15(ve)-.15 G 3.352(df).15 G
+.853(rom the hash)-3.352 F 2.5(table. If)144 444 R F1 -.3(BA)2.5 G
 (SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15
 (ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F3 -.3(BA)108 168 S(SH_COMMAND).3 E F0 1.242
-(The command currently being e)144 180 R -.15(xe)-.15 G 1.243
-(cuted or about to be e).15 F -.15(xe)-.15 G 1.243
-(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F
+(ubsequently reset.)-2.5 E F1 -.3(BA)108 456 S(SH_COMMAND).3 E F0 1.243
+(The command currently being e)144 468 R -.15(xe)-.15 G 1.243
+(cuted or about to be e).15 F -.15(xe)-.15 G 1.242
+(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F
 (command as the result of a trap, in which case it is the command e)144
-192 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F3 -.3(BA)108
-204 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 216 Q
-(gument to the)-.18 E F3<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
-(cation option.).2 E F3 -.3(BA)108 228 S(SH_LINENO).3 E F0 .693
-(An array v)144 240 R .692(ariable whose members are the line numbers i\
-n source \214les where each corresponding)-.25 F .969(member of)144 252
-R F1(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4
-(nv o)-3.469 H -.1(ke).4 G(d.).1 E F3(${B)5.969 E(ASH_LINENO[)-.3 E/F4
-10/Times-Italic@0 SF($i)A F3(]})A F0 .97
-(is the line number in the source)3.469 F 14.672(\214le \()144 264 R F3
-(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0 17.172(\)w)C(here)-17.172
-E F3(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F3(]})A F0 -.1(wa)17.172 G
-17.171(sc).1 G 14.671(alled \(or)-17.171 F F3(${B)144 276 Q(ASH_LINENO[)
--.3 E F4($i-1)A F3(]})A F0 .115
-(if referenced within another shell function\).)2.615 F(Use)5.115 E F1
+480 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108
+492 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 504 Q
+(gument to the)-.18 E F1<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
+(cation option.).2 E F1 -.3(BA)108 516 S(SH_LINENO).3 E F0 .692
+(An array v)144 528 R .692(ariable whose members are the line numbers i\
+n source \214les where each corresponding)-.25 F .97(member of)144 540 R
+F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o)
+-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10
+/Times-Italic@0 SF($i)A F1(]})A F0 .969
+(is the line number in the source)3.469 F 14.671(\214le \()144 552 R F1
+(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171
+E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G
+17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 564 Q(ASH_LINENO[)
+-.3 E F4($i-1)A F1(]})A F0 .115
+(if referenced within another shell function\).)2.615 F(Use)5.115 E F2
 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144
-288 Q(.)-.55 E F3 -.3(BA)108 300 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
--.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 312 S 1.57(olon-separated list of\
+576 Q(.)-.55 E F1 -.3(BA)108 588 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
+-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 600 S 1.57(olon-separated list of\
  directories in which the shell looks for dynamically loadable b)-4.07 F
-(uiltins)-.2 E(speci\214ed by the)144 324 Q F3(enable)2.5 E F0(command.)
-2.5 E F3 -.3(BA)108 336 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144
-348 R .005(ariable whose members are assigned by the)-.25 F F3(=~)2.506
-E F0 .006(binary operator to the)2.506 F F3([[)2.506 E F0 .006
-(conditional com-)2.506 F 2.507(mand. The)144 360 R .007
-(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007
-(he portion of the string matching the entire re)-2.507 F .006(gular e)
--.15 F(xpression.)-.15 E .997(The element with inde)144 372 R(x)-.15 E
-F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F
-F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5
-(sion. This)144 384 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E
-F3 -.3(BA)108 396 S(SH_SOURCE).3 E F0 .126(An array v)144 408 R .125(ar\
+(uiltins)-.2 E(speci\214ed by the)144 612 Q F1(enable)2.5 E F0(command.)
+2.5 E F1 -.3(BA)108 624 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144
+636 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506
+E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005
+(conditional com-)2.505 F 2.506(mand. The)144 648 R .007
+(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007
+(he portion of the string matching the entire re)-2.507 F .007(gular e)
+-.15 F(xpression.)-.15 E .998(The element with inde)144 660 R(x)-.15 E
+F4(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F
+F4(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5
+(sion. This)144 672 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E
+F1 -.3(BA)108 684 S(SH_SOURCE).3 E F0 .125(An array v)144 696 R .125(ar\
 iable whose members are the source \214lenames where the corresponding \
-shell function)-.25 F .78(names in the)144 420 R F1(FUNCN)3.28 E(AME)
+shell function)-.25 F .781(names in the)144 708 R F2(FUNCN)3.28 E(AME)
 -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78
-(The shell function)5.78 F F3(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F3(]})A
-F0(is)3.281 E(de\214ned in the \214le)144 432 Q F3(${B)2.5 E
-(ASH_SOURCE[)-.3 E F4($i)A F3(]})A F0(and called from)2.5 E F3(${B)2.5 E
-(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0(.)A F3 -.3(BA)108 444 S
-(SH_SUBSHELL).3 E F0 .296
-(Incremented by one within each subshell or subshell en)144 456 R .296
-(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G
-(cuting).15 E(in that en)144 468 Q 2.5(vironment. The)-.4 F(initial v)
-2.5 E(alue is 0.)-.25 E F3 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 2.644
-(Ar)144 492 S .144(eadonly array v)-2.644 F .144
-(ariable whose members hold v)-.25 F .144
-(ersion information for this instance of)-.15 F F3(bash)2.645 E F0 5.145
-(.T)C(he)-5.145 E -.25(va)144 504 S
-(lues assigned to the array members are as follo).25 E(ws:)-.25 E F3 -.3
-(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F3(])A F0(The major v)264 522 Q
-(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F3 -.3
-(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F3(])A F0(The minor v)264 534 Q
-(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F3 -.3(BA)
-144 546 S(SH_VERSINFO[).3 E F0(2)A F3(])A F0(The patch le)264 546 Q -.15
-(ve)-.25 G(l.).15 E F3 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F3(])A
-F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F3 -.3(BA)144 570 S
-(SH_VERSINFO[).3 E F0(4)A F3(])A F0(The release status \(e.g.,)264 570 Q
-F4(beta1)2.5 E F0(\).)A F3 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F3
-(])A F0(The v)264 582 Q(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.495 E F2(.)A
-F3 -.3(BA)108 594 S(SH_VERSION).3 E F0
-(Expands to a string describing the v)144 606 Q
-(ersion of this instance of)-.15 E F3(bash)2.5 E F0(.)A F3(COMP_CW)108
-618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E
-F3(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396
-(ord containing the current cursor position.)-.1 F .396(This v)5.396 F
-(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181
-(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681
-(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F
-1.181(acilities \(see)-.1 F F3(Pr)144 654 Q(ogrammable Completion)-.18 E
-F0(belo)2.5 E(w\).)-.25 E F3(COMP_KEY)108 666 Q F0(The k)144 678 Q .3
--.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3
--.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2
-H(he current completion function.).1 E F3(COMP_LINE)108 690 Q F0 1.208
-(The current command line.)144 702 R 1.208(This v)6.208 F 1.208
-(ariable is a)-.25 F -.25(va)-.2 G 1.208
-(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F
-2.848(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349
-(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849
-(acilities \(see)-.1 F F3(Pr)5.349 E 2.849(ogrammable Completion)-.18 F
-F0(belo)144 726 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(11)192.055 E 0 Cg EP
+(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A
+F0(is)3.28 E(de\214ned in the \214le)144 720 Q F1(${B)2.5 E(ASH_SOURCE[)
+-.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[)
+-.3 E F4($i+1)A F1(]})A F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(11)188.455 E 0 Cg EP
 %%Page: 12 12
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167
-(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15
-(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666
-(ginning of the current command.)-.15 F .666(If the)5.666 F .534
+SF -.3(BA)108 84 S(SH_SUBSHELL).3 E F0 .296
+(Incremented by one within each subshell or subshell en)144 96 R .296
+(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G
+(cuting).15 E(in that en)144 108 Q 2.5(vironment. The)-.4 F(initial v)
+2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 120 S(SH_VERSINFO).3 E F0 2.645
+(Ar)144 132 S .145(eadonly array v)-2.645 F .144
+(ariable whose members hold v)-.25 F .144
+(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144
+(.T)C(he)-5.144 E -.25(va)144 144 S
+(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3
+(BA)144 162 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 162 Q
+(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G(lease)
+.37 E F0(\).)A F1 -.3(BA)144 174 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0
+(The minor v)264 174 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1
+E F0(\).)A F1 -.3(BA)144 186 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0
+(The patch le)264 186 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 198 S
+(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 198 Q(uild v)-.2 E
+(ersion.)-.15 E F1 -.3(BA)144 210 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0
+(The release status \(e.g.,)264 210 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA)
+144 222 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 222 Q(alue of)
+-.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE)-.495 E/F4 9/Times-Roman@0
+SF(.)A F1 -.3(BA)108 234 S(SH_VERSION).3 E F0
+(Expands to a string describing the v)144 246 Q
+(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108
+258 Q(ORD)-.1 E F0 .396(An inde)144 270 R 2.896(xi)-.15 G(nto)-2.896 E
+F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396
+(ord containing the current cursor position.)-.1 F .397(This v)5.397 F
+(ari-)-.25 E 1.181(able is a)144 282 R -.25(va)-.2 G 1.181
+(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681
+(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F
+1.18(acilities \(see)-.1 F F1(Pr)144 294 Q(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 306 Q F0(The k)144 318 Q .3
+-.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3
+-.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2
+H(he current completion function.).1 E F1(COMP_LINE)108 330 Q F0 1.207
+(The current command line.)144 342 R 1.208(This v)6.208 F 1.208
+(ariable is a)-.25 F -.25(va)-.2 G 1.208
+(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F
+2.849(mands in)144 354 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349
+(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849
+(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F
+F0(belo)144 366 Q(w\).)-.25 E F1(COMP_POINT)108 378 Q F0 .666(The inde)
+144 390 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666
+(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166
+(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15
+F .667(If the)5.667 F .535
 (current cursor position is at the end of the current command, the v)144
-108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1
-(${#COMP_LINE})144 120 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006
-(ariable is a)-.25 F -.25(va)-.2 G 2.005
-(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15
-F(in)144 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
+402 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1
+(${#COMP_LINE})144 414 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005
+(ariable is a)-.25 F -.25(va)-.2 G 2.006
+(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15
+F(in)144 426 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
 (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E
 (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108
-144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\
+438 Q F0 .042(Set to an inte)144 450 R .042(ger v)-.15 F .041(alue corr\
 esponding to the type of completion attempted that caused a completion)
--.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5
-(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2
-(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi)
--2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.091(,f)C
-1.591(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092
-(np)-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)
-4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)
--4.092 F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 192 R F2(%)
-4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)
-6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552
-(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.928
+-.25 F .337(function to be called:)144 462 R F2 -.5(TA)2.837 G(B).5 E F0
+2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f)
+C .337(or listing completions after successi)-2.837 F .638 -.15(ve t)
+-.25 H(abs,).15 E F2(!)144 474 Q F0 4.092(,f)C 1.592
+(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np)
+-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092
+E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092
+F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 486 R F2(%)4.052 E
+F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F
+1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552
+(ilable only in shell functions and).25 F -.15(ex)144 498 S 2.929
 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429
 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929
-(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144
-216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)-.1 E F0
-1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G
-(adline).18 E F0 1.336(library treats as w)3.836 F 1.335
-(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If)
-144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626
-(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G
-3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G
-(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E
-F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E
-F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w)
--.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 300 R
+(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144
+510 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 522 Q(ORDBREAKS)-.1 E F0
+1.335(The set of characters that the)144 534 R F1 -.18(re)3.836 G
+(adline).18 E F0 1.336(library treats as w)3.836 F 1.336
+(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If)
+144 546 R F3(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626
+(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G
+3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G
+(ubse-)-3.125 E(quently reset.)144 558 Q F1(COMP_W)108 570 Q(ORDS)-.1 E
+F0 .653(An array v)144 582 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E
+F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w)
+-.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 594 R
 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332
 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3
-(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144
-312 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832
-(ariable is a)-.25 F -.25(va)-.2 G .831
-(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331
-(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f)
-144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E
-F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v)
-144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E
+(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144
+606 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831
+(ariable is a)-.25 F -.25(va)-.2 G .832
+(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332
+(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f)
+144 618 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 630 Q(OC)-.3 E F0 .169(An array v)
+144 642 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E
 .169
 (w\) created to hold the \214le descriptors for output from and input)
--.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses)
--.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC)
--.9 G(K).55 E F0 2.26(An array v)144 384 R 2.26(ariable \(see)-.25 F F1
+-.25 F(to an unnamed coprocess \(see)144 654 Q F1(Copr)2.5 E(ocesses)
+-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 666 Q -.55(AC)
+-.9 G(K).55 E F0 2.26(An array v)144 678 R 2.26(ariable \(see)-.25 F F1
 (Arrays)4.76 E F0(belo)4.76 E 2.26
 (w\) containing the current contents of the directory stack.)-.25 F
-1.094(Directories appear in the stack in the order the)144 396 R 3.594
-(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu)
-3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432
-(members of this array v)144 408 R 1.432
+1.095(Directories appear in the stack in the order the)144 690 R 3.594
+(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu)
+3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431
+(members of this array v)144 702 R 1.432
 (ariable may be used to modify directories already in the stack, b)-.25
-F 1.431(ut the)-.2 F F1(pushd)144 420 Q F0(and)2.746 E F1(popd)2.746 E
+F 1.432(ut the)-.2 F F1(pushd)144 714 Q F0(and)2.746 E F1(popd)2.746 E
 F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546
 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746
-F(ariable)-.25 E .351(will not change the current directory)144 432 R
+F(ariable)-.25 E .35(will not change the current directory)144 726 R
 5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35
-(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85
-(ni).15 G(f)-2.85 E(it is subsequently reset.)144 444 Q F1(EUID)108 456
-Q F0 1.103(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25
-H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103
-(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104
-(ariable is)-.25 F(readonly)144 468 Q(.)-.65 E F1(FUNCN)108 480 Q(AME)
--.2 E F0 .479(An array v)144 492 R .479
+(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851
+(ni).15 G(f)-2.851 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(12)
+188.455 E 0 Cg EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(it is subsequently reset.)144 84 Q/F1 10/Times-Bold@0 SF(EPOCHREAL)108
+96 Q(TIME)-.92 E F0 .338(Each time this parameter is referenced, it e)
+144 108 R .337(xpands to the number of seconds since the Unix Epoch)-.15
+F(\(see)144 120 Q/F2 10/Times-Italic@0 SF(time)2.916 E F0 .416
+(\(3\)\) as a \215oating point v)B .417
+(alue with micro-second granularity)-.25 F 5.417(.A)-.65 G .417
+(ssignments to)-5.417 F/F3 9/Times-Bold@0 SF(EPOCHRE-)2.917 E(AL)144 132
+Q(TIME)-.828 E F0 1.091(are ignored.)3.341 F(If)6.091 E F3(EPOCHREAL)
+3.59 E(TIME)-.828 E F0 1.09
+(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G 3.59
+(ni).15 G 3.59(fi)-3.59 G 3.59(ti)-3.59 G(s)-3.59 E(subsequently reset.)
+144 144 Q F1(EPOCHSECONDS)108 156 Q F0 .337
+(Each time this parameter is referenced, it e)144 168 R .338
+(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144
+180 Q F2(time)4.042 E F0 4.042(\(3\)\). Assignments)B(to)4.042 E F3
+(EPOCHSECONDS)4.042 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3
+(EPOCHSECONDS)4.041 E F0 1.541(is unset, it)3.791 F
+(loses its special properties, e)144 192 Q -.15(ve)-.25 G 2.5(ni).15 G
+2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1
+(EUID)108 204 Q F0 1.103(Expands to the ef)144 204 R(fecti)-.25 E 1.403
+-.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G
+1.103(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104
+(ariable is)-.25 F(readonly)144 216 Q(.)-.65 E F1(FUNCN)108 228 Q(AME)
+-.2 E F0 .479(An array v)144 240 R .479
 (ariable containing the names of all shell functions currently in the e)
 -.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276
-(The element with inde)144 504 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276
+(The element with inde)144 252 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276
 (he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15
 G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385
-(element \(the one with the highest inde)144 516 R .384(x\) is)-.15 F/F4
+(element \(the one with the highest inde)144 264 R .384(x\) is)-.15 F/F4
 10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384
 (ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075
-(tion is e)144 528 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to)
+(tion is e)144 276 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to)
 2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H
 2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E
 (AME)-.18 E F0 .076(is unset, it loses its)2.326 F
-(special properties, e)144 540 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+(special properties, e)144 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144
-558 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
+306 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
 .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111
-(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 570 S(ME).2 E F0
+(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 318 S(ME).2 E F0
 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO)
 .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404
-(to describe the)3.904 F .012(call stack.)144 582 R -.15(Fo)5.012 G
+(to describe the)3.904 F .012(call stack.)144 330 R -.15(Fo)5.012 G
 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A
 F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le)
 -2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183
-(at line number)144 594 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1
+(at line number)144 342 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1
 (]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G
 1.184(iltin displays the current call stack using).2 F
-(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.229
-(An array v)144 630 R 1.228(ariable containing the list of groups of wh\
+(this information.)144 354 Q F1(GR)108 366 Q(OUPS)-.3 E F0 1.229
+(An array v)144 378 R 1.228(ariable containing the list of groups of wh\
 ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E
-.571(ments to)144 642 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872
+.571(ments to)144 390 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872
 -.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3
 (GR)3.072 E(OUPS)-.27 E F0 .572
 (is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G
 3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E
-(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .356
-(The history number)144 678 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde)
+(subsequently reset.)144 402 Q F1(HISTCMD)108 414 Q F0 .356
+(The history number)144 426 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde)
 -2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356
 (he history list, of the current command.)-2.856 F(If)5.356 E F3
 (HISTCMD)2.855 E F0 .355(is unset, it)2.605 F
-(loses its special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G
+(loses its special properties, e)144 438 Q -.15(ve)-.25 G 2.5(ni).15 G
 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1
-(HOSTN)108 702 Q(AME)-.2 E F0
-(Automatically set to the name of the current host.)144 714 Q
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(12)192.055 E 0 Cg EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(HOSTTYPE)108 84 Q F0 .222(Automatically set to a string that uniquel\
-y describes the type of machine on which)144 96 R F1(bash)2.723 E F0
-.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def)
-2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 120 Q F0 1.408(Each\
+(HOSTN)108 450 Q(AME)-.2 E F0
+(Automatically set to the name of the current host.)144 462 Q F1
+(HOSTTYPE)108 474 Q F0 .222(Automatically set to a string that uniquely\
+ describes the type of machine on which)144 486 R F1(bash)2.723 E F0
+.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 498 R(def)
+2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 510 Q F0 1.408(Each\
  time this parameter is referenced, the shell substitutes a decimal num\
-ber representing the)144 132 R .078(current sequential line number \(st\
-arting with 1\) within a script or function.)144 144 R .079
-(When not in a script or)5.078 F .307(function, the v)144 156 R .307
+ber representing the)144 522 R .078(current sequential line number \(st\
+arting with 1\) within a script or function.)144 534 R .079
+(When not in a script or)5.078 F .307(function, the v)144 546 R .307
 (alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E
-/F2 9/Times-Bold@0 SF(LINENO)2.806 E F0 .306(is unset, it loses its)
-2.556 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5
-(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)
-108 180 Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that full\
-y describes the system type on which)144 192 R F1(bash)3.398 E F0 .899
-(is e)3.398 F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144
-204 Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5
-(format. The)2.5 F(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE)
-108 216 Q F0 .294(An array v)144 228 R .294(ariable \(see)-.25 F F1
-(Arrays)2.794 E F0(belo)2.794 E .294(w\) created to hold the te)-.25 F
-.293(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293
-(iltin when no).2 F -.25(va)144 240 S(riable name is supplied.).25 E F1
-(OLDPWD)108 252 Q F0(The pre)144 264 Q(vious w)-.25 E
+F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F
+(special properties, e)144 558 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 570 Q
+(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\
+es the system type on which)144 582 R F1(bash)3.398 E F0 .899(is e)3.398
+F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 594 Q F2
+(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E
+(ault is system-dependent.)-.1 E F1(MAPFILE)108 606 Q F0 .294
+(An array v)144 618 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0
+(belo)2.794 E .294(w\) created to hold the te)-.25 F .293
+(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293
+(iltin when no).2 F -.25(va)144 630 S(riable name is supplied.).25 E F1
+(OLDPWD)108 642 Q F0(The pre)144 654 Q(vious w)-.25 E
 (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
-(OPT)108 276 Q(ARG)-.9 E F0 1.626(The v)144 288 R 1.627
+(OPT)108 666 Q(ARG)-.9 E F0 1.626(The v)144 678 R 1.627
 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F
-F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2
-(SHELL)4.127 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.652(The inde)144 324 R 4.152
+F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F3
+(SHELL)4.127 E -.09(BU)144 690 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
+2.25 E(w\).)-.25 E F1(OPTIND)108 702 Q F0 1.652(The inde)144 714 R 4.152
 (xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F
 1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu)
-4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 336
-S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108
-348 Q F0 .329(Automatically set to a string that describes the operatin\
-g system on which)144 360 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe)
--.15 G 2.83(cuting. The).15 F(def)144 372 Q(ault is system-dependent.)
--.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144
-396 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61
-(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61
-(alues from the processes in)-.25 F(the most-recently-e)144 408 Q -.15
-(xe)-.15 G(cuted fore).15 E
+4.151 G 1.651(iltin command \(see).2 F F3(SHELL)4.151 E -.09(BU)144 726
+S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)
+72 768 Q(2018 December 7)139.295 E(13)188.455 E 0 Cg EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(OSTYPE)108 84 Q F0 .329(Automatically set to a string that describes\
+ the operating system on which)144 96 R F1(bash)2.83 E F0 .33(is e)2.83
+F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144 108 Q
+(ault is system-dependent.)-.1 E F1(PIPEST)108 120 Q -.95(AT)-.9 G(US)
+.95 E F0 .61(An array v)144 132 R .61(ariable \(see)-.25 F F1(Arrays)
+3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61
+(xit status v)-.15 F .61(alues from the processes in)-.25 F
+(the most-recently-e)144 144 Q -.15(xe)-.15 G(cuted fore).15 E
 (ground pipeline \(which may contain only a single command\).)-.15 E F1
-(PPID)108 420 Q F0(The process ID of the shell')144 420 Q 2.5(sp)-.55 G
+(PPID)108 156 Q F0(The process ID of the shell')144 156 Q 2.5(sp)-.55 G
 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E
-F1(PWD)108 432 Q F0(The current w)144 432 Q
+F1(PWD)108 168 Q F0(The current w)144 168 Q
 (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
-(RANDOM)108 444 Q F0 .565
-(Each time this parameter is referenced, a random inte)144 456 R .566
+(RANDOM)108 180 Q F0 .565
+(Each time this parameter is referenced, a random inte)144 192 R .566
 (ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01
-(sequence of random numbers may be initialized by assigning a v)144 468
-R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If)
-4.51 E F2(RANDOM)2.51 E F0(is)2.26 E
-(unset, it loses its special properties, e)144 480 Q -.15(ve)-.25 G 2.5
+(sequence of random numbers may be initialized by assigning a v)144 204
+R .01(alue to)-.25 F/F2 9/Times-Bold@0 SF(RANDOM)2.51 E/F3 9
+/Times-Roman@0 SF(.)A F0(If)4.51 E F2(RANDOM)2.51 E F0(is)2.26 E
+(unset, it loses its special properties, e)144 216 Q -.15(ve)-.25 G 2.5
 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1(READLINE_LINE)108 492 Q F0 1.546(The contents of the)144 504 R
+-2.5 E F1(READLINE_LINE)108 228 Q F0 1.546(The contents of the)144 240 R
 F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer)
--.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF
+-.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF
 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09
-E 1.547(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1
-(READLINE_POINT)108 528 Q F0 .314
-(The position of the insertion point in the)144 540 R F1 -.18(re)2.813 G
+E 1.547(TIN COM-)-.828 F(MANDS)144 252 Q F0(belo)2.25 E(w\).)-.25 E F1
+(READLINE_POINT)108 264 Q F0 .314
+(The position of the insertion point in the)144 276 R F1 -.18(re)2.813 G
 (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G
-.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F2
-(SHELL)2.813 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(REPL)108 564 Q(Y)-.92 E F0
-(Set to the line of input read by the)144 576 Q F1 -.18(re)2.5 G(ad).18
+.313(or use with)-2.813 F F4 .313(bind -x)2.813 F F0(\(see)2.813 E F2
+(SHELL)2.813 E -.09(BU)144 288 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
+2.25 E(w\).)-.25 E F1(REPL)108 300 Q(Y)-.92 E F0
+(Set to the line of input read by the)144 312 Q F1 -.18(re)2.5 G(ad).18
 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.)
--.18 E F1(SECONDS)108 588 Q F0 .795(Each time this parameter is referen\
-ced, the number of seconds since shell in)144 600 R -.2(vo)-.4 G .795
-(cation is returned.).2 F .713(If a v)144 612 R .712
-(alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712(the v)
+-.18 E F1(SECONDS)108 324 Q F0 .795(Each time this parameter is referen\
+ced, the number of seconds since shell in)144 336 R -.2(vo)-.4 G .795
+(cation is returned.).2 F .713(If a v)144 348 R .712
+(alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v)
 2.962 F .712(alue returned upon subsequent references is the number)-.25
-F .407(of seconds since the assignment plus the v)144 624 R .408
+F .407(of seconds since the assignment plus the v)144 360 R .408
 (alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408
-(is unset, it loses its special)2.658 F(properties, e)144 636 Q -.15(ve)
+(is unset, it loses its special)2.658 F(properties, e)144 372 Q -.15(ve)
 -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.263(Ac)144 660 S
+(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 384 Q F0 3.263(Ac)144 396 S
 .763(olon-separated list of enabled shell options.)-3.263 F .763(Each w)
 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763
-(gument for the)-.18 F F1<ad6f>144 672 Q F0 1.173(option to the)3.673 F
+(gument for the)-.18 F F1<ad6f>144 408 Q F0 1.173(option to the)3.673 F
 F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174
 (SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E
-3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 684 R F2
-(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(on)2.749 E F0
-(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G
-.019(his v)-2.519 F .019(ariable is in the en)-.25 F(vironment)-.4 E
-(when)144 696 Q F1(bash)3.141 E F0 .642(starts up, each shell option in\
- the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G .642
-(tartup \214les.)-3.142 F(This v)144 708 Q(ariable is read-only)-.25 E
-(.)-.65 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(13)192.055 E 0
-Cg EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(SHL)108 84 Q(VL)-.92 E F0
-(Incremented by one each time an instance of)144 96 Q F1(bash)2.5 E F0
-(is started.)2.5 E F1(UID)108 108 Q F0
-(Expands to the user ID of the current user)144 108 Q 2.5(,i)-.4 G
+3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 420 R F2
+(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10
+/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0
+5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019
+(ariable is in the en)-.25 F(vironment)-.4 E(when)144 432 Q F1(bash)
+3.141 E F0 .642(starts up, each shell option in the list will be enable\
+d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142
+F(This v)144 444 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 456 Q
+(VL)-.92 E F0(Incremented by one each time an instance of)144 468 Q F1
+(bash)2.5 E F0(is started.)2.5 E F1(UID)108 480 Q F0
+(Expands to the user ID of the current user)144 480 Q 2.5(,i)-.4 G
 (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25
-E(.)-.65 E .994(The follo)108 124.8 R .994(wing v)-.25 F .994
+E(.)-.65 E .994(The follo)108 496.8 R .994(wing v)-.25 F .994
 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1
 (bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993
-(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 136.8
-Q -.65(w.)-.25 G F1 -.3(BA)108 153.6 S(SH_COMP).3 E -.95(AT)-.74 G F0
-1.192(The v)144 165.6 R 1.192(alue is used to set the shell')-.25 F
+(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 508.8
+Q -.65(w.)-.25 G F1 -.3(BA)108 525.6 S(SH_COMP).3 E -.95(AT)-.74 G F0
+1.192(The v)144 537.6 R 1.192(alue is used to set the shell')-.25 F
 3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693
 (l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0
--.2(bu)3.693 G(iltin).2 E(belo)144 177.6 Q 2.872(wu)-.25 G(nder)-2.872 E
+-.2(bu)3.693 G(iltin).2 E(belo)144 549.6 Q 2.872(wu)-.25 G(nder)-2.872 E
 F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372
 (for a description of the v)2.872 F .371(arious compatibility le)-.25 F
-(v-)-.25 E .36(els and their ef)144 189.6 R 2.86(fects. The)-.25 F -.25
+(v-)-.25 E .36(els and their ef)144 561.6 R 2.86(fects. The)-.25 F -.25
 (va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25
 F .361(ger \(e.g., 42\) corre-)-.15 F 1.751
-(sponding to the desired compatibility le)144 201.6 R -.15(ve)-.25 G
+(sponding to the desired compatibility le)144 573.6 R -.15(ve)-.25 G
 4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75
 (is unset or set to the empty)5.201 F .578(string, the compatibility le)
-144 213.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578
+144 585.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578
 (et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078
 (ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is)
-4.028 E .249(set to a v)144 225.6 R .249(alue that is not one of the v)
+4.028 E .249(set to a v)144 597.6 R .249(alue that is not one of the v)
 -.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248
 (ls, the shell prints an error message and).15 F 1.119
-(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.619(lt).15 G
+(sets the compatibility le)144 609.6 R -.15(ve)-.25 G 3.619(lt).15 G
 3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1
 F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F
 -.15(ve)-.25 G(ls).15 E .576
-(correspond to the compatibility options accepted by the)144 249.6 R F1
+(correspond to the compatibility options accepted by the)144 621.6 R F1
 (shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075
-(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 261.6 Q F1
+(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 633.6 Q F1
 (compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5
 (alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v)
--.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .505
-(If this parameter is set when)144 285.6 R F1(bash)3.005 E F0 .505(is e)
+-.25 E(alue.)-.25 E F1 -.3(BA)108 645.6 S(SH_ENV).3 E F0 .505
+(If this parameter is set when)144 657.6 R F1(bash)3.005 E F0 .505(is e)
 3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506
 (alue is interpreted as a \214lename)-.25 F .355
-(containing commands to initialize the shell, as in)144 297.6 R/F2 10
-/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354
-(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G
-(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 309.6
-R .525(xpansion, command substitution, and arithmetic e)-.15 F .525
-(xpansion before being interpreted)-.15 F(as a \214lename.)144 321.6 Q
-F3 -.666(PA)5 G(TH)-.189 E F0
+(containing commands to initialize the shell, as in)144 669.6 R F5
+(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354
+(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected)
+2.604 F .525(to parameter e)144 681.6 R .525
+(xpansion, command substitution, and arithmetic e)-.15 F .525
+(xpansion before being interpreted)-.15 F(as a \214lename.)144 693.6 Q
+F2 -.666(PA)5 G(TH)-.189 E F0
 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA)
-108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 345.6
+108 705.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 717.6
 R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25
 F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F
-(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x)
-5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T)
--.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144
-369.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)
-2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638
-G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \
-empty string causes the trace output to be sent to the standard error)
-144 381.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA)
-144 393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\
- \214le descriptor\) and then unsetting it will result in the)2.991 F
-(standard error being closed.)144 405.6 Q F1(CDP)108 417.6 Q -.95(AT)
--.74 G(H).95 E F0 1.247(The search path for the)144 429.6 R F1(cd)3.747
-E F0 3.747(command. This)3.747 F 1.248
-(is a colon-separated list of directories in which the)3.747 F 3.796
-(shell looks for destination directories speci\214ed by the)144 441.6 R
-F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795
-(alue is)-.25 F F4(".:~:/usr")144 453.6 Q F0(.)A F1(CHILD_MAX)108 465.6
-Q F0 .997(Set the number of e)144 477.6 R .997(xited child status v)-.15
-F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997
-(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144
-489.6 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077
-(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077
-(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 501.6 Q
-2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E
-F1(COLUMNS)108 513.6 Q F0 .828(Used by the)144 525.6 R F1(select)3.328 E
-F0 .829(compound command to determine the terminal width when printing \
-selection)3.328 F 4.507(lists. Automatically)144 537.6 R 2.007
-(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006
+(-)-.2 E 3.114(ated when)144 729.6 R F4 3.114(set -x)5.614 F F0 3.114
+(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114
+(he \214le descriptor is closed when)-8.114 F(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(14)188.455 E 0 Cg EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0
+SF -.27(BA)144 84 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138
+(is unset or assigned a ne)2.388 F 2.638(wv)-.25 G 2.638
+(alue. Unsetting)-2.888 F F1 -.27(BA)2.638 G(SH_XTRA).27 E(CEFD)-.495 E
+F0 .138(or assigning it)2.388 F 2.531(the empty string causes the trace\
+ output to be sent to the standard error)144 96 R 7.531(.N)-.55 G 2.531
+(ote that setting)-7.531 F F1 -.27(BA)144 108 S(SH_XTRA).27 E(CEFD)-.495
+E F0 .74(to 2 \(the standard error \214le descriptor\) and then unsetti\
+ng it will result in the)2.991 F(standard error being closed.)144 120 Q
+/F2 10/Times-Bold@0 SF(CDP)108 132 Q -.95(AT)-.74 G(H).95 E F0 1.247
+(The search path for the)144 144 R F2(cd)3.747 E F0 3.747(command. This)
+3.747 F 1.248(is a colon-separated list of directories in which the)
+3.747 F 3.796
+(shell looks for destination directories speci\214ed by the)144 156 R F2
+(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795
+(alue is)-.25 F/F3 10/Courier@0 SF(".:~:/usr")144 168 Q F0(.)A F2
+(CHILD_MAX)108 180 Q F0 .997(Set the number of e)144 192 R .997
+(xited child status v)-.15 F .997(alues for the shell to remember)-.25 F
+5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)
+-3.498 E -.25(va)144 204 S 1.078(lue to be decreased belo).25 F 3.577
+(waP)-.25 G 1.077(OSIX-mandated minimum, and there is a maximum v)-3.577
+F 1.077(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144
+216 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)
+-.25 E F2(COLUMNS)108 228 Q F0 .828(Used by the)144 240 R F2(select)
+3.328 E F0 .829(compound command to determine the terminal width when p\
+rinting selection)3.328 F 4.507(lists. Automatically)144 252 R 2.007
+(set if the)4.507 F F2(checkwinsize)4.507 E F0 2.006
 (option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H
-2.006(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9
-/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .847
-(An array v)144 573.6 R .848(ariable from which)-.25 F F1(bash)3.348 E
-F0 .848(reads the possible completions generated by a shell function)
-3.348 F(in)144 585.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)
--2.785 G .285(he programmable completion f)-2.785 F .285(acility \(see)
--.1 F F1(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E
-2.785(w\). Each)-.25 F(array element contains one possible completion.)
-144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.535
-E F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036
-(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.536 E
+2.006(hell upon).15 F(receipt of a)144 264 Q F1(SIGWINCH)2.5 E/F4 9
+/Times-Roman@0 SF(.)A F2(COMPREPL)108 276 Q(Y)-.92 E F0 .847(An array v)
+144 288 R .848(ariable from which)-.25 F F2(bash)3.348 E F0 .848
+(reads the possible completions generated by a shell function)3.348 F
+(in)144 300 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G
+.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2
+(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785
+(w\). Each)-.25 F(array element contains one possible completion.)144
+312 Q F2(EMA)108 324 Q(CS)-.55 E F0(If)144 336 Q F2(bash)2.535 E F0 .035
+(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036
+(vironment when the shell starts with v)-.4 F(alue)-.25 E F3(t)2.536 E
 F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F
-(shell is running in an Emacs shell b)144 633.6 Q(uf)-.2 E
-(fer and disables line editing.)-.25 E F1(ENV)108 645.6 Q F0(Similar to)
-144 645.6 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0
+(shell is running in an Emacs shell b)144 348 Q(uf)-.2 E
+(fer and disables line editing.)-.25 E F2(ENV)108 360 Q F0(Similar to)
+144 360 Q F1 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0
 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G
-2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 2.717(Ac)
-144 669.6 S .217(olon-separated list of shell patterns \(see)-2.717 F F1
--.1(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C
-.216(e\214ning the list of \214lenames to be)-2.717 F .116
-(ignored by command search using)144 681.6 R F1 -.74(PA)2.616 G(TH)-.21
-E F0 5.116(.F)C .117
+(n)-2.5 E/F5 10/Times-Italic@0 SF(posix mode)2.5 E F0(.)A F2(EXECIGNORE)
+108 372 Q F0 2.717(Ac)144 384 S .217
+(olon-separated list of shell patterns \(see)-2.717 F F2 -.1(Pa)2.717 G
+(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216
+(e\214ning the list of \214lenames to be)-2.717 F .116
+(ignored by command search using)144 396 R F2 -.74(PA)2.616 G(TH)-.21 E
+F0 5.116(.F)C .117
 (iles whose full pathnames match one of these patterns)-5.116 F 1.433
-(are not considered e)144 693.6 R -.15(xe)-.15 G 1.432
+(are not considered e)144 408 R -.15(xe)-.15 G 1.432
 (cutable \214les for the purposes of completion and command e).15 F -.15
-(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 705.6 S(TH)-.21 E F0
+(xe)-.15 G 1.432(cution via).15 F F2 -.74(PA)144 420 S(TH)-.21 E F0
 2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha)
--.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0
-2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.909(commands. Full)2.908 F
+-.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0
+2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.909(commands. Full)2.908 F
 (pathnames)2.909 E .364(in the command hash table are not subject to)144
-717.6 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
-(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 729.6
-1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
+432 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
+(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 444 R
+1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
 (cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37
-(cutable \214les.).15 F 1.37(The pattern matching)6.37 F(GNU Bash 4.4)72
-768 Q(2016 August 26)142.895 E(14)192.055 E 0 Cg EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(honors the setting of the)144 84 Q/F1 10/Times-Bold@0 SF(extglob)2.5 E
-F0(shell option.)2.5 E F1(FCEDIT)108 96 Q F0(The def)144 108 Q
-(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2
-E F1(FIGNORE)108 120 Q F0 2.599(Ac)144 132 S .098
-(olon-separated list of suf)-2.599 F<8c78>-.25 E .098
-(es to ignore when performing \214lename completion \(see)-.15 F/F2 9
-/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 144 Q 2.704(w\). A)-.25 F
-.204(\214lename whose suf)2.704 F .205
-(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205
-(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.)
-144 156 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
-(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 168 Q F0 .231
-(If set to a numeric v)144 180 R .231
+(cutable \214les.).15 F 1.37(The pattern matching)6.37 F
+(honors the setting of the)144 456 Q F2(extglob)2.5 E F0(shell option.)
+2.5 E F2(FCEDIT)108 468 Q F0(The def)144 480 Q(ault editor for the)-.1 E
+F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 492 Q F0
+2.599(Ac)144 504 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E
+.098(es to ignore when performing \214lename completion \(see)-.15 F F1
+(READLINE)2.598 E F0(belo)144 516 Q 2.704(w\). A)-.25 F .204
+(\214lename whose suf)2.704 F .205(\214x matches one of the entries in)
+-.25 F F1(FIGNORE)2.705 E F0 .205(is e)2.455 F .205
+(xcluded from the list)-.15 F(of matched \214lenames.)144 528 Q 2.5(As)5
+G(ample v)-2.5 E(alue is)-.25 E F3(".o:~")2.5 E F0(.)A F2(FUNCNEST)108
+540 Q F0 .231(If set to a numeric v)144 552 R .231
 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F
 -.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E
-(cations that e)144 192 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
-2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1
-(GLOBIGNORE)108 204 Q F0 3.118(Ac)144 216 S .618(olon-separated list of\
- patterns de\214ning the set of \214lenames to be ignored by pathname e)
--3.118 F(xpan-)-.15 E 3.132(sion. If)144 228 R 3.132<618c>3.132 G .632
-(lename matched by a pathname e)-3.132 F .632
-(xpansion pattern also matches one of the patterns in)-.15 F F2
-(GLOBIGNORE)144 240 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E
--.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1
-(HISTCONTR)108 252 Q(OL)-.3 E F0 2.653(Ac)144 264 S .153
-(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F
-2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15
-G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .154(If the list)
-5.153 F .491(of v)144 276 R .491(alues includes)-.25 F/F5 10
-/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G .491
-(ines which be)-2.991 F .491(gin with a)-.15 F F1(space)2.991 E F0 .49
-(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99
-G .49(he his-)-2.99 F .557(tory list.)144 288 R 3.057(Av)5.557 G .557
-(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557
+(cations that e)144 564 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
+2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2
+(GLOBIGNORE)108 576 Q F0 2.923(Ac)144 588 S .423(olon-separated list of\
+ patterns de\214ning the set of \214le names to be ignored by pathname \
+e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 600 R 2.948<618c>2.948 G .448
+(le name matched by a pathname e)-2.948 F .447
+(xpansion pattern also matches one of the patterns in)-.15 F F1
+(GLOBIGNORE)144 612 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df)
+.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 624 Q(OL)-.3 E F0
+2.653(Ac)144 636 S .153(olon-separated list of v)-2.653 F .153
+(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653
+F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.)
+-2.653 F .154(If the list)5.153 F .491(of v)144 648 R .491
+(alues includes)-.25 F F5(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G
+.491(ines which be)-2.991 F .491(gin with a)-.15 F F2(space)2.991 E F0
+.49(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)
+-2.99 G .49(he his-)-2.99 F .557(tory list.)144 660 R 3.057(Av)5.557 G
+.557(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557
 (causes lines matching the pre)3.327 F .558
-(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.959
-(Av)144 300 S .459(alue of)-3.209 F F5(ignor)2.969 E(eboth)-.37 E F0
-.459(is shorthand for)3.239 F F5(ignor)2.959 E(espace)-.37 E F0(and)
-2.959 E F5(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458
-(lue of).25 F F5(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698
-(all pre)144 312 R .698
+(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926
+(Av)144 672 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0
+.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and)
+2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G
+.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698
+(all pre)144 684 R .698
 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G
 3.198(df).15 G .699(rom the history list before that line is)-3.198 F
-(sa)144 324 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264
+(sa)144 696 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264
 (alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263
-(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .263
-(is unset, or does not include)2.513 F 2.941(av)144 336 S .441(alid v)
+(ist is ignored.).15 F(If)5.263 E F1(HISTCONTR)2.763 E(OL)-.27 E F0 .263
+(is unset, or does not include)2.513 F 2.941(av)144 708 S .441(alid v)
 -3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F
 -.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442
-(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F2
-(HISTIGNORE)144 348 Q F4(.)A F0 1.981(The second and subsequent lines o\
-f a multi-line compound command are not)6.482 F
-(tested, and are added to the history re)144 360 Q -.05(ga)-.15 G
-(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.)
-A F1(HISTFILE)108 372 Q F0 .181
-(The name of the \214le in which command history is sa)144 384 R -.15
-(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y)
--.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v)
--.1 F(alue)-.25 E(is)144 396 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5
-(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5
-(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 408 Q F0
-1.623(The maximum number of lines contained in the history \214le.)144
-420 R 1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25
-(va)144 432 S .931(lue, the history \214le is truncated, if necessary)
-.25 F 3.432(,t)-.65 G 3.432(oc)-3.432 G .932
-(ontain no more than that number of lines by)-3.432 F(remo)144 444 Q
+(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F1
+(HISTIGNORE)144 720 Q F4(.)A F0 1.981(The second and subsequent lines o\
+f a multi-line compound command are not)6.482 F(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(15)188.455 E 0 Cg EP
+%%Page: 16 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(tested, and are added to the history re)144 84 Q -.05(ga)-.15 G
+(rdless of the v).05 E(alue of)-.25 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.5
+E(OL)-.27 E/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108
+96 Q F0 .181(The name of the \214le in which command history is sa)144
+108 R -.15(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR)
+-.162 E(Y)-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182
+(ault v)-.1 F(alue)-.25 E(is)144 120 Q/F4 10/Times-Italic@0 SF
+(~/.bash_history)2.5 E F0 5(.I)C 2.5(fu)-5 G
+(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5(dw).15 G
+(hen a shell e)-2.5 E(xits.)-.15 E F3(HISTFILESIZE)108 132 Q F0 1.623
+(The maximum number of lines contained in the history \214le.)144 144 R
+1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144
+156 S .931(lue, the history \214le is truncated, if necessary).25 F
+3.432(,t)-.65 G 3.432(oc)-3.432 G .932
+(ontain no more than that number of lines by)-3.432 F(remo)144 168 Q
 .871(ving the oldest entries.)-.15 F .87(The history \214le is also tru\
 ncated to this size after writing it when a)5.871 F 1.244(shell e)144
-456 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244
+180 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244
 (alue is 0, the history \214le is truncated to zero size.)-.25 F 1.245
-(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 468 R
+(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 192 R
 1.022(alues less than zero inhibit truncation.)-.25 F 1.022
 (The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v)
--.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 480 Q F0(after reading an)
-2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 492 Q F0
-2.657(Ac)144 504 S .157(olon-separated list of patterns used to decide \
+-.25 F 1.021(alue of)-.25 F F3(HISTSIZE)144 204 Q F0(after reading an)
+2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 216 Q F0
+2.657(Ac)144 228 S .157(olon-separated list of patterns used to decide \
 which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G
-2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 516 R .708
+2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 240 R .708
 (Each pattern is anchored at the be)5.708 F .707
 (ginning of the line and must match the complete line)-.15 F .625
-(\(no implicit `)144 528 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125
+(\(no implicit `)144 252 R F3(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125
 (ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626
-(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144
-540 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
+(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144
+264 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
 (In addition to the normal shell pattern matching characters, `)6.793 F
-F1(&)A F0(')A 2.514(matches the pre)144 552 R 2.514(vious history line.)
--.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514
-(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 564
+F3(&)A F0(')A 2.514(matches the pre)144 276 R 2.514(vious history line.)
+-.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514
+(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 288
 Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F
 .852(The second and subsequent lines of a multi-line compound)5.852 F
-1.269(command are not tested, and are added to the history re)144 576 R
--.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2
-(HISTIGNORE)3.77 E F4(.)A F0
-(The pattern matching honors the setting of the)144 588 Q F1(extglob)2.5
-E F0(shell option.)2.5 E F1(HISTSIZE)108 600 Q F0 1.387
-(The number of commands to remember in the command history \(see)144 612
-R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If)
--.25 F(the)3.887 E -.25(va)144 624 S 1.32(lue is 0, commands are not sa)
+1.269(command are not tested, and are added to the history re)144 300 R
+-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F1
+(HISTIGNORE)3.77 E F2(.)A F0
+(The pattern matching honors the setting of the)144 312 Q F3(extglob)2.5
+E F0(shell option.)2.5 E F3(HISTSIZE)108 324 Q F0 1.387
+(The number of commands to remember in the command history \(see)144 336
+R F1(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If)
+-.25 F(the)3.887 E -.25(va)144 348 S 1.32(lue is 0, commands are not sa)
 .25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321
 (he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321
-(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 636 T .437
+(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 360 T .437
 (ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937
 G .437(he history list \(there is no limit\).)-2.937 F .436
 (The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E
-(to 500 after reading an)144 648 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E
-F1(HISTTIMEFORMA)108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951
+(to 500 after reading an)144 372 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E
+F3(HISTTIMEFORMA)108 384 Q(T)-.95 E F0 .951(If this v)144 396 R .951
 (ariable is set and not null, its v)-.25 F .952
-(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952
+(alue is used as a format string for)-.25 F F4(strftime)3.452 E F0 .952
 (\(3\) to print the)B .673
-(time stamp associated with each history entry displayed by the)144 684
-R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v)
+(time stamp associated with each history entry displayed by the)144 408
+R F3(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v)
 3.172 F .672(ariable is)-.25 F .144
-(set, time stamps are written to the history \214le so the)144 696 R
+(set, time stamps are written to the history \214le so the)144 420 R
 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144
 (ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\
- character to distinguish timestamps from other history lines.)144 708 Q
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(15)192.055 E 0 Cg EP
-%%Page: 16 16
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(HOME)108 84 Q F0 1.27
-(The home directory of the current user; the def)144 96 R 1.27(ault ar)
--.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27
-(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E
-(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1
-(HOSTFILE)108 120 Q F0 1.015
-(Contains the name of a \214le in the same format as)144 132 R/F2 10
-/Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015
-(that should be read when the shell)5.181 F .551
-(needs to complete a hostname.)144 144 R .551
+ character to distinguish timestamps from other history lines.)144 432 Q
+F3(HOME)108 444 Q F0 1.27
+(The home directory of the current user; the def)144 456 R 1.27(ault ar)
+-.1 F 1.27(gument for the)-.18 F F3(cd)3.77 E F0 -.2(bu)3.77 G 1.27
+(iltin command.).2 F(The)6.27 E -.25(va)144 468 S(lue of this v).25 E
+(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3
+(HOSTFILE)108 480 Q F0 1.015
+(Contains the name of a \214le in the same format as)144 492 R F4
+(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F
+.551(needs to complete a hostname.)144 504 R .551
 (The list of possible hostname completions may be changed while)5.551 F
-1.058(the shell is running; the ne)144 156 R 1.059
+1.058(the shell is running; the ne)144 516 R 1.059
 (xt time hostname completion is attempted after the v)-.15 F 1.059
-(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138
+(alue is changed,)-.25 F F3(bash)144 528 Q F0 .138
 (adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e)
--2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .138(ut has no v)-.2 F .138
-(alue, or)-.25 F .517(does not name a readable \214le,)144 180 R F1
-(bash)3.017 E F0 .517(attempts to read)3.017 F F2(/etc/hosts)4.684 E F0
-.518(to obtain the list of possible host-)4.684 F(name completions.)144
-192 Q(When)5 E F3(HOSTFILE)2.5 E F0
-(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The)
-144 204 Q F2 .556(Internal F)3.636 F .556(ield Separ)-.45 F(ator)-.15 E
-F0 .556(that is used for w)3.786 F .556(ord splitting after e)-.1 F .555
-(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the)
-.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E
-(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`<space><tab><ne)-.74 E
-(wline>')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503
-(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H
-.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503
+-2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0
+.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517
+(does not name a readable \214le,)144 540 R F3(bash)3.017 E F0 .517
+(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518
+(to obtain the list of possible host-)4.684 F(name completions.)144 552
+Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.)
+2.25 E F3(IFS)108 564 Q F0(The)144 564 Q F4 .556(Internal F)3.636 F .556
+(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556
+(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15
+F -.1(wo)144 576 S(rds with the).1 E F3 -.18(re)2.5 G(ad).18 E F0 -.2
+(bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E
+(`<space><tab><ne)-.74 E(wline>')-.25 E('.)-.74 E F3(IGNOREEOF)108 588 Q
+F0 .503(Controls the action of an interacti)144 600 R .803 -.15(ve s)
+-.25 H .503(hell on receipt of an).15 F F1(EOF)3.003 E F0 .503
 (character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v)
-144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3
+144 612 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1
 (EOF)3.076 E F0 .426
 (characters which must be typed as the \214rst characters)2.676 F .302
-(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G
+(on an input line before)144 624 R F3(bash)2.802 E F0 -.15(ex)2.802 G
 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302
 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302
-(umeric v).15 F .303(alue, or has)-.25 F(no v)144 276 Q(alue, the def)
+(umeric v).15 F .303(alue, or has)-.25 F(no v)144 636 Q(alue, the def)
 -.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E
-F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1
-(INPUTRC)108 288 Q F0 1.436(The \214lename for the)144 300 R F1 -.18(re)
+F1(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F3
+(INPUTRC)108 648 Q F0 1.436(The \214lename for the)144 660 R F3 -.18(re)
 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G
-1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c)
--.37 E F0(\(see)5.601 E F3(READLINE)3.935 E F0(belo)144 312 Q(w\).)-.25
-E F1(LANG)108 324 Q F0 1.239(Used to determine the locale cate)144 324 R
-1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24
+1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c)
+-.37 E F0(\(see)5.601 E F1(READLINE)3.935 E F0(belo)144 672 Q(w\).)-.25
+E F3(INSIDE_EMA)108 684 Q(CS)-.55 E F0 .886(If this v)144 696 R .886
+(ariable appears in the en)-.25 F .886(vironment when the shell starts,)
+-.4 F F3(bash)3.386 E F0 .887(assumes that it is running)3.386 F
+(inside an Emacs shell b)144 708 Q(uf)-.2 E
+(fer and may disable line editing, depending on the v)-.25 E(alue of)
+-.25 E F3(TERM)2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(16)188.455 E 0 Cg EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(LANG)108 84 Q F0 1.24(Used to determine the locale cate)144 84 R
+1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.239
 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E
-(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .974
-(This v)144 360 R .974(ariable o)-.25 F -.15(ve)-.15 G .974
-(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an)
-3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G
-.973(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1
-(LC_COLLA)108 384 Q(TE)-.95 E F0 .411(This v)144 396 R .412(ariable det\
-ermines the collation order used when sorting the results of pathname e)
--.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 408 R 1.465
-(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G
-1.464(lence classes, and collating sequences).25 F(within pathname e)144
-420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0
-1.935(This v)144 444 R 1.936
+(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 108 Q F0 .973
+(This v)144 120 R .973(ariable o)-.25 F -.15(ve)-.15 G .973
+(rrides the v).15 F .973(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473
+E F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0
+-.25(va)3.473 G .974(riable specifying a locale cate-).25 F(gory)144 132
+Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .412(This v)144 156 R .412
+(ariable determines the collation order used when sorting the results o\
+f pathname e)-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144
+168 R 1.464(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va)
+-.25 G 1.465(lence classes, and collating sequences).25 F
+(within pathname e)144 180 Q(xpansion and pattern matching.)-.15 E F1
+(LC_CTYPE)108 192 Q F0 1.936(This v)144 204 R 1.936
 (ariable determines the interpretation of characters and the beha)-.25 F
-1.936(vior of character classes)-.2 F(within pathname e)144 456 Q
-(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E
-F0(This v)144 480 Q(ariable determines the locale used to translate dou\
+1.935(vior of character classes)-.2 F(within pathname e)144 216 Q
+(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 228 Q(GES)-.55 E
+F0(This v)144 240 Q(ariable determines the locale used to translate dou\
 ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC)
-108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E
-(gory used for number formatting.)-.15 E F1(LC_TIME)108 516 Q F0(This v)
-144 528 Q(ariable determines the locale cate)-.25 E
-(gory used for data and time formatting.)-.15 E F1(LINES)108 540 Q F0
-.055(Used by the)144 540 R F1(select)2.555 E F0 .054(compound command t\
-o determine the column length for printing selection lists.)2.555 F .264
-(Automatically set if the)144 552 R F1(checkwinsize)2.764 E F0 .264
-(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265
-(hell upon receipt of a).15 F F3(SIGWINCH)144 564 Q/F4 9/Times-Roman@0
-SF(.)A F1(MAIL)108 576 Q F0 1.201
-(If this parameter is set to a \214le or directory name and the)144 576
-R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201
-(riable is not set,).25 F F1(bash)3.701 E F0
-(informs the user of the arri)144 588 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
+108 252 Q F0(This v)144 264 Q(ariable determines the locale cate)-.25 E
+(gory used for number formatting.)-.15 E F1(LC_TIME)108 276 Q F0(This v)
+144 288 Q(ariable determines the locale cate)-.25 E
+(gory used for data and time formatting.)-.15 E F1(LINES)108 300 Q F0
+.054(Used by the)144 300 R F1(select)2.554 E F0 .054(compound command t\
+o determine the column length for printing selection lists.)2.554 F .265
+(Automatically set if the)144 312 R F1(checkwinsize)2.765 E F0 .264
+(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264
+(hell upon receipt of a).15 F F2(SIGWINCH)144 324 Q/F3 9/Times-Roman@0
+SF(.)A F1(MAIL)108 336 Q F0 1.201
+(If this parameter is set to a \214le or directory name and the)144 336
+R F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.202
+(riable is not set,).25 F F1(bash)3.702 E F0
+(informs the user of the arri)144 348 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E
-(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 600 Q F0 .098
-(Speci\214es ho)144 612 R 2.598(wo)-.25 G .098(ften \(in seconds\))
--2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
-5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224
+(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 360 Q F0 .099
+(Speci\214es ho)144 372 R 2.599(wo)-.25 G .099(ften \(in seconds\))
+-2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
+5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223
 (to check for mail, the shell does so before displaying the primary pro\
-mpt.)144 624 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F
-(or set to a v)144 636 Q(alue that is not a number greater than or equa\
-l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 648 Q
--.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 660 S .49
+mpt.)144 384 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F
+(or set to a v)144 396 Q(alue that is not a number greater than or equa\
+l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 408 Q
+-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 420 S .49
 (olon-separated list of \214lenames to be check)-2.99 F .49
 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri)
-144 672 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \
+144 432 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \
 \214le may be speci\214ed by separating the \214lename from the message\
- with a `?'.)-2.62 F(When used in the te)144 684 Q(xt of the message,)
+ with a `?'.)-2.62 F(When used in the te)144 444 Q(xt of the message,)
 -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G
 (pands to the name of the current mail\214le.).15 E(Example:)5 E F1
-(MAILP)144 696 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
+(MAILP)144 456 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
 -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H
-(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 708 Q F0 .015
+(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 468 Q F0 .015
 (can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015
 (alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015
 (alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\
-ser mail \214les that it uses is system dependent \(e.g., /v)144 720 Q
-(ar/mail/)-.25 E F1($USER)A F0(\).)A(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(16)192.055 E 0 Cg EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(OPTERR)108 84 Q F0 .39(If set to the v)144 96 R .39(alue 1,)-.25 F F1
-(bash)2.89 E F0 .389(displays error messages generated by the)2.889 F F1
-(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9
-/Times-Bold@0 SF .359(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS)
--.828 F F0(belo)2.609 E(w\).)-.25 E F2(OPTERR)5.359 E F0 .36
-(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1
-(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.)
-.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588
-(The search path for commands.)144 132 R .587
+ser mail \214les that it uses is system dependent \(e.g., /v)144 480 Q
+(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 492 Q F0 .389
+(If set to the v)144 504 R .389(alue 1,)-.25 F F1(bash)2.889 E F0 .389
+(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0
+-.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 516 R(UIL)
+-.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR)
+5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2
+(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 528 Q -.15(xe)
+-.15 G(cuted.).15 E F1 -.74(PA)108 540 S(TH)-.21 E F0 .587
+(The search path for commands.)144 540 R .588
 (It is a colon-separated list of directories in which the shell looks)
-5.588 F .471(for commands \(see)144 144 R F2 .471(COMMAND EXECUTION)
-2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472
-(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S
-.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535
-(indicates the current directory)2.786 F 5.535(.A)-.65 G .535
-(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent)
--3.035 E .867(colons, or as an initial or trailing colon.)144 168 R .868
-(The def)5.868 F .868(ault path is system-dependent, and is set by the)
--.1 F(administrator who installs)144 180 Q F1(bash)2.5 E F0 5(.A)C
-(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
-(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 192 Q
-F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 R
-.471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971
-E F0 .471(starts, the shell enters)2.971 F/F4 10/Times-Italic@0 SF .472
-(posix mode)2.972 F F0 .472(before reading)2.972 F .011
-(the startup \214les, as if the)144 228 R F1(\255\255posix)2.511 E F0
+5.587 F .472(for commands \(see)144 552 R F2 .472(COMMAND EXECUTION)
+2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471
+(zero-length \(null\) directory name in the)2.972 F -.25(va)144 564 S
+.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535
+(indicates the current directory)2.785 F 5.535(.A)-.65 G .535
+(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent)
+-3.036 E .868(colons, or as an initial or trailing colon.)144 576 R .868
+(The def)5.868 F .867(ault path is system-dependent, and is set by the)
+-.1 F(administrator who installs)144 588 Q F1(bash)2.5 E F0 5(.A)C
+(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF
+(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 600 Q
+F0(.)A F1(POSIXL)108 612 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 624 R
+.472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971
+E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF .471
+(posix mode)2.971 F F0 .471(before reading)2.971 F .011
+(the startup \214les, as if the)144 636 R F1(\255\255posix)2.511 E F0
 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011
-(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5
-E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft)
--2.5 G(he command)-2.5 E F3(set -o posix)2.5 E F0(had been e)2.5 E -.15
-(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0
-(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G
+(If it is set while the shell is)5.011 F(running,)144 648 Q F1(bash)
+4.498 E F0(enables)4.498 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C
+4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997
+(set -o posix)4.497 F F0 1.997(had been e)4.497 F -.15(xe)-.15 G(cuted.)
+.15 E(When the shell enters)144 660 Q F5(posix mode)2.5 E F0 2.5(,i)C
+2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E
+(as not already set.)-.1 E F1(PR)108 672 Q(OMPT_COMMAND)-.3 E F0
+(If set, the v)144 684 Q(alue is e)-.25 E -.15(xe)-.15 G
 (cuted as a command prior to issuing each primary prompt.).15 E F1(PR)
-108 276 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
-(If set to a number greater than zero, the v)144 288 R .676
+108 696 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
+(If set to a number greater than zero, the v)144 708 R .676
 (alue is used as the number of trailing directory compo-)-.25 F .923
-(nents to retain when e)144 300 R .923(xpanding the)-.15 F F1(\\w)3.423
+(nents to retain when e)144 720 R .923(xpanding the)-.15 F F1(\\w)3.423
 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see)
 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E
-(Characters remo)144 312 Q -.15(ve)-.15 G 2.5(da).15 G
-(re replaced with an ellipsis.)-2.5 E F1(PS0)108 324 Q F0 1.174(The v)
-144 324 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see)
--.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(17)188.455 E 0 Cg EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Characters remo)
+144 84 Q -.15(ve)-.15 G 2.5(da).15 G(re replaced with an ellipsis.)-2.5
+E/F1 10/Times-Bold@0 SF(PS0)108 96 Q F0 1.174(The v)144 96 R 1.174
+(alue of this parameter is e)-.25 F 1.174(xpanded \(see)-.15 F/F2 9
+/Times-Bold@0 SF(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174
 (w\) and displayed by interacti)-.25 F -.15(ve)-.25 G
-(shells after reading a command and before the command is e)144 336 Q
--.15(xe)-.15 G(cuted.).15 E F1(PS1)108 348 Q F0 .065(The v)144 348 R
+(shells after reading a command and before the command is e)144 108 Q
+-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 120 Q F0 .065(The v)144 120 R
 .065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR)
 2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065
-(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 360 R
+(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 132 R
 (def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0
--.74('')2.5 G(.).74 E F1(PS2)108 372 Q F0 .117(The v)144 372 R .117
+-.74('')2.5 G(.).74 E F1(PS2)108 144 Q F0 .117(The v)144 144 R .117
 (alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1)
 2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The)
-5.118 E(def)144 384 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G
-(.).74 E F1(PS3)108 396 Q F0 1.116(The v)144 396 R 1.115
+5.118 E(def)144 156 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G
+(.).74 E F1(PS3)108 168 Q F0 1.116(The v)144 168 R 1.115
 (alue of this parameter is used as the prompt for the)-.25 F F1(select)
 3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR)
-144 408 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 420 Q F0 .1
-(The v)144 420 R .1(alue of this parameter is e)-.25 F .1
+144 180 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 192 Q F0 .1
+(The v)144 192 R .1(alue of this parameter is e)-.25 F .1
 (xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101
-(alue is printed before each command)-.25 F F1(bash)144 432 Q F0 .292
-(displays during an e)2.792 F -.15(xe)-.15 G .292(cution trace.).15 F
-.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .291
-(is replicated multiple times, as)2.542 F(necessary)144 444 Q 2.5(,t)
--.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G
-(ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0
--.74('')2.5 G(.).74 E F1(SHELL)108 456 Q F0 .663
-(The full pathname to the shell is k)144 468 R .664(ept in this en)-.1 F
-.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .664
-(it is not set when the shell)3.164 F(starts,)144 480 Q F1(bash)2.5 E F0
-(assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55
-G(ogin shell.)-2.5 E F1(TIMEFORMA)108 492 Q(T)-.95 E F0 .827(The v)144
-504 R .826
+(alue is printed before each command)-.25 F F1(bash)144 204 Q F0 .335
+(displays during an e)2.835 F -.15(xe)-.15 G .335(cution trace.).15 F
+.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335
+(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-)2.584 F
+(cated multiple times, as necessary)144 216 Q 2.5(,t)-.65 G 2.5(oi)-2.5
+G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E
+(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1
+(SHELL)108 228 Q F0 .663(The full pathname to the shell is k)144 240 R
+.664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If)-.25
+F .664(it is not set when the shell)3.164 F(starts,)144 252 Q F1(bash)
+2.5 E F0(assigns to it the full pathname of the current user')2.5 E 2.5
+(sl)-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 264 Q(T)-.95 E F0 .827
+(The v)144 276 R .826
 (alue of this parameter is used as a format string specifying ho)-.25 F
 3.326(wt)-.25 G .826(he timing information for)-3.326 F .648
-(pipelines pre\214x)144 516 R .648(ed with the)-.15 F F1(time)3.148 E F0
+(pipelines pre\214x)144 288 R .648(ed with the)-.15 F F1(time)3.148 E F0
 (reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F
 (The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712
-(an escape sequence that is e)144 528 R .711(xpanded to a time v)-.15 F
+(an escape sequence that is e)144 300 R .711(xpanded to a time v)-.15 F
 .711(alue or other information.)-.25 F .711(The escape sequences)5.711 F
-(and their meanings are as follo)144 540 Q
-(ws; the braces denote optional portions.)-.25 E F1(%%)144 558 Q F0 2.5
-(Al)194 558 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 570 Q F4(p)A F1
-(][l]R)A F0(The elapsed time in seconds.)194 570 Q F1(%[)144 582 Q F4(p)
-A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 582 Q
-F1(%[)144 594 Q F4(p)A F1(][l]S)A F0
-(The number of CPU seconds spent in system mode.)194 594 Q F1(%P)144 606
-Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 606 Q .87
-(The optional)144 622.8 R F4(p)3.37 E F0 .87(is a digit specifying the)
-3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
+(and their meanings are as follo)144 312 Q
+(ws; the braces denote optional portions.)-.25 E F1(%%)144 330 Q F0 2.5
+(Al)194 330 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 342 Q/F3 10
+/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194
+342 Q F1(%[)144 354 Q F3(p)A F1(][l]U)A F0
+(The number of CPU seconds spent in user mode.)194 354 Q F1(%[)144 366 Q
+F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194
+366 Q F1(%P)144 378 Q F0
+(The CPU percentage, computed as \(%U + %S\) / %R.)194 378 Q .87
+(The optional)144 394.8 R F3(p)3.37 E F0 .87(is a digit specifying the)
+3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
 (he number of fractional digits after a decimal)-3.37 F 2.526(point. A)
-144 634.8 R -.25(va)2.526 G .025
+144 406.8 R -.25(va)2.526 G .025
 (lue of 0 causes no decimal point or fraction to be output.).25 F .025
 (At most three places after the)5.025 F .537
-(decimal point may be speci\214ed; v)144 646.8 R .537(alues of)-.25 F F4
+(decimal point may be speci\214ed; v)144 418.8 R .537(alues of)-.25 F F3
 (p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E
-F4(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 658.8 Q
-(alue 3 is used.)-.25 E .668(The optional)144 675.6 R F1(l)3.168 E F0
+F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 430.8 Q
+(alue 3 is used.)-.25 E .668(The optional)144 447.6 R F1(l)3.168 E F0
 .668(speci\214es a longer format, including minutes, of the form)3.168 F
-F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.167(s. The)B -.25(va)
-3.167 G(lue).25 E(of)144 687.6 Q F4(p)2.5 E F0
+F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va)
+3.167 G(lue).25 E(of)144 459.6 Q F3(p)2.5 E F0
 (determines whether or not the fraction is included.)2.5 E 13.364
-(If this v)144 704.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865
+(If this v)144 476.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865
 E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr)
-144 716.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
+144 488.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113
 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144
-728.4 R(trailing ne)2.5 E
-(wline is added when the format string is displayed.)-.25 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(17)192.055 E 0 Cg EP
-%%Page: 18 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(TMOUT)108 84 Q F0 .941(If set to a v)144 96 R .941
-(alue greater than zero,)-.25 F/F2 9/Times-Bold@0 SF(TMOUT)3.441 E F0
-.941(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1
--.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 108 Q F1
-(select)2.811 E F0 .311(command terminates if input does not arri)2.811
-F .61 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.81 E F0 .31
-(seconds when input is com-)2.56 F .885(ing from a terminal.)144 120 R
-.885(In an interacti)5.885 F 1.185 -.15(ve s)-.25 H .885(hell, the v).15
-F .886(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144
-132 S 1.05(it for a line of input after issuing the primary prompt.).1 F
-F1(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)
--.1 F(number of seconds if a complete line of input does not arri)144
-144 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 156 Q F0 .39(If set,)144 168
+500.4 R(trailing ne)2.5 E
+(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108
+512.4 Q F0 .941(If set to a v)144 524.4 R .941(alue greater than zero,)
+-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941
+(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441
+G(iltin.).2 E(The)144 536.4 Q F1(select)2.811 E F0 .311
+(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H
+(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F
+.885(ing from a terminal.)144 548.4 R .885(In an interacti)5.885 F 1.185
+-.15(ve s)-.25 H .885(hell, the v).15 F .886
+(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 560.4
+S 1.05(it for a line of input after issuing the primary prompt.).1 F F1
+(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1
+F(number of seconds if a complete line of input does not arri)144 572.4
+Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 584.4 Q F0 .39(If set,)144 596.4
 R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39
 (alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391
-(creates temporary \214les for the)2.891 F(shell')144 180 Q 2.5(su)-.55
-G(se.)-2.5 E F1(auto_r)108 192 Q(esume)-.18 E F0 .531(This v)144 204 R
-.531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531
+(creates temporary \214les for the)2.891 F(shell')144 608.4 Q 2.5(su)
+-.55 G(se.)-2.5 E F1(auto_r)108 620.4 Q(esume)-.18 E F0 .531(This v)144
+632.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531
 (he shell interacts with the user and job control.)-3.031 F .53
-(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 216 R
+(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 644.4 R
 .538(ord simple commands without redirections are treated as candidates\
- for resumption of an)-.1 F -.15(ex)144 228 S .367(isting stopped job)
+ for resumption of an)-.1 F -.15(ex)144 656.4 S .367(isting stopped job)
 .15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366
 (wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F
 1.124(the string typed, the job most recently accessed is selected.)144
-240 R(The)6.125 E/F3 10/Times-Italic@0 SF(name)3.985 E F0 1.125
-(of a stopped job, in this)3.805 F(conte)144 252 Q 1.133
+668.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this)
+3.805 F(conte)144 680.4 Q 1.133
 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v)
 6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132
 (he string supplied must)-3.632 F .624
-(match the name of a stopped job e)144 264 R .624(xactly; if set to)-.15
-F F3(substring)3.125 E F0 3.125(,t).22 G .625
+(match the name of a stopped job e)144 692.4 R .624(xactly; if set to)
+-.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625
 (he string supplied needs to match a)-3.125 F .885
-(substring of the name of a stopped job)144 276 R 5.884(.T)-.4 G(he)
+(substring of the name of a stopped job)144 704.4 R 5.884(.T)-.4 G(he)
 -5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884
-(vides functionality analogous to)-.15 F(the)144 288 Q F1(%?)3.333 E F0
-.833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E
-F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo)
+(vides functionality analogous to)-.15 F(the)144 716.4 Q F1(%?)3.333 E
+F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27
+F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo)
 -.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316
-(must be a pre\214x of a stopped job')144 300 R 2.816(sn)-.55 G .316
+(must be a pre\214x of a stopped job')144 728.4 R 2.816(sn)-.55 G .316
 (ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F
-F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 312 Q(.)-.55 E
-F1(histchars)108 324 Q F0 2.069(The tw)144 336 R 4.57(oo)-.1 G 4.57(rt)
--4.57 G 2.07(hree characters which control history e)-4.57 F 2.07
-(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E(OR)
--.162 E(Y)-.315 E(EXP)144 348 Q(ANSION)-.666 E F0(belo)3.466 E 3.716
-(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215
-(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G
-1.215(he character which)-3.715 F .798(signals the start of a history e)
-144 360 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798
-(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G
-(ubstitu-)-3.298 E(tion)144 372 Q F0(character)2.74 E 2.74(,w)-.4 G .239
+F1(%)2.815 E F3(string)A F0(job)2.815 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(18)188.455 E 0 Cg EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(identi\214er)144
+84 Q(.)-.55 E/F1 10/Times-Bold@0 SF(histchars)108 96 Q F0 2.069(The tw)
+144 108 R 4.57(oo)-.1 G 4.57(rt)-4.57 G 2.07
+(hree characters which control history e)-4.57 F 2.07(xpansion and tok)
+-.15 F 2.07(enization \(see)-.1 F/F2 9/Times-Bold@0 SF(HIST)4.57 E(OR)
+-.162 E(Y)-.315 E(EXP)144 120 Q(ANSION)-.666 E F0(belo)3.466 E 3.716
+(w\). The)-.25 F 1.216(\214rst character is the)3.716 F/F3 10
+/Times-Italic@0 SF 1.215(history e)3.715 F(xpansion)-.2 E F0(character)
+3.715 E 3.715(,t)-.4 G 1.215(he character which)-3.715 F .798
+(signals the start of a history e)144 132 R .798(xpansion, normally `)
+-.15 F F1(!)A F0 3.298('. The)B .798(second character is the)3.298 F F3
+(quic)3.298 E 3.298(ks)-.2 G(ubstitu-)-3.298 E(tion)144 144 Q F0
+(character)2.74 E 2.74(,w)-.4 G .239
 (hich is used as shorthand for re-running the pre)-2.74 F .239
 (vious command entered, substitut-)-.25 F .575
-(ing one string for another in the command.)144 384 R .575(The def)5.575
+(ing one string for another in the command.)144 156 R .575(The def)5.575
 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576
 (optional third character is the)3.076 F .223(character which indicates\
  that the remainder of the line is a comment when found as the \214rst \
-char)144 396 R(-)-.2 E 1.293(acter of a w)144 408 R 1.293
+char)144 168 R(-)-.2 E 1.293(acter of a w)144 180 R 1.293
 (ord, normally `)-.1 F F1(#)A F0 3.793('. The)B 1.294
 (history comment character causes history substitution to be)3.794 F .38
-(skipped for the remaining w)144 420 R .38(ords on the line.)-.1 F .379
+(skipped for the remaining w)144 192 R .38(ords on the line.)-.1 F .379
 (It does not necessarily cause the shell parser to treat)5.379 F
-(the rest of the line as a comment.)144 432 Q F1(Arrays)87 448.8 Q(Bash)
-108 460.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe)
+(the rest of the line as a comment.)144 204 Q F1(Arrays)87 220.8 Q(Bash)
+108 232.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe)
 -.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H
 .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891
-(ariable may be used as an)-3.641 F(inde)108 472.8 Q -.15(xe)-.15 G
+(ariable may be used as an)-3.641 F(inde)108 244.8 Q -.15(xe)-.15 G
 2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2
 (bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15
 F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F
-.328(an array)108 484.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)
+.328(an array)108 256.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)
 -.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G
 2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F
 5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329
-(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 496.8 R
+(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 268.8 R
 1.595(gers \(including arithmetic e)-.15 F 1.595
 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25
 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108
-508.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G
+280.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G
 (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15
-(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 525.6 R -.15(xe)
+(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 297.6 R -.15(xe)
 -.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F
 4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F
-F3(name)4.963 E F0([)A F3(sub-)A(script)108 537.6 Q F0(]=)A F3(value)A
+F3(name)4.963 E F0([)A F3(sub-)A(script)108 309.6 Q F0(]=)A F3(value)A
 F0 6.549(.T)C(he)-6.549 E F3(subscript)4.389 E F0 1.549
 (is treated as an arithmetic e)4.729 F 1.549(xpression that must e)-.15
 F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o)-7.348
-E -.15(ex)108 549.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15
+E -.15(ex)108 321.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15
 G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48
 E 4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.98
 (SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E
-(w\).)-.25 E F1(declar)108 561.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5
+(w\).)-.25 E F1(declar)108 333.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5
 E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3
-(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 578.4 Q .3 -.15
+(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 350.4 Q .3 -.15
 (ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18
-G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 595.2 Q .941
+G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 367.2 Q .941
 (utes may be speci\214ed for an array v)-.2 F .941(ariable using the)
 -.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 -.18(re)3.44 G
 (adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F(attrib)3.44 E(ute)
--.2 E(applies to all members of an array)108 607.2 Q(.)-.65 E 1.647
-(Arrays are assigned to using compound assignments of the form)108 624 R
+-.2 E(applies to all members of an array)108 379.2 Q(.)-.65 E 1.647
+(Arrays are assigned to using compound assignments of the form)108 396 R
 F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647
 (... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each)
--4.148 F F3(value)108 636 Q F0 1.833(is of the form [)4.333 F F3
+-4.148 F F3(value)108 408 Q F0 1.833(is of the form [)4.333 F F3
 (subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15
 G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.832
 (ything b)-.15 F(ut)-.2 E F3(string)4.332 E F0(.)A .163
-(When assigning to inde)108 648 R -.15(xe)-.15 G 2.663(da).15 G .163
+(When assigning to inde)108 420 R -.15(xe)-.15 G 2.663(da).15 G .163
 (rrays, if the optional brack)-2.663 F .163
 (ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664
-(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 660 R
+(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 432 R
 3.911(xo)-.15 G 3.911(ft)-3.911 G 1.411
 (he element assigned is the last inde)-3.911 F 3.91(xa)-.15 G 1.41
-(ssigned to by the statement plus one.)-3.91 F(Inde)108 672 Q
-(xing starts at zero.)-.15 E(When assigning to an associati)108 688.8 Q
+(ssigned to by the statement plus one.)-3.91 F(Inde)108 444 Q
+(xing starts at zero.)-.15 E(When assigning to an associati)108 460.8 Q
 .3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.)
--2.5 E .239(This syntax is also accepted by the)108 705.6 R F1(declar)
+-2.5 E .239(This syntax is also accepted by the)108 477.6 R F1(declar)
 2.739 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24
 (vidual array elements may be assigned to using the)-.25 F F3(name)108
-717.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917
+489.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917
 (syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917
 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray)
 -4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-)
-4.597 F .115(scripted by a ne)108 729.6 R -.05(ga)-.15 G(ti).05 E .415
+4.597 F .115(scripted by a ne)108 501.6 R -.05(ga)-.15 G(ti).05 E .415
 -.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115
 (hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H
 2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(18)192.055 E 0 Cg EP
-%%Page: 19 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of)108 84 Q/F1 10
-/Times-Italic@0 SF(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25
+(of)108 513.6 Q F3(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25
 -.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838
 (ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838
 (nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338
-G .838(eferences the last)-3.338 F(element.)108 96 Q(An)108 112.8 Q
+G .838(eferences the last)-3.338 F(element.)108 525.6 Q(An)108 542.4 Q
 3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${)
--3.575 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.076
+-3.575 F F3(name)A F0([)A F3(subscript)A F0 3.575(]}. The)B 1.076
 (braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542
-(con\215icts with pathname e)108 124.8 R 4.041(xpansion. If)-.15 F F1
-(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or)
-4.041 E F2(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F
-1.541(xpands to all members of)-.15 F F1(name)4.041 E F0(.)A 1.056
-(These subscripts dif)108 136.8 R 1.056(fer only when the w)-.25 F 1.057
+(con\215icts with pathname e)108 554.4 R 4.041(xpansion. If)-.15 F F3
+(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E
+F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541
+(xpands to all members of)-.15 F F3(name)4.041 E F0(.)A 1.056
+(These subscripts dif)108 566.4 R 1.056(fer only when the w)-.25 F 1.057
 (ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057
-(ord is double-quoted,)-.1 F(${)108 148.8 Q F1(name)A F0 .521([*]} e)B
+(ord is double-quoted,)-.1 F(${)108 578.4 Q F3(name)A F0 .521([*]} e)B
 .521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52
 (alue of each array member separated by the \214rst character)-.25 F
-1.374(of the)108 160.8 R/F3 9/Times-Bold@0 SF(IFS)3.874 E F0 1.374
-(special v)3.624 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375
-([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.375
-(to a separate w)3.875 F 3.875(ord. When)-.1 F 2.028
-(there are no array members, ${)108 172.8 R F1(name)A F0 2.028([@]} e)B
-2.028(xpands to nothing.)-.15 F 2.027(If the double-quoted e)7.028 F
-2.027(xpansion occurs)-.15 F .758(within a w)108 184.8 R .759
-(ord, the e)-.1 F .759
+1.374(of the)108 590.4 R F2(IFS)3.874 E F0 1.374(special v)3.624 F 1.375
+(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375
+(xpands each element of)-.15 F F3(name)3.875 E F0 1.375(to a separate w)
+3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108
+602.4 R F3(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F
+2.027(If the double-quoted e)7.028 F 2.027(xpansion occurs)-.15 F .758
+(within a w)108 614.4 R .759(ord, the e)-.1 F .759
 (xpansion of the \214rst parameter is joined with the be)-.15 F .759
 (ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108
-196.8 R .516(xpansion of the last parameter is joined with the last par\
+626.4 R .516(xpansion of the last parameter is joined with the last par\
 t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015
-F .227(to the e)108 208.8 R .228(xpansion of the special parameters)-.15
-F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228
+F .227(to the e)108 638.4 R .228(xpansion of the special parameters)-.15
+F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228
 (Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728
-(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 220.8
-S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A
-F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or)
-3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886
-(xpansion is the number of ele-)-.15 F .294(ments in the array)108 232.8
-R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F1(subscript)3.135 E F0
+(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A -.15(ex)108 650.4
+S .886(pands to the length of ${).15 F F3(name)A F0([)A F3(subscript)A
+F0 3.386(]}. If)B F3(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or)
+3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886
+(xpansion is the number of ele-)-.15 F .294(ments in the array)108 662.4
+R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F3(subscript)3.135 E F0
 .295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G
 2.795(da).15 G .295(rray e)-2.795 F -.25(va)-.25 G .295
 (luates to a number).25 F .629
-(less than zero, it is interpreted as relati)108 244.8 R .929 -.15(ve t)
+(less than zero, it is interpreted as relati)108 674.4 R .929 -.15(ve t)
 -.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F
 3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G
 3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G
-(indices count back from the end of the array)108 256.8 Q 2.5(,a)-.65 G
+(indices count back from the end of the array)108 686.4 Q 2.5(,a)-.65 G
 (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
 (eferences the last element.)-2.5 E .595(Referencing an array v)108
-273.6 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
+703.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
 .595(lent to referencing the array with a subscript of).25 F 2.5(0. An)
-108 285.6 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
-E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E
-F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 302.4
+108 715.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
+E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F1(bash)2.5 E
+F0(will create an array if necessary)2.5 E(.)-.65 E(GNU Bash 5.0)72 768
+Q(2018 December 7)139.295 E(19)188.455 E 0 Cg EP
+%%Page: 20 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An array v)108 84
 Q(ariable is considered set if a subscript has been assigned a v)-.25 E
 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E
-.418(It is possible to obtain the k)108 319.2 R -.15(ey)-.1 G 2.918(s\()
+.418(It is possible to obtain the k)108 100.8 R -.15(ey)-.1 G 2.918(s\()
 .15 G .418(indices\) of an array as well as the v)-2.918 F 2.917
-(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .417(]} and ${)B F2
-(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 331.2 S .749
-(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name)
+(alues. ${)-.25 F/F1 10/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF
+(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1(!)A F2(name)A F0([)A F2(*)A
+F0(]})A -.15(ex)108 112.8 S .749
+(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name)
 3.249 E F0 5.749(.T)C .75
 (he treatment when in double quotes is similar to)-5.749 F(the e)108
-343.2 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5
-E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 360 Q F2(unset)2.767
-E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G
-(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A
+124.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5
+E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 141.6 Q F1(unset)
+2.767 E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1
+G(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A
 F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x)
--.15 E F1(sub-)2.766 E(script)108 372 Q F0 6.318(.N)C -2.25 -.15(eg a)
--6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F
--.15(xe)-.15 G 3.818(da).15 G 1.319
-(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319
-(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108
-384 S .298(id unw).2 F .298(anted side ef)-.1 F .298
-(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.298 E F1
-(name)2.797 E F0 2.797(,w)C(here)-2.797 E F1(name)2.797 E F0 .297
-(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F2(unset)2.797 E F1
-(name)108 396 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E
-F0(is)2.5 E F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E
--.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108
-412.8 Q F2(declar)3.573 E(e)-.18 E F0(,)A F2(local)3.573 E F0 3.573(,a)C
-(nd)-3.573 E F2 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073
-(iltins each accept a).2 F F2<ad61>3.573 E F0 1.073
+-.15 E F2(sub-)2.766 E(script)108 153.6 Q F0 3.974(,f)C 1.474
+(or both inde)-3.974 F -.15(xe)-.15 G 3.974(da).15 G 1.474(nd associati)
+-3.974 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti)
+.05 E 1.774 -.15(ve s)-.25 H 1.474(ubscripts to inde).15 F -.15(xe)-.15
+G 3.975(da).15 G 1.475(rrays are interpreted as)-3.975 F .615
+(described abo)108 165.6 R -.15(ve)-.15 G 5.615(.U).15 G .615
+(nsetting the last element of an array v)-5.615 F .614
+(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.614 E F2
+(name)3.114 E F0(,)A(where)108 177.6 Q F2(name)2.5 E F0(is an array)2.5
+E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 E F0([)A F2
+(subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0
+(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G
+(he entire array)-2.5 E(.)-.65 E .847(When using a v)108 194.4 R .848
+(ariable name with a subscript as an ar)-.25 F .848
+(gument to a command, such as with)-.18 F F1(unset)3.348 E F0 3.348(,w)C
+(ithout)-3.348 E .345(using the w)108 206.4 R .345(ord e)-.1 F .345
+(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 2.845(,t).15 G .345
+(he ar)-2.845 F .344(gument is subject to pathname e)-.18 F 2.844
+(xpansion. If)-.15 F(path-)2.844 E(name e)108 218.4 Q
+(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E
+(The)108 235.2 Q F1(declar)3.573 E(e)-.18 E F0(,)A F1(local)3.573 E F0
+3.573(,a)C(nd)-3.573 E F1 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G
+1.073(iltins each accept a).2 F F1<ad61>3.573 E F0 1.073
 (option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G 1.074
-(rray and a)-3.574 F F2<ad41>3.574 E F0 .339
-(option to specify an associati)108 424.8 R .638 -.15(ve a)-.25 H(rray)
+(rray and a)-3.574 F F1<ad41>3.574 E F0 .339
+(option to specify an associati)108 247.2 R .638 -.15(ve a)-.25 H(rray)
 .15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,)
--2.838 F F2<ad41>2.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The)
-5.338 E F2 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44
-(accepts a)108 436.8 R F2<ad61>2.941 E F0 .441
+-2.838 F F1<ad41>2.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The)
+5.338 E F1 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44
+(accepts a)108 259.2 R F1<ad61>2.941 E F0 .441
 (option to assign a list of w)2.941 F .441
 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he)
--5.441 E F2(set)2.941 E F0(and)2.941 E F2(declar)2.941 E(e)-.18 E F0 -.2
-(bu)108 448.8 S(iltins display array v).2 E(alues in a w)-.25 E
-(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95
-/Times-Bold@0 SF(EXP)72 465.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\
-rmed on the command line after it has been split into w)108 477.6 R 3.26
+-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2
+(bu)108 271.2 S(iltins display array v).2 E(alues in a w)-.25 E
+(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95
+/Times-Bold@0 SF(EXP)72 288 Q(ANSION)-.81 E F0 .76(Expansion is perform\
+ed on the command line after it has been split into w)108 300 R 3.26
 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76
-(inds of)-3.26 F -.15(ex)108 489.6 S .369(pansion performed:).15 F F1
-(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e)
-2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369
-(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .37
-(command sub-)2.869 F(stitution)108 501.6 Q F0(,).24 E F1(arithmetic e)
-2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5
-E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24
-E .419(The order of e)108 518.4 R .419(xpansions is: brace e)-.15 F .418
+(inds of)-3.26 F -.15(ex)108 312 S .369(pansion performed:).15 F F2(br)
+2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e)
+2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369
+(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .37
+(command sub-)2.869 F(stitution)108 324 Q F0(,).24 E F2(arithmetic e)2.5
+E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E
+F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 E
+.419(The order of e)108 340.8 R .419(xpansions is: brace e)-.15 F .418
 (xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418
-(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 530.4 S
+(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 352.8 S
 .195(pansion, and command substitution \(done in a left-to-right f).15 F
 .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-)
--.15 E(sion.)108 542.4 Q .257
-(On systems that can support it, there is an additional e)108 559.2 R
-.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257
+-.15 E(sion.)108 364.8 Q .257
+(On systems that can support it, there is an additional e)108 381.6 R
+.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F2(pr)2.757 E .257
 (ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2
-E(formed at the same time as tilde, parameter)108 571.2 Q 2.5(,v)-.4 G
+E(formed at the same time as tilde, parameter)108 393.6 Q 2.5(,v)-.4 G
 (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.)
--.15 E .002(After these e)108 588 R .003
+-.15 E .002(After these e)108 410.4 R .003
 (xpansions are performed, quote characters present in the original w)
 -.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003
-(nless the)-2.503 F(y)-.15 E(ha)108 600 Q .3 -.15(ve b)-.2 H
-(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1
-E F0(\).)A 1.487(Only brace e)108 616.8 R 1.487(xpansion, w)-.15 F 1.487
-(ord splitting, and pathname e)-.1 F 1.487
-(xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15
-(ex)108 628.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F
-1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665
+(nless the)-2.503 F(y)-.15 E(ha)108 422.4 Q .3 -.15(ve b)-.2 H
+(een quoted themselv).15 E(es \()-.15 E F2(quote r)A(emo)-.37 E(val)-.1
+E F0(\).)A 1.191(Only brace e)108 439.2 R 1.191(xpansion, w)-.15 F 1.191
+(ord splitting, and pathname e)-.1 F 1.191
+(xpansion can increase the number of w)-.15 F 1.19(ords of the)-.1 F
+-.15(ex)108 451.2 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15
+1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665
 (ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the)
--.15 F -.15(ex)108 640.8 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ")
--2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G
-(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G
-(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 657.6
-Q F1(Br)108.58 669.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
+-.15 F -.15(ex)108 463.2 S 1.245(pansions of ").15 F F1($@)A F0 3.745
+("a)C 1.245(nd ")-3.745 F F1(${)A F2(name)A F1([@]})A F0 1.245
+(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.744 E F2
+(name)A F1([*]})A F0 1.244(as e)3.744 F 1.244(xplained abo)-.15 F 1.544
+-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 475.2 S
+(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 492 Q
+F2(Br)108.58 504 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
 (is a mechanism by which arbitrary strings may be generated.)3.346 F
-.606(This mechanism is similar)5.606 F(to)108 681.6 Q F1 .415
-(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415
+.606(This mechanism is similar)5.606 F(to)108 516 Q F2 .415(pathname e)
+2.915 F(xpansion)-.2 E F0 2.915(,b)C .415
 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F
 .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G
-(he)-2.915 E .152(form of an optional)108 693.6 R F1(pr)2.652 E(eamble)
+(he)-2.915 E .151(form of an optional)108 528 R F2(pr)2.651 E(eamble)
 -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151
 (wed by either a series of comma-separated strings or a sequence e)-.25
-F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 705.6 R
-.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G
-.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659
-(contained within the braces, and the postscript is then appended to ea\
-ch resulting string, e)108 717.6 R .658(xpanding left to)-.15 F(right.)
-108 729.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(19)192.055 E
-0 Cg EP
-%%Page: 20 20
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .718(Brace e)108
-84 R .719(xpansions may be nested.)-.15 F .719(The results of each e)
-5.719 F .719(xpanded string are not sorted; left to right order is)-.15
-F(preserv)108 96 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E/F1 10
-/Times-Bold@0 SF({)A F0(d,c,b)A F1(})A F0 2.5(ee)C
-(xpands into `ade ace abe'.)-2.65 E 3.243(As)108 112.8 S .743(equence e)
--3.243 F .743(xpression tak)-.15 F .743(es the form)-.1 F F1({)3.243 E
-/F2 10/Times-Italic@0 SF(x)A F1(..)A F2(y)A F1([..)A F2(incr)A F1(]})A
-F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E F0(and)3.242 E F2(y)3.242 E F0
-.742(are either inte)3.242 F .742(gers or single characters,)-.15 F(and)
-108 124.8 Q F2(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G .532
-(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532
-(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532
-(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108
-136.8 R F2(x)2.578 E F0(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi)
--2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077
-(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .077
-(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014
-(same width.)108 148.8 R .014(When either)5.014 F F2(x)2.514 E F0(or)
-2.514 E F2(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\
+F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 540 R .563
+(wed by an optional)-.25 F F2(postscript)3.063 E F0 5.563(.T).68 G .563
+(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659(co\
+ntained within the braces, and the postscript is then appended to each \
+resulting string, e)108 552 R .659(xpanding left to)-.15 F(right.)108
+564 Q .719(Brace e)108 580.8 R .719(xpansions may be nested.)-.15 F .719
+(The results of each e)5.719 F .719
+(xpanded string are not sorted; left to right order is)-.15 F(preserv)
+108 592.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0
+(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As)
+108 609.6 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742
+(es the form)-.1 F F1({)3.242 E F2(x)A F1(..)A F2(y)A F1([..)A F2(incr)A
+F1(]})A F0 3.242(,w)C(here)-3.242 E F2(x)3.242 E F0(and)3.243 E F2(y)
+3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,)
+-.15 F(and)108 621.6 Q F2(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G
+.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G
+.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532
+(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108
+633.6 R F2(x)2.577 E F0(and)2.577 E F2(y)2.577 E F0 2.577(,i)C(nclusi)
+-2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077
+(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .078
+(to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015
+(same width.)108 645.6 R .015(When either)5.015 F F2(x)2.515 E F0(or)
+2.515 E F2(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\
 empts to force all generated terms to contain)-.15 F 1.143
-(the same number of digits, zero-padding where necessary)108 160.8 R
+(the same number of digits, zero-padding where necessary)108 657.6 R
 6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F
-(xpression)-.15 E -.15(ex)108 172.8 S 1.064(pands to each character le)
+(xpression)-.15 E -.15(ex)108 669.6 S 1.064(pands to each character le)
 .15 F 1.064(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E
 F2(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G
-1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984
-(that both)108 184.8 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983
-(must be of the same type.)3.484 F .983
+1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .983
+(that both)108 681.6 R F2(x)3.483 E F0(and)3.483 E F2(y)3.483 E F0 .983
+(must be of the same type.)3.483 F .984
 (When the increment is supplied, it is used as the dif)5.983 F(ference)
--.25 E(between each term.)108 196.8 Q(The def)5 E
-(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 213.6
-R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581
-(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582
-(haracters special to other e)-3.082 F(xpansions)-.15 E .016
-(are preserv)108 225.6 R .016(ed in the result.)-.15 F .016
-(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015
-(does not apply an)2.516 F 2.515(ys)-.15 G .015
-(yntactic interpretation to the con-)-2.515 F(te)108 237.6 Q
+-.25 E(between each term.)108 693.6 Q(The def)5 E
+(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108
+710.4 R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581
+(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581
+(haracters special to other e)-3.081 F(xpansions)-.15 E 1.208
+(are preserv)108 722.4 R 1.208(ed in the result.)-.15 F 1.209
+(It is strictly te)6.209 F(xtual.)-.15 E F1(Bash)6.209 E F0 1.209
+(does not apply an)3.709 F 3.709(ys)-.15 G 1.209
+(yntactic interpretation to the)-3.709 F(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(20)188.455 E 0 Cg EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(conte)108 84 Q
 (xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.)
--.15 E 3.632(Ac)108 254.4 S 1.132(orrectly-formed brace e)-3.632 F 1.132
+-.15 E 3.633(Ac)108 100.8 S 1.133(orrectly-formed brace e)-3.633 F 1.132
 (xpansion must contain unquoted opening and closing braces, and at leas\
-t one)-.15 F 3.441(unquoted comma or a v)108 266.4 R 3.441
+t one)-.15 F 3.44(unquoted comma or a v)108 112.8 R 3.441
 (alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441
-(ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755
-(unchanged. A)108 278.4 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0
-.255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255
-(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.911
-(sion. T)108 290.4 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411
+(ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755
+(unchanged. A)108 124.8 R/F1 10/Times-Bold@0 SF({)2.755 E F0(or)2.755 E
+F1(,)2.755 E F0 .255(may be quoted with a backslash to pre)2.755 F -.15
+(ve)-.25 G .255(nt its being considered part of a brace e).15 F(xpres-)
+-.15 E 2.91(sion. T)108 136.8 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41
 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F
-F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F
-(xpan-)-.15 E(sion.)108 302.4 Q 1.476(This construct is typically used \
-as shorthand when the common pre\214x of the strings to be generated is)
-108 319.2 R(longer than in the abo)108 331.2 Q .3 -.15(ve ex)-.15 H
-(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 348 Q -.65(w,)-.25 G
-(dist,b).65 E(ugs})-.2 E(or)108 360 Q(cho)144 372 Q
-(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e)
--.25 E(x}})-.15 E .618(Brace e)108 388.8 R .618
+F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F
+(xpan-)-.15 E(sion, and inhibits brace e)108 148.8 Q
+(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\
+ct is typically used as shorthand when the common pre\214x of the strin\
+gs to be generated is)108 165.6 R(longer than in the abo)108 177.6 Q .3
+-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144
+194.4 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 206.4 Q(cho)144
+218.4 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15
+E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 235.2 R .618
 (xpansion introduces a slight incompatibility with historical v)-.15 F
 .618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618
-(does not treat open-)3.118 F .247
-(ing or closing braces specially when the)108 400.8 R 2.747(ya)-.15 G
-.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248
-(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 412.8 Q -.15
+(does not treat open-)3.118 F .248
+(ing or closing braces specially when the)108 247.2 R 2.748(ya)-.15 G
+.247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247
+(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 259.2 Q -.15
 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03
 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03
 (or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh)
-3.53 E F0(as)3.53 E F2(\214le{1,2})108 424.8 Q F0 .514
-(appears identically in the output.)3.014 F .515(The same w)5.515 F .515
-(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e)
-3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437
-(If strict compatibility with)108 436.8 R F1(sh)2.936 E F0 .436
+3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 271.2 Q F0
+.515(appears identically in the output.)3.015 F .515(The same w)5.515 F
+.515(ord is output as)-.1 F F2 .514(\214le1 \214le2)4.925 F F0 .514
+(after e)3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A .436
+(If strict compatibility with)108 283.2 R F1(sh)2.936 E F0 .436
 (is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1
-(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436
-(xpansion with the)-.15 F F1(+B)108 448.8 Q F0(option to the)2.5 E F1
+(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437
+(xpansion with the)-.15 F F1(+B)108 295.2 Q F0(option to the)2.5 E F1
 (set)2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E
 (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti)
-87 465.6 S(lde Expansion).18 E F0 1.086(If a w)108 477.6 R 1.086(ord be)
--.1 F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0
-1.087('\), all of the characters preceding the \214rst unquoted)B .185(\
-slash \(or all characters, if there is no unquoted slash\) are consider\
-ed a)108 489.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685
-(fn)-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\
-\214x are quoted, the characters in the tilde-pre\214x follo)108 501.6 R
-.726(wing the tilde are treated as a possible)-.25 F F2(lo)108 513.6 Q
-.523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523
+87 312 S(lde Expansion).18 E F0 1.087(If a w)108 324 R 1.087(ord be)-.1
+F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.086
+('\), all of the characters preceding the \214rst unquoted)B .185(slash\
+ \(or all characters, if there is no unquoted slash\) are considered a)
+108 336 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn)
+-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\214x\
+ are quoted, the characters in the tilde-pre\214x follo)108 348 R .725
+(wing the tilde are treated as a possible)-.25 F F2(lo)108 360 Q .522
+(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522
 (his login name is the null string, the tilde is replaced with the v)
--3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 525.6 Q/F4
-9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287
-(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287
-(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\
+-3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 372 Q/F4 9
+/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287
+(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286
+(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\
 ise, the tilde-pre\214x is replaced with the home directory associated \
-with the speci\214ed login name.)108 537.6 Q .093
-(If the tilde-pre\214x is a `~+', the v)108 554.4 R .092
+with the speci\214ed login name.)108 384 Q .092
+(If the tilde-pre\214x is a `~+', the v)108 400.8 R .092
 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092
-(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is)
-5.092 F 3.403(a`)108 566.4 S .903(~\255', the v)-3.403 F .903
+(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is)
+5.093 F 3.404(a`)108 412.8 S .904(~\255', the v)-3.404 F .904
 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0
-.904(if it is set, is substituted.)3.154 F .904(If the characters follo)
-5.904 F .904(wing the)-.25 F 1.642
-(tilde in the tilde-pre\214x consist of a number)108 578.4 R F2(N)4.142
-E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641
-(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\
+.904(if it is set, is substituted.)3.154 F .903(If the characters follo)
+5.903 F .903(wing the)-.25 F 1.641
+(tilde in the tilde-pre\214x consist of a number)108 424.8 R F2(N)4.141
+E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642
+(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\
 ith the corresponding element from the directory stack, as it w)108
-590.4 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu)
-108 602.4 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G
-.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F
-.454(the characters follo)2.954 F .454
+436.8 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu)
+108 448.8 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G
+.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F
+.454(the characters follo)2.954 F .455
 (wing the tilde in the tilde-pre\214x)-.25 F
 (consist of a number without a leading `+' or `\255', `+' is assumed.)
-108 614.4 Q(If the login name is in)108 631.2 Q -.25(va)-.4 G
+108 460.8 Q(If the login name is in)108 477.6 Q -.25(va)-.4 G
 (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E
-(ord is unchanged.)-.1 E .166(Each v)108 648 R .167
+(ord is unchanged.)-.1 E .167(Each v)108 494.4 R .167
 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x)
 -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E
-F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E
-.468(these cases, tilde e)108 660 R .468(xpansion is also performed.)
--.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467
-(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 672
-Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)-.666 G
-(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H).855 E F4
-(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E(alue.)-.25 E
-F1 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0 1.605(The `)108 700.8 R
-F1($)A F0 4.105('c)C 1.605(haracter introduces parameter e)-4.105 F
-1.606(xpansion, command substitution, or arithmetic e)-.15 F 4.106
-(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 712.8 R
-.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406
-(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032
-(tect the v)108 724.8 R .032(ariable to be e)-.25 F .032
-(xpanded from characters immediately follo)-.15 F .033
-(wing it which could be interpreted as part)-.25 F(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(20)192.055 E 0 Cg EP
-%%Page: 21 21
+F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E
+.467(these cases, tilde e)108 506.4 R .467(xpansion is also performed.)
+-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468
+(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108
+518.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)
+-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H)
+.855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E
+(alue.)-.25 E .024(Bash also performs tilde e)108 535.2 R .024
+(xpansion on w)-.15 F .023(ords satisfying the conditions of v)-.1 F
+.023(ariable assignments \(as described)-.25 F(abo)108 547.2 Q .769 -.15
+(ve u)-.15 H(nder).15 E F3 -.666(PA)2.969 G(RAMETERS).666 E F4(\))A F0
+.469(when the)2.719 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469
+(guments to simple commands.)-.18 F .47(Bash does not do this,)5.469 F
+-.15(ex)108 559.2 S(cept for the).15 E F2(declar)2.5 E(ation)-.15 E F0
+(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F2
+(posix mode)2.5 E F0(.)A F1 -.1(Pa)87 576 S(rameter Expansion).1 E F0
+1.606(The `)108 588 R F1($)A F0 4.106('c)C 1.606
+(haracter introduces parameter e)-4.106 F 1.605
+(xpansion, command substitution, or arithmetic e)-.15 F 4.105
+(xpansion. The)-.15 F .406(parameter name or symbol to be e)108 600 R
+.407(xpanded may be enclosed in braces, which are optional b)-.15 F .407
+(ut serv)-.2 F 2.907(et)-.15 G 2.907(op)-2.907 G(ro-)-2.907 E .033
+(tect the v)108 612 R .033(ariable to be e)-.25 F .033
+(xpanded from characters immediately follo)-.15 F .032
+(wing it which could be interpreted as part)-.25 F(of the name.)108 624
+Q 1.189
+(When braces are used, the matching ending brace is the \214rst `)108
+640.8 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a)
+-3.69 F 2.15(quoted string, and not within an embedded arithmetic e)108
+652.8 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15
+(ex)108 664.8 S(pansion.).15 E(${)108 681.6 Q F2(par)A(ameter)-.15 E F0
+(})A 1.204(The v)144 693.6 R 1.204(alue of)-.25 F F2(par)3.704 E(ameter)
+-.15 E F0 1.204(is substituted.)3.704 F 1.204
+(The braces are required when)6.204 F F2(par)4.955 E(ameter)-.15 E F0
+1.205(is a positional)4.435 F .264
+(parameter with more than one digit, or when)144 705.6 R F2(par)4.014 E
+(ameter)-.15 E F0 .264(is follo)3.494 F .264
+(wed by a character which is not to)-.25 F 2.676
+(be interpreted as part of its name.)144 717.6 R(The)7.677 E F2(par)
+5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo)
+5.177 F -.15(ve)-.15 G F1 -.74(PA)144 729.6 S(RAMETERS).74 E F0 2.5(\)o)
+C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0
+(\).)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(21)188.455 E 0 Cg
+EP
+%%Page: 22 22
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of the name.)108
-84 Q 1.19
-(When braces are used, the matching ending brace is the \214rst `)108
-100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.689('n)C 1.189
-(ot escaped by a backslash or within a)-3.689 F 2.15
-(quoted string, and not within an embedded arithmetic e)108 112.8 R 2.15
-(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 124.8 S
-(pansion.).15 E(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15
-E F0(})A 1.205(The v)144 153.6 R 1.205(alue of)-.25 F F2(par)3.705 E
-(ameter)-.15 E F0 1.204(is substituted.)3.705 F 1.204
-(The braces are required when)6.204 F F2(par)4.954 E(ameter)-.15 E F0
-1.204(is a positional)4.434 F .264
-(parameter with more than one digit, or when)144 165.6 R F2(par)4.014 E
-(ameter)-.15 E F0 .264(is follo)3.494 F .264
-(wed by a character which is not to)-.25 F 2.677
-(be interpreted as part of its name.)144 177.6 R(The)7.677 E F2(par)
-5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo)
-5.177 F -.15(ve)-.15 G F1 -.74(PA)144 189.6 S(RAMETERS).74 E F0 2.5(\)o)
-C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0
-(\).)A .346(If the \214rst character of)108 206.4 R F2(par)2.846 E
-(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F
-F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a)
-2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G
-(ntroduces)-2.847 E 2.635(al)108 218.4 S -2.15 -.25(ev e)-2.635 H 2.635
-(lo).25 G 2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F1(Bash)
-5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134
-(ariable formed from the rest of)-.25 F F2(par)2.634 E(ameter)-.15 E F0
-.134(as the)2.634 F 1.003(name of the v)108 230.4 R 1.003
-(ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003
-(xpanded and that v)-.15 F 1.003
-(alue is used in the rest of the substitution,)-.25 F .595
-(rather than the v)108 242.4 R .595(alue of)-.25 F F2(par)3.095 E
-(ameter)-.15 E F0 3.095(itself. This)3.095 F .595(is kno)3.095 F .595
-(wn as)-.25 F F2(indir)3.095 E .595(ect e)-.37 F(xpansion)-.2 E F0 5.594
-(.I)C(f)-5.594 E F2(par)3.094 E(ameter)-.15 E F0 .594(is a nameref,)
-3.094 F .477(this e)108 254.4 R .477(xpands to the name of the v)-.15 F
-.477(ariable referenced by)-.25 F F2(par)2.978 E(ameter)-.15 E F0 .478
-(instead of performing the complete indi-)2.978 F 2.164(rect e)108 266.4
-R 4.663(xpansion. The)-.15 F -.15(ex)4.663 G 2.163
-(ceptions to this are the e).15 F 2.163(xpansions of ${)-.15 F F1(!)A F2
-(pr)A(e\214x)-.37 E F1(*)A F0 4.663(}a)C 2.163(nd ${)-4.663 F F1(!)A F2
-(name)A F0([)A F2(@)A F0 2.163(]} described)B(belo)108 278.4 Q 3.8 -.65
-(w. T)-.25 H(he e).65 E(xclamation point must immediately follo)-.15 E
-2.5(wt)-.25 G(he left brace in order to introduce indirection.)-2.5 E
-.334(In each of the cases belo)108 295.2 R -.65(w,)-.25 G F2(wor)3.484 E
-(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334
-(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15
-F(and arithmetic e)108 307.2 Q(xpansion.)-.15 E 1.09
-(When not performing substring e)108 324 R 1.089
-(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G
-(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089
-(tests for a)3.589 F(parameter that is unset or null.)108 336 Q(Omittin\
-g the colon results in a test only for a parameter that is unset.)5 E
-(${)108 352.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(})
-A F1 .722(Use Default V)144 364.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722
-E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F
-.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.)
-3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 376.8 Q(alue of)-.25 E F2
-(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 388.8 Q F2
-(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005
-(Assign Default V)144 400.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .347
+(If the \214rst character of)108 84 R/F1 10/Times-Italic@0 SF(par)2.846
+E(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F
+/F2 10/Times-Bold@0 SF(!)A F0 .346(\), and)B F1(par)2.846 E(ameter)-.15
+E F0 .346(is not a)2.846 F F1(namer)2.846 E(ef)-.37 E F0 2.846(,i)C
+2.846(ti)-2.846 G(ntroduces)-2.846 E 2.906(al)108 96 S -2.15 -.25(ev e)
+-2.906 H 2.906(lo).25 G 2.906(fi)-2.906 G(ndirection.)-2.906 E F2(Bash)
+5.406 E F0 .406(uses the v)2.906 F .406(alue formed by e)-.25 F .406
+(xpanding the rest of)-.15 F F1(par)2.906 E(ameter)-.15 E F0 .406
+(as the ne)2.906 F(w)-.25 E F1(par)2.907 E(ame-)-.15 E(ter)108 108 Q F0
+2.579(;t)C .079(his is then e)-2.579 F .079(xpanded and that v)-.15 F
+.079(alue is used in the rest of the e)-.25 F .078
+(xpansion, rather than the e)-.15 F .078(xpansion of the)-.15 F
+(original)108 120 Q F1(par)2.542 E(ameter)-.15 E F0 5.042(.T)C .042
+(his is kno)-5.042 F .042(wn as)-.25 F F1(indir)2.543 E .043(ect e)-.37
+F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .043
+(alue is subject to tilde e)-.25 F .043(xpansion, parameter)-.15 F -.15
+(ex)108 132 S .249(pansion, command substitution, and arithmetic e).15 F
+2.749(xpansion. If)-.15 F F1(par)2.749 E(ameter)-.15 E F0 .248
+(is a nameref, this e)2.749 F .248(xpands to the)-.15 F 1.51
+(name of the parameter referenced by)108 144 R F1(par)4.01 E(ameter)-.15
+E F0 1.51(instead of performing the complete indirect e)4.01 F
+(xpansion.)-.15 E .388(The e)108 156 R .387(xceptions to this are the e)
+-.15 F .387(xpansions of ${)-.15 F F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A
+F0 2.887(}a)C .387(nd ${)-2.887 F F2(!)A F1(name)A F0([)A F1(@)A F0 .387
+(]} described belo)B 4.187 -.65(w. T)-.25 H .387(he e).65 F(xclama-)-.15
+E(tion point must immediately follo)108 168 Q 2.5(wt)-.25 G
+(he left brace in order to introduce indirection.)-2.5 E .334
+(In each of the cases belo)108 184.8 R -.65(w,)-.25 G F1(wor)3.484 E(d)
+-.37 E F0 .334(is subject to tilde e)2.834 F .334(xpansion, parameter e)
+-.15 F .334(xpansion, command substitution,)-.15 F(and arithmetic e)108
+196.8 Q(xpansion.)-.15 E 1.09(When not performing substring e)108 213.6
+R 1.089(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25
+G(e.g.,)-3.589 E F2(:-)3.589 E F0(\),)A F2(bash)3.589 E F0 1.089
+(tests for a)3.589 F(parameter that is unset or null.)108 225.6 Q(Omitt\
+ing the colon results in a test only for a parameter that is unset.)5 E
+(${)108 242.4 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(})
+A F2 .722(Use Default V)144 254.4 R(alues)-.92 E F0 5.722(.I)C(f)-5.722
+E F1(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F
+.723(xpansion of)-.15 F F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.)
+3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 266.4 Q(alue of)-.25 E F1
+(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 278.4 Q F1
+(par)A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.005
+(Assign Default V)144 290.4 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F1
 (par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F
-2.004(xpansion of)-.15 F F2(wor)4.844 E(d)-.37 E F0 2.004
-(is assigned to)5.274 F F2(par)144 412.8 Q(ameter)-.15 E F0 5.278(.T).73
-G .278(he v)-5.278 F .278(alue of)-.25 F F2(par)4.028 E(ameter)-.15 E F0
+2.004(xpansion of)-.15 F F1(wor)4.844 E(d)-.37 E F0 2.004
+(is assigned to)5.274 F F1(par)144 302.4 Q(ameter)-.15 E F0 5.278(.T).73
+G .278(he v)-5.278 F .278(alue of)-.25 F F1(par)4.028 E(ameter)-.15 E F0
 .278(is then substituted.)3.508 F .279
 (Positional parameters and special param-)5.278 F
-(eters may not be assigned to in this w)144 424.8 Q(ay)-.1 E(.)-.65 E
-(${)108 436.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A
-F1 .535(Display Err)144 448.8 R .535(or if Null or Unset)-.18 F F0 5.535
-(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535
-(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E
-(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 460.8 R
-.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\
+(eters may not be assigned to in this w)144 314.4 Q(ay)-.1 E(.)-.65 E
+(${)108 326.4 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A
+F2 .535(Display Err)144 338.4 R .535(or if Null or Unset)-.18 F F0 5.535
+(.I)C(f)-5.535 E F1(par)4.285 E(ameter)-.15 E F0 .535
+(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F1(wor)3.035 E
+(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 350.4 R
+.661(fect if)-.25 F F1(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\
  written to the standard error and the shell, if it is not)3.931 F
-(interacti)144 472.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)
--2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0
-(is substituted.)2.5 E(${)108 484.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2
-(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 496.8 R .745(nate V)-.15 F
-(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0
+(interacti)144 362.4 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)
+-2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E(ameter)-.15 E F0
+(is substituted.)2.5 E(${)108 374.4 Q F1(par)A(ameter)-.15 E F2(:+)A F1
+(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 386.4 R .745(nate V)-.15 F
+(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0
 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F
-(xpan-)-.15 E(sion of)144 508.8 Q F2(wor)2.84 E(d)-.37 E F0
-(is substituted.)3.27 E(${)108 520.8 Q F2(par)A(ameter)-.15 E F1(:)A F2
-(of)A(fset)-.18 E F0(})A(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2
-(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion)
-144 544.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502
-E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E
+(xpan-)-.15 E(sion of)144 398.4 Q F1(wor)2.84 E(d)-.37 E F0
+(is substituted.)3.27 E(${)108 410.4 Q F1(par)A(ameter)-.15 E F2(:)A F1
+(of)A(fset)-.18 E F0(})A(${)108 422.4 Q F1(par)A(ameter)-.15 E F2(:)A F1
+(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion)
+144 434.4 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502
+E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E
 (ameter)-.15 E F0 .002(starting at the)2.502 F 1.082
-(character speci\214ed by)144 556.8 R F2(of)3.582 E(fset)-.18 E F0 6.082
-(.I)C(f)-6.082 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E
+(character speci\214ed by)144 446.4 R F1(of)3.582 E(fset)-.18 E F0 6.082
+(.I)C(f)-6.082 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E
 F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15
-G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.581 E F1(*)
-3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 568.8 Q
+G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.581 E F2(*)
+3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 458.4 Q
 1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722
-(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F2(length)
+(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length)
 3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043
-(substring of the v)144 580.8 R .043(alue of)-.25 F F2(par)2.543 E
+(substring of the v)144 470.4 R .043(alue of)-.25 F F1(par)2.543 E
 (ameter)-.15 E F0 .042(starting at the character speci\214ed by)2.543 F
-F2(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the)
--.15 F .846(end of the v)144 592.8 R(alue.)-.25 E F2(length)5.846 E F0
-(and)3.346 E F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F
+F1(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the)
+-.15 F .846(end of the v)144 482.4 R(alue.)-.25 E F1(length)5.846 E F0
+(and)3.346 E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F
 .847(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)
-3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 604.8 Q
-(w\).)-.25 E(If)144 628.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029
+3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 494.4 Q
+(w\).)-.25 E(If)144 518.4 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029
 G .529(luates to a number less than zero, the v).25 F .529
 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F
-.045(end of the v)144 640.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter)
--.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G
+.045(end of the v)144 530.4 R .045(alue of)-.25 F F1(par)2.546 E(ameter)
+-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G
 .046(luates to a number less than zero, it is interpreted as an).25 F
-(of)144 652.8 Q .203(fset in characters from the end of the v)-.25 F
-.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202
-(rather than a number of characters, and)2.702 F .557(the e)144 664.8 R
-.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E
+(of)144 542.4 Q .203(fset in characters from the end of the v)-.25 F
+.202(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .202
+(rather than a number of characters, and)2.702 F .557(the e)144 554.4 R
+.557(xpansion is the characters between)-.15 F F1(of)3.057 E(fset)-.18 E
 F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga)
 -.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25
-F(separated from the colon by at least one space to a)144 676.8 Q -.2
-(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G
-(pansion.).15 E(If)144 700.8 Q F2(par)2.959 E(ameter)-.15 E F0(is)2.959
-E F1(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F2(length)2.959
-E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F2(of)
+F(separated from the colon by at least one space to a)144 566.4 Q -.2
+(vo)-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G
+(pansion.).15 E(If)144 590.4 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959
+E F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959
+E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of)
 2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15
-(ve)-.25 G F2(of)3.108 E(fset)-.18 E F0 .095(is tak)144 712.8 R .095
-(en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096
-(ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4
-G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e)
-.25 F -.25(va)-.25 G .096(luates to).25 F 1.322
-(the last positional parameter)144 724.8 R 6.322(.I)-.55 G 3.822(ti)
--6.322 G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if)
--3.972 F F2(length)3.822 E F0 -.25(eva)3.822 G 1.322
-(luates to a number less than).25 F(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(21)192.055 E 0 Cg EP
-%%Page: 22 22
+(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .6(is tak)144 602.4 R .6
+(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6
+(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G
+3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25
+(va)-.25 G(luates).25 E .64(to the last positional parameter)144 614.4 R
+5.64(.I)-.55 G 3.14(ti)-5.64 G 3.14(sa)-3.14 G 3.139(ne)-3.14 G .639
+(xpansion error if)-3.289 F F1(length)3.139 E F0 -.25(eva)3.139 G .639
+(luates to a number less than).25 F(zero.)144 626.4 Q(If)144 650.4 Q F1
+(par)3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G
+3.014(da).15 G .514(rray name subscripted by @ or *, the result is the)
+-3.014 F F1(length)3.014 E F0 .514(members of)3.014 F 1.082
+(the array be)144 662.4 R 1.082(ginning with ${)-.15 F F1(par)A(ameter)
+-.15 E F0([)A F1(of)A(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)
+-.15 G(ti).05 E -.15(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081
+(is tak)3.581 F 1.081(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo)
+.15 G 1.081(ne greater)-3.581 F 1.079(than the maximum inde)144 674.4 R
+3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079(he speci\214ed array)-3.579 F
+6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G
+1.08(xpansion error if)-3.73 F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08
+(luates to a).25 F(number less than zero.)144 686.4 Q(Substring e)144
+710.4 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H
+(rray produces unde\214ned results.).15 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(22)188.455 E 0 Cg EP
+%%Page: 23 23
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(zero.)144 84 Q(If)
-144 108 Q/F1 10/Times-Italic@0 SF(par)3.013 E(ameter)-.15 E F0 .514
-(is an inde)3.013 F -.15(xe)-.15 G 3.014(da).15 G .514
-(rray name subscripted by @ or *, the result is the)-3.014 F F1(length)
-3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 120 R 1.082
-(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18
-E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1
-(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081(en relati)-.1 F
-1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)-3.581 F 1.079
-(than the maximum inde)144 132 R 3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079
-(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579
-(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 F F1(length)
-3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F(number less than zero.)
-144 144 Q(Substring e)144 168 Q(xpansion applied to an associati)-.15 E
-.3 -.15(ve a)-.25 H(rray produces unde\214ned results.).15 E 1.931
-(Substring inde)144 192 R 1.931(xing is zero-based unless the positiona\
-l parameters are used, in which case the)-.15 F(inde)144 204 Q .306
-(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F F1(of)2.807 E(fset)
--.18 E F0 .307(is 0, and the positional parameters are used,)2.807 F/F2
-10/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E
-(to the list.)144 216 Q(${)108 232.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2
-(*)A F0(})A(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2
-.085(Names matching pr)144 256.8 R(e\214x)-.18 E F0 5.085(.E)C .084
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.931
+(Substring inde)144 84 R 1.931(xing is zero-based unless the positional\
+ parameters are used, in which case the)-.15 F(inde)144 96 Q .306
+(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F/F1 10
+/Times-Italic@0 SF(of)2.807 E(fset)-.18 E F0 .307
+(is 0, and the positional parameters are used,)2.807 F/F2 10
+/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E
+(to the list.)144 108 Q(${)108 124.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2
+(*)A F0(})A(${)108 136.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2
+.085(Names matching pr)144 148.8 R(e\214x)-.18 E F0 5.085(.E)C .084
 (xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F
 .084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-)
--2.584 E .257(rated by the \214rst character of the)144 268.8 R/F3 9
+-2.584 E .257(rated by the \214rst character of the)144 160.8 R/F3 9
 /Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757
 (ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F
-.258(xpansion appears)-.15 F(within double quotes, each v)144 280.8 Q
+.258(xpansion appears)-.15 F(within double quotes, each v)144 172.8 Q
 (ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108
-297.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 309.6 Q F2(!)A F1
-(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 321.6 R(eys)
+189.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 201.6 Q F2(!)A F1
+(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 213.6 R(eys)
 -.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v)
 4.536 F 2.036(ariable, e)-.25 F 2.036
 (xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E
-.595(assigned in)144 333.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1
+.595(assigned in)144 225.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1
 (name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595
 (xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596
-(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 345.6 Q F0
+(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 237.6 Q F0
 (is used and the e)2.5 E(xpansion appears within double quotes, each k)
 -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108
-362.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 374.4 S .471
+254.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 266.4 S .471
 (rameter length).1 F F0 5.471(.T)C .471
 (he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par)
 2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par)
-4.22 E(ame-)-.15 E(ter)144 386.4 Q F0(is)4.438 E F2(*)3.708 E F0(or)
+4.22 E(ame-)-.15 E(ter)144 278.4 Q F0(is)4.438 E F2(*)3.708 E F0(or)
 3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208
 (alue substituted is the number of positional parameters.)-.25 F(If)
 6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349
-(array name subscripted by)144 398.4 R F2(*)2.849 E F0(or)2.849 E F2(@)
+(array name subscripted by)144 290.4 R F2(*)2.849 E F0(or)2.849 E F2(@)
 2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349
 (alue substituted is the number of elements in the array)-.25 F 5.348
-(.I)-.65 G(f)-5.348 E F1(par)145.25 410.4 Q(ameter)-.15 E F0 .455
+(.I)-.65 G(f)-5.348 E F1(par)145.25 302.4 Q(ameter)-.15 E F0 .455
 (is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456
 (rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756
 -.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456
-(hat number is interpreted)-2.956 F .973(as relati)144 422.4 R 1.273
+(hat number is interpreted)-2.956 F .973(as relati)144 314.4 R 1.273
 -.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde)
 -3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0
 3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272
 -.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array)
-144 434.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5
-G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 451.2 Q F1
-(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 463.2 Q F1
-(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 475.2
+144 326.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5
+G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 343.2 Q F1
+(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 355.2 Q F1
+(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 367.2
 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F
 (n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196
 (is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F
-.152(name e)144 487.2 R 2.652(xpansion. If)-.15 F .152
-(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152
-(alue of)-.25 F F1(par)2.652 E(ameter)-.15 E F0 2.652(,t).73 G .151
-(hen the result of)-2.652 F 1.4(the e)144 499.2 R 1.4(xpansion is the e)
--.15 F 1.4(xpanded v)-.15 F 1.4(alue of)-.25 F F1(par)5.15 E(ameter)-.15
-E F0 1.4(with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2
-(#)A F0 -.74('')C .281(case\) or the longest matching pattern \(the `)
-144 511.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.)
-.74 F(If)5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E
-F0(or)2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo)
-144 523.2 Q -.25(va)-.15 G 3.274(lo).25 G .774
+.544(name e)144 379.2 R .544(xpansion, and matched ag)-.15 F .544
+(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par)
+4.294 E(ameter)-.15 E F0 .543(using the rules described)3.774 F(under)
+144 391.2 Q F2 -.1(Pa)3.221 G(tter).1 E 3.221(nM)-.15 G(atching)-3.221 E
+F0(belo)3.221 E 4.521 -.65(w. I)-.25 H 3.221(ft).65 G .721
+(he pattern matches the be)-3.221 F .722(ginning of the v)-.15 F .722
+(alue of)-.25 F F1(par)3.222 E(ameter)-.15 E F0(,).73 E 1.152
+(then the result of the e)144 403.2 R 1.151(xpansion is the e)-.15 F
+1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E
+F0 1.151(with the shortest matching)4.381 F .183(pattern \(the `)144
+415.2 R(`)-.74 E F2(#)A F0 1.663 -.74('' c)D .184
+(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0
+1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.184 E F1(par)3.934 E
+(ameter)-.15 E F0(is)3.414 E F2(@)2.684 E F0(or)144 427.2 Q F2(*)3.019 E
+F0 3.019(,t)C .518(he pattern remo)-3.019 F -.25(va)-.15 G 3.018(lo).25
+G .518
 (peration is applied to each positional parameter in turn, and the e)
--3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 535.2 R
-(If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F
-.401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*)
-2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901
-(lo).25 G(peration)-2.901 E
-(is applied to each member of the array in turn, and the e)144 547.2 Q
-(xpansion is the resultant list.)-.15 E(${)108 564 Q F1(par)A(ameter)
--.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 576 Q F1(par)A(ameter)-.15
-E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 588 Q .346 -.1(ve m)-.1 H
-.146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he)-5.146 E F1
-(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147
-(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 600
-S 3.088(pansion. If).15 F .588
-(the pattern matches a trailing portion of the e)3.088 F .588(xpanded v)
--.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73
-G .588(hen the)-3.088 F .226(result of the e)144 612 R .226
-(xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1
-(par)3.976 E(ameter)-.15 E F0 .226
-(with the shortest matching pattern \(the)3.456 F -.74(``)144 624 S F2
-(%).74 E F0 1.522 -.74('' c)D .042
-(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0
-1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E
-(ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0
-2.541(,t)C(he)-2.541 E .44(pattern remo)144 636 R -.25(va)-.15 G 2.94
-(lo).25 G .441
-(peration is applied to each positional parameter in turn, and the e)
--2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 648 R(If)
-5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241
-(ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E
-F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G
-(per)-2.74 E(-)-.2 E
-(ation is applied to each member of the array in turn, and the e)144 660
-Q(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter)
--.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 688.8
-S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C(he)-6.106
-E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107
-(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E
-(sion.)144 700.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034
-(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern)
-3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033
-(alue is replaced with)-.25 F F1(string)144 712.8 Q F0 5.16(.I)C(f)-5.16
-E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0
-2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161
-(are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161
-(ormally only the)-5.161 F .807(\214rst match is replaced.)144 724.8 R
-(If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#)
-3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306
-F .806(ginning of the e)-.15 F(xpanded)-.15 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(22)192.055 E 0 Cg EP
-%%Page: 23 23
+-3.018 F(xpan-)-.15 E 1.121(sion is the resultant list.)144 439.2 R(If)
+6.121 E F1(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F
+1.121(ariable subscripted with)-.25 F F2(@)3.621 E F0(or)3.621 E F2(*)
+3.622 E F0 3.622(,t)C 1.122(he pattern)-3.622 F(remo)144 451.2 Q -.25
+(va)-.15 G 2.53(lo).25 G .03
+(peration is applied to each member of the array in turn, and the e)
+-2.53 F .03(xpansion is the resultant)-.15 F(list.)144 463.2 Q(${)108
+480 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 492
+Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144
+504 Q .346 -.1(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0
+5.146(.T)C(he)-5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147
+(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 516
+S .459(pansion, and matched ag).15 F .459(ainst the e)-.05 F .459
+(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.208 E(ameter)-.15 E F0
+.458(using the rules described under)3.688 F F2 -.1(Pa)144 528 S(tter).1
+E 4.592(nM)-.15 G(atching)-4.592 E F0(belo)4.592 E 5.892 -.65(w. I)-.25
+H 4.592(ft).65 G 2.092(he pattern matches a trailing portion of the e)
+-4.592 F 2.093(xpanded v)-.15 F 2.093(alue of)-.25 F F1(par)144 540 Q
+(ameter)-.15 E F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65
+(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F1
+(par)4.4 E(ameter)-.15 E F0 .65(with the shortest)3.88 F 1.084
+(matching pattern \(the `)144 552 R(`)-.74 E F2(%)A F0 2.564 -.74('' c)D
+1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2
+(%%)A F0 2.565 -.74('' c)D 1.085(ase\) deleted.).74 F(If)6.085 E F1(par)
+145.25 564 Q(ameter)-.15 E F0(is)3.39 E F2(@)2.66 E F0(or)2.66 E F2(*)
+2.66 E F0 2.66(,t)C .16(he pattern remo)-2.66 F -.25(va)-.15 G 2.659(lo)
+.25 G .159(peration is applied to each positional parameter in turn,)
+-2.659 F .509(and the e)144 576 R .509(xpansion is the resultant list.)
+-.15 F(If)5.509 E F1(par)4.259 E(ameter)-.15 E F0 .51(is an array v)
+3.739 F .51(ariable subscripted with)-.25 F F2(@)3.01 E F0(or)3.01 E F2
+(*)3.01 E F0(,)A .423(the pattern remo)144 588 R -.25(va)-.15 G 2.923
+(lo).25 G .422
+(peration is applied to each member of the array in turn, and the e)
+-2.923 F .422(xpansion is)-.15 F(the resultant list.)144 600 Q(${)108
+616.8 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0
+(})A F2 -.1(Pa)144 628.8 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606
+E F0 6.106(.T)C(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F
+1.107(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)
+-.15 E(sion,)144 640.8 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2
+(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E
+F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1
+(string)144 652.8 Q F0 5.396(.T)C .396
+(he match is performed using the rules described under)-5.396 F F2 -.1
+(Pa)2.897 G(tter).1 E 2.897(nM)-.15 G(atching)-2.897 E F0(belo)2.897 E
+4.197 -.65(w. I)-.25 H(f).65 E F1(pat-)2.897 E(tern)144 664.8 Q F0(be)
+2.57 E .07(gins with)-.15 F F2(/)2.57 E F0 2.57(,a)C .07(ll matches of)
+-2.57 F F1(pattern)2.57 E F0 .069(are replaced with)2.569 F F1(string)
+2.569 E F0 5.069(.N)C .069(ormally only the \214rst match is)-5.069 F
+2.579(replaced. If)144 676.8 R F1(pattern)2.579 E F0(be)2.579 E .079
+(gins with)-.15 F F2(#)2.579 E F0 2.579(,i)C 2.579(tm)-2.579 G .079
+(ust match at the be)-2.579 F .08(ginning of the e)-.15 F .08(xpanded v)
+-.15 F .08(alue of)-.25 F F1(par)2.58 E(am-)-.15 E(eter)144 688.8 Q F0
+5.762(.I)C(f)-5.762 E F1(pattern)3.262 E F0(be)3.261 E .761(gins with)
+-.15 F F2(%)3.261 E F0 3.261(,i)C 3.261(tm)-3.261 G .761
+(ust match at the end of the e)-3.261 F .761(xpanded v)-.15 F .761
+(alue of)-.25 F F1(par)3.261 E(ameter)-.15 E F0 5.761(.I)C(f)-5.761 E F1
+(string)144 700.8 Q F0 .957(is null, matches of)3.457 F F1(pattern)3.457
+E F0 .958(are deleted and the)3.457 F F2(/)3.458 E F0(follo)3.458 E
+(wing)-.25 E F1(pattern)3.458 E F0 .958(may be omitted.)3.458 F .958
+(If the)5.958 F F2(nocasematch)144 712.8 Q F0 .492
+(shell option is enabled, the match is performed without re)2.992 F -.05
+(ga)-.15 G .492(rd to the case of alpha-).05 F .883(betic characters.)
+144 724.8 R(If)5.883 E F1(par)4.633 E(ameter)-.15 E F0(is)4.113 E F2(@)
+3.383 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .884
+(he substitution operation is applied to each positional)-3.383 F
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(23)188.455 E 0 Cg EP
+%%Page: 24 24
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S
-.62(lue of).25 F/F1 10/Times-Italic@0 SF(par)3.12 E(ameter)-.15 E F0
-5.62(.I)C(f)-5.62 E F1(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F
-/F2 10/Times-Bold@0 SF(%)3.12 E F0 3.12(,i)C 3.121(tm)-3.12 G .621
-(ust match at the end of the e)-3.121 F .621(xpanded v)-.15 F .621
-(alue of)-.25 F F1(par)144 96 Q(ameter)-.15 E F0 6.254(.I)C(f)-6.254 E
-F1(string)3.754 E F0 1.253(is null, matches of)3.753 F F1(pattern)3.753
-E F0 1.253(are deleted and the)3.753 F F2(/)3.753 E F0(follo)3.753 E
-(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be)3.753 F 2.731
-(omitted. If)144 108 R(the)2.731 E F2(nocasematch)2.731 E F0 .231
-(shell option is enabled, the match is performed without re)2.731 F -.05
-(ga)-.15 G .232(rd to the).05 F .188(case of alphabetic characters.)144
-120 R(If)5.188 E F1(par)3.938 E(ameter)-.15 E F0(is)3.418 E F2(@)2.688 E
-F0(or)2.688 E F2(*)2.687 E F0 2.687(,t)C .187
-(he substitution operation is applied to each)-2.687 F .445
-(positional parameter in turn, and the e)144 132 R .446
-(xpansion is the resultant list.)-.15 F(If)5.446 E F1(par)4.196 E
-(ameter)-.15 E F0 .446(is an array v)3.676 F(ari-)-.25 E .463
-(able subscripted with)144 144 R F2(@)2.963 E F0(or)2.963 E F2(*)2.963 E
-F0 2.963(,t)C .462
-(he substitution operation is applied to each member of the array in)
--2.963 F(turn, and the e)144 156 Q(xpansion is the resultant list.)-.15
-E(${)108 172.8 Q F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${)
-108 184.8 Q F1(par)A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108
-196.8 Q F1(par)A(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 208.8 Q
-F1(par)A(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .437
-(Case modi\214cation)144 220.8 R F0 5.437(.T)C .437(his e)-5.437 F .438
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.002
+(parameter in turn, and the e)144 84 R 1.002
+(xpansion is the resultant list.)-.15 F(If)6.002 E/F1 10/Times-Italic@0
+SF(par)4.752 E(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.001
+(ariable sub-)-.25 F .158(scripted with)144 96 R/F2 10/Times-Bold@0 SF
+(@)2.658 E F0(or)2.659 E F2(*)2.659 E F0 2.659(,t)C .159(he substitutio\
+n operation is applied to each member of the array in turn, and)-2.659 F
+(the e)144 108 Q(xpansion is the resultant list.)-.15 E(${)108 124.8 Q
+F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${)108 136.8 Q F1(par)
+A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 148.8 Q F1(par)A
+(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 160.8 Q F1(par)A
+(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .438(Case modi\214cation)
+144 172.8 R F0 5.438(.T)C .438(his e)-5.438 F .437
 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par)
-2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 232.8 Q
-F0 1.407(is e)3.907 F 1.407
-(xpanded to produce a pattern just as in pathname e)-.15 F 3.906
-(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 244.8
-S 1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E
+2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 184.8 Q
+F0 1.406(is e)3.906 F 1.407
+(xpanded to produce a pattern just as in pathname e)-.15 F 3.907
+(xpansion. Each)-.15 F 1.407(character in the)3.907 F -.15(ex)144 196.8
+S 1.232(panded v).15 F 1.232(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E
 F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732
 (,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144
-256.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424
+208.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424
 (pattern should not attempt to match more than one character)2.924 F
 5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F
--.15(ve)144 268.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F
+-.15(ve)144 220.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F
 F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61
 (operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F
-1.548(letters to lo)144 280.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E
+1.547(letters to lo)144 232.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E
 F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F
 -.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded)
--.15 E -.25(va)144 292.8 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133
-E F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15
-(ve)-.4 G .634(rt only the \214rst character in the e).15 F .634
-(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 304.8 Q F0 .78
+-.15 E -.25(va)144 244.8 S .634(lue; the).25 F F2(^)3.134 E F0(and)3.134
+E F2(,)3.134 E F0 -.15(ex)3.134 G .634(pansions match and con).15 F -.15
+(ve)-.4 G .633(rt only the \214rst character in the e).15 F .633
+(xpanded v)-.15 F 3.133(alue. If)-.25 F F1(pattern)144 256.8 Q F0 .78
 (is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C
 .78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78
 (.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28
 E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\
-n is applied to each positional parameter in turn, and the e)144 316.8 R
-(xpansion)-.15 E .469(is the resultant list.)144 328.8 R(If)5.469 E F1
+n is applied to each positional parameter in turn, and the e)144 268.8 R
+(xpansion)-.15 E .468(is the resultant list.)144 280.8 R(If)5.468 E F1
 (par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468
-(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.968 E
-F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\
-ed to each member of the array in turn, and the e)144 340.8 Q
-(xpansion is the resultant list.)-.15 E(${)108 357.6 Q F1(par)A(ameter)
--.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 369.6 S .86
+(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.969 E
+F0 2.969(,t)C .469(he case modi\214ca-)-2.969 F(tion operation is appli\
+ed to each member of the array in turn, and the e)144 292.8 Q
+(xpansion is the resultant list.)-.15 E(${)108 309.6 Q F1(par)A(ameter)
+-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 321.6 S .86
 (rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86
 (xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F
-F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 381.6 R F1
-(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F
-.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153
-E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144
-393.6 Q F2(Q)144 417.6 Q F0 1.064(The e)180 417.6 R 1.064
+F1(par)3.36 E(ameter)-.15 E F0 .153(or information about)144 333.6 R F1
+(par)2.653 E(ameter)-.15 E F0 .153(itself, depending on the v)2.653 F
+.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.154(.E)C(ach)-5.154
+E F1(oper)2.654 E(ator)-.15 E F0 .154(is a sin-)2.654 F(gle letter:)144
+345.6 Q F2(Q)144 369.6 Q F0 1.065(The e)180 369.6 R 1.065
 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par)
-3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F
-(reused as input.)180 429.6 Q F2(E)144 441.6 Q F0 .441(The e)180 441.6 R
+3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F
+(reused as input.)180 381.6 Q F2(E)144 393.6 Q F0 .44(The e)180 393.6 R
 .441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F1
-(par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F
--.15(ex)180 453.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0
-(quoting mechansim.)2.5 E F2(P)144 465.6 Q F0 1.072(The e)180 465.6 R
+(par)2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941
+F -.15(ex)180 405.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E
+F0(quoting mechanism.)2.5 E F2(P)144 417.6 Q F0 1.073(The e)180 417.6 R
 1.073(xpansion is a string that is the result of e)-.15 F 1.073
 (xpanding the v)-.15 F 1.073(alue of)-.25 F F1(par)3.573 E(ameter)-.15 E
-F0 1.073(as if it)3.573 F(were a prompt string \(see)180 477.6 Q F2(PR)
-2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 489.6 Q F0 1.138
-(The e)180 489.6 R 1.138
+F0 1.073(as if it)3.573 F(were a prompt string \(see)180 429.6 Q F2(PR)
+2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 441.6 Q F0 1.137
+(The e)180 441.6 R 1.138
 (xpansion is a string in the form of an assignment statement or)-.15 F
-F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 501.6 Q
+F2(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 453.6 Q
 -.25(va)-.25 G(luated, will recreate).25 E F1(par)2.5 E(ameter)-.15 E F0
-(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 513.6 Q F0
-(The e)180 513.6 Q(xpansion is a string consisting of \215ag v)-.15 E
+(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 465.6 Q F0
+(The e)180 465.6 Q(xpansion is a string consisting of \215ag v)-.15 E
 (alues representing)-.25 E F1(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D
-(ttrib).55 E(utes.)-.2 E(If)144 530.4 Q F1(par)5.33 E(ameter)-.15 E F0
-(is)4.81 E F2(@)4.08 E F0(or)4.08 E F2(*)4.08 E F0 4.08(,t)C 1.581
+(ttrib).55 E(utes.)-.2 E(If)144 482.4 Q F1(par)5.331 E(ameter)-.15 E F0
+(is)4.811 E F2(@)4.081 E F0(or)4.081 E F2(*)4.081 E F0 4.081(,t)C 1.58
 (he operation is applied to each positional parameter in turn, and the)
--4.08 F -.15(ex)144 542.4 S .347(pansion is the resultant list.).15 F
-(If)5.347 E F1(par)4.097 E(ameter)-.15 E F0 .346(is an array v)3.577 F
-.346(ariable subscripted with)-.25 F F2(@)2.846 E F0(or)2.846 E F2(*)
-2.846 E F0 2.846(,t)C .346(he case)-2.846 F 1.204(modi\214cation operat\
-ion is applied to each member of the array in turn, and the e)144 554.4
-R 1.204(xpansion is the)-.15 F(resultant list.)144 566.4 Q 1.85
-(The result of the e)144 590.4 R 1.849(xpansion is subject to w)-.15 F
-1.849(ord splitting and pathname e)-.1 F 1.849(xpansion as described)
--.15 F(belo)144 602.4 Q -.65(w.)-.25 G F2(Command Substitution)87 619.2
-Q F1 1.697(Command substitution)108 631.2 R F0(allo)4.197 E 1.697
+-4.081 F -.15(ex)144 494.4 S .129(pansion is the resultant list.).15 F
+(If)5.129 E F1(par)3.879 E(ameter)-.15 E F0 .129(is an array v)3.359 F
+.13(ariable subscripted with)-.25 F F2(@)2.63 E F0(or)2.63 E F2(*)2.63 E
+F0 2.63(,t)C .13(he oper)-2.63 F(-)-.2 E
+(ation is applied to each member of the array in turn, and the e)144
+506.4 Q(xpansion is the resultant list.)-.15 E 1.85(The result of the e)
+144 530.4 R 1.849(xpansion is subject to w)-.15 F 1.849
+(ord splitting and pathname e)-.1 F 1.849(xpansion as described)-.15 F
+(belo)144 542.4 Q -.65(w.)-.25 G F2(Command Substitution)87 559.2 Q F1
+1.697(Command substitution)108 571.2 R F0(allo)4.197 E 1.697
 (ws the output of a command to replace the command name.)-.25 F 1.698
-(There are tw)6.698 F(o)-.1 E(forms:)108 643.2 Q F2($\()144 660 Q F1
-(command)A F2(\))1.666 E F0(or)108 672 Q F2<92>144 684 Q F1(command)A F2
-<92>A(Bash)108 700.8 Q F0 .089(performs the e)2.589 F .089
+(There are tw)6.698 F(o)-.1 E(forms:)108 583.2 Q F2($\()144 600 Q F1
+(command)A F2(\))1.666 E F0(or)108 612 Q F2<92>144 624 Q F1(command)A F2
+<92>A(Bash)108 640.8 Q F0 .089(performs the e)2.589 F .089
 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.589 E F0
 .088(in a subshell en)2.589 F .088(vironment and replacing the command)
 -.4 F .41(substitution with the standard output of the command, with an)
-108 712.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
+108 652.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
 -.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b)
-108 724.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
+108 664.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
 -.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.)
 -.1 F .192(The command substitution)5.192 F F2($\(cat)2.691 E F1(\214le)
-2.691 E F2(\))A F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(23)
-192.055 E 0 Cg EP
-%%Page: 24 24
+2.691 E F2(\))A F0(can be replaced by the equi)108 676.8 Q -.25(va)-.25
+G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2
+(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\
+ used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 E
+.315(when follo)108 705.6 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2
+<92>2.815 E F0 2.815(,o)C(r)-2.815 E F2(\\)2.815 E F0 5.315(.T)C .314(h\
+e \214rst backquote not preceded by a backslash terminates the command \
+sub-)-5.315 F 3.886(stitution. When)108 717.6 R 1.386(using the $\()
+3.886 F F1(command).833 E F0 3.886(\)f)1.666 G 1.387
+(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G
+3.887(pt)-3.887 G 1.387(he com-)-3.887 F
+(mand; none are treated specially)108 729.6 Q(.)-.65 E(GNU Bash 5.0)72
+768 Q(2018 December 7)139.295 E(24)188.455 E 0 Cg EP
+%%Page: 25 25
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(can be replaced by the equi)108 84 Q -.25(va)-.25 G(lent b).25 E(ut f)
--.2 E(aster)-.1 E/F1 10/Times-Bold@0 SF($\(<)2.5 E/F2 10/Times-Italic@0
-SF(\214le)2.5 E F1(\))A F0(.)A 1.724(When the old-style backquote form \
-of substitution is used, backslash retains its literal meaning e)108
-100.8 R(xcept)-.15 E .315(when follo)108 112.8 R .315(wed by)-.25 F F1
-($)2.815 E F0(,)A F1<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E
-F0 5.315(.T)C .314(he \214rst backquote not preceded by a backslash ter\
-minates the command sub-)-5.315 F 3.886(stitution. When)108 124.8 R
-1.386(using the $\()3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387
-(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G
-3.887(pt)-3.887 G 1.387(he com-)-3.887 F
-(mand; none are treated specially)108 136.8 Q(.)-.65 E .894
-(Command substitutions may be nested.)108 153.6 R 2.494 -.8(To n)5.894 H
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .894
+(Command substitutions may be nested.)108 84 R 2.494 -.8(To n)5.894 H
 .894(est when using the backquoted form, escape the inner back-).8 F
-(quotes with backslashes.)108 165.6 Q .422
-(If the substitution appears within double quotes, w)108 182.4 R .422
+(quotes with backslashes.)108 96 Q .422
+(If the substitution appears within double quotes, w)108 112.8 R .422
 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15
-F(on the results.)108 194.4 Q F1(Arithmetic Expansion)87 211.2 Q F0
-1.035(Arithmetic e)108 223.2 R 1.035(xpansion allo)-.15 F 1.035
-(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F
-1.034(xpression and the substitution of the result.)-.15 F
-(The format for arithmetic e)108 235.2 Q(xpansion is:)-.15 E F1($\(\()
-144 252 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 268.8 Q
-F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165
-(is treated as if it were within double quotes, b)2.905 F .166
+F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF
+(Arithmetic Expansion)87 141.6 Q F0 1.035(Arithmetic e)108 153.6 R 1.035
+(xpansion allo)-.15 F 1.035(ws the e)-.25 F -.25(va)-.25 G 1.034
+(luation of an arithmetic e).25 F 1.034
+(xpression and the substitution of the result.)-.15 F
+(The format for arithmetic e)108 165.6 Q(xpansion is:)-.15 E F1($\(\()
+144 182.4 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1
+(\)\))A F0(The)108 199.2 Q F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0
+.165(is treated as if it were within double quotes, b)2.905 F .166
 (ut a double quote inside the parentheses is not)-.2 F .231
-(treated specially)108 280.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231
+(treated specially)108 211.2 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231
 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v)
 -.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059
-(tution, and quote remo)108 292.8 R -.25(va)-.15 G 3.559(l. The).25 F
+(tution, and quote remo)108 223.2 R -.25(va)-.15 G 3.559(l. The).25 F
 1.059(result is treated as the arithmetic e)3.559 F 1.06
 (xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F
--.15(ex)108 304.8 S(pansions may be nested.).15 E 1.379(The e)108 321.6
--.25(va)-.25 G 1.378
+-.15(ex)108 235.2 S(pansions may be nested.).15 E 1.379(The e)108 252 R
+-.25(va)-.25 G 1.378
 (luation is performed according to the rules listed belo).25 F 3.878(wu)
 -.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F
 (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0
-(If)5.878 E F2 -.2(ex)108 333.6 S(pr).2 E(ession)-.37 E F0(is in)2.74 E
+(If)5.878 E F2 -.2(ex)108 264 S(pr).2 E(ession)-.37 E F0(is in)2.74 E
 -.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f)
-2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 350.4 Q
-(ocess Substitution)-.18 E F2(Pr)108 362.4 Q .405(ocess substitution)
+2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 280.8 Q
+(ocess Substitution)-.18 E F2(Pr)108 292.8 Q .405(ocess substitution)
 -.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405
 (nput or output to be referred to using a \214lename.)-2.905 F .405
-(It tak)5.405 F .405(es the form)-.1 F(of)108 374.4 Q F1(<\()3.251 E F2
+(It tak)5.405 F .405(es the form)-.1 F(of)108 304.8 Q F1(<\()3.251 E F2
 (list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E
 F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751
 (is run asynchronously)3.251 F 3.251(,a)-.65 G .751
 (nd its input or output appears as a \214lename.)-3.251 F .147
-(This \214lename is passed as an ar)108 386.4 R .148
+(This \214lename is passed as an ar)108 316.8 R .148
 (gument to the current command as the result of the e)-.18 F 2.648
 (xpansion. If)-.15 F(the)2.648 E F1(>\()2.648 E F2(list)A F1(\)).833 E
-F0 .56(form is used, writing to the \214le will pro)108 398.4 R .56
+F0 .56(form is used, writing to the \214le will pro)108 328.8 R .56
 (vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G
 (he)-3.059 E F1(<\()3.059 E F2(list)A F1(\)).833 E F0 .559
-(form is used, the \214le passed as an)3.059 F(ar)108 410.4 Q .308
+(form is used, the \214le passed as an)3.059 F(ar)108 340.8 Q .308
 (gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0
 5.308(.P)C .309(rocess substitution is supported on systems that sup-)
--5.308 F(port named pipes \()108 422.4 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt)
+-5.308 F(port named pipes \()108 352.8 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt)
 -2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0
-(method of naming open \214les.)2.5 E .897(When a)108 439.2 R -.25(va)
+(method of naming open \214les.)2.5 E .897(When a)108 369.6 R -.25(va)
 -.2 G .896(ilable, process substitution is performed simultaneously wit\
 h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E
-(command substitution, and arithmetic e)108 451.2 Q(xpansion.)-.15 E F1
--.75(Wo)87 468 S(rd Splitting).75 E F0 1.142
-(The shell scans the results of parameter e)108 480 R 1.143
+(command substitution, and arithmetic e)108 381.6 Q(xpansion.)-.15 E F1
+-.75(Wo)87 398.4 S(rd Splitting).75 E F0 1.142
+(The shell scans the results of parameter e)108 410.4 R 1.143
 (xpansion, command substitution, and arithmetic e)-.15 F 1.143
-(xpansion that)-.15 F(did not occur within double quotes for)108 492 Q
+(xpansion that)-.15 F(did not occur within double quotes for)108 422.4 Q
 F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063
-(The shell treats each character of)108 508.8 R F3(IFS)2.563 E F0 .063
+(The shell treats each character of)108 439.2 R F3(IFS)2.563 E F0 .063
 (as a delimiter)2.313 F 2.563(,a)-.4 G .063
 (nd splits the results of the other e)-2.563 F .063(xpansions into w)
 -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.)
-108 520.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F
+108 451.2 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F
 .207(alue is e)-.25 F(xactly)-.15 E F1(<space><tab><newline>)2.708 E F0
-(,)A .837(the def)108 532.8 R .837(ault, then sequences of)-.1 F F1
+(,)A .837(the def)108 463.2 R .837(ault, then sequences of)-.1 F F1
 (<space>)3.337 E F0(,)A F1(<tab>)3.337 E F0 3.337(,a)C(nd)-3.337 E F1
 (<newline>)3.337 E F0 .836(at the be)3.336 F .836
-(ginning and end of the results of)-.15 F .345(the pre)108 544.8 R .345
+(ginning and end of the results of)-.15 F .345(the pre)108 475.2 R .345
 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15
 G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345
 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es)
--.15 E 1.237(to delimit w)108 556.8 R 3.737(ords. If)-.1 F F3(IFS)3.737
+-.15 E 1.237(to delimit w)108 487.2 R 3.737(ords. If)-.1 F F3(IFS)3.737
 E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236
 (ault, then sequences of the whitespace characters)-.1 F F1(space)108
-568.8 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506
+499.2 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506
 E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)
 -.15 F .007(ord, as long as the whitespace charac-)-.1 F .921
-(ter is in the v)108 580.8 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an)
+(ter is in the v)108 511.2 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an)
 3.17 E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E
 3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .92(that is not)
-3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 592.8
+3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 523.2
 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428
 (whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G
 .428(equence of)-2.928 F F3(IFS)2.928 E F0 .429(whitespace charac-)2.679
-F(ters is also treated as a delimiter)108 604.8 Q 5(.I)-.55 G 2.5(ft)-5
+F(ters is also treated as a delimiter)108 535.2 Q 5(.I)-.55 G 2.5(ft)-5
 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E
-(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 621.6 R 1.927
+(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 552 R 1.927
 (guments \()-.18 F F1 .833("").833 G F0(or)3.594 E F1 .833<0808>5.26 G
 F0 4.427(\)a)C 1.927
 (re retained and passed to commands as empty strings.)-4.427 F(Unquoted)
-6.927 E .484(implicit null ar)108 633.6 R .484
+6.927 E .484(implicit null ar)108 564 R .484
 (guments, resulting from the e)-.18 F .484
 (xpansion of parameters that ha)-.15 F .785 -.15(ve n)-.2 H 2.985(ov).15
 G .485(alues, are remo)-3.235 F -.15(ve)-.15 G 2.985(d. If).15 F(a)2.985
-E 1.572(parameter with no v)108 645.6 R 1.572(alue is e)-.25 F 1.571
+E 1.572(parameter with no v)108 576 R 1.572(alue is e)-.25 F 1.571
 (xpanded within double quotes, a null ar)-.15 F 1.571
 (gument results and is retained and)-.18 F .723
-(passed to a command as an empty string.)108 657.6 R .724
+(passed to a command as an empty string.)108 588 R .724
 (When a quoted null ar)5.724 F .724(gument appears as part of a w)-.18 F
-.724(ord whose)-.1 F -.15(ex)108 669.6 S .176
+.724(ord whose)-.1 F -.15(ex)108 600 S .176
 (pansion is non-null, the null ar).15 F .176(gument is remo)-.18 F -.15
 (ve)-.15 G 2.676(d. That).15 F .176(is, the w)2.676 F(ord)-.1 E/F5 10
 /Courier@0 SF -5.167<ad64082008>2.676 F F0(becomes)2.675 E F5<ad64>2.675
-E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108
-681.6 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108
-698.4 Q(xpansion occurs, no splitting is performed.)-.15 E(GNU Bash 4.4)
-72 768 Q(2016 August 26)142.895 E(24)192.055 E 0 Cg EP
-%%Page: 25 25
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.1(Pa)87 84 S(thname Expansion).1 E F0 .37(After w)108 96 R .37
+E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 612
+Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 628.8
+Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 645.6
+S(thname Expansion).1 E F0 .37(After w)108 657.6 R .37
 (ord splitting, unless the)-.1 F F1<ad66>2.87 E F0 .37
 (option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F
 .371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0
 2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678
-(If one of these characters appears, then the w)108 108 R .677
-(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F2 10
-/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677
-(nd replaced with an alphabeti-)-3.177 F .562
-(cally sorted list of \214lenames matching the pattern \(see)108 120 R
-/F3 9/Times-Bold@0 SF -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G
-(atching)-2.812 E F0(belo)2.812 E 3.062(w\). If)-.25 F .562
-(no matching \214lenames)3.062 F .009(are found, and the shell option)
-108 132 R F1(nullglob)2.509 E F0 .008(is not enabled, the w)2.509 F .008
-(ord is left unchanged.)-.1 F .008(If the)5.008 F F1(nullglob)2.508 E F0
-.008(option is)2.508 F .442(set, and no matches are found, the w)108 144
-R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1
-(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943
-F 1.38(found, an error message is printed and the command is not e)108
-156 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F
-F1(nocaseglob)3.88 E F0(is)3.88 E .103
-(enabled, the match is performed without re)108 168 R -.05(ga)-.15 G
+(If one of these characters appears, then the w)108 669.6 R .677
+(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E
+F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562
+(cally sorted list of \214lenames matching the pattern \(see)108 681.6 R
+F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo)
+2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F .009
+(are found, and the shell option)108 693.6 R F1(nullglob)2.509 E F0 .008
+(is not enabled, the w)2.509 F .008(ord is left unchanged.)-.1 F .008
+(If the)5.008 F F1(nullglob)2.508 E F0 .008(option is)2.508 F .442
+(set, and no matches are found, the w)108 705.6 R .442(ord is remo)-.1 F
+-.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1(failglob)2.943 E F0 .443
+(shell option is set, and no matches are)2.943 F 1.38
+(found, an error message is printed and the command is not e)108 717.6 R
+-.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F F1
+(nocaseglob)3.88 E F0(is)3.88 E .103
+(enabled, the match is performed without re)108 729.6 R -.05(ga)-.15 G
 .104(rd to the case of alphabetic characters.).05 F .104
-(When a pattern is used)5.104 F .378(for pathname e)108 180 R .378
-(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08
-E F0 .378(at the start of a name or immediately follo)5.378 F .377
-(wing a slash must be)-.25 F .578(matched e)108 192 R(xplicitly)-.15 E
-3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E
-F0 .579(is set.)3.079 F .579
-(When matching a pathname, the slash character)5.579 F 1.789(must al)108
-204 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I)
--.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288
-G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially)
-6.788 F 6.788(.S)-.65 G 1.788(ee the)-6.788 F .165(description of)108
-216 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E F3
-.165(SHELL B)2.665 F(UIL)-.09 E .165(TIN COMMANDS)-.828 F F0 .166
-(for a description of the)2.415 F F1(nocaseglob)2.666 E F0(,)A F1(null-)
-2.666 E(glob)108 228 Q F0(,)A F1(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F1
-(dotglob)2.5 E F0(shell options.)2.5 E(The)108 244.8 Q F3(GLOBIGNORE)
-2.786 E F0 .286(shell v)2.536 F .285
-(ariable may be used to restrict the set of \214lenames matching a)-.25
-F F2(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E F3(GLO-)2.785 E
-(BIGNORE)108 256.8 Q F0 2.316(is set, each matching \214lename that als\
-o matches one of the patterns in)4.565 F F3(GLOBIGNORE)4.816 E F0(is)
-4.566 E(remo)108 268.8 Q -.15(ve)-.15 G 3.915(df).15 G 1.415
-(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1(nocaseglob)
-3.915 E F0 1.415(option is set, the matching ag)3.915 F 1.414
-(ainst the patterns in)-.05 F F3(GLOBIGNORE)108 280.8 Q F0 .146
+(When a pattern is used)5.104 F(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(25)188.455 E 0 Cg EP
+%%Page: 26 26
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .378
+(for pathname e)108 84 R .378(xpansion, the character)-.15 F/F1 10
+/Times-Bold@0 SF -.63(``)2.878 G -.55(.').63 G(')-.08 E F0 .378
+(at the start of a name or immediately follo)5.378 F .377
+(wing a slash must be)-.25 F 1.353(matched e)108 96 R(xplicitly)-.15 E
+3.853(,u)-.65 G 1.353(nless the shell option)-3.853 F F1(dotglob)3.854 E
+F0 1.354(is set.)3.854 F 1.354(The \214lenames)6.354 F F1 -.63(``)3.854
+G -.55(.').63 G(')-.08 E F0(and)6.354 E F1 -.63(``)3.854 G(..).63 E -.63
+('')-.55 G F0 1.354(must al)6.984 F -.1(wa)-.1 G 1.354(ys be).1 F .486
+(matched e)108 108 R(xplicitly)-.15 E 2.986(,e)-.65 G -.15(ve)-3.236 G
+2.986(ni).15 G(f)-2.986 E F1(dotglob)2.986 E F0 .485(is set.)2.986 F
+.485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08
+E F0 .485(character is not treated specially)5.485 F 5.485(.W)-.65 G
+(hen)-5.485 E .114(matching a pathname, the slash character must al)108
+120 R -.1(wa)-.1 G .114(ys be matched e).1 F .115
+(xplicitly by a slash in the pattern, b)-.15 F .115(ut in)-.2 F .581
+(other matching conte)108 132 R .581
+(xts it can be matched by a special pattern character as described belo)
+-.15 F 3.081(wu)-.25 G(nder)-3.081 E/F2 9/Times-Bold@0 SF -.09(Pa)3.081
+G(tter).09 E(n)-.135 E(Matching)108 144 Q/F3 9/Times-Roman@0 SF(.)A F0
+.072(See the description of)4.572 F F1(shopt)2.572 E F0(belo)2.572 E
+2.572(wu)-.25 G(nder)-2.572 E F2 .073(SHELL B)2.572 F(UIL)-.09 E .073
+(TIN COMMANDS)-.828 F F0 .073(for a description of the)2.323 F F1
+(nocaseglob)108 156 Q F0(,)A F1(nullglob)2.5 E F0(,)A F1(failglob)2.5 E
+F0 2.5(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108
+172.8 Q F2(GLOBIGNORE)2.631 E F0 .131(shell v)2.381 F .131
+(ariable may be used to restrict the set of \214le names matching a)-.25
+F/F4 10/Times-Italic@0 SF(pattern)2.63 E F0 5.13(.I).24 G(f)-5.13 E F2
+(GLO-)2.63 E(BIGNORE)108 184.8 Q F0 2.015(is set, each matching \214le \
+name that also matches one of the patterns in)4.264 F F2(GLOBIGNORE)
+4.515 E F0(is)4.265 E(remo)108 196.8 Q -.15(ve)-.15 G 3.915(df).15 G
+1.415(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1
+(nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F
+1.414(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 208.8 Q F0 .146
 (is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F
 .146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E
 F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147
-(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F3(GLOBIGNORE)108
-292.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15
-(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F3(GLOBIGNORE)3.327 E F0
+(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F2(GLOBIGNORE)108
+220.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15
+(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0
 .827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)
--.25 F .682(enabling the)108 304.8 R F1(dotglob)3.182 E F0 .682
+-.25 F .682(enabling the)108 232.8 R F1(dotglob)3.182 E F0 .682
 (shell option, so all other \214lenames be)3.182 F .682(ginning with a)
 -.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.)
-5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 316.8 Q
+5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 244.8 Q
 1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F
 F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e)
 -.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184
-(one of the patterns in)6.184 F F3(GLOBIGNORE)3.684 E/F4 9/Times-Roman@0
-SF(.)A F0(The)108 328.8 Q F1(dotglob)3.131 E F0 .631
-(option is disabled when)3.131 F F3(GLOBIGNORE)3.132 E F0 .632
-(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632
-F(the)108 340.8 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108
-357.6 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 374.4 Q 3.138
-(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\
-ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H
-(atches).65 E 3.62(itself. The)108 386.4 R 1.12
-(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12
-(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576
-(escaping backslash is discarded when matching.)108 398.4 R .576
+(one of the patterns in)6.184 F F2(GLOBIGNORE)3.684 E F3(.)A F0(The)108
+256.8 Q F1(dotglob)3.131 E F0 .631(option is disabled when)3.131 F F2
+(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .632
+(The pattern matching honors the setting of)5.632 F(the)108 268.8 Q F1
+(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 285.6 S(tter).1 E
+2.5(nM)-.15 G(atching)-2.5 E F0(An)108 302.4 Q 3.138(yc)-.15 G .638(har\
+acter that appears in a pattern, other than the special pattern charact\
+ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62
+(itself. The)108 314.4 R 1.12(NUL character may not occur in a pattern.)
+3.62 F 3.62(Ab)6.12 G 1.12(ackslash escapes the follo)-3.62 F 1.12
+(wing character; the)-.25 F .576
+(escaping backslash is discarded when matching.)108 326.4 R .576
 (The special pattern characters must be quoted if the)5.576 F 3.076(ya)
--.15 G(re)-3.076 E(to be matched literally)108 410.4 Q(.)-.65 E
-(The special pattern characters ha)108 427.2 Q .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1(*)144 444 Q F0 .376(Matches an)
-180 444 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876
+-.15 G(re)-3.076 E(to be matched literally)108 338.4 Q(.)-.65 E
+(The special pattern characters ha)108 355.2 Q .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1(*)144 372 Q F0 .376(Matches an)
+180 372 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876
 F .376(When the)5.376 F F1(globstar)2.876 E F0 .377
-(shell option is enabled,)2.876 F(and)180 456 Q F1(*)3.275 E F0 .775
+(shell option is enabled,)2.876 F(and)180 384 Q F1(*)3.275 E F0 .775
 (is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw)
 -.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775
 (sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\
- or more directories and subdirectories.)180 468 R 1.058(If follo)6.058
-F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 480 Q 2.5(oa)-.1 G
+ or more directories and subdirectories.)180 396 R 1.058(If follo)6.058
+F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 408 Q 2.5(oa)-.1 G
 (djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C
-(ill match only directories and subdirectories.)-2.5 E F1(?)144 492 Q F0
-(Matches an)180 492 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1
-([...])144 504 Q F0 .579(Matches an)180 504 R 3.079(yo)-.15 G .579
+(ill match only directories and subdirectories.)-2.5 E F1(?)144 420 Q F0
+(Matches an)180 420 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1
+([...])144 432 Q F0 .579(Matches an)180 432 R 3.079(yo)-.15 G .579
 (ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578
 (air of characters separated by a h)-3.079 F(yphen)-.05 E .684
-(denotes a)180 516 R F2 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr)
+(denotes a)180 444 R F4 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr)
 -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684
 (haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G
-.685(haracters, inclu-)-3.185 F(si)180 528 Q -.15(ve)-.25 G 3.713(,u).15
+.685(haracters, inclu-)-3.185 F(si)180 456 Q -.15(ve)-.25 G 3.713(,u).15
 G 1.213(sing the current locale')-3.713 F 3.712(sc)-.55 G 1.212
 (ollating sequence and character set, is matched.)-3.712 F 1.212(If the)
-6.212 F 1.123(\214rst character follo)180 540 R 1.123(wing the)-.25 F F1
+6.212 F 1.123(\214rst character follo)180 468 R 1.123(wing the)-.25 F F1
 ([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1
 (^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G 1.124
 (haracter not enclosed is matched.)-3.624 F .895
-(The sorting order of characters in range e)180 552 R .894
+(The sorting order of characters in range e)180 480 R .894
 (xpressions is determined by the current locale)-.15 F .375(and the v)
-180 564 R .375(alues of the)-.25 F F3(LC_COLLA)2.875 E(TE)-.855 E F0(or)
-2.625 E F3(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375
+180 492 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or)
+2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375
 (ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8
-F .068(ditional interpretation of range e)180 576 R .068
+F .068(ditional interpretation of range e)180 504 R .068
 (xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F
 -.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067
-(et v)-2.567 F(alue)-.25 E .156(of the)180 588 R F1(LC_ALL)2.656 E F0
+(et v)-2.567 F(alue)-.25 E .156(of the)180 516 R F1(LC_ALL)2.656 E F0
 .156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C
 2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0
 .157(shell option.)2.657 F(A)5.157 E F1<ad>2.657 E F0(may)2.657 E .193(\
 be matched by including it as the \214rst or last character in the set.)
-180 600 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F
-(including it as the \214rst character in the set.)180 612 Q -.4(Wi)180
-630 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F2 -.15(ch)
+180 528 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F
+(including it as the \214rst character in the set.)180 540 Q -.4(Wi)180
+558 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4 -.15(ch)
 3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571
-(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F2(class)A F1
-(:])A F0 3.071(,w)C(here)-3.071 E F2(class)3.071 E F0
-(is one of the follo)180 642 Q
+(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1
+(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0
+(is one of the follo)180 570 Q
 (wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173
-(alnum alpha ascii blank cntrl digit graph lo)180 654 R 8.173
-(wer print punct space)-.1 F 5(upper w)180 666 R 5(ord xdigit)-.1 F F0
-4.289(Ac)180 678 S 1.789(haracter class matches an)-4.289 F 4.289(yc)
+(alnum alpha ascii blank cntrl digit graph lo)180 582 R 8.173
+(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0
+4.289(Ac)180 606 S 1.789(haracter class matches an)-4.289 F 4.289(yc)
 -.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1
 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E
-(class matches letters, digits, and the character _.)180 690 Q -.4(Wi)
-180 708 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537
-(,a)C(n)-4.537 E F2 2.037(equivalence class)4.537 F F0 2.036
-(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F2(c)A F1(=])
+(class matches letters, digits, and the character _.)180 618 Q -.4(Wi)
+180 636 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537
+(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036
+(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=])
 A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\
- collation weight \(as de\214ned by the current locale\) as)180 720 R
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(25)192.055 E 0 Cg EP
-%%Page: 26 26
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the character)180
-84 Q/F1 10/Times-Italic@0 SF(c)2.5 E F0(.)A -.4(Wi)180 102 S(thin).4 E
-/F2 10/Times-Bold@0 SF([)2.5 E F0(and)2.5 E F2(])2.5 E F0 2.5(,t)C
-(he syntax)-2.5 E F2([.)2.5 E F1(symbol)A F2(.])A F0
-(matches the collating symbol)2.5 E F1(symbol)2.5 E F0(.)A .705(If the)
-108 118.8 R F2(extglob)3.205 E F0 .705
-(shell option is enabled using the)3.205 F F2(shopt)3.205 E F0 -.2(bu)
+ collation weight \(as de\214ned by the current locale\) as)180 648 R
+(the character)180 660 Q F4(c)2.5 E F0(.)A -.4(Wi)180 678 S(thin).4 E F1
+([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5
+E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4(symbol)
+2.5 E F0(.)A .705(If the)108 694.8 R F1(extglob)3.205 E F0 .705
+(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu)
 3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704
 (xtended pattern matching operators)-.15 F .255(are recognized.)108
-130.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F1
+706.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4
 (pattern-list)2.755 E F0 .255
-(is a list of one or more patterns separated by a)2.755 F F2(|)2.756 E
+(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E
 F0(.)A(Composite patterns may be formed using one or more of the follo)
-108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1
-(pattern-list).833 E F2(\)).833 E F0
-(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5
-(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2
-(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q
--.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1
-(pattern-list).833 E F2(\)).833 E F0
-(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G
-2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2
-(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np)
-.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\))
-.833 E F0(Matches an)180 274.8 Q(ything e)-.15 E(xcept one of the gi)
--.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(Quote Remo)87 291.6
-Q -.1(va)-.1 G(l).1 E F0 1.113(After the preceding e)108 303.6 R 1.113
-(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\)
-3.613 E F0(,)A F2<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F2(")4.445 E F0
-1.112(that did not result)4.445 F(from one of the abo)108 315.6 Q .3
+108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(26)188.455 E 0 Cg EP
+%%Page: 27 27
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(?\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E
+F0(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5
+(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\))
+.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve)
+-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833
+E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q
+-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2
+(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q
+-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2
+(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15
+E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E
+.969(Complicated e)108 208.8 R .969(xtended pattern matching ag)-.15 F
+.969(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968
+(specially when the patterns contain).65 F 1.23
+(alternations and the strings contain multiple matches.)108 220.8 R 1.23
+(Using separate matches ag)6.23 F 1.23(ainst shorter strings, or)-.05 F
+(using arrays of strings instead of a single long string, may be f)108
+232.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 249.6 Q -.1(va)-.1 G(l).1
+E F0 1.113(After the preceding e)108 261.6 R 1.113
+(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\)
+3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0
+1.112(that did not result)4.445 F(from one of the abo)108 273.6 Q .3
 -.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3
-10.95/Times-Bold@0 SF(REDIRECTION)72 332.4 Q F0 .545
-(Before a command is e)108 344.4 R -.15(xe)-.15 G .545
-(cuted, its input and output may be).15 F F1 -.37(re)3.045 G(dir).37 E
+10.95/Times-Bold@0 SF(REDIRECTION)72 290.4 Q F0 .545
+(Before a command is e)108 302.4 R -.15(xe)-.15 G .545
+(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E
 (ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405
-(by the shell.)108 356.4 R .405(Redirection allo)5.405 F .405(ws comman\
+(by the shell.)108 314.4 R .405(Redirection allo)5.405 F .405(ws comman\
 ds' \214le handles to be duplicated, opened, closed, made to refer to)
--.25 F(dif)108 368.4 Q 1.019(ferent \214les, and can change the \214les\
+-.25 F(dif)108 326.4 Q 1.019(ferent \214les, and can change the \214les\
  the command reads from and writes to.)-.25 F 1.02
 (Redirection may also be)6.02 F .215
-(used to modify \214le handles in the current shell e)108 380.4 R -.15
+(used to modify \214le handles in the current shell e)108 338.4 R -.15
 (xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E
 .215(wing redirection operators)-.25 F .875(may precede or appear an)108
-392.4 R .875(ywhere within a)-.15 F F1 .875(simple command)3.715 F F0
-.875(or may follo)4.145 F 3.376(wa)-.25 G F1(command)A F0 5.876(.R).77 G
-.876(edirections are)-5.876 F(processed in the order the)108 404.4 Q 2.5
+350.4 R .875(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0
+.875(or may follo)4.145 F 3.376(wa)-.25 G F2(command)A F0 5.876(.R).77 G
+.876(edirections are)-5.876 F(processed in the order the)108 362.4 Q 2.5
 (ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\
 h redirection that may be preceded by a \214le descriptor number may in\
-stead be preceded by a w)108 421.2 R .771(ord of)-.1 F .292(the form {)
-108 433.2 R F1(varname)A F0 2.793(}. In)B .293
+stead be preceded by a w)108 379.2 R .771(ord of)-.1 F .292(the form {)
+108 391.2 R F2(varname)A F0 2.793(}. In)B .293
 (this case, for each redirection operator e)2.793 F .293
-(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 445.2 S
+(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 403.2 S
 .679(le descriptor greater than or equal to 10 and assign it to)-3.18 F
-F1(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679
-(&- or <&- is preceded by {)-3.179 F F1(var)A(-)-.2 E(name)108 457.2 Q
-F0(}, the v)A(alue of)-.25 E F1(varname)2.5 E F0
-(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108
-474 R .284(wing descriptions, if the \214le descriptor number is omitte\
-d, and the \214rst character of the redirect-)-.25 F .513
-(ion operator is)108 486 R F2(<)3.012 E F0 3.012(,t)C .512
+F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679
+(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 415.2 Q
+F0 .599(}, the v)B .599(alue of)-.25 F F2(varname)3.099 E F0 .599
+(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F2
+(varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F
+1.238(persists be)108 427.2 R 1.238(yond the scope of the command, allo)
+-.15 F 1.238(wing the shell programmer to manage the \214le descriptor)
+-.25 F(himself.)108 439.2 Q .283(In the follo)108 456 R .284(wing descr\
+iptions, if the \214le descriptor number is omitted, and the \214rst ch\
+aracter of the redirect-)-.25 F .513(ion operator is)108 468 R F1(<)
+3.012 E F0 3.012(,t)C .512
 (he redirection refers to the standard input \(\214le descriptor 0\).)
 -3.012 F .512(If the \214rst character of the)5.512 F
-(redirection operator is)108 498 Q F2(>)2.5 E F0 2.5(,t)C
+(redirection operator is)108 480 Q F1(>)2.5 E F0 2.5(,t)C
 (he redirection refers to the standard output \(\214le descriptor 1\).)
--2.5 E .824(The w)108 514.8 R .824(ord follo)-.1 F .824
+-2.5 E .824(The w)108 496.8 R .824(ord follo)-.1 F .824
 (wing the redirection operator in the follo)-.25 F .825
 (wing descriptions, unless otherwise noted, is sub-)-.25 F .463
-(jected to brace e)108 526.8 R .463(xpansion, tilde e)-.15 F .462
+(jected to brace e)108 508.8 R .463(xpansion, tilde e)-.15 F .462
 (xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462
-(xpansion, command substitution, arith-)-.15 F .866(metic e)108 538.8 R
+(xpansion, command substitution, arith-)-.15 F .866(metic e)108 520.8 R
 .866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F
 .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867
-F .867(xpands to more than one)-.15 F -.1(wo)108 550.8 S(rd,).1 E F2
+F .867(xpands to more than one)-.15 F -.1(wo)108 532.8 S(rd,).1 E F1
 (bash)2.5 E F0(reports an error)2.5 E(.)-.55 E
-(Note that the order of redirections is signi\214cant.)108 567.6 Q -.15
-(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 584.4 Q F2(>)2.5
-E F0(dirlist 2)2.5 E F2(>&)A F0(1)A
-(directs both standard output and standard error to the \214le)108 601.2
-Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 618
-Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .527
-(directs only the standard output to \214le)108 634.8 R F1(dirlist)3.027
+(Note that the order of redirections is signi\214cant.)108 549.6 Q -.15
+(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 566.4 Q F1(>)2.5
+E F0(dirlist 2)2.5 E F1(>&)A F0(1)A
+(directs both standard output and standard error to the \214le)108 583.2
+Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 600
+Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527
+(directs only the standard output to \214le)108 616.8 R F2(dirlist)3.027
 E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527
 (as duplicated from the standard)-.1 F
-(output before the standard output w)108 646.8 Q(as redirected to)-.1 E
-F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 663.6 Q F0 .598(handles se)3.098
+(output before the standard output w)108 628.8 Q(as redirected to)-.1 E
+F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 645.6 Q F0 .598(handles se)3.098
 F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya)
 -.15 G .599(re used in redirections, as described in the follo)-3.099 F
-(wing)-.25 E 3.478(table. If)108 675.6 R .978
-(the operating system on which)3.478 F F2(bash)3.478 E F0 .978
+(wing)-.25 E 3.478(table. If)108 657.6 R .978
+(the operating system on which)3.478 F F1(bash)3.478 E F0 .978
 (is running pro)3.478 F .977
 (vides these special \214les, bash will use them;)-.15 F
-(otherwise it will emulate them internally with the beha)108 687.6 Q
-(vior described belo)-.2 E -.65(w.)-.25 G F2(/de)144 704.4 Q(v/fd/)-.15
-E F1(fd)A F0(If)180 716.4 Q F1(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E
-(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F1(fd)2.5 E F0
-(is duplicated.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(26)
-192.055 E 0 Cg EP
-%%Page: 27 27
+(otherwise it will emulate them internally with the beha)108 669.6 Q
+(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 686.4 Q(v/fd/)-.15
+E F2(fd)A F0(If)180 698.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E
+(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0
+(is duplicated.)2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E
+(27)188.455 E 0 Cg EP
+%%Page: 28 28
 %%BeginPageSetup
 BP
 %%EndPageSetup
@@ -3594,9 +3719,9 @@ E F1(>&)A F0(1)A .114(When using the second form,)108 710.4 R F2(wor)
 -.15 F F1<ad>2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G
 .115(oes, other redirection operators)-2.615 F(apply \(see)108 722.4 Q
 F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E
-(w\) for compatibility reasons.)-.25 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(27)192.055 E 0 Cg EP
-%%Page: 28 28
+(w\) for compatibility reasons.)-.25 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(28)188.455 E 0 Cg EP
+%%Page: 29 29
 %%BeginPageSetup
 BP
 %%EndPageSetup
@@ -3648,19 +3773,17 @@ C .601(hen all leading tab characters are stripped from input lines and\
 -.25 E(ashion.)-.1 E F1(Her)87 412.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0
 2.5(Av)108 424.8 S(ariant of here documents, the format is:)-2.75 E([)
 144 441.6 Q F2(n)A F0(])A F1(<<<)A F2(wor)A(d)-.37 E F0(The)108 458.4 Q
-F2(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393
-(xpansion, tilde e)-.15 F .393(xpansion, parameter and v)-.15 F .393
-(ariable e)-.25 F .393(xpansion, command substi-)-.15 F 2.147
-(tution, arithmetic e)108 470.4 R 2.147(xpansion, and quote remo)-.15 F
--.25(va)-.15 G 4.648(l. P).25 F 2.148(athname e)-.15 F 2.148
-(xpansion and w)-.15 F 2.148(ord splitting are not per)-.1 F(-)-.2 E
-2.813(formed. The)108 482.4 R .313
-(result is supplied as a single string, with a ne)2.813 F .312
-(wline appended, to the command on its standard)-.25 F
-(input \(or \214le descriptor)108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n)
-2.5 E F0(is speci\214ed\).)2.5 E F1(Duplicating File Descriptors)87
-511.2 Q F0(The redirection operator)108 523.2 Q([)144 540 Q F2(n)A F0(])
-A F1(<&)A F2(wor)A(d)-.37 E F0 .126
+F2(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792
+(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 470.4 S
+1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F
+1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187
+(ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375
+(supplied as a single string, with a ne)108 482.4 R .374(wline appended\
+, to the command on its standard input \(or \214le descrip-)-.25 F(tor)
+108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n)2.5 E F0(is speci\214ed\).)2.5 E
+F1(Duplicating File Descriptors)87 511.2 Q F0(The redirection operator)
+108 523.2 Q([)144 540 Q F2(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .126
 (is used to duplicate input \214le descriptors.)108 556.8 R(If)5.127 E
 F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127
 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108
@@ -3688,9 +3811,9 @@ F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254
 .965(not e)108 679.2 R .965(xpand to one or more digits or)-.15 F F1<ad>
 3.465 E F0 3.466(,t)C .966
 (he standard output and standard error are redirected as described)
--3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(28)192.055 E 0 Cg EP
-%%Page: 29 29
+-3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(29)188.455 E 0 Cg EP
+%%Page: 30 30
 %%BeginPageSetup
 BP
 %%EndPageSetup
@@ -3766,5576 +3889,5837 @@ E(Aliases are created and listed with the)108 432 Q F1(alias)2.5 E F0
 E .436
 (The rules concerning the de\214nition and use of aliases are some)108
 506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1
-(wa)-.1 G .435(ys reads at least).1 F .337
-(one complete line of input before e)108 518.4 R -.15(xe)-.15 G .338
-(cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338
-(he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338
-(xpanded when)-.15 F 3.404(ac)108 530.4 S .904
-(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404
-(cuted. Therefore,).15 F .904
-(an alias de\214nition appearing on the same line as)3.404 F 1.161
-(another command does not tak)108 542.4 R 3.662(ee)-.1 G -.25(ff)-3.662
-G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F
-1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277
-(alias de\214nition on that line are not af)108 554.4 R .277
-(fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha)
-2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108
-566.4 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F
-.699(xpanded when a function de\214nition is read, not when the functio\
-n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .613
-(because a function de\214nition is itself a command.)108 578.4 R .612
-(As a consequence, aliases de\214ned in a function are not)5.612 F -.2
-(av)108 590.4 S .058(ailable until after that function is e)-.05 F -.15
-(xe)-.15 G 2.558(cuted. T).15 F 2.558(ob)-.8 G 2.558(es)-2.558 G .058
-(afe, al)-2.558 F -.1(wa)-.1 G .059
-(ys put alias de\214nitions on a separate line, and).1 F(do not use)108
-602.4 Q F1(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 619.2
-S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
+(wa)-.1 G .435(ys reads at least).1 F .67
+(one complete line of input, and all lines that mak)108 518.4 R 3.17(eu)
+-.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe)
+-.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E
+1.059(commands on that line or the compound command.)108 530.4 R 1.059
+(Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F
+.074(when it is e)108 542.4 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15
+F .075(an alias de\214nition appearing on the same line as another comm\
+and does not)2.574 F(tak)108 554.4 Q 2.838(ee)-.1 G -.25(ff)-2.838 G
+.338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337
+(The commands follo)5.337 F .337
+(wing the alias de\214nition on that line are)-.25 F 1.472(not af)108
+566.4 R 1.473(fected by the ne)-.25 F 3.973(wa)-.25 G 3.973(lias. This)
+-3.973 F(beha)3.973 E 1.473(vior is also an issue when functions are e)
+-.2 F -.15(xe)-.15 G 3.973(cuted. Aliases).15 F(are)3.973 E -.15(ex)108
+578.4 S .61(panded when a function de\214nition is read, not when the f\
+unction is e).15 F -.15(xe)-.15 G .609
+(cuted, because a function de\214ni-).15 F .711
+(tion is itself a command.)108 590.4 R .711
+(As a consequence, aliases de\214ned in a function are not a)5.711 F
+-.25(va)-.2 G .712(ilable until after that).25 F 1.186(function is e)108
+602.4 R -.15(xe)-.15 G 3.686(cuted. T).15 F 3.686(ob)-.8 G 3.686(es)
+-3.686 G 1.185(afe, al)-3.686 F -.1(wa)-.1 G 1.185
+(ys put alias de\214nitions on a separate line, and do not use).1 F F1
+(alias)3.685 E F0(in)3.685 E(compound commands.)108 614.4 Q -.15(Fo)108
+631.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
 (ry purpose, aliases are superseded by shell functions.).15 E F3
-(FUNCTIONS)72 636 Q F0 3.468(As)108 648 S .968
-(hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15
+(FUNCTIONS)72 648 Q F0 3.467(As)108 660 S .967
+(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15
 H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0
-.967(stores a series of commands for)3.217 F 1.001(later e)108 660 R
--.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\
-ion is used as a simple command name, the list of com-)3.501 F .316
-(mands associated with that function name is e)108 672 R -.15(xe)-.15 G
-2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315
-(cuted in the conte).15 F .315(xt of the current)-.15 F .035
-(shell; no ne)108 684 R 2.535(wp)-.25 G .036
-(rocess is created to interpret them \(contrast this with the e)-2.535 F
--.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036
-F .64(function is e)108 696 R -.15(xe)-.15 G .64(cuted, the ar).15 F
+.968(stores a series of commands for)3.217 F 1.002(later e)108 672 R
+-.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\
+ion is used as a simple command name, the list of com-)3.502 F .315
+(mands associated with that function name is e)108 684 R -.15(xe)-.15 G
+2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316
+(cuted in the conte).15 F .316(xt of the current)-.15 F .036
+(shell; no ne)108 696 R 2.536(wp)-.25 G .036
+(rocess is created to interpret them \(contrast this with the e)-2.536 F
+-.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035
+F .639(function is e)108 708 R -.15(xe)-.15 G .639(cuted, the ar).15 F
 .639
 (guments to the function become the positional parameters during its e)
--.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 708 R
-F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532
-(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F
-.533(The \214rst ele-)5.533 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME)
--.18 E F0 -.25(va)2.25 G
-(riable is set to the name of the function while the function is e).25 E
--.15(xe)-.15 G(cuting.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(29)192.055 E 0 Cg EP
-%%Page: 30 30
+-.18 F -.15(xe)-.15 G(cution.).15 E 1.659(The special parameter)108 720
+R F1(#)4.159 E F0 1.659(is updated to re\215ect the change.)4.159 F
+1.659(Special parameter)6.659 F F1(0)4.159 E F0 1.658(is unchanged.)
+4.158 F 1.658(The \214rst)6.658 F(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(30)188.455 E 0 Cg EP
+%%Page: 31 31
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.25
-(All other aspects of the shell e)108 84 R -.15(xe)-.15 G 1.25
-(cution en).15 F 1.25
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(element of the)108
+84 Q/F1 9/Times-Bold@0 SF(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G
+(riable is set to the name of the function while the function is e).25 E
+-.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108
+100.8 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25
 (vironment are identical between a function and its caller with)-.4 F
-1.214(these e)108 96 R 1.214(xceptions: the)-.15 F/F1 9/Times-Bold@0 SF
-(DEB)3.714 E(UG)-.09 E F0(and)3.464 E/F2 10/Times-Bold@0 SF(RETURN)3.715
-E F0 1.215(traps \(see the description of the)3.715 F F2(trap)3.715 E F0
--.2(bu)3.715 G 1.215(iltin under).2 F F1(SHELL)3.715 E -.09(BU)108 108 S
-(IL).09 E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479
+1.215(these e)108 112.8 R 1.215(xceptions: the)-.15 F F1(DEB)3.715 E(UG)
+-.09 E F0(and)3.465 E/F2 10/Times-Bold@0 SF(RETURN)3.715 E F0 1.215
+(traps \(see the description of the)3.715 F F2(trap)3.714 E F0 -.2(bu)
+3.714 G 1.214(iltin under).2 F F1(SHELL)3.714 E -.09(BU)108 124.8 S(IL)
+.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479
 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve)
--.25 G 2.978(nt).15 G(he)-2.978 E F2(trace)2.978 E F0(attrib)2.978 E
-.478(ute \(see)-.2 F .42(the description of the)108 120 R F1(declar)2.92
-E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F
-F2 .42(\255o functrace)2.92 F F0 .42
-(shell option has been enabled with the)2.92 F F2(set)2.921 E F0 -.2(bu)
-108 132 S .072(iltin \(in which case all functions inherit the).2 F F2
+-.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E
+.479(ute \(see)-.2 F .421(the description of the)108 136.8 R F1(declar)
+2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)
+-.25 F F2 .42(\255o functrace)2.92 F F0 .42
+(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu)
+108 148.8 S .071(iltin \(in which case all functions inherit the).2 F F2
 (DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072
-(traps\), and the)2.572 F F1(ERR)2.571 E F0 .071(trap is not inher)2.321
-F(-)-.2 E(ited unless the)108 144 Q F2(\255o errtrace)2.5 E F0
-(shell option has been enabled.)2.5 E -1.11(Va)108 160.8 S .655
+(traps\), and the)2.572 F F1(ERR)2.572 E F0 .072(trap is not inher)2.322
+F(-)-.2 E(ited unless the)108 160.8 Q F2(\255o errtrace)2.5 E F0
+(shell option has been enabled.)2.5 E -1.11(Va)108 177.6 S .656
 (riables local to the function may be declared with the)1.11 F F2(local)
-3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E
-3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 172.8 Q
-(alues are shared between the function and its caller)-.25 E(.)-.55 E
-(The)108 189.6 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028
-(riable, if set to a numeric v).25 F 1.028
+3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E
+3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 189.6 R .05
+(alues are shared between the function and its caller)-.25 F 5.051(.I)
+-.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F2(local)
+2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G
+(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\
+hildren \(including the functions it calls\).)108 201.6 R 1.185(Local v)
+6.185 F(ariables)-.25 E("shado)108 213.6 Q .154(w" v)-.25 F .154
+(ariables with the same name declared at pre)-.25 F .155(vious scopes.)
+-.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F
+.155(ariable declared)-.25 F .67(in a function hides a global v)108
+225.6 R .669(ariable of the same name: references and assignments refer\
+ to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 237.6 R .688
+(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688
+(When the function returns, the global v)5.688 F .688
+(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 249.6 Q .727
+(The shell uses)108 266.4 R/F3 10/Times-Italic@0 SF .727
+(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F(ariable')-.25 E
+3.226(sv)-.55 G .726(isibility within functions.)-3.226 F -.4(Wi)5.726 G
+.726(th dynamic scoping,).4 F .007(visible v)108 278.4 R .007
+(ariables and their v)-.25 F .007
+(alues are a result of the sequence of function calls that caused e)-.25
+F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.)
+108 290.4 R .813(The v)5.814 F .813(alue of a v)-.25 F .813
+(ariable that a function sees depends on its v)-.25 F .813
+(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 302.4 Q
+2.116 -.65(y, w)-.15 H .816
+(hether that caller is the "global" scope or another shell function.).65
+F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va)
+108 314.4 S(riable declaration "shado).25 E(ws", and the v)-.25 E
+(alue that is restored when the function returns.)-.25 E -.15(Fo)108
+331.2 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E F3
+(var)2.724 E F0 .223(is declared as local in function)2.724 F F3(func1)
+2.723 E F0 2.723(,a)C(nd)-2.723 E F3(func1)2.723 E F0 .223
+(calls another function)2.723 F F3(func2)2.723 E F0(,)A .463
+(references to)108 343.2 R F3(var)2.963 E F0 .463(made from within)2.963
+F F3(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot)
+-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F3(var)2.964 E F0(from)
+2.964 E F3(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F
+(y)-.15 E(global v)108 355.2 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A
+(The)108 372 Q F2(unset)2.983 E F0 -.2(bu)2.983 G .483
+(iltin also acts using the same dynamic scope: if a v).2 F .482
+(ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19
+(will unset it; otherwise the unset will refer to the v)108 384 R .19
+(ariable found in an)-.25 F 2.69(yc)-.15 G .19
+(alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f)
+-5.19 E 2.721(av)108 396 S .221(ariable at the current local scope is u\
+nset, it will remain so until it is reset in that scope or until the fu\
+nc-)-2.971 F .013(tion returns.)108 408 R .013
+(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014
+(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014
+(vious scope will become visible.)-.25 F .567(If the unset acts on a v)
+108 420 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F 3.066
+(yi)-.15 G .566(nstance of a v)-3.066 F .566
+(ariable with that name that had been)-.25 F(shado)108 432 Q
+(wed will become visible.)-.25 E(The)108 448.8 Q F2(FUNCNEST)3.528 E F0
+-.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028
 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108
-201.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
+460.8 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
 (cations that e).2 E(xceed the limit cause the entire command to abort.)
--.15 E .043(If the b)108 218.4 R .043(uiltin command)-.2 F F2 -.18(re)
+-.15 E .044(If the b)108 477.6 R .043(uiltin command)-.2 F F2 -.18(re)
 2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043
 (cuted in a function, the function completes and e).15 F -.15(xe)-.15 G
-.044(cution resumes with).15 F 1.012(the ne)108 230.4 R 1.012
+.043(cution resumes with).15 F 1.011(the ne)108 489.6 R 1.011
 (xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G
-1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011
-(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 242.4 R
--.15(xe)-.15 G .213(cution resumes.).15 F .213
-(When a function completes, the v)5.213 F .214
+1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012
+(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 501.6 R
+-.15(xe)-.15 G .214(cution resumes.).15 F .213
+(When a function completes, the v)5.214 F .213
 (alues of the positional parameters and the spe-)-.25 F(cial parameter)
-108 254.4 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
+108 513.6 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
 2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)
--2.65 G(cution.).15 E 1.359
-(Function names and de\214nitions may be listed with the)108 271.2 R F2
+-2.65 G(cution.).15 E 1.358
+(Function names and de\214nitions may be listed with the)108 530.4 R F2
 <ad66>3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E
-F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F
-3.39(mands. The)108 283.2 R F2<ad46>3.39 E F0 .89(option to)3.39 F F2
+F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F
+3.39(mands. The)108 542.4 R F2<ad46>3.39 E F0 .89(option to)3.39 F F2
 (declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89
 (will list the function names only \(and optionally the source)3.39 F
-.327(\214le and line number)108 295.2 R 2.827(,i)-.4 G 2.827(ft)-2.827 G
-(he)-2.827 E F2(extdeb)2.827 E(ug)-.2 E F0 .326
-(shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326
-(xported so that subshells)-.15 F 1.297(automatically ha)108 307.2 R
-1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F2<ad66>3.797 E
-F0 1.297(option to the)3.797 F F2(export)3.798 E F0 -.2(bu)3.798 G 3.798
-(iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161
-(deleted using the)108 319.2 R F2<ad66>2.661 E F0 .161(option to the)
-2.661 F F2(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16
-(that shell functions and v)2.661 F .16(ariables with the same name)-.25
-F 1.325(may result in multiple identically-named entries in the en)108
-331.2 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825
-(hildren. Care)-3.825 F(should be tak)108 343.2 Q
-(en in cases where this may cause a problem.)-.1 E .372
-(Functions may be recursi)108 360 R -.15(ve)-.25 G 5.371(.T).15 G(he)
--5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371
+.326(\214le and line number)108 554.4 R 2.826(,i)-.4 G 2.826(ft)-2.826 G
+(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326
+(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327
+(xported so that subshells)-.15 F 1.298(automatically ha)108 566.4 R
+1.598 -.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F2<ad66>3.798 E
+F0 1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797
+(iltin. A).2 F 1.297(function de\214nition may be)3.797 F
+(deleted using the)108 578.4 Q F2<ad66>2.5 E F0(option to the)2.5 E F2
+(unset)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .371(Functions may be recursi)
+108 595.2 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871
+E F0 -.25(va)2.871 G .371
 (riable may be used to limit the depth of the function call).25 F 1.141
-(stack and restrict the number of function in)108 372 R -.2(vo)-.4 G
+(stack and restrict the number of function in)108 607.2 R -.2(vo)-.4 G
 3.641(cations. By).2 F(def)3.641 E 1.141
-(ault, no limit is imposed on the number of)-.1 F(recursi)108 384 Q .3
--.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)72
-400.8 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298
-(The shell allo)108 412.8 R 2.297(ws arithmetic e)-.25 F 2.297
-(xpressions to be e)-.15 F -.25(va)-.25 G 2.297
-(luated, under certain circumstances \(see the).25 F F2(let)4.797 E F0
-(and)4.797 E F2(declar)108 424.8 Q(e)-.18 E F0 -.2(bu)2.683 G .183
-(iltin commands, the).2 F F2(\(\()2.683 E F0 .183(compound command, and)
-2.683 F F2 .183(Arithmetic Expansion)2.683 F F0 2.683(\). Ev)B .183
-(aluation is done in)-.25 F<8c78>108 436.8 Q 1.058(ed-width inte)-.15 F
-1.057(gers with no check for o)-.15 F -.15(ve)-.15 G(r\215o).15 E 2.357
--.65(w, t)-.25 H 1.057(hough di).65 F 1.057
-(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .828
-(The operators and their precedence, associati)108 448.8 R(vity)-.25 E
+(ault, no limit is imposed on the number of)-.1 F(recursi)108 619.2 Q .3
+-.15(ve c)-.25 H(alls.).15 E/F4 10.95/Times-Bold@0 SF(ARITHMETIC EV)72
+636 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.297(The shell allo)
+108 648 R 2.297(ws arithmetic e)-.25 F 2.297(xpressions to be e)-.15 F
+-.25(va)-.25 G 2.297(luated, under certain circumstances \(see the).25 F
+F2(let)4.798 E F0(and)4.798 E F2(declar)108 660 Q(e)-.18 E F0 -.2(bu)
+2.684 G .183(iltin commands, the).2 F F2(\(\()2.683 E F0 .183
+(compound command, and)2.683 F F2 .183(Arithmetic Expansion)2.683 F F0
+2.683(\). Ev)B .183(aluation is done in)-.25 F<8c78>108 672 Q 1.057
+(ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15
+G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057
+(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829
+(The operators and their precedence, associati)108 684 R(vity)-.25 E
 3.329(,a)-.65 G .829(nd v)-3.329 F .829
-(alues are the same as in the C language.)-.25 F .829(The fol-)5.829 F
-(lo)108 460.8 Q .44(wing list of operators is grouped into le)-.25 F
--.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .439(The le)
-5.439 F -.15(ve)-.25 G .439(ls are listed in order).15 F
-(of decreasing precedence.)108 472.8 Q/F4 10/Times-Italic@0 SF(id)108
-489.6 Q F2(++)A F4(id)2.5 E F2<adad>A F0 -.25(va)144 501.6 S
-(riable post-increment and post-decrement).25 E F2(++)108 513.6 Q F4(id)
-A F2<adad>2.5 E F4(id)A F0 -.25(va)144 525.6 S
-(riable pre-increment and pre-decrement).25 E F2 2.5<ad2b>108 537.6 S F0
-(unary minus and plus)144 537.6 Q F2 2.5(!~)108 549.6 S F0
-(logical and bitwise ne)144 549.6 Q -.05(ga)-.15 G(tion).05 E F2(**)108
-561.6 Q F0 -.15(ex)144 561.6 S(ponentiation).15 E F2 2.5(*/%)108 573.6 S
-F0(multiplication, di)144 573.6 Q(vision, remainder)-.25 E F2 2.5<2bad>
-108 585.6 S F0(addition, subtraction)144 585.6 Q F2(<< >>)108 597.6 Q F0
-(left and right bitwise shifts)144 597.6 Q F2(<= >= < >)108 609.6 Q F0
-(comparison)144 621.6 Q F2(== !=)108 633.6 Q F0(equality and inequality)
-144 633.6 Q F2(&)108 645.6 Q F0(bitwise AND)144 645.6 Q F2(^)108 657.6 Q
-F0(bitwise e)144 657.6 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)
-108 669.6 Q F0(bitwise OR)144 669.6 Q F2(&&)108 681.6 Q F0(logical AND)
-144 681.6 Q F2(||)108 693.6 Q F0(logical OR)144 693.6 Q F4 -.2(ex)108
-705.6 S(pr).2 E F2(?)A F4 -.2(ex)C(pr).2 E F2(:)A F4 -.2(ex)C(pr).2 E F0
-(conditional operator)144 717.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(30)192.055 E 0 Cg EP
-%%Page: 31 31
+(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F
+(lo)108 696 Q .439(wing list of operators is grouped into le)-.25 F -.15
+(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)5.44
+F -.15(ve)-.25 G .44(ls are listed in order).15 F
+(of decreasing precedence.)108 708 Q(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(31)188.455 E 0 Cg EP
+%%Page: 32 32
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF 2.5(=*)108 84 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>
--2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 96 Q/F2 10
-/Times-Italic@0 SF -.2(ex)108 108 S(pr1).2 E F1(,)2.5 E F2 -.2(ex)2.5 G
-(pr2).2 E F0(comma)144 120 Q .68(Shell v)108 136.8 R .68
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(id)108 84 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E F2
+<adad>A F0 -.25(va)144 96 S(riable post-increment and post-decrement).25
+E F2 2.5<ad2b>108 108 S F0(unary minus and plus)144 108 Q F2(++)108 120
+Q F1(id)A F2<adad>2.5 E F1(id)A F0 -.25(va)144 132 S
+(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 144 S F0
+(logical and bitwise ne)144 144 Q -.05(ga)-.15 G(tion).05 E F2(**)108
+156 Q F0 -.15(ex)144 156 S(ponentiation).15 E F2 2.5(*/%)108 168 S F0
+(multiplication, di)144 168 Q(vision, remainder)-.25 E F2 2.5<2bad>108
+180 S F0(addition, subtraction)144 180 Q F2(<< >>)108 192 Q F0
+(left and right bitwise shifts)144 192 Q F2(<= >= < >)108 204 Q F0
+(comparison)144 216 Q F2(== !=)108 228 Q F0(equality and inequality)144
+228 Q F2(&)108 240 Q F0(bitwise AND)144 240 Q F2(^)108 252 Q F0
+(bitwise e)144 252 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108
+264 Q F0(bitwise OR)144 264 Q F2(&&)108 276 Q F0(logical AND)144 276 Q
+F2(||)108 288 Q F0(logical OR)144 288 Q F1 -.2(ex)108 300 S(pr).2 E F2
+(?)A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0
+(conditional operator)144 312 Q F2 2.5(=*)108 324 S 2.5(=/)-2.5 G 2.5
+(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)
+-2.5 E F0(assignment)144 336 Q F1 -.2(ex)108 348 S(pr1).2 E F2(,)2.5 E
+F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 360 Q .68(Shell v)108 376.8 R .68
 (ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68
 (xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F
--.25(va)-.25 G(lu-).25 E 3.508(ated. W)108 148.8 R 1.008(ithin an e)-.4
-F 1.008(xpression, shell v)-.15 F 1.007
+-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 388.8 R 1.007(ithin an e)-.4
+F 1.007(xpression, shell v)-.15 F 1.007
 (ariables may also be referenced by name without using the parameter)
--.25 F -.15(ex)108 160.8 S 1.04(pansion syntax.).15 F 3.54(As)6.04 G
-1.04(hell v)-3.54 F 1.04(ariable that is null or unset e)-.25 F -.25(va)
--.25 G 1.041(luates to 0 when referenced by name without).25 F 1.467
-(using the parameter e)108 172.8 R 1.467(xpansion syntax.)-.15 F 1.467
-(The v)6.467 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25
-(va)-.25 G 1.466(luated as an arithmetic e).25 F(xpression)-.15 E 1.389
-(when it is referenced, or when a v)108 184.8 R 1.389
-(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89
-E F2(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2
-F F1(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333
-(assigned a v)108 196.8 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332
-(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G
-.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2
-H(ts).15 E F2(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332
-(ute turned on)-.2 F(to be used in an e)108 208.8 Q(xpression.)-.15 E
-1.406(Constants with a leading 0 are interpreted as octal numbers.)108
-225.6 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F
-(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 237.6 R 2.613(et)-.1
-G .113(he form [)-2.613 F F2(base#)A F0 .112(]n, where the optional)B F2
-(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533
-(representing the arithmetic base, and)108 249.6 R F2(n)3.033 E F0 .533
-(is a number in that base.)3.033 F(If)5.534 E F2(base#)3.034 E F0 .534
-(is omitted, then base 10 is used.)3.034 F .513(When specifying)108
-261.6 R F2(n)3.013 E F0 3.013(,t)C .513
-(he digits greater than 9 are represented by the lo)-3.013 F .512
-(wercase letters, the uppercase letters,)-.25 F .942
-(@, and _, in that order)108 273.6 R 5.942(.I)-.55 G(f)-5.942 E F2(base)
-3.442 E F0 .942(is less than or equal to 36, lo)3.442 F .943
+-.25 F -.15(ex)108 400.8 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G
+1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25
+(va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466
+(using the parameter e)108 412.8 R 1.466(xpansion syntax.)-.15 F 1.467
+(The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25
+(va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.258
+(when it is referenced, or when a v)108 424.8 R 1.258
+(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.758(nt).15 G(he)
+-3.758 E F1(inte)3.758 E -.1(ge)-.4 G(r).1 E F0(attrib)3.758 E 1.257
+(ute using)-.2 F F2(declar)3.757 E 3.757<65ad>-.18 G(i)-3.757 E F0(is)
+3.757 E .332(assigned a v)108 436.8 R 2.832(alue. A)-.25 F .332(null v)
+2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832
+(As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632
+-.15(ve i)-.2 H(ts).15 E F1(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)
+2.832 E .333(ute turned on)-.2 F(to be used in an e)108 448.8 Q
+(xpression.)-.15 E 1.406
+(Constants with a leading 0 are interpreted as octal numbers.)108 465.6
+R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.)
+-.15 E .112(Otherwise, numbers tak)108 477.6 R 2.612(et)-.1 G .112
+(he form [)-2.612 F F1(base#)A F0 .112(]n, where the optional)B F1(base)
+2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534
+(representing the arithmetic base, and)108 489.6 R F1(n)3.034 E F0 .534
+(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533
+(is omitted, then base 10 is used.)3.033 F .512(When specifying)108
+501.6 R F1(n)3.012 E F0 3.012(,t)C .512
+(he digits greater than 9 are represented by the lo)-3.012 F .513
+(wercase letters, the uppercase letters,)-.25 F .943
+(@, and _, in that order)108 513.6 R 5.943(.I)-.55 G(f)-5.943 E F1(base)
+3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942
 (wercase and uppercase letters may be used)-.25 F
-(interchangeably to represent numbers between 10 and 35.)108 285.6 Q
-.235(Operators are e)108 302.4 R -.25(va)-.25 G .235
+(interchangeably to represent numbers between 10 and 35.)108 525.6 Q
+.234(Operators are e)108 542.4 R -.25(va)-.25 G .234
 (luated in order of precedence.).25 F(Sub-e)5.234 E .234
-(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234
-(luated \214rst and may).25 F -.15(ove)108 314.4 S
+(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235
+(luated \214rst and may).25 F -.15(ove)108 554.4 S
 (rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95
-/Times-Bold@0 SF(CONDITION)72 331.2 Q(AL EXPRESSIONS)-.219 E F0 .255
-(Conditional e)108 343.2 R .255(xpressions are used by the)-.15 F F1([[)
-2.755 E F0 .255(compound command and the)2.755 F F1(test)2.755 E F0(and)
-2.755 E F1([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F
-.77(\214le attrib)108 355.2 R .77
-(utes and perform string and arithmetic comparisons.)-.2 F .77
-(Expressions are formed from the follo)5.77 F(wing)-.25 E .426
-(unary or binary primaries.)108 367.2 R F1(Bash)5.426 E F0 .426
-(handles se)2.926 F -.15(ve)-.25 G .426
-(ral \214lenames specially when the).15 F 2.926(ya)-.15 G .426
-(re used in e)-2.926 F 2.926(xpressions. If)-.15 F .193
-(the operating system on which)108 379.2 R F1(bash)2.693 E F0 .193
-(is running pro)2.693 F .193
-(vides these special \214les, bash will use them; otherwise it)-.15 F
-.589(will emulate them internally with this beha)108 391.2 R .589
-(vior: If an)-.2 F(y)-.15 E F2(\214le)3.089 E F0(ar)3.089 E .589
-(gument to one of the primaries is of the form)-.18 F F2(/de)108 403.2 Q
-(v/fd/n)-.15 E F0 2.917(,t)C .417(hen \214le descriptor)-2.917 F F2(n)
-2.917 E F0 .417(is check)2.917 F 2.917(ed. If)-.1 F(the)2.917 E F2
-(\214le)2.917 E F0(ar)2.917 E .417
-(gument to one of the primaries is one of)-.18 F F2(/de)2.916 E(v/stdin)
--.15 E F0(,)A F2(/de)108 415.2 Q(v/stdout)-.15 E F0 2.5(,o)C(r)-2.5 E F2
-(/de)2.5 E(v/stderr)-.15 E F0 2.5<2c8c>C
-(le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5
-(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721
+/Times-Bold@0 SF(CONDITION)72 571.2 Q(AL EXPRESSIONS)-.219 E F0 .256
+(Conditional e)108 583.2 R .256(xpressions are used by the)-.15 F F2([[)
+2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and)
+2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F
+1.233(\214le attrib)108 595.2 R 1.233
+(utes and perform string and arithmetic comparisons.)-.2 F(The)6.234 E
+F2(test)3.734 E F0(abd)3.734 E F2([)3.734 E F0 1.234
+(commands determine their)3.734 F(beha)108 607.2 Q .997
+(vior based on the number of ar)-.2 F .996
+(guments; see the descriptions of those commands for an)-.18 F 3.496(yo)
+-.15 G .996(ther com-)-3.496 F(mand-speci\214c actions.)108 619.2 Q .234
+(Expressions are formed from the follo)108 636 R .234
+(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .235
+(handles se)2.735 F -.15(ve)-.25 G .235(ral \214lenames spe-).15 F .425
+(cially when the)108 648 R 2.925(ya)-.15 G .425(re used in e)-2.925 F
+2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F
+F2(bash)2.924 E F0 .424(is running pro)2.924 F .424(vides these)-.15 F
+1.153(special \214les, bash will use them; otherwise it will emulate th\
+em internally with this beha)108 660 R 1.153(vior: If an)-.2 F(y)-.15 E
+F1(\214le)3.653 E F0(ar)108 672 Q .426
+(gument to one of the primaries is of the form)-.18 F F1(/de)2.926 E
+(v/fd/n)-.15 E F0 2.926(,t)C .426(hen \214le descriptor)-2.926 F F1(n)
+2.926 E F0 .426(is check)2.926 F 2.926(ed. If)-.1 F(the)2.926 E F1
+(\214le)2.926 E F0(ar)2.926 E(gu-)-.18 E .029
+(ment to one of the primaries is one of)108 684 R F1(/de)2.529 E
+(v/stdin)-.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.53(,o)C(r)
+-2.53 E F1(/de)2.53 E(v/stderr)-.15 E F0 2.53<2c8c>C .03
+(le descriptor 0, 1, or 2, respec-)-2.53 F(ti)108 696 Q -.15(ve)-.25 G
+(ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722
 (Unless otherwise speci\214ed, primaries that operate on \214les follo)
-108 432 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar)
--3.221 F(get)-.18 E(of the link, rather than the link itself.)108 444 Q
-1.096(When used with)108 462 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 E
-F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le)
-3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095
-E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108
-474 Q F1<ad61>108 498 Q F2(\214le)2.5 E F0 -.35(Tr)144 498 S(ue if).35 E
-F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1<ad62>108 510 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 510 S(ue if).35 E F2(\214le)2.5 E F0 -.15
-(ex)2.5 G(ists and is a block special \214le.).15 E F1<ad63>108 522 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 522 S(ue if).35 E F2(\214le)2.5 E F0 -.15
-(ex)2.5 G(ists and is a character special \214le.).15 E F1<ad64>108 534
-Q F2(\214le)2.5 E F0 -.35(Tr)144 534 S(ue if).35 E F2(\214le)2.5 E F0
--.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1<ad65>108 546 Q
-F2(\214le)2.5 E F0 -.35(Tr)144 546 S(ue if).35 E F2(\214le)2.5 E F0 -.15
-(ex)2.5 G(ists.).15 E F1<ad66>108 558 Q F2(\214le)2.5 E F0 -.35(Tr)144
-558 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15
-E(gular \214le.)-.15 E F1<ad67>108 570 Q F2(\214le)2.5 E F0 -.35(Tr)144
-570 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is set-group-id.).15 E F1<ad68>108 582 Q F2(\214le)2.5 E F0
--.35(Tr)144 582 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is a symbolic link.).15 E F1<ad6b>108 594 Q F2(\214le)2.5 E F0
--.35(Tr)144 594 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+108 712.8 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar)
+-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 724.8
+Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(32)188.455 E 0 Cg EP
+%%Page: 33 33
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095
+(When used with)108 84 R/F1 10/Times-Bold@0 SF([[)3.595 E F0 3.595(,t)C
+(he)-3.595 E F1(<)3.595 E F0(and)3.595 E F1(>)3.595 E F0 1.095
+(operators sort le)3.595 F 1.095
+(xicographically using the current locale.)-.15 F(The)6.096 E F1(test)
+3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 96 Q F1
+<ad61>108 120 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 120
+S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1<ad62>108
+132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(ue if).35 E F2(\214le)2.5 E
+F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F1<ad63>108
+144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(ue if).35 E F2(\214le)2.5 E
+F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F1<ad64>
+108 156 Q F2(\214le)2.5 E F0 -.35(Tr)144 156 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1<ad65>108
+168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2(\214le)2.5 E
+F0 -.15(ex)2.5 G(ists.).15 E F1<ad66>108 180 Q F2(\214le)2.5 E F0 -.35
+(Tr)144 180 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a re).15 E(gular \214le.)-.15 E F1<ad67>108 192 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 192 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is set-group-id.).15 E F1<ad68>108 204 Q F2(\214le)
+2.5 E F0 -.35(Tr)144 204 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a symbolic link.).15 E F1<ad6b>108 216 Q F2(\214le)2.5 E F0
+-.35(Tr)144 216 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
 (ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.)
--2.5 E F1<ad70>108 606 Q F2(\214le)2.5 E F0 -.35(Tr)144 606 S(ue if).35
+-2.5 E F1<ad70>108 228 Q F2(\214le)2.5 E F0 -.35(Tr)144 228 S(ue if).35
 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).)
-.15 E F1<ad72>108 618 Q F2(\214le)2.5 E F0 -.35(Tr)144 618 S(ue if).35 E
+.15 E F1<ad72>108 240 Q F2(\214le)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E
 F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1<ad73>108
-630 Q F2(\214le)2.5 E F0 -.35(Tr)144 630 S(ue if).35 E F2(\214le)2.5 E
+252 Q F2(\214le)2.5 E F0 -.35(Tr)144 252 S(ue if).35 E F2(\214le)2.5 E
 F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1<ad74>
-108 642 Q F2(fd)2.5 E F0 -.35(Tr)144 642 S(ue if \214le descriptor).35 E
-F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1<ad75>108 654
-Q F2(\214le)2.5 E F0 -.35(Tr)144 654 S(ue if).35 E F2(\214le)2.5 E F0
+108 264 Q F2(fd)2.5 E F0 -.35(Tr)144 264 S(ue if \214le descriptor).35 E
+F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1<ad75>108 276
+Q F2(\214le)2.5 E F0 -.35(Tr)144 276 S(ue if).35 E F2(\214le)2.5 E F0
 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1<ad77>
-108 666 Q F2(\214le)2.5 E F0 -.35(Tr)144 666 S(ue if).35 E F2(\214le)2.5
-E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1<ad78>108 678 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 678 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+108 288 Q F2(\214le)2.5 E F0 -.35(Tr)144 288 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1<ad78>108 300 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 300 S(ue if).35 E F2(\214le)2.5 E F0 -.15
 (ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1<ad47>108
-690 Q F2(\214le)2.5 E F0 -.35(Tr)144 690 S(ue if).35 E F2(\214le)2.5 E
+312 Q F2(\214le)2.5 E F0 -.35(Tr)144 312 S(ue if).35 E F2(\214le)2.5 E
 F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E
-.3 -.15(ve g)-.25 H(roup id.).15 E F1<ad4c>108 702 Q F2(\214le)2.5 E F0
--.35(Tr)144 702 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is a symbolic link.).15 E F1<ad4e>108 714 Q F2(\214le)2.5 E F0
--.35(Tr)144 714 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(31)192.055 E 0 Cg EP
-%%Page: 32 32
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad4f>108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84
-S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E
-(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1
-<ad53>108 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F2
-(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2
-(\214le1)108 108 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 120 S
-(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0
-(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1)
-108 132 Q F0<ad>2.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 144 S
-(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E
-(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E
-F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G
-(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 156 Q
-F0<ad>2.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2
-(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5
-(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2
-(\214le1)2.5 E F0(does not.)2.5 E F1<ad6f>108 180 Q F2(optname)2.5 E F0
--.35(Tr)144 192 S .262(ue if the shell option).35 F F2(optname)2.992 E
-F0 .262(is enabled.)2.942 F .262
+.3 -.15(ve g)-.25 H(roup id.).15 E F1<ad4c>108 324 Q F2(\214le)2.5 E F0
+-.35(Tr)144 324 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a symbolic link.).15 E F1<ad4e>108 336 Q F2(\214le)2.5 E F0
+-.35(Tr)144 336 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1
+<ad4f>108 348 Q F2(\214le)2.5 E F0 -.35(Tr)144 348 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E
+(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1<ad53>108 360 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 360 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 372 Q F1
+(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 384 S(ue if).35 E F2
+(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0(refer to the same de)2.5
+E(vice and inode numbers.)-.25 E F2(\214le1)108 396 Q F0<ad>2.5 E F1(nt)
+A F2(\214le2)2.5 E F0 -.35(Tr)144 408 S(ue if).35 E F2(\214le1)2.5 E F0
+(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F2
+(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0
+-.15(ex)2.5 G(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2
+(\214le1)108 420 Q F0<ad>2.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144
+432 S(ue if).35 E F2(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5
+E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G
+(ists and).15 E F2(\214le1)2.5 E F0(does not.)2.5 E F1<ad6f>108 444 Q F2
+(optname)2.5 E F0 -.35(Tr)144 456 S .263(ue if the shell option).35 F F2
+(optname)2.992 E F0 .262(is enabled.)2.942 F .262
 (See the list of options under the description of the)5.262 F F1<ad6f>
-2.763 E F0(option to the)144 204 Q F1(set)2.5 E F0 -.2(bu)2.5 G
-(iltin belo).2 E -.65(w.)-.25 G F1<ad76>108 216 Q F2(varname)2.5 E F0
--.35(Tr)144 228 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79
+2.762 E F0(option to the)144 468 Q F1(set)2.5 E F0 -.2(bu)2.5 G
+(iltin belo).2 E -.65(w.)-.25 G F1<ad76>108 480 Q F2(varname)2.5 E F0
+-.35(Tr)144 492 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79
 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1<ad52>108
-240 Q F2(varname)2.5 E F0 -.35(Tr)144 252 S(ue if the shell v).35 E
+504 Q F2(varname)2.5 E F0 -.35(Tr)144 516 S(ue if the shell v).35 E
 (ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.)
-2.68 E F1<ad7a>108 264 Q F2(string)2.5 E F0 -.35(Tr)144 276 S
+2.68 E F1<ad7a>108 528 Q F2(string)2.5 E F0 -.35(Tr)144 540 S
 (ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string)
-108 288 Q F1<ad6e>108 300 Q F2(string)2.5 E F0 -.35(Tr)144 312 S
+108 552 Q F1<ad6e>108 564 Q F2(string)2.5 E F0 -.35(Tr)144 576 S
 (ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2
-(string1)108 328.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 340.8 Q F1
-(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 352.8 S .862
+(string1)108 592.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 604.8 Q F1
+(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 616.8 S .861
 (ue if the strings are equal.).35 F F1(=)5.861 E F0 .861
-(should be used with the)3.361 F F1(test)3.361 E F0 .861
-(command for POSIX conformance.)3.361 F .446(When used with the)144
-364.8 R F1([[)2.946 E F0 .446
-(command, this performs pattern matching as described abo)2.946 F .747
--.15(ve \()-.15 H F1(Compound).15 E(Commands)144 376.8 Q F0(\).)A F2
-(string1)108 393.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 405.6 S
-(ue if the strings are not equal.).35 E F2(string1)108 422.4 Q F1(<)2.5
-E F2(string2)2.5 E F0 -.35(Tr)144 434.4 S(ue if).35 E F2(string1)2.5 E
+(should be used with the)3.361 F F1(test)3.361 E F0 .862
+(command for POSIX conformance.)3.362 F .447(When used with the)144
+628.8 R F1([[)2.946 E F0 .446
+(command, this performs pattern matching as described abo)2.946 F .746
+-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 640.8 Q F0(\).)A F2
+(string1)108 657.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 669.6 S
+(ue if the strings are not equal.).35 E F2(string1)108 686.4 Q F1(<)2.5
+E F2(string2)2.5 E F0 -.35(Tr)144 698.4 S(ue if).35 E F2(string1)2.5 E
 F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15
-E(.)-.65 E F2(string1)108 451.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35
-(Tr)144 463.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2
-(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33
-480 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF
-(OP)144 492 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1
-(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A
-F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385
-(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2
-(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\
-s than or equal to, greater than, or greater than or equal to)144 504 R
-F2(ar)144 516 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly)
-.15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37
-E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15
-(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4
-10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 532.8 Q(ANSION)-.81 E F0
-.614(When a simple command is e)108 544.8 R -.15(xe)-.15 G .614
-(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613
+E(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(33)188.455 E
+0 Cg EP
+%%Page: 34 34
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(>)2.5 E F1
+(string2)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F1(string1)2.5 E F0
+(sorts after)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E
+(.)-.65 E F1(ar)108.33 112.8 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37
+E/F3 9/Times-Bold@0 SF(OP)144 124.8 Q F0 .385(is one of)2.634 F F2
+(\255eq)2.885 E F0(,)A F2(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A
+F2(\255le)2.885 E F0(,)A F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2
+(\255ge)2.885 E F0 5.385(.T)C .385
+(hese arithmetic binary operators return true if)-5.385 F F1(ar)2.885 E
+(g1)-.37 E F0 .845(is equal to, not equal to, less than, less than or e\
+qual to, greater than, or greater than or equal to)144 136.8 R F1(ar)144
+148.8 Q(g2)-.37 E F0 3.589(,r)C(especti)-3.589 E -.15(ve)-.25 G(ly).15 E
+(.)-.65 E F1(Ar)7.099 E(g1)-.37 E F0(and)3.589 E F1(ar)3.919 E(g2)-.37 E
+F0 1.089(may be positi)3.609 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 G
+-2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E 3.59
+(gers. When)-.15 F 1.09(used with the)3.59 F F2([[)3.59 E F0(command,)
+144 160.8 Q F1(Ar)4.22 E(g1)-.37 E F0(and)3.21 E F1(Ar)4.22 E(g2)-.37 E
+F0 .71(are e)3.23 F -.25(va)-.25 G .71(luated as arithmetic e).25 F
+3.209(xpressions \(see)-.15 F F3 .709(ARITHMETIC EV)3.209 F(ALU)-1.215 E
+(A-)-.54 E(TION)144 172.8 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E/F4
+10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 189.6 Q(ANSION)-.81 E F0
+.613(When a simple command is e)108 201.6 R -.15(xe)-.15 G .614
+(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614
 (xpansions, assignments, and redi-)-.15 F(rections, from left to right.)
-108 556.8 Q(1.)108 573.6 Q 1.848(The w)144 573.6 R 1.848
-(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849
+108 213.6 Q(1.)108 230.4 Q 1.849(The w)144 230.4 R 1.849
+(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.848
 (ariable assignments \(those preceding the command)-.25 F
-(name\) and redirections are sa)144 585.6 Q -.15(ve)-.2 G 2.5(df).15 G
-(or later processing.)-2.5 E(2.)108 602.4 Q 1.164(The w)144 602.4 R
-1.164(ords that are not v)-.1 F 1.164
-(ariable assignments or redirections are e)-.25 F 3.663(xpanded. If)-.15
-F(an)3.663 E 3.663(yw)-.15 G 1.163(ords remain)-3.763 F .775(after e)144
-614.4 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775
+(name\) and redirections are sa)144 242.4 Q -.15(ve)-.2 G 2.5(df).15 G
+(or later processing.)-2.5 E(2.)108 259.2 Q 1.163(The w)144 259.2 R
+1.163(ords that are not v)-.1 F 1.164
+(ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15
+F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144
+271.2 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775
 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E
-(are the ar)144 626.4 Q(guments.)-.18 E(3.)108 643.2 Q
-(Redirections are performed as described abo)144 643.2 Q .3 -.15(ve u)
--.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.)
-108 660 Q .717(The te)144 660 R .717(xt after the)-.15 F F1(=)3.217 E F0
+(are the ar)144 283.2 Q(guments.)-.18 E(3.)108 300 Q
+(Redirections are performed as described abo)144 300 Q .3 -.15(ve u)-.15
+H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.)108
+316.8 Q .716(The te)144 316.8 R .717(xt after the)-.15 F F2(=)3.217 E F0
 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717
 (goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E
-.339(command substitution, arithmetic e)144 672 R .339
+.34(command substitution, arithmetic e)144 328.8 R .339
 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339
-(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 684 Q .332
-(If no command name results, the v)108 700.8 R .332
+(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 340.8 Q
+.332(If no command name results, the v)108 357.6 R .332
 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F
-2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 712.8 S .757
+2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 369.6 S .757
 (riables are added to the en).25 F .757(vironment of the e)-.4 F -.15
 (xe)-.15 G .757(cuted command and do not af).15 F .757
-(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 724.8
-R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677
-(he assignments attempts to assign a v)-3.177 F .677
-(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(32)192.055 E 0 Cg EP
-%%Page: 33 33
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the command e)108
-84 Q(xits with a non-zero status.)-.15 E .149
-(If no command name results, redirections are performed, b)108 100.8 R
-.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65
-(vironment. A)-.4 F(redirection error causes the command to e)108 112.8
+(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 381.6
+R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677
+(he assignments attempts to assign a v)-3.176 F .677
+(alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F
+(the command e)108 393.6 Q(xits with a non-zero status.)-.15 E .15
+(If no command name results, redirections are performed, b)108 410.4 R
+.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649
+(vironment. A)-.4 F(redirection error causes the command to e)108 422.4
 Q(xit with a non-zero status.)-.15 E 1.064
-(If there is a command name left after e)108 129.6 R 1.064(xpansion, e)
+(If there is a command name left after e)108 439.2 R 1.064(xpansion, e)
 -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F
-4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108
-141.6 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069
-(xpansions contained a command substitution, the e)-.15 F .069
-(xit status of the command)-.15 F .467(is the e)108 153.6 R .466
-(xit status of the last command substitution performed.)-.15 F .466
-(If there were no command substitutions, the)5.466 F(command e)108 165.6
-Q(xits with a status of zero.)-.15 E/F1 10.95/Times-Bold@0 SF
-(COMMAND EXECUTION)72 182.4 Q F0 .546
-(After a command has been split into w)108 194.4 R .547
+4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108
+451.2 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069
+(xpansions contained a command substitution, the e)-.15 F .068
+(xit status of the command)-.15 F .466(is the e)108 463.2 R .466
+(xit status of the last command substitution performed.)-.15 F .467
+(If there were no command substitutions, the)5.466 F(command e)108 475.2
+Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 492 Q F0
+.547(After a command has been split into w)108 504 R .546
 (ords, if it results in a simple command and an optional list of ar)-.1
-F(gu-)-.18 E(ments, the follo)108 206.4 Q(wing actions are tak)-.25 E
-(en.)-.1 E .379(If the command name contains no slashes, the shell atte\
-mpts to locate it.)108 223.2 R .379(If there e)5.379 F .379
+F(gu-)-.18 E(ments, the follo)108 516 Q(wing actions are tak)-.25 E(en.)
+-.1 E .379(If the command name contains no slashes, the shell attempts \
+to locate it.)108 532.8 R .379(If there e)5.379 F .379
 (xists a shell function by)-.15 F .246(that name, that function is in)
-108 235.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
-.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E/F2 9
-/Times-Bold@0 SF(FUNCTIONS)2.746 E/F3 9/Times-Roman@0 SF(.)A F0 .246
-(If the name does not match a func-)4.746 F
-(tion, the shell searches for it in the list of shell b)108 247.2 Q 2.5
+108 544.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
+.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS)
+2.746 E F5(.)A F0 .246(If the name does not match a func-)4.746 F
+(tion, the shell searches for it in the list of shell b)108 556.8 Q 2.5
 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E
-(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31
-(If the name is neither a shell function nor a b)108 264 R .309
-(uiltin, and contains no slashes,)-.2 F/F4 10/Times-Bold@0 SF(bash)2.809
-E F0 .309(searches each element of)2.809 F(the)108 276 Q F2 -.666(PA)
-3.162 G(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15
-(xe)-.15 G .662(cutable \214le by that name.).15 F F4(Bash)5.662 E F0
-.663(uses a hash table to remember)3.162 F 1.915
-(the full pathnames of e)108 288 R -.15(xe)-.15 G 1.915
-(cutable \214les \(see).15 F F4(hash)4.415 E F0(under)4.415 E F2 1.915
-(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)-.828 F F0(belo)4.164 E
-4.414(w\). A)-.25 F(full)4.414 E .719(search of the directories in)108
-300 R F2 -.666(PA)3.219 G(TH)-.189 E F0 .72
-(is performed only if the command is not found in the hash table.)2.969
-F .72(If the)5.72 F .956(search is unsuccessful, the shell searches for\
- a de\214ned shell function named)108 312 R F4(command_not_f)3.455 E
-(ound_han-)-.25 E(dle)108 324 Q F0 5.277(.I)C 2.777(ft)-5.277 G .277
-(hat function e)-2.777 F .277(xists, it is in)-.15 F -.2(vo)-.4 G -.1
-(ke).2 G 2.777(dw).1 G .278
-(ith the original command and the original command')-2.777 F 2.778(sa)
--.55 G -.18(rg)-2.778 G(uments).18 E .776(as its ar)108 336 R .776
-(guments, and the function')-.18 F 3.275(se)-.55 G .775
-(xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F
-.775(If that function is not)5.775 F
-(de\214ned, the shell prints an error message and returns an e)108 348 Q
-(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\
- command name contains one or more slashes, the shell e)108 364.8 R -.15
-(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108
-376.8 R -.15(xe)-.15 G .198(cution en).15 F 2.698(vironment. Ar)-.4 F
-.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197
-(n, and the remain-).15 F(ing ar)108 388.8 Q
+(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309
+(If the name is neither a shell function nor a b)108 573.6 R .31
+(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31
+(searches each element of)2.81 F(the)108 585.6 Q F3 -.666(PA)3.163 G(TH)
+-.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G
+.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662
+(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108
+597.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E
+F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS)
+-.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72
+(search of the directories in)108 609.6 R F3 -.666(PA)3.22 G(TH)-.189 E
+F0 .719
+(is performed only if the command is not found in the hash table.)2.97 F
+.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\
+ a de\214ned shell function named)108 621.6 R F2(command_not_f)3.456 E
+(ound_han-)-.25 E(dle)108 633.6 Q F0 6.006(.I)C 3.506(ft)-6.006 G 1.006
+(hat function e)-3.506 F 1.006(xists, it is in)-.15 F -.2(vo)-.4 G -.1
+(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.005(eparate e)-3.506 F -.15
+(xe)-.15 G 1.005(cution en).15 F 1.005
+(vironment with the original command)-.4 F .255
+(and the original command')108 645.6 R 2.755(sa)-.55 G -.18(rg)-2.755 G
+.255(uments as its ar).18 F .256(guments, and the function')-.18 F 2.756
+(se)-.55 G .256(xit status becomes the e)-2.906 F .256(xit sta-)-.15 F
+.263(tus of that subshell.)108 657.6 R .263(If that function is not de\
+\214ned, the shell prints an error message and returns an e)5.263 F .263
+(xit sta-)-.15 F(tus of 127.)108 669.6 Q 1.089(If the search is success\
+ful, or if the command name contains one or more slashes, the shell e)
+108 686.4 R -.15(xe)-.15 G 1.09(cutes the).15 F .198
+(named program in a separate e)108 698.4 R -.15(xe)-.15 G .198
+(cution en).15 F 2.698(vironment. Ar)-.4 F .198
+(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197
+(n, and the remain-).15 F(ing ar)108 710.4 Q
 (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15
-(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 405.6 R
+(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 727.2 R
 -.15(xe)-.15 G 1.809(cution f).15 F 1.809
 (ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809
 (cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G
-4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 417.6 R/F5 10
-/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678
-(le containing shell commands.)-3.178 F 3.178(As)5.678 G .678
-(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677
-(cute it.).15 F(This)5.677 E .329
-(subshell reinitializes itself, so that the ef)108 429.6 R .329
+4.309(ti)-4.309 G(s)-4.309 E(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(34)188.455 E 0 Cg EP
+%%Page: 35 35
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .678
+(assumed to be a)108 84 R/F1 10/Times-Italic@0 SF .678(shell script)
+3.178 F F0 3.178(,a\214)C .678(le containing shell commands.)-3.178 F
+3.178(As)5.678 G .678(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15
+(xe)-.15 G .677(cute it.).15 F(This)5.677 E .329
+(subshell reinitializes itself, so that the ef)108 96 R .329
 (fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F
 -.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33
-(andle the script, with)-2.83 F 1.219(the e)108 441.6 R 1.219
+(andle the script, with)-2.83 F 1.219(the e)108 108 R 1.219
 (xception that the locations of commands remembered by the parent \(see)
--.15 F F4(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2
-(SHELL)3.719 E -.09(BU)108 453.6 S(IL).09 E(TIN COMMANDS)-.828 E F3(\))A
-F0(are retained by the child.)2.25 E .347(If the program is a \214le be)
-108 470.4 R .347(ginning with)-.15 F F4(#!)2.847 E F0 2.847(,t)C .348(h\
+-.15 F/F2 10/Times-Bold@0 SF(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25
+G(nder)-3.719 E/F3 9/Times-Bold@0 SF(SHELL)3.719 E -.09(BU)108 120 S(IL)
+.09 E(TIN COMMANDS)-.828 E/F4 9/Times-Roman@0 SF(\))A F0
+(are retained by the child.)2.25 E .347(If the program is a \214le be)
+108 136.8 R .347(ginning with)-.15 F F2(#!)2.847 E F0 2.847(,t)C .348(h\
 e remainder of the \214rst line speci\214es an interpreter for the pro-)
--2.847 F 3.178(gram. The)108 482.4 R .678(shell e)3.178 F -.15(xe)-.15 G
+-2.847 F 3.178(gram. The)108 148.8 R .678(shell e)3.178 F -.15(xe)-.15 G
 .678(cutes the speci\214ed interpreter on operating systems that do not\
  handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.192(format themselv)
-108 494.4 R 3.692(es. The)-.15 F(ar)3.693 E 1.193
+108 160.8 R 3.692(es. The)-.15 F(ar)3.693 E 1.193
 (guments to the interpreter consist of a single optional ar)-.18 F 1.193
 (gument follo)-.18 F 1.193(wing the)-.25 F 1.131
-(interpreter name on the \214rst line of the program, follo)108 506.4 R
+(interpreter name on the \214rst line of the program, follo)108 172.8 R
 1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F
-(command ar)108 518.4 Q(guments, if an)-.18 E -.65(y.)-.15 G F1
-(COMMAND EXECUTION ENVIR)72 535.2 Q(ONMENT)-.329 E F0(The shell has an)
-108 547.2 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0
-2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 564 Q
-1.405(open \214les inherited by the shell at in)144 564 R -.2(vo)-.4 G
-1.406(cation, as modi\214ed by redirections supplied to the).2 F F4
-(exec)3.906 E F0 -.2(bu)144 576 S(iltin).2 E<83>108 592.8 Q
-(the current w)144 592.8 Q(orking directory as set by)-.1 E F4(cd)2.5 E
-F0(,)A F4(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F4(popd)2.5 E F0 2.5(,o)C 2.5
-(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E
-<83>108 609.6 Q(the \214le creation mode mask as set by)144 609.6 Q F4
-(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)
--2.5 E<83>108 626.4 Q(current traps set by)144 626.4 Q F4(trap)2.5 E F0
-<83>108 643.2 Q .257(shell parameters that are set by v)144 643.2 R .256
-(ariable assignment or with)-.25 F F4(set)2.756 E F0 .256
+(command ar)108 184.8 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95
+/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 201.6 Q(ONMENT)-.329 E F0
+(The shell has an)108 213.6 Q F1 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E
+(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25
+E<83>108 230.4 Q 1.405(open \214les inherited by the shell at in)144
+230.4 R -.2(vo)-.4 G 1.406
+(cation, as modi\214ed by redirections supplied to the).2 F F2(exec)
+3.906 E F0 -.2(bu)144 242.4 S(iltin).2 E<83>108 259.2 Q(the current w)
+144 259.2 Q(orking directory as set by)-.1 E F2(cd)2.5 E F0(,)A F2
+(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F2(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5
+G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108 276
+Q(the \214le creation mode mask as set by)144 276 Q F2(umask)2.5 E F0
+(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83>108
+292.8 Q(current traps set by)144 292.8 Q F2(trap)2.5 E F0<83>108 309.6 Q
+.257(shell parameters that are set by v)144 309.6 R .256
+(ariable assignment or with)-.25 F F2(set)2.756 E F0 .256
 (or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E
-(in the en)144 655.2 Q(vironment)-.4 E<83>108 672 Q
-(shell functions de\214ned during e)144 672 Q -.15(xe)-.15 G
+(in the en)144 321.6 Q(vironment)-.4 E<83>108 338.4 Q
+(shell functions de\214ned during e)144 338.4 Q -.15(xe)-.15 G
 (cution or inherited from the shell').15 E 2.5(sp)-.55 G
-(arent in the en)-2.5 E(vironment)-.4 E<83>108 688.8 Q
-(options enabled at in)144 688.8 Q -.2(vo)-.4 G(cation \(either by def)
-.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F4(set)
-2.5 E F0<83>108 705.6 Q(options enabled by)144 705.6 Q F4(shopt)2.5 E F0
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(33)192.055 E 0 Cg EP
-%%Page: 34 34
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q
-(shell aliases de\214ned with)144 84 Q/F1 10/Times-Bold@0 SF(alias)2.5 E
-F0<83>108 100.8 Q -.25(va)144 100.8 S
+(arent in the en)-2.5 E(vironment)-.4 E<83>108 355.2 Q
+(options enabled at in)144 355.2 Q -.2(vo)-.4 G(cation \(either by def)
+.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F2(set)
+2.5 E F0<83>108 372 Q(options enabled by)144 372 Q F2(shopt)2.5 E F0<83>
+108 388.8 Q(shell aliases de\214ned with)144 388.8 Q F2(alias)2.5 E F0
+<83>108 405.6 Q -.25(va)144 405.6 S
 (rious process IDs, including those of background jobs, the v).25 E
-(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
-/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .426
-(When a simple command other than a b)108 117.6 R .427
-(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427
+(alue of)-.25 E F2($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
+F3(PPID)2.5 E F0 .426(When a simple command other than a b)108 422.4 R
+.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427
 (cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas)
--2.927 G(eparate)-2.927 E -.15(exe)108 129.6 S .134(cution en).15 F .134
+-2.927 G(eparate)-2.927 E -.15(exe)108 434.4 S .134(cution en).15 F .134
 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F
 .133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F
-(the shell.)108 141.6 Q<83>108 158.4 Q 1.055(the shell')144 158.4 R
+(the shell.)108 446.4 Q<83>108 463.2 Q 1.055(the shell')144 463.2 R
 3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G
 1.056
 (odi\214cations and additions speci\214ed by redirections to the com-)
--3.556 F(mand)144 170.4 Q<83>108 187.2 Q(the current w)144 187.2 Q
-(orking directory)-.1 E<83>108 204 Q(the \214le creation mode mask)144
-204 Q<83>108 220.8 Q .857(shell v)144 220.8 R .857
+-3.556 F(mand)144 475.2 Q<83>108 492 Q(the current w)144 492 Q
+(orking directory)-.1 E<83>108 508.8 Q(the \214le creation mode mask)144
+508.8 Q<83>108 525.6 Q .857(shell v)144 525.6 R .857
 (ariables and functions mark)-.25 F .857(ed for e)-.1 F .857
 (xport, along with v)-.15 F .857(ariables e)-.25 F .857
-(xported for the command,)-.15 F(passed in the en)144 232.8 Q(vironment)
--.4 E<83>108 249.6 Q .306(traps caught by the shell are reset to the v)
-144 249.6 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G
+(xported for the command,)-.15 F(passed in the en)144 537.6 Q(vironment)
+-.4 E<83>108 554.4 Q .306(traps caught by the shell are reset to the v)
+144 554.4 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G
 .307(arent, and traps ignored)-2.807 F(by the shell are ignored)144
-261.6 Q 2.5(Ac)108 278.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5
+566.4 Q 2.5(Ac)108 583.2 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5
 (di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E
 (fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E
 (vironment.)-.4 E .577(Command substitution, commands grouped with pare\
-ntheses, and asynchronous commands are in)108 295.2 R -.2(vo)-.4 G -.1
-(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 307.2 S .244(ubshell en)
--2.744 F .244(vironment that is a duplicate of the shell en)-.4 F .245
+ntheses, and asynchronous commands are in)108 600 R -.2(vo)-.4 G -.1(ke)
+.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 612 S .244(ubshell en)-2.744
+F .244(vironment that is a duplicate of the shell en)-.4 F .245
 (vironment, e)-.4 F .245(xcept that traps caught by the shell are)-.15 F
-.359(reset to the v)108 319.2 R .358
+.359(reset to the v)108 624 R .358
 (alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4
 G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo)
--.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 331.2
--.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357
+-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 636 R
+-.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357
 (vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-)
--.4 E(ment cannot af)108 343.2 Q(fect the shell')-.25 E 2.5(se)-.55 G
--.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108
-360 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377
+-.4 E(ment cannot af)108 648 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15
+(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108
+664.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377
 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F
-F1<ad65>3.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When)
-108 372 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix)2.5 E F0(mode,)2.5
-E F1(bash)2.5 E F0(clears the)2.5 E F1<ad65>2.5 E F0
-(option in such subshells.)2.5 E .404(If a command is follo)108 388.8 R
-.404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti)
-2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405
-(ault standard input for the command)-.1 F .198(is the empty \214le)108
-400.8 R F3(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198
-(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197
-(ommand inherits the \214le descriptors of the calling shell)-2.698 F
-(as modi\214ed by redirections.)108 412.8 Q/F4 10.95/Times-Bold@0 SF
-(ENVIR)72 429.6 Q(ONMENT)-.329 E F0 2.353(When a program is in)108 441.6
-R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg)
--4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353
-(rray of strings called the)-4.853 F F3(en)4.853 E(vir)-.4 E(onment)-.45
-E F0 7.353(.T).68 G 2.354(his is a list of)-7.353 F F3(name)108 453.6 Q
-F0<ad>A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.5 E F0(=)A F3
-(value)A F0(.).18 E 1.486(The shell pro)108 470.4 R 1.486(vides se)-.15
-F -.15(ve)-.25 G 1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F
-3.985(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485
-(cation, the shell scans its o).2 F(wn)-.25 E(en)108 482.4 Q .144(viron\
+F2<ad65>3.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When)
+108 676.8 R(not in)2.5 E F1(posix mode)2.5 E F0(,)A F2(bash)2.5 E F0
+(clears the)2.5 E F2<ad65>2.5 E F0(option in such subshells.)2.5 E .404
+(If a command is follo)108 693.6 R .404(wed by a)-.25 F F2(&)2.904 E F0
+.405(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G
+.405(he def)-2.905 F .405(ault standard input for the command)-.1 F .198
+(is the empty \214le)108 705.6 R F1(/de)2.698 E(v/null)-.15 E F0 5.198
+(.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc)
+.1 G .197(ommand inherits the \214le descriptors of the calling shell)
+-2.698 F(as modi\214ed by redirections.)108 717.6 Q(GNU Bash 5.0)72 768
+Q(2018 December 7)139.295 E(35)188.455 E 0 Cg EP
+%%Page: 36 36
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
+/Times-Bold@0 SF(ENVIR)72 84 Q(ONMENT)-.329 E F0 2.353
+(When a program is in)108 96 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G
+4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na)
+.25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F/F2 10
+/Times-Italic@0 SF(en)4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G
+2.354(his is a list of)-7.353 F F2(name)108 108 Q F0<ad>A F2(value)A F0
+(pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E
+1.486(The shell pro)108 124.8 R 1.486(vides se)-.15 F -.15(ve)-.25 G
+1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985
+(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485
+(cation, the shell scans its o).2 F(wn)-.25 E(en)108 136.8 Q .144(viron\
 ment and creates a parameter for each name found, automatically marking\
- it for)-.4 F F3 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F
-2.704(cesses. Ex)108 494.4 R .203(ecuted commands inherit the en)-.15 F
-2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar)
-2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703
-(wp)-.25 G(aram-)-2.703 E 1.153
-(eters and functions to be added to and deleted from the en)108 506.4 R
+ it for)-.4 F F2 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F
+2.704(cesses. Ex)108 148.8 R .203(ecuted commands inherit the en)-.15 F
+2.703(vironment. The)-.4 F/F3 10/Times-Bold@0 SF(export)2.703 E F0(and)
+2.703 E F3(declar)2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203
+(commands allo)2.703 F 2.703(wp)-.25 G(aram-)-2.703 E 1.153
+(eters and functions to be added to and deleted from the en)108 160.8 R
 3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154
-(alue of a parameter in the)-.25 F(en)108 518.4 Q .64
+(alue of a parameter in the)-.25 F(en)108 172.8 Q .64
 (vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64
 (alue becomes part of the en)-3.39 F .64(vironment, replacing the old.)
--.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 530.4
+-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 184.8
 R 3.08(ye)-.15 G -.15(xe)-3.23 G .58
 (cuted command consists of the shell').15 F 3.08(si)-.55 G .58
 (nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F
-.301(modi\214ed in the shell, less an)108 542.4 R 2.801(yp)-.15 G .301
+.301(modi\214ed in the shell, less an)108 196.8 R 2.801(yp)-.15 G .301
 (airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he)
--2.801 E F1(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3
-(dditions via the)-2.8 F F1(export)2.8 E F0(and)2.8 E F1(declar)108
-554.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108
-571.2 R .562(vironment for an)-.4 F(y)-.15 E F3 .562(simple command)
+-2.801 E F3(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3
+(dditions via the)-2.8 F F3(export)2.8 E F0(and)2.8 E F3(declar)108
+208.8 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108
+225.6 R .562(vironment for an)-.4 F(y)-.15 E F2 .562(simple command)
 3.402 F F0 .563
 (or function may be augmented temporarily by pre\214xing it with)3.833 F
-.203(parameter assignments, as described abo)108 583.2 R .502 -.15(ve i)
--.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF
-(.)A F0 .202(These assignment statements af)4.702 F .202(fect only the)
--.25 F(en)108 595.2 Q(vironment seen by that command.)-.4 E .81(If the)
-108 612 R F1<ad6b>3.31 E F0 .81(option is set \(see the)3.31 F F1(set)
-3.31 E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F
-F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en)
-108 624 Q
+.203(parameter assignments, as described abo)108 237.6 R .502 -.15(ve i)
+-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5
+9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F
+.202(fect only the)-.25 F(en)108 249.6 Q
+(vironment seen by that command.)-.4 E .81(If the)108 266.4 R F3<ad6b>
+3.31 E F0 .81(option is set \(see the)3.31 F F3(set)3.31 E F0 -.2(bu)
+3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0
+.81(parameter assignments are placed in)3.82 F(the en)108 278.4 Q
 (vironment for a command, not just those that precede the command name.)
--.4 E(When)108 640.8 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1
+-.4 E(When)108 295.2 Q F3(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1
 (ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v)
--3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085
+-3.736 F(ariable)-.25 E F3(_)3.586 E F0 1.085
 (is set to the full \214lename of the command and)3.586 F
-(passed to that command in its en)108 652.8 Q(vironment.)-.4 E F4
-(EXIT ST)72 669.6 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 681.6 R
-.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v)
-.15 F .151(alue returned by the)-.25 F F3(waitpid)2.651 E F0 .151
+(passed to that command in its en)108 307.2 Q(vironment.)-.4 E F1
+(EXIT ST)72 324 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 336 R .15
+(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v).15
+F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151
 (system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848
-(tion. Exit)108 693.6 R .348(statuses f)2.848 F .347
+(tion. Exit)108 348 R .348(statuses f)2.848 F .347
 (all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F
 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25
-F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 705.6 Q 5.506(.E)-.65 G
+F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 360 Q 5.506(.E)-.65 G
 .506(xit statuses from shell b)-5.506 F .507
 (uiltins and compound commands are also limited to this range.)-.2 F
 (Under)5.507 E(certain circumstances, the shell will use special v)108
-717.6 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(34)192.055 E 0 Cg EP
-%%Page: 35 35
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(Fo)108 84 S
-3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873
+372 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo)
+108 388.8 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873
 (urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873
 (xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of)
--.15 F .048(zero indicates success.)108 96 R 2.548(An)5.048 G .049
+-.15 F .048(zero indicates success.)108 400.8 R 2.548(An)5.048 G .049
 (on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549
 (ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f)
--2.549 F .049(atal sig-)-.1 F(nal)108 108 Q/F1 10/Times-Italic@0 SF(N)
-2.5 E F0(,)A/F2 10/Times-Bold@0 SF(bash)2.5 E F0(uses the v)2.5 E
-(alue of 128+)-.25 E F1(N)A F0(as the e)2.5 E(xit status.)-.15 E .405
-(If a command is not found, the child process created to e)108 124.8 R
+-2.549 F .049(atal sig-)-.1 F(nal)108 412.8 Q F2(N)2.5 E F0(,)A F3(bash)
+2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E
+(xit status.)-.15 E .405
+(If a command is not found, the child process created to e)108 429.6 R
 -.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404
-(If a command is)5.404 F(found b)108 136.8 Q(ut is not e)-.2 E -.15(xe)
--.15 G(cutable, the return status is 126.).15 E(If a command f)108 153.6
+(If a command is)5.404 F(found b)108 441.6 Q(ut is not e)-.2 E -.15(xe)
+-.15 G(cutable, the return status is 126.).15 E(If a command f)108 458.4
 Q(ails because of an error during e)-.1 E
 (xpansion or redirection, the e)-.15 E(xit status is greater than zero.)
--.15 E .08(Shell b)108 170.4 R .08
-(uiltin commands return a status of 0 \()-.2 F F1(true)A F0 2.581(\)i)C
-2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F1(false)A F0
+-.15 E .08(Shell b)108 475.2 R .08
+(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C
+2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0
 2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while)
--2.581 F(the)108 182.4 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968
+-2.581 F(the)108 487.2 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968
 (cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468
 (xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25
-(va)-.4 G .467(lid options or).25 F(missing ar)108 194.4 Q(guments.)-.18
-E F2(Bash)108 211.2 Q F0 .201(itself returns the e)2.701 F .202
+(va)-.4 G .467(lid options or).25 F(missing ar)108 499.2 Q(guments.)-.18
+E F3(Bash)108 516 Q F0 .201(itself returns the e)2.701 F .202
 (xit status of the last command e)-.15 F -.15(xe)-.15 G .202
-(cuted, unless a syntax error occurs, in which case).15 F(it e)108 223.2
-Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F2
-(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G/F3
-10.95/Times-Bold@0 SF(SIGN)72 240 Q(ALS)-.219 E F0(When)108 252 Q F2
-(bash)3.183 E F0 .683(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G
-3.183(nt)-3.183 G .683(he absence of an)-3.183 F 3.183(yt)-.15 G .683
-(raps, it ignores)-3.183 F/F4 9/Times-Bold@0 SF(SIGTERM)3.183 E F0 .682
-(\(so that)2.933 F F2 .682(kill 0)3.182 F F0 .682(does not kill an)3.182
-F(interacti)108 264 Q .757 -.15(ve s)-.25 H .457(hell\), and).15 F F4
-(SIGINT)2.957 E F0 .458(is caught and handled \(so that the)2.707 F F2
-(wait)2.958 E F0 -.2(bu)2.958 G .458(iltin is interruptible\).).2 F .458
-(In all cases,)5.458 F F2(bash)108 276 Q F0(ignores)2.5 E F4(SIGQ)2.5 E
-(UIT)-.09 E/F5 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E
-(fect,)-.25 E F2(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4
-(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0
-(Non-b)108 292.8 Q 1.065(uiltin commands run by)-.2 F F2(bash)3.565 E F0
-(ha)3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15
-F 1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When)
-108 304.8 R .747(job control is not in ef)3.247 F .747
+(cuted, unless a syntax error occurs, in which case).15 F(it e)108 528 Q
+(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F3
+(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F1
+(SIGN)72 544.8 Q(ALS)-.219 E F0(When)108 556.8 Q F3(bash)3.183 E F0 .683
+(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G 3.183(nt)-3.183 G
+.683(he absence of an)-3.183 F 3.183(yt)-.15 G .683(raps, it ignores)
+-3.183 F F4(SIGTERM)3.183 E F0 .682(\(so that)2.933 F F3 .682(kill 0)
+3.182 F F0 .682(does not kill an)3.182 F(interacti)108 568.8 Q .757 -.15
+(ve s)-.25 H .457(hell\), and).15 F F4(SIGINT)2.957 E F0 .458
+(is caught and handled \(so that the)2.707 F F3(wait)2.958 E F0 -.2(bu)
+2.958 G .458(iltin is interruptible\).).2 F .458(In all cases,)5.458 F
+F3(bash)108 580.8 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0
+(If job control is in ef)4.5 E(fect,)-.25 E F3(bash)2.5 E F0(ignores)2.5
+E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25
+E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 597.6 Q 1.065
+(uiltin commands run by)-.2 F F3(bash)3.565 E F0(ha)3.565 E 1.365 -.15
+(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.064
+(alues inherited by the shell from its)-.25 F 3.247(parent. When)108
+609.6 R .747(job control is not in ef)3.247 F .747
 (fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and)
 2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653
-(tion to these inherited handlers.)108 316.8 R .653
+(tion to these inherited handlers.)108 621.6 R .653
 (Commands run as a result of command substitution ignore the k)5.653 F
--.15(ey)-.1 G(board-).15 E(generated job control signals)108 328.8 Q F4
+-.15(ey)-.1 G(board-).15 E(generated job control signals)108 633.6 Q F4
 (SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4
-(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 345.6 R 2.045
+(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 650.4 R 2.045
 (xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E
 F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346
--.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 357.6 Q F0
+-.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 662.4 Q F0
 1.005(to all jobs, running or stopped.)3.255 F 1.004
 (Stopped jobs are sent)6.005 F F4(SIGCONT)3.504 E F0 1.004
 (to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15
-(ve t)-.25 H(he).15 E F4(SIGHUP)108 369.6 Q F5(.)A F0 2.529 -.8(To p)
+(ve t)-.25 H(he).15 E F4(SIGHUP)108 674.4 Q F5(.)A F0 2.529 -.8(To p)
 5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\
  to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15
-G .93(rom the)-3.43 F 1.357(jobs table with the)108 381.6 R F2(diso)
+G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso)
 3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F4 1.356
 (SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E
 1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F4
-(SIGHUP)108 393.6 Q F0(using)2.25 E F2(diso)2.5 E(wn \255h)-.1 E F0(.)A
-.166(If the)108 410.4 R F2(huponexit)2.666 E F0 .166
-(shell option has been set with)2.666 F F2(shopt)2.666 E F0(,)A F2(bash)
+(SIGHUP)108 698.4 Q F0(using)2.25 E F3(diso)2.5 E(wn \255h)-.1 E F0(.)A
+.166(If the)108 715.2 R F3(huponexit)2.666 E F0 .166
+(shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash)
 2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166
 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108
-422.4 Q(xits.)-.15 E(If)108 439.2 Q F2(bash)3.047 E F0 .547(is w)3.047 F
-.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G
-3.046(sas).15 G .546(ignal for which a trap has been set, the trap)
--3.046 F .662(will not be e)108 451.2 R -.15(xe)-.15 G .662
-(cuted until the command completes.).15 F(When)5.663 E F2(bash)3.163 E
-F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99
-(via the)108 463.2 R F2(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\
-eption of a signal for which a trap has been set will cause the).2 F F2
-(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F
-(return immediately with an e)108 475.2 Q
-(xit status greater than 128, immediately after which the trap is e)-.15
-E -.15(xe)-.15 G(cuted.).15 E F3(JOB CONTR)72 492 Q(OL)-.329 E F1 -.25
-(Jo)108 504 S 4.567(bc).25 G(ontr)-4.567 E(ol)-.45 E F0 2.067
-(refers to the ability to selecti)5.077 F -.15(ve)-.25 G 2.067
-(ly stop \().15 F F1(suspend)A F0 4.567(\)t)C 2.068(he e)-4.567 F -.15
-(xe)-.15 G 2.068(cution of processes and continue).15 F(\()108 516 Q F1
--.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G
-.702(cution at a later point.).15 F 3.202(Au)5.702 G .702
-(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702
+727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(36)
+188.455 E 0 Cg EP
+%%Page: 37 37
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(If)108 84 Q/F1 10
+/Times-Bold@0 SF(bash)3.047 E F0 .547(is w)3.047 F .546
+(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046
+(sas).15 G .546(ignal for which a trap has been set, the trap)-3.046 F
+.662(will not be e)108 96 R -.15(xe)-.15 G .662
+(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E
+F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99
+(via the)108 108 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\
+tion of a signal for which a trap has been set will cause the).2 F F1
+(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F
+(return immediately with an e)108 120 Q
+(xit status greater than 128, immediately after which the trap is e)-.15
+E -.15(xe)-.15 G(cuted.).15 E/F2 10.95/Times-Bold@0 SF(JOB CONTR)72
+136.8 Q(OL)-.329 E/F3 10/Times-Italic@0 SF -.25(Jo)108 148.8 S 4.567(bc)
+.25 G(ontr)-4.567 E(ol)-.45 E F0 2.067(refers to the ability to selecti)
+5.077 F -.15(ve)-.25 G 2.067(ly stop \().15 F F3(suspend)A F0 4.567(\)t)
+C 2.068(he e)-4.567 F -.15(xe)-.15 G 2.068
+(cution of processes and continue).15 F(\()108 160.8 Q F3 -.37(re)C
+(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G .702
+(cution at a later point.).15 F 3.202(Au)5.702 G .702
+(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702
 (acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace)
--.1 E(supplied jointly by the operating system k)108 528 Q(ernel')-.1 E
-2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E
-F2(bash)2.5 E F0(.)A .784(The shell associates a)108 544.8 R F1(job)
+-.1 E(supplied jointly by the operating system k)108 172.8 Q(ernel')-.1
+2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E
+F1(bash)2.5 E F0(.)A .784(The shell associates a)108 189.6 R F3(job)
 5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785
 (eeps a table of currently e)-.1 F -.15(xe)-.15 G .785
-(cuting jobs, which may be).15 F .341(listed with the)108 556.8 R F2
-(jobs)2.841 E F0 2.841(command. When)2.841 F F2(bash)2.841 E F0 .341
-(starts a job asynchronously \(in the)2.841 F F1(bac)2.84 E(kgr)-.2 E
-(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 568.8
-Q(e:)-.1 E([1] 25647)144 585.6 Q .241(indicating that this job is job n\
+(cuting jobs, which may be).15 F .341(listed with the)108 201.6 R F1
+(jobs)2.841 E F0 2.841(command. When)2.841 F F1(bash)2.841 E F0 .341
+(starts a job asynchronously \(in the)2.841 F F3(bac)2.84 E(kgr)-.2 E
+(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 213.6
+Q(e:)-.1 E([1] 25647)144 230.4 Q .241(indicating that this job is job n\
 umber 1 and that the process ID of the last process in the pipeline ass\
-ociated)108 602.4 R .733(with this job is 25647.)108 614.4 R .732
+ociated)108 247.2 R .733(with this job is 25647.)108 259.2 R .732
 (All of the processes in a single pipeline are members of the same job)
-5.733 F(.)-.4 E F2(Bash)5.732 E F0(uses)3.232 E(the)108 626.4 Q F1(job)
+5.733 F(.)-.4 E F1(Bash)5.732 E F0(uses)3.232 E(the)108 271.2 Q F3(job)
 4.24 E F0(abstraction as the basis for job control.)2.73 E 3.062 -.8
-(To f)108 643.2 T 1.462(acilitate the implementation of the user interf)
-.7 F 1.463(ace to job control, the operating system maintains the)-.1 F
-.871(notion of a)108 655.2 R F1(curr)3.371 E .871(ent terminal pr)-.37 F
+(To f)108 288 T 1.462(acilitate the implementation of the user interf).7
+F 1.463(ace to job control, the operating system maintains the)-.1 F
+.871(notion of a)108 300 R F3(curr)3.371 E .871(ent terminal pr)-.37 F
 .871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .87
 (embers of this process group \(processes whose process)-5.871 F .023
 (group ID is equal to the current terminal process group ID\) recei)108
-667.2 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
-(board-generated signals such as).15 F F4(SIG-)2.523 E(INT)108 679.2 Q
-F5(.)A F0 1.347(These processes are said to be in the)5.847 F F1(for)
-3.846 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.926 E
-(kgr)-.2 E(ound)-.45 E F0 1.346(processes are those whose process)4.616
-F .145(group ID dif)108 691.2 R .145(fers from the terminal')-.25 F .146
+312 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
+(board-generated signals such as).15 F/F4 9/Times-Bold@0 SF(SIG-)2.523 E
+(INT)108 324 Q/F5 9/Times-Roman@0 SF(.)A F0 1.347
+(These processes are said to be in the)5.847 F F3(for)3.846 E -.4(eg)
+-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.926 E(kgr)-.2 E(ound)
+-.45 E F0 1.346(processes are those whose process)4.616 F .145
+(group ID dif)108 336 R .145(fers from the terminal')-.25 F .146
 (s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146
 (board-generated signals.).15 F .146(Only fore-)5.146 F .16
-(ground processes are allo)108 703.2 R .16(wed to read from or)-.25 F
-2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6
-10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter)
--2.66 F(-)-.2 E 3.051(minal. Background)108 715.2 R .551
+(ground processes are allo)108 348 R .16(wed to read from or)-.25 F 2.66
+(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 10
+/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter)
+-2.66 F(-)-.2 E 3.051(minal. Background)108 360 R .551
 (processes which attempt to read from \(write to when)3.051 F F6 .551
 (stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F
-2.098(terminal are sent a)108 727.2 R F4 2.098(SIGTTIN \(SIGTT)4.598 F
-(OU\))-.162 E F0 2.098(signal by the k)4.348 F(ernel')-.1 E 4.598(st)
--.55 G 2.098(erminal dri)-4.598 F -.15(ve)-.25 G 2.898 -.4(r, w).15 H
-2.098(hich, unless caught,).4 F(GNU Bash 4.4)72 768 Q(2016 August 26)
-142.895 E(35)192.055 E 0 Cg EP
-%%Page: 36 36
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(suspends the process.)108 84 Q 1.087(If the operating system on which)
-108 100.8 R/F1 10/Times-Bold@0 SF(bash)3.587 E F0 1.088
+.718(terminal are sent a)108 372 R F4 .718(SIGTTIN \(SIGTT)3.218 F(OU\))
+-.162 E F0 .718(signal by the k)2.968 F(ernel')-.1 E 3.217(st)-.55 G
+.717(erminal dri)-3.217 F -.15(ve)-.25 G 1.517 -.4(r, w).15 H .717
+(hich, unless caught, sus-).4 F(pends the process.)108 384 Q 1.087
+(If the operating system on which)108 400.8 R F1(bash)3.587 E F0 1.088
 (is running supports job control,)3.588 F F1(bash)3.588 E F0 1.088
-(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 112.8 S
-.302(ping the).8 F/F2 10/Times-Italic@0 SF(suspend)3.142 E F0 .302
-(character \(typically)3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301
+(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 412.8 S
+.302(ping the).8 F F3(suspend)3.142 E F0 .302(character \(typically)
+3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301
 (ontrol-Z\) while a process is running causes that process to be)-2.801
-F 2.142(stopped and returns control to)108 124.8 R F1(bash)4.642 E F0
-7.142(.T)C 2.142(yping the)-7.942 F F2 2.142(delayed suspend)4.992 F F0
+F 2.142(stopped and returns control to)108 424.8 R F1(bash)4.642 E F0
+7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0
 2.143(character \(typically)5.413 F F1(^Y)4.643 E F0 4.643(,C)C
 (ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\
 mpts to read input from the terminal, and control to be returned)108
-136.8 R(to)108 148.8 Q F1(bash)3.392 E F0 5.892(.T)C .892
+436.8 R(to)108 448.8 Q F1(bash)3.392 E F0 5.892(.T)C .892
 (he user may then manipulate the state of this job, using the)-5.892 F
 F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895
-(background, the)108 160.8 R F1(fg)3.395 E F0 .895
+(background, the)108 460.8 R F1(fg)3.395 E F0 .895
 (command to continue it in the fore)3.395 F .895(ground, or the)-.15 F
 F1(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F1(^Z)
-3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 172.8 Q .948(fect immediately)
+3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 472.8 Q .948(fect immediately)
 -.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948
 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.)
-108 184.8 Q .777(There are a number of w)108 201.6 R .777
+108 484.8 Q .777(There are a number of w)108 501.6 R .777
 (ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1
-(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 213.6
-Q F2(jobspec)A F0 3.457(\). Job)B(number)3.457 E F2(n)3.817 E F0 .957
+(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 513.6
+Q F3(jobspec)A F0 3.457(\). Job)B(number)3.457 E F3(n)3.817 E F0 .957
 (may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957
 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\
 ed to start it, or using a substring that appears in its command line.)
-108 225.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E
-F0 .59(refers to a)3.09 F(stopped)108 237.6 Q F1(ce)3.463 E F0(job)3.463
+108 525.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E
+F0 .59(refers to a)3.09 F(stopped)108 537.6 Q F1(ce)3.463 E F0(job)3.463
 E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963
 (re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963
 (reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E
 F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087
-(hand, refers to an)108 249.6 R 2.587(yj)-.15 G .087
+(hand, refers to an)108 549.6 R 2.587(yj)-.15 G .087
 (ob containing the string)-2.587 F F1(ce)2.587 E F0 .087
 (in its command line.)2.587 F .087
-(If the substring matches more than one)5.087 F(job,)108 261.6 Q F1
+(If the substring matches more than one)5.087 F(job,)108 561.6 Q F1
 (bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018
 (he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018
 (refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F
-F2(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is)
--2.518 F .495(the last job stopped while it w)108 273.6 R .495
+F3(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is)
+-2.518 F .495(the last job stopped while it w)108 573.6 R .495
 (as in the fore)-.1 F .495(ground or started in the background.)-.15 F
-(The)5.494 E F2(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494
-(may be)3.224 F .787(referenced using)108 285.6 R F1<25ad>3.287 E F0
+(The)5.494 E F3(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494
+(may be)3.224 F .787(referenced using)108 585.6 R F1<25ad>3.287 E F0
 5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F1
 (%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .788
 (can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E
-.257(output pertaining to jobs \(e.g., the output of the)108 297.6 R F1
+.257(output pertaining to jobs \(e.g., the output of the)108 597.6 R F1
 (jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa)
 -.1 G .256(ys \215agged with a).1 F F1(+)2.756 E F0(,)A .41(and the pre)
-108 309.6 R .41(vious job with a)-.25 F F1<ad>2.91 E F0 5.41(.A)C .411
+108 609.6 R .41(vious job with a)-.25 F F1<ad>2.91 E F0 5.41(.A)C .411
 (single % \(with no accompan)-2.5 F .411
 (ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E
-(rent job)108 321.6 Q(.)-.4 E .444
-(Simply naming a job can be used to bring it into the fore)108 338.4 R
+(rent job)108 621.6 Q(.)-.4 E .444
+(Simply naming a job can be used to bring it into the fore)108 638.4 R
 (ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for)
 -.15 F F1 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C
 (ringing)-2.943 E 1.472(job 1 from the background into the fore)108
-350.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473
+650.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473
 (%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F
-(equi)108 362.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1')
-.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 379.2
+(equi)108 662.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1')
+.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 679.2
 R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F
 (Normally)5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.63 G .13
 (its until it is about to print a).1 F .157
-(prompt before reporting changes in a job')108 391.2 R 2.657(ss)-.55 G
+(prompt before reporting changes in a job')108 691.2 R 2.657(ss)-.55 G
 .157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158
 (ther output.)-2.658 F .158(If the)5.158 F F1<ad62>2.658 E F0 .158
-(option to)2.658 F(the)108 403.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148
+(option to)2.658 F(the)108 703.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148
 (iltin command is enabled,).2 F F1(bash)2.648 E F0 .148
 (reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15
-(ny t)-5.147 H .147(rap on).15 F/F3 9/Times-Bold@0 SF(SIGCHLD)2.647 E F0
-.147(is e)2.397 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108
-415.2 Q(xits.)-.15 E .032(If an attempt to e)108 432 R(xit)-.15 E F1
-(bash)2.532 E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533
-(,i)-.4 G 2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033
-(shell option has been enabled)2.533 F 2.02(using the)108 444 R F1
-(shopt)4.52 E F0 -.2(bu)4.52 G 2.02
-(iltin, running\), the shell prints a w).2 F 2.019
-(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019
+(ny t)-5.147 H .147(rap on).15 F F4(SIGCHLD)2.647 E F0 .147(is e)2.397 F
+-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 715.2 Q(xits.)
+-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(37)188.455 E 0 Cg
+EP
+%%Page: 38 38
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .032
+(If an attempt to e)108 84 R(xit)-.15 E/F1 10/Times-Bold@0 SF(bash)2.532
+E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533(,i)-.4 G
+2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033
+(shell option has been enabled)2.533 F 2.02(using the)108 96 R F1(shopt)
+4.52 E F0 -.2(bu)4.52 G 2.02(iltin, running\), the shell prints a w).2 F
+2.019(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019
 (option is)4.519 F .458(enabled, lists the jobs and their statuses.)108
-456 R(The)5.458 E F1(jobs)2.958 E F0 .459
+108 R(The)5.458 E F1(jobs)2.958 E F0 .459
 (command may then be used to inspect their status.)2.958 F .459(If a)
-5.459 F .604(second attempt to e)108 468 R .604
+5.459 F .604(second attempt to e)108 120 R .604
 (xit is made without an interv)-.15 F .604
 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E
-(and an)108 480 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F4
-10.95/Times-Bold@0 SF(PR)72 496.8 Q(OMPTING)-.329 E F0 .644(When e)108
-508.8 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15
-E(,)-.65 E F1(bash)3.144 E F0 .645(displays the primary prompt)3.145 F
-F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F .315
-(and the secondary prompt)108 520.8 R F3(PS2)2.815 E F0 .315
-(when it needs more input to complete a command.)2.565 F F1(Bash)5.314 E
-F0(displays)2.814 E F1(PS0)2.814 E F0(after)2.814 E .049
-(it reads a command b)108 532.8 R .049(ut before e)-.2 F -.15(xe)-.15 G
-.049(cuting it.).15 F F1(Bash)5.049 E F0(allo)2.549 E .05
-(ws these prompt strings to be customized by inserting)-.25 F 2.5(an)108
-544.8 S(umber of backslash-escaped special characters that are decoded \
-as follo)-2.5 E(ws:)-.25 E F1(\\a)144 556.8 Q F0
-(an ASCII bell character \(07\))180 556.8 Q F1(\\d)144 568.8 Q F0
-(the date in "W)180 568.8 Q(eekday Month Date" format \(e.g., "T)-.8 E
-(ue May 26"\))-.45 E F1(\\D{)144 580.8 Q F2(format)A F1(})A F0(the)180
-592.8 Q F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime)
-3.927 E F0 1.427
+(and an)108 132 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .644
+(When the shell is w)108 148.8 R .644
+(aiting for a job or process using the)-.1 F F1(wait)3.145 E F0 -.2(bu)
+3.145 G .645(iltin, and job control is enabled,).2 F F1(wait)3.145 E F0
+(will)3.145 E .428(return when the job changes state. The)108 160.8 R F1
+<ad66>2.928 E F0 .428(option will force)2.928 F F1(wait)2.928 E F0 .428
+(to w)2.928 F .428(ait until the job or process terminates)-.1 F
+(before returning.)108 172.8 Q/F2 10.95/Times-Bold@0 SF(PR)72 189.6 Q
+(OMPTING)-.329 E F0 .644(When e)108 201.6 R -.15(xe)-.15 G .644
+(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F1(bash)3.144 E
+F0 .645(displays the primary prompt)3.145 F/F3 9/Times-Bold@0 SF(PS1)
+3.145 E F0 .645(when it is ready to read a command,)2.895 F .428
+(and the secondary prompt)108 213.6 R F3(PS2)2.928 E F0 .427
+(when it needs more input to complete a command.)2.678 F F1(Bash)5.427 E
+F0(displays)2.927 E F3(PS0)2.927 E F0(after)2.677 E .037
+(it reads a command b)108 225.6 R .037(ut before e)-.2 F -.15(xe)-.15 G
+.037(cuting it.).15 F F1(Bash)5.037 E F0(displays)2.537 E F3(PS4)2.538 E
+F0 .038(as described abo)2.288 F .338 -.15(ve b)-.15 H .038
+(efore tracing each com-).15 F 1.122(mand when the)108 237.6 R F1<ad78>
+3.622 E F0 1.122(option is enabled.)3.622 F F1(Bash)6.122 E F0(allo)
+3.622 E 1.122(ws these prompt strings to be customized by inserting a)
+-.25 F(number of backslash-escaped special characters that are decoded \
+as follo)108 249.6 Q(ws:)-.25 E F1(\\a)144 261.6 Q F0
+(an ASCII bell character \(07\))180 261.6 Q F1(\\d)144 273.6 Q F0
+(the date in "W)180 273.6 Q(eekday Month Date" format \(e.g., "T)-.8 E
+(ue May 26"\))-.45 E F1(\\D{)144 285.6 Q/F4 10/Times-Italic@0 SF(format)
+A F1(})A F0(the)180 297.6 Q F4(format)3.926 E F0 1.426(is passed to)
+3.926 F F4(strftime)3.926 E F0 1.427
 (\(3\) and the result is inserted into the prompt string; an)B(empty)180
-604.8 Q F2(format)2.5 E F0
+309.6 Q F4(format)2.5 E F0
 (results in a locale-speci\214c time representation.)2.5 E
-(The braces are required)5 E F1(\\e)144 616.8 Q F0
-(an ASCII escape character \(033\))180 616.8 Q F1(\\h)144 628.8 Q F0
-(the hostname up to the \214rst `.)180 628.8 Q(')-.7 E F1(\\H)144 640.8
-Q F0(the hostname)180 640.8 Q F1(\\j)144 652.8 Q F0
-(the number of jobs currently managed by the shell)180 652.8 Q F1(\\l)
-144 664.8 Q F0(the basename of the shell')180 664.8 Q 2.5(st)-.55 G
-(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 676.8 Q F0(ne)180 676.8 Q
-(wline)-.25 E F1(\\r)144 688.8 Q F0(carriage return)180 688.8 Q F1(\\s)
-144 700.8 Q F0(the name of the shell, the basename of)180 700.8 Q F1($0)
+(The braces are required)5 E F1(\\e)144 321.6 Q F0
+(an ASCII escape character \(033\))180 321.6 Q F1(\\h)144 333.6 Q F0
+(the hostname up to the \214rst `.)180 333.6 Q(')-.7 E F1(\\H)144 345.6
+Q F0(the hostname)180 345.6 Q F1(\\j)144 357.6 Q F0
+(the number of jobs currently managed by the shell)180 357.6 Q F1(\\l)
+144 369.6 Q F0(the basename of the shell')180 369.6 Q 2.5(st)-.55 G
+(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 381.6 Q F0(ne)180 381.6 Q
+(wline)-.25 E F1(\\r)144 393.6 Q F0(carriage return)180 393.6 Q F1(\\s)
+144 405.6 Q F0(the name of the shell, the basename of)180 405.6 Q F1($0)
 2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1
-(\\t)144 712.8 Q F0(the current time in 24-hour HH:MM:SS format)180
-712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(36)192.055 E 0 Cg
+(\\t)144 417.6 Q F0(the current time in 24-hour HH:MM:SS format)180
+417.6 Q F1(\\T)144 429.6 Q F0
+(the current time in 12-hour HH:MM:SS format)180 429.6 Q F1(\\@)144
+441.6 Q F0(the current time in 12-hour am/pm format)180 441.6 Q F1(\\A)
+144 453.6 Q F0(the current time in 24-hour HH:MM format)180 453.6 Q F1
+(\\u)144 465.6 Q F0(the username of the current user)180 465.6 Q F1(\\v)
+144 477.6 Q F0(the v)180 477.6 Q(ersion of)-.15 E F1(bash)2.5 E F0
+(\(e.g., 2.00\))2.5 E F1(\\V)144 489.6 Q F0(the release of)180 489.6 Q
+F1(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5
+(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 501.6 Q F0 .116
+(the current w)180 501.6 R .116(orking directory)-.1 F 2.616(,w)-.65 G
+(ith)-2.616 E F3($HOME)2.616 E F0(abbre)2.366 E .115
+(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F3(PR)
+180 513.6 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E
+F1(\\W)144 525.6 Q F0(the basename of the current w)180 525.6 Q
+(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0
+(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 537.6 Q F0
+(the history number of this command)180 537.6 Q F1(\\#)144 549.6 Q F0
+(the command number of this command)180 549.6 Q F1(\\$)144 561.6 Q F0
+(if the ef)180 561.6 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
+F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 573.6 Q F4
+(nnn)A F0(the character corresponding to the octal number)180 573.6 Q F4
+(nnn)2.5 E F1(\\\\)144 585.6 Q F0 2.5(ab)180 585.6 S(ackslash)-2.5 E F1
+(\\[)144 597.6 Q F0(be)180 597.6 Q 1.257(gin a sequence of non-printing\
+ characters, which could be used to embed a terminal)-.15 F
+(control sequence into the prompt)180 609.6 Q F1(\\])144 621.6 Q F0
+(end a sequence of non-printing characters)180 621.6 Q .12
+(The command number and the history number are usually dif)108 638.4 R
+.119(ferent: the history number of a command is its)-.25 F 1.585(positi\
+on in the history list, which may include commands restored from the hi\
+story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0
+(belo)108 662.4 Q .541(w\), while the command number is the position in\
+ the sequence of commands e)-.25 F -.15(xe)-.15 G .54
+(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 674.4 R
+.546(After the string is decoded, it is e)5.546 F .546
+(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F
+.352(tion, arithmetic e)108 686.4 R .352(xpansion, and quote remo)-.15 F
+-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1
+(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852
+F(description of the)108 698.4 Q F1(shopt)2.5 E F0(command under)2.5 E
+F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)
+-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(38)188.455 E 0 Cg
 EP
-%%Page: 37 37
+%%Page: 39 39
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(\\T)144 84 Q F0(the current time in 12-hour HH:MM:SS format)180 84 Q
-F1(\\@)144 96 Q F0(the current time in 12-hour am/pm format)180 96 Q F1
-(\\A)144 108 Q F0(the current time in 24-hour HH:MM format)180 108 Q F1
-(\\u)144 120 Q F0(the username of the current user)180 120 Q F1(\\v)144
-132 Q F0(the v)180 132 Q(ersion of)-.15 E F1(bash)2.5 E F0
-(\(e.g., 2.00\))2.5 E F1(\\V)144 144 Q F0(the release of)180 144 Q F1
-(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5
-(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 156 Q F0 .115(the current w)
-180 156 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F2 9
-/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116
-(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F2(PR)
-180 168 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E
-F1(\\W)144 180 Q F0(the basename of the current w)180 180 Q
-(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F2($HOME)2.5 E F0
-(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 192 Q F0
-(the history number of this command)180 192 Q F1(\\#)144 204 Q F0
-(the command number of this command)180 204 Q F1(\\$)144 216 Q F0
-(if the ef)180 216 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
-F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 228 Q/F3 10
-/Times-Italic@0 SF(nnn)A F0
-(the character corresponding to the octal number)180 228 Q F3(nnn)2.5 E
-F1(\\\\)144 240 Q F0 2.5(ab)180 240 S(ackslash)-2.5 E F1(\\[)144 252 Q
-F0(be)180 252 Q 1.257(gin a sequence of non-printing characters, which \
-could be used to embed a terminal)-.15 F
-(control sequence into the prompt)180 264 Q F1(\\])144 276 Q F0
-(end a sequence of non-printing characters)180 276 Q .119
-(The command number and the history number are usually dif)108 292.8 R
-.12(ferent: the history number of a command is its)-.25 F 1.585(positio\
-n in the history list, which may include commands restored from the his\
-tory \214le \(see)108 304.8 R F2(HIST)4.084 E(OR)-.162 E(Y)-.315 E F0
-(belo)108 316.8 Q .541(w\), while the command number is the position in\
- the sequence of commands e)-.25 F -.15(xe)-.15 G .541
-(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 328.8 R
-.546(After the string is decoded, it is e)5.546 F .546
-(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F
-.351(tion, arithmetic e)108 340.8 R .352(xpansion, and quote remo)-.15 F
--.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1
-(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852
-F(description of the)108 352.8 Q F1(shopt)2.5 E F0(command under)2.5 E
-F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)
--.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 369.6 Q F0 .151
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
+/Times-Bold@0 SF(READLINE)72 84 Q F0 .15
 (This is the library that handles reading input when using an interacti)
-108 381.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1
-(\255\255noediting)2.65 E F0(option)2.65 E 1.208(is gi)108 393.6 R -.15
-(ve)-.25 G 3.708(na).15 G 3.708(ts)-3.708 G 1.208(hell in)-3.708 F -.2
-(vo)-.4 G 3.708(cation. Line).2 F 1.208
-(editing is also used when using the)3.708 F F1<ad65>3.709 E F0 1.209
-(option to the)3.709 F F1 -.18(re)3.709 G(ad).18 E F0 -.2(bu)3.709 G
-3.709(iltin. By).2 F(def)108 405.6 Q .851
+108 96 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F/F2 10
+/Times-Bold@0 SF(\255\255noediting)2.651 E F0(option)2.651 E 1.209
+(is gi)108 108 R -.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209
+(hell in)-3.709 F -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208
+(editing is also used when using the)3.709 F F2<ad65>3.708 E F0 1.208
+(option to the)3.708 F F2 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G
+3.708(iltin. By).2 F(def)108 120 Q .851
 (ault, the line editing commands are similar to those of Emacs.)-.1 F
-3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .851
-(ace is also)-.1 F -.2(av)108 417.6 S 3.35(ailable. Line)-.05 F .85
+3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852
+(ace is also)-.1 F -.2(av)108 132 S 3.35(ailable. Line)-.05 F .85
 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the)
--3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0
-.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E
-(\(see)108 429.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS)
--.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of)
--3.263 F 3.263(fl)-.25 G .763
-(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E
-(emacs)108 441.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1
-(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 458.4 Q
+-3.35 F F2 .85(\255o emacs)3.35 F F0(or)3.35 E F2 .85(\255o vi)3.35 F F0
+.85(options to the)3.35 F F2(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E
+(\(see)108 144 Q/F3 9/Times-Bold@0 SF .762(SHELL B)3.262 F(UIL)-.09 E
+.762(TIN COMMANDS)-.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot)
+-.8 G .763(urn of)-3.263 F 3.263(fl)-.25 G .763
+(ine editing after the shell is running, use the)-3.263 F F2(+o)3.263 E
+(emacs)108 156 Q F0(or)2.5 E F2(+o vi)2.5 E F0(options to the)2.5 E F2
+(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F2(Readline Notation)87 172.8 Q
 F0 .463(In this section, the Emacs-style notation is used to denote k)
-108 470.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
-2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A
-1.153(e.g., C\255n means Control\255N.)108 482.4 R(Similarly)6.153 E(,)
--.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)
--.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152
-(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 494.4 S .83
-(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65
-(y, M)-.05 H<ad>.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33
-(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831
-(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H
-.831(his mak).65 F(es)-.1 E .6(ESC the)108 506.4 R F3 .6(meta pr)3.1 F
-(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0
-.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp)
--3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599
-(hen hold).15 F(the Control k)108 518.4 Q .3 -.15(ey w)-.1 H
-(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\))
-.65 E .619(Readline commands may be gi)108 535.2 R -.15(ve)-.25 G 3.119
-(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G
-.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho)
-108 547.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti).4 G
-3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619
+108 184.8 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
+2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1
+(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 196.8 R
+(Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153
+(ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653
+(oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke)
+108 208.8 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke)
+3.591 G 2.131 -.65(y, M)-.05 H<ad>.65 E F4(x)A F0 .831(means ESC)3.331 F
+F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13
+-.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65
+(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 220.8 R F4 .599
+(meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599
+(he combination M\255C\255)-5.599 F F4(x)A F0 .599
+(means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G
+.6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F
+(the Control k)108 232.8 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4
+(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62
+(Readline commands may be gi)108 249.6 R -.15(ve)-.25 G 3.119(nn).15 G
+(umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619
+(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108
+261.6 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G
+3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
 .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
-(ument to a command that).18 F 1.018(acts in the forw)108 559.2 R 1.018
-(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C
-1.018(auses that command to act in a backw)-3.518 F 1.019
-(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 571.2 Q
+(ument to a command that).18 F 1.019(acts in the forw)108 273.6 R 1.018
+(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
+1.018(auses that command to act in a backw)-3.518 F 1.018
+(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 285.6 Q
 (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
--.25 E -.65(w.)-.25 G .812(When a command is described as)108 588 R F3
+-.25 E -.65(w.)-.25 G .811(When a command is described as)108 302.4 R F4
 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811
-(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811
-(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3
-(yank-)-3.311 E(ing)108 600 Q F0 2.529(\). The)B .029(killed te)2.529 F
-.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3
+(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4
+(yank-)-3.312 E(ing)108 314.4 Q F0 2.529(\). The)B .029(killed te)2.529
+F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4
 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H
 .029(ills cause the te).15 F .029(xt to be accumulated into one unit,)
--.15 F .567(which can be yank)108 612 R .567(ed all at once.)-.1 F .567
-(Commands which do not kill te)5.567 F .567
+-.15 F .567(which can be yank)108 326.4 R .567(ed all at once.)-.1 F
+.567(Commands which do not kill te)5.567 F .567
 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.)
-108 624 Q F1(Readline Initialization)87 640.8 Q F0 .091(Readline is cus\
-tomized by putting commands in an initialization \214le \(the)108 652.8
-R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .092
-(name of this \214le)2.591 F .197(is tak)108 664.8 R .196(en from the v)
--.1 F .196(alue of the)-.25 F F2(INPUTRC)2.696 E F0 -.25(va)2.446 G
+108 338.4 Q F2(Readline Initialization)87 355.2 Q F0 .091(Readline is c\
+ustomized by putting commands in an initialization \214le \(the)108
+367.2 R F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091
+(name of this \214le)2.591 F .196(is tak)108 379.2 R .196(en from the v)
+-.1 F .196(alue of the)-.25 F F3(INPUTRC)2.696 E F0 -.25(va)2.446 G
 2.696(riable. If).25 F .196(that v)2.696 F .196
-(ariable is unset, the def)-.25 F .196(ault is)-.1 F F3(~/.inputr)2.696
-E(c)-.37 E F0 5.196(.W).31 G .196(hen a)-5.196 F 1.034(program which us\
+(ariable is unset, the def)-.25 F .196(ault is)-.1 F F4(~/.inputr)2.696
+E(c)-.37 E F0 5.196(.W).31 G .197(hen a)-5.196 F 1.034(program which us\
 es the readline library starts up, the initialization \214le is read, a\
-nd the k)108 676.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25
-(va)108 688.8 S 1.15(riables are set.).25 F 1.15(There are only a fe)
-6.15 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.149
-(wed in the readline initialization \214le.)-.25 F(Blank)6.149 E .736
-(lines are ignored.)108 700.8 R .737(Lines be)5.737 F .737
-(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737
-(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .737
-(indicate conditional)3.237 F 2.5(constructs. Other)108 712.8 R
+nd the k)108 391.2 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25
+(va)108 403.2 S 1.149(riables are set.).25 F 1.149(There are only a fe)
+6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15
+(wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737
+(lines are ignored.)108 415.2 R .737(Lines be)5.737 F .737
+(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737
+(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736
+(indicate conditional)3.236 F 2.5(constructs. Other)108 427.2 R
 (lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E
-(ariable settings.)-.25 E .987(The def)108 729.6 R .987(ault k)-.1 F
--.15(ey)-.1 G .987(-bindings may be changed with an).15 F F3(inputr)
-3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987
-(programs that use this library may)3.487 F(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(37)192.055 E 0 Cg EP
-%%Page: 38 38
+(ariable settings.)-.25 E .986(The def)108 444 R .986(ault k)-.1 F -.15
+(ey)-.1 G .987(-bindings may be changed with an).15 F F4(inputr)3.497 E
+(c)-.37 E F0 3.487(\214le. Other)3.797 F .987
+(programs that use this library may)3.487 F(add their o)108 456 Q
+(wn commands and bindings.)-.25 E -.15(Fo)108 472.8 S 2.5(re).15 G
+(xample, placing)-2.65 E(M\255Control\255u: uni)144 489.6 Q -.15(ve)-.25
+G(rsal\255ar).15 E(gument)-.18 E(or)108 501.6 Q(C\255Meta\255u: uni)144
+513.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 525.6
+Q F4(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G
+(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4
+(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo)
+108 542.4 R 1.261(wing symbolic character names are recognized:)-.25 F
+F4 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4
+(ESC)3.761 E F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0
+(,).73 E F4(RET)3.76 E F0(,)1.27 E F4(RETURN)108 554.4 Q F0(,)1.1 E F4
+(SPC)2.5 E F0(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G
+(nd)-2.5 E F4 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
+(In addition to command names, readline allo)108 571.2 R .209(ws k)-.25
+F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
+(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
+-.1 H(s).15 E(pressed \(a)108 583.2 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2
+(Readline K)87 600 Q(ey Bindings)-.25 E F0 .366
+(The syntax for controlling k)108 612 R .666 -.15(ey b)-.1 H .366
+(indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366
+(\214le is simple.)3.176 F .366(All that is required is the name of the)
+5.366 F .263(command or the te)108 624 R .264(xt of a macro and a k)-.15
+F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.).15 F
+.264(The name may be speci-)5.264 F .853(\214ed in one of tw)108 636 R
+3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H
+.853(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4
+(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15
+F -.15(ey)-.1 G(sequence.)108 648 Q .16(When using the form)108 664.8 R
+F2 -.1(ke)2.66 G(yname).1 E F0(:)A F4(function\255name).833 E F0(or)2.66
+E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161
+(is the name of a k)2.84 F .461 -.15(ey s)-.1 H .161(pelled out in Eng-)
+.15 F 2.5(lish. F)108 676.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni)
+144 700.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E
+(Meta-Rubout: backw)144 712.8 Q(ard-kill-w)-.1 E(ord)-.1 E
+(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(39)188.455 E 0 Cg EP
+%%Page: 40 40
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(add their o)108 84
-Q(wn commands and bindings.)-.25 E -.15(Fo)108 100.8 S 2.5(re).15 G
-(xample, placing)-2.65 E(M\255Control\255u: uni)144 117.6 Q -.15(ve)-.25
-G(rsal\255ar).15 E(gument)-.18 E(or)108 129.6 Q(C\255Meta\255u: uni)144
-141.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 153.6
-Q/F1 10/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G
-(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G
-(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument)
--.37 E F0(.).68 E 1.26(The follo)108 170.4 R 1.261
-(wing symbolic character names are recognized:)-.25 F F1 -.4(RU)3.761 G
-(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1(ESC)3.761 E F0(,).72
-E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0(,).73 E F1(RET)3.761 E
-F0(,)1.27 E F1(RETURN)108 182.4 Q F0(,)1.1 E F1(SPC)2.5 E F0(,).72 E F1
-(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F1 -.5(TA)2.5 G
-(B).5 E F0(.).27 E .209(In addition to command names, readline allo)108
-199.2 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G
-2.709(eb)-2.709 G .209(ound to a string that is inserted when the k)
--2.709 F .509 -.15(ey i)-.1 H(s).15 E(pressed \(a)108 211.2 Q F1(macr)
-2.5 E(o)-.45 E F0(\).)A/F2 10/Times-Bold@0 SF(Readline K)87 228 Q
-(ey Bindings)-.25 E F0 .366(The syntax for controlling k)108 240 R .666
--.15(ey b)-.1 H .366(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0
-.366(\214le is simple.)3.176 F .366
-(All that is required is the name of the)5.366 F .264(command or the te)
-108 252 R .264(xt of a macro and a k)-.15 F .564 -.15(ey s)-.1 H .264
-(equence to which it should be bound.).15 F .263(The name may be speci-)
-5.264 F .853(\214ed in one of tw)108 264 R 3.353(ow)-.1 G .853
-(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853
-(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr)
-3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15
-(ey)-.1 G(sequence.)108 276 Q .161(When using the form)108 292.8 R F2
--.1(ke)2.661 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)2.661
-E F1(macr)2.661 E(o)-.45 E F0(,)A F1 -.1(ke)2.661 G(yname)-.2 E F0 .16
-(is the name of a k)2.84 F .46 -.15(ey s)-.1 H .16(pelled out in Eng-)
-.15 F 2.5(lish. F)108 304.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni)
-144 328.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E
-(Meta-Rubout: backw)144 340.8 Q(ard-kill-w)-.1 E(ord)-.1 E
-(Control-o: "> output")144 352.8 Q .698(In the abo)108 369.6 R .998 -.15
-(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698
-(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698
-(is bound to the func-)3.728 F(tion)108 381.6 Q F2
-(backward\255kill\255w)2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1
-(C\255o)2.599 E F0 .258(is bound to run the macro e)2.939 F .258
-(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
-393.6 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .055(In the second form,)108 410.4 R F2("k)2.555
-E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr)
-2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056
-(fers from)-.25 F F2 -.1(ke)2.556 G(yname).1 E F0(abo)2.556 E .356 -.15
-(ve i)-.15 H 2.556(nt).15 G .056(hat strings)-2.556 F 1.284
-(denoting an entire k)108 422.4 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .699(In the abo)
+108 84 R .998 -.15(ve ex)-.15 H(ample,).15 E/F1 10/Times-Italic@0 SF
+(C\255u)3.038 E F0 .698(is bound to the function)3.448 F/F2 10
+/Times-Bold@0 SF(uni)3.198 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E
+F0(,)A F1(M\255DEL)3.878 E F0 .698(is bound to the func-)3.728 F(tion)
+108 96 Q F2(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)
+-2.758 E F1(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F
+.259(xpressed on the right hand side \(that is, to)-.15 F(insert the te)
+108 108 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
+(into the line\).)2.5 E .056(In the second form,)108 124.8 R F2("k)2.556
+E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
+2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
+(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
+(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
+(denoting an entire k)108 136.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
 ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .385(GNU Emacs style k)108 434.4 R .685 -.15(ey e)-.1 H
-.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .386
-(xample, b)-.15 F .386(ut the symbolic character names)-.2 F
-(are not recognized.)108 446.4 Q("\\C\255u": uni)144 470.4 Q -.15(ve)
+(Some)6.284 E .386(GNU Emacs style k)108 148.8 R .686 -.15(ey e)-.1 H
+.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
+(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
+(are not recognized.)108 160.8 Q("\\C\255u": uni)144 184.8 Q -.15(ve)
 -.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 482.4 Q
-("\\e[11~": "Function K)144 494.4 Q .3 -.15(ey 1)-.25 H(").15 E .315
-(In this e)108 511.2 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag)
-3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1
+("\\C\255x\\C\255r": re\255read\255init\255\214le)144 196.8 Q
+("\\e[11~": "Function K)144 208.8 Q .3 -.15(ey 1)-.25 H(").15 E .314
+(In this e)108 225.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag)
+3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1
 G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0
-.314(is bound to the func-)3.544 F(tion)108 523.2 Q F2 -.18(re)2.5 G
+.315(is bound to the func-)3.545 F(tion)108 237.6 Q F2 -.18(re)2.5 G
 <ad72>.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1
 (ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3
 (Function Key 1)2.5 E F0(.)A
-(The full set of GNU Emacs style escape sequences is)108 540 Q F2
-<5c43ad>144 552 Q F0(control pre\214x)180 552 Q F2<5c4dad>144 564 Q F0
-(meta pre\214x)180 564 Q F2(\\e)144 576 Q F0(an escape character)180 576
-Q F2(\\\\)144 588 Q F0(backslash)180 588 Q F2(\\")144 600 Q F0
-(literal ")180 600 Q F2<5c08>144 612 Q F0(literal \010)180 612 Q(In add\
-ition to the GNU Emacs style escape sequences, a second set of backslas\
-h escapes is a)108 628.8 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 640.8
-Q F0(alert \(bell\))180 640.8 Q F2(\\b)144 652.8 Q F0(backspace)180
-652.8 Q F2(\\d)144 664.8 Q F0(delete)180 664.8 Q F2(\\f)144 676.8 Q F0
-(form feed)180 676.8 Q F2(\\n)144 688.8 Q F0(ne)180 688.8 Q(wline)-.25 E
-F2(\\r)144 700.8 Q F0(carriage return)180 700.8 Q F2(\\t)144 712.8 Q F0
-(horizontal tab)180 712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895
-E(38)192.055 E 0 Cg EP
-%%Page: 39 39
+(The full set of GNU Emacs style escape sequences is)108 254.4 Q F2
+<5c43ad>144 266.4 Q F0(control pre\214x)180 266.4 Q F2<5c4dad>144 278.4
+Q F0(meta pre\214x)180 278.4 Q F2(\\e)144 290.4 Q F0
+(an escape character)180 290.4 Q F2(\\\\)144 302.4 Q F0(backslash)180
+302.4 Q F2(\\")144 314.4 Q F0(literal ")180 314.4 Q F2<5c08>144 326.4 Q
+F0(literal \010)180 326.4 Q(In addition to the GNU Emacs style escape s\
+equences, a second set of backslash escapes is a)108 343.2 Q -.25(va)-.2
+G(ilable:).25 E F2(\\a)144 355.2 Q F0(alert \(bell\))180 355.2 Q F2(\\b)
+144 367.2 Q F0(backspace)180 367.2 Q F2(\\d)144 379.2 Q F0(delete)180
+379.2 Q F2(\\f)144 391.2 Q F0(form feed)180 391.2 Q F2(\\n)144 403.2 Q
+F0(ne)180 403.2 Q(wline)-.25 E F2(\\r)144 415.2 Q F0(carriage return)180
+415.2 Q F2(\\t)144 427.2 Q F0(horizontal tab)180 427.2 Q F2(\\v)144
+439.2 Q F0 -.15(ve)180 439.2 S(rtical tab).15 E F2(\\)144 451.2 Q F1
+(nnn)A F0(the eight-bit character whose v)180 451.2 Q
+(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0
+(\(one to three digits\))2.5 E F2(\\x)144 463.2 Q F1(HH)A F0
+(the eight-bit character whose v)180 463.2 Q(alue is the he)-.25 E
+(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
+-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142(When entering the te)108
+480 R 1.141(xt of a macro, single or double quotes must be used to indi\
+cate a macro de\214nition.)-.15 F .089(Unquoted te)108 492 R .089
+(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089
+F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F -.15(ve)
+-.15 G(are e)108 504 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E
+2.5(yo)-.15 G(ther character in the macro te)-2.5 E
+(xt, including " and \010.)-.15 E F2(Bash)108 520.8 Q F0(allo)2.93 E .43
+(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
+(indings to be displayed or modi\214ed with the).15 F F2(bind)2.929 E F0
+-.2(bu)2.929 G .429(iltin command.).2 F .045
+(The editing mode may be switched during interacti)108 532.8 R .345 -.15
+(ve u)-.25 H .046(se by using the).15 F F2<ad6f>2.546 E F0 .046
+(option to the)2.546 F F2(set)2.546 E F0 -.2(bu)2.546 G .046
+(iltin command).2 F(\(see)108 544.8 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E
+(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2
+(Readline V)87 561.6 Q(ariables)-.92 E F0 .044(Readline has v)108 573.6
+R .043(ariables that can be used to further customize its beha)-.25 F
+(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043
+(riable may be set in the).25 F F1(inpu-)2.553 E(tr)108 585.6 Q(c)-.37 E
+F0(\214le with a statement of the form)2.81 E F2(set)144 602.4 Q F1
+(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108
+619.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F
+(alues)-.25 E F2(On)3.29 E F0(or)3.29 E F2(Off)3.29 E F0 .79
+(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)
+5.79 E .449(nized v)108 631.2 R .448(ariable names are ignored.)-.25 F
+.448(When a v)5.448 F .448(ariable v)-.25 F .448
+(alue is read, empty or null v)-.25 F .448(alues, "on" \(case-insensi-)
+-.25 F(ti)108 643.2 Q -.15(ve)-.25 G .467(\), and "1" are equi).15 F
+-.25(va)-.25 G .468(lent to).25 F F2(On)2.968 E F0 5.468(.A)C .468
+(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468
+(lent to).25 F F2(Off)2.968 E F0 5.468(.T)C .468(he v)-5.468 F .468
+(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 655.2 S(lues are:)
+.25 E F2(bell\255style \(audible\))108 672 Q F0 .011
+(Controls what happens when readline w)144 684 R .011
+(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F2(none)2.51
+E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94
+(rings the bell.)144 696 R .94(If set to)5.94 F F2(visible)3.44 E F0
+3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
+-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A
+(readline attempts to ring the terminal')144 708 Q 2.5(sb)-.55 G(ell.)
+-2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(40)188.455 E 0 Cg
+EP
+%%Page: 41 41
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(\\v)144 84 Q F0 -.15(ve)180 84 S(rtical tab).15 E F1(\\)144 96 Q/F2
-10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 96 Q
-(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
-(\(one to three digits\))2.5 E F1(\\x)144 108 Q F2(HH)A F0
-(the eight-bit character whose v)180 108 Q(alue is the he)-.25 E
-(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.141(When entering the te)108
-124.8 R 1.141(xt of a macro, single or double quotes must be used to in\
-dicate a macro de\214nition.)-.15 F .09(Unquoted te)108 136.8 R .09
-(xt is assumed to be a function name.)-.15 F .089(In the macro body)
-5.089 F 2.589(,t)-.65 G .089(he backslash escapes described abo)-2.589 F
--.15(ve)-.15 G(are e)108 148.8 Q 2.5(xpanded. Backslash)-.15 F
-(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E
-(xt, including " and \010.)-.15 E F1(Bash)108 165.6 Q F0(allo)2.929 E
-.429(ws the current readline k)-.25 F .729 -.15(ey b)-.1 H .429
-(indings to be displayed or modi\214ed with the).15 F F1(bind)2.93 E F0
--.2(bu)2.93 G .43(iltin command.).2 F .046
-(The editing mode may be switched during interacti)108 177.6 R .346 -.15
-(ve u)-.25 H .046(se by using the).15 F F1<ad6f>2.545 E F0 .045
-(option to the)2.545 F F1(set)2.545 E F0 -.2(bu)2.545 G .045
-(iltin command).2 F(\(see)108 189.6 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E
-(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1
-(Readline V)87 206.4 Q(ariables)-.92 E F0 .043(Readline has v)108 218.4
-R .043(ariables that can be used to further customize its beha)-.25 F
-(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043
-(riable may be set in the).25 F F2(inpu-)2.554 E(tr)108 230.4 Q(c)-.37 E
-F0(\214le with a statement of the form)2.81 E F1(set)144 247.2 Q F2
-(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108
-264 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues)
--.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29
-F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .448(nized v)
-108 276 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F
-.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .449
-(alues, "on" \(case-insensi-)-.25 F(ti)108 288 Q -.15(ve)-.25 G .468
-(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On)
-2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25
-F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467
-(he v)-5.468 F .467(ariables and their def)-.25 F(ault)-.1 E -.25(va)108
-300 S(lues are:).25 E F1(bell\255style \(audible\))108 316.8 Q F0 .01
-(Controls what happens when readline w)144 328.8 R .011
-(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none)
-2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
-.94(rings the bell.)144 340.8 R .94(If set to)5.94 F F1(visible)3.44 E
-F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25
-(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0
-(,)A(readline attempts to ring the terminal')144 352.8 Q 2.5(sb)-.55 G
-(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 364.8 Q F0
-.055(If set to)144 376.8 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\
-empts to bind the control characters treated specially by the k)-2.555 F
-(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 388.8 Q -.15
-(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)
--.25 G(lents.).25 E F1(blink\255matching\255par)108 400.8 Q(en \(Off\))
--.18 E F0 .21(If set to)144 412.8 R F1(On)2.71 E F0 2.71(,r)C .21
+SF(bind\255tty\255special\255chars \(On\))108 84 Q F0 .056(If set to)144
+96 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempts to bind the cont\
+rol characters treated specially by the k)-2.556 F(ernel')-.1 E 2.555
+(st)-.55 G(ermi-)-2.555 E(nal dri)144 108 Q -.15(ve)-.25 G 2.5(rt).15 G
+2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1
+(blink\255matching\255par)108 120 Q(en \(Off\))-.18 E F0 .21(If set to)
+144 132 R F1(On)2.71 E F0 2.71(,r)C .21
 (eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21
 (he cursor to an opening parenthesis when a closing).15 F
-(parenthesis is inserted.)144 424.8 Q F1(color)108 436.8 Q
+(parenthesis is inserted.)144 144 Q F1(color)108 156 Q
 (ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
-144 448.8 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\
-eadline displays the common pre\214x of the set of possible)-3.015 F
-2.936(completions using a dif)144 460.8 R 2.936(ferent color)-.25 F
-7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935
-(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 472.8 Q
-F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 484.8 Q
-(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 496.8 R F1(On)4.079 E
-F0 4.079(,r)C 1.579(eadline displays possible completions using dif)
--4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5
-(type. The)144 508.8 R(color de\214nitions are tak)2.5 E(en from the v)
--.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4
-E(ariable.)-.25 E F1(comment\255begin \(`)108 520.8 Q(`#')-.63 E('\))
--.63 E F0 .885(The string that is inserted when the readline)144 532.8 R
-F1(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G
-3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 544.8 Q F1
+144 168 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\
+dline displays the common pre\214x of the set of possible)-3.015 F 2.935
+(completions using a dif)144 180 R 2.935(ferent color)-.25 F 7.936(.T)
+-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936
+(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 192 Q F0
+(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 204 Q
+(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 216 R F1(On)4.08 E F0
+4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F
+1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144
+228 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)
+-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E
+F1(comment\255begin \(`)108 240 Q(`#')-.63 E('\))-.63 E F0 .884
+(The string that is inserted when the readline)144 252 R F1
+(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G
+3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 264 Q F1
 (M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0
-(in vi command mode.)2.5 E F1(completion\255display\255width \(-1\))108
-556.8 Q F0 1.453(The number of screen columns used to display possible \
-matches when performing completion.)144 568.8 R .194(The v)144 580.8 R
+(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\))
+108 276 Q F0 1.453(The number of screen columns used to display possibl\
+e matches when performing completion.)144 288 R .193(The v)144 300 R
 .193(alue is ignored if it is less than 0 or greater than the terminal \
-screen width.)-.25 F 2.693(Av)5.193 G .193(alue of 0 will)-2.943 F
-(cause matches to be displayed one per line.)144 592.8 Q(The def)5 E
-(ault v)-.1 E(alue is -1.)-.25 E F1(completion\255ignor)108 604.8 Q
-(e\255case \(Off\))-.18 E F0(If set to)144 616.8 Q F1(On)2.5 E F0 2.5
-(,r)C(eadline performs \214lename matching and completion in a case\255\
-insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
-(completion\255map\255case \(Off\))108 628.8 Q F0 .093(If set to)144
-640.8 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)
-2.593 E(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F
-.093(yphens \()-.05 F F2<ad>A F0 2.593(\)a)C .094(nd underscores)-2.593
-F(\()144 652.8 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va)
--.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25
-H(lename matching and completion.).15 E F1(completion\255pr)108 664.8 Q
-(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\
-ers of the common pre\214x of a list of possible completions that is di\
-splayed)144 676.8 R 1.274(without modi\214cation.)144 688.8 R 1.274
-(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x)
--.25 F 1.275(es longer than this)-.15 F -.25(va)144 700.8 S(lue are rep\
-laced with an ellipsis when displaying possible completions.).25 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(39)192.055 E 0 Cg EP
-%%Page: 40 40
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(completion\255query\255items \(100\))108 84 Q F0 .53
-(This determines when the user is queried about vie)144 96 R .529
-(wing the number of possible completions gen-)-.25 F .56(erated by the)
-144 108 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F
-.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v)
--.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 120 R
+screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F
+(cause matches to be displayed one per line.)144 312 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 324 Q
+(e\255case \(Off\))-.18 E F0(If set to)144 336 Q F1(On)2.5 E F0 2.5(,r)C
+(eadline performs \214lename matching and completion in a case\255insen\
+siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
+(completion\255map\255case \(Off\))108 348 Q F0 .094(If set to)144 360 R
+F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E
+(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093
+(yphens \()-.05 F/F2 10/Times-Italic@0 SF<ad>A F0 2.593(\)a)C .093
+(nd underscores)-2.593 F(\()144 372 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
+(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E
+.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1
+(completion\255pr)108 384 Q(e\214x\255display\255length \(0\))-.18 E F0
+.829(The length in characters of the common pre\214x of a list of possi\
+ble completions that is displayed)144 396 R 1.275
+(without modi\214cation.)144 408 R 1.275(When set to a v)6.275 F 1.274
+(alue greater than zero, common pre\214x)-.25 F 1.274
+(es longer than this)-.15 F -.25(va)144 420 S(lue are replaced with an \
+ellipsis when displaying possible completions.).25 E F1
+(completion\255query\255items \(100\))108 432 Q F0 .529
+(This determines when the user is queried about vie)144 444 R .53
+(wing the number of possible completions gen-)-.25 F .561(erated by the)
+144 456 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061
+F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v)
+-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 468 R
 .783(If the number of possible completions is greater than or equal to \
-the v)5.783 F .782(alue of this)-.25 F -.25(va)144 132 S .237
+the v)5.782 F .783(alue of this)-.25 F -.25(va)144 480 S .237
 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie)
 -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G
-.237(re simply listed)-2.737 F(on the terminal.)144 144 Q F1(con)108 156
-Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 168 R F1(On)
-3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 G .613
-(rt characters with the eighth bit set to an ASCII k).15 F .912 -.15
-(ey s)-.1 H .612(equence by).15 F .541
+.237(re simply listed)-2.737 F(on the terminal.)144 492 Q F1(con)108 504
+Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 516 R F1(On)
+3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613
+(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15
+(ey s)-.1 H .613(equence by).15 F .541
 (stripping the eighth bit and pre\214xing an escape character \(in ef)
-144 180 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF
-.542(meta pr)3.042 F(e-)-.37 E<8c78>144 192 Q F0 2.5(\). The)B(def)2.5 E
-(ault is)-.1 E F2(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E
-F2(Of)2.5 E(f)-.18 E F0(if the locale contains eight-bit characters.)2.5
-E F1(disable\255completion \(Off\))108 204 Q F0 .038(If set to)144 216 R
-F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038
+144 528 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F
+(e-)-.37 E<8c78>144 540 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2
+(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f)
+-.18 E F0(if the locale contains eight-bit characters.)2.5 E F1
+(disable\255completion \(Off\))108 552 Q F0 .038(If set to)144 564 R F1
+(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038
 (ord completion.)-.1 F .038
 (Completion characters will be inserted into the)5.038 F(line as if the)
-144 228 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
-(.)A F1(echo\255contr)108 240 Q(ol\255characters \(On\))-.18 E F0 1.21
-(When set to)144 252 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211
-(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211
+144 576 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
+(.)A F1(echo\255contr)108 588 Q(ol\255characters \(On\))-.18 E F0 1.211
+(When set to)144 600 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G
+1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21
 (upport it, readline echoes a character)-3.711 F
-(corresponding to a signal generated from the k)144 264 Q -.15(ey)-.1 G
-(board.).15 E F1(editing\255mode \(emacs\))108 276 Q F0 .142
-(Controls whether readline be)144 288 R .141(gins with a set of k)-.15 F
-.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0
-(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0
-(can be set to either)144 300 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A F1(enable\255brack)108 312 Q(eted\255paste \(Off\))-.1 E F0 1.221
-(When set to)144 324 R F1(On)3.721 E F0 3.721(,r)C 1.221
+(corresponding to a signal generated from the k)144 612 Q -.15(ey)-.1 G
+(board.).15 E F1(editing\255mode \(emacs\))108 624 Q F0 .141
+(Controls whether readline be)144 636 R .141(gins with a set of k)-.15 F
+.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0
+(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0
+(can be set to either)144 648 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
+F0(.)A F1(emacs\255mode\255string \(@\))108 660 Q F0 .518(If the)144 672
+R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G
+.517(riable is enabled, this string is displayed immediately before the)
+.25 F .622
+(last line of the primary prompt when emacs editing mode is acti)144 684
+R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F
+.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 696 S 3.34(yb)-.05 G
+.839(inding, so the standard set of meta- and control pre\214x)-3.34 F
+.839(es and backslash escape sequences is)-.15 F -.2(av)144 708 S 2.798
+(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298
+(gin and end sequences of non-printing characters, which)-.15 F
+(can be used to embed a terminal control sequence into the mode string.)
+144 720 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(41)188.455 E 0
+Cg EP
+%%Page: 42 42
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(enable\255brack)108 84 Q(eted\255paste \(Off\))-.1 E F0 1.222
+(When set to)144 96 R F1(On)3.721 E F0 3.721(,r)C 1.221
 (eadline will con\214gure the terminal in a w)-3.721 F 1.221
 (ay that will enable it to insert each)-.1 F .353
-(paste into the editing b)144 336 R(uf)-.2 E .353(fer as a single strin\
-g of characters, instead of treating each character as if)-.25 F .543
-(it had been read from the k)144 348 R -.15(ey)-.1 G 3.043(board. This)
-.15 F .543(can pre)3.043 F -.15(ve)-.25 G .544
+(paste into the editing b)144 108 R(uf)-.2 E .353(fer as a single strin\
+g of characters, instead of treating each character as if)-.25 F .544
+(it had been read from the k)144 120 R -.15(ey)-.1 G 3.043(board. This)
+.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543
 (nt pasted characters from being interpreted as).15 F(editing commands.)
-144 360 Q F1(enable\255k)108 372 Q(eypad \(Off\))-.1 E F0 .893
-(When set to)144 384 R F1(On)3.393 E F0 3.393(,r)C .893
+144 132 Q F1(enable\255k)108 144 Q(eypad \(Off\))-.1 E F0 .892
+(When set to)144 156 R F1(On)3.393 E F0 3.393(,r)C .893
 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G
-.893(pad when it is called.).15 F .892(Some sys-)5.893 F
-(tems need this to enable the arro)144 396 Q 2.5(wk)-.25 G -.15(ey)-2.6
-G(s.).15 E F1(enable\255meta\255k)108 408 Q(ey \(On\))-.1 E F0 .64
-(When set to)144 420 R F1(On)3.14 E F0 3.14(,r)C .64
+.893(pad when it is called.).15 F .893(Some sys-)5.893 F
+(tems need this to enable the arro)144 168 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F1(enable\255meta\255k)108 180 Q(ey \(On\))-.1 E F0 .64
+(When set to)144 192 R F1(On)3.14 E F0 3.14(,r)C .64
 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64
 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64
-(he terminal claims to support).15 F(when it is called.)144 432 Q
+(he terminal claims to support).15 F(when it is called.)144 204 Q
 (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H
 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1
-(expand\255tilde \(Off\))108 444 Q F0(If set to)144 456 Q F1(On)2.5 E F0
+(expand\255tilde \(Off\))108 216 Q F0(If set to)144 228 Q F1(On)2.5 E F0
 2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w)
--.15 E(ord completion.)-.1 E F1(history\255pr)108 468 Q(eser)-.18 E -.1
-(ve)-.1 G(\255point \(Off\)).1 E F0 1.339(If set to)144 480 R F1(On)
-3.839 E F0 3.839(,t)C 1.338(he history code attempts to place point at \
-the same location on each history line)-3.839 F(retrie)144 492 Q -.15
+-.15 E(ord completion.)-.1 E F1(history\255pr)108 240 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 252 R F1(On)
+3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \
+the same location on each history line)-3.838 F(retrie)144 264 Q -.15
 (ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G
 (ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1
-(history\255size \(unset\))108 504 Q F0 .948
-(Set the maximum number of history entries sa)144 516 R -.15(ve)-.2 G
-3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .949
-(If set to zero, an)5.948 F 3.449(ye)-.15 G(xisting)-3.599 E .483
-(history entries are deleted and no ne)144 528 R 2.983(we)-.25 G .483
-(ntries are sa)-2.983 F -.15(ve)-.2 G 2.983(d. If).15 F .482(set to a v)
-2.983 F .482(alue less than zero, the num-)-.25 F .277
-(ber of history entries is not limited.)144 540 R .277(By def)5.277 F
-.278(ault, the number of history entries is set to the v)-.1 F .278
-(alue of)-.25 F(the)144 552 Q F1(HISTSIZE)3.411 E F0 .911(shell v)3.411
-F 3.411(ariable. If)-.25 F .911(an attempt is made to set)3.411 F F2
-(history\255size)3.41 E F0 .91(to a non-numeric v)3.41 F(alue,)-.25 E
-(the maximum number of history entries will be set to 500.)144 564 Q F1
-(horizontal\255scr)108 576 Q(oll\255mode \(Off\))-.18 E F0 .448
-(When set to)144 588 R F1(On)2.948 E F0 2.948(,m)C(ak)-2.948 E .448
-(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449
+(history\255size \(unset\))108 276 Q F0 .949
+(Set the maximum number of history entries sa)144 288 R -.15(ve)-.2 G
+3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948
+(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482
+(history entries are deleted and no ne)144 300 R 2.982(we)-.25 G .483
+(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v)
+2.983 F .483(alue less than zero, the num-)-.25 F .278
+(ber of history entries is not limited.)144 312 R .277(By def)5.278 F
+.277(ault, the number of history entries is set to the v)-.1 F .277
+(alue of)-.25 F(the)144 324 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F
+3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10
+/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v)
+3.411 F(alue,)-.25 E
+(the maximum number of history entries will be set to 500.)144 336 Q F1
+(horizontal\255scr)108 348 Q(oll\255mode \(Off\))-.18 E F0 .449
+(When set to)144 360 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
+(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448
 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\
  when it becomes longer than the screen width rather than wrapping to a\
- ne)144 600 R(w)-.25 E(line.)144 612 Q F1(input\255meta \(Off\))108 624
-Q F0 1.061(If set to)144 636 R F1(On)3.561 E F0 3.561(,r)C 1.062(eadlin\
+ ne)144 372 R(w)-.25 E(line.)144 384 Q F1(input\255meta \(Off\))108 396
+Q F0 1.062(If set to)144 408 R F1(On)3.562 E F0 3.562(,r)C 1.061(eadlin\
 e will enable eight-bit input \(that is, it will not strip the eighth b\
-it from the)-3.561 F .336(characters it reads\), re)144 648 R -.05(ga)
+it from the)-3.562 F .335(characters it reads\), re)144 420 R -.05(ga)
 -.15 G .335(rdless of what the terminal claims it can support.).05 F
-.335(The name)5.335 F F1(meta\255\215ag)2.835 E F0(is)2.835 E 2.864(as)
-144 660 S(ynon)-2.864 E .364(ym for this v)-.15 F 2.864(ariable. The)
+.336(The name)5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)
+144 432 S(ynon)-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)
 -.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864
-(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .365
-(if the locale contains)2.865 F(eight-bit characters.)144 672 Q F1
-(isear)108 684 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
+(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364
+(if the locale contains)2.864 F(eight-bit characters.)144 444 Q F1
+(isear)108 456 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
 -.63 E F0 .439(The string of characters that should terminate an increm\
-ental search without subsequently e)144 696 R -.15(xe)-.15 G(cut-).15 E
-.934(ing the character as a command.)144 708 R .935(If this v)5.935 F
-.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935
-(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 720 Q F2
-(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(40)192.055 E 0 Cg EP
-%%Page: 41 41
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.1(ke)108 84 S(ymap \(emacs\)).1 E F0 2.021
-(Set the current readline k)144 96 R -.15(ey)-.1 G 4.521(map. The).15 F
-2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021
-(map names is).15 F/F2 10/Times-Italic@0 SF 2.02
-(emacs, emacs\255standar)4.52 F(d,)-.37 E .068
-(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 108 R F0 2.568(,a)C
+ental search without subsequently e)144 468 R -.15(xe)-.15 G(cut-).15 E
+.935(ing the character as a command.)144 480 R .935(If this v)5.935 F
+.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
+(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 492 Q F2
+(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke)
+108 504 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 516
+R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021
+(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021
+(emacs, emacs\255standar)4.521 F(d,)-.37 E .069
+(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 528 R F0 2.568(,a)C
 (nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068
 (is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command)
-2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 120 R -.25(va)-.25
-G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C
+2.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 540 R -.25(va)-.25
+G 1.543(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C
 1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs)
 4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1
-(editing\255mode)4.043 E F0(also)4.043 E(af)144 132 Q(fects the def)-.25
-E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1
-(emacs\255mode\255string \(@\))108 144 Q F0 .051(This string is display\
-ed immediately before the last line of the primary prompt when emacs ed\
-iting)144 156 R .293(mode is acti)144 168 R -.15(ve)-.25 G 5.293(.T).15
-G .293(he v)-5.293 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793
-(eak)-.1 G .593 -.15(ey b)-2.893 H .293
-(inding, so the standard set of meta- and control).15 F(pre\214x)144 180
-Q .601(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101
-(ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .602
-(gin and end)-.15 F .019(sequences of non-printing characters, which ca\
-n be used to embed a terminal control sequence into)144 192 R
-(the mode string.)144 204 Q F1 -.1(ke)108 216 S(yseq\255timeout \(500\))
-.1 E F0 .367(Speci\214es the duration)144 228 R F2 -.37(re)2.867 G
-(adline).37 E F0 .367(will w)2.867 F .367
-(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s)
--.1 H(equence).15 E 1.356(\(one that can form a complete k)144 240 R
+(editing\255mode)4.044 E F0(also)4.044 E(af)144 552 Q(fects the def)-.25
+E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 564 S
+(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 576 R
+F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
+(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s)
+-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 588 R
 1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar)
--.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.355(an tak)-3.856 F 3.855(ea)
--.1 G(dditional)-3.855 E .32(input to complete a longer k)144 252 R .62
+-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea)
+-.1 G(dditional)-3.856 E .32(input to complete a longer k)144 600 R .62
 -.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F
 -.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re)
-2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 264 R .907
+2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 612 R .907
 (ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25
-(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .906
-(alue of)-.25 F .05(1000 means that)144 276 R F2 -.37(re)2.55 G(adline)
+(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907
+(alue of)-.25 F .05(1000 means that)144 624 R F2 -.37(re)2.55 G(adline)
 .37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1
 F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
-(less than or equal to zero, or to a non-numeric v)144 288 R(alue,)-.25
+(less than or equal to zero, or to a non-numeric v)144 636 R(alue,)-.25
 E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
-(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed)
--2.551 E(to decide which k)144 300 Q .3 -.15(ey s)-.1 H
-(equence to complete.).15 E F1(mark\255dir)108 312 Q(ectories \(On\))
--.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,c)C
+(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed)
+-2.552 E(to decide which k)144 648 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E F1(mark\255dir)108 660 Q(ectories \(On\))
+-.18 E F0(If set to)144 672 Q F1(On)2.5 E F0 2.5(,c)C
 (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.)
-.15 E F1(mark\255modi\214ed\255lines \(Off\))108 336 Q F0(If set to)144
-348 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+.15 E F1(mark\255modi\214ed\255lines \(Off\))108 684 Q F0(If set to)144
+696 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
 -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1
-(*)A F0(\).)A F1(mark\255symlink)108 360 Q(ed\255dir)-.1 E
-(ectories \(Off\))-.18 E F0 .175(If set to)144 372 R F1(On)2.675 E F0
-2.675(,c)C .175
+(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(42)188.455
+E 0 Cg EP
+%%Page: 43 43
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(mark\255symlink)108 84 Q(ed\255dir)-.1 E(ectories \(Off\))-.18 E F0
+.175(If set to)144 96 R F1(On)2.675 E F0 2.675(,c)C .175
 (ompleted names which are symbolic links to directories ha)-2.675 F .475
--.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 384
+-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 108
 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 396 Q F0 .193(This v)144 408 R
-.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192
-(auses readline to match \214les whose names be)-2.693 F .192
-(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456
-(\214les\) when performing \214lename completion.)144 420 R .456
+(match\255hidden\255\214les \(On\))108 120 Q F0 .192(This v)144 132 R
+.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192
+(auses readline to match \214les whose names be)-2.692 F .193
+(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457
+(\214les\) when performing \214lename completion.)144 144 R .456
 (If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
--2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F
-(user in the \214lename to be completed.)144 432 Q F1
-(menu\255complete\255display\255pr)108 444 Q(e\214x \(Off\))-.18 E F0
-1.586(If set to)144 456 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\
+-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F
+(user in the \214lename to be completed.)144 156 Q F1
+(menu\255complete\255display\255pr)108 168 Q(e\214x \(Off\))-.18 E F0
+1.585(If set to)144 180 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
 ion displays the common pre\214x of the list of possible completions)
--4.086 F(\(which may be empty\) before c)144 468 Q
-(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 480 Q F0
-.506(If set to)144 492 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \
+-4.085 F(\(which may be empty\) before c)144 192 Q
+(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 204 Q F0
+.507(If set to)144 216 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \
 display characters with the eighth bit set directly rather than as a me\
-ta-)-3.006 F(pre\214x)144 504 Q .885(ed escape sequence.)-.15 F .884
-(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C
-.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .884
-(if the locale contains)3.384 F(eight-bit characters.)144 516 Q F1
-(page\255completions \(On\))108 528 Q F0 .808(If set to)144 540 R F1(On)
-3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor)
-3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
+ta-)-3.007 F(pre\214x)144 228 Q .884(ed escape sequence.)-.15 F .884
+(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(Of)3.384 E
+(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F2(On)
+3.384 E F0 .885(if the locale contains)3.384 F(eight-bit characters.)144
+240 Q F1(page\255completions \(On\))108 252 Q F0 .809(If set to)144 264
+R F1(On)3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2
+(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
 (ager to display a screenful of possible comple-)-3.308 F
-(tions at a time.)144 552 Q F1
-(print\255completions\255horizontally \(Off\))108 564 Q F0 1.319
-(If set to)144 576 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\
-play completions with matches sorted horizontally in alphabetical)-3.819
-F(order)144 588 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1 -2.29 -.18(re v)108 600 T(ert\255all\255at\255newline \(Off\)).08 E
-F0 .698(If set to)144 612 R F1(On)3.198 E F0 3.198(,r)C .699
+(tions at a time.)144 276 Q F1
+(print\255completions\255horizontally \(Off\))108 288 Q F0 1.318
+(If set to)144 300 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\
+play completions with matches sorted horizontally in alphabetical)-3.818
+F(order)144 312 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
+E F1 -2.29 -.18(re v)108 324 T(ert\255all\255at\255newline \(Off\)).08 E
+F0 .699(If set to)144 336 R F1(On)3.199 E F0 3.199(,r)C .699
 (eadline will undo all changes to history lines before returning when)
--3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 624 S
+-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 348 S
 2.686(cuted. By).15 F(def)2.686 E .186
 (ault, history lines may be modi\214ed and retain indi)-.1 F .186
-(vidual undo lists across calls to)-.25 F F1 -.18(re)144 636 S(adline)
-.18 E F0(.)A F1(sho)108 648 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
-F0 .303(This alters the def)144 660 R .303(ault beha)-.1 F .304
+(vidual undo lists across calls to)-.25 F F1 -.18(re)144 360 S(adline)
+.18 E F0(.)A F1(sho)108 372 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
+F0 .304(This alters the def)144 384 R .304(ault beha)-.1 F .304
 (vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On)
-2.804 E F0 2.804(,w)C .304(ords which ha)-2.904 F .604 -.15(ve m)-.2 H
+2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H
 (ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 672 R(bell.)144 684 Q F1
-(sho)108 696 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345
-(This alters the def)144 708 R 5.345(ault beha)-.1 F 5.345
-(vior of the completion functions in a f)-.2 F 5.346(ashion similar to)
--.1 F F1(sho)144 720 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C
-4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691
+isted immediately instead of ringing the)144 396 R(bell.)144 408 Q F1
+(sho)108 420 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
+(This alters the def)144 432 R 5.346(ault beha)-.1 F 5.345
+(vior of the completion functions in a f)-.2 F 5.345(ashion similar to)
+-.1 F F1(sho)144 444 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
+4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691
 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691
-(ore than one possible completion).15 F(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(41)192.055 E 0 Cg EP
-%%Page: 42 42
+(ore than one possible completion).15 F 1.04(without an)144 456 R 3.54
+(yp)-.15 G 1.039
+(ossible partial completion \(the possible completions don')-3.54 F
+3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\
+es to be listed immediately instead of ringing the bell.)144 468 Q F1
+(sho)108 480 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
+(If set to)144 492 R F1(On)3.521 E F0 3.521(,a)C 1.022
+(dd a string to the be)-3.521 F 1.022
+(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F
+(command, or vi insertion.)144 504 Q(The mode strings are user)5 E
+(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1
+(skip\255completed\255text \(Off\))108 516 Q F0 .095(If set to)144 528 R
+F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
+(ault completion beha)-.1 F .094
+(vior when inserting a single match into the line.)-.2 F(It')144 540 Q
+2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046
+(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1
+F .046(enabled, readline does not)2.546 F 1.394(insert characters from \
+the completion that match characters after point in the w)144 552 R
+1.394(ord being com-)-.1 F(pleted, so portions of the w)144 564 Q
+(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 576 Q F0 .517(If the)144
+588 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
+.518(riable is enabled, this string is displayed immediately before the)
+.25 F .475(last line of the primary prompt when vi editing mode is acti)
+144 600 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
+(The v)5.475 F(alue)-.25 E 1.235(is e)144 612 R 1.235(xpanded lik)-.15 F
+3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236
+(inding, so the standard set of meta- and control pre\214x).15 F 1.236
+(es and backslash)-.15 F .315(escape sequences is a)144 624 R -.25(va)
+-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
+.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
+an be used to embed a terminal control sequence into the mode string.)
+144 636 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 648 Q F0 .517
+(If the)144 660 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
+-.25(va)3.017 G .518
+(riable is enabled, this string is displayed immediately before the).25
+F .186(last line of the primary prompt when vi editing mode is acti)144
+672 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
+5.186 F .186(alue is)-.25 F -.15(ex)144 684 S 1.929(panded lik).15 F
+4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929
+(inding, so the standard set of meta- and control pre\214x).15 F 1.93
+(es and backslash)-.15 F .315(escape sequences is a)144 696 R -.25(va)
+-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
+.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
+an be used to embed a terminal control sequence into the mode string.)
+144 708 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(43)188.455 E 0
+Cg EP
+%%Page: 44 44
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039(without an)
-144 84 R 3.539(yp)-.15 G 1.039
-(ossible partial completion \(the possible completions don')-3.539 F
-3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\
-s to be listed immediately instead of ringing the bell.)144 96 Q/F1 10
-/Times-Bold@0 SF(sho)108 108 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))
--.18 E F0 1.019(If set to)144 120 R F1(On)3.519 E F0 3.519(,a)C 1.018
-(dd a character to the be)-3.519 F 1.018
-(ginning of the prompt indicating the editing mode: emacs)-.15 F
-(\(@\), vi command \(:\) or vi insertion \(+\).)144 132 Q F1
-(skip\255completed\255text \(Off\))108 144 Q F0 .094(If set to)144 156 R
-F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095
-(ault completion beha)-.1 F .095
-(vior when inserting a single match into the line.)-.2 F(It')144 168 Q
-2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046
-(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1
-F .045(enabled, readline does not)2.545 F 1.394(insert characters from \
-the completion that match characters after point in the w)144 180 R
-1.395(ord being com-)-.1 F(pleted, so portions of the w)144 192 Q
-(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
-(vi\255cmd\255mode\255string \(\(cmd\)\))108 204 Q F0 1.198(This string\
- is displayed immediately before the last line of the primary prompt wh\
-en vi editing)144 216 R .521(mode is acti)144 228 R .821 -.15(ve a)-.25
-H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25
-F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .822 -.15(ey b)-3.122 H .522
-(inding, so the standard).15 F .87(set of meta- and control pre\214x)144
-240 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G
-3.369(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be)
-144 252 R .386(gin and end sequences of non-printing characters, which \
-can be used to embed a ter)-.15 F(-)-.2 E
-(minal control sequence into the mode string.)144 264 Q F1
-(vi\255ins\255mode\255string \(\(ins\)\))108 276 Q F0 1.198(This string\
- is displayed immediately before the last line of the primary prompt wh\
-en vi editing)144 288 R .782(mode is acti)144 300 R 1.083 -.15(ve a)-.25
-H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e)
--.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H
-.783(inding, so the standard).15 F .87
-(set of meta- and control pre\214x)144 312 R .869
-(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.369
-(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be)144
-324 R .386(gin and end sequences of non-printing characters, which can \
-be used to embed a ter)-.15 F(-)-.2 E
-(minal control sequence into the mode string.)144 336 Q F1
-(visible\255stats \(Off\))108 348 Q F0 .847(If set to)144 360 R F1(On)
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(visible\255stats \(Off\))108 84 Q F0 .846(If set to)144 96 R F1(On)
 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
 (st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF
 (stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 372 Q F1
-(Readline Conditional Constructs)87 388.8 Q F0 .05
-(Readline implements a f)108 400.8 R .05(acility similar in spirit to t\
-he conditional compilation features of the C preprocessor)-.1 F .097
-(which allo)108 412.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096
+(when listing possible completions.)144 108 Q F1
+(Readline Conditional Constructs)87 124.8 Q F0 .05
+(Readline implements a f)108 136.8 R .05(acility similar in spirit to t\
+he conditional compilation features of the C preprocessor)-.1 F .096
+(which allo)108 148.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096
 (indings and v).15 F .096
-(ariable settings to be performed as the result of tests.)-.25 F .096
-(There are four parser)5.096 F(directi)108 424.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 441.6 Q F0(The)144 441.6 Q F1($if)2.962
-E F0 .462(construct allo)2.962 F .463(ws bindings to be made based on t\
-he editing mode, the terminal being used,)-.25 F .478
-(or the application using readline.)144 453.6 R .477(The te)5.477 F .477
-(xt of the test e)-.15 F .477
-(xtends to the end of the line; no characters)-.15 F
-(are required to isolate it.)144 465.6 Q F1(mode)144 482.4 Q F0(The)180
-482.4 Q F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0
-(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
-(sed to test whether readline is in emacs or vi)-3.711 F 3.065
-(mode. This)180 494.4 R .565(may be used in conjunction with the)3.065 F
-F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
-3.065 F .735(set bindings in the)180 506.4 R F2(emacs\255standar)3.235 E
-(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735
-(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 518.4
-Q F1(term)144 535.2 Q F0(The)180 535.2 Q F1(term=)3.197 E F0 .696
+(ariable settings to be performed as the result of tests.)-.25 F .097
+(There are four parser)5.096 F(directi)108 160.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F1($if)108 177.6 Q F0(The)144 177.6 Q F1($if)2.963
+E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\
+he editing mode, the terminal being used,)-.25 F
+(or the application using readline.)144 189.6 Q(The te)5 E
+(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E
+(,)-.4 E -.15(ex)146.5 201.6 S(tends to the end of the line; unless oth\
+erwise noted, no characters are required to isolate it.).15 E F1(mode)
+144 218.4 Q F0(The)180 218.4 Q F1(mode=)3.711 E F0 1.211(form of the)
+3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711
+(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F
+3.065(mode. This)180 230.4 R .565(may be used in conjunction with the)
+3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565
+(command, for instance, to)3.065 F .735(set bindings in the)180 242.4 R
+F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)
+3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F
+(out in emacs mode.)180 254.4 Q F1(term)144 271.2 Q F0(The)180 271.2 Q
+F1(term=)3.197 E F0 .696
 (form may be used to include terminal-speci\214c k)3.197 F .996 -.15
-(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 547.2 R
+(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 283.2 R
 .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 559.2 Q F1(=)3.232
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 295.2 Q F1(=)3.232
 E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\
 minal and the portion of the terminal)-.05 F(name before the \214rst)180
-571.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0
+307.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0
 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E F1(application)144 588 Q F0(The)180 600
-Q F1(application)3.003 E F0 .503
+2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 324 S(rsion).1 E F0(The)
+180 336 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608
+(test may be used to perform comparisons ag)3.108 F .609
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 348 Q F1 -.1
+(ve)3.929 G(rsion).1 E F0 -.15(ex)3.929 G 1.428
+(pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.428
+(set of comparison operators)3.928 F(includes)180 360 Q F1(=)2.605 E F0
+2.605(,\()C(and)-2.605 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1
+(<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd)
+-2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106
+(ersion number supplied on the right side)-.15 F 1.472
+(of the operator consists of a major v)180 372 R 1.471(ersion number)
+-.15 F 3.971(,a)-.4 G 3.971(no)-3.971 G 1.471
+(ptional decimal point, and an)-3.971 F .766(optional minor v)180 384 R
+.766(ersion \(e.g.,)-.15 F F1(7.1)3.266 E F0 .766(\). If the minor v)B
+.766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.267 E F0(.)A
+1.756(The operator may be separated from the string)180 396 R F1 -.1(ve)
+4.255 G(rsion).1 E F0 1.755(and from the v)4.255 F 1.755(ersion number)
+-.15 F(ar)180 408 Q(gument by whitespace.)-.18 E F1(application)144
+424.8 Q F0(The)180 436.8 Q F1(application)3.003 E F0 .503
 (construct is used to include application-speci\214c settings.)3.003 F
 .503(Each program)5.503 F .114(using the readline library sets the)180
-612 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+448.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
 (nd an initialization \214le can test for a)-2.614 F .5(particular v)180
-624 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
+460.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
 (ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397
-(ci\214c program.)180 636 R -.15(Fo)5.397 G 2.896(ri).15 G .396
+(ci\214c program.)180 472.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396
 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15
-(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 648 Q
-(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 672 Q F0
-(Bash)2.5 E 2.5(#Q)180 684 S(uote the current or pre)-2.5 E(vious w)-.25
-E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 696 Q F1($endif)180 708 Q
-F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(42)192.055 E 0 Cg EP
-%%Page: 43 43
+(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 484.8
+Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 508.8 Q F0
+(Bash)2.5 E 2.5(#Q)180 520.8 S(uote the current or pre)-2.5 E(vious w)
+-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 532.8 Q F1($endif)180
+544.8 Q F2(variable)144 561.6 Q F0(The)180 573.6 Q F2(variable)3.776 E
+F0 1.276(construct pro)3.776 F 1.276
+(vides simple equality tests for readline v)-.15 F 1.277(ariables and v)
+-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180
+585.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
+(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079
+(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\
+or by whitespace; the operator may be separated from)180 597.6 R .13
+(the v)180 609.6 R .13(alue on the right hand side by whitespace.)-.25 F
+.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F
+(tested. Boolean v)180 621.6 Q(ariables must be tested ag)-.25 E
+(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f)
+-.18 E F0(.)A F1($endif)108 638.4 Q F0(This command, as seen in the pre)
+144 638.4 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
+(command.)2.5 E F1($else)108 655.2 Q F0(Commands in this branch of the)
+144 655.2 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E
+-.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 672
+Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356
+(es a single \214lename as an ar)-.1 F .357
+(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
+144 696 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
+($include)144 720 Q F2(/etc/inputr)5.833 E(c)-.37 E F0(GNU Bash 5.0)72
+768 Q(2018 December 7)139.295 E(44)188.455 E 0 Cg EP
+%%Page: 45 45
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e)
--.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1
-($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if)
-2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
-(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356
-(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356
-(es a single \214lename as an ar)-.1 F .357
-(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
--.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5
-E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37
-E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835
+SF(Sear)87 84 Q(ching)-.18 E F0 .835(Readline pro)108 96 R .835
 (vides commands for searching through the command history \(see)-.15 F
-/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E
-.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q
-(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E
-(emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51
-E .697(Incremental searches be)108 223.2 R .697
+/F2 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E
+.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 108 Q
+(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E/F3 10/Times-Italic@0
+SF(incr)2.51 E(emental)-.37 E F0(and)3.01 E F3(non-incr)2.5 E(emental)
+-.37 E F0(.).51 E .697(Incremental searches be)108 124.8 R .697
 (gin before the user has \214nished typing the search string.)-.15 F
 .698(As each character of the)5.698 F .113
-(search string is typed, readline displays the ne)108 235.2 R .112
+(search string is typed, readline displays the ne)108 136.8 R .112
 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1
 E 5.112(.A)-.55 G(n)-5.112 E .542
-(incremental search requires only as man)108 247.2 R 3.042(yc)-.15 G
+(incremental search requires only as man)108 148.8 R 3.042(yc)-.15 G
 .542(haracters as needed to \214nd the desired history entry)-3.042 F
 5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224
-(acters present in the v)108 259.2 R .224(alue of the)-.25 F F1(isear)
+(acters present in the v)108 160.8 R .224(alue of the)-.25 F F1(isear)
 2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224
 (riable are used to terminate an incremental search.).25 F .66
-(If that v)108 271.2 R .66(ariable has not been assigned a v)-.25 F .66
+(If that v)108 172.8 R .66(ariable has not been assigned a v)-.25 F .66
 (alue the Escape and Control-J characters will terminate an incre-)-.25
-F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\
+F .097(mental search.)108 184.8 R .096(Control-G will abort an incremen\
 tal search and restore the original line.)5.097 F .096
 (When the search is)5.096 F(terminated, the history entry containing th\
-e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214)
-108 312 T 1.339(nd other matching entries in the history list, type Con\
-trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675
-(search backw)108 324 R .675(ard or forw)-.1 F .675
+e search string becomes the current line.)108 196.8 Q 2.938 -.8(To \214)
+108 213.6 T 1.339(nd other matching entries in the history list, type C\
+ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675
+(search backw)108 225.6 R .675(ard or forw)-.1 F .675
 (ard in the history for the ne)-.1 F .674
 (xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674
-(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H
-.174
+(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 237.6 R .474 -.15(ey s)-.1
+.174
 (equence bound to a readline command will terminate the search and e).15
 F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E
-.541(instance, a)108 348 R F2(ne)3.041 E(wline)-.15 E F0 .541
+.541(instance, a)108 249.6 R F3(ne)3.041 E(wline)-.15 E F0 .541
 (will terminate the search and accept the line, thereby e)3.041 F -.15
-(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q
-.653(Readline remembers the last incremental search string.)108 376.8 R
-.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an)
+(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 261.6
+Q .653(Readline remembers the last incremental search string.)108 278.4
+.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an)
 -3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E
-(ing characters de\214ning a ne)108 388.8 Q 2.5(ws)-.25 G
+(ing characters de\214ning a ne)108 290.4 Q 2.5(ws)-.25 G
 (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.)
 -2.5 E .567(Non-incremental searches read the entire search string befo\
-re starting to search for matching history lines.)108 405.6 R(The searc\
+re starting to search for matching history lines.)108 307.2 R(The searc\
 h string may be typed by the user or be part of the contents of the cur\
-rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391
-(The follo)108 446.4 R 1.391
+rent line.)108 319.2 Q F1(Readline Command Names)87 336 Q F0 1.391
+(The follo)108 348 R 1.391
 (wing is a list of the names of the commands and the def)-.25 F 1.391
 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 R .122
+3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 360 R .122
 (names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1
 H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121
-(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E
-F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E
+(the follo)2.621 F(wing)-.25 E(descriptions,)108 372 Q F3(point)3.41 E
+F0 .91(refers to the current cursor position, and)3.41 F F3(mark)3.411 E
 F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db)
-.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5
+.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 384 Q F0 2.5
 (command. The)2.5 F(te)2.5 E
-(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1
-E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3
+(xt between the point and mark is referred to as the)-.15 E F3 -.37(re)
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 400.8 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 412.8 Q F0(Mo)144 424.8 Q .3
 -.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15
+(end\255of\255line \(C\255e\))108 436.8 Q F0(Mo)144 448.8 Q .3 -.15
 (ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108
-559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f)
+460.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 472.8 Q .3 -.15(ve f)
 -.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
-(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b)
--.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w)
-.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw)
+(backward\255char \(C\255b\))108 484.8 Q F0(Mo)144 496.8 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 508.8 S(rward\255w)
+.25 E(ord \(M\255f\))-.1 E F0(Mo)144 520.8 Q .823 -.15(ve f)-.15 H(orw)
 .15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)
 -.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q
-(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41
+(ters and digits\).)144 532.8 Q F1(backward\255w)108 544.8 Q
+(ord \(M\255b\))-.1 E F0(Mo)144 556.8 Q 1.71 -.15(ve b)-.15 H 1.41
 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2
-Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H
+(characters \(letters and digits\).)144 568.8 Q F1(shell\255f)108 580.8
+Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 592.8 Q .784 -.15(ve f)-.15 H
 (orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984
 (ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-)
--.8 F(ters.)144 703.2 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E
-(43)192.055 E 0 Cg EP
-%%Page: 44 44
+-.8 F(ters.)144 604.8 Q F1(shell\255backward\255w)108 616.8 Q(ord)-.1 E
+F0(Mo)144 628.8 Q .908 -.15(ve b)-.15 H .609
+(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109
+(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F
+(metacharacters.)144 640.8 Q F1(pr)108 652.8 Q -.15(ev)-.18 G
+(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 664.8 R
+1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891
+(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89
+(ysical screen line.)-.05 F .87(This will not ha)144 676.8 R 1.17 -.15
+(ve t)-.2 H .87(he desired ef).15 F .87
+(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G
+3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 688.8 Q(ysical line or \
+if point is not greater than the length of the prompt plus the screen w\
+idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638
+(Attempt to mo)144 712.8 R .938 -.15(ve p)-.15 H .638
+(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F
+.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha)
+144 724.8 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009
+(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G
+2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(45)188.455 E 0 Cg EP
+%%Page: 46 46
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15
-(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609
-(vious w)-.25 F 3.109(ord. W)-.1 F .609
-(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q
-F1(clear\255scr)108 120 Q(een \(C\255l\))-.18 E F0 .993
-(Clear the screen lea)144 132 R .993
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .772(line or if t\
+he length of the current Readline line is not greater than the length o\
+f the prompt plus)144 84 R(the screen width.)144 96 Q/F1 10/Times-Bold@0
+SF(clear\255scr)108 108 Q(een \(C\255l\))-.18 E F0 .993
+(Clear the screen lea)144 120 R .993
 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
 .993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 144 Q F1 -.18(re)108 156
+(current line without clearing the screen.)144 132 Q F1 -.18(re)108 144
 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
-168 Q F1(Commands f)87 184.8 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 196.8 Q(n\))-.15 E F0 .158
-(Accept the line re)144 208.8 R -.05(ga)-.15 G .158
+156 Q F1(Commands f)87 172.8 Q(or Manipulating the History)-.25 E
+(accept\255line \(Newline, Retur)108 184.8 Q(n\))-.15 E F0 .159
+(Accept the line re)144 196.8 R -.05(ga)-.15 G .159
 (rdless of where the cursor is.).05 F .158(If this line is non-empty)
-5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699
-(according to the state of the)144 220.8 R/F2 9/Times-Bold@0 SF
+5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699
+(according to the state of the)144 208.8 R/F2 9/Times-Bold@0 SF
 (HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F
 .699(the line is a modi\214ed history line, then)3.199 F
-(restore the history line to its original state.)144 232.8 Q F1(pr)108
-244.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
-(Fetch the pre)144 256.8 Q(vious command from the history list, mo)-.25
-E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 268.8
-Q F0(Fetch the ne)144 280.8 Q(xt command from the history list, mo)-.15
+(restore the history line to its original state.)144 220.8 Q F1(pr)108
+232.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
+(Fetch the pre)144 244.8 Q(vious command from the history list, mo)-.25
+E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 256.8
+Q F0(Fetch the ne)144 268.8 Q(xt command from the history list, mo)-.15
 E(ving forw)-.15 E(ard in the list.)-.1 E F1
-(beginning\255of\255history \(M\255<\))108 292.8 Q F0(Mo)144 304.8 Q .3
+(beginning\255of\255history \(M\255<\))108 280.8 Q F0(Mo)144 292.8 Q .3
 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
--.65 E F1(end\255of\255history \(M\255>\))108 316.8 Q F0(Mo)144 328.8 Q
+-.65 E F1(end\255of\255history \(M\255>\))108 304.8 Q F0(Mo)144 316.8 Q
 .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
-(re v)108 340.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
-1.47(Search backw)144 352.8 R 1.471
-(ard starting at the current line and mo)-.1 F 1.471
+(re v)108 328.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
+1.471(Search backw)144 340.8 R 1.471
+(ard starting at the current line and mo)-.1 F 1.47
 (ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 364.8 Q F1 -.25(fo)108 376.8 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
-(Search forw)144 388.8 R 1.132(ard starting at the current line and mo)
--.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)
--.25 F(.)-.65 E(This is an incremental search.)144 400.8 Q F1
-(non\255incr)108 412.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
-(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)
-144 424.8 R .164(ard through the history starting at the current line u\
-sing a non-incremental search for)-.1 F 2.5(as)144 436.8 S
-(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 448.8 Q
+(This is an incremental search.)144 352.8 Q F1 -.25(fo)108 364.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
+(Search forw)144 376.8 R 1.131(ard starting at the current line and mo)
+-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
+-.25 F(.)-.65 E(This is an incremental search.)144 388.8 Q F1
+(non\255incr)108 400.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
+(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
+144 412.8 R .164(ard through the history starting at the current line u\
+sing a non-incremental search for)-.1 F 2.5(as)144 424.8 S
+(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 436.8 Q
 (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
-E F0 1.354(Search forw)144 460.8 R 1.354(ard through the history using \
+E F0 1.353(Search forw)144 448.8 R 1.354(ard through the history using \
 a non-incremental search for a string supplied by the)-.1 F(user)144
-472.8 Q(.)-.55 E F1(history\255sear)108 484.8 Q(ch\255f)-.18 E(orward)
--.25 E F0 .248(Search forw)144 496.8 R .249(ard through the history for\
+460.8 Q(.)-.55 E F1(history\255sear)108 472.8 Q(ch\255f)-.18 E(orward)
+-.25 E F0 .249(Search forw)144 484.8 R .249(ard through the history for\
  the string of characters between the start of the current line)-.1 F
-(and the point.)144 508.8 Q(This is a non-incremental search.)5 E F1
-(history\255sear)108 520.8 Q(ch\255backward)-.18 E F0 .951(Search backw)
-144 532.8 R .951(ard through the history for the string of characters b\
-etween the start of the current)-.1 F(line and the point.)144 544.8 Q
-(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 556.8 Q
-2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144
-568.8 R .622(gument to the pre)-.18 F .622
-(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F
-.622(vious line\))-.25 F .795(at point.)144 580.8 R -.4(Wi)5.795 G .794
-(th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294
-(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794
-(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794
-(ords in the)-.1 F(pre)144 592.8 Q .291(vious command be)-.25 F .291
+(and the point.)144 496.8 Q(This is a non-incremental search.)5 E F1
+(history\255sear)108 508.8 Q(ch\255backward)-.18 E F0 .95(Search backw)
+144 520.8 R .951(ard through the history for the string of characters b\
+etween the start of the current)-.1 F(line and the point.)144 532.8 Q
+(This is a non-incremental search.)5 E F1(history\255substring\255sear)
+108 544.8 Q(ch\255backward)-.18 E F0 .951(Search backw)144 556.8 R .951
+(ard through the history for the string of characters between the start\
+ of the current)-.1 F .007(line and the current cursor position \(the)
+144 568.8 R/F3 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B
+.007(search string may match an)2.507 F .007(ywhere in a history)-.15 F
+2.5(line. This)144 580.8 R(is a non-incremental search.)2.5 E F1
+(history\255substring\255sear)108 592.8 Q(ch\255f)-.18 E(orward)-.25 E
+F0 .249(Search forw)144 604.8 R .249(ard through the history for the st\
+ring of characters between the start of the current line)-.1 F .318
+(and the point.)144 616.8 R .319(The search string may match an)5.318 F
+.319(ywhere in a history line.)-.15 F .319(This is a non-incremental)
+5.319 F(search.)144 628.8 Q F1(yank\255nth\255ar)108 640.8 Q 2.5(g\()-.1
+G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 652.8 R .622
+(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25
+F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144
+664.8 R -.4(Wi)5.794 G .794(th an ar).4 F(gument)-.18 E F3(n)3.294 E F0
+3.294(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794
+(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795
+(ords in the)-.1 F(pre)144 676.8 Q .292(vious command be)-.25 F .292
 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)
 -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291
-(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292
-(ord from the end of)-.1 F .282(the pre)144 604.8 R .282(vious command.)
--.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281
-(is computed, the ar)2.781 F .281(gument is e)-.18 F .281
-(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 616.8 Q
-(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 628.8 Q
-2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
-(Insert the last ar)144 640.8 R 1.307(gument to the pre)-.18 F 1.307
-(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
-(vious history entry\).)-.25 F -.4(Wi)144 652.8 S .204(th a numeric ar)
-.4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F
-(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)
--5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)
-2.703 E(g)-.1 E F0(mo)144 664.8 Q .806 -.15(ve b)-.15 H .507
-(ack through the history list, inserting the last w).15 F .507
-(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
-1.397(to the \214rst call\) of each line in turn.)144 676.8 R(An)6.396 E
-3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396
-(gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls)
-.15 E .491(determines the direction to mo)144 688.8 R .791 -.15(ve t)
--.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga)
--.15 G(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492
-(ument switches the direction).18 F .494
-(through the history \(back or forw)144 700.8 R 2.994(ard\). The)-.1 F
-.494(history e)2.994 F .494(xpansion f)-.15 F .494
-(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144
-712.8 S(rd, as if the "!$" history e).1 E
-(xpansion had been speci\214ed.)-.15 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(44)192.055 E 0 Cg EP
-%%Page: 45 45
+(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .291
+(ord from the end of)-.1 F .281(the pre)144 688.8 R .281(vious command.)
+-.25 F .281(Once the ar)5.281 F(gument)-.18 E F3(n)2.781 E F0 .281
+(is computed, the ar)2.781 F .281(gument is e)-.18 F .282
+(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 700.8 Q
+(xpansion had been speci\214ed.)-.15 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(46)188.455 E 0 Cg EP
+%%Page: 47 47
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(shell\255expand\255line \(M\255C\255e\))108 84 Q F0 .622
-(Expand the line as the shell does.)144 96 R .622
-(This performs alias and history e)5.622 F .623
-(xpansion as well as all of the)-.15 F(shell w)144 108 Q(ord e)-.1 E 2.5
+SF(yank\255last\255ar)108 84 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F
+-1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 96 R 1.308
+(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F 1.307
+(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)144 108
+S .203(th a numeric ar).4 F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2
+H .204(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0
+5.204(.S)C(uccessi)-5.204 E .504 -.15(ve c)-.25 H .204(alls to).15 F F1
+(yank\255last\255ar)2.704 E(g)-.1 E F0(mo)144 120 Q .807 -.15(ve b)-.15
+H .507(ack through the history list, inserting the last w).15 F .507
+(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
+1.396(to the \214rst call\) of each line in turn.)144 132 R(An)6.396 E
+3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397
+(gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls)
+.15 E .492(determines the direction to mo)144 144 R .792 -.15(ve t)-.15
+H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G
+(ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491
+(ument switches the direction).18 F .494
+(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F
+.494(history e)2.994 F .494(xpansion f)-.15 F .494
+(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144
+168 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.)
+-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 180 Q F0 .623
+(Expand the line as the shell does.)144 192 R .622
+(This performs alias and history e)5.622 F .622
+(xpansion as well as all of the)-.15 F(shell w)144 204 Q(ord e)-.1 E 2.5
 (xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25
 (YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G
 (or a description of history e)-2.5 E(xpansion.)-.15 E F1
-(history\255expand\255line \(M\255^\))108 120 Q F0 .939
-(Perform history e)144 132 R .939(xpansion on the current line.)-.15 F
+(history\255expand\255line \(M\255^\))108 216 Q F0 .938
+(Perform history e)144 228 R .939(xpansion on the current line.)-.15 F
 (See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E
-(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-)
--3.438 F(tion of history e)144 144 Q(xpansion.)-.15 E F1(magic\255space)
-108 156 Q F0 1.626(Perform history e)144 168 R 1.626
-(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2
-(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0
-(belo)144 180 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E
-(xpansion.)-.15 E F1(alias\255expand\255line)108 192 Q F0 .395
-(Perform alias e)144 204 R .395(xpansion on the current line.)-.15 F
-(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H
-.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 216 Q F1
-(history\255and\255alias\255expand\255line)108 228 Q F0
-(Perform history and alias e)144 240 Q(xpansion on the current line.)
--.15 E F1(insert\255last\255ar)108 252 Q(gument \(M\255.)-.1 E 2.5(,M)
-.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 264 S(ynon)-2.5 E(ym for)
+(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-)
+-3.439 F(tion of history e)144 240 Q(xpansion.)-.15 E F1(magic\255space)
+108 252 Q F0 1.627(Perform history e)144 264 R 1.627
+(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F2
+(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0
+(belo)144 276 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E
+(xpansion.)-.15 E F1(alias\255expand\255line)108 288 Q F0 .394
+(Perform alias e)144 300 R .394(xpansion on the current line.)-.15 F
+(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H
+.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 312 Q F1
+(history\255and\255alias\255expand\255line)108 324 Q F0
+(Perform history and alias e)144 336 Q(xpansion on the current line.)
+-.15 E F1(insert\255last\255ar)108 348 Q(gument \(M\255.)-.1 E 2.5(,M)
+.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 360 S(ynon)-2.5 E(ym for)
 -.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1
-(operate\255and\255get\255next \(C\255o\))108 276 Q F0 .947
-(Accept the current line for e)144 288 R -.15(xe)-.15 G .948
-(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15
-(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F
-(history for editing.)144 300 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G
-(ument is ignored.).18 E F1
-(edit\255and\255execute\255command \(C\255xC\255e\))108 312 Q F0(In)144
-324 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026
+(operate\255and\255get\255next \(C\255o\))108 372 Q F0 .948
+(Accept the current line for e)144 384 R -.15(xe)-.15 G .948
+(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15
+(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F .729
+(history for editing.)144 396 R 3.229(An)5.729 G .729(umeric ar)-3.229 F
+.729
+(gument, if supplied, speci\214es the history entry to use instead of)
+-.18 F(the current line.)144 408 Q F1
+(edit\255and\255execute\255command \(C\255x C\255e\))108 420 Q F0(In)144
+432 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026
 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026
 (cute the result as shell commands.).15 F F1(Bash)6.026 E F0
-(attempts to in)144 336 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)
+(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)
 -.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0
 (and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E
 2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87
-352.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 364.8
+460.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 472.8
 Q F1(\(usually C\255d\))2.5 E F0 .798
-(The character indicating end-of-\214le as set, for e)144 376.8 R .799
+(The character indicating end-of-\214le as set, for e)144 484.8 R .799
 (xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299
 (ft)-5.799 G .799(his character is read when)-3.299 F .592
-(there are no characters on the line, and point is at the be)144 388.8 R
+(there are no characters on the line, and point is at the be)144 496.8 R
 .592(ginning of the line, Readline interprets it)-.15 F
-(as the end of input and returns)144 400.8 Q F2(EOF)2.5 E F3(.)A F1
-(delete\255char \(C\255d\))108 412.8 Q F0 .441
-(Delete the character at point.)144 424.8 R .442
+(as the end of input and returns)144 508.8 Q F2(EOF)2.5 E F3(.)A F1
+(delete\255char \(C\255d\))108 520.8 Q F0 .441
+(Delete the character at point.)144 532.8 R .442
 (If this function is bound to the same character as the tty)5.441 F F1
-(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s)
+(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 544.8 Q 2.5(,a)-.4 G(s)
 -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
 (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
-108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R
+108 556.8 Q F0 .553(Delete the character behind the cursor)144 568.8 R
 5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
 (umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552
-(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1
--.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473
-(Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474
+(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 580.8 Q F1
+-.25(fo)108 592.8 S(rward\255backward\255delete\255char).25 E F0 .473
+(Delete the character under the cursor)144 604.8 R 2.973(,u)-.4 G .474
 (nless the cursor is at the end of the line, in which case the)-2.973 F
-(character behind the cursor is deleted.)144 508.8 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 .779(Add the ne)144
-532.8 R .779(xt character typed to the line v)-.15 F 3.279
+(character behind the cursor is deleted.)144 616.8 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 628.8 Q F0 .779(Add the ne)144
+640.8 R .779(xt character typed to the line v)-.15 F 3.279
 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279
 G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278
-(,f)C(or)-3.278 E -.15(ex)144 544.8 S(ample.).15 E F1
-(tab\255insert \(C\255v T)108 556.8 Q(AB\))-.9 E F0
-(Insert a tab character)144 568.8 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0
-(Insert the character typed.)144 592.8 Q F1
-(transpose\255chars \(C\255t\))108 604.8 Q F0 .321
-(Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15
-(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322
-(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144
-628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E
--.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E
-.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
-664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
--2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
-(is at the end of the line, this transposes the last tw)144 676.8 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q
-(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144
-700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F
--.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 4.4)72 768
-Q(2016 August 26)142.895 E(45)192.055 E 0 Cg EP
-%%Page: 46 46
+(,f)C(or)-3.278 E -.15(ex)144 652.8 S(ample.).15 E F1
+(tab\255insert \(C\255v T)108 664.8 Q(AB\))-.9 E F0
+(Insert a tab character)144 676.8 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 688.8 Q F0
+(Insert the character typed.)144 700.8 Q(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(47)188.455 E 0 Cg EP
+%%Page: 48 48
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q
-1.647(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
+SF(transpose\255chars \(C\255t\))108 84 Q F0 .321
+(Drag the character before point forw)144 96 R .321(ard o)-.1 F -.15(ve)
+-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322
+(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182
+(If point is at the end of the line, then this transposes the tw)144 108
+R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05
+(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 120 Q(guments ha)-.18 E .3
+-.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
+(transpose\255w)108 132 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
+144 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
+-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
+(is at the end of the line, this transposes the last tw)144 156 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 168 Q
+(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 180
+R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E
+(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 204 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 216 Q 1.647
+(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132
+-.25 F(vious)-.25 E -.1(wo)144 228 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 240 Q
+(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 252
 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
 -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156
-S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 264 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 276
+S(rwrite\255mode).1 E F0 -.8(To)144 288 S .437(ggle o).8 F -.15(ve)-.15
 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
 (xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
 (gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
-(Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
+(Wi)144 300 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
 -.15(ve n)-.25 H .781(umeric ar).15 F .781
 (gument, switches to insert mode.)-.18 F .78(This command af)5.781 F
-(fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
+(fects)-.25 E(only)144 312 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
 4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10
 /Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895
-(starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G
+(starts in insert)4.395 F 3.969(mode. In)144 324 R -.15(ove)3.969 G
 1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
 F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
-.957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958
+.957(pushing the te)144 336 R .957(xt to the right.)-.15 F .958
 (Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
-.958(replace the character)3.458 F(before point with a space.)144 228 Q
+.958(replace the character)3.458 F(before point with a space.)144 348 Q
 (By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
-244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0
-(Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw)
-144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8
+364.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 376.8 Q F0
+(Kill the te)144 388.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 400.8 Q F0(Kill backw)
+144 412.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 424.8 Q F0(Kill backw)144 436.8
 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
 (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 448.8 Q F0
 (Kill all characters on the current line, no matter where point is.)144
-340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 .729
-(Kill from point to the end of the current w)144 364.8 R .728
+460.8 Q F1(kill\255w)108 472.8 Q(ord \(M\255d\))-.1 E F0 .729
+(Kill from point to the end of the current w)144 484.8 R .728
 (ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 496.8 S
 (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q
-(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.)
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 508.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 520.8 Q(ord behind point.)
 -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1
-(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 412.8 Q
-(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 424.8
+(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 532.8 Q
+(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 544.8
 R .729(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F
-.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 436.8 S
+.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 556.8 S
 (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E
 (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w)
-108 448.8 Q(ord)-.1 E F0 3.025(Kill the w)144 460.8 R 3.025
+108 568.8 Q(ord)-.1 E F0 3.025(Kill the w)144 580.8 R 3.025
 (ord behind point.)-.1 F -.8(Wo)8.025 G 3.025
 (rd boundaries are the same as those used by).8 F F1(shell\255back-)
-5.525 E(ward\255w)144 472.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q
-(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 496.8 R .364
+5.525 E(ward\255w)144 592.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 604.8 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 616.8 R .364
 (ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
 F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
 (ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
-508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .167(Kill the w)
-144 532.8 R .166
+628.8 Q F1(unix\255\214lename\255rubout)108 640.8 Q F0 .167(Kill the w)
+144 652.8 R .166
 (ord behind point, using white space and the slash character as the w)
--.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 544.8 Q
+-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 664.8 Q
 (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.)
--2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 556.8 Q F0
-(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108
-580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re)
--.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E
-F0(Cop)144 616.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
-(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.8(yt)
--.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E
-(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
-(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144
-652.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E
-(ord)-.1 E F0(Cop)144 676.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008
-(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25
-E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007
-(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G
-(ward\255w)144 688.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 700.8 Q
-F0 -1(Ya)144 712.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E
-(fer at point.)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(46)
-192.055 E 0 Cg EP
-%%Page: 47 47
+-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 676.8 Q F0
+(Delete all spaces and tabs around point.)144 688.8 Q F1(kill\255r)108
+700.8 Q(egion)-.18 E F0(Kill the te)144 712.8 Q(xt in the current re)
+-.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(48)
+188.455 E 0 Cg EP
+%%Page: 49 49
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(yank\255pop \(M\255y\))108 84 Q F0
-(Rotate the kill ring, and yank the ne)144 96 Q 2.5(wt)-.25 G 2.5
+SF(copy\255r)108 84 Q(egion\255as\255kill)-.18 E F0(Cop)144 96 Q 2.5(yt)
+-.1 G(he te)-2.5 E(xt in the re)-.15 E(gion to the kill b)-.15 E(uf)-.2
+E(fer)-.25 E(.)-.55 E F1(copy\255backward\255w)108 108 Q(ord)-.1 E F0
+(Cop)144 120 Q 4.8(yt)-.1 G 2.3(he w)-4.8 F 2.3
+(ord before point to the kill b)-.1 F(uf)-.2 E(fer)-.25 E 7.301(.T)-.55
+G 2.301(he w)-7.301 F 2.301(ord boundaries are the same as)-.1 F F1
+(back-)4.801 E(ward\255w)144 132 Q(ord)-.1 E F0(.)A F1(copy\255f)108 144
+Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)144 156 Q 4.508(yt)-.1 G 2.008
+(he w)-4.508 F 2.008(ord follo)-.1 F 2.008(wing point to the kill b)-.25
+F(uf)-.2 E(fer)-.25 E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007
+(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G
+(ward\255w)144 168 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 180 Q F0 -1
+(Ya)144 192 S(nk the top of the kill ring into the b)1 E(uf)-.2 E
+(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 204 Q F0
+(Rotate the kill ring, and yank the ne)144 216 Q 2.5(wt)-.25 G 2.5
 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 112.8 Q
-(guments)-.1 E(digit\255ar)108 124.8 Q
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 232.8 Q
+(guments)-.1 E(digit\255ar)108 244.8 Q
 (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
-(Add this digit to the ar)144 136.8 R .367
+(Add this digit to the ar)144 256.8 R .367
 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
 (rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05
-(ga)-.15 G(-).05 E(ti)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
-(ument.).18 E F1(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
-E F0 .779(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F
+(ga)-.15 G(-).05 E(ti)144 268.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E F1(uni)108 280.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
+E F0 .779(This is another w)144 292.8 R .779(ay to specify an ar)-.1 F
 3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
 (wed by one or more digits,)-.25 F 1.376
 (optionally with a leading minus sign, those digits de\214ne the ar)144
-184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-196.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+304.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+316.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .898(wise ignored.)144 208.8 R .898
+-.2 F(-)-.2 E .898(wise ignored.)144 328.8 R .898
 (As a special case, if this command is immediately follo)5.898 F .898
 (wed by a character that is)-.25 F 1.23
-(neither a digit nor minus sign, the ar)144 220.8 R 1.23
+(neither a digit nor minus sign, the ar)144 340.8 R 1.23
 (gument count for the ne)-.18 F 1.23(xt command is multiplied by four)
--.15 F(.)-.55 E .822(The ar)144 232.8 R .822
+-.15 F(.)-.55 E .822(The ar)144 352.8 R .822
 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823
 (cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F
-(gument)-.18 E(count four)144 244.8 Q 2.5(,as)-.4 G(econd time mak)-2.5
+(gument)-.18 E(count four)144 364.8 Q 2.5(,as)-.4 G(econd time mak)-2.5
 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing)
-87 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137
-(Attempt to perform completion on the te)144 285.6 R 1.137
+87 381.6 Q(complete \(T)108 393.6 Q(AB\))-.9 E F0 1.137
+(Attempt to perform completion on the te)144 405.6 R 1.137
 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137
-(attempts completion treating the)3.637 F(te)144 297.6 Q .532(xt as a v)
+(attempts completion treating the)3.637 F(te)144 417.6 Q .532(xt as a v)
 -.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with)
 -.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F
 .533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te)
-144 309.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701
+144 429.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701
 (\), or command \(including aliases and functions\) in turn.)B .701
 (If none of these pro-)5.701 F
-(duces a match, \214lename completion is attempted.)144 321.6 Q F1
-(possible\255completions \(M\255?\))108 333.6 Q F0
-(List the possible completions of the te)144 345.6 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783
-(Insert all completions of the te)144 369.6 R .783
+(duces a match, \214lename completion is attempted.)144 441.6 Q F1
+(possible\255completions \(M\255?\))108 453.6 Q F0
+(List the possible completions of the te)144 465.6 Q(xt before point.)
+-.15 E F1(insert\255completions \(M\255*\))108 477.6 Q F0 .783
+(Insert all completions of the te)144 489.6 R .783
 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
 .783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
-381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .929(Similar to)144
-405.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
+501.6 Q F0(.)A F1(menu\255complete)108 513.6 Q F0 .929(Similar to)144
+525.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
 F .929(ord to be completed with a single match from the list of)-.1 F
-1.193(possible completions.)144 417.6 R 1.193(Repeated e)6.193 F -.15
+1.193(possible completions.)144 537.6 R 1.193(Repeated e)6.193 F -.15
 (xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
 (steps through the list of possible)3.694 F .829
-(completions, inserting each match in turn.)144 429.6 R .828
+(completions, inserting each match in turn.)144 549.6 R .828
 (At the end of the list of completions, the bell is rung)5.828 F .727
-(\(subject to the setting of)144 441.6 R F1(bell\255style)3.227 E F0
+(\(subject to the setting of)144 561.6 R F1(bell\255style)3.227 E F0
 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F
 .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227
 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73
-(positions forw)144 453.6 R 1.73(ard in the list of matches; a ne)-.1 F
+(positions forw)144 573.6 R 1.73(ard in the list of matches; a ne)-.1 F
 -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73
 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1
-E(through the list.)144 465.6 Q(This command is intended to be bound to)
+E(through the list.)144 585.6 Q(This command is intended to be bound to)
 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E
-(ault.)-.1 E F1(menu\255complete\255backward)108 477.6 Q F0 .82
-(Identical to)144 489.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
+(ault.)-.1 E F1(menu\255complete\255backward)108 597.6 Q F0 .82
+(Identical to)144 609.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
 (ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82
 (ard through the list of possible completions, as if)-.1 F F1
-(menu\255complete)144 501.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
+(menu\255complete)144 621.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg)
 .15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E
-F1(delete\255char\255or\255list)108 513.6 Q F0 .234
-(Deletes the character under the cursor if not at the be)144 525.6 R
+F1(delete\255char\255or\255list)108 633.6 Q F0 .234
+(Deletes the character under the cursor if not at the be)144 645.6 R
 .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char)
-2.734 E F0(\).)A .425(If at the end of the line, beha)144 537.6 R -.15
+2.734 E F0(\).)A .425(If at the end of the line, beha)144 657.6 R -.15
 (ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1
 (possible\255completions)2.925 E F0 5.425(.T)C .425
-(his command is unbound)-5.425 F(by def)144 549.6 Q(ault.)-.1 E F1
-(complete\255\214lename \(M\255/\))108 561.6 Q F0
-(Attempt \214lename completion on the te)144 573.6 Q(xt before point.)
--.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 585.6 Q
-F0(List the possible completions of the te)144 597.6 Q
-(xt before point, treating it as a \214lename.)-.15 E F1
-(complete\255user)108 609.6 Q(name \(M\255~\))-.15 E F0
-(Attempt completion on the te)144 621.6 Q
-(xt before point, treating it as a username.)-.15 E F1(possible\255user)
-108 633.6 Q(name\255completions \(C\255x ~\))-.15 E F0
-(List the possible completions of the te)144 645.6 Q
-(xt before point, treating it as a username.)-.15 E F1(complete\255v)108
-657.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144
-669.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E
-F1(possible\255v)108 681.6 Q(ariable\255completions \(C\255x $\))-.1 E
-F0(List the possible completions of the te)144 693.6 Q
-(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
-(complete\255hostname \(M\255@\))108 705.6 Q F0
-(Attempt completion on the te)144 717.6 Q
-(xt before point, treating it as a hostname.)-.15 E(GNU Bash 4.4)72 768
-Q(2016 August 26)142.895 E(47)192.055 E 0 Cg EP
-%%Page: 48 48
+(his command is unbound)-5.425 F(by def)144 669.6 Q(ault.)-.1 E F1
+(complete\255\214lename \(M\255/\))108 681.6 Q F0
+(Attempt \214lename completion on the te)144 693.6 Q(xt before point.)
+-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 705.6 Q
+F0(List the possible completions of the te)144 717.6 Q
+(xt before point, treating it as a \214lename.)-.15 E(GNU Bash 5.0)72
+768 Q(2018 December 7)139.295 E(49)188.455 E 0 Cg EP
+%%Page: 50 50
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(possible\255hostname\255completions \(C\255x @\))108 84 Q F0
-(List the possible completions of the te)144 96 Q
+SF(complete\255user)108 84 Q(name \(M\255~\))-.15 E F0
+(Attempt completion on the te)144 96 Q
+(xt before point, treating it as a username.)-.15 E F1(possible\255user)
+108 108 Q(name\255completions \(C\255x ~\))-.15 E F0
+(List the possible completions of the te)144 120 Q
+(xt before point, treating it as a username.)-.15 E F1(complete\255v)108
+132 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 144 Q
+(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
+(possible\255v)108 156 Q(ariable\255completions \(C\255x $\))-.1 E F0
+(List the possible completions of the te)144 168 Q
+(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
+(complete\255hostname \(M\255@\))108 180 Q F0
+(Attempt completion on the te)144 192 Q
 (xt before point, treating it as a hostname.)-.15 E F1
-(complete\255command \(M\255!\))108 108 Q F0 .581
-(Attempt completion on the te)144 120 R .581
+(possible\255hostname\255completions \(C\255x @\))108 204 Q F0
+(List the possible completions of the te)144 216 Q
+(xt before point, treating it as a hostname.)-.15 E F1
+(complete\255command \(M\255!\))108 228 Q F0 .581
+(Attempt completion on the te)144 240 R .581
 (xt before point, treating it as a command name.)-.15 F .58
-(Command comple-)5.58 F .715(tion attempts to match the te)144 132 R
+(Command comple-)5.58 F .715(tion attempts to match the te)144 252 R
 .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F
 .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F
-(\214nally e)144 144 Q -.15(xe)-.15 G
+(\214nally e)144 264 Q -.15(xe)-.15 G
 (cutable \214lenames, in that order).15 E(.)-.55 E F1
-(possible\255command\255completions \(C\255x !\))108 156 Q F0
-(List the possible completions of the te)144 168 Q
+(possible\255command\255completions \(C\255x !\))108 276 Q F0
+(List the possible completions of the te)144 288 Q
 (xt before point, treating it as a command name.)-.15 E F1
-(dynamic\255complete\255history \(M\255T)108 180 Q(AB\))-.9 E F0 .425
-(Attempt completion on the te)144 192 R .425
+(dynamic\255complete\255history \(M\255T)108 300 Q(AB\))-.9 E F0 .425
+(Attempt completion on the te)144 312 R .425
 (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424
 (ainst lines from the history list)-.05 F
-(for possible completion matches.)144 204 Q F1(dab)108 216 Q(br)-.1 E
+(for possible completion matches.)144 324 Q F1(dab)108 336 Q(br)-.1 E
 -.15(ev)-.18 G(\255expand).15 E F0 .61
-(Attempt menu completion on the te)144 228 R .611
+(Attempt menu completion on the te)144 348 R .611
 (xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611
 (ainst lines from the his-)-.05 F
-(tory list for possible completion matches.)144 240 Q F1
-(complete\255into\255braces \(M\255{\))108 252 Q F0 .4(Perform \214lena\
+(tory list for possible completion matches.)144 360 Q F1
+(complete\255into\255braces \(M\255{\))108 372 Q F0 .4(Perform \214lena\
 me completion and insert the list of possible completions enclosed with\
-in braces so)144 264 R(the list is a)144 276 Q -.25(va)-.2 G
+in braces so)144 384 R(the list is a)144 396 Q -.25(va)-.2 G
 (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 292.8 S(yboard Macr).25 E(os)-.18
-E(start\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
-.833 E F0(Be)144 316.8 Q(gin sa)-.15 E
+-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 412.8 S(yboard Macr).25 E(os)-.18
+E(start\255kbd\255macr)108 424.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
+.833 E F0(Be)144 436.8 Q(gin sa)-.15 E
 (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro.).15 E F1(end\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G
-(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 340.8 Q
+(board macro.).15 E F1(end\255kbd\255macr)108 448.8 Q 2.5(o\()-.18 G
+(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 460.8 Q
 (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
 (board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 352.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 364.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
+(call\255last\255kbd\255macr)108 472.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 484.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
 -.1 G .999(board macro de\214ned, by making the characters in the macro\
- appear as if).15 F(typed at the k)144 376.8 Q -.15(ey)-.1 G(board.).15
-E F1(print\255last\255kbd\255macr)108 388.8 Q 2.5(o\()-.18 G(\))-2.5 E
-F0(Print the last k)144 400.8 Q -.15(ey)-.1 G
+ appear as if).15 F(typed at the k)144 496.8 Q -.15(ey)-.1 G(board.).15
+E F1(print\255last\255kbd\255macr)108 508.8 Q 2.5(o\()-.18 G(\))-2.5 E
+F0(Print the last k)144 520.8 Q -.15(ey)-.1 G
 (board macro de\214ned in a format suitable for the).15 E/F2 10
 /Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1
-(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S<ad72>.18 E
+(Miscellaneous)87 537.6 Q -.18(re)108 549.6 S<ad72>.18 E
 (ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777
-(Read in the contents of the)144 441.6 R F2(inputr)4.277 E(c)-.37 E F0
+(Read in the contents of the)144 561.6 R F2(inputr)4.277 E(c)-.37 E F0
 1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776
 (indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144
-453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.248
-(Abort the current editing command and ring the terminal')144 477.6 R
+573.6 Q F1(abort \(C\255g\))108 585.6 Q F0 3.248
+(Abort the current editing command and ring the terminal')144 597.6 R
 5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1
-(bell\255style)144 489.6 Q F0(\).)A F1(do\255upper)108 501.6 Q
-(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 513.6 R F2(x)
-4.256 E F0 1.755(is lo)4.256 F 1.755
-(wercase, run the command that is bound to the corresponding)-.25 F
-(uppercase character)144 525.6 Q(.)-.55 E F1(pr)108 537.6 Q
-(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 549.6 Q
-(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0
-(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1
-(undo \(C\255_, C\255x C\255u\))108 561.6 Q F0
-(Incremental undo, separately remembered for each line.)144 573.6 Q F1
--2.29 -.18(re v)108 585.6 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 597.6 R 1.095(This is lik)6.095
+(bell\255style)144 609.6 Q F0(\).)A F1(do\255lo)108 621.6 Q(wer)-.1 E
+(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.)
+C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 633.6 R F2(x)
+4.239 E F0 1.739
+(is uppercase, run the command that is bound to the corresponding)4.239
+F(meta\214ed lo)144 645.6 Q(wercase character)-.25 E 5(.T)-.55 G
+(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)
+2.5 E(wercase.)-.25 E F1(pr)108 657.6 Q(e\214x\255meta \(ESC\))-.18 E F0
+(Metafy the ne)144 669.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
+SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
+(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 681.6 Q F0
+(Incremental undo, separately remembered for each line.)144 693.6 Q F1
+-2.29 -.18(re v)108 705.6 T(ert\255line \(M\255r\)).08 E F0 1.095
+(Undo all changes made to this line.)144 717.6 R 1.095(This is lik)6.095
 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
 F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 609.6 Q F1
-(tilde\255expand \(M\255&\))108 621.6 Q F0(Perform tilde e)144 633.6 Q
+(return the line to its initial state.)144 729.6 Q(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(50)188.455 E 0 Cg EP
+%%Page: 51 51
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(tilde\255expand \(M\255&\))108 84 Q F0(Perform tilde e)144 96 Q
 (xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 645.6 Q F0
-(Set the mark to the point.)144 657.6 Q(If a numeric ar)5 E
+(set\255mark \(C\255@, M\255<space>\))108 108 Q F0
+(Set the mark to the point.)144 120 Q(If a numeric ar)5 E
 (gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 669.6 Q F0(Sw)
-144 681.6 Q .283(ap the point with the mark.)-.1 F .283
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 132 Q F0(Sw)144
+144 Q .283(ap the point with the mark.)-.1 F .283
 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
 2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa)
-144 693.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144
-717.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G
-3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
+144 156 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 168 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 180 S
+.535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G 3.035(dt)
+.15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
 (xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05
 (ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 729.6 Q(vious occurrences.)-.25 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(48)192.055 E 0 Cg EP
-%%Page: 49 49
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(character\255sear)108 84 Q(ch\255backward \(M\255C\255]\))-.18 E F0
-3.544(Ac)144 96 S 1.044(haracter is read and point is mo)-3.544 F -.15
-(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
+144 192 Q(vious occurrences.)-.25 E F1(character\255sear)108 204 Q
+(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 216 S 1.044
+(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G
+3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
 (vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E
 -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 108 Q F1
-(skip\255csi\255sequence)108 120 Q F0 1.826
-(Read enough characters to consume a multi-k)144 132 R 2.126 -.15(ey s)
+(count searches for subsequent occurrences.)144 228 Q F1
+(skip\255csi\255sequence)108 240 Q F0 1.826
+(Read enough characters to consume a multi-k)144 252 R 2.126 -.15(ey s)
 -.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G
-4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 144 R .791
+4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 264 R .791
 (Such sequences be)5.791 F .791
 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F
-.331(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831
+.331(If this sequence is bound to "\\[", k)144 276 R -.15(ey)-.1 G 2.831
 (sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n)
 -.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-)
 -.15 E .026(itly bound to a readline command, instead of inserting stra\
-y characters into the editing b)144 168 R(uf)-.2 E(fer)-.25 E 5.026(.T)
--.55 G(his)-5.026 E(is unbound by def)144 180 Q(ault, b)-.1 E
+y characters into the editing b)144 288 R(uf)-.2 E(fer)-.25 E 5.026(.T)
+-.55 G(his)-5.026 E(is unbound by def)144 300 Q(ault, b)-.1 E
 (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
-192 Q F0 -.4(Wi)144 204 S .48(thout a numeric ar).4 F .48(gument, the v)
+312 Q F0 -.4(Wi)144 324 S .48(thout a numeric ar).4 F .48(gument, the v)
 -.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0
--.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 216 Q .245
+-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 336 Q .245
 (ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244
 (gument is supplied, this command acts as a toggle: if)-.18 F .321
-(the characters at the be)144 228 R .321
+(the characters at the be)144 348 R .321
 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
 (comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is)
--.25 F .832(inserted, otherwise the characters in)144 240 R F1
+-.25 F .832(inserted, otherwise the characters in)144 360 R F1
 (comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831
 (ginning of the line.)-.15 F 1.468
-(In either case, the line is accepted as if a ne)144 252 R 1.468
+(In either case, the line is accepted as if a ne)144 372 R 1.468
 (wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F
-1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 264 Q F0 .84
+1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 384 Q F0 .84
 (causes this command to mak)3.34 F 3.339(et)-.1 G .839
 (he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F
-(gu-)-.18 E(ment causes the comment character to be remo)144 276 Q -.15
+(gu-)-.18 E(ment causes the comment character to be remo)144 396 Q -.15
 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G
-(cuted by the shell.).15 E F1(glob\255complete\255w)108 288 Q
-(ord \(M\255g\))-.1 E F0 .791(The w)144 300 R .791
+(cuted by the shell.).15 E F1(glob\255complete\255w)108 408 Q
+(ord \(M\255g\))-.1 E F0 .791(The w)144 420 R .791
 (ord before point is treated as a pattern for pathname e)-.1 F .792
-(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 312
+(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 432
 R(pattern is used to generate a list of matching \214lenames for possib\
-le completions.)2.5 E F1(glob\255expand\255w)108 324 Q(ord \(C\255x *\))
--.1 E F0 .176(The w)144 336 R .176
+le completions.)2.5 E F1(glob\255expand\255w)108 444 Q(ord \(C\255x *\))
+-.1 E F0 .176(The w)144 456 R .176
 (ord before point is treated as a pattern for pathname e)-.1 F .176
 (xpansion, and the list of matching \214le-)-.15 F .516
-(names is inserted, replacing the w)144 348 R 3.016(ord. If)-.1 F 3.016
+(names is inserted, replacing the w)144 468 R 3.016(ord. If)-.1 F 3.016
 (an)3.016 G .516(umeric ar)-3.016 F .516
 (gument is supplied, an asterisk is appended)-.18 F(before pathname e)
-144 360 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\))
-108 372 Q F0 .923(The list of e)144 384 R .923(xpansions that w)-.15 F
+144 480 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\))
+108 492 Q F0 .923(The list of e)144 504 R .923(xpansions that w)-.15 F
 .923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1
 (glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F
-.872(the line is redra)144 396 R 3.372(wn. If)-.15 F 3.372(an)3.372 G
+.872(the line is redra)144 516 R 3.372(wn. If)-.15 F 3.372(an)3.372 G
 .872(umeric ar)-3.372 F .872
 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15
-(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .627
-(Print all of the functions and their k)144 432 R .927 -.15(ey b)-.1 H
+(ex)144 528 S(pansion.).15 E F1(dump\255functions)108 540 Q F0 .627
+(Print all of the functions and their k)144 552 R .927 -.15(ey b)-.1 H
 .626(indings to the readline output stream.).15 F .626(If a numeric ar)
 5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 444 Q
+(ment is supplied, the output is formatted in such a w)144 564 Q
 (ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr)
-2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 456 Q(ariables)-.1 E F0
-1.799(Print all of the settable readline v)144 468 R 1.799
+2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 576 Q(ariables)-.1 E F0
+1.799(Print all of the settable readline v)144 588 R 1.799
 (ariables and their v)-.25 F 1.8(alues to the readline output stream.)
--.25 F 1.8(If a)6.8 F .305(numeric ar)144 480 R .304
+-.25 F 1.8(If a)6.8 F .305(numeric ar)144 600 R .304
 (gument is supplied, the output is formatted in such a w)-.18 F .304
-(ay that it can be made part of an)-.1 F F2(inputr)144 492 Q(c)-.37 E F0
-(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .592
-(Print all of the readline k)144 516 R .892 -.15(ey s)-.1 H .592
+(ay that it can be made part of an)-.1 F F2(inputr)144 612 Q(c)-.37 E F0
+(\214le.)2.5 E F1(dump\255macr)108 624 Q(os)-.18 E F0 .592
+(Print all of the readline k)144 636 R .892 -.15(ey s)-.1 H .592
 (equences bound to macros and the strings the).15 F 3.093(yo)-.15 G
-3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 528 Q
+3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 648 Q
 .528(gument is supplied, the output is formatted in such a w)-.18 F .528
 (ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0
-(\214le.)144 540 Q F1(display\255shell\255v)108 552 Q
-(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 564 Q
+(\214le.)144 660 Q F1(display\255shell\255v)108 672 Q
+(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 684 Q
 (ersion information about the current instance of)-.15 E F1(bash)2.5 E
-F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108
-592.8 R .147(ord completion is attempted for an ar)-.1 F .147
+F0(.)A F1(Pr)87 700.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108
+712.8 R .147(ord completion is attempted for an ar)-.1 F .147
 (gument to a command for which a completion speci\214cation \(a)-.18 F
-F2(compspec)108 604.8 Q F0 3.829(\)h)C 1.329
+F2(compspec)108 724.8 Q F0 3.829(\)h)C 1.329
 (as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu)
 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829
 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the)
--.25 F(programmable completion f)108 616.8 Q(acilities are in)-.1 E -.2
-(vo)-.4 G -.1(ke).2 G(d.).1 E .497
-(First, the command name is identi\214ed.)108 633.6 R .497
-(If the command w)5.497 F .498
-(ord is the empty string \(completion attempted at)-.1 F .234(the be)108
-645.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
-(ompspec de\214ned with the)-2.733 F F1<ad45>2.733 E F0 .233(option to)
-2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-)
-5.233 F .481(spec has been de\214ned for that command, the compspec is \
-used to generate the list of possible completions)108 657.6 R .823
-(for the w)108 669.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F
-.822(ord is a full pathname, a compspec for the full pathname is search\
-ed for)-.1 F 2.866(\214rst. If)108 681.6 R .367(no compspec is found fo\
-r the full pathname, an attempt is made to \214nd a compspec for the po\
-rtion)2.866 F(follo)108 693.6 Q .299(wing the \214nal slash.)-.25 F .298
-(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15
-G .298(ompspec de\214ned with the)-2.798 F F1<ad44>2.798 E F0(option to)
-108 705.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E
-.817(Once a compspec has been found, it is used to generate the list of\
- matching w)108 722.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817
-(ompspec is not)-3.317 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E
-(49)192.055 E 0 Cg EP
-%%Page: 50 50
+-.25 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(51)188.455 E 0 Cg
+EP
+%%Page: 52 52
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(found, the def)108
-84 Q(ault)-.1 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0
-(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1
-(Completing)2.5 E F0(is performed.)2.5 E .464
-(First, the actions speci\214ed by the compspec are used.)108 100.8 R
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(programmable completion f)108 84 Q(acilities are in)-.1 E -.2(vo)-.4 G
+-.1(ke).2 G(d.).1 E .497(First, the command name is identi\214ed.)108
+100.8 R .497(If the command w)5.497 F .498
+(ord is the empty string \(completion attempted at)-.1 F .234(the be)108
+112.8 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
+(ompspec de\214ned with the)-2.733 F/F1 10/Times-Bold@0 SF<ad45>2.733 E
+F0 .233(option to)2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F
+.233(If a comp-)5.233 F .481(spec has been de\214ned for that command, \
+the compspec is used to generate the list of possible completions)108
+124.8 R .823(for the w)108 136.8 R 3.323(ord. If)-.1 F .823
+(the command w)3.323 F .822(ord is a full pathname, a compspec for the \
+full pathname is searched for)-.1 F 2.866(\214rst. If)108 148.8 R .367(\
+no compspec is found for the full pathname, an attempt is made to \214n\
+d a compspec for the portion)2.866 F(follo)108 160.8 Q .299
+(wing the \214nal slash.)-.25 F .298
+(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15
+G .298(ompspec de\214ned with the)-2.798 F F1<ad44>2.798 E F0 .056
+(option to)108 172.8 R F1(complete)2.556 E F0 .056(is used as the def)
+2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056
+(ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F
+.057(xpansion on)-.15 F .333(the command w)108 184.8 R .332(ord as a \
+\214nal resort, and attempts to \214nd a compspec for the command w)-.1
+F .332(ord from an)-.1 F 2.832(ys)-.15 G(uc-)-2.832 E(cessful e)108
+196.8 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\
+d to generate the list of matching w)108 213.6 R 3.317(ords. If)-.1 F
+3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 225.6 Q
+(ault)-.1 E F1(bash)2.5 E F0(completion as described abo)2.5 E .3 -.15
+(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .464
+(First, the actions speci\214ed by the compspec are used.)108 242.4 R
 .463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F
-.463(ord being)-.1 F .595(completed are returned.)108 112.8 R .595
+.463(ord being)-.1 F .595(completed are returned.)108 254.4 R .595
 (When the)5.595 F F1<ad66>3.095 E F0(or)3.095 E F1<ad64>3.095 E F0 .596
 (option is used for \214lename or directory name completion, the)3.095 F
-(shell v)108 124.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E
-F0(is used to \214lter the matches.)2.25 E(An)108 141.6 Q 4.084(yc)-.15
+(shell v)108 266.4 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E
+F0(is used to \214lter the matches.)2.25 E(An)108 283.2 Q 4.084(yc)-.15
 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584
 (xpansion pattern to the)-.15 F F1<ad47>4.084 E F0 1.584
-(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 153.6 S
+(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 295.2 S
 .554(rds generated by the pattern need not match the w).1 F .555
 (ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555
 (shell v)2.805 F(ari-)-.25 E
-(able is not used to \214lter the matches, b)108 165.6 Q(ut the)-.2 E F2
-(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 182.4 Q
-.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18
-F F1<ad57>2.821 E F0 .32(option is considered.)2.821 F .32
+(able is not used to \214lter the matches, b)108 307.2 Q(ut the)-.2 E F2
+(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 324 Q .321
+(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 F
+F1<ad57>2.821 E F0 .32(option is considered.)2.821 F .32
 (The string is \214rst split using the)5.32 F .412(characters in the)108
-194.4 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412
+336 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412
 (ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F
 .413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092
-(using brace e)108 206.4 R .092(xpansion, tilde e)-.15 F .092
+(using brace e)108 348 R .092(xpansion, tilde e)-.15 F .092
 (xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091
-(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108
-218.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H
-(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0
-1.396(The results are split using the rules described)5.896 F(abo)108
-230.4 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21
-(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209
+(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 360
+R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H(nder)
+.15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 1.396
+(The results are split using the rules described)5.896 F(abo)108 372 Q
+.51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21(rd Splitting).75 F
+F0 5.21(.T)C .209(he results of the e)-5.21 F .209
 (xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209
-(ord being com-)-.1 F(pleted, and the matching w)108 242.4 Q
+(ord being com-)-.1 F(pleted, and the matching w)108 384 Q
 (ords become the possible completions.)-.1 E 1.237
-(After these matches ha)108 259.2 R 1.537 -.15(ve b)-.2 H 1.237
+(After these matches ha)108 400.8 R 1.537 -.15(ve b)-.2 H 1.237
 (een generated, an).15 F 3.737(ys)-.15 G 1.238
 (hell function or command speci\214ed with the)-3.737 F F1<ad46>3.738 E
-F0(and)3.738 E F1<ad43>3.738 E F0 3.376(options is in)108 271.2 R -.2
+F0(and)3.738 E F1<ad43>3.738 E F0 3.376(options is in)108 412.8 R -.2
 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375
 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375
 (d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2
-(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25
+(COMP_KEY)108 424.8 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25
 (va)2.407 G .157(riables are assigned v).25 F .157
 (alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158
 (Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108
-295.2 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G
+436.8 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G
 .986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2
 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986
 (riables are also set.).25 F(When)5.985 E .346
-(the function or command is in)108 307.2 R -.2(vo)-.4 G -.1(ke).2 G .346
+(the function or command is in)108 448.8 R -.2(vo)-.4 G -.1(ke).2 G .346
 (d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C
 2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments)
--.18 E .264(are being completed, the second ar)108 319.2 R .264
+-.18 E .264(are being completed, the second ar)108 460.8 R .264
 (gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w)
 -2.764 F .263(ord being completed, and the third ar)-.1 F .263
-(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 331.2
+(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 472.8
 R .628(ord preceding the w)-.1 F .629
 (ord being completed on the current command line.)-.1 F .629
-(No \214ltering of the generated)5.629 F .715(completions ag)108 343.2 R
+(No \214ltering of the generated)5.629 F .715(completions ag)108 484.8 R
 .715(ainst the w)-.05 F .714(ord being completed is performed; the func\
 tion or command has complete free-)-.1 F(dom in generating the matches.)
-108 355.2 Q(An)108 372 Q 2.937(yf)-.15 G .437(unction speci\214ed with)
--2.937 F F1<ad46>2.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G
-2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F
-2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438
-(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.957 E F0 -.2(bu)
-2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og)
-.65 G .456(enerate the matches.)-2.956 F .456
-(It must put the possible completions in the)5.456 F F2(COMPREPL)108 396
-Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 E(Ne)
-108 412.8 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08
+108 496.8 Q(An)108 513.6 Q 2.937(yf)-.15 G .437
+(unction speci\214ed with)-2.937 F F1<ad46>2.937 E F0 .437(is in)2.937 F
+-.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437
+(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437
+(he shell f)-2.937 F .438(acilities, including)-.1 F(the)108 525.6 Q F1
+(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756
+-.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456
+(It must put the possible completions in the)5.456 F F2(COMPREPL)108
+537.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25
+E(Ne)108 554.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08
 (ommand speci\214ed with the)-2.58 F F1<ad43>2.58 E F0 .081
 (option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na)
 -2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25
-(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 424.8
+(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 566.4
 R .359(should print a list of completions, one per line, to the standar\
 d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108
-436.8 Q(wline, if necessary)-.25 E(.)-.65 E .376
-(After all of the possible completions are generated, an)108 453.6 R
+578.4 Q(wline, if necessary)-.25 E(.)-.65 E .376
+(After all of the possible completions are generated, an)108 595.2 R
 2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.877
-E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 465.6 R
+E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 607.2 R
 .682(\214lter is a pattern as used for pathname e)3.182 F .681
 (xpansion; a)-.15 F F1(&)3.181 E F0 .681
 (in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522
-(the w)108 477.6 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G
+(the w)108 619.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G
 (iteral)-3.022 E F1(&)3.022 E F0 .523
 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve)
--.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 489.6 R
+-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 631.2 R
 (An)5.85 E 3.35(yc)-.15 G .849
 (ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G
 3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading)
--3.349 E F1(!)3.349 E F0(ne)108 501.6 Q -.05(ga)-.15 G .764
+-3.349 E F1(!)3.349 E F0(ne)108 643.2 Q -.05(ga)-.15 G .764
 (tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764
 (ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G
-3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 513.6 Q F0
+3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 655.2 Q F0
 (shell option is enabled, the match is performed without re)2.5 E -.05
 (ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108
-530.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15
-F .587(\214x speci\214ed with the)-.25 F F1<ad50>3.087 E F0(and)3.087 E
-F1<ad53>3.087 E F0 .587(options are added to each member of the com-)
-3.087 F(pletion list, and the result is returned to the readline comple\
-tion code as the list of possible completions.)108 542.4 Q .246
-(If the pre)108 559.2 R .247(viously-applied actions do not generate an)
--.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)
-2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F
-F1(complete)108 571.2 Q F0(when the compspec w)2.5 E
-(as de\214ned, directory name completion is attempted.)-.1 E .462
-(If the)108 588 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962
-F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462
-(when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1
-F(pletion is attempted and an)108 600 Q 2.5(ym)-.15 G
+672 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F
+.587(\214x speci\214ed with the)-.25 F F1<ad50>3.087 E F0(and)3.087 E F1
+<ad53>3.087 E F0 .587(options are added to each member of the com-)3.087
+F(pletion list, and the result is returned to the readline completion c\
+ode as the list of possible completions.)108 684 Q .246(If the pre)108
+700.8 R .247(viously-applied actions do not generate an)-.25 F 2.747(ym)
+-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names)
+-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F F1(complete)
+108 712.8 Q F0(when the compspec w)2.5 E
+(as de\214ned, directory name completion is attempted.)-.1 E 2.03
+(If the)108 729.6 R F1 2.03(\255o plusdirs)4.53 F F0 2.03(option w)4.53
+F 2.029(as supplied to)-.1 F F1(complete)4.529 E F0 2.029
+(when the compspec w)4.529 F 2.029(as de\214ned, directory name)-.1 F
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(52)188.455 E 0 Cg EP
+%%Page: 53 53
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(completion is attempted and an)108 84 Q 2.5(ym)-.15 G
 (atches are added to the results of the other actions.)-2.5 E .559
-(By def)108 616.8 R .559(ault, if a compspec is found, whate)-.1 F -.15
+(By def)108 100.8 R .559(ault, if a compspec is found, whate)-.1 F -.15
 (ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56
 (enerates is returned to the completion code as the full set)-3.059 F
-.632(of possible completions.)108 628.8 R .632(The def)5.632 F(ault)-.1
-E F1(bash)3.132 E F0 .631
+.632(of possible completions.)108 112.8 R .632(The def)5.632 F(ault)-.1
+E/F1 10/Times-Bold@0 SF(bash)3.132 E F0 .631
 (completions are not attempted, and the readline def)3.131 F .631
-(ault of \214le-)-.1 F .558(name completion is disabled.)108 640.8 R
+(ault of \214le-)-.1 F .558(name completion is disabled.)108 124.8 R
 .558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w)
 3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559
-(when the compspec)3.059 F -.1(wa)108 652.8 S 3.172(sd).1 G .672
+(when the compspec)3.059 F -.1(wa)108 136.8 S 3.172(sd).1 G .672
 (e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671
 (ault completions are attempted if the compspec generates no matches.)
--.1 F .671(If the)5.671 F F1<ad6f>3.171 E(default)108 664.8 Q F0 1.207
+-.1 F .671(If the)5.671 F F1<ad6f>3.171 E(default)108 148.8 Q F0 1.207
 (option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0
 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F
 3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F
 (will be performed if the compspec \(and, if attempted, the def)108
-676.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.)
+160.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.)
 2.5 E .245(When a compspec indicates that directory name completion is \
-desired, the programmable completion func-)108 693.6 R .632(tions force\
+desired, the programmable completion func-)108 177.6 R .632(tions force\
  readline to append a slash to completed names which are symbolic links\
- to directories, subject)108 705.6 R 2.762(to the v)108 717.6 R 2.762
+ to directories, subject)108 189.6 R 2.762(to the v)108 201.6 R 2.762
 (alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761
 (readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761
-(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 729.6
+(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 213.6
 Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(50)192.055 E 0 Cg EP
-%%Page: 51 51
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .19
-(There is some support for dynamically modifying completions.)108 84 R
-.191(This is most useful when used in combina-)5.191 F 1.33
-(tion with a def)108 96 R 1.33(ault completion speci\214ed with)-.1 F/F1
-10/Times-Bold@0 SF 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83
-(sp)-.55 G 1.33(ossible for shell functions e)-3.83 F -.15(xe)-.15 G
-1.33(cuted as).15 F .93(completion handlers to indicate that completion\
- should be retried by returning an e)108 108 R .93(xit status of 124.)
--.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the c\
-ompspec associated with the command on which completion is)108 120 R
-.665(being attempted \(supplied as the \214rst ar)108 132 R .666
+.19(There is some support for dynamically modifying completions.)108
+230.4 R .191(This is most useful when used in combina-)5.191 F 1.172
+(tion with a def)108 242.4 R 1.172(ault completion speci\214ed with)-.1
+F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp)
+-.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172
+(cuted as).15 F .93(completion handlers to indicate that completion sho\
+uld be retried by returning an e)108 254.4 R .93(xit status of 124.)-.15
+F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\
+ec associated with the command on which completion is)108 266.4 R .665
+(being attempted \(supplied as the \214rst ar)108 278.4 R .666
 (gument when the function is e)-.18 F -.15(xe)-.15 G .666
 (cuted\), programmable completion).15 F .084(restarts from the be)108
-144 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25
-G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F .083
-(ws a set of)-.25 F(completions to be b)108 156 Q(uilt dynamically as c\
-ompletion is attempted, rather than being loaded all at once.)-.2 E -.15
-(Fo)108 172.8 S 2.636(ri).15 G .137
+290.4 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)
+-.25 G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F
+.083(ws a set of)-.25 F(completions to be b)108 302.4 Q(uilt dynamicall\
+y as completion is attempted, rather than being loaded all at once.)-.2
+E -.15(Fo)108 319.2 S 2.636(ri).15 G .137
 (nstance, assuming that there is a library of compspecs, each k)-2.636 F
 .137(ept in a \214le corresponding to the name of)-.1 F
-(the command, the follo)108 184.8 Q(wing def)-.25 E
+(the command, the follo)108 331.2 Q(wing def)-.25 E
 (ault completion function w)-.1 E(ould load completions dynamically:)-.1
-E/F2 10/Courier@0 SF(_completion_loader\(\))108 201.6 Q({)108 213.6 Q 6
-(.")144 225.6 S
-(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108
-237.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108
-249.6 Q/F3 10.95/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0
-.372(When the)108 290.4 R F1 .372(\255o history)2.872 F F0 .372
+E/F2 10/Courier@0 SF(_completion_loader\(\))108 348 Q({)108 360 Q 6(.")
+144 372 S(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6
+E(})108 384 Q
+(complete -D -F _completion_loader -o bashdefault -o default)108 396 Q
+/F3 10.95/Times-Bold@0 SF(HIST)72 424.8 Q(OR)-.197 E(Y)-.383 E F0 .372
+(When the)108 436.8 R F1 .372(\255o history)2.872 F F0 .372
 (option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372
 (iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F4
 10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304
-(the list of commands pre)108 302.4 R .304(viously typed.)-.25 F .304
+(the list of commands pre)108 448.8 R .304(viously typed.)-.25 F .304
 (The v)5.304 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE)
 2.804 E F0 -.25(va)2.554 G .305(riable is used as the number of com-).25
-F .43(mands to sa)108 314.4 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43
+F .43(mands to sa)108 460.8 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43
 (istory list.)-2.93 F .43(The te)5.43 F .429(xt of the last)-.15 F F5
 (HISTSIZE)2.929 E F0 .429(commands \(def)2.679 F .429(ault 500\) is sa)
 -.1 F -.15(ve)-.2 G 2.929(d. The).15 F(shell)2.929 E .287
 (stores each command in the history list prior to parameter and v)108
-326.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E
-(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 338.4
+472.8 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E
+(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 484.8
 S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565
 (xpansion is performed, subject to the v)-.15 F 1.565
 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0
-(and)3.815 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.)
+(and)3.815 E F5(HISTCONTR)108 496.8 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.)
 A F0 .082
 (On startup, the history is initialized from the \214le named by the v)
-108 367.2 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1
+108 513.6 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1
 E F4(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108
-379.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315
+525.6 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315
 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G
 .315(ontain no more than the number of)-2.815 F .658
-(lines speci\214ed by the v)108 391.2 R .658(alue of)-.25 F F5
+(lines speci\214ed by the v)108 537.6 R .658(alue of)-.25 F F5
 (HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F1(HISTFILESIZE)3.158 E F0
-.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 403.2 S
+.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 549.6 S
 .142(lue, or a numeric v).25 F .142
 (alue less than zero, the history \214le is not truncated.)-.25 F .142
-(When the history \214le is read, lines)5.142 F(be)108 415.2 Q 1.604
+(When the history \214le is read, lines)5.142 F(be)108 561.6 Q 1.604
 (ginning with the history comment character follo)-.15 F 1.604
-(wed immediately by a digit are interpreted as time-)-.25 F .098
-(stamps for the preceding history line.)108 427.2 R .098
-(These timestamps are optionally displayed depending on the v)5.098 F
-.098(alue of)-.25 F(the)108 439.2 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E
-F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059
+(wed immediately by a digit are interpreted as time-)-.25 F .151
+(stamps for the follo)108 573.6 R .151(wing history line.)-.25 F .151
+(These timestamps are optionally displayed depending on the v)5.151 F
+.15(alue of)-.25 F(the)108 585.6 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E F0
+-.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059
 (hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5
 ($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159
-(copied from the history list to)108 451.2 R F5($HISTFILE)2.659 E F6(.)A
+(copied from the history list to)108 597.6 R F5($HISTFILE)2.659 E F6(.)A
 F0 .159(If the)4.659 F F1(histappend)2.658 E F0 .158
 (shell option is enabled \(see the description of)2.658 F F1(shopt)108
-463.2 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081
+609.6 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081
 (TIN COMMANDS)-.828 F F0(belo)2.332 E .082
 (w\), the lines are appended to the history \214le, otherwise the)-.25 F
-.197(history \214le is o)108 475.2 R -.15(ve)-.15 G 2.697(rwritten. If)
+.197(history \214le is o)108 621.6 R -.15(ve)-.15 G 2.697(rwritten. If)
 .15 F F5(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\
  unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583
-(If the)108 487.2 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834
+(If the)108 633.6 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834
 G .584
 (riable is set, time stamps are written to the history \214le, mark).25
-F .584(ed with the his-)-.1 F 1.148(tory comment character)108 499.2 R
+F .584(ed with the his-)-.1 F 1.148(tory comment character)108 645.6 R
 3.648(,s)-.4 G 3.648(ot)-3.648 G(he)-3.648 E 3.648(ym)-.15 G 1.147
 (ay be preserv)-3.648 F 1.147(ed across shell sessions.)-.15 F 1.147
 (This uses the history comment)6.147 F 1.376
-(character to distinguish timestamps from other history lines.)108 511.2
+(character to distinguish timestamps from other history lines.)108 657.6
 R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.877(,t)-.65 G
 1.377(he history \214le is)-3.877 F .757
-(truncated to contain no more than)108 523.2 R F5(HISTFILESIZE)3.257 E
+(truncated to contain no more than)108 669.6 R F5(HISTFILESIZE)3.257 E
 F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757
-(is unset, or set to null, a non-)3.007 F(numeric v)108 535.2 Q
+(is unset, or set to null, a non-)3.007 F(numeric v)108 681.6 Q
 (alue, or a numeric v)-.25 E
 (alue less than zero, the history \214le is not truncated.)-.25 E .298
-(The b)108 552 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see)2.798
-E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0(belo)
-2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15(xe)
--.15 G(-).15 E .472(cute a portion of the history list.)108 564 R(The)
-5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471
-(iltin may be used to display or modify the history list and).2 F .001
-(manipulate the history \214le.)108 576 R .001
-(When using command-line editing, search commands are a)5.001 F -.25(va)
--.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 588 Q
-(vide access to the history list.)-.15 E 1.486(The shell allo)108 604.8
-R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486
-(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt)
--3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F5(HISTCONTR)3.985
-E(OL)-.27 E F0(and)3.735 E F5(HISTIGNORE)108 616.8 Q F0 -.25(va)2.707 G
-.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o)
--.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F1
-(cmdhist)108 628.8 Q F0 .75
+(The b)108 698.4 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see)
+2.798 E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0
+(belo)2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15
+(xe)-.15 G(-).15 E .472(cute a portion of the history list.)108 710.4 R
+(The)5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471
+(iltin may be used to display or modify the history list and).2 F 1.603
+(manipulate the history \214le.)108 722.4 R 1.604
+(When using command-line editing, search commands are a)6.604 F -.25(va)
+-.2 G 1.604(ilable in each).25 F(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(53)188.455 E 0 Cg EP
+%%Page: 54 54
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(editing mode that pro)108 84 Q(vide access to the history list.)-.15 E
+1.486(The shell allo)108 100.8 R 1.486(ws control o)-.25 F -.15(ve)-.15
+G 3.986(rw).15 G 1.486(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986
+(do).15 G 3.986(nt)-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E
+/F1 9/Times-Bold@0 SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1
+(HISTIGNORE)108 112.8 Q F0 -.25(va)2.707 G .457
+(riables may be set to cause the shell to sa).25 F .758 -.15(ve o)-.2 H
+.458(nly a subset of the commands entered.).15 F(The)5.458 E/F2 10
+/Times-Bold@0 SF(cmdhist)108 124.8 Q F0 .75
 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05
 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077
-(the same history entry)108 640.8 R 3.577(,a)-.65 G 1.077
+(the same history entry)108 136.8 R 3.577(,a)-.65 G 1.077
 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G
-1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.577 E F0
-.374(shell option causes the shell to sa)108 652.8 R .674 -.15(ve t)-.2
+1.077(yntactic correctness.)-3.577 F(The)6.077 E F2(lithist)3.577 E F0
+.374(shell option causes the shell to sa)108 148.8 R .674 -.15(ve t)-.2
 H .374(he command with embedded ne).15 F .373
 (wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318
-(description of the)108 664.8 R F1(shopt)2.818 E F0 -.2(bu)2.818 G .318
-(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F
+(description of the)108 160.8 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318
+(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F
 (UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319
 (for information on setting and)2.568 F(unsetting shell options.)108
-676.8 Q F3(HIST)72 693.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E
-(ANSION)-.81 E F0 .611(The shell supports a history e)108 705.6 R .611
+172.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 189.6 Q(OR)-.197 E 2.738(YE)
+-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611
+(The shell supports a history e)108 201.6 R .611
 (xpansion feature that is similar to the history e)-.15 F .61
-(xpansion in)-.15 F F1(csh.)3.11 E F0 .61(This section)5.61 F .87
-(describes what syntax features are a)108 717.6 R -.25(va)-.2 G 3.371
+(xpansion in)-.15 F F2(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 F
+.87(describes what syntax features are a)108 213.6 R -.25(va)-.2 G 3.371
 (ilable. This).25 F .871(feature is enabled by def)3.371 F .871
 (ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F
-2.014(can be disabled using the)108 729.6 R F1(+H)4.514 E F0 2.014
-(option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014
-(iltin command \(see).2 F F5 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013
-(TIN COMMANDS)-.828 F F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E
-(51)192.055 E 0 Cg EP
-%%Page: 52 52
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(belo)108 84 Q 2.5
-(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H
-(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E
-1.305(History e)108 100.8 R 1.305(xpansions introduce w)-.15 F 1.306(or\
-ds from the history list into the input stream, making it easy to repea\
-t)-.1 F .21(commands, insert the ar)108 112.8 R .21(guments to a pre)
--.18 F .209
+2.014(can be disabled using the)108 225.6 R F2(+H)4.514 E F0 2.014
+(option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014
+(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013
+(TIN COMMANDS)-.828 F F0(belo)108 237.6 Q 2.5(w\). Non-interacti)-.25 F
+.3 -.15(ve s)-.25 H(hells do not perform history e).15 E
+(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 254.4 R 1.305
+(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
+ input stream, making it easy to repeat)-.1 F .21
+(commands, insert the ar)108 266.4 R .21(guments to a pre)-.18 F .209
 (vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(commands quickly)108 124.8 Q(.)-.65 E 1.163(History e)108
-141.6 R 1.163(xpansion is performed immediately after a complete line i\
-s read, before the shell breaks it into)-.15 F -.1(wo)108 153.6 S 3.2
-(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2
-(arts. The)-3.2 F .7
-(\214rst is to determine which line from the history list to use during)
-3.2 F 4.367(substitution. The)108 165.6 R 1.868(second is to select por\
-tions of that line for inclusion into the current one.)4.367 F 1.868
-(The line)6.868 F .663(selected from the history is the)108 177.6 R/F1
-10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663
-(nd the portions of that line that are acted upon are)-3.163 F F1(wor)
-3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F1(modi\214er)108 189.6
-Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226
-(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227
-(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F
-(ashion)-.1 E .352(as when reading input, so that se)108 201.6 R -.15
-(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351
-(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624
-(one w)108 213.6 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624
-(pansions are introduced by the appearance of the history e).15 F .625
-(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 225.6 Q
-/F2 10/Times-Bold@0 SF(!)3.511 E F0 .178(by def)3.511 F 2.678
-(ault. Only)-.1 F .178(backslash \()2.678 F F2(\\).833 E F0 2.678(\)a)
-.833 G .178(nd single quotes can quote the history e)-2.678 F .177
-(xpansion character)-.15 F 2.677(,b)-.4 G .177(ut the his-)-2.877 F .67
-(tory e)108 237.6 R .67(xpansion character is also treated as quoted if\
- it immediately precedes the closing double quote in a)-.15 F
-(double-quoted string.)108 249.6 Q(Se)108 266.4 Q -.15(ve)-.25 G .03
+F(vious)-.25 E(commands quickly)108 278.4 Q(.)-.65 E 1.163(History e)108
+295.2 R 1.163(xpansion is performed immediately after a complete line i\
+s read, before the shell breaks it into)-.15 F -.1(wo)108 307.2 S .252
+(rds, and is performed on each line indi).1 F .251
+(vidually without taking quoting on pre)-.25 F .251
+(vious lines into account.)-.25 F(It)5.251 E(tak)108 319.2 Q .145
+(es place in tw)-.1 F 2.645(op)-.1 G 2.646(arts. The)-2.645 F .146(\214\
+rst is to determine which line from the history list to use during subs\
+titution.)2.646 F .766(The second is to select portions of that line fo\
+r inclusion into the current one.)108 331.2 R .766
+(The line selected from the)5.766 F .253(history is the)108 343.2 R/F4
+10/Times-Italic@0 SF -.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253
+(nd the portions of that line that are acted upon are)-2.753 F F4(wor)
+2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F4(modi\214er)2.754 E(s)
+-.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539
+(able to manipulate the selected w)108 355.2 R 3.039(ords. The)-.1 F
+.538(line is brok)3.038 F .538(en into w)-.1 F .538(ords in the same f)
+-.1 F .538(ashion as when reading)-.1 F .572(input, so that se)108 367.2
+R -.15(ve)-.25 G(ral).15 E F4(metac)3.072 E(har)-.15 E(acter)-.15 E F0
+.572(-separated w)B .572(ords surrounded by quotes are considered one w)
+-.1 F 3.073(ord. His-)-.1 F .356(tory e)108 379.2 R .355
+(xpansions are introduced by the appearance of the history e)-.15 F .355
+(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F2(!)
+3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108
+391.2 R F2(\\).833 E F0 3.29(\)a).833 G .79
+(nd single quotes can quote the history e)-3.29 F .79
+(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F
+(xpansion)-.15 E .789(character is also treated as quoted if it immedia\
+tely precedes the closing double quote in a double-quoted)108 403.2 R
+(string.)108 415.2 Q(Se)108 432 Q -.15(ve)-.25 G .03
 (ral characters inhibit history e).15 F .03
 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25
-F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 278.4 T
-3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G
-.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)
--.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2
-(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E
-F0(will also inhibit e)108 290.4 Q(xpansion.)-.15 E(Se)108 307.2 Q -.15
-(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E
-F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109
-(vior of history e)-.2 F(xpansion.)-.15 E 1.142(If the)108 319.2 R F2
+F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 444 T 3.163
+(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G .662
+(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)-.25
+F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2(extglob)
+3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E F0
+(will also inhibit e)108 456 Q(xpansion.)-.15 E(Se)108 472.8 Q -.15(ve)
+-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 E
+F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11
+(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 484.8 R F2
 (histv)3.643 E(erify)-.1 E F0 1.143
 (shell option is enabled \(see the description of the)3.643 F F2(shopt)
 3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2
--.18(re)3.643 G(adline).18 E F0(is)3.643 E .461(being used, history sub\
-stitutions are not immediately passed to the shell parser)108 331.2 R
-5.46(.I)-.55 G .46(nstead, the e)-5.46 F .46(xpanded line)-.15 F 1.515
-(is reloaded into the)108 343.2 R F2 -.18(re)4.015 G(adline).18 E F0
-1.515(editing b)4.015 F(uf)-.2 E 1.516(fer for further modi\214cation.)
--.25 F(If)6.516 E F2 -.18(re)4.016 G(adline).18 E F0 1.516
-(is being used, and the)4.016 F F2(histr)108 355.2 Q(eedit)-.18 E F0
-1.202(shell option is enabled, a f)3.702 F 1.202
+-.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\
+stitutions are not immediately passed to the shell parser)108 496.8 R
+5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F
+1.516(is reloaded into the)108 508.8 R F2 -.18(re)4.016 G(adline).18 E
+F0 1.516(editing b)4.016 F(uf)-.2 E 1.516
+(fer for further modi\214cation.)-.25 F(If)6.516 E F2 -.18(re)4.015 G
+(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 520.8
+Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202
 (ailed history substitution will be reloaded into the)-.1 F F2 -.18(re)
-3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 367.2 S -.25(ff).2 G
-1.16(er for correction.).25 F(The)6.16 E F2<ad70>3.66 E F0 1.16
-(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161
-(iltin command may be used to see what a history).2 F -.15(ex)108 379.2
-S .056(pansion will do before using it.).15 F(The)5.056 E F2<ad73>2.556
-E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G
-.055(iltin may be used to add commands to the).2 F
-(end of the history list without actually e)108 391.2 Q -.15(xe)-.15 G
+3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 532.8 S -.25(ff).2 G
+1.161(er for correction.).25 F(The)6.161 E F2<ad70>3.661 E F0 1.161
+(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16
+(iltin command may be used to see what a history).2 F -.15(ex)108 544.8
+S .055(pansion will do before using it.).15 F(The)5.055 E F2<ad73>2.555
+E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G
+.056(iltin may be used to add commands to the).2 F
+(end of the history list without actually e)108 556.8 Q -.15(xe)-.15 G
 (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G
-(ilable for subsequent recall.).25 E 2.2(The shell allo)108 408 R 2.2
+(ilable for subsequent recall.).25 E 2.2(The shell allo)108 573.6 R 2.2
 (ws control of the v)-.25 F 2.2(arious characters used by the history e)
--.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.147(description of)108
-420 R F2(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder)
-.15 E F2 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146
+-.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108
+585.6 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder)
+.15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147
 (shell uses the history comment character to)3.646 F
-(mark history timestamps when writing the history \214le.)108 432 Q F2
-(Ev)87 448.8 Q(ent Designators)-.1 E F0 .204(An e)108 460.8 R -.15(ve)
+(mark history timestamps when writing the history \214le.)108 597.6 Q F2
+(Ev)87 614.4 Q(ent Designators)-.1 E F0 .205(An e)108 626.4 R -.15(ve)
 -.25 G .204(nt designator is a reference to a command line entry in the\
- history list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e)
-108 472.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5
-(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 489.6
-Q F0 1.608(Start a history substitution, e)144 489.6 R 1.608
+ history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e)
+108 638.4 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5
+(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 655.2
+Q F0 1.607(Start a history substitution, e)144 655.2 R 1.607
 (xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107
-(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F
-(\(when the)144 501.6 Q F2(extglob)2.5 E F0
+(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F
+(\(when the)144 667.2 Q F2(extglob)2.5 E F0
 (shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G
-(iltin\).).2 E F2(!)108 513.6 Q F1(n)A F0(Refer to command line)144
-513.6 Q F1(n)2.5 E F0(.).24 E F2<21ad>108 525.6 Q F1(n)A F0
-(Refer to the current command minus)144 525.6 Q F1(n)2.5 E F0(.).24 E F2
-(!!)108 537.6 Q F0(Refer to the pre)144 537.6 Q(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 549.6 Q F1(string)
+(iltin\).).2 E F2(!)108 679.2 Q F4(n)A F0(Refer to command line)144
+679.2 Q F4(n)2.5 E F0(.).24 E F2<21ad>108 691.2 Q F4(n)A F0
+(Refer to the current command minus)144 691.2 Q F4(n)2.5 E F0(.).24 E F2
+(!!)108 703.2 Q F0(Refer to the pre)144 703.2 Q(vious command.)-.25 E
+(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 715.2 Q F4(string)
 A F0 .865(Refer to the most recent command preceding the current positi\
-on in the history list starting with)144 549.6 R F1(string)144 561.6 Q
-F0(.).22 E F2(!?)108 573.6 Q F1(string)A F2([?])A F0 1.503(Refer to the\
- most recent command preceding the current position in the history list\
- containing)144 585.6 R F1(string)144 597.6 Q F0 5(.T).22 G(he trailing)
--5 E F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo)
-2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0
-SF(^)108 614.6 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0
-.783(Quick substitution.)144 621.6 R .783(Repeat the pre)5.783 F .784
-(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.284 E F1
-(string2)3.284 E F0 5.784(.E).02 G(qui)-5.784 E -.25(va)-.25 G .784
-(lent to).25 F -.74(``)144 633.6 S(!!:s/).74 E F1(string1)A F0(/)A F1
-(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0
-(belo)2.5 E(w\).)-.25 E F2(!#)108 645.6 Q F0
-(The entire command line typed so f)144 645.6 Q(ar)-.1 E(.)-.55 E F2
--.75(Wo)87 662.4 S(rd Designators).75 E F0 -.8(Wo)108 674.4 S 1.314
-(rd designators are used to select desired w).8 F 1.314(ords from the e)
--.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.313
-(separates the e)3.813 F -.15(ve)-.25 G 1.313(nt speci\214cation).15 F
-.529(from the w)108 686.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G
-3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
-(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
-($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
--3.029 E F2(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301
-(are numbered from the be)108 698.4 R 1.301
-(ginning of the line, with the \214rst w)-.15 F 1.3
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.3 G 1.3(rds are).8 F
-(inserted into the current line separated by single spaces.)108 710.4 Q
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(52)192.055 E 0 Cg EP
-%%Page: 53 53
+on in the history list starting with)144 715.2 R F4(string)144 727.2 Q
+F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(54)188.455 E
+0 Cg EP
+%%Page: 55 55
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5
-(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2
-10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w)
-A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5
-(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063
-(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar)
-2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064
-(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144
-144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0(The w)144 156 Q
-(ord matched by the most recent `?)-.1 E F2(string)A F0(?' search.)A F2
-(x)108.77 168 Q F1<ad>A F2(y)A F0 2.5(Ar)144 168 S(ange of w)-2.5 E
-(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E
-F2(y)A F0('.)A F1(*)108 180 Q F0 .316(All of the w)144 180 R .316
-(ords b)-.1 F .316(ut the zeroth.)-.2 F .315(This is a synon)5.315 F
-.315(ym for `)-.15 F F2(1\255$)A F0 2.815('. It)B .315
-(is not an error to use)2.815 F F1(*)2.815 E F0 .315(if there is)2.815 F
-(just one w)144 192 Q(ord in the e)-.1 E -.15(ve)-.25 G
-(nt; the empty string is returned in that case.).15 E F1(x*)108 204 Q F0
-(Abbre)144 204 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 216 Q
-F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1
-(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108
-232.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G
-(nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E
--.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 249.6 Q F0 .183
-(After the optional w)108 261.6 R .183(ord designator)-.1 F 2.683(,t)-.4
-G .184(here may appear a sequence of one or more of the follo)-2.683 F
-.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 273.6 Q F1(h)
-108 290.4 Q F0(Remo)144 290.4 Q .3 -.15(ve a t)-.15 H
+SF(!?)108 84 Q/F2 10/Times-Italic@0 SF(string)A F1([?])A F0 1.503(Refer\
+ to the most recent command preceding the current position in the histo\
+ry list containing)144 96 R F2(string)144 108 Q F0 5(.T).22 G
+(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2(string)2.84 E
+F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12
+/Times-Bold@0 SF(^)108 125 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3
+(^)5 I F0 .784(Quick substitution.)144 132 R .784(Repeat the pre)5.784 F
+.784(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.283 E
+F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783
+(lent to).25 F -.74(``)144 144 S(!!:s/).74 E F2(string1)A F0(/)A F2
+(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0
+(belo)2.5 E(w\).)-.25 E F1(!#)108 156 Q F0
+(The entire command line typed so f)144 156 Q(ar)-.1 E(.)-.55 E F1 -.75
+(Wo)87 172.8 S(rd Designators).75 E F0 -.8(Wo)108 184.8 S 1.313
+(rd designators are used to select desired w).8 F 1.314(ords from the e)
+-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 1.314
+(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F
+.53(from the w)108 196.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G
+3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
+(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1
+($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F1<ad>3.029 E F0 3.029(,o)C(r)
+-3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3
+(are numbered from the be)108 208.8 R 1.3
+(ginning of the line, with the \214rst w)-.15 F 1.301
+(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8
+F(inserted into the current line separated by single spaces.)108 220.8 Q
+F1 2.5(0\()108 237.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 249.6 Q
+2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E
+F2(n)108.36 261.6 Q F0(The)144 261.6 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E
+F1(^)108 273.6 Q F0(The \214rst ar)144 273.6 Q 2.5(gument. That)-.18 F
+(is, w)2.5 E(ord 1.)-.1 E F1($)108 285.6 Q F0 .064(The last w)144 285.6
+R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064
+(gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F
+.063(ord if there is only)-.1 F(one w)144 297.6 Q(ord in the line.)-.1 E
+F1(%)108 309.6 Q F0(The w)144 309.6 Q(ord matched by the most recent `?)
+-.1 E F2(string)A F0(?' search.)A F2(x)108.77 321.6 Q F1<ad>A F2(y)A F0
+2.5(Ar)144 321.6 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C
+(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 333.6 Q F0
+.315(All of the w)144 333.6 R .315(ords b)-.1 F .315(ut the zeroth.)-.2
+F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815
+('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316
+(if there is)2.816 F(just one w)144 345.6 Q(ord in the e)-.1 E -.15(ve)
+-.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108
+357.6 Q F0(Abbre)144 357.6 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1
+<78ad>108 369.6 Q F0(Abbre)144 369.6 Q(viates)-.25 E F2(x\255$)2.5 E F0
+(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E
+(ord.)-.1 E(If a w)108 386.4 Q(ord designator is supplied without an e)
+-.1 E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E
+(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
+(Modi\214ers)87 403.2 Q F0 .184(After the optional w)108 415.2 R .184
+(ord designator)-.1 F 2.684(,t)-.4 G .183
+(here may appear a sequence of one or more of the follo)-2.684 F .183
+(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 427.2 Q F1(h)108
+444 Q F0(Remo)144 444 Q .3 -.15(ve a t)-.15 H
 (railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t)
-108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a)-.15 H
+108 456 Q F0(Remo)144 456 Q .3 -.15(ve a)-.15 H
 (ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
+108 468 Q F0(Remo)144 468 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
 (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 326.4 Q F0(Remo)144 326.4 Q .3 -.15
-(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108
-338.4 Q F0(Print the ne)144 338.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E
-(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 350.4 Q F0
-(Quote the substituted w)144 350.4 Q
-(ords, escaping further substitutions.)-.1 E F1(x)108 362.4 Q F0
-(Quote the substituted w)144 362.4 Q(ords as with)-.1 E F1(q)2.5 E F0
-2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)
-2.5 E(wlines.)-.25 E F1(s/)108 374.4 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E
-F1(/)A F0(Substitute)144 386.4 Q F2(ne)3.082 E(w)-.15 E F0 .221
-(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221(in the e)
+(ving the basename.)-.2 E F1(e)108 480 Q F0(Remo)144 480 Q .3 -.15(ve a)
+-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 492 Q
+F0(Print the ne)144 492 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
+E -.15(xe)-.15 G(cute it.).15 E F1(q)108 504 Q F0
+(Quote the substituted w)144 504 Q
+(ords, escaping further substitutions.)-.1 E F1(x)108 516 Q F0
+(Quote the substituted w)144 516 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5
+(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5
+E(wlines.)-.25 E F1(s/)108 528 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A
+F0(Substitute)144 540 Q F2(ne)3.081 E(w)-.15 E F0 .221
+(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e)
 3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G
-.221(elimiter can be used in place)-2.721 F .616(of /.)144 398.4 R .617
+.221(elimiter can be used in place)-2.721 F .617(of /.)144 552 R .617
 (The \214nal delimiter is optional if it is the last character of the e)
-5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617
-F .666(be quoted in)144 410.4 R F2(old)3.396 E F0(and)3.936 E F2(ne)
-3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666
+5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616
+F .666(be quoted in)144 564 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526
+E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666
 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166
 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E
-F0 5.666(.A).77 G .274(single backslash will quote the &.)144 422.4 R
-(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544
-F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775
-(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E
-(ous history substitutions took place, the last)144 434.4 Q F2(string)
-2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1
-(&)108 446.4 Q F0(Repeat the pre)144 446.4 Q(vious substitution.)-.25 E
-F1(g)108 458.4 Q F0 .398(Cause changes to be applied o)144 458.4 R -.15
-(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398
-(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A
-F0 2.897('\()C(e.g.,)-2.897 E(`)144 470.4 Q F1(:gs/)A F2(old)A F1(/)A F2
-(ne)A(w)-.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218
-(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219
-(elimiter can be used in place of /, and the \214nal)-3.718 F .09
-(delimiter is optional if it is the last character of the e)144 482.4 R
--.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089
-(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 494.4 Q F0
-(.)A F1(G)108 506.4 Q F0(Apply the follo)144 506.4 Q(wing `)-.25 E F1(s)
-A F0 2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15
-(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 523.2 Q
-(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062
-(Unless otherwise noted, each b)108 535.2 R .062(uiltin command documen\
-ted in this section as accepting options preceded by)-.2 F F1<ad>108
-547.2 Q F0(accepts)2.534 E F1<adad>2.534 E F0 .034
-(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E F0
-(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E
-F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and)
-.2 F 1.548(do not treat)108 559.2 R F1<adad>4.048 E F0(specially)4.048 E
-6.549(.T)-.65 G(he)-6.549 E F1(exit)4.049 E F0(,)A F1(logout)4.049 E F0
-(,)A F1 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F1(br)4.049 E(eak)-.18
-E F0(,)A F1(continue)4.049 E F0(,)A F1(let)4.049 E F0 4.049(,a)C(nd)
--4.049 E F1(shift)4.049 E F0 -.2(bu)4.049 G 1.549(iltins accept and).2 F
-.261(process ar)108 571.2 R .261(guments be)-.18 F .261(ginning with)
--.15 F F1<ad>2.761 E F0 .261(without requiring)2.761 F F1<adad>2.761 E
-F0 5.261(.O)C .261(ther b)-5.261 F .26(uiltins that accept ar)-.2 F .26
-(guments b)-.18 F .26(ut are not)-.2 F 1.154
-(speci\214ed as accepting options interpret ar)108 583.2 R 1.154
-(guments be)-.18 F 1.154(ginning with)-.15 F F1<ad>3.654 E F0 1.154
-(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F1
-<adad>3.654 E F0(to)3.654 E(pre)108 595.2 Q -.15(ve)-.25 G
-(nt this interpretation.).15 E F1(:)108 613.2 Q F0([)2.5 E F2(ar)A
-(guments)-.37 E F0(])A .452(No ef)144 625.2 R .452
-(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding)
--.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F
-2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 637.2 R
-(return status is zero.)2.5 E F1(.)110.5 654 Q F2(\214lename)6.666 E F0
-([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 666 Q(ce)-.18 E F2
-(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
-(Read and e)144 678 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
-(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
-(vironment and return the e)-.4 F(xit)-.15 E 1.458
-(status of the last command e)144 690 R -.15(xe)-.15 G 1.458(cuted from)
-.15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2(\214lename)
-5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F .608
-(names in)144 702 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0
-.608(are used to \214nd the directory containing)2.858 F F2(\214lename)
-3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4
--.666(PA)3.108 G(TH)-.189 E F0 .833(need not be e)144 714 R -.15(xe)-.15
-G 3.333(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2
-.832(posix mode)3.332 F F0 3.332(,t)C .832
-(he current directory is searched if no)-3.332 F .981
-(\214le is found in)144 726 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9
-/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18
-E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981
-(iltin command is turned of).2 F .982(f, the)-.25 F(GNU Bash 4.4)72 768
-Q(2016 August 26)142.895 E(53)192.055 E 0 Cg EP
-%%Page: 54 54
+F0 5.666(.A).77 G .275(single backslash will quote the &.)144 576 R(If)
+5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2
+(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774(fn)
+-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E
+(ous history substitutions took place, the last)144 588 Q F2(string)2.84
+E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1(&)
+108 600 Q F0(Repeat the pre)144 600 Q(vious substitution.)-.25 E F1(g)
+108 612 Q F0 .397(Cause changes to be applied o)144 612 R -.15(ve)-.15 G
+2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.)
+.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898
+('\()C(e.g.,)-2.898 E(`)144 624 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)
+-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219
+(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218
+(elimiter can be used in place of /, and the \214nal)-3.718 F .089
+(delimiter is optional if it is the last character of the e)144 636 R
+-.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09
+(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 648 Q F0(.)A
+F1(G)108 660 Q F0(Apply the follo)144 660 Q(wing `)-.25 E F1(s)A F0 2.5
+('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G
+(nt line.).15 E/F4 10.95/Times-Bold@0 SF(SHELL B)72 676.8 Q(UIL)-.11 E
+(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 688.8
+R .062(uiltin command documented in this section as accepting options p\
+receded by)-.2 F F1<ad>108 700.8 Q F0(accepts)3.077 E F1<adad>3.077 E F0
+.577(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E
+F0(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E
+F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577
+(iltins do not accept options).2 F .462(and do not treat)108 712.8 R F1
+<adad>2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit)
+2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n)
+-.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A
+F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu)
+2.961 G .461(iltins accept and).2 F .26(process ar)108 724.8 R .26
+(guments be)-.18 F .26(ginning with)-.15 F F1<ad>2.76 E F0 .261
+(without requiring)2.76 F F1<adad>2.761 E F0 5.261(.O)C .261(ther b)
+-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261
+(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(55)
+188.455 E 0 Cg EP
+%%Page: 56 56
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0
-SF -.666(PA)144 84 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112
-(If an)5.112 F(y)-.15 E/F2 10/Times-Italic@0 SF(ar)2.612 E(guments)-.37
-E F0 .112(are supplied, the)2.612 F 2.612(yb)-.15 G .112
-(ecome the positional parameters when)-2.612 F F2(\214lename)144 96 Q F0
-1.697(is e)4.196 F -.15(xe)-.15 G 4.197(cuted. Otherwise).15 F 1.697
-(the positional parameters are unchanged.)4.197 F 1.697(If the)6.697 F
-/F3 10/Times-Bold@0 SF<ad54>4.197 E F0 1.697(option is)4.197 F(enabled,)
-144 108 Q F3(sour)3.618 E(ce)-.18 E F0 1.118(inherits an)3.618 F 3.618
-(yt)-.15 G 1.118(rap on)-3.618 F F3(DEB)3.618 E(UG)-.1 E F0 3.618(;i)C
-3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118(ot, an)
--3.618 F(y)-.15 E F3(DEB)3.617 E(UG)-.1 E F0 1.117(trap string is sa)
-3.617 F -.15(ve)-.2 G 3.617(da).15 G(nd)-3.617 E .36
-(restored around the call to)144 120 R F3(sour)2.86 E(ce)-.18 E F0 2.86
-(,a)C(nd)-2.86 E F3(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F F3
-(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86
-(cutes. If).15 F F3<ad54>2.86 E F0(is)2.86 E 1.435
-(not set, and the sourced \214le changes the)144 132 R F3(DEB)3.935 E
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.154
+(speci\214ed as accepting options interpret ar)108 84 R 1.154
+(guments be)-.18 F 1.154(ginning with)-.15 F/F1 10/Times-Bold@0 SF<ad>
+3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154
+(lid options and require).25 F F1<adad>3.654 E F0(to)3.654 E(pre)108 96
+Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 114 Q F0([)2.5 E
+/F2 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 126 R
+.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F
+(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an)
+3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144
+138 R(return status is zero.)2.5 E F1(.)110.5 154.8 Q F2(\214lename)
+6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 166.8 Q(ce)
+-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
+(Read and e)144 178.8 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
+(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
+(vironment and return the e)-.4 F(xit)-.15 E 1.458
+(status of the last command e)144 190.8 R -.15(xe)-.15 G 1.458
+(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2
+(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F
+.608(names in)144 202.8 R/F3 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189
+E F0 .608(are used to \214nd the directory containing)2.858 F F2
+(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)
+-5.608 F F3 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 214.8
+R -.15(xe)-.15 G 3.332(cutable. When).15 F F1(bash)3.332 E F0 .832
+(is not in)3.332 F F2 .832(posix mode)3.332 F F0 3.332(,t)C .833
+(he current directory is searched if no)-3.332 F .982
+(\214le is found in)144 226.8 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 9
+/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18
+E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981
+(iltin command is turned of).2 F .981(f, the)-.25 F F3 -.666(PA)144
+238.8 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F
+(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F
+2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2
+(\214lename)144 250.8 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197
+(cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.)
+4.197 F 1.697(If the)6.697 F F1<ad54>4.197 E F0 1.696(option is)4.197 F
+(enabled,)144 262.8 Q F1(sour)3.617 E(ce)-.18 E F0 1.117(inherits an)
+3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F1(DEB)3.617 E(UG)-.1 E F0
+3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118
+(ot, an)-3.618 F(y)-.15 E F1(DEB)3.618 E(UG)-.1 E F0 1.118
+(trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36
+(restored around the call to)144 274.8 R F1(sour)2.86 E(ce)-.18 E F0
+2.86(,a)C(nd)-2.86 E F1(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F
+F1(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86
+(cutes. If).15 F F1<ad54>2.86 E F0(is)2.86 E 1.435
+(not set, and the sourced \214le changes the)144 286.8 R F1(DEB)3.935 E
 (UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435
-(alue is retained when)-4.185 F F3(sour)3.935 E(ce)-.18 E F0 3.762
-(completes. The)144 144 R 1.262
-(return status is the status of the last command e)3.762 F 1.263
-(xited within the script \(0 if no)-.15 F(commands are e)144 156 Q -.15
-(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0
-(is not found or cannot be read.)2.68 E F3(alias)108 172.8 Q F0([)2.5 E
-F3<ad70>A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])
--2.5 E F3(Alias)144 184.8 Q F0 2.725(with no ar)5.225 F 2.724
-(guments or with the)-.18 F F3<ad70>5.224 E F0 2.724
-(option prints the list of aliases in the form)5.224 F F3(alias)5.224 E
-F2(name)144 196.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F
+(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.763
+(completes. The)144 298.8 R 1.262
+(return status is the status of the last command e)3.763 F 1.262
+(xited within the script \(0 if no)-.15 F(commands are e)144 310.8 Q
+-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E
+F0(is not found or cannot be read.)2.68 E F1(alias)108 327.6 Q F0([)2.5
+E F1<ad70>A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
+(..])-2.5 E F1(Alias)144 339.6 Q F0 2.724(with no ar)5.224 F 2.724
+(guments or with the)-.18 F F1<ad70>5.224 E F0 2.724
+(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E
+F2(name)144 351.6 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F
 .58(When ar)5.58 F .58
 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name)
-3.08 E F0(whose)144 208.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15
+3.08 E F0(whose)144 363.6 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15
 (ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value)
 2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009
-(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579
-(tution when the alias is e)144 220.8 R 3.079(xpanded. F)-.15 F .579
+(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579
+(tution when the alias is e)144 375.6 R 3.079(xpanded. F)-.15 F .579
 (or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579
-(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079
-F 1.314(plied, the name and v)144 232.8 R 1.314
-(alue of the alias is printed.)-.25 F F3(Alias)6.314 E F0 1.314
-(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F
--.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E
-(which no alias has been de\214ned.)144 244.8 Q F3(bg)108 261.6 Q F0([)
-2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144
-273.6 R F2(jobspec)3.244 E F0 .745
-(in the background, as if it had been started with)3.244 F F3(&)3.245 E
-F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 285.6 Q F0 .672
-(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the)
--3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F3
-(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418
-(when job control is disabled or)144 297.6 R 2.919(,w)-.4 G .419
-(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G
-(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G
-(ot)-2.919 E(found or w)144 309.6 Q(as started without job control.)-.1
-E F3(bind)108 326.4 Q F0([)2.5 E F3<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0
-2.5(][)C F3(\255lpsvPSVX)-2.5 E F0(])A F3(bind)108 338.4 Q F0([)2.5 E F3
-<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F3<ad71>-2.5 E F2
-(function)2.5 E F0 2.5(][)C F3<ad75>-2.5 E F2(function)2.5 E F0 2.5(][)C
-F3<ad72>-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F3(bind)108 350.4 Q F0
-([)2.5 E F3<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F3<ad66>2.5 E F2
-(\214lename)2.5 E F3(bind)108 362.4 Q F0([)2.5 E F3<ad6d>A F2 -.1(ke)2.5
-G(ymap)-.2 E F0(])A F3<ad78>2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2
-(shell\255command)A F3(bind)108 374.4 Q F0([)2.5 E F3<ad6d>A F2 -.1(ke)
+(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078
+F 1.313(plied, the name and v)144 387.6 R 1.314
+(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314
+(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F
+-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E
+(which no alias has been de\214ned.)144 399.6 Q F1(bg)108 416.4 Q F0([)
+2.5 E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144
+428.4 R F2(jobspec)3.245 E F0 .745
+(in the background, as if it had been started with)3.245 F F1(&)3.244 E
+F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 440.4 Q F0 .671
+(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the)
+-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1
+(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419
+(when job control is disabled or)144 452.4 R 2.919(,w)-.4 G .419
+(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G
+(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G
+(ot)-2.918 E(found or w)144 464.4 Q(as started without job control.)-.1
+E F1(bind)108 481.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0
+2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 493.2 Q F0([)2.5 E F1
+<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1<ad71>-2.5 E F2
+(function)2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2(function)2.5 E F0 2.5(][)C
+F1<ad72>-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 505.2 Q F0
+([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F1<ad66>2.5 E F2
+(\214lename)2.5 E F1(bind)108 517.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5
+G(ymap)-.2 E F0(])A F1<ad78>2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2
+(shell\255command)A F1(bind)108 529.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2
-(function\255name)A F3(bind)108 386.4 Q F0([)2.5 E F3<ad6d>A F2 -.1(ke)
+(function\255name)A F1(bind)108 541.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C
-(adline\255command).37 E F0 .239(Display current)144 398.4 R F3 -.18(re)
-2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239
-(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238
-(equence to a).15 F F3 -.18(re)2.738 G(adline).18 E F0 .238(function or)
-2.738 F .475(macro, or set a)144 410.4 R F3 -.18(re)2.975 G(adline).18 E
-F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F
-.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2
-(.inputr)144 422.4 Q(c)-.37 E F0 2.984(,b).31 G .484
-(ut each binding or command must be passed as a separate ar)-3.184 F
-.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
-(re\255read\255init\255\214le'. Options,)144 434.4 R(if supplied, ha)2.5
-E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F3<ad6d>144
-446.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 458.4 Q F2 -.1(ke)5.158 G
-(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af)
-.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E
-F2 -.1(ke)180 470.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193
-(emacs, emacs\255standar)5.693 F 3.192
+(adline\255command).37 E F0 .238(Display current)144 553.2 R F1 -.18(re)
+2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239
+(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239
+(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or)
+2.739 F .476(macro, or set a)144 565.2 R F1 -.18(re)2.976 G(adline).18 E
+F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F
+.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2
+(.inputr)144 577.2 Q(c)-.37 E F0 2.983(,b).31 G .484
+(ut each binding or command must be passed as a separate ar)-3.183 F
+.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
+(re\255read\255init\255\214le'. Options,)144 589.2 R(if supplied, ha)2.5
+E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6d>144
+601.2 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 613.2 Q F2 -.1(ke)5.159 G
+(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af)
+.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E
+F2 -.1(ke)180 625.2 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192
+(emacs, emacs\255standar)5.692 F 3.193
 (d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E
-(vi\255command)180 482.4 Q F0 4.113(,a)C(nd)-4.113 E F2(vi\255insert)
-4.113 E F0(.).68 E F2(vi)6.613 E F0 1.613(is equi)4.113 F -.25(va)-.25 G
+(vi\255command)180 637.2 Q F0 4.114(,a)C(nd)-4.114 E F2(vi\255insert)
+4.114 E F0(.).68 E F2(vi)6.614 E F0 1.613(is equi)4.114 F -.25(va)-.25 G
 1.613(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A
-(ve)-.1 E F0 1.614(is also a syn-)4.114 F(on)180 494.4 Q(ym\);)-.15 E F2
+(ve)-.1 E F0 1.613(is also a syn-)4.113 F(on)180 649.2 Q(ym\);)-.15 E F2
 (emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2
-(emacs\255standar)2.5 E(d)-.37 E F0(.)A F3<ad6c>144 506.4 Q F0
-(List the names of all)180 506.4 Q F3 -.18(re)2.5 G(adline).18 E F0
-(functions.)2.5 E F3<ad70>144 518.4 Q F0(Display)180 518.4 Q F3 -.18(re)
+(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1<ad6c>144 661.2 Q F0
+(List the names of all)180 661.2 Q F1 -.18(re)2.5 G(adline).18 E F0
+(functions.)2.5 E F1<ad70>144 673.2 Q F0(Display)180 673.2 Q F1 -.18(re)
 2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E
-(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3<ad50>144 530.4
-Q F0(List current)180 530.4 Q F3 -.18(re)2.5 G(adline).18 E F0
-(function names and bindings.)2.5 E F3<ad73>144 542.4 Q F0(Display)180
-542.4 Q F3 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05
+(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad50>144 685.2
+Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0
+(function names and bindings.)2.5 E F1<ad73>144 697.2 Q F0(Display)180
+697.2 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05
 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo)
--.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 554.4 S 2.5(yt).1 G
-(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3<ad53>144 566.4 Q
-F0(Display)180 566.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5
-(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)
--.15 G(utput.)-2.5 E F3<ad76>144 578.4 Q F0(Display)180 578.4 Q F3 -.18
-(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G
-(an be re-read.)-2.5 E F3<ad56>144 590.4 Q F0(List current)180 590.4 Q
-F3 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues.)-.25 E F3<ad66>144 602.4 Q F2(\214lename)2.5 E F0(Read k)180
-614.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A
-F3<ad71>144 626.4 Q F2(function)2.5 E F0(Query about which k)180 638.4 Q
--.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H
-(he named).1 E F2(function)2.5 E F0(.)A F3<ad75>144 650.4 Q F2(function)
-2.5 E F0(Unbind all k)180 662.4 Q -.15(ey)-.1 G 2.5(sb).15 G
-(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F3<ad72>144 674.4 Q
-F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 686.4 Q .3 -.15(ve a)-.15 H .3
--.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0
-(.)A F3<ad78>144 698.4 Q F2 -.1(ke)2.5 G(yseq)-.2 E F3(:)A F2
-(shell\255command)A F0(Cause)180 710.4 Q F2(shell\255command)4.325 E F0
-1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve)
--.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F
-(When)6.825 E F2(shell\255com-)4.325 E(mand)180 722.4 Q F0 1.765(is e)
-4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F F1
-(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765
-(riable to the contents of the).25 F(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(54)192.055 E 0 Cg EP
-%%Page: 55 55
+-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 709.2 S 2.5(yt).1 G
+(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash 5.0)72 768
+Q(2018 December 7)139.295 E(56)188.455 E 0 Cg EP
+%%Page: 57 57
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.18(re)180 84 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353
-(fer and the)-.25 F/F2 9/Times-Bold@0 SF(READLINE_POINT)3.853 E F0 -.25
-(va)3.603 G 1.353(riable to the current location of the).25 F 2.012
-(insertion point.)180 96 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011
-(cuted command changes the v).15 F 2.011(alue of)-.25 F F2
-(READLINE_LINE)4.511 E F0(or)4.261 E F2(READLINE_POINT)180 108 Q/F3 9
+SF<ad53>144 84 Q F0(Display)180 84 Q F1 -.18(re)2.5 G(adline).18 E F0
+-.1(ke)2.5 G 2.5(ys)-.05 G(equences bound to macros and the strings the)
+-2.5 E 2.5(yo)-.15 G(utput.)-2.5 E F1<ad76>144 96 Q F0(Display)180 96 Q
+F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
+(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G
+(an be re-read.)-2.5 E F1<ad56>144 108 Q F0(List current)180 108 Q F1
+-.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
+(alues.)-.25 E F1<ad66>144 120 Q/F2 10/Times-Italic@0 SF(\214lename)2.5
+E F0(Read k)180 132 Q .3 -.15(ey b)-.1 H(indings from).15 E F2
+(\214lename)2.5 E F0(.)A F1<ad71>144 144 Q F2(function)2.5 E F0
+(Query about which k)180 156 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)
+-2.5 H .2 -.1(ke t).4 H(he named).1 E F2(function)2.5 E F0(.)A F1<ad75>
+144 168 Q F2(function)2.5 E F0(Unbind all k)180 180 Q -.15(ey)-.1 G 2.5
+(sb).15 G(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1<ad72>144
+192 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 204 Q .3 -.15(ve a)-.15 H
+.3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E
+F0(.)A F1<ad78>144 216 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2
+(shell\255command)A F0(Cause)180 228 Q F2(shell\255command)4.325 E F0
+1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve)
+-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F
+(When)6.825 E F2(shell\255com-)4.325 E(mand)180 240 Q F0 1.764(is e)
+4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9
+/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765
+(riable to the contents of the).25 F F1 -.18(re)180 252 S(adline).18 E
+F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3
+(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353
+(riable to the current location of the).25 F 2.011(insertion point.)180
+264 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011
+(cuted command changes the v).15 F 2.011(alue of)-.25 F F3
+(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 276 Q/F4 9
 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G
-(alues will be re\215ected in the editing state.)-2.75 E F1<ad58>144 120
-Q F0 .829(List all k)180 120 R 1.129 -.15(ey s)-.1 H .829
+(alues will be re\215ected in the editing state.)-2.75 E F1<ad58>144 288
+Q F0 .83(List all k)180 288 R 1.13 -.15(ey s)-.1 H .829
 (equences bound to shell commands and the associated commands in a for)
-.15 F(-)-.2 E(mat that can be reused as input.)180 132 Q(The return v)
-144 148.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
+.15 F(-)-.2 E(mat that can be reused as input.)180 300 Q(The return v)
+144 316.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5
-E F1(br)108 165.6 Q(eak)-.18 E F0([)2.5 E/F4 10/Times-Italic@0 SF(n)A F0
-(])A .055(Exit from within a)144 177.6 R F1 -.25(fo)2.555 G(r).25 E F0
-(,)A F1(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E
-F1(select)2.555 E F0 2.555(loop. If)2.555 F F4(n)2.555 E F0 .055
-(is speci\214ed, break)2.555 F F4(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G
-(ls.).15 E F4(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF<b3>2.554
-E F0(1.)2.554 E(If)144 189.6 Q F4(n)3.074 E F0 .215(is greater than the\
- number of enclosing loops, all enclosing loops are e)2.954 F 2.715
-(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144
-201.6 Q F4(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
-(bu)108 218.4 S(iltin).2 E F4(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
-F4(ar)A(guments)-.37 E F0(])A(Ex)144 230.4 Q .793
-(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F4
+E F1(br)108 333.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
+(Exit from within a)144 345.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
+(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
+(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055
+(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G
+(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF<b3>2.555
+E F0(1.)2.555 E(If)144 357.6 Q F2(n)3.075 E F0 .215(is greater than the\
+ number of enclosing loops, all enclosing loops are e)2.955 F 2.714
+(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144
+369.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
+(bu)108 386.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
+F2(ar)A(guments)-.37 E F0(])A(Ex)144 398.4 Q .792
+(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2
 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293
-F .792(xit status.)-.15 F .792(This is useful)5.792 F .615
+F .793(xit status.)-.15 F .793(This is useful)5.793 F .616
 (when de\214ning a function whose name is the same as a shell b)144
-242.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144
-254.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
+410.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
+422.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E
-5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 266.4 Q(alse if)-.1
-E F4(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
-(uiltin command.)-.2 E F1(caller)108 283.2 Q F0([)2.5 E F4 -.2(ex)C(pr)
-.2 E F0(])A .253(Returns the conte)144 295.2 R .254(xt of an)-.15 F
+5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 434.4 Q(alse if)-.1
+E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
+(uiltin command.)-.2 E F1(caller)108 451.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
+.2 E F0(])A .254(Returns the conte)144 463.2 R .254(xt of an)-.15 F
 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254
 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G
-.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 307.2 Q
-(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F4 -.2
-(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324
+.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 475.2 Q
+(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2
+(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324
 (displays the line number and source \214lename of the current)2.824 F
-.253(subroutine call.)144 319.2 R .253(If a non-ne)5.253 F -.05(ga)-.15
-G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
-F F4 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254
-(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\
+.254(subroutine call.)144 487.2 R .254(If a non-ne)5.254 F -.05(ga)-.15
+G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
+F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253
+(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\
 tine name, and source \214le corresponding to that position in the curr\
-ent e)144 331.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)
-144 343.2 Q(xtra information may be used, for e)-.15 E .001
-(xample, to print a stack trace.)-.15 F .001(The current frame is frame)
-5.001 F 3.02(0. The)144 355.2 R .52(return v)3.02 F .52
-(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519
-(cuting a subroutine call or).15 F F4 -.2(ex)3.019 G(pr).2 E F0 .519
-(does not corre-)3.019 F(spond to a v)144 367.2 Q
-(alid position in the call stack.)-.25 E F1(cd)108 384 Q F0([)2.5 E F1
-<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A F4
-(dir)A F0(])A .321(Change the current directory to)144 396 R F4(dir)
-2.821 E F0 5.321(.i)C(f)-5.321 E F4(dir)2.821 E F0 .322
-(is not supplied, the v)2.821 F .322(alue of the)-.25 F F2(HOME)2.822 E
-F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 408 R
-3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035
-(guments follo)-.18 F(wing)-.25 E F4(dir)3.535 E F0 1.035(are ignored.)
-3.535 F 1.035(The v)6.035 F(ariable)-.25 E F2(CDP)3.535 E -.855(AT)-.666
-G(H).855 E F0(de\214nes)3.285 E .849
-(the search path for the directory containing)144 420 R F4(dir)3.349 E
-F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F2(CDP)3.35 E -.855
-(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F4(dir)144 432 Q F0
-5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665
-(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
-.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664
-(ull directory name)-3.165 F(in)144 444 Q F2(CDP)4.162 E -.855(AT)-.666
-G(H).855 E F0 1.662(is the same as the current directory)3.912 F 4.162
+ent e)144 499.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
+(This e)144 511.2 R .001(xtra information may be used, for e)-.15 F .001
+(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E
+3.019(0. The)144 523.2 R .519(return v)3.019 F .519
+(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52
+(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52
+(does not corre-)3.02 F(spond to a v)144 535.2 Q
+(alid position in the call stack.)-.25 E F1(cd)108 552 Q F0([)2.5 E F1
+<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A F2
+(dir)A F0(])A .322(Change the current directory to)144 564 R F2(dir)
+2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321
+(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E
+F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 576 R
+3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035
+(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.)
+3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666
+G(H).855 E F0(de\214nes)3.286 E .85
+(the search path for the directory containing)144 588 R F2(dir)3.35 E F0
+3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855
+(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 600 Q F0
+5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665
+(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
+.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665
+(ull directory name)-3.165 F(in)144 612 Q F3(CDP)4.163 E -.855(AT)-.666
+G(H).855 E F0 1.663(is the same as the current directory)3.913 F 4.162
 (,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I)
-.74 G(f)-6.662 E F4(dir)4.513 E F0(be)4.893 E 1.663
-(gins with a slash \(/\), then)-.15 F F2(CDP)144 456 Q -.855(AT)-.666 G
-(H).855 E F0 .191(is not used.)2.441 F(The)5.191 E F1<ad50>2.691 E F0
-.191(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F
-.19(ysical directory structure by resolving)-.05 F 1.12
-(symbolic links while tra)144 468 R -.15(ve)-.2 G(rsing).15 E F4(dir)
-3.62 E F0 1.12(and before processing instances of)3.62 F F4(..)3.62 E F0
-(in)3.62 E F4(dir)3.62 E F0 1.12(\(see also the)3.62 F F1<ad50>3.62 E F0
-.395(option to the)144 480 R F1(set)2.895 E F0 -.2(bu)2.895 G .395
+.74 G(f)-6.662 E F2(dir)4.512 E F0(be)4.892 E 1.662
+(gins with a slash \(/\), then)-.15 F F3(CDP)144 624 Q -.855(AT)-.666 G
+(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F1<ad50>2.691 E F0 .191
+(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F .191
+(ysical directory structure by resolving)-.05 F 1.12
+(symbolic links while tra)144 636 R -.15(ve)-.2 G(rsing).15 E F2(dir)
+3.62 E F0 1.12(and before processing instances of)3.62 F F2(..)3.62 E F0
+(in)3.62 E F2(dir)3.62 E F0 1.12(\(see also the)3.62 F F1<ad50>3.62 E F0
+.395(option to the)144 648 R F1(set)2.895 E F0 -.2(bu)2.895 G .395
 (iltin command\); the).2 F F1<ad4c>2.895 E F0 .395
 (option forces symbolic links to be follo)2.895 F .395(wed by resolv-)
--.25 F .443(ing the link after processing instances of)144 492 R F4(..)
-2.943 E F0(in)2.943 E F4(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F4(..)
-2.943 E F0 .443(appears in)2.943 F F4(dir)2.943 E F0 2.943(,i)C 2.943
-(ti)-2.943 G 2.944(sp)-2.943 G .444(rocessed by remo)-2.944 F(ving)-.15
-E .744(the immediately pre)144 504 R .744(vious pathname component from)
--.25 F F4(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244
-F .744(ginning of)-.15 F F4(dir)3.244 E F0(.)A 1.465(If the)144 516 R F1
-<ad65>3.965 E F0 1.465(option is supplied with)3.965 F F1<ad50>3.965 E
-F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.466
-(orking directory cannot be successfully)-.1 F .468
-(determined after a successful directory change,)144 528 R F1(cd)2.968 E
-F0 .468(will return an unsuccessful status.)2.968 F .467(On systems)
-5.467 F .336(that support it, the)144 540 R F1<ad40>2.836 E F0 .336
-(option presents the e)2.836 F .336(xtended attrib)-.15 F .337
+-.25 F .444(ing the link after processing instances of)144 660 R F2(..)
+2.943 E F0(in)2.943 E F2(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F2(..)
+2.943 E F0 .443(appears in)2.943 F F2(dir)2.943 E F0 2.943(,i)C 2.943
+(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15
+E .744(the immediately pre)144 672 R .744(vious pathname component from)
+-.25 F F2(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244
+F .744(ginning of)-.15 F F2(dir)3.244 E F0(.)A 1.466(If the)144 684 R F1
+<ad65>3.966 E F0 1.466(option is supplied with)3.966 F F1<ad50>3.965 E
+F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465
+(orking directory cannot be successfully)-.1 F .467
+(determined after a successful directory change,)144 696 R F1(cd)2.968 E
+F0 .468(will return an unsuccessful status.)2.968 F .468(On systems)
+5.468 F .337(that support it, the)144 708 R F1<ad40>2.837 E F0 .336
+(option presents the e)2.836 F .336(xtended attrib)-.15 F .336
 (utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar)
-144 552 R .71(gument of)-.18 F F1<ad>3.21 E F0 .71(is con)3.21 F -.15
-(ve)-.4 G .71(rted to).15 F F2($OLDPWD)3.21 E F0 .71
+144 720 R .71(gument of)-.18 F F1<ad>3.21 E F0 .71(is con)3.21 F -.15
+(ve)-.4 G .71(rted to).15 F F3($OLDPWD)3.21 E F0 .71
 (before the directory change is attempted.)2.96 F .71(If a non-)5.71 F
-.106(empty directory name from)144 564 R F2(CDP)2.606 E -.855(AT)-.666 G
-(H).855 E F0 .107(is used, or if)2.356 F F1<ad>2.607 E F0 .107
-(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F
-.038(is successful, the absolute pathname of the ne)144 576 R 2.538(ww)
--.25 G .038(orking directory is written to the standard output.)-2.638 F
-(The return v)144 588 Q(alue is true if the directory w)-.25 E
-(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108
-604.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F4(command)2.5 E F0([)2.5 E F4
-(ar)A(g)-.37 E F0(...])2.5 E(Run)144 616.8 Q F4(command)2.764 E F0(with)
-3.334 E F4(ar)2.894 E(gs)-.37 E F0 .065
-(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065
-F .065(uiltin commands or)-.2 F .502(commands found in the)144 628.8 R
-F2 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G
-3.002(cuted. If).15 F(the)3.002 E F1<ad70>3.002 E F0 .502(option is gi)
-3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F4(command)3.201 E
-F0(is)3.771 E .399(performed using a def)144 640.8 R .399(ault v)-.1 F
-.399(alue for)-.25 F F2 -.666(PA)2.899 G(TH)-.189 E F0 .4
-(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
-5.4 E .175(either the)144 652.8 R F1<ad56>2.675 E F0(or)2.675 E F1<ad76>
-2.675 E F0 .175(option is supplied, a description of)2.675 F F4(command)
-2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F1<ad76>2.674 E F0 .174
-(option causes)2.674 F 3.317(as)144 664.8 S .817(ingle w)-3.317 F .817
-(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G
--.1(ke).2 G F4(command)3.618 E F0 .818(to be displayed; the)4.088 F F1
-<ad56>144 676.8 Q F0 .25(option produces a more v)2.75 F .25
-(erbose description.)-.15 F .249(If the)5.25 F F1<ad56>2.749 E F0(or)
-2.749 E F1<ad76>2.749 E F0 .249(option is supplied, the e)2.749 F .249
-(xit status)-.15 F 1.004(is 0 if)144 688.8 R F4(command)3.704 E F0 -.1
-(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005
-(If neither option is supplied and an error occurred or)6.005 F F4
-(command)144.2 700.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599
-(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598
-(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 712.8 S
-(iltin is the e).2 E(xit status of)-.15 E F4(command)2.5 E F0(.).77 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(55)192.055 E 0 Cg EP
-%%Page: 56 56
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(57)188.455 E 0 Cg EP
+%%Page: 58 58
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(compgen)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(option)A F0 2.5
-(][)C F2(wor)-2.5 E(d)-.37 E F0(])A .012
-(Generate possible completion matches for)144 96 R F2(wor)2.513 E(d)-.37
-E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013
-(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982
-(accepted by the)144 108 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981
-(iltin with the e).2 F .981(xception of)-.15 F F1<ad70>3.481 E F0(and)
-3.481 E F1<ad72>3.481 E F0 3.481(,a)C .981(nd write the matches to the)
--3.481 F .13(standard output.)144 120 R .13(When using the)5.13 F F1
-<ad46>2.63 E F0(or)2.63 E F1<ad43>2.631 E F0 .131(options, the v)2.631 F
-.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F
-(mable completion f)144 132 Q(acilities, while a)-.1 E -.25(va)-.2 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .107
+(empty directory name from)144 84 R/F1 9/Times-Bold@0 SF(CDP)2.607 E
+-.855(AT)-.666 G(H).855 E F0 .107(is used, or if)2.357 F/F2 10
+/Times-Bold@0 SF<ad>2.607 E F0 .106(is the \214rst ar)2.607 F .106
+(gument, and the directory change)-.18 F .038
+(is successful, the absolute pathname of the ne)144 96 R 2.538(ww)-.25 G
+.038(orking directory is written to the standard output.)-2.638 F
+(The return v)144 108 Q(alue is true if the directory w)-.25 E
+(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108
+124.8 Q F0([)2.5 E F2(\255pVv)A F0(])A/F3 10/Times-Italic@0 SF(command)
+2.5 E F0([)2.5 E F3(ar)A(g)-.37 E F0(...])2.5 E(Run)144 136.8 Q F3
+(command)2.765 E F0(with)3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065
+(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064
+F .064(uiltin commands or)-.2 F .501(commands found in the)144 148.8 R
+F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G
+3.002(cuted. If).15 F(the)3.002 E F2<ad70>3.002 E F0 .502(option is gi)
+3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E
+F0(is)3.772 E .4(performed using a def)144 160.8 R .4(ault v)-.1 F .4
+(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399
+(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
+5.399 E .174(either the)144 172.8 R F2<ad56>2.674 E F0(or)2.674 E F2
+<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F3
+(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F2<ad76>2.675 E
+F0 .175(option causes)2.675 F 3.318(as)144 184.8 S .818(ingle w)-3.318 F
+.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo)
+-.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087
+F F2<ad56>144 196.8 Q F0 .249(option produces a more v)2.749 F .249
+(erbose description.)-.15 F .249(If the)5.249 F F2<ad56>2.749 E F0(or)
+2.749 E F2<ad76>2.75 E F0 .25(option is supplied, the e)2.75 F .25
+(xit status)-.15 F 1.005(is 0 if)144 208.8 R F3(command)3.705 E F0 -.1
+(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004
+(If neither option is supplied and an error occurred or)6.005 F F3
+(command)144.2 220.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599
+(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599
+(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 232.8 S
+(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2
+(compgen)108 249.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d)
+-.37 E F0(])A .013(Generate possible completion matches for)144 261.6 R
+F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513
+E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981
+(accepted by the)144 273.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981
+(iltin with the e).2 F .981(xception of)-.15 F F2<ad70>3.481 E F0(and)
+3.481 E F2<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the)
+-3.481 F .131(standard output.)144 285.6 R .131(When using the)5.131 F
+F2<ad46>2.631 E F0(or)2.631 E F2<ad43>2.631 E F0 .131(options, the v)
+2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25
+F(mable completion f)144 297.6 Q(acilities, while a)-.1 E -.25(va)-.2 G
 (ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25
-E .352(The matches will be generated in the same w)144 156 R .352
+E .352(The matches will be generated in the same w)144 321.6 R .352
 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\
 em directly from a completion speci\214cation with the same \215ags.)144
-168 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52
-F(those completions matching)144 180 Q F2(wor)2.5 E(d)-.37 E F0
-(will be displayed.)2.5 E(The return v)144 204 Q
+333.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
+2.52 F(those completions matching)144 345.6 Q F3(wor)2.5 E(d)-.37 E F0
+(will be displayed.)2.5 E(The return v)144 369.6 Q
 (alue is true unless an in)-.25 E -.25(va)-.4 G
-(lid option is supplied, or no matches were generated.).25 E F1
-(complete)108 220.8 Q F0([)3.729 E F1(\255abcdefgjksuv)A F0 3.729(][)C
-F1<ad6f>-3.729 E F2(comp-option)3.729 E F0 3.729(][)C F1(\255DE)-3.729 E
-F0 3.728(][)C F1<ad41>-3.728 E F2(action)3.728 E F0 3.728(][)C F1<ad47>
--3.728 E F2(globpat)3.728 E F0 3.728(][)C F1<ad57>-3.728 E F2(wor)3.728
-E(dlist)-.37 E F0 3.728(][)C F1<ad46>-3.728 E F2(func-)3.728 E(tion)108
-232.8 Q F0 2.5(][)C F1<ad43>-2.5 E F2(command)2.5 E F0(])A([)144 244.8 Q
-F1<ad58>A F2(\214lterpat)2.5 E F0 2.5(][)C F1<ad50>-2.5 E F2(pr)2.5 E
-(e\214x)-.37 E F0 2.5(][)C F1<ad53>-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])
-A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1(complete \255pr)108
-256.8 Q F0([)2.5 E F1(\255DE)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E
-.633(Specify ho)144 268.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633
-(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133
-F .634(If the)5.634 F F1<ad70>3.134 E F0 .634
-(option is supplied, or if no)3.134 F .14(options are supplied, e)144
-280.8 R .139(xisting completion speci\214cations are printed in a w)-.15
-F .139(ay that allo)-.1 F .139(ws them to be)-.25 F .31
-(reused as input.)144 292.8 R(The)5.31 E F1<ad72>2.81 E F0 .31
+(lid option is supplied, or no matches were generated.).25 E F2
+(complete)108 386.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C
+F2<ad6f>-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404
+E F0 3.404(][)C F2<ad41>-3.404 E F3(action)3.404 E F0 3.404(][)C F2
+<ad47>-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2<ad57>-3.404 E F3(wor)
+3.404 E(dlist)-.37 E F0 3.405(][)C F2<ad46>-3.405 E F3(func-)3.405 E
+(tion)108 398.4 Q F0 2.5(][)C F2<ad43>-2.5 E F3(command)2.5 E F0(])A([)
+144 410.4 Q F2<ad58>A F3(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F3
+(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2<ad53>-2.5 E F3(suf)2.5 E<8c78>
+-.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2
+(complete \255pr)108 422.4 Q F0([)2.5 E F2(\255DEI)A F0 2.5(][)C F3
+(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 434.4 R 3.134(wa)-.25 G
+-.18(rg)-3.134 G .634(uments to each).18 F F3(name)3.134 E F0 .634
+(should be completed.)3.134 F .633(If the)5.634 F F2<ad70>3.133 E F0
+.633(option is supplied, or if no)3.133 F .139(options are supplied, e)
+144 446.4 R .139(xisting completion speci\214cations are printed in a w)
+-.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31
+(reused as input.)144 458.4 R(The)5.31 E F2<ad72>2.81 E F0 .31
 (option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31
-(ompletion speci\214cation for each)-2.81 F F2(name)2.81 E F0 2.81(,o)C
-1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2(name)2.81 E F0(s)A 1.347
-(are supplied, all completion speci\214cations.)144 304.8 R(The)6.347 E
-F1<ad44>3.847 E F0 1.346(option indicates that the remaining options)
-3.847 F .5(and actions should apply to the `)144 316.8 R(`def)-.74 E
+(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C
+1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207
+(are supplied, all completion speci\214cations.)144 470.4 R(The)6.207 E
+F2<ad44>3.707 E F0 1.208(option indicates that other supplied options)
+3.708 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E
 (ault')-.1 E 3('c)-.74 G .5
 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
-328.8 S .955(ommand for which no completion has pre)-3.455 F .955
-(viously been de\214ned.)-.25 F(The)5.955 E F1<ad45>3.455 E F0 .955
-(option indicates that)3.455 F .064
-(the remaining options and actions should apply to `)144 340.8 R
-(`empty')-.74 E 2.565('c)-.74 G .065
-(ommand completion; that is, comple-)-2.565 F
-(tion attempted on a blank line.)144 352.8 Q 1.438
+494.4 S .955(ommand for which no completion has pre)-3.455 F .955
+(viously been de\214ned.)-.25 F(The)5.955 E F2<ad45>3.455 E F0 .955
+(option indicates that)3.455 F .876
+(other supplied options and actions should apply to `)144 506.4 R
+(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
+-3.376 F .447(pletion attempted on a blank line.)144 518.4 R(The)5.447 E
+F2<ad49>2.947 E F0 .448
+(option indicates that other supplied options and actions)2.947 F 1.335
+(should apply to completion on the inital non-assignment w)144 530.4 R
+1.334(ord on the line, or after a command)-.1 F .43(delimiter such as)
+144 542.4 R F2(;)2.93 E F0(or)2.93 E F2(|)2.93 E F0 2.93(,w)C .431
+(hich is usually command name completion.)-2.93 F .431
+(If multiple options are sup-)5.431 F .708(plied, the)144 554.4 R F2
+<ad44>3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15
+(ve)-.15 G(r).15 E F2<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
+F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2
+<ad49>3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H
+(f).15 E F2<ad44>3.207 E F0(,)A F2<ad45>144 566.4 Q F0 2.603(,o)C(r)
+-2.603 E F2<ad49>2.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
+G(ther)-2.603 E F3(name)2.603 E F0(ar)2.603 E .103
+(guments are ignored; these completions only apply to the)-.18 F
+(case speci\214ed by the option.)144 578.4 Q 1.438
 (The process of applying these completion speci\214cations when w)144
-376.8 R 1.437(ord completion is attempted is)-.1 F(described abo)144
-388.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E
+602.4 R 1.437(ord completion is attempted is)-.1 F(described abo)144
+614.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E
 (ogrammable Completion)-.18 E F0(.)A .555
-(Other options, if speci\214ed, ha)144 412.8 R .855 -.15(ve t)-.2 H .555
+(Other options, if speci\214ed, ha)144 638.4 R .855 -.15(ve t)-.2 H .555
 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555
-(guments to the)-.18 F F1<ad47>3.056 E F0(,)A F1<ad57>3.056 E F0 3.056
-(,a)C(nd)-3.056 E F1<ad58>3.056 E F0 .723(options \(and, if necessary)
-144 424.8 R 3.223(,t)-.65 G(he)-3.223 E F1<ad50>3.223 E F0(and)3.223 E
-F1<ad53>3.223 E F0 .722
+(guments to the)-.18 F F2<ad47>3.056 E F0(,)A F2<ad57>3.056 E F0 3.056
+(,a)C(nd)-3.056 E F2<ad58>3.056 E F0 .723(options \(and, if necessary)
+144 650.4 R 3.223(,t)-.65 G(he)-3.223 E F2<ad50>3.223 E F0(and)3.223 E
+F2<ad53>3.223 E F0 .722
 (options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E
-(sion before the)144 436.8 Q F1(complete)2.5 E F0 -.2(bu)2.5 G
-(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 448.8 Q
-F2(comp-option)2.5 E F0(The)184 460.8 Q F2(comp-option)2.79 E F0 .291
+(sion before the)144 662.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G
+(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2<ad6f>144 674.4 Q
+F3(comp-option)2.5 E F0(The)184 686.4 Q F3(comp-option)2.79 E F0 .291
 (controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec')
 .15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291
-(yond the simple)-.15 F(generation of completions.)184 472.8 Q F2
-(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 484.8 Q F0
-.281(Perform the rest of the def)224 496.8 R(ault)-.1 E F1(bash)2.781 E
-F0 .281(completions if the compspec generates no)2.781 F(matches.)224
-508.8 Q F1(default)184 520.8 Q F0 2.875(Use readline')224 520.8 R 5.375
-(sd)-.55 G(ef)-5.375 E 2.876
-(ault \214lename completion if the compspec generates no)-.1 F(matches.)
-224 532.8 Q F1(dir)184 544.8 Q(names)-.15 E F0(Perform directory name c\
-ompletion if the compspec generates no matches.)224 556.8 Q F1
-(\214lenames)184 568.8 Q F0 -.7(Te)224 580.8 S .137(ll readline that th\
-e compspec generates \214lenames, so it can perform an).7 F 2.636<798c>
--.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 592.8 R
-2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-)
--2.634 F .45(cial characters, or suppressing trailing spaces\).)224
-604.8 R .45(Intended to be used with shell)5.45 F(functions.)224 616.8 Q
-F1(noquote)184 628.8 Q F0 -.7(Te)224 628.8 S .814
-(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
-3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F
-(\214lenames is the def)224 640.8 Q(ault\).)-.1 E F1(nosort)184 652.8 Q
-F0 -.7(Te)224 652.8 S(ll readline not to sort the list of possible comp\
-letions alphabetically).7 E(.)-.65 E F1(nospace)184 664.8 Q F0 -.7(Te)
-224 664.8 S .22(ll readline not to append a space \(the def).7 F .22
-(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224
-676.8 Q F1(plusdirs)184 688.8 Q F0 1.985(After an)224 688.8 R 4.485(ym)
--.15 G 1.985
-(atches de\214ned by the compspec are generated, directory name)-4.485 F
-.584(completion is attempted and an)224 700.8 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224
-712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(56)192.055 E 0 Cg
-EP
-%%Page: 57 57
+(yond the simple)-.15 F(generation of completions.)184 698.4 Q F3
+(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(58)188.455 E 0 Cg EP
+%%Page: 59 59
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad41>144 84 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 96 Q F2
-(action)2.5 E F0(may be one of the follo)2.5 E
+SF(bashdefault)184 84 Q F0 .281(Perform the rest of the def)224 96 R
+(ault)-.1 E F1(bash)2.781 E F0 .281
+(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1
+(default)184 120 Q F0 2.875(Use readline')224 120 R 5.375(sd)-.55 G(ef)
+-5.375 E 2.876(ault \214lename completion if the compspec generates no)
+-.1 F(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform direc\
+tory name completion if the compspec generates no matches.)224 156 Q F1
+(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\
+mpspec generates \214lenames, so it can perform an).7 F 2.636<798c>-.15
+G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 192 R 2.634
+(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F
+.45(cial characters, or suppressing trailing spaces\).)224 204 R .45
+(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote)
+184 228 Q F0 -.7(Te)224 228 S .814
+(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
+3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F
+(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nosort)184 252 Q F0
+-.7(Te)224 252 S(ll readline not to sort the list of possible completio\
+ns alphabetically).7 E(.)-.65 E F1(nospace)184 264 Q F0 -.7(Te)224 264 S
+.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1
+F .22(ords completed at the end)-.1 F(of the line.)224 276 Q F1
+(plusdirs)184 288 Q F0 1.985(After an)224 288 R 4.485(ym)-.15 G 1.985
+(atches de\214ned by the compspec are generated, directory name)-4.485 F
+.584(completion is attempted and an)224 300 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224 312
+Q F1<ad41>144 324 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 336
+Q F2(action)2.5 E F0(may be one of the follo)2.5 E
 (wing to generate a list of possible completions:)-.25 E F1(alias)184
-108 Q F0(Alias names.)224 108 Q(May also be speci\214ed as)5 E F1<ad61>
-2.5 E F0(.)A F1(arrayv)184 120 Q(ar)-.1 E F0(Array v)224 132 Q
-(ariable names.)-.25 E F1(binding)184 144 Q(Readline)224 144 Q F0 -.1
-(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 156 S(iltin)
-.2 E F0(Names of shell b)224 156 Q(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 168
-Q F0(Command names.)224 180 Q(May also be speci\214ed as)5 E F1<ad63>2.5
-E F0(.)A F1(dir)184 192 Q(ectory)-.18 E F0(Directory names.)224 204 Q
-(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 216
-Q F0(Names of disabled shell b)224 228 Q(uiltins.)-.2 E F1(enabled)184
-240 Q F0(Names of enabled shell b)224 240 Q(uiltins.)-.2 E F1(export)184
-252 Q F0(Names of e)224 252 Q(xported shell v)-.15 E 2.5(ariables. May)
+348 Q F0(Alias names.)224 348 Q(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 360 Q(ar)-.1 E F0(Array v)224 372 Q
+(ariable names.)-.25 E F1(binding)184 384 Q(Readline)224 384 Q F0 -.1
+(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 396 S(iltin)
+.2 E F0(Names of shell b)224 396 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 408
+Q F0(Command names.)224 420 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 432 Q(ectory)-.18 E F0(Directory names.)224 444 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 456
+Q F0(Names of disabled shell b)224 468 Q(uiltins.)-.2 E F1(enabled)184
+480 Q F0(Names of enabled shell b)224 480 Q(uiltins.)-.2 E F1(export)184
+492 Q F0(Names of e)224 492 Q(xported shell v)-.15 E 2.5(ariables. May)
 -.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-264 Q F0(File names.)224 264 Q(May also be speci\214ed as)5 E F1<ad66>
-2.5 E F0(.)A F1(function)184 276 Q F0(Names of shell functions.)224 288
-Q F1(gr)184 300 Q(oup)-.18 E F0(Group names.)224 300 Q
+504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 516 Q F0(Names of shell functions.)224 528
+Q F1(gr)184 540 Q(oup)-.18 E F0(Group names.)224 540 Q
 (May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
-312 Q F0(Help topics as accepted by the)224 324 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 336 Q F0(Hostnames, as tak)224 348
+552 Q F0(Help topics as accepted by the)224 564 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 576 Q F0(Hostnames, as tak)224 588
 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 360 Q F0
-(Job names, if job control is acti)224 360 Q -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 372 S
-(yw).1 E(ord)-.1 E F0(Shell reserv)224 384 Q(ed w)-.15 E 2.5(ords. May)
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 600 Q F0
+(Job names, if job control is acti)224 600 Q -.15(ve)-.25 G 5(.M).15 G
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 612 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 624 Q(ed w)-.15 E 2.5(ords. May)
 -.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-396 Q F0(Names of running jobs, if job control is acti)224 396 Q -.15
-(ve)-.25 G(.).15 E F1(ser)184 408 Q(vice)-.1 E F0(Service names.)224 408
-Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 420
-Q F0 -1.11(Va)224 420 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5
+636 Q F0(Names of running jobs, if job control is acti)224 636 Q -.15
+(ve)-.25 G(.).15 E F1(ser)184 648 Q(vice)-.1 E F0(Service names.)224 648
+Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 660
+Q F0 -1.11(Va)224 660 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5
 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
-(shopt)184 432 Q F0(Shell option names as accepted by the)224 432 Q F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 444 Q F0
-(Signal names.)224 444 Q F1(stopped)184 456 Q F0
-(Names of stopped jobs, if job control is acti)224 456 Q -.15(ve)-.25 G
-(.).15 E F1(user)184 468 Q F0(User names.)224 468 Q
-(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 480 S
-(riable).1 E F0(Names of all shell v)224 480 Q 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 492 Q F2
-(command)2.5 E(command)184 504 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G
-1.055(cuted in a subshell en).15 F 1.056
-(vironment, and its output is used as the possible)-.4 F(completions.)
-184 516 Q F1<ad46>144 528 Q F2(function)2.5 E F0 .114
-(The shell function)184 540 R F2(function)2.614 E F0 .114(is e)2.614 F
+(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0
+(Signal names.)224 684 Q F1(stopped)184 696 Q F0
+(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G
+(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A(GNU Bash 5.0)72 768
+Q(2018 December 7)139.295 E(59)188.455 E 0 Cg EP
+%%Page: 60 60
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5
+(ariables. May)-.25 F(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A
+F1<ad43>144 96 Q/F2 10/Times-Italic@0 SF(command)2.5 E(command)184 108 Q
+F0 1.055(is e)3.555 F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F
+1.056(vironment, and its output is used as the possible)-.4 F
+(completions.)184 120 Q F1<ad46>144 132 Q F2(function)2.5 E F0 .114
+(The shell function)184 144 R F2(function)2.614 E F0 .114(is e)2.614 F
 -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614
-(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 552 R
+(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 156 R
 -.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1
 ($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817
 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
-(are being completed, the second ar)184 564 R 1.407(gument \()-.18 F F1
+(are being completed, the second ar)184 168 R 1.407(gument \()-.18 F F1
 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407
-(ord being completed, and the)-.1 F .103(third ar)184 576 R .103
+(ord being completed, and the)-.1 F .103(third ar)184 180 R .103
 (gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w)
 -2.603 F .104(ord preceding the w)-.1 F .104
-(ord being completed on the current com-)-.1 F .102(mand line.)184 588 R
+(ord being completed on the current com-)-.1 F .102(mand line.)184 192 R
 .102(When it \214nishes, the possible completions are retrie)5.102 F
 -.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the)
--.25 F F3(COMPREPL)184 600 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E
-F1<ad47>144 612 Q F2(globpat)2.5 E F0 1.007(The pathname e)184 624 R
-1.007(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F
-1.008(xpanded to generate the possible comple-)-.15 F(tions.)184 636 Q
-F1<ad50>144 648 Q F2(pr)2.5 E(e\214x)-.37 E(pr)184 660 Q(e\214x)-.37 E
-F0 .535(is added at the be)3.035 F .534
+-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25
+E(ariable.)-.25 E F1<ad47>144 216 Q F2(globpat)2.5 E F0 1.007
+(The pathname e)184 228 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507
+E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-)
+-.15 F(tions.)184 240 Q F1<ad50>144 252 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
+184 264 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
 (ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 672 Q F1<ad53>144 684 Q F2(suf)2.5 E
-<8c78>-.18 E(suf)184 684 Q<8c78>-.18 E F0
+-.15(ve)-.2 G(been applied.)184 276 Q F1<ad53>144 288 Q F2(suf)2.5 E
+<8c78>-.18 E(suf)184 288 Q<8c78>-.18 E F0
 (is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 696 Q F2(wor)2.5 E
-(dlist)-.37 E F0(The)184 708 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14
+E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 300 Q F2(wor)2.5 E
+(dlist)-.37 E F0(The)184 312 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14
 (is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14
-(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F 2.008
-(each resultant w)184 720 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15
-F 2.007(possible completions are the members of the)4.508 F
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(57)192.055 E 0 Cg EP
-%%Page: 58 58
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(resultant list which match the w)184 84 Q(ord being completed.)-.1 E/F1
-10/Times-Bold@0 SF<ad58>144 96 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5
-E(\214lterpat)184 108 Q F0 .455(is a pattern as used for pathname e)
-2.955 F 2.956(xpansion. It)-.15 F .456
-(is applied to the list of possible)2.956 F 1.596
-(completions generated by the preceding options and ar)184 120 R 1.596
-(guments, and each completion)-.18 F(matching)184 132 Q F2(\214lterpat)
+(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F .981
+(each resultant w)184 324 R .981(ord is e)-.1 F 3.481(xpanded. Shell)
+-.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37
+E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 336 Q .765
+(vide a mechanism for the w)-.15 F .766
+(ords to contain shell metacharacters or characters in the)-.1 F -.25
+(va)184 348 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
+A F0 1.964
+(The possible completions are the members of the resultant list which)
+6.465 F(match the w)184 360 Q(ord being completed.)-.1 E F1<ad58>144 372
+Q F2(\214lterpat)2.5 E(\214lterpat)184 384 Q F0 .455
+(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F
+.456(is applied to the list of possible)2.956 F 1.596
+(completions generated by the preceding options and ar)184 396 R 1.596
+(guments, and each completion)-.18 F(matching)184 408 Q F2(\214lterpat)
 3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
 (rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
 (in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
-(tes the pattern;).05 F(in this case, an)184 144 Q 2.5(yc)-.15 G
+(tes the pattern;).05 F(in this case, an)184 420 Q 2.5(yc)-.15 G
 (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E .467(The return v)144 160.8 R .467
+-.15(ve)-.15 G(d.).15 E .467(The return v)144 436.8 R .467
 (alue is true unless an in)-.25 F -.25(va)-.4 G .466
 (lid option is supplied, an option other than).25 F F1<ad70>2.966 E F0
 (or)2.966 E F1<ad72>2.966 E F0 .466(is sup-)2.966 F 1.361
-(plied without a)144 172.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
+(plied without a)144 448.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
 (gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H
-1.362(ompletion speci\214cation for a).15 F F2(name)144 184.8 Q F0
+1.362(ompletion speci\214cation for a).15 F F2(name)144 460.8 Q F0
 (for which no speci\214cation e)2.5 E
 (xists, or an error occurs adding a completion speci\214cation.)-.15 E
-F1(compopt)108 201.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
-F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2
-(name)-2.5 E F0(])A .447(Modify completion options for each)144 213.6 R
-F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
+F1(compopt)108 477.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
+F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C
+F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 489.6
+F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
 .447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725
-(completion if no)144 225.6 R F2(name)3.225 E F0 3.225(sa)C .725
+(completion if no)144 501.6 R F2(name)3.225 E F0 3.225(sa)C .725
 (re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
 C .725(re gi)-3.225 F -.15(ve)-.25 G .726
-(n, display the completion options for).15 F(each)144 237.6 Q F2(name)
+(n, display the completion options for).15 F(each)144 513.6 Q F2(name)
 3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v)
 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224
-F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 249.6 Q F0 -.2(bu)
-2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he)
--5.297 E F1<ad44>2.797 E F0 .297
-(option indicates that the remaining options should apply to)2.797 F
-1.228(the `)144 261.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
+F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 525.6 Q F0 -.2(bu)
+2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
+-5.178 E F1<ad44>2.678 E F0 .178
+(option indicates that other supplied options should apply to)2.678 F
+1.228(the `)144 537.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
 mmand completion; that is, completion attempted on a command for which \
-no)-3.728 F 2.177(completion has pre)144 273.6 R 2.177
-(viously been de\214ned.)-.25 F(The)7.177 E F1<ad45>4.677 E F0 2.178
-(option indicates that the remaining options)4.678 F(should apply to `)
-144 285.6 Q(`empty')-.74 E 2.5('c)-.74 G
-(ommand completion; that is, completion attempted on a blank line.)-2.5
-E 1.388(The return v)144 309.6 R 1.388(alue is true unless an in)-.25 F
--.25(va)-.4 G 1.387
+no)-3.728 F 2.038(completion has pre)144 549.6 R 2.038
+(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.039
+(option indicates that other supplied options)4.538 F 1.539
+(should apply to `)144 561.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
+(ommand completion; that is, completion attempted on a blank line.)
+-4.039 F(The)144 573.6 Q F1<ad49>3.205 E F0 .705(option indicates that \
+other supplied options should apply to completion on the inital non-)
+3.205 F .868(assignment w)144 585.6 R .868
+(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368
+E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-)
+-3.367 F(mand name completion.)144 597.6 Q 1.387(The return v)144 621.6
+R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388
 (lid option is supplied, an attempt is made to modify the).25 F
-(options for a)144 321.6 Q F2(name)2.5 E F0
+(options for a)144 633.6 Q F2(name)2.5 E F0
 (for which no completion speci\214cation e)2.5 E
-(xists, or an output error occurs.)-.15 E F1(continue)108 338.4 Q F0([)
-2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 350.4 R 1.753
+(xists, or an output error occurs.)-.15 E F1(continue)108 650.4 Q F0([)
+2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 662.4 R 1.754
 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A
 F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1
-(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754
-(is speci\214ed,)4.494 F 1.209(resume at the)144 362.4 R F2(n)3.709 E F0
-1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10
+(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753
+(is speci\214ed,)4.493 F 1.208(resume at the)144 674.4 R F2(n)3.709 E F0
+1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10
 /Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209
-(is greater than the number of enclosing)3.949 F .513
-(loops, the last enclosing loop \(the `)144 374.4 R(`top-le)-.74 E -.15
-(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514
-(The return v)5.514 F .514(alue is 0 unless)-.25 F F2(n)3.014 E F0(is)
-3.014 E(not greater than or equal to 1.)144 386.4 Q F1(declar)108 403.2
-Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1<ad70>-2.5 E
-F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1
-(typeset)108 415.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1
-<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(..])-2.5 E 1.265(Declare v)144 427.2 R 1.265(ariables and/or gi)-.25 F
-1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)
-3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25
-G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F
--.25(va)144 439.2 S 3.482(riables. The).25 F F1<ad70>3.482 E F0 .982
-(option will display the attrib)3.482 F .982(utes and v)-.2 F .983
-(alues of each)-.25 F F2(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F1
-<ad70>3.483 E F0 .983(is used)3.483 F(with)144 451.2 Q F2(name)2.775 E
-F0(ar)2.775 E .275(guments, additional options, other than)-.18 F F1
-<ad66>2.775 E F0(and)2.775 E F1<ad46>2.775 E F0 2.775(,a)C .274
-(re ignored.)-2.775 F(When)5.274 E F1<ad70>2.774 E F0 .274(is supplied)
-2.774 F(without)144 463.2 Q F2(name)4.813 E F0(ar)4.813 E 2.313
-(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.314
-(alues of all v)-.25 F 2.314(ariables ha)-.25 F 2.314(ving the)-.2 F
-(attrib)144 475.2 Q 1.182(utes speci\214ed by the additional options.)
--.2 F 1.181(If no other options are supplied with)6.182 F F1<ad70>3.681
-E F0(,)A F1(declar)3.681 E(e)-.18 E F0 .62(will display the attrib)144
-487.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12
-(ariables. The)-.25 F F1<ad66>3.12 E F0 .62
-(option will restrict the display)3.12 F 1.291(to shell functions.)144
-499.2 R(The)6.291 E F1<ad46>3.791 E F0 1.291(option inhibits the displa\
-y of function de\214nitions; only the function)3.791 F .948
-(name and attrib)144 511.2 R .948(utes are printed.)-.2 F .948(If the)
-5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948
+(is greater than the number of enclosing)3.949 F .514
+(loops, the last enclosing loop \(the `)144 686.4 R(`top-le)-.74 E -.15
+(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513
+(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is)
+3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768
+Q(2018 December 7)139.295 E(60)188.455 E 0 Cg EP
+%%Page: 61 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C
+F1<ad70>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0([=)A
+F2(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108 96 Q F0([)2.5 E F1
+(\255aAfFgilnrtux)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5
+E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E 1.264(Declare v)144 108 R
+1.264(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib)
+.15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C
+1.265(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265
+(hen display the v)-3.765 F 1.265(alues of)-.25 F -.25(va)144 120 S
+3.483(riables. The).25 F F1<ad70>3.483 E F0 .983
+(option will display the attrib)3.483 F .983(utes and v)-.2 F .982
+(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1
+<ad70>3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0
+(ar)2.774 E .274(guments, additional options, other than)-.18 F F1<ad66>
+2.775 E F0(and)2.775 E F1<ad46>2.775 E F0 2.775(,a)C .275(re ignored.)
+-2.775 F(When)5.275 E F1<ad70>2.775 E F0 .275(is supplied)2.775 F
+(without)144 144 Q F2(name)4.814 E F0(ar)4.814 E 2.314
+(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313
+(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F
+(attrib)144 156 Q 1.181(utes speci\214ed by the additional options.)-.2
+F 1.182(If no other options are supplied with)6.181 F F1<ad70>3.682 E F0
+(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 168 R
+.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The)
+-.25 F F1<ad66>3.12 E F0 .62(option will restrict the display)3.12 F
+1.29(to shell functions.)144 180 R(The)6.29 E F1<ad46>3.79 E F0 1.291(o\
+ption inhibits the display of function de\214nitions; only the function)
+3.791 F .948(name and attrib)144 192 R .948(utes are printed.)-.2 F .948
+(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948
 (shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C
 .948(he source)-3.448 F 1.69(\214le name and line number where each)144
-523.2 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19
-F(The)6.69 E F1<ad46>4.19 E F0(option)4.19 E(implies)144 535.2 Q F1
-<ad66>3.891 E F0 6.391(.T)C(he)-6.391 E F1<ad67>3.891 E F0 1.391
-(option forces v)3.891 F 1.391
+204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F
+(The)6.69 E F1<ad46>4.19 E F0(option)4.19 E(implies)144 216 Q F1<ad66>
+3.892 E F0 6.392(.T)C(he)-6.392 E F1<ad67>3.892 E F0 1.391
+(option forces v)3.892 F 1.391
 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15
-(ve)-.25 G(n).15 E(when)144 547.2 Q F1(declar)4.383 E(e)-.18 E F0 1.883
-(is e)4.383 F -.15(xe)-.15 G 1.883(cuted in a shell function.).15 F
-1.882(It is ignored in all other cases.)6.883 F 1.882(The follo)6.882 F
-(wing)-.25 E .793(options can be used to restrict output to v)144 559.2
-R .794(ariables with the speci\214ed attrib)-.25 F .794(ute or to gi)-.2
-F 1.094 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 571.2 Q(utes:)-.2 E
-F1<ad61>144 583.2 Q F0(Each)180 583.2 Q F2(name)2.5 E F0(is an inde)2.5
-E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1
-(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1<ad41>144 595.2 Q
-F0(Each)180 595.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)
--.25 H(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1<ad66>144 607.2 Q F0(Use function names only)
-180 607.2 Q(.)-.65 E F1<ad69>144 619.2 Q F0 .558(The v)180 619.2 R .558
+(ve)-.25 G(n).15 E(when)144 228 Q F1(declar)4.382 E(e)-.18 E F0 1.882
+(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F
+1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F
+(wing)-.25 E .794(options can be used to restrict output to v)144 240 R
+.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F
+1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1
+<ad61>144 264 Q F0(Each)180 264 Q F2(name)2.5 E F0(is an inde)2.5 E -.15
+(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5
+E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1<ad41>144 276 Q F0(Each)180
+276 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v)
+.15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G
+(\).).15 E F1<ad66>144 288 Q F0(Use function names only)180 288 Q(.)-.65
+E F1<ad69>144 300 Q F0 .557(The v)180 300 R .558
 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
-(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 631.2 Q F0(abo)
-2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)
--2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1<ad6c>144 643.2 Q
-F0 .909(When the v)180 643.2 R .909(ariable is assigned a v)-.25 F .909
+(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 312 Q F0(abo)2.25
+E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E
+(ariable is assigned a v)-.25 E(alue.)-.25 E F1<ad6c>144 324 Q F0 .91
+(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909
 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
-G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 655.2 R
-(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad6e>144 667.2
-Q F0(Gi)180 667.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0
-(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
+G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 336 R
+(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad6e>144 348 Q
+F0(Gi)180 348 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the)
+3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E
-1.518(That other v)180 679.2 R 1.518(ariable is de\214ned by the v)-.25
-F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519
-(ll references, assignments, and)-6.519 F(attrib)180 691.2 Q .227
+1.519(That other v)180 360 R 1.519(ariable is de\214ned by the v)-.25 F
+1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518
+(ll references, assignments, and)-6.518 F(attrib)180 372 Q .226
 (ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226
 (xcept those using or changing the)-2.876 F F1<ad6e>2.726 E F0(attrib)
-2.726 E .226(ute itself, are)-.2 F .808(performed on the v)180 703.2 R
-.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D
-3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2
-F(applied to array v)180 715.2 Q(ariables.)-.25 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(58)192.055 E 0 Cg EP
-%%Page: 59 59
+2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 384 R
+.809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D
+3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2
+F(applied to array v)180 396 Q(ariables.)-.25 E F1<ad72>144 408 Q F0
+(Mak)180 408 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E
+7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F
+2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 420
+Q F1<ad74>144 432 Q F0(Gi)180 432 Q .73 -.15(ve e)-.25 H(ach).15 E F2
+(name)2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E
+2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929
+E(UG)-.1 E F0(and)2.929 E F1(RETURN)2.929 E F0
+(traps from the calling shell.)180 444 Q(The trace attrib)5 E
+(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1<ad75>144 456
+Q F0 .909(When the v)180 456 R .909(ariable is assigned a v)-.25 F .909
+(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15
+(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 468 R(lo)2.5
+E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad78>144 480 Q
+F0(Mark)180 480 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144
+(Using `+' instead of `\255' turns of)144 496.8 R 2.643(ft)-.25 G .143
+(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143
+(xceptions that)-.15 F F1(+a)2.643 E F0(and)2.643 E F1(+A)2.643 E F0
+.143(may not)2.643 F .578(be used to destro)144 508.8 R 3.079(ya)-.1 G
+.579(rray v)-3.079 F .579(ariables and)-.25 F F1(+r)3.079 E F0 .579
+(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
+F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 520.8 Q F1
+(declar)3.544 E(e)-.18 E F0(and)3.544 E F1(typeset)3.544 E F0(mak)3.544
+E 3.544(ee)-.1 G(ach)-3.544 E F2(name)3.543 E F0 1.043
+(local, as with the)3.543 F F1(local)3.543 E F0 1.043
+(command, unless the)3.543 F F1<ad67>3.543 E F0 1.205
+(option is supplied.)144 532.8 R 1.205(If a v)6.205 F 1.205
+(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F2(value)A F0 3.705
+(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
+(ariable is set to)-.25 F F2(value)144 544.8 Q F0 5.218(.W)C .218
+(hen using)-5.218 F F1<ad61>2.718 E F0(or)2.718 E F1<ad41>2.718 E F0
+.217(and the compound assignment syntax to create array v)2.717 F .217
+(ariables, addi-)-.25 F .882(tional attrib)144 556.8 R .882
+(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
+(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
+(alue is 0 unless an)-.25 F(in)144 568.8 Q -.25(va)-.4 G 1.26(lid optio\
+n is encountered, an attempt is made to de\214ne a function using).25 F
+/F4 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E
+.187(attempt is made to assign a v)144 580.8 R .187
+(alue to a readonly v)-.25 F .188
+(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F
+1.749(array v)144 592.8 R 1.749
+(ariable without using the compound assignment syntax \(see)-.25 F F1
+(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F
+F2(names)144 604.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
+.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
+.359(eadonly status for a read-)-2.859 F 1.213(only v)144 616.8 R 1.213
+(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
+(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is)
+-.25 F(made to display a non-e)144 628.8 Q(xistent function with)-.15 E
+F1<ad66>2.5 E F0(.)A F1(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)
+C<ad>-2.5 E F2(n)A F1(])A F0 -.4(Wi)144 657.6 S .328
+(thout options, displays the list of currently remembered directories.)
+.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
+(single line with directory names separated by spaces.)144 669.6 R 1.238
+(Directories are added to the list with the)6.238 F F1(pushd)144 681.6 Q
+F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo)
+4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
+F 2.003(The current directory is)7.003 F(al)144 693.6 Q -.1(wa)-.1 G
+(ys the \214rst directory in the stack.).1 E F1<ad63>144 705.6 Q F0
+(Clears the directory stack by deleting all of the entries.)180 705.6 Q
+F1<ad6c>144 717.6 Q F0 .882
+(Produces a listing using full pathnames; the def)180 717.6 R .881
+(ault listing format uses a tilde to denote)-.1 F(the home directory)180
+729.6 Q(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(61)
+188.455 E 0 Cg EP
+%%Page: 62 62
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad72>144 84 Q F0(Mak)180 84 Q(e)-.1 E/F2 10/Times-Italic@0 SF(name)
-5.047 E F0 5.047(sr)C(eadonly)-5.047 E 7.547(.T)-.65 G 2.546
-(hese names cannot then be assigned v)-7.547 F 2.546
-(alues by subsequent)-.25 F(assignment statements or unset.)180 96 Q F1
-<ad74>144 108 Q F0(Gi)180 108 Q .729 -.15(ve e)-.25 H(ach).15 E F2(name)
-2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929
-(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG)
--.1 E F0(and)2.93 E F1(RETURN)2.93 E F0(traps from the calling shell.)
-180 120 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E
-(ariables.)-.25 E F1<ad75>144 132 Q F0 .91(When the v)180 132 R .909
-(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909
-(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F
-(-)-.2 E 2.5(case. The)180 144 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E
-(ute is disabled.)-.2 E F1<ad78>144 156 Q F0(Mark)180 156 Q F2(name)2.5
-E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E
-(vironment.)-.4 E .12(Using `+' instead of `\255' turns of)144 172.8 R
-2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F
-.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F
-.645(to destro)144 184.8 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v)
--3.145 F .645(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo)
-3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144
-(ute. When)-.2 F .644(used in a func-)3.144 F(tion,)144 196.8 Q F1
-(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835
-E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335
-(local, as with the)2.835 F F1(local)2.835 E F0 .335
-(command, unless the)2.835 F F1<ad67>2.835 E F0(option)2.835 E 1.283
-(is supplied.)144 208.8 R 1.283(If a v)6.283 F 1.283
-(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783
-(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282
-(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144
-220.8 R F1<ad61>3.426 E F0(or)3.426 E F1<ad41>3.426 E F0 .927
-(and the compound assignment syntax to create array v)3.426 F .927
-(ariables, additional)-.25 F(attrib)144 232.8 Q .592(utes do not tak)-.2
-F 3.092(ee)-.1 G -.25(ff)-3.092 G .592
-(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592
-(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429
-(option is encountered, an attempt is made to de\214ne a function using)
-144 244.8 R/F3 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C
-2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144
-256.8 R .063(alue to a readonly v)-.25 F .062
-(ariable, an attempt is made to assign a v)-.25 F .062
-(alue to an array v)-.25 F(ari-)-.25 E .102
-(able without using the compound assignment syntax \(see)144 268.8 R F1
-(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F
-F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 280.8 S .172
-(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25
-F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171
-(ariable, an)-.25 F .96(attempt is made to turn of)144 292.8 R 3.46(fa)
--.25 G .96(rray status for an array v)-3.46 F .96
-(ariable, or an attempt is made to display a)-.25 F(non-e)144 304.8 Q
-(xistent function with)-.15 E F1<ad66>2.5 E F0(.)A F1
-(dirs [\255clpv] [+)108 321.6 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
-(])A F0 -.4(Wi)144 333.6 S .329
-(thout options, displays the list of currently remembered directories.)
-.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 345.6 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 357.6 Q
-F0 2.003(command; the)4.504 F F1(popd)4.503 E F0 2.003(command remo)
-4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
-F 2.003(The current directory is)7.003 F(al)144 369.6 Q -.1(wa)-.1 G
-(ys the \214rst directory in the stack.).1 E F1<ad63>144 381.6 Q F0
-(Clears the directory stack by deleting all of the entries.)180 381.6 Q
-F1<ad6c>144 393.6 Q F0 .881
-(Produces a listing using full pathnames; the def)180 393.6 R .882
-(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-405.6 Q(.)-.65 E F1<ad70>144 417.6 Q F0
-(Print the directory stack with one entry per line.)180 417.6 Q F1<ad76>
-144 429.6 Q F0 .273(Print the directory stack with one entry per line, \
-pre\214xing each entry with its inde)180 429.6 R 2.772(xi)-.15 G 2.772
-(nt)-2.772 G(he)-2.772 E(stack.)180 441.6 Q F1(+)144 453.6 Q F2(n)A F0
-1.564(Displays the)180 453.6 R F2(n)4.064 E F0 1.565
-(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1
-(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 465.6 Q F1<ad>144 477.6 Q F2
-(n)A F0 1.194(Displays the)180 477.6 R F2(n)3.694 E F0 1.194
+SF<ad70>144 84 Q F0(Print the directory stack with one entry per line.)
+180 84 Q F1<ad76>144 96 Q F0 .272(Print the directory stack with one en\
+try per line, pre\214xing each entry with its inde)180 96 R 2.773(xi)
+-.15 G 2.773(nt)-2.773 G(he)-2.773 E(stack.)180 108 Q F1(+)144 120 Q/F2
+10/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 120 R F2(n)4.065 E F0
+1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25
+F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1
+E(without options, starting with zero.)180 132 Q F1<ad>144 144 Q F2(n)A
+F0 1.194(Displays the)180 144 R F2(n)3.694 E F0 1.194
 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
 F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 489.6 Q .257(The return v)144
-506.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(without options, starting with zero.)180 156 Q .258(The return v)144
+172.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
 -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 518.4 Q F1(diso)108 535.2 Q(wn)-.1 E F0([)2.5 E F1
+.15 F(tory stack.)144 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1
 (\255ar)A F0 2.5(][)C F1<ad68>-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0
-(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 547.2 S .122
+(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 213.6 S .121
 (thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)
 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H
-2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932
-F .096(neither the)144 559.2 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
+2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932
+F .096(neither the)144 225.6 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
 F1<ad72>2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E
 .096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1
 <ad68>2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each)
-.15 F F2(jobspec)145.74 571.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15
-G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F
-.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585
-(is not sent to the job if the)2.835 F .962(shell recei)144 583.2 R -.15
-(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962
+.15 F F2(jobspec)145.74 237.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15
+G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F
+.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586
+(is not sent to the job if the)2.835 F .962(shell recei)144 249.6 R -.15
+(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962
 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1
 <ad61>3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15
-H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 595.2 R F1
-<ad72>3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0
-(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F
-1.358(The return)6.358 F -.25(va)144 607.2 S(lue is 0 unless a).25 E F2
+H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 261.6 R F1
+<ad72>3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0
+(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F
+1.359(The return)6.359 F -.25(va)144 273.6 S(lue is 0 unless a).25 E F2
 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
-F1(echo)108 624 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
--.37 E F0(...])2.5 E .424(Output the)144 636 R F2(ar)2.924 E(g)-.37 E F0
-.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
-(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308
-(error occurs.)144 648 R(If)5.308 E F1<ad6e>2.808 E F0 .308
-(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25
-F .307(If the)5.308 F F1<ad65>2.807 E F0 .307(option is gi)2.807 F -.15
-(ve)-.25 G .307(n, inter).15 F(-)-.2 E 1.348(pretation of the follo)144
-660 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
-6.348 E F1<ad45>3.849 E F0 1.349(option disables the)3.849 F 1.055
-(interpretation of these escape characters, e)144 672 R -.15(ve)-.25 G
-3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.554
-(ya)-.15 G 1.054(re interpreted by def)-3.554 F(ault.)-.1 E(The)144 684
-Q F1(xpg_echo)3.458 E F0 .959
-(shell option may be used to dynamically determine whether or not)3.458
-F F1(echo)3.459 E F0 -.15(ex)3.459 G(pands).15 E .716
-(these escape characters by def)144 696 R(ault.)-.1 E F1(echo)5.716 E F0
-.716(does not interpret)3.216 F F1<adad>3.216 E F0 .715
-(to mean the end of options.)3.216 F F1(echo)5.715 E F0
-(interprets the follo)144 708 Q(wing escape sequences:)-.25 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(59)192.055 E 0 Cg EP
-%%Page: 60 60
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(\\a)144 84 Q F0(alert \(bell\))180 84 Q F1(\\b)144 96 Q F0(backspace)
-180 96 Q F1(\\c)144 108 Q F0(suppress further output)180 108 Q F1(\\e)
-144 120 Q(\\E)144 132 Q F0(an escape character)180 132 Q F1(\\f)144 144
-Q F0(form feed)180 144 Q F1(\\n)144 156 Q F0(ne)180 156 Q 2.5(wl)-.25 G
-(ine)-2.5 E F1(\\r)144 168 Q F0(carriage return)180 168 Q F1(\\t)144 180
-Q F0(horizontal tab)180 180 Q F1(\\v)144 192 Q F0 -.15(ve)180 192 S
-(rtical tab).15 E F1(\\\\)144 204 Q F0(backslash)180 204 Q F1(\\0)144
-216 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)
-180 216 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
-(\(zero to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0
-(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E
-(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0
-1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507
-(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 276 Q F2(HHHHHHHH)A F0 .548
-(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547
-(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\))
--2.5 E F1(enable)108 316.8 Q F0([)2.5 E F1<ad61>A F0 2.5(][)C F1
-(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5
-(][)C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 328.8 R
+F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .425(Output the)144 302.4 R F2(ar)2.925 E(g)-.37 E
+F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
+(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307
+(error occurs.)144 314.4 R(If)5.307 E F1<ad6e>2.807 E F0 .307
+(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25
+F .308(If the)5.308 F F1<ad65>2.808 E F0 .308(option is gi)2.808 F -.15
+(ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144
+326.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
+6.348 E F1<ad45>3.848 E F0 1.348(option disables the)3.848 F 1.054
+(interpretation of these escape characters, e)144 338.4 R -.15(ve)-.25 G
+3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555
+(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144
+350.4 Q F1(xpg_echo)3.459 E F0 .959
+(shell option may be used to dynamically determine whether or not)3.459
+F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715
+(these escape characters by def)144 362.4 R(ault.)-.1 E F1(echo)5.715 E
+F0 .716(does not interpret)3.215 F F1<adad>3.216 E F0 .716
+(to mean the end of options.)3.216 F F1(echo)5.716 E F0
+(interprets the follo)144 374.4 Q(wing escape sequences:)-.25 E F1(\\a)
+144 386.4 Q F0(alert \(bell\))180 386.4 Q F1(\\b)144 398.4 Q F0
+(backspace)180 398.4 Q F1(\\c)144 410.4 Q F0(suppress further output)180
+410.4 Q F1(\\e)144 422.4 Q(\\E)144 434.4 Q F0(an escape character)180
+434.4 Q F1(\\f)144 446.4 Q F0(form feed)180 446.4 Q F1(\\n)144 458.4 Q
+F0(ne)180 458.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 470.4 Q F0
+(carriage return)180 470.4 Q F1(\\t)144 482.4 Q F0(horizontal tab)180
+482.4 Q F1(\\v)144 494.4 Q F0 -.15(ve)180 494.4 S(rtical tab).15 E F1
+(\\\\)144 506.4 Q F0(backslash)180 506.4 Q F1(\\0)144 518.4 Q F2(nnn)A
+F0(the eight-bit character whose v)180 518.4 Q(alue is the octal v)-.25
+E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1
+(\\x)144 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.4 Q
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
+(\\u)144 542.4 Q F2(HHHH)A F0 1.507
+(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506
+(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547
+(the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547
+(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
+(igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E F1<ad61>A F0 2.5(][)C
+F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5
+(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.2 R
 .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
-(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834
-(the same name as a shell b)144 340.8 R .834(uiltin to be e)-.2 F -.15
+(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833
+(the same name as a shell b)144 643.2 R .834(uiltin to be e)-.2 F -.15
 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
-(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989
-(the shell normally searches for b)144 352.8 R .989
-(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .99
-(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582
-(abled; otherwise,)144 364.8 R F2(names)4.082 E F0 1.582(are enabled.)
+(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99
+(the shell normally searches for b)144 655.2 R .989
+(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .989
+(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581
+(abled; otherwise,)144 667.2 R F2(names)4.082 E F0 1.582(are enabled.)
 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F
-F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0
-SF -.666(PA)4.081 G(TH)-.189 E F0 .08(instead of the shell b)144 376.8 R
-.08(uiltin v)-.2 F .08(ersion, run)-.15 F/F4 10/Courier@0 SF .081
-(enable -n test)2.58 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.581 E F0 .081
-(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 388.8 S 1.525
-(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F
+F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082
+G(TH)-.189 E F0 .081(instead of the shell b)144 679.2 R .081(uiltin v)
+-.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)
+2.581 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.58 E F0 .08
+(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.2 S 1.524
+(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F
 F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
-(ystems that support dynamic loading.)-4.024 F(The)144 400.8 Q F1<ad64>
-2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F
-.366(viously loaded with)-.25 F F1<ad66>2.867 E F0 5.367(.I)C 2.867(fn)
--5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi)
--.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 412.8 R F1<ad70>
-2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399
+(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1<ad64>
+2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F
+.367(viously loaded with)-.25 F F1<ad66>2.866 E F0 5.366(.I)C 2.866(fn)
+-5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi)
+-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1<ad70>
+2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399
 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4
-F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144
-424.8 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
-(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F
-(If)5.099 E F1<ad61>2.599 E F0 1.917
-(is supplied, the list printed includes all b)144 436.8 R 1.916
-(uiltins, with an indication of whether or not each is)-.2 F 2.878
-(enabled. If)144 448.8 R F1<ad73>2.878 E F0 .379
-(is supplied, the output is restricted to the POSIX)2.878 F F2(special)
-2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F
-(alue)-.25 E .995(is 0 unless a)144 460.8 R F2(name)3.855 E F0 .994
-(is not a shell b)3.675 F .994(uiltin or there is an error loading a ne)
--.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144
-472.8 Q F1 -2.3 -.15(ev a)108 489.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37
-E F0(...])2.5 E(The)144 501.6 Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
-(re read and concatenated together into a single command.)-3.17 F .671
-(This command is then read)5.671 F .495(and e)144 513.6 R -.15(xe)-.15 G
+F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144
+727.2 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
+(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F
+(If)5.098 E F1<ad61>2.598 E F0(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(62)188.455 E 0 Cg EP
+%%Page: 63 63
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.916
+(is supplied, the list printed includes all b)144 84 R 1.916
+(uiltins, with an indication of whether or not each is)-.2 F 2.879
+(enabled. If)144 96 R/F1 10/Times-Bold@0 SF<ad73>2.879 E F0 .379
+(is supplied, the output is restricted to the POSIX)2.879 F/F2 10
+/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The)
+.2 F .378(return v)2.878 F(alue)-.25 E .994(is 0 unless a)144 108 R F2
+(name)3.854 E F0 .994(is not a shell b)3.674 F .994
+(uiltin or there is an error loading a ne)-.2 F 3.495(wb)-.25 G .995
+(uiltin from a shared)-3.695 F(object.)144 120 Q F1 -2.3 -.15(ev a)108
+136.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 148.8
+Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671
+(re read and concatenated together into a single command.)-3.171 F .67
+(This command is then read)5.67 F .495(and e)144 160.8 R -.15(xe)-.15 G
 .495(cuted by the shell, and its e).15 F .495
 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15
 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no)
--2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 525.6 Q
+-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 172.8 Q
 (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
-(exec)108 542.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
+(exec)108 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)
--.37 E F0(]])A(If)144 554.4 Q F2(command)3.005 E F0 .305
-(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805
-(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E
-(guments)-.37 E F0(become)3.076 E .177(the ar)144 566.4 R .177
+-.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306
+(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805
+(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E
+(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176
 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
 (he)-2.676 E F1<ad6c>2.676 E F0 .176
-(option is supplied, the shell places a dash at the be)2.676 F .176
-(ginning of)-.15 F .499(the zeroth ar)144 578.4 R .499(gument passed to)
--.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2
-(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F1<ad63>3 E F0
-.5(option causes)3 F F2(com-)3.2 E(mand)144 590.4 Q F0 .639(to be e)
-3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
+(option is supplied, the shell places a dash at the be)2.676 F .177
+(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18
+F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999
+E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F1<ad63>2.999 E F0
+.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.6 Q F0 .638
+(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
 (vironment. If)-.4 F F1<ad61>3.138 E F0 .638
-(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the)
-3.318 F 1.077(zeroth ar)144 602.4 R 1.077(gument to the e)-.18 F -.15
+(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the)
+3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15
 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0
 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a)
-.15 F(non-interacti)144 614.4 Q .877 -.15(ve s)-.25 H .577(hell e).15 F
-.577(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577
-(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577
-F(ail-)-.1 E 2.505(ure. An)144 626.4 R(interacti)2.505 E .305 -.15(ve s)
--.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e)
--.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005
-(is not speci\214ed,)3.275 F(an)144 638.4 Q 3.037(yr)-.15 G .537
-(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536
-(ect in the current shell, and the return status is 0.).25 F .536
-(If there is a redirection)5.536 F(error)144 650.4 Q 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 667.2 Q F0([)2.5 E F2(n)A F0
-(])A .095(Cause the shell to e)144 667.2 R .095(xit with a status of)
--.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096
-(is omitted, the e)2.835 F .096(xit status is that of the last command)
--.15 F -.15(exe)144 679.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5
-E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E
-F1(export)108 696 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5
-E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(60)192.055 E 0 Cg EP
-%%Page: 61 61
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(export \255p)108 84 Q F0 .257(The supplied)144 96 R/F2 10
-/Times-Italic@0 SF(names)3.117 E F0 .257(are mark)3.027 F .257
-(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
-(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.626
-(commands. If)144 108 R(the)2.626 E F1<ad66>2.626 E F0 .127
-(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E
-F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E
-F0 .127(are gi)2.897 F -.15(ve)-.25 G .127(n, or if the).15 F F1<ad70>
-144 120 Q F0 .048(option is supplied, a list of names of all e)2.548 F
-.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1
-<ad6e>2.547 E F0 .047(option causes the)2.547 F -.15(ex)144 132 S 1.446
+.15 F(non-interacti)144 261.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
+.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577
+(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577
+F(ail-)-.1 E 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s)
+-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
+F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
+(xits uncondi-)-.15 F .287(tionally if)144 285.6 R F1(exec)2.787 E F0
+-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
+(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
+-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
+.25 F(and the return status is 0.)144 297.6 Q
+(If there is a redirection error)5 E 2.5(,t)-.4 G
+(he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0
+(])A .096(Cause the shell to e)144 314.4 R .096(xit with a status of)
+-.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095
+(is omitted, the e)2.835 F .095(xit status is that of the last command)
+-.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9
+/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G
+(cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5
+E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E
+F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R
+F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F
+.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15
+(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1
+<ad66>2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the)
+.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no)
+5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126
+(n, or if the).15 F F1<ad70>144 391.2 Q F0 .048
+(option is supplied, a list of names of all e)2.547 F .048(xported v)
+-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1<ad6e>2.548 E F0
+.048(option causes the)2.548 F -.15(ex)144 403.2 S 1.447
 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G
 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d)
--.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 144 S .742(lue of the v).25
-F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1
-(export)5.742 E F0 .742(returns an e)3.242 F .741
-(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is)
-.25 F .031(encountered, one of the)144 156 R F2(names)2.531 E F0 .031
-(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
-F F1<ad66>2.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0
-(that)2.712 E(is not a function.)144 168 Q F1(fc)108 184.8 Q F0([)2.5 E
+-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 415.2 S .741(lue of the v)
+.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
+(export)5.741 E F0 .742(returns an e)3.242 F .742
+(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is)
+.25 F .032(encountered, one of the)144 427.2 R F2(names)2.532 E F0 .032
+(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
+F F1<ad66>2.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0
+(that)2.711 E(is not a function.)144 439.2 Q F1(fc)108 456 Q F0([)2.5 E
 F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2
 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108
-196.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
-(cmd)-2.5 E F0(])A .432
-(The \214rst form selects a range of commands from)144 208.8 R F2<8c72>
-4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431
-(from the history list and displays or)3.612 F .141(edits and re-e)144
-220.8 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
+468 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+(cmd)-2.5 E F0(])A .431
+(The \214rst form selects a range of commands from)144 480 R F2<8c72>
+4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432
+(from the history list and displays or)3.612 F .142(edits and re-e)144
+492 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
 .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141
 (may be speci\214ed as a string \(to locate the last command)3.321 F(be)
-144 232.8 Q .311(ginning with that string\) or as a number \(an inde)
--.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F
--.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .314
-(is used as an of)144 244.8 R .314
-(fset from the current command number\).)-.25 F(If)5.314 E F2(last)2.905
-E F0 .315(is not speci\214ed it is set to the cur)3.495 F(-)-.2 E .949
-(rent command for listing \(so that)144 256.8 R/F3 10/Courier@0 SF .948
-(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to)
-3.448 F F2<8c72>5.358 E(st)-.1 E F0(other)4.128 E(-)-.2 E 2.5(wise. If)
-144 268.8 R F2<8c72>4.41 E(st)-.1 E F0
-(is not speci\214ed it is set to the pre)3.18 E
-(vious command for editing and \25516 for listing.)-.25 E(The)144 292.8
-Q F1<ad6e>2.522 E F0 .022
+144 504 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
+2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)
+-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of)
+144 516 R .19(fset from the current command number\).)-.25 F(If)5.19 E
+F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F
+(-)-.2 E .948(rent command for listing \(so that)144 528 R/F4 10
+/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948
+(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E
+F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 540 R F2<8c72>4.41 E(st)-.1 E
+F0(is not speci\214ed, it is set to the pre)3.18 E
+(vious command for editing and \25516 for listing.)-.25 E(The)144 564 Q
+F1<ad6e>2.522 E F0 .022
 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E
 F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022
-(rses the order of).15 F .438(the commands.)144 304.8 R .438(If the)
-5.438 F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
+(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438
+F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E
-.334(the editor gi)144 316.8 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E
-F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835
-(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835
-F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G
-(n,).15 E .631(the v)144 328.8 R .631(alue of the)-.25 F/F4 9
-/Times-Bold@0 SF(FCEDIT)3.131 E F0 -.25(va)2.881 G .631
-(riable is used, and the v).25 F .631(alue of)-.25 F F4(EDIT)3.131 E(OR)
--.162 E F0(if)2.881 E F4(FCEDIT)3.13 E F0 .63(is not set.)2.88 F .63
-(If nei-)5.63 F .95(ther v)144 340.8 R .95(ariable is set,)-.25 F F2(vi)
-5.116 E F0 .95(is used.)5.116 F .951
-(When editing is complete, the edited commands are echoed and)5.95 F
--.15(exe)144 352.8 S(cuted.).15 E .789(In the second form,)144 376.8 R
-F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
+.335(the editor gi)144 588 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
+(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
+.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
+(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
+(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0
+-.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F
+F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631
+(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951
+(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95
+(When editing is complete, the edited commands are echoed and)5.951 F
+-.15(exe)144 624 S(cuted.).15 E .788(In the second form,)144 648 R F2
+(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788
-(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788
-E(mand)144 388.8 Q F0 .346(is intepreted the same as)2.846 F F2<8c72>
-2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347
-(useful alias to use with this is)-2.5 F F3 .347(r='fc \255s')2.847 F F0
-2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 400.8 Q F3 7.166
-(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166
-(ginning with)-.15 F F3(cc)3.666 E F0 1.165(and typing)3.666 F F3(r)
-3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F
-(mand.)144 412.8 Q .142(If the \214rst form is used, the return v)144
-436.8 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
+(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789
+E(mand)144 660 Q F0 .172(is interpreted the same as)2.672 F F2<8c72>
+2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
+(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0
+2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 672 Q F4 7.165(rc)
+3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166
+(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r)
+3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F
+(mand.)144 684 Q .142(If the \214rst form is used, the return v)144 708
+R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
-E F2(last)2.732 E F0 .455(specify history lines out of range.)144 448.8
-R .454(If the)5.454 F F1<ad65>2.954 E F0 .454
-(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454
-(alue of the)-.25 F .787(last command e)144 460.8 R -.15(xe)-.15 G .787
-(cuted or f).15 F .788
+E F2(last)2.732 E F0 .454(specify history lines out of range.)144 720 R
+.454(If the)5.454 F F1<ad65>2.954 E F0 .454
+(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455
+(alue of the)-.25 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(63)
+188.455 E 0 Cg EP
+%%Page: 64 64
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .788
+(last command e)144 84 R -.15(xe)-.15 G .788(cuted or f).15 F .787
 (ailure if an error occurs with the temporary \214le of commands.)-.1 F
-.788(If the)5.788 F 1.136
+.787(If the)5.787 F 1.135
 (second form is used, the return status is that of the command re-e)144
-472.8 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135
-(does not)4.405 F(specify a v)144 484.8 Q
-(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E
-(ailure.)-.1 E F1(fg)108 501.6 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
-144 513.6 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413
-(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
-(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
-1.414(is not present, the)4.223 F(shell')144 525.6 Q 3.117(sn)-.55 G
-.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617
-(is used.)3.117 F .617(The return v)5.617 F .616
-(alue is that of the command placed into the)-.25 F(fore)144 537.6 Q
-.362(ground, or f)-.15 F .362
-(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363
-(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 549.6 Q
-F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0
+96 R -.15(xe)-.15 G 1.136(cuted, unless).15 F/F1 10/Times-Italic@0 SF
+(cmd)3.836 E F0 1.136(does not)4.406 F(specify a v)144 108 Q
+(alid history line, in which case)-.25 E/F2 10/Times-Bold@0 SF(fc)2.5 E
+F0(returns f)2.5 E(ailure.)-.1 E F2(fg)108 124.8 Q F0([)2.5 E F1
+(jobspec)A F0(])A(Resume)144 136.8 Q F1(jobspec)5.654 E F0 1.413
+(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913
+(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1
+(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 148.8 Q
+3.116(sn)-.55 G .616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)
+-.37 F F0 .617(is used.)3.116 F .617(The return v)5.617 F .617
+(alue is that of the command placed into the)-.25 F(fore)144 160.8 Q
+.363(ground, or f)-.15 F .363
+(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
+(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 172.8 Q
+F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0
 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E
-F1(getopts)108 566.4 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)
--.37 E F0(])A F1(getopts)144 578.4 Q F0 .793
-(is used by shell procedures to parse positional parameters.)3.294 F F2
-(optstring)6.023 E F0 .793(contains the option)3.513 F .149
-(characters to be recognized; if a character is follo)144 590.4 R .15
-(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45
--.15(ve a)-.2 H(n).15 E(ar)144 602.4 Q .579
-(gument, which should be separated from it by white space.)-.18 F .578
+F2(getopts)108 189.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)
+-.37 E F0(])A F2(getopts)144 201.6 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.293 F F1
+(optstring)6.023 E F0 .793(contains the option)3.513 F .15
+(characters to be recognized; if a character is follo)144 213.6 R .149
+(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
+-.15(ve a)-.2 H(n).15 E(ar)144 225.6 Q .578
+(gument, which should be separated from it by white space.)-.18 F .579
 (The colon and question mark char)5.579 F(-)-.2 E 1.665
-(acters may not be used as option characters.)144 614.4 R 1.665
-(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts)
-4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797
-(option in the shell v)144 626.4 R(ariable)-.25 E F2(name)3.297 E F0
-3.297(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797
-(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G
-3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 638.4 Q .085
-(gument to be processed into the v)-.18 F(ariable)-.25 E F4(OPTIND)2.585
-E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.585 E F0 .085
-(is initialized to 1 each time the shell)2.335 F .846
-(or a shell script is in)144 650.4 R -.2(vo)-.4 G -.1(ke).2 G 3.345
-(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1
-(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803
-(into the v)144 662.4 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A
-F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804
-(automatically; it must be manually)3.054 F .294
-(reset between multiple calls to)144 674.4 R F1(getopts)2.793 E F0 .293
+(acters may not be used as option characters.)144 237.6 R 1.665
+(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts)
+4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796
+(option in the shell v)144 249.6 R(ariable)-.25 E F1(name)3.296 E F0
+3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797
+(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G
+3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 261.6 Q .085
+(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9
+/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND)
+4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845
+(or a shell script is in)144 273.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345
+(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2
+(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804
+(into the v)144 285.6 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A
+F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803
+(automatically; it must be manually)3.053 F .293
+(reset between multiple calls to)144 297.6 R F2(getopts)2.793 E F0 .293
 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F
-2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 686.4
-Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts)
-4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044
-(alue greater than zero.)-.25 F F4(OPTIND)144 722.4 Q F0
+2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 309.6
+Q 2.044(When the end of options is encountered,)144 333.6 R F2(getopts)
+4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043
+(alue greater than zero.)-.25 F F3(OPTIND)144 345.6 Q F0
 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
-(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0
-(is set to ?.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(61)
-192.055 E 0 Cg EP
-%%Page: 62 62
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(getopts)144 84 Q F0 2.393
-(normally parses the positional parameters, b)4.893 F 2.392
-(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892
-(ni).15 G(n)-4.892 E/F2 10/Times-Italic@0 SF(ar)4.892 E(gs)-.37 E F0(,)
-.27 E F1(getopts)144 96 Q F0(parses those instead.)2.5 E F1(getopts)144
-120 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665
-(ays. If)-3.765 F 1.165(the \214rst character of)3.665 F F2(optstring)
-3.895 E F0 1.166(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E
-1.071(reporting is used.)144 132 R 1.071
-(In normal operation, diagnostic messages are printed when in)6.071 F
--.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 144 R
-.393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)-.25
-E/F3 9/Times-Bold@0 SF(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 156 Q
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
+(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392
+(normally parses the positional parameters, b)4.892 F 2.392
+(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893
+(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144
+381.6 Q F0(parses those instead.)2.5 E F2(getopts)144 405.6 Q F0 1.166
+(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F
+1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165
+(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07
+(reporting is used.)144 417.6 R 1.071
+(In normal operation, diagnostic messages are printed when in)6.07 F
+-.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144
+429.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
+(ariable)-.25 E F3(OPTERR)2.894 E F0 .394
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 441.6 Q
 -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 180 R
--.25(va)-.4 G .667(lid option is seen,).25 F F1(getopts)3.167 E F0 .667
-(places ? into)3.167 F F2(name)3.527 E F0 .666
-(and, if not silent, prints an error message)3.347 F .399(and unsets)144
-192 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E
-F1(getopts)2.899 E F0 .399
-(is silent, the option character found is placed in)2.899 F F3(OPT)2.899
-E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 204
-Q 1.242(If a required ar)144 228 R 1.242(gument is not found, and)-.18 F
-F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1
-(?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F
-F2(name)144 240 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234
-(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1
-(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E
-F0(\)).833 E(is placed in)144 252 Q F2(name)2.86 E F0(and)2.68 E F3(OPT)
-2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1
-(getopts)144 276 Q F0 .902
+F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 465.6 R
+-.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667
+(places ? into)3.167 F F1(name)3.527 E F0 .667
+(and, if not silent, prints an error message)3.347 F .4(and unsets)144
+477.6 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E
+F0 .399(is silent, the option character found is placed in)2.899 F F3
+(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F
+(diagnostic message is printed.)144 489.6 Q 1.241(If a required ar)144
+513.6 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0
+1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742
+(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 525.6
+Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234
+(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2
+(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E
+F0(\)).833 E(is placed in)144 537.6 Q F1(name)2.86 E F0(and)2.68 E F3
+(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2
+(getopts)144 561.6 Q F0 .902
 (returns true if an option, speci\214ed or unspeci\214ed, is found.)
-3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 288 Q F1(hash)108 304.8
-Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E F2(\214lename)2.5 E
-F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858
-(Each time)144 316.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4
-G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name)
+3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
+(options is encountered or an error occurs.)144 573.6 Q F2(hash)108
+590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2<ad70>-2.5 E F1(\214lename)
+2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A
+.858(Each time)144 602.4 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)
+-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name)
 3.718 E F0 .858(is determined by searching)3.538 F .956
-(the directories in)144 328.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
+(the directories in)144 614.4 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0
 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956
-(viously-remembered pathname is discarded.)-.25 F .242(If the)144 340.8
-R F1<ad70>2.742 E F0 .243
-(option is supplied, no path search is performed, and)2.742 F F2
-(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712
-(of the command.)144 352.8 R(The)6.712 E F1<ad72>4.212 E F0 1.711
-(option causes the shell to for)4.212 F 1.711
-(get all remembered locations.)-.18 F(The)6.711 E F1<ad64>4.211 E F0
-.833(option causes the shell to for)144 364.8 R .833
-(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I)
-C 3.333(ft)-5.833 G(he)-3.333 E F1<ad74>3.333 E F0 .833(option is sup-)
-3.333 F .704(plied, the full pathname to which each)144 376.8 R F2(name)
-3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F
-F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144
-388.8 R F1<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0
-.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1
+(viously-remembered pathname is discarded.)-.25 F .243(If the)144 626.4
+R F2<ad70>2.743 E F0 .243
+(option is supplied, no path search is performed, and)2.743 F F1
+(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711
+(of the command.)144 638.4 R(The)6.711 E F2<ad72>4.211 E F0 1.711
+(option causes the shell to for)4.211 F 1.712
+(get all remembered locations.)-.18 F(The)6.712 E F2<ad64>4.212 E F0
+.833(option causes the shell to for)144 650.4 R .833
+(get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I)
+C 3.333(ft)-5.833 G(he)-3.333 E F2<ad74>3.333 E F0 .833(option is sup-)
+3.333 F .703(plied, the full pathname to which each)144 662.4 R F1(name)
+3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F
+F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144
+674.4 R F2<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0
+.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2
 <ad6c>3.295 E F0 .795(option causes)3.295 F .934
 (output to be displayed in a format that may be reused as input.)144
-400.8 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G
-.934(n, or if).15 F(only)144 412.8 Q F1<ad6c>2.821 E F0 .321
-(is supplied, information about remembered commands is printed.)2.821 F
-.322(The return status is true)5.322 F(unless a)144 424.8 Q F2(name)2.86
+686.4 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G
+.935(n, or if).15 F(only)144 698.4 Q F2<ad6c>2.822 E F0 .322
+(is supplied, information about remembered commands is printed.)2.822 F
+.321(The return status is true)5.321 F(unless a)144 710.4 Q F1(name)2.86
 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
-.25 E F1(help)108 441.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2
-(pattern)-2.5 E F0(])A .867(Display helpful information about b)144
-453.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0
-.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25
-G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144
-465.6 R F2(pattern)2.806 E F0 2.807(;o).24 G .307
-(therwise help for all the b)-2.807 F .307
-(uiltins and shell control struc-)-.2 F(tures is printed.)144 477.6 Q F1
-<ad64>144 489.6 Q F0(Display a short description of each)180 489.6 Q F2
-(pattern)2.5 E F1<ad6d>144 501.6 Q F0(Display the description of each)
-180 501.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
-(ormat)-2.5 E F1<ad73>144 513.6 Q F0
-(Display only a short usage synopsis for each)180 513.6 Q F2(pattern)2.5
-E F0(The return status is 0 unless no command matches)144 530.4 Q F2
-(pattern)2.5 E F0(.).24 E F1(history [)108 547.2 Q F2(n)A F1(])A
-(history \255c)108 559.2 Q(history \255d)108 571.2 Q F2(of)2.5 E(fset)
--.18 E F1(history \255anrw)108 583.2 Q F0([)2.5 E F2(\214lename)A F0(])A
-F1(history \255p)108 595.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
-(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 607.2 Q F2(ar)2.5 E(g)
+.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(64)188.455 E 0 Cg
+EP
+%%Page: 65 65
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(help)108 84 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C/F2 10
+/Times-Italic@0 SF(pattern)-2.5 E F0(])A .866
+(Display helpful information about b)144 96 R .867(uiltin commands.)-.2
+F(If)5.867 E F2(pattern)4.617 E F0 .867(is speci\214ed,)3.607 F F1(help)
+3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E
+.307(help on all commands matching)144 108 R F2(pattern)2.807 E F0 2.807
+(;o).24 G .307(therwise help for all the b)-2.807 F .306
+(uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1
+<ad64>144 132 Q F0(Display a short description of each)180 132 Q F2
+(pattern)2.5 E F1<ad6d>144 144 Q F0(Display the description of each)180
+144 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5
+E F1<ad73>144 156 Q F0(Display only a short usage synopsis for each)180
+156 Q F2(pattern)2.5 E F0
+(The return status is 0 unless no command matches)144 172.8 Q F2
+(pattern)2.5 E F0(.).24 E F1(history [)108 189.6 Q F2(n)A F1(])A
+(history \255c)108 201.6 Q(history \255d)108 213.6 Q F2(of)2.5 E(fset)
+-.18 E F1(history \255d)108 225.6 Q F2(start)2.5 E F0<ad>A F2(end)A F1
+(history \255anrw)108 237.6 Q F0([)2.5 E F2(\214lename)A F0(])A F1
+(history \255p)108 249.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 261.6 Q F2(ar)2.5 E(g)
 -.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144
-619.2 S .752
+273.6 S .752
 (th no options, display the command history list with line numbers.).4 F
-.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2
-G .38(been modi\214ed.)144 631.2 R .38(An ar)5.38 F .38(gument of)-.18 F
-F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
-(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-)
-2.881 E(MA)144 643.2 Q(T)-.855 E F0 .265
-(is set and not null, it is used as a format string for)2.515 F F2
-(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019
-(ciated with each displayed history entry)144 655.2 R 6.019(.N)-.65 G
+.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2
+G .381(been modi\214ed.)144 285.6 R .38(An ar)5.38 F .38(gument of)-.18
+F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
+(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9
+/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 297.6 Q(T)-.855 E F0 .264
+(is set and not null, it is used as a format string for)2.514 F F2
+(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02
+(ciated with each displayed history entry)144 309.6 R 6.019(.N)-.65 G
 3.519(oi)-6.019 G(nterv)-3.519 E 1.019
 (ening blank is printed between the formatted)-.15 F .176
-(time stamp and the history line.)144 667.2 R(If)5.176 E F2(\214lename)
+(time stamp and the history line.)144 321.6 R(If)5.176 E F2(\214lename)
 2.676 E F0 .176
 (is supplied, it is used as the name of the history \214le; if)2.676 F
-(not, the v)144 679.2 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
+(not, the v)144 333.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad63>144 691.2 Q F0
-(Clear the history list by deleting all the entries.)180 691.2 Q F1
-<ad64>144 703.2 Q F2(of)2.5 E(fset)-.18 E F0
-(Delete the history entry at position)180 715.2 Q F2(of)2.5 E(fset)-.18
-E F0(.)A(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(62)192.055 E 0
-Cg EP
-%%Page: 63 63
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad61>144 84 Q F0 .564(Append the `)180 84 R(`ne)-.74 E(w')-.25 E
-3.064('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565
-(These are history lines entered since)5.564 F(the be)180 96 Q
+(wing meanings:)-.25 E F1<ad63>144 345.6 Q F0
+(Clear the history list by deleting all the entries.)180 345.6 Q F1
+<ad64>144 357.6 Q F2(of)2.5 E(fset)-.18 E F0 .39
+(Delete the history entry at position)180 369.6 R F2(of)2.889 E(fset)
+-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)
+2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)
+-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)
+-.25 G .598(to one greater than the last history position, so ne)180
+381.6 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
+(ndices count back from the end).15 F(of the history)180 393.6 Q 2.5(,a)
+-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
+(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1
+<ad64>144 405.6 Q F2(start)2.5 E F0<ad>A F2(end)A F0 .758
+(Delete the history entries between positions)180 417.6 R F2(start)3.258
+E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)
+-.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne)
+.15 F -.05(ga)-.15 G(-).05 E(ti)180 429.6 Q .3 -.15(ve v)-.25 H
+(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
+(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1<ad61>
+144 441.6 Q F0 .564(Append the `)180 441.6 R(`ne)-.74 E(w')-.25 E 3.064
+('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565
+(These are history lines entered since)5.564 F(the be)180 453.6 Q
 (ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E
-(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 108 Q
-F0 .854(Read the history lines not already read from the history \214le\
- into the current history list.)180 108 R .772
-(These are lines appended to the history \214le since the be)180 120 R
+(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 465.6
+Q F0 .854(Read the history lines not already read from the history \214\
+le into the current history list.)180 465.6 R .772
+(These are lines appended to the history \214le since the be)180 477.6 R
 .773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
-(sion.)180 132 Q F1<ad72>144 144 Q F0(Read the contents of the history \
-\214le and append them to the current history list.)180 144 Q F1<ad77>
-144 156 Q F0(Write the current history list to the history \214le, o)180
-156 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
-(ontents.)-2.5 E F1<ad70>144 168 Q F0 .626
-(Perform history substitution on the follo)180 168 R(wing)-.25 E/F2 10
-/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625
-(and display the result on the standard)3.125 F 2.975(output. Does)180
-180 R .475(not store the results in the history list.)2.975 F(Each)5.475
-E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 192 Q(xpansion.)-.15 E F1<ad73>144 204 Q F0 .363
-(Store the)180 204 R F2(ar)3.193 E(gs)-.37 E F0 .363
+(sion.)180 489.6 Q F1<ad72>144 501.6 Q F0(Read the contents of the hist\
+ory \214le and append them to the current history list.)180 501.6 Q F1
+<ad77>144 513.6 Q F0
+(Write the current history list to the history \214le, o)180 513.6 Q
+-.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
+(ontents.)-2.5 E F1<ad70>144 525.6 Q F0 .626
+(Perform history substitution on the follo)180 525.6 R(wing)-.25 E F2
+(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard)
+3.125 F 2.975(output. Does)180 537.6 R .475
+(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar)
+2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
+(normal history e)180 549.6 Q(xpansion.)-.15 E F1<ad73>144 561.6 Q F0
+.363(Store the)180 561.6 R F2(ar)3.193 E(gs)-.37 E F0 .363
 (in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
-(he last command in the history list is)-5.363 F(remo)180 216 Q -.15(ve)
--.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
-(are added.)2.77 E .145(If the)144 232.8 R/F3 9/Times-Bold@0 SF
-(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145
+(he last command in the history list is)-5.363 F(remo)180 573.6 Q -.15
+(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
+(are added.)2.77 E .145(If the)144 590.4 R F3(HISTTIMEFORMA)2.645 E(T)
+-.855 E F0 -.25(va)2.395 G .145
 (riable is set, the time stamp information associated with each history)
-.25 F .669(entry is written to the history \214le, mark)144 244.8 R .669
+.25 F .669(entry is written to the history \214le, mark)144 602.4 R .669
 (ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
-(hen the history)-5.668 F .955(\214le is read, lines be)144 256.8 R .956
+(hen the history)-5.668 F .955(\214le is read, lines be)144 614.4 R .956
 (ginning with the history comment character follo)-.15 F .956
 (wed immediately by a digit)-.25 F 1.796
-(are interpreted as timestamps for the follo)144 268.8 R 1.795
+(are interpreted as timestamps for the follo)144 626.4 R 1.795
 (wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F
-1.795(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .768(lid \
+1.795(alue is 0 unless an)-.25 F(in)144 638.4 Q -.25(va)-.4 G .768(lid \
 option is encountered, an error occurs while reading or writing the his\
-tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 292.8 Q(fset)
+tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 650.4 Q(fset)
 -.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1
 <ad64>3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531
 F 1.031(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F1
-<ad70>3.531 E F0 -.1(fa)144 304.8 S(ils.).1 E F1(jobs)108 321.6 Q F0([)
+<ad70>3.531 E F0 -.1(fa)144 662.4 S(ils.).1 E F1(jobs)108 679.2 Q F0([)
 2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1
-(jobs \255x)108 333.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37
-E F0(... ])2.5 E(The \214rst form lists the acti)144 345.6 Q .3 -.15
+(jobs \255x)108 691.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37
+E F0(... ])2.5 E(The \214rst form lists the acti)144 703.2 Q .3 -.15
 (ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 357.6 Q F0
-(List process IDs in addition to the normal information.)180 357.6 Q F1
-<ad6e>144 369.6 Q F0 .193(Display information only about jobs that ha)
-180 369.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15
-F .194(as last noti-)-.1 F(\214ed of their status.)180 381.6 Q F1<ad70>
-144 393.6 Q F0(List only the process ID of the job')180 393.6 Q 2.5(sp)
--.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 405.6 Q F0
-(Display only running jobs.)180 405.6 Q F1<ad73>144 417.6 Q F0
-(Display only stopped jobs.)180 417.6 Q(If)144 434.4 Q F2(jobspec)4.554
-E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314
-(n, output is restricted to information about that job).15 F 5.313(.T)
--.4 G .313(he return status is 0 unless)-5.313 F(an in)144 446.4 Q -.25
-(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 463.2 R F1
-<ad78>2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0
-.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in)
-3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395
-(with the corre-)3.164 F(sponding process group ID, and e)144 475.2 Q
--.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar)
-2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E
-F1(kill)108 492 Q F0([)2.5 E F1<ad73>A F2(sigspec)2.5 E F0(|)2.5 E F1
-<ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A F0 2.5
-(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1
-(kill \255l)108 504 Q F0(|)A F1<ad4c>A F0([)2.5 E F2(sigspec)A F0(|)2.5
-E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12(Send the signal named by)144
-516 R F2(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119
-(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2
-(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318
-(either a case-insensiti)144 528 R .618 -.15(ve s)-.25 H .318
-(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319
-(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
-(pre\214x\) or a signal)2.569 F(number;)144 540 Q F2(signum)4.189 E F0
+(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 715.2 Q F0
+(List process IDs in addition to the normal information.)180 715.2 Q
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(65)188.455 E 0 Cg EP
+%%Page: 66 66
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad6e>144 84 Q F0 .193(Display information only about jobs that ha)180
+84 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F .194
+(as last noti-)-.1 F(\214ed of their status.)180 96 Q F1<ad70>144 108 Q
+F0(List only the process ID of the job')180 108 Q 2.5(sp)-.55 G
+(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 120 Q F0
+(Display only running jobs.)180 120 Q F1<ad73>144 132 Q F0
+(Display only stopped jobs.)180 132 Q(If)144 148.8 Q/F2 10
+/Times-Italic@0 SF(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G
+.314(n, output is restricted to information about that job).15 F 5.313
+(.T)-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 160.8 Q
+-.25(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G
+(lid).25 E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144
+177.6 R F1<ad78>2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)
+2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394
+(found in)3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37
+E F0 .395(with the corre-)3.164 F(sponding process group ID, and e)144
+189.6 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E
+F2(ar)2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)
+-.15 E F1(kill)108 206.4 Q F0([)2.5 E F1<ad73>A F2(sigspec)2.5 E F0(|)
+2.5 E F1<ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A
+F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)
+-2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1<ad4c>A F0([)2.5 E F2(sigspec)
+A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12
+(Send the signal named by)144 230.4 R F2(sigspec)2.96 E F0(or)2.93 E F2
+(signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E
+F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)
+2.929 E .318(either a case-insensiti)144 242.4 R .618 -.15(ve s)-.25 H
+.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0
+.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
+(pre\214x\) or a signal)2.569 F(number;)144 254.4 Q F2(signum)4.189 E F0
 1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec)
 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0
-1.348(is assumed.)3.599 F(An)6.348 E(ar)144 552 Q .522(gument of)-.18 F
-F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523
-F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F
-F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names)
-.15 F .28(of the signals corresponding to the ar)144 564 R .28
-(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2
--.2(ex)2.78 G(it_status).2 E F0(ar)144 576 Q .377(gument to)-.18 F F1
-<ad6c>2.877 E F0 .378
+1.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18
+F F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)
+5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when)
+.18 F F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523
+(n, the names).15 F .28(of the signals corresponding to the ar)144 278.4
+R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E
+F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 290.4 Q .377(gument to)-.18 F
+F1<ad6c>2.877 E F0 .378
 (is a number specifying either a signal number or the e)2.877 F .378
-(xit status of a process termi-)-.15 F .963(nated by a signal.)144 588 R
-(The)5.962 E F1<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)-.25
-G .962(lent to).25 F F1<ad6c>3.462 E F0(.)A F1(kill)5.962 E F0 .962
+(xit status of a process termi-)-.15 F .963(nated by a signal.)144 302.4
+R(The)5.962 E F1<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)
+-.25 G .962(lent to).25 F F1<ad6c>3.462 E F0(.)A F1(kill)5.962 E F0 .962
 (returns true if at least one signal w)3.462 F(as)-.1 E
-(successfully sent, or f)144 600 Q(alse if an error occurs or an in)-.1
-E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 616.8 Q F2
-(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-628.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
+(successfully sent, or f)144 314.4 Q(alse if an error occurs or an in)
+-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 331.2 Q
+F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
+343.2 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
 (xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197
 (ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 640.8 Q F2(ar)
+2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 355.2 Q F2(ar)
 2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 657.6 Q F0([)2.5
-F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 669.6 S 2.56(re).15 G .06(ach ar)-2.56 F
+(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 372 Q F0([)2.5 E
+F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
+(.. | \255 ])-2.5 E -.15(Fo)144 384 S 2.56(re).15 G .06(ach ar)-2.56 F
 .06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0
 .06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he)
--5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 681.6 Q 3.152(yo)
--.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)
-3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653
+-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 396 Q 3.152(yo)-.15
+G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)3.152
+E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653
 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-693.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
-.422(isible scope restricted to that function and its children.).15 F
-(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461
-(of shell options is made local to the function in which)144 705.6 R F1
+408 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422
+(isible scope restricted to that function and its children.).15 F(If)
+5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461
+(of shell options is made local to the function in which)144 420 R F1
 (local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462
-(d: shell options changed).1 F 1.563(using the)144 717.6 R F1(set)4.063
-F0 -.2(bu)4.063 G 1.563
+(d: shell options changed).1 F 1.563(using the)144 432 R F1(set)4.063 E
+F0 -.2(bu)4.063 G 1.563
 (iltin inside the function are restored to their original v).2 F 1.562
-(alues when the function)-.25 F 3.743(returns. W)144 729.6 R 1.243
+(alues when the function)-.25 F 3.743(returns. W)144 444 R 1.243
 (ith no operands,)-.4 F F1(local)3.743 E F0 1.243
 (writes a list of local v)3.743 F 1.244
-(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(63)192.055 E 0 Cg EP
-%%Page: 64 64
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .42(error to use)
-144 84 R/F1 10/Times-Bold@0 SF(local)2.92 E F0 .42
+(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42
+(error to use)144 456 R F1(local)2.92 E F0 .42
 (when not within a function.)2.92 F .42(The return status is 0 unless)
 5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in)
-144 96 Q -.25(va)-.4 G(lid).25 E/F2 10/Times-Italic@0 SF(name)2.86 E F0
-(is supplied, or)2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)
--.25 E F1(logout)108 112.8 Q F0(Exit a login shell.)144 112.8 Q F1
-(map\214le)108 129.6 Q F0([)2.5 E F1<ad64>A F2(delim)2.5 E F0 2.5(][)C
-F1<ad6e>-2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2(origin)2.5 E
-F0 2.5(][)C F1<ad73>-2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0
-2.5(][)C F1<ad75>-2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2
-(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1<ad63>-2.5 E F2(quantum)2.5 E F0
-2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A F1 -.18(re)108 141.6 S(adarray)
-.18 E F0([)2.5 E F1<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2
-(count)2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1
-<ad73>-2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1
-<ad75>-2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)
--.2 E F0 2.5(][)C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)
--2.5 E(ay)-.15 E F0(])A .35
-(Read lines from the standard input into the inde)144 153.6 R -.15(xe)
--.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.851 E
-(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351
-(rom \214le descriptor)-2.851 F F2(fd)2.851 E F0 1.249(if the)144 165.6
-R F1<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249
-F(ariable)-.25 E/F3 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249
-(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C
-1.248(ptions, if supplied,)-6.248 F(ha)144 177.6 Q .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad64>144 189.6 Q F0
-(The \214rst character of)180 189.6 Q F2(delim)2.5 E F0
-(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25
-E F1<ad6e>144 201.6 Q F0(Cop)180 201.6 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost)
--2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0
-(is 0, all lines are copied.)2.5 E F1<ad4f>144 213.6 Q F0(Be)180 213.6 Q
-(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x)
--.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi)
--.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 225.6 Q F0
-(Discard the \214rst)180 225.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1
-<ad74>144 237.6 Q F0(Remo)180 237.6 Q .3 -.15(ve a t)-.15 H(railing).15
+144 468 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68
+E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108
+484.8 Q F0(Exit a login shell.)144 484.8 Q F1(map\214le)108 501.6 Q F0
+([)2.5 E F1<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)
+2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>
+-2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>
+-2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E
+F0 2.5(][)C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E
+(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1
+<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)2.5 E F0 2.5
+(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>-2.5 E F2
+(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2
+(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)
+C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0
+(])A .179(Read lines from the standard input into the inde)144 525.6 R
+-.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F2
+(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18
+(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 537.6 R
+F1<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F
+(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
+E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,)
+-6.248 F(ha)144 549.6 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad64>144 561.6 Q F0 .91
+(The \214rst character of)180 561.6 R F2(delim)3.41 E F0 .911
+(is used to terminate each input line, rather than ne)3.41 F 3.411
+(wline. If)-.25 F F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1
+(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
+2.5 E(.)-.55 E F1<ad6e>144 585.6 Q F0(Cop)180 585.6 Q 2.5(ya)-.1 G 2.5
+(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)
+2.5 E F0(is 0, all lines are copied.)2.5 E F1<ad4f>144 597.6 Q F0(Be)180
+597.6 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82
+E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5
+(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 609.6 Q F0
+(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1
+<ad74>144 621.6 Q F0(Remo)180 621.6 Q .3 -.15(ve a t)-.15 H(railing).15
 E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E
-(wline\) from each line read.)-.25 E F1<ad75>144 249.6 Q F0
-(Read lines from \214le descriptor)180 249.6 Q F2(fd)2.5 E F0
-(instead of the standard input.)2.5 E F1<ad43>144 261.6 Q F0(Ev)180
-261.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
+(wline\) from each line read.)-.25 E F1<ad75>144 633.6 Q F0
+(Read lines from \214le descriptor)180 633.6 Q F2(fd)2.5 E F0
+(instead of the standard input.)2.5 E F1<ad43>144 645.6 Q F0(Ev)180
+645.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
 (quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
-(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 273.6
-Q F0(Specify the number of lines read between each call to)180 273.6 Q
-F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 290.4 Q F1<ad43>2.967 E F0
+(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 657.6
+Q F0(Specify the number of lines read between each call to)180 657.6 Q
+F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 674.4 Q F1<ad43>2.968 E F0
 .467(is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467
 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2
 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467
-(luated, it is sup-).25 F .262(plied the inde)144 302.4 R 2.762(xo)-.15
-G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\
-igned and the line to be assigned to that element)-.15 F .274
-(as additional ar)144 314.4 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E
-F0 .274(is e)2.774 F -.25(va)-.25 G .274
-(luated after the line is read b).25 F .275
-(ut before the array element is)-.2 F(assigned.)144 326.4 Q
-(If not supplied with an e)144 343.2 Q(xplicit origin,)-.15 E F1
+(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15
+G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\
+igned and the line to be assigned to that element)-.15 F .275
+(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E
+F0 .275(is e)2.775 F -.25(va)-.25 G .274
+(luated after the line is read b).25 F .274
+(ut before the array element is)-.2 F(assigned.)144 710.4 Q
+(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1
 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0
-(before assigning to it.)2.5 E F1(map\214le)144 360 Q F0 1.906
-(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905
-(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr)
-4.405 E(ay)-.15 E F0(is)4.405 E(in)144 372 Q -.25(va)-.4 G
-(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
-(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
-F1(popd)108 388.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
-2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 400.8 Q -.15(ve)-.15 G 2.799
-(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G
-.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15
-G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144
-412.8 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479
-(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478
-(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15
-F(wing)-.25 E(meanings:)144 424.8 Q F1<ad6e>144 436.8 Q F0 .551
-(Suppresses the normal change of directory when remo)180 436.8 R .551
-(ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 448.8 Q F1(+)144 460.8 Q F2(n)A
-F0(Remo)180 460.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
+(before assigning to it.)2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(66)188.455 E 0 Cg EP
+%%Page: 67 67
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(map\214le)144 84 Q F0 1.905(returns successfully unless an in)4.405 F
+-.25(va)-.4 G 1.905(lid option or option ar).25 F 1.906
+(gument is supplied,)-.18 F/F2 10/Times-Italic@0 SF(arr)4.406 E(ay)-.15
+E F0(is)4.406 E(in)144 96 Q -.25(va)-.4 G(lid or unassignable, or if).25
+E F2(arr)2.5 E(ay)-.15 E F0(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da)
+.15 G(rray)-2.5 E(.)-.65 E F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0
+2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144
+124.8 Q -.15(ve)-.15 G 2.8(se).15 G .3(ntries from the directory stack.)
+-2.8 F -.4(Wi)5.299 G .299(th no ar).4 F .299(guments, remo)-.18 F -.15
+(ve)-.15 G 2.799(st).15 G .299(he top directory from the)-2.799 F 1.478
+(stack, and performs a)144 136.8 R F1(cd)3.978 E F0 1.479(to the ne)
+3.978 F 3.979(wt)-.25 G 1.479(op directory)-3.979 F 6.479(.A)-.65 G -.18
+(rg)-6.479 G 1.479(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H
+1.479(he follo).15 F(wing)-.25 E(meanings:)144 148.8 Q F1<ad6e>144 160.8
+Q F0 .551(Suppresses the normal change of directory when remo)180 160.8
+R .551(ving directories from the stack, so)-.15 F
+(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A
+F0(Remo)180 184.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
 F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25
 F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180
-472.8 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0
+196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0
 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)
--.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 484.8 Q F2(n)A F0
-(Remo)180 484.8 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E
-F0 1.259(th entry counting from the right of the list sho)B 1.26(wn by)
--.25 F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5
-(zero. F)180 496.8 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0
+-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 208.8 Q F2(n)A F0
+(Remo)180 208.8 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0
+1.259(th entry counting from the right of the list sho)B 1.259(wn by)
+-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5
+(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0
 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65
-E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144
-513.6 R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1
-(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.)
-3.143 F F1(popd)5.643 E F0 .415(returns f)144 525.6 R .415
+E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144
+237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1
+(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.)
+3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416
 (alse if an in)-.1 F -.25(va)-.4 G .415
-(lid option is encountered, the directory stack is empty).25 F 2.916
-(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F
-(tory stack entry is speci\214ed, or the directory change f)144 537.6 Q
-(ails.)-.1 E F1(printf)108 554.4 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
-(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437
-(Write the formatted)144 566.4 R F2(ar)3.937 E(guments)-.37 E F0 1.437
-(to the standard output under the control of the)3.937 F F2(format)3.936
-E F0 6.436(.T)C(he)-6.436 E F1<ad76>3.936 E F0 .126
-(option causes the output to be assigned to the v)144 578.4 R(ariable)
+(lid option is encountered, the directory stack is empty).25 F 2.915
+(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F
+(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q
+(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
+(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436
+(Write the formatted)144 290.4 R F2(ar)3.936 E(guments)-.37 E F0 1.437
+(to the standard output under the control of the)3.936 F F2(format)3.937
+E F0 6.437(.T)C(he)-6.437 E F1<ad76>3.937 E F0 .126
+(option causes the output to be assigned to the v)144 302.4 R(ariable)
 -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard)
-2.626 F(output.)144 590.4 Q(The)144 614.4 Q F2(format)3.018 E F0 .517(i\
+2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\
 s a character string which contains three types of objects: plain chara\
-cters, which are)3.018 F .704(simply copied to standard output, charact\
-er escape sequences, which are con)144 626.4 R -.15(ve)-.4 G .704
+cters, which are)3.017 F .704(simply copied to standard output, charact\
+er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703
 (rted and copied to).15 F .036(the standard output, and format speci\
-\214cations, each of which causes printing of the ne)144 638.4 R .036
-(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 650.4 Q(gument)-.37 E F0
-5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2
-(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032
-E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 662.4 Q
-(xtensions:)-.15 E F1(%b)144 674.4 Q F0(causes)180 674.4 Q F1(printf)
-2.596 E F0 .096(to e)2.596 F .096
+\214cations, each of which causes printing of the ne)144 362.4 R .037
+(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0
+5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2
+(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031
+E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q
+(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)180 398.4 Q F1(printf)
+2.595 E F0 .096(to e)2.595 F .096
 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar)
-2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 686.4 Q(ay as)
--.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 698.4 Q F0(causes)180 698.4 Q
+2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 410.4 Q(ay as)
+-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 422.4 Q F0(causes)180 422.4 Q
 F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E
 (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F
-(input.)180 710.4 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(64)
-192.055 E 0 Cg EP
-%%Page: 65 65
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(%\()144 84 Q/F2 10/Times-Italic@0 SF(datefmt)A F1(\)T)A F0(causes)180
-96 Q F1(printf)4.404 E F0 1.904
-(to output the date-time string resulting from using)4.404 F F2(datefmt)
-4.404 E F0 1.903(as a format)4.404 F .38(string for)180 108 R F2
+(input.)180 434.4 Q F1(%\()144 446.4 Q F2(datefmt)A F1(\)T)A F0(causes)
+180 458.4 Q F1(printf)4.403 E F0 1.904
+(to output the date-time string resulting from using)4.403 F F2(datefmt)
+4.404 E F0 1.904(as a format)4.404 F .381(string for)180 470.4 R F2
 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar)
 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381
-(ger representing the number)-.15 F .458(of seconds since the epoch.)180
-120 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F
-.458(alues may be used: -1 represents the)-.25 F .847
-(current time, and -2 represents the time the shell w)180 132 R .847
-(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348
-F .848(gument is speci-)-.18 F .355(\214ed, con)180 144 R -.15(ve)-.4 G
-.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G
-2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve)
--.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354
-(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 156 Q(vior)
--.2 E(.)-.55 E(Ar)144 172.8 Q .463(guments to non-string format speci\
-\214ers are treated as C constants, e)-.18 F .464
-(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 184.8
-R 1.259
+(ger representing the number)-.15 F .292(of seconds since the epoch.)180
+482.4 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
+.293(alues may be used: \2551 represents the)-.25 F .694
+(current time, and \2552 represents the time the shell w)180 494.4 R
+.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)
+3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 506.4 R -.15
+(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
+G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
+G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
+F1(printf)2.71 E F0(beha)180 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q
+.464(guments to non-string format speci\214ers are treated as C constan\
+ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258
+(minus sign is allo)144 547.2 R 1.259
 (wed, and if the leading character is a single or double quote, the v)
--.25 F 1.258(alue is the)-.25 F(ASCII v)144 196.8 Q(alue of the follo)
--.25 E(wing character)-.25 E(.)-.55 E(The)144 213.6 Q F2(format)3.423 E
-F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423
-E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format)
-3.423 E F0 .924(requires more)3.424 F F2(ar)144 225.6 Q(guments)-.37 E
-F0 .033(than are supplied, the e)2.534 F .033
+-.25 F 1.259(alue is the)-.25 F(ASCII v)144 559.2 Q(alue of the follo)
+-.25 E(wing character)-.25 E(.)-.55 E(The)144 576 Q F2(format)3.424 E F0
+.923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E
+(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format)
+3.423 E F0 .923(requires more)3.423 F F2(ar)144 588 Q(guments)-.37 E F0
+.033(than are supplied, the e)2.533 F .033
 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si)
-.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 237.6 Q(The return v)5 E
+.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,)
+-.25 F(as appropriate, had been supplied.)144 600 Q(The return v)5 E
 (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
-108 254.4 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C
-<ad>-2.5 E F2(n)A F0(])A F1(pushd)108 266.4 Q F0([)2.5 E F1<ad6e>A F0
-2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\
-irectory stack, or rotates the stack, making the ne)144 278.4 R 3.14(wt)
--.25 G .64(op of the)-3.14 F .417(stack the current w)144 290.4 R .416
+108 616.8 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C
+<ad>-2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1<ad6e>A F0
+2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\
+rectory stack, or rotates the stack, making the ne)144 640.8 R 3.139(wt)
+-.25 G .639(op of the)-3.139 F .416(stack the current w)144 652.8 R .416
 (orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F
 (guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416
-(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625
-(and returns 0, unless the directory stack is empty)144 302.4 R 6.625
+(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625
+(and returns 0, unless the directory stack is empty)144 664.8 R 6.625
 (.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925
--.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 314.4 Q
-F1<ad6e>144 326.4 Q F0 1.811(Suppresses the normal change of directory \
-when rotating or adding directories to the)180 326.4 R
-(stack, so that only the stack is manipulated.)180 338.4 Q F1(+)144
-350.4 Q F2(n)A F0 1.267(Rotates the stack so that the)180 350.4 R F2(n)
-3.767 E F0 1.268(th directory \(counting from the left of the list sho)B
-1.268(wn by)-.25 F F1(dirs)180 362.4 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E F1<ad>144 374.4 Q F2(n)A F0
-.92(Rotates the stack so that the)180 374.4 R F2(n)3.42 E F0 .92
+-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 676.8 Q
+F1<ad6e>144 688.8 Q F0 1.811(Suppresses the normal change of directory \
+when rotating or adding directories to the)180 688.8 R
+(stack, so that only the stack is manipulated.)180 700.8 Q F1(+)144
+712.8 Q F2(n)A F0 1.268(Rotates the stack so that the)180 712.8 R F2(n)
+3.768 E F0 1.267(th directory \(counting from the left of the list sho)B
+1.267(wn by)-.25 F F1(dirs)180 724.8 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(67)188.455 E 0 Cg EP
+%%Page: 68 68
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad>144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 .92
+(Rotates the stack so that the)180 84 R F2(n)3.42 E F0 .92
 (th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F1(dirs)180 386.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
--2.5 E F2(dir)144.35 398.4 Q F0(Adds)180 398.4 Q F2(dir)3.137 E F0 .287
-(to the directory stack at the top, making it the ne)3.517 F 2.788(wc)
--.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F
-(if it had been supplied as the ar)180 410.4 Q(gument to the)-.18 E F1
-(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 427.2 R F1(pushd)
-2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488
-(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F
-F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 439.2 R F2(dir)
-3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,)
--.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847
-(stack is empty)144 451.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\
+F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 E
+F2(dir)144.35 108 Q F0(Adds)180 108 Q F2(dir)3.138 E F0 .288
+(to the directory stack at the top, making it the ne)3.518 F 2.787(wc)
+-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F
+(if it had been supplied as the ar)180 120 Q(gument to the)-.18 E F1(cd)
+2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 136.8 R F1(pushd)2.988
+E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488
+(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F
+F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 148.8 R F2(dir)
+3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4
+F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
+(stack is empty)144 160.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
  directory stack element is speci\214ed, or the directory change to the)
--.15 F(speci\214ed ne)144 463.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5
-E(ails.)-.1 E F1(pwd)108 480 Q F0([)2.5 E F1(\255LP)A F0(])A .844
-(Print the absolute pathname of the current w)144 492 R .845
-(orking directory)-.1 F 5.845(.T)-.65 G .845
-(he pathname printed contains no)-5.845 F .182(symbolic links if the)144
-504 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1 .181
-(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set)
-2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If)
-144 516 R(the)3.263 E F1<ad4c>3.263 E F0 .763
-(option is used, the pathname printed may contain symbolic links.)3.263
-F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\
- reading the name of the current directory or an in)144 528 R -.25(va)
--.4 G(lid).25 E(option is supplied.)144 540 Q F1 -.18(re)108 556.8 S(ad)
-.18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1<ad61>-3.816 E F2(aname)
-3.816 E F0 3.816(][)C F1<ad64>-3.816 E F2(delim)3.816 E F0 3.816(][)C F1
-<ad69>-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1<ad6e>-3.816 E F2
-(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1<ad4e>-3.817 E F2(nc)
-3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1<ad70>-3.817 E F2(pr)3.817 E
-(ompt)-.45 E F0 3.817(][)C F1<ad74>-3.817 E F2(timeout)3.817 E F0 3.817
-(][)C F1<ad75>-3.817 E F2(fd)3.817 E F0(])A([)108 568.8 Q F2(name)A F0
-(...])2.5 E .516(One line is read from the standard input, or from the \
-\214le descriptor)144 580.8 R F2(fd)3.016 E F0 .516(supplied as an ar)
-3.016 F .516(gument to)-.18 F(the)144 592.8 Q F1<ad75>3.847 E F0 1.347
-(option, split into w)3.847 F 1.347(ords as described abo)-.1 F 1.648
--.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.848 G 1.348(rd Splitting).75 F
-F0 3.848(,a)C 1.348(nd the \214rst w)-3.848 F 1.348(ord is)-.1 F 1.465
-(assigned to the \214rst)144 604.8 R F2(name)3.965 E F0 3.965(,t).18 G
+-.15 F(speci\214ed ne)144 172.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5
+E(ails.)-.1 E F1(pwd)108 189.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845
+(Print the absolute pathname of the current w)144 201.6 R .845
+(orking directory)-.1 F 5.844(.T)-.65 G .844
+(he pathname printed contains no)-5.844 F .181(symbolic links if the)144
+213.6 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1
+.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1
+(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264
+(enabled. If)144 225.6 R(the)3.264 E F1<ad4c>3.264 E F0 .763
+(option is used, the pathname printed may contain symbolic links.)3.264
+F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\
+ reading the name of the current directory or an in)144 237.6 R -.25(va)
+-.4 G(lid).25 E(option is supplied.)144 249.6 Q F1 -.18(re)108 266.4 S
+(ad).18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1<ad61>-3.817 E F2
+(aname)3.817 E F0 3.817(][)C F1<ad64>-3.817 E F2(delim)3.817 E F0 3.817
+(][)C F1<ad69>-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1<ad6e>
+-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1<ad4e>-3.816 E
+F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1<ad70>-3.816 E F2(pr)
+3.816 E(ompt)-.45 E F0 3.816(][)C F1<ad74>-3.816 E F2(timeout)3.816 E F0
+3.816(][)C F1<ad75>-3.816 E F2(fd)3.816 E F0(])A([)108 278.4 Q F2(name)A
+F0(...])2.5 E .516(One line is read from the standard input, or from th\
+e \214le descriptor)144 290.4 R F2(fd)3.016 E F0 .516(supplied as an ar)
+3.016 F .517(gument to)-.18 F(the)144 302.4 Q F1<ad75>3.848 E F0 1.348
+(option, split into w)3.848 F 1.348(ords as described abo)-.1 F 1.647
+-.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.847 G 1.347(rd Splitting).75 F
+F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465
+(assigned to the \214rst)144 314.4 R F2(name)3.965 E F0 3.965(,t).18 G
 1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E
 F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465
-F -.1(wo)144 616.8 S 1.112(rds than names, the remaining w).1 F 1.112
+F -.1(wo)144 326.4 S 1.112(rds than names, the remaining w).1 F 1.112
 (ords and their interv)-.1 F 1.112
-(ening delimiters are assigned to the last)-.15 F F2(name)144 628.8 Q F0
-5.723(.I).18 G 3.223(ft)-5.723 G .723(here are fe)-3.223 F .723(wer w)
--.25 F .722
+(ening delimiters are assigned to the last)-.15 F F2(name)144 338.4 Q F0
+5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w)
+-.25 F .723
 (ords read from the input stream than names, the remaining names are)-.1
-F .531(assigned empty v)144 640.8 R 3.031(alues. The)-.25 F .531
-(characters in)3.031 F/F3 9/Times-Bold@0 SF(IFS)3.031 E F0 .532
-(are used to split the line into w)2.781 F .532(ords using the same)-.1
-F .197(rules the shell uses for e)144 652.8 R .197
+F .532(assigned empty v)144 350.4 R 3.032(alues. The)-.25 F .532
+(characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531
+(are used to split the line into w)2.782 F .531(ords using the same)-.1
+F .197(rules the shell uses for e)144 362.4 R .197
 (xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1
--.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .196
-(backslash charac-)2.697 F .156(ter \()144 664.8 R F1(\\)A F0 2.656(\)m)
-C .156(ay be used to remo)-2.656 F .457 -.15(ve a)-.15 H .457 -.15(ny s)
-.15 H .157(pecial meaning for the ne).15 F .157
+-.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197
+(backslash charac-)2.697 F .157(ter \()144 374.4 R F1(\\)A F0 2.657(\)m)
+C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s)
+.15 H .157(pecial meaning for the ne).15 F .156
 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144
-676.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad61>144 688.8 Q F2(aname)2.5 E F0 1.05(The w)
-180 700.8 R 1.049
+386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad61>144 398.4 Q F2(aname)2.5 E F0 1.049
+(The w)180 410.4 R 1.049
 (ords are assigned to sequential indices of the array v)-.1 F(ariable)
--.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F
-F2(aname)180.33 712.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5
--.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0
-(ar)2.5 E(guments are ignored.)-.18 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(65)192.055 E 0 Cg EP
-%%Page: 66 66
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad64>144 84 Q/F2 10/Times-Italic@0 SF(delim)2.5 E F0
-(The \214rst character of)180 96 Q F2(delim)2.5 E F0
-(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E
-F1<ad65>144 108 Q F0 .372
-(If the standard input is coming from a terminal,)180 108 R F1 -.18(re)
-2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(READLINE)
-2.873 E F0(abo)2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G
-(sed)-2.873 E .218(to obtain the line.)180 120 R .218
+-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2
+(aname)180.33 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
+(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5
+E(guments are ignored.)-.18 E F1<ad64>144 434.4 Q F2(delim)2.5 E F0
+1.318(The \214rst character of)180 446.4 R F2(delim)3.818 E F0 1.317
+(is used to terminate the input line, rather than ne)3.818 F 3.817
+(wline. If)-.25 F F2(delim)180 458.4 Q F0(is the empty string,)2.5 E F1
+-.18(re)2.5 G(ad).18 E F0
+(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1
+<ad65>144 470.4 Q F0 .372
+(If the standard input is coming from a terminal,)180 470.4 R F1 -.18
+(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)
+2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E
+.218(to obtain the line.)180 482.4 R .218
 (Readline uses the current \(or def)5.218 F .218
 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E
-(acti)180 132 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E F1
-<ad69>144 144 Q F2(te)2.5 E(xt)-.2 E F0(If)180 144 Q F1 -.18(re)2.715 G
-(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te)
-2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E
-.216(fer before edit-)-.25 F(ing be)180 156 Q(gins.)-.15 E F1<ad6e>144
-168 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 180 S(ad).18 E F0
-1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0
-1.395(characters rather than w)3.895 F 1.394
-(aiting for a complete line of)-.1 F(input, b)180 192 Q
-(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15
-E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1
-<ad4e>144 204 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 216 S(ad)
-.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769
-E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27
+(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
+(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
+(ault \214lename completion.)-.1 E F1<ad69>144 506.4 Q F2(te)2.5 E(xt)
+-.2 E F0(If)180 506.4 Q F1 -.18(re)2.715 G(adline).18 E F0 .216
+(is being used to read the line,)2.715 F F2(te)2.716 E(xt)-.2 E F0 .216
+(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-)
+-.25 F(ing be)180 518.4 Q(gins.)-.15 E F1<ad6e>144 530.4 Q F2(nc)2.5 E
+(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E F0 1.395
+(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395
+(characters rather than w)3.895 F 1.394(aiting for a complete line of)
+-.1 F(input, b)180 554.4 Q(ut honors a delimiter if fe)-.2 E(wer than)
+-.25 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0
+(characters are read before the delimiter)2.5 E(.)-.55 E F1<ad4e>144
+566.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 578.4 S(ad).18 E
+F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 E
+(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27
 (aiting for a complete)-.1 F .275
-(line of input, unless EOF is encountered or)180 228 R F1 -.18(re)2.775
-G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-)
-5.274 F 1.002
-(tered in the input are not treated specially and do not cause)180 240 R
-F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503
-E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 252 R .608
+(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re)
+2.775 G(ad).18 E F0 .274(times out.)2.774 F .274
+(Delimiter characters encoun-)5.274 F 1.002
+(tered in the input are not treated specially and do not cause)180 602.4
+R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)
+3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 614.4 R .608
 (The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0
-3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 264 S .669
+3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 626.4 S .669
 (riable is assigned e).25 F .669
 (xactly the characters read \(with the e)-.15 F .67
-(xception of backslash; see the)-.15 F F1<ad72>180 276 Q F0(option belo)
-2.5 E(w\).)-.25 E F1<ad70>144 288 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)
-180 300 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F
-3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161
-(wline, before attempting to read)-.25 F(an)180 312 Q 2.5(yi)-.15 G 2.5
-(nput. The)-2.5 F
+(xception of backslash; see the)-.15 F F1<ad72>180 638.4 Q F0
+(option belo)2.5 E(w\).)-.25 E F1<ad70>144 650.4 Q F2(pr)2.5 E(ompt)-.45
+E F0(Display)180 662.4 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161
+(on standard error)3.661 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)
+-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 674.4 Q
+2.5(yi)-.15 G 2.5(nput. The)-2.5 F
 (prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<ad72>144 324 Q F0 .543(Backslash does not act as an escape character)
-180 324 R 5.543(.T)-.55 G .544(he backslash is considered to be part of)
--5.543 F(the line.)180 336 Q(In particular)5 E 2.5(,ab)-.4 G
-(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.)
--.25 E F1<ad73>144 348 Q F0(Silent mode.)180 348 Q
+<ad72>144 686.4 Q F0 .543(Backslash does not act as an escape character)
+180 686.4 R 5.543(.T)-.55 G .544
+(he backslash is considered to be part of)-5.543 F .493(the line.)180
+698.4 R .493(In particular)5.493 F 2.993(,ab)-.4 G(ackslash-ne)-2.993 E
+.493(wline pair may not then be used as a line continua-)-.25 F(tion.)
+180 710.4 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(68)188.455 E
+0 Cg EP
+%%Page: 69 69
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad73>144 84 Q F0(Silent mode.)180 84 Q
 (If input is coming from a terminal, characters are not echoed.)5 E F1
-<ad74>144 360 Q F2(timeout)2.5 E F0(Cause)180 372 Q F1 -.18(re)2.929 G
-(ad).18 E F0 .428(to time out and return f)2.929 F .428
-(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56
-(ber of characters\) is not read within)180 384 R F2(timeout)3.061 E F0
-(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number)
-3.061 F(with a fractional portion follo)180 396 Q
+<ad74>144 96 Q/F2 10/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 108 Q
+F1 -.18(re)2.928 G(ad).18 E F0 .428(to time out and return f)2.928 F
+.428(ailure if a complete line of input \(or a speci\214ed num-)-.1 F
+.561(ber of characters\) is not read within)180 120 R F2(timeout)3.061 E
+F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number)
+3.061 F(with a fractional portion follo)180 132 Q
 (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E
 .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
 g input from a terminal, pipe, or other special \214le; it has no ef)180
-408 R .506(fect when reading)-.25 F .59(from re)180 420 R .59
-(gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589
-(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2
-G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589
-(artial input read into the speci\214ed).15 F -.25(va)180 432 S(riable)
+144 R .505(fect when reading)-.25 F .589(from re)180 156 R .589
+(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589
+(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)
+-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59
+(artial input read into the speci\214ed).15 F -.25(va)180 168 S(riable)
 .25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27
 (is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77
 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G
-(ata.)-2.77 E 1.12(The e)180 444 R 1.12(xit status is 0 if input is a)
+(ata.)-2.77 E 1.12(The e)180 180 R 1.12(xit status is 0 if input is a)
 -.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor)
 .25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180
-456 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
-.15 E(xceeded.)-.15 E F1<ad75>144 468 Q F2(fd)2.5 E F0
-(Read input from \214le descriptor)180 468 Q F2(fd)2.5 E F0(.)A .476
-(If no)144 484.8 R F2(names)3.336 E F0 .476
-(are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E
-F3(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .477(The e)4.977
-F .477(xit status is zero,)-.15 F .773
-(unless end-of-\214le is encountered,)144 496.8 R F1 -.18(re)3.273 G(ad)
-.18 E F0 .772
-(times out \(in which case the status is greater than 128\), a)3.273 F
--.25(va)144 508.8 S 2.004
-(riable assignment error \(such as assigning to a readonly v).25 F 2.005
-(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F
-(descriptor is supplied as the ar)144 520.8 Q(gument to)-.18 E F1<ad75>
-2.5 E F0(.)A F1 -.18(re)108 537.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A
+192 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
+.15 E(xceeded.)-.15 E F1<ad75>144 204 Q F2(fd)2.5 E F0
+(Read input from \214le descriptor)180 204 Q F2(fd)2.5 E F0(.)A .477
+(If no)144 220.8 R F2(names)3.337 E F0 .477
+(are supplied, the line read is assigned to the v)3.247 F(ariable)-.25 E
+/F3 9/Times-Bold@0 SF(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A
+F0 .476(The e)4.976 F .476(xit status is zero,)-.15 F .772
+(unless end-of-\214le is encountered,)144 232.8 R F1 -.18(re)3.272 G(ad)
+.18 E F0 .773
+(times out \(in which case the status is greater than 128\), a)3.272 F
+-.25(va)144 244.8 S 2.004
+(riable assignment error \(such as assigning to a readonly v).25 F 2.004
+(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F
+(descriptor is supplied as the ar)144 256.8 Q(gument to)-.18 E F1<ad75>
+2.5 E F0(.)A F1 -.18(re)108 273.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A
 F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A
-(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 549.6 R -.15(ve)-.25 G
+(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 285.6 R -.15(ve)-.25 G
 (n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v)
 -.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77
-(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 561.6 R
-1.096(If the)6.096 F F1<ad66>3.596 E F0 1.097
-(option is supplied, the functions corresponding to the)3.596 F F2
-(names)3.597 E F0 1.097(are so)3.597 F(mark)144 573.6 Q 3.334(ed. The)
+(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 297.6 R
+1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097
+(option is supplied, the functions corresponding to the)3.597 F F2
+(names)3.596 E F0 1.096(are so)3.596 F(mark)144 309.6 Q 3.334(ed. The)
 -.1 F F1<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834
 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the)
 -3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
--.25 E .776(ables to associati)144 585.6 R 1.076 -.15(ve a)-.25 H 3.276
-(rrays. If).15 F .777(both options are supplied,)3.276 F F1<ad41>3.277 E
-F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name)
-3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 597.6 R -.15(ve)
+-.25 E .777(ables to associati)144 321.6 R 1.077 -.15(ve a)-.25 H 3.277
+(rrays. If).15 F .777(both options are supplied,)3.277 F F1<ad41>3.277 E
+F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name)
+3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 333.6 R -.15(ve)
 -.25 G .521(n, or if the).15 F F1<ad70>3.021 E F0 .521
 (option is supplied, a list of all readonly names is printed.)3.021 F
-.521(The other)5.521 F .295(options may be used to restrict the output \
-to a subset of the set of readonly names.)144 609.6 R(The)5.296 E F1
-<ad70>2.796 E F0(option)2.796 E .786
+.522(The other)5.521 F .295(options may be used to restrict the output \
+to a subset of the set of readonly names.)144 345.6 R(The)5.295 E F1
+<ad70>2.795 E F0(option)2.795 E .786
 (causes output to be displayed in a format that may be reused as input.)
-144 621.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144
-633.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
+144 357.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
+369.6 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
 -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor)
 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in)
 -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the)
-144 645.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
+144 381.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
 -.25 F .26(ariable name, or)-.25 F F1<ad66>2.76 E F0 .26
-(is supplied with a)2.76 F F2(name)144.36 657.6 Q F0
-(that is not a function.)2.68 E F1 -.18(re)108 674.4 S(tur).18 E(n)-.15
-E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 686.4 R
--.15(xe)-.15 G .02(cuting and return the v).15 F .021
-(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F
-5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597
-(the return status is that of the last command e)144 698.4 R -.15(xe)
--.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E
-F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15
-G(cuted).15 E 1.238(by a trap handler)144 710.4 R 3.738(,t)-.4 G 1.238
+(is supplied with a)2.76 F F2(name)144.36 393.6 Q F0
+(that is not a function.)2.68 E F1 -.18(re)108 410.4 S(tur).18 E(n)-.15
+E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 422.4 R
+-.15(xe)-.15 G .021(cuting and return the v).15 F .021
+(alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02
+(.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596
+(the return status is that of the last command e)144 434.4 R -.15(xe)
+-.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E
+F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15
+G(cuted).15 E 1.239(by a trap handler)144 446.4 R 3.738(,t)-.4 G 1.238
 (he last command used to determine the status is the last command e)
--3.738 F -.15(xe)-.15 G(cuted).15 E 1.067(before the trap handler)144
-722.4 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E
-F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB)
-3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(66)192.055 E 0 Cg EP
-%%Page: 67 67
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389
-(determine the status is the last command e)144 84 R -.15(xe)-.15 G .389
-(cuted by the trap handler before).15 F/F1 10/Times-Bold@0 SF -.18(re)
-2.89 G(tur).18 E(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o)
--2.89 H -.1(ke).4 G(d.).1 E(If)144 96 Q F1 -.18(re)2.584 G(tur).18 E(n)
--.15 E F0 .084(is used outside a function, b)2.584 F .084(ut during e)
--.2 F -.15(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E
-F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583
-F .588(causes the shell to stop e)144 108 R -.15(xe)-.15 G .588
-(cuting that script and return either).15 F/F2 10/Times-Italic@0 SF(n)
-3.448 E F0 .589(or the e)3.329 F .589(xit status of the last com-)-.15 F
-.326(mand e)144 120 R -.15(xe)-.15 G .326
-(cuted within the script as the e).15 F .326(xit status of the script.)
--.15 F(If)5.326 E F2(n)2.826 E F0 .325(is supplied, the return v)2.826 F
-.325(alue is)-.25 F .444(its least signi\214cant 8 bits.)144 132 R .444
-(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E
-(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381
-(ment, or is used outside a function and not during e)144 144 R -.15(xe)
--.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1
-(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E
-.749(mand associated with the)144 156 R F1(RETURN)3.249 E F0 .749
+-3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144
+458.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E
+F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB)
+3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39
+(determine the status is the last command e)144 470.4 R -.15(xe)-.15 G
+.389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E
+(n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke)
+.4 G(d.).1 E(If)144 482.4 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0
+.084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15
+(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084
+E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589
+(causes the shell to stop e)144 494.4 R -.15(xe)-.15 G .589
+(cuting that script and return either).15 F F2(n)3.448 E F0 .588
+(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e)
+144 506.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
+.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326
+(is supplied, the return v)2.826 F .326(alue is)-.25 F .445
+(its least signi\214cant 8 bits.)144 518.4 R .444
+(The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E
+(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381
+(ment, or is used outside a function and not during e)144 530.4 R -.15
+(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
+F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
+E .75(mand associated with the)144 542.4 R F1(RETURN)3.249 E F0 .749
 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15
-G .75(cution resumes after the function).15 F(or script.)144 168 Q F1
-(set)108 184.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
+G .749(cution resumes after the function).15 F(or script.)144 554.4 Q F1
+(set)108 571.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
 F1<ad6f>-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E
-F0(...])2.5 E F1(set)108 196.8 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0
+F0(...])2.5 E F1(set)108 583.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0
 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E
-(g)-.37 E F0(...])2.5 E -.4(Wi)144 208.8 S .836
+(g)-.37 E F0(...])2.5 E -.4(Wi)144 595.2 S .835
 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F
-.835(ariable are displayed in a format that can be)-.25 F .784
-(reused as input for setting or resetting the currently-set v)144 220.8
-R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784
-(riables cannot be).25 F 2.912(reset. In)144 232.8 R F2(posix)2.912 E F0
-.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412
-(The output is sorted according to the current)5.412 F 3.53
-(locale. When)144 244.8 R 1.031(options are speci\214ed, the)3.53 F
-3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An)
--.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F
-1.624(after option processing are treated as v)144 256.8 R 1.623
+.836(ariable are displayed in a format that can be)-.25 F .784
+(reused as input for setting or resetting the currently-set v)144 607.2
+R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783
+(riables cannot be).25 F 2.946(reset. In)144 619.2 R F2 .447(posix mode)
+2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447
+(ariables are listed.)-.25 F .447
+(The output is sorted according to the current)5.447 F 3.531
+(locale. When)144 631.2 R 1.031(options are speci\214ed, the)3.531 F
+3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)
+-.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623
+(after option processing are treated as v)144 643.2 R 1.624
 (alues for the positional parameters and are assigned, in)-.25 F(order)
-144 268.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A
+144 655.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A
 F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3
--.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 280.8 Q
-F0 1.377(Each v)184 280.8 R 1.377
+-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 667.2 Q
+F0 1.378(Each v)184 667.2 R 1.377
 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve)
--.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F
-1.378(ute and)-.2 F(mark)184 292.8 Q(ed for e)-.1 E(xport to the en)-.15
-E(vironment of subsequent commands.)-.4 E F1<ad62>144 304.8 Q F0 .132
-(Report the status of terminated background jobs immediately)184 304.8 R
-2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E
-(primary prompt.)184 316.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
--.25 H(nly when job control is enabled.).15 E F1<ad65>144 328.8 Q F0
-.087(Exit immediately if a)184 328.8 R F2(pipeline)2.587 E F0 .087
-(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F
-F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 340.8 Q
-F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF
-1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e)
-.15 F 1.521(xits with a non-zero status.)-.15 F .079
-(The shell does not e)184 352.8 R .079(xit if the command that f)-.15 F
-.08(ails is part of the command list immediately)-.1 F(follo)184 364.8 Q
-1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0
--.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654
-(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv)
-4.154 E(ed)-.15 E -.1(wo)184 376.8 S .581(rds, part of an).1 F 3.081(yc)
--.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1
-(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582
-(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 388.8 R
-F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c)
--3.418 H .918(ommand in a pipeline b).15 F .917
-(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E
--.25(va)184 400.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66
-(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661
-(ompound command other than a subshell returns a)-3.161 F 1.113
-(non-zero status because a command f)184 412.8 R 1.112(ailed while)-.1 F
-F1<ad65>3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112
-(eing ignored, the shell does)-3.612 F .177(not e)184 424.8 R 2.677
-(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678
-(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178
-(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178
-(option applies to)2.678 F .618(the shell en)184 436.8 R .617
+-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F
+1.377(ute and)-.2 F(mark)184 679.2 Q(ed for e)-.1 E(xport to the en)-.15
+E(vironment of subsequent commands.)-.4 E F1<ad62>144 691.2 Q F0 .131
+(Report the status of terminated background jobs immediately)184 691.2 R
+2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E
+(primary prompt.)184 703.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
+-.25 H(nly when job control is enabled.).15 E F1<ad65>144 715.2 Q F0
+.088(Exit immediately if a)184 715.2 R F2(pipeline)2.588 E F0 .087
+(\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F
+F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 727.2 Q
+F2 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR)
+4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521
+(xits with a non-zero status.)-.15 F(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(69)188.455 E 0 Cg EP
+%%Page: 70 70
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .08
+(The shell does not e)184 84 R .079(xit if the command that f)-.15 F
+.079(ails is part of the command list immediately)-.1 F(follo)184 96 Q
+1.654(wing a)-.25 F/F1 10/Times-Bold@0 SF(while)4.154 E F0(or)4.154 E F1
+(until)4.154 E F0 -.1(ke)4.154 G(yw)-.05 E 1.655
+(ord, part of the test follo)-.1 F 1.655(wing the)-.25 F F1(if)4.155 E
+F0(or)4.155 E F1(elif)4.155 E F0(reserv)4.155 E(ed)-.15 E -.1(wo)184 108
+S .582(rds, part of an).1 F 3.082(yc)-.15 G .582(ommand e)-3.082 F -.15
+(xe)-.15 G .581(cuted in a).15 F F1(&&)3.081 E F0(or)3.081 E F1(||)3.081
+E F0 .581(list e)3.081 F .581(xcept the command follo)-.15 F(wing)-.25 E
+.917(the \214nal)184 120 R F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0
+3.417(,a)C 1.217 -.15(ny c)-3.417 H .918(ommand in a pipeline b).15 F
+.918(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418
+E -.25(va)184 132 S .661(lue is being in).25 F -.15(ve)-.4 G .661
+(rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66
+(ompound command other than a subshell returns a)-3.161 F 1.112
+(non-zero status because a command f)184 144 R 1.112(ailed while)-.1 F
+F1<ad65>3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113
+(eing ignored, the shell does)-3.612 F .178(not e)184 156 R 2.678
+(xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678
+(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178
+(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177
+(option applies to)2.677 F .617(the shell en)184 168 R .617
 (vironment and each subshell en)-.4 F .617(vironment separately \(see)
--.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 448.8 R(ONMENT)
--.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
+-.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)
+184 180 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 460.8
-Q 2.042(If a compound command or shell function e)184 478.8 R -.15(xe)
--.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542
-E F0 2.042(is being)4.542 F 1.435(ignored, none of the commands e)184
-490.8 R -.15(xe)-.15 G 1.436
-(cuted within the compound command or function).15 F .194
-(body will be af)184 502.8 R .194(fected by the)-.25 F F1<ad65>2.694 E
+(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 192 Q
+2.042(If a compound command or shell function e)184 210 R -.15(xe)-.15 G
+2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542 E F0
+2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 222 R
+-.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F
+.193(body will be af)184 234 R .193(fected by the)-.25 F F1<ad65>2.693 E
 F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1
-<ad65>2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure)
--.1 E 3.39(status. If)184 514.8 R 3.39(ac)3.39 G .89
+<ad65>2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)
+-.1 E 3.39(status. If)184 246 R 3.39(ac)3.39 G .89
 (ompound command or shell function sets)-3.39 F F1<ad65>3.39 E F0 .89
 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E
-(where)184 526.8 Q F1<ad65>3.154 E F0 .654
-(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953
--.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F
-(or the command containing the function call completes.)184 538.8 Q F1
-<ad66>144 550.8 Q F0(Disable pathname e)184 550.8 Q(xpansion.)-.15 E F1
-<ad68>144 562.8 Q F0 2.238(Remember the location of commands as the)184
-562.8 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F
--.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184
-574.8 Q(ault.)-.1 E F1<ad6b>144 586.8 Q F0 .514(All ar)184 586.8 R .514
+(where)184 258 Q F1<ad65>3.153 E F0 .653
+(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954
+-.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F
+(or the command containing the function call completes.)184 270 Q F1
+<ad66>144 282 Q F0(Disable pathname e)184 282 Q(xpansion.)-.15 E F1
+<ad68>144 294 Q F0 2.239(Remember the location of commands as the)184
+294 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F
+-.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184
+306 Q(ault.)-.1 E F1<ad6b>144 318 Q F0 .513(All ar)184 318 R .514
 (guments in the form of assignment statements are placed in the en)-.18
-F .513(vironment for a)-.4 F
-(command, not just those that precede the command name.)184 598.8 Q F1
-<ad6d>144 610.8 Q F0 .148(Monitor mode.)184 610.8 R .148
-(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F
-.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651
-(on systems that support it \(see)184 622.8 R F3 .651(JOB CONTR)3.151 F
-(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65
-(processes run in a separate)3.151 F .678(process group.)184 634.8 R
-.679(When a background job completes, the shell prints a line containin\
-g its)5.678 F -.15(ex)184 646.8 S(it status.).15 E F1<ad6e>144 658.8 Q
-F0 .653(Read commands b)184 658.8 R .653(ut do not e)-.2 F -.15(xe)-.15
-G .653(cute them.).15 F .652
-(This may be used to check a shell script for)5.653 F(syntax errors.)184
-670.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15
-E F1<ad6f>144 682.8 Q F2(option\255name)2.5 E F0(The)184 694.8 Q F2
-(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1
-(allexport)184 706.8 Q F0(Same as)224 718.8 Q F1<ad61>2.5 E F0(.)A
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(67)192.055 E 0 Cg EP
-%%Page: 68 68
+F .514(vironment for a)-.4 F
+(command, not just those that precede the command name.)184 330 Q F1
+<ad6d>144 342 Q F0 .149(Monitor mode.)184 342 R .149
+(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F
+.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65
+(on systems that support it \(see)184 354 R F2 .651(JOB CONTR)3.151 F
+(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651
+(processes run in a separate)3.151 F .679(process group.)184 366 R .678
+(When a background job completes, the shell prints a line containing it\
+s)5.679 F -.15(ex)184 378 S(it status.).15 E F1<ad6e>144 390 Q F0 .652
+(Read commands b)184 390 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652
+(cute them.).15 F .653(This may be used to check a shell script for)
+5.652 F(syntax errors.)184 402 Q(This is ignored by interacti)5 E .3
+-.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 414 Q/F3 10/Times-Italic@0 SF
+(option\255name)2.5 E F0(The)184 426 Q F3(option\255name)2.5 E F0
+(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 438 Q F0
+(Same as)224 450 Q F1<ad61>2.5 E F0(.)A F1(braceexpand)184 462 Q F0
+(Same as)224 474 Q F1<ad42>2.5 E F0(.)A F1(emacs)184 486 Q F0 .089
+(Use an emacs-style command line editing interf)224 486 R 2.589
+(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95
+(when the shell is interacti)224 498 R -.15(ve)-.25 G 3.45(,u).15 G .95
+(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E
+F0 2.5(option. This)224 510 R(also af)2.5 E(fects the editing interf)
+-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err)
+184 522 Q(exit)-.18 E F0(Same as)224 522 Q F1<ad65>2.5 E F0(.)A F1
+(errtrace)184 534 Q F0(Same as)224 534 Q F1<ad45>2.5 E F0(.)A F1
+(functrace)184 546 Q F0(Same as)224 558 Q F1<ad54>2.5 E F0(.)A F1
+(hashall)184 570 Q F0(Same as)224 570 Q F1<ad68>2.5 E F0(.)A F1
+(histexpand)184 582 Q F0(Same as)224 594 Q F1<ad48>2.5 E F0(.)A F1
+(history)184 606 Q F0 .587(Enable command history)224 606 R 3.087(,a)
+-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15
+H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF
+(.)A F0 .587(This option is)5.087 F(on by def)224 618 Q
+(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
+630 Q(eeof)-.18 E F0 1.656(The ef)224 642 R 1.656
+(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10)
+4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
+654 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F1 -.1(ke)184 666 S(yw).1 E(ord)-.1 E F0(Same as)224 678 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 690 Q F0(Same as)224 690 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 702 Q(ber)-.1 E F0(Same as)224 714 Q F1<ad43>2.5
+E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(70)188.455 E 0
+Cg EP
+%%Page: 71 71
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(braceexpand)184 84 Q F0(Same as)224 96 Q F1<ad42>2.5 E F0(.)A F1
-(emacs)184 108 Q F0 .089(Use an emacs-style command line editing interf)
-224 108 R 2.589(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1
-E .95(when the shell is interacti)224 120 R -.15(ve)-.25 G 3.45(,u).15 G
-.95(nless the shell is started with the)-3.45 F F1(\255\255noediting)
-3.45 E F0 2.5(option. This)224 132 R(also af)2.5 E
-(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G
-(ad \255e).18 E F0(.)A F1(err)184 144 Q(exit)-.18 E F0(Same as)224 144 Q
-F1<ad65>2.5 E F0(.)A F1(errtrace)184 156 Q F0(Same as)224 156 Q F1<ad45>
-2.5 E F0(.)A F1(functrace)184 168 Q F0(Same as)224 180 Q F1<ad54>2.5 E
-F0(.)A F1(hashall)184 192 Q F0(Same as)224 192 Q F1<ad68>2.5 E F0(.)A F1
-(histexpand)184 204 Q F0(Same as)224 216 Q F1<ad48>2.5 E F0(.)A F1
-(history)184 228 Q F0 .586(Enable command history)224 228 R 3.087(,a)
--.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15
-H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9
-/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 240 Q
-(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-252 Q(eeof)-.18 E F0 1.657(The ef)224 264 R 1.657
-(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10)
-4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-276 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1 -.1(ke)184 288 S(yw).1 E(ord)-.1 E F0(Same as)224 300 Q F1
-<ad6b>2.5 E F0(.)A F1(monitor)184 312 Q F0(Same as)224 312 Q F1<ad6d>2.5
-E F0(.)A F1(noclob)184 324 Q(ber)-.1 E F0(Same as)224 336 Q F1<ad43>2.5
-E F0(.)A F1(noexec)184 348 Q F0(Same as)224 348 Q F1<ad6e>2.5 E F0(.)A
-F1(noglob)184 360 Q F0(Same as)224 360 Q F1<ad66>2.5 E F0(.)A F1(nolog)
-184 372 Q F0(Currently ignored.)224 372 Q F1(notify)184 384 Q F0
-(Same as)224 384 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 396 Q F0(Same as)
-224 396 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 408 Q F0(Same as)224 408 Q
-F1<ad74>2.5 E F0(.)A F1(ph)184 420 Q(ysical)-.15 E F0(Same as)224 420 Q
-F1<ad50>2.5 E F0(.)A F1(pipefail)184 432 Q F0 1.029
-(If set, the return v)224 432 R 1.029(alue of a pipeline is the v)-.25 F
-1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 444
-R 1.136
+SF(noexec)184 84 Q F0(Same as)224 84 Q F1<ad6e>2.5 E F0(.)A F1(noglob)
+184 96 Q F0(Same as)224 96 Q F1<ad66>2.5 E F0(.)A F1(nolog)184 108 Q F0
+(Currently ignored.)224 108 Q F1(notify)184 120 Q F0(Same as)224 120 Q
+F1<ad62>2.5 E F0(.)A F1(nounset)184 132 Q F0(Same as)224 132 Q F1<ad75>
+2.5 E F0(.)A F1(onecmd)184 144 Q F0(Same as)224 144 Q F1<ad74>2.5 E F0
+(.)A F1(ph)184 156 Q(ysical)-.15 E F0(Same as)224 156 Q F1<ad50>2.5 E F0
+(.)A F1(pipefail)184 168 Q F0 1.03(If set, the return v)224 168 R 1.029
+(alue of a pipeline is the v)-.25 F 1.029
+(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 180 R
+1.136
 (xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 456 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 468 Q F0
-2.09(Change the beha)224 468 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+-.15 F -.15(ex)224 192 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 204 Q F0
+2.091(Change the beha)224 204 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091
 (fers from the)-.25 F 1.212(POSIX standard to match the standard \()224
-480 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2
-1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306
-(for a reference to a document that details ho)224 492 R 4.807(wp)-.25 G
-2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224
-504 Q(vior)-.2 E(.)-.55 E F1(pri)184 516 Q(vileged)-.1 E F0(Same as)224
-528 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 540 S(rbose).1 E F0(Same as)224
-540 Q F1<ad76>2.5 E F0(.)A F1(vi)184 552 Q F0 1.466
-(Use a vi-style command line editing interf)224 552 R 3.965(ace. This)
--.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224
-564 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
-(xtrace)184 576 Q F0(Same as)224 576 Q F1<ad78>2.5 E F0(.)A(If)184 594 Q
-F1<ad6f>3.052 E F0 .552(is supplied with no)3.052 F F5(option\255name)
-3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553
-(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184
-606 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0
-3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071
-(commands to recreate the current)3.571 F
-(option settings is displayed on the standard output.)184 618 Q F1<ad70>
-144 630 Q F0 -.45(Tu)184 630 S 1.071(rn on).45 F F5(privile)4.821 E -.1
-(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F
-F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072
-(\214les are not pro-)3.322 F 1.501
-(cessed, shell functions are not inherited from the en)184 642 R 1.5
-(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 654 S
-(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0
-(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524
-(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F
-(vironment,)-.4 E .38(are ignored.)184 666 R .38
-(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u)
--.25 H .379(ser \(group\) id not equal to the real).15 F .461
-(user \(group\) id, and the)184 678 R F1<ad70>2.961 E F0 .461
-(option is not supplied, these actions are tak)2.961 F .462
-(en and the ef)-.1 F(fec-)-.25 E(ti)184 690 Q .695 -.15(ve u)-.25 H .395
+216 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9
+/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307
+(for a reference to a document that details ho)224 228 R 4.806(wp)-.25 G
+2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224
+240 Q(vior)-.2 E(.)-.55 E F1(pri)184 252 Q(vileged)-.1 E F0(Same as)224
+264 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 276 S(rbose).1 E F0(Same as)224
+276 Q F1<ad76>2.5 E F0(.)A F1(vi)184 288 Q F0 1.465
+(Use a vi-style command line editing interf)224 288 R 3.966(ace. This)
+-.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224
+300 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
+(xtrace)184 312 Q F0(Same as)224 312 Q F1<ad78>2.5 E F0(.)A(If)184 330 Q
+F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F2(option\255name)
+3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552
+(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184
+342 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0
+3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072
+(commands to recreate the current)3.572 F
+(option settings is displayed on the standard output.)184 354 Q F1<ad70>
+144 366 Q F0 -.45(Tu)184 366 S 1.072(rn on).45 F F2(privile)4.822 E -.1
+(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F
+F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.071
+(\214les are not pro-)3.322 F 1.5
+(cessed, shell functions are not inherited from the en)184 378 R 1.501
+(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A
+F3 -.27(BA)184 390 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G
+(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G
+.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
+(vironment,)-.4 E .379(are ignored.)184 402 R .379
+(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15
+(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462
+(user \(group\) id, and the)184 414 R F1<ad70>2.961 E F0 .461
+(option is not supplied, these actions are tak)2.961 F .461
+(en and the ef)-.1 F(fec-)-.25 E(ti)184 426 Q .694 -.15(ve u)-.25 H .394
 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1<ad70>
-2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25
-E -.15(ve)-.25 G .386(user id is not reset.)184 702 R -.45(Tu)5.386 G
-.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886
-F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F
-(set to the real user and group ids.)184 714 Q(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(68)192.055 E 0 Cg EP
-%%Page: 69 69
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad74>144 84 Q F0(Exit after reading and e)184 84 Q -.15(xe)-.15 G
-(cuting one command.).15 E F1<ad75>144 96 Q F0 -.35(Tr)184 96 S .044
-(eat unset v).35 F .044(ariables and parameters other than the special \
-parameters "@" and "*" as an)-.25 F .182
-(error when performing parameter e)184 108 R 2.682(xpansion. If)-.15 F
--.15(ex)2.682 G .183(pansion is attempted on an unset v).15 F(ari-)-.25
-E .746(able or parameter)184 120 R 3.246(,t)-.4 G .746
+2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25
+E -.15(ve)-.25 G .387(user id is not reset.)184 438 R -.45(Tu)5.387 G
+.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886
+F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F
+(set to the real user and group ids.)184 450 Q F1<ad74>144 462 Q F0
+(Exit after reading and e)184 462 Q -.15(xe)-.15 G(cuting one command.)
+.15 E F1<ad75>144 474 Q F0 -.35(Tr)184 474 S .043(eat unset v).35 F .044
+(ariables and parameters other than the special parameters "@" and "*" \
+as an)-.25 F .183(error when performing parameter e)184 486 R 2.683
+(xpansion. If)-.15 F -.15(ex)2.683 G .182
+(pansion is attempted on an unset v).15 F(ari-)-.25 E .746
+(able or parameter)184 498 R 3.246(,t)-.4 G .746
 (he shell prints an error message, and, if not interacti)-3.246 F -.15
 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-132 Q F1<ad76>144 144 Q F0(Print shell input lines as the)184 144 Q 2.5
-(ya)-.15 G(re read.)-2.5 E F1<ad78>144 156 Q F0 .315(After e)184 156 R
-.315(xpanding each)-.15 F/F2 10/Times-Italic@0 SF .315(simple command)
-2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)
-2.815 E F0(command,)2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236
-(or arithmetic)184 168 R F1 -.25(fo)3.736 G(r).25 E F0 1.236
-(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of)
--.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E/F4 9/Times-Roman@0 SF(,)A F0
-(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 180 Q
+510 Q F1<ad76>144 522 Q F0(Print shell input lines as the)184 522 Q 2.5
+(ya)-.15 G(re read.)-2.5 E F1<ad78>144 534 Q F0 .315(After e)184 534 R
+.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25
+(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)
+2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184
+546 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F
+1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0
+(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 558 Q
 (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1
-<ad42>144 192 Q F0 2.578(The shell performs brace e)184 192 R 2.578
+<ad42>144 570 Q F0 2.579(The shell performs brace e)184 570 R 2.578
 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E
--.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 204 Q
-(ault.)-.1 E F1<ad43>144 216 Q F0 .214(If set,)184 216 R F1(bash)2.714 E
-F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
+-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 582 Q
+(ault.)-.1 E F1<ad43>144 594 Q F0 .213(If set,)184 594 R F1(bash)2.713 E
+F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
-2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F
-3.053(tors. This)184 228 R .553(may be o)3.053 F -.15(ve)-.15 G .553
+2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F
+3.054(tors. This)184 606 R .553(may be o)3.053 F -.15(ve)-.15 G .553
 (rridden when creating output \214les by using the redirection opera-)
-.15 F(tor)184 240 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<ad45>144 252 Q F0 .104(If set, an)184 252 R 2.604(yt)-.15 G .104
-(rap on)-2.604 F F1(ERR)2.604 E F0 .103
-(is inherited by shell functions, command substitutions, and com-)2.604
-F .838(mands e)184 264 R -.15(xe)-.15 G .838(cuted in a subshell en).15
-F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839
-(trap is normally not inherited in)3.339 F(such cases.)184 276 Q F1
-<ad48>144 288 Q F0(Enable)184 288 Q F1(!)3.032 E F0 .532
-(style history substitution.)5.532 F .531(This option is on by def)5.532
-F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 300 Q -.15
-(ve)-.25 G(.).15 E F1<ad50>144 312 Q F0 .959
-(If set, the shell does not resolv)184 312 R 3.459(es)-.15 G .959
-(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96
-(cuting commands such as).15 F F1(cd)3.46 E F0 2.822
-(that change the current w)184 324 R 2.822(orking directory)-.1 F 7.822
-(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821
-(ysical directory structure)-.05 F 2.685(instead. By)184 336 R(def)2.685
+.15 F(tor)184 618 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 630 Q F0 .103(If set, an)184 630 R 2.603(yt)-.15 G .103
+(rap on)-2.603 F F1(ERR)2.603 E F0 .104
+(is inherited by shell functions, command substitutions, and com-)2.603
+F .839(mands e)184 642 R -.15(xe)-.15 G .839(cuted in a subshell en).15
+F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838
+(trap is normally not inherited in)3.338 F(such cases.)184 654 Q F1
+<ad48>144 666 Q F0(Enable)184 666 Q F1(!)3.031 E F0 .531
+(style history substitution.)5.531 F .531(This option is on by def)5.531
+F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 678 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 690 Q F0 .96
+(If set, the shell does not resolv)184 690 R 3.459(es)-.15 G .959
+(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959
+(cuting commands such as).15 F F1(cd)3.459 E F0 2.821
+(that change the current w)184 702 R 2.822(orking directory)-.1 F 7.822
+(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822
+(ysical directory structure)-.05 F 2.686(instead. By)184 714 R(def)2.686
 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186
 (ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 348 Q(.)-.65 E F1<ad54>144
-360 Q F0 .89(If set, an)184 360 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
-(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
+(mands which change the current directory)184 726 Q(.)-.65 E
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(71)188.455 E 0 Cg EP
+%%Page: 72 72
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad54>144 84 Q F0 .89(If set, an)184 84 R 3.39(yt)-.15 G .89(raps on)
+-3.39 F F1(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
 (are inherited by shell functions, command)3.39 F 1.932
-(substitutions, and commands e)184 372 R -.15(xe)-.15 G 1.932
+(substitutions, and commands e)184 96 R -.15(xe)-.15 G 1.932
 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
-(UG)-.1 E F0(and)4.432 E F1(RETURN)184 384 Q F0
-(traps are normally not inherited in such cases.)2.5 E F1<adad>144 396 Q
-F0 .401(If no ar)184 396 R .401(guments follo)-.18 F 2.901(wt)-.25 G
-.401(his option, then the positional parameters are unset.)-2.901 F
-(Otherwise,)5.4 E(the positional parameters are set to the)184 408 Q F2
-(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G
-(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E F0(.)A F1<ad>144
-420 Q F0 1.944(Signal the end of options, cause all remaining)184 420 R
-F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G
-1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 432 R
-F1<ad78>3.446 E F0(and)3.446 E F1<ad76>3.446 E F0 .945
-(options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no)
-3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B
-(parameters remain unchanged.)184 444 Q .425(The options are of)144
-460.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 108 Q F0
+(traps are normally not inherited in such cases.)2.5 E F1<adad>144 120 Q
+F0 .4(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
+(his option, then the positional parameters are unset.)-2.901 F
+(Otherwise,)5.401 E(the positional parameters are set to the)184 132 Q
+/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>
+2.5 E F0(.)A F1<ad>144 144 Q F0 1.945
+(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E
+(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944
+(ssigned to the positional)-4.444 F 3.445(parameters. The)184 156 R F1
+<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945
+(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no)
+3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B
+(parameters remain unchanged.)184 168 Q .425(The options are of)144
+184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
 (ault unless otherwise noted.)-.1 F .425
-(Using + rather than \255 causes these options)5.425 F .178
-(to be turned of)144 472.8 R 2.678(f. The)-.25 F .178
+(Using + rather than \255 causes these options)5.425 F .177
+(to be turned of)144 196.8 R 2.677(f. The)-.25 F .178
 (options can also be speci\214ed as ar)2.678 F .178(guments to an in)
--.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066
-(current set of options may be found in)144 484.8 R F1<24ad>2.566 E F0
+-.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066
+(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0
 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
-(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F
-(is encountered.)144 496.8 Q F1(shift)108 513.6 Q F0([)2.5 E F2(n)A F0
-(])A .429(The positional parameters from)144 525.6 R F2(n)2.929 E F0
-.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G
-.428(rameters represented by the num-).15 F(bers)144 537.6 Q F1($#)2.582
-E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0<ad>A F2(n)A F0 .082
-(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga)
--.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to)
-.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06
-(is 0, no parameters are changed.)144 549.6 R(If)5.06 E F2(n)2.92 E F0
+(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F
+(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0
+(])A .428(The positional parameters from)144 249.6 R F2(n)2.928 E F0
+.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G
+.429(rameters represented by the num-).15 F(bers)144 261.6 Q F1($#)2.583
+E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083
+(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga)
+-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to)
+.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06
+(is 0, no parameters are changed.)144 273.6 R(If)5.06 E F2(n)2.92 E F0
 .06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
 (If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
-(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 561.6 R
-.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0
-.144(is greater than)2.884 F F1($#)2.644 E F0
-(or less than zero; otherwise 0.)144 573.6 Q F1(shopt)108 590.4 Q F0([)
+(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 285.6 R
+.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0
+.143(is greater than)2.883 F F1($#)2.643 E F0
+(or less than zero; otherwise 0.)144 297.6 Q F1(shopt)108 314.4 Q F0([)
 2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
--2.5 E F0(...])2.5 E -.8(To)144 602.4 S .64(ggle the v).8 F .639
+-2.5 E F0(...])2.5 E -.8(To)144 326.4 S .639(ggle the v).8 F .639
 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E
-5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374
-(listed belo)144 614.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H
-2.874(ft).4 G(he)-2.874 E F1<ad6f>2.874 E F0 .375
+5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375
+(listed belo)144 338.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
+2.875(ft).4 G(he)-2.875 E F1<ad6f>2.875 E F0 .375
 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25
-F F1<ad6f>2.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2
-(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 626.4 R .826
-(ith no options, or with the)-.4 F F1<ad70>3.326 E F0 .825
-(option, a list of all settable options is displayed, with an)3.326 F
-.945(indication of whether or not each is set.)144 638.4 R(The)5.945 E
-F1<ad70>3.445 E F0 .945(option causes output to be displayed in a form)
-3.445 F(that may be reused as input.)144 650.4 Q(Other options ha)5 E .3
--.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad73>144 662.4 Q
-F0(Enable \(set\) each)180 662.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144
-674.4 Q F0(Disable \(unset\) each)180 674.4 Q F2(optname)2.5 E F0(.)A F1
-<ad71>144 686.4 Q F0 .003(Suppresses normal output \(quiet mode\); the \
-return status indicates whether the)180 686.4 R F2(optname)2.503 E F0
-(is)2.503 E .255(set or unset.)180 698.4 R .255(If multiple)5.255 F F2
-(optname)2.755 E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G
-2.756(nw).15 G(ith)-2.756 E F1<ad71>2.756 E F0 2.756(,t)C .256
-(he return status is zero if)-2.756 F(all)180 710.4 Q F2(optnames)2.5 E
-F0(are enabled; non-zero otherwise.)2.5 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(69)192.055 E 0 Cg EP
-%%Page: 70 70
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad6f>144 84 Q F0(Restricts the v)180 84 Q(alues of)-.25 E/F2 10
-/Times-Italic@0 SF(optname)2.5 E F0(to be those de\214ned for the)2.5 E
-F1<ad6f>2.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G
-(iltin.).2 E .625(If either)144 100.8 R F1<ad73>3.125 E F0(or)3.124 E F1
-<ad75>3.124 E F0 .624(is used with no)3.124 F F2(optname)3.124 E F0(ar)
-3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624
-(ws only those options which are)-.25 F 2.233(set or unset, respecti)144
-112.8 R -.15(ve)-.25 G(ly).15 E 7.234(.U)-.65 G 2.234
-(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 2.234
-(options are disabled \(unset\) by)4.734 F(def)144 124.8 Q(ault.)-.1 E
-1.544(The return status when listing options is zero if all)144 141.6 R
-F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F
-.696
+F F1<ad6f>2.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2
+(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 350.4 R .825
+(ith no options, or with the)-.4 F F1<ad70>3.325 E F0 .826
+(option, a list of all settable options is displayed, with an)3.325 F
+.552(indication of whether or not each is set; if)144 362.4 R F2
+(optnames)3.052 E F0 .551
+(are supplied, the output is restricted to those)3.052 F 2.549
+(options. The)144 374.4 R F1<ad70>2.549 E F0 .049(option causes output \
+to be displayed in a form that may be reused as input.)2.549 F(Other)
+5.05 E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 398.4 Q F0(Enable \(set\) each)180
+398.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 410.4 Q F0
+(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 422.4 R F2(optname)2.503 E F0(is)2.503 E
+.255(set or unset.)180 434.4 R .255(If multiple)5.255 F F2(optname)2.755
+E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
+(ith)-2.756 E F1<ad71>2.756 E F0 2.756(,t)C .256
+(he return status is zero if)-2.756 F(all)180 446.4 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 458.4 Q F0
+(Restricts the v)180 458.4 Q(alues of)-.25 E F2(optname)2.5 E F0
+(to be those de\214ned for the)2.5 E F1<ad6f>2.5 E F0(option to the)2.5
+E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 475.2 R F1
+<ad73>3.125 E F0(or)3.124 E F1<ad75>3.124 E F0 .624(is used with no)
+3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124
+E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.233
+(set or unset, respecti)144 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U)
+-.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0
+2.234(options are disabled \(unset\) by)4.734 F(def)144 499.2 Q(ault.)
+-.1 E 1.544(The return status when listing options is zero if all)144
+516 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)
+4.044 F .696
 (When setting or unsetting options, the return status is zero unless an)
-144 153.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696
-(alid shell)-.25 F(option.)144 165.6 Q(The list of)144 182.4 Q F1(shopt)
-2.5 E F0(options is:)2.5 E F1(autocd)144 200.4 Q F0 .2
-(If set, a command name that is the name of a directory is e)184 200.4 R
+144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
+-.25 F(option.)144 540 Q(The list of)144 556.8 Q F1(shopt)2.5 E F0
+(options is:)2.5 E F1(assoc_expand_once)144 574.8 Q F0 1.945
+(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G
+1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944
+(rray subscripts during).15 F 2.556(arithmetic e)184 598.8 R 2.556
+(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe)
+-.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F
+(ariable)-.25 E(assignments, and while e)184 610.8 Q -.15(xe)-.15 G
+(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
+(autocd)144 622.8 Q F0 .2
+(If set, a command name that is the name of a directory is e)184 622.8 R
 -.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 212.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
+(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
 (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1(cdable_v)144 224.4 Q(ars)-.1 E F0 .155(If set, an ar)184 236.4 R .155
+F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .155(If set, an ar)184 658.8 R .155
 (gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156
 (iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 248.4 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F1(cdspell)144 260.4 Q F0
+(name of a v)184 670.8 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 Q F0
 1.055
 (If set, minor errors in the spelling of a directory component in a)184
-260.4 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
-(corrected. The)184 272.4 R 1.487(errors check)3.987 F 1.487
+682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
+(corrected. The)184 694.8 R 1.487(errors check)3.987 F 1.487
 (ed for are transposed characters, a missing character)-.1 F 3.988(,a)
--.4 G(nd)-3.988 E .77(one character too man)184 284.4 R 4.57 -.65(y. I)
+-.4 G(nd)-3.988 E .77(one character too man)184 706.8 R 4.57 -.65(y. I)
 -.15 H 3.27(fac).65 G .77
 (orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 296.4 Q
+(the command proceeds.)184 718.8 Q
 (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(checkhash)144 308.4 Q F0 .736(If set,)184 320.4 R F1(bash)3.236
-E F0 .736(checks that a command found in the hash table e)3.236 F .737
-(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
-332.4 Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 344.4
-Q F0 .449(If set,)184 356.4 R F1(bash)2.949 E F0 .449
+.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(72)188.455 E 0 Cg
+EP
+%%Page: 73 73
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(checkhash)144 84 Q F0 .736(If set,)184 96 R F1(bash)3.236 E F0 .736
+(checks that a command found in the hash table e)3.236 F .737
+(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 108
+Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q
+F0 .449(If set,)184 132 R F1(bash)2.949 E F0 .449
 (lists the status of an)2.949 F 2.949(ys)-.15 G .448
 (topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15
-F -.15(ve)-.25 G 3.438(shell. If)184 368.4 R(an)3.438 E 3.438(yj)-.15 G
+F -.15(ve)-.25 G 3.438(shell. If)184 144 R(an)3.438 E 3.438(yj)-.15 G
 .938(obs are running, this causes the e)-3.438 F .938
 (xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203
-(attempted without an interv)184 380.4 R 2.203(ening command \(see)-.15
-F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
--.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 392.4 Q -.1(wa)
--.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
-(obs are stopped.)-2.5 E F1(checkwinsize)144 404.4 Q F0 .796(If set,)184
-416.4 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G
-.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G
-.797(pdates the)-3.297 F -.25(va)184 428.4 S(lues of).25 E F3(LINES)2.5
-E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist)
-144 440.4 Q F0 1.202(If set,)184 440.4 R F1(bash)3.702 E F0 1.202
+(attempted without an interv)184 156 R 2.203(ening command \(see)-.15 F
+/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
+-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 168 Q -.1(wa)-.1
+G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
+(obs are stopped.)-2.5 E F1(checkwinsize)144 180 Q F0 1.09(If set,)184
+192 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
+(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
+(uiltin\) command and, if)-.2 F(necessary)184 204 Q 4.694(,u)-.65 G
+2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0
+(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193
+(This option is enabled by)6.693 F(def)184 216 Q(ault.)-.1 E F1(cmdhist)
+144 228 Q F0 1.202(If set,)184 228 R F1(bash)3.702 E F0 1.202
 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202
 (ll lines of a multiple-line command in the same history).15 F(entry)184
-452.4 Q 5(.T)-.65 G(his allo)-5 E
-(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 464.4
-Q F0 .419(If set,)184 476.4 R F1(bash)2.919 E F0 .419(changes its beha)
-2.919 F .419(vior to that of v)-.2 F .42
-(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .462(to the)
-184 488.4 R F1([[)2.962 E F0 .462(conditional command')2.962 F(s)-.55 E
-F1(=~)2.962 E F0 .462
+240 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133
+(ws easy re-editing of multi-line commands.)-.25 F 1.132
+(This option is enabled by)6.132 F(def)184 252 Q .613(ault, b)-.1 F .613
+(ut only has an ef)-.2 F .614
+(fect if command history is enabled, as described abo)-.25 F .914 -.15
+(ve u)-.15 H(nder).15 E F2(HIST)184 264 Q(OR)-.162 E(Y)-.315 E F3(.)A F1
+(compat31)144 276 Q F0 .42(If set,)184 288 R F1(bash)2.92 E F0 .42
+(changes its beha)2.92 F .419(vior to that of v)-.2 F .419
+(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the)
+184 300 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1
+(=~)2.962 E F0 .462
 (operator and locale-speci\214c string comparison when)2.962 F .71
-(using the)184 500.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F
-(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
-3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821
-(use ASCII collation and)184 512.4 R F2(str)3.321 E(cmp)-.37 E F0 .821
-(\(3\); bash-4.1 and later use the current locale').19 F 3.32(sc)-.55 G
-(ollation)-3.32 E(sequence and)184 524.4 Q F2(str)2.5 E(coll)-.37 E F0
-(\(3\).).51 E F1(compat32)144 536.4 Q F0 1.409(If set,)184 548.4 R F1
-(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)
--.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F .423
-(string comparison when using the)184 560.4 R F1([[)2.922 E F0 .422
+(using the)184 312 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s)
+-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
+3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82
+(use ASCII collation and)184 324 R/F4 10/Times-Italic@0 SF(str)3.321 E
+(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale')
+.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 336 Q F4(str)
+2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 348 Q F0 1.41(If set,)
+184 360 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409
+(vior to that of v)-.2 F 1.409
+(ersion 3.2 with respect to locale-speci\214c)-.15 F .422
+(string comparison when using the)184 372 R F1([[)2.922 E F0 .422
 (conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>)
-2.922 E F0 .422(operators \(see pre-)2.922 F .48
-(vious item\) and the ef)184 572.4 R .481
-(fect of interrupting a command list.)-.25 F .481(Bash v)5.481 F .481
-(ersions 3.2 and earlier)-.15 F(continue with the ne)184 584.4 Q
+2.923 E F0 .423(operators \(see pre-)2.923 F .481
+(vious item\) and the ef)184 384 R .481
+(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48
+(ersions 3.2 and earlier)-.15 F(continue with the ne)184 396 Q
 (xt command in the list after one terminates due to an interrupt.)-.15 E
-F1(compat40)144 596.4 Q F0 1.41(If set,)184 608.4 R F1(bash)3.91 E F0
-1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409
-(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007
-(string comparison when using the)184 620.4 R F1([[)4.507 E F0 2.008
-(conditional command')4.507 F(s)-.55 E F1(<)4.508 E F0(and)4.508 E F1(>)
-4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 632.4 R
-F1(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769
-(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F
-(ersions)-.15 E .086
-(4.0 and later interrupt the list as if the shell recei)184 644.4 R -.15
-(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v)
--.25 F .087(ersions con-)-.15 F(tinue with the ne)184 656.4 Q
-(xt command in the list.)-.15 E F1(compat41)144 668.4 Q F0 1.484
-(If set,)184 680.4 R F1(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F
-F2(posix)3.984 E F0 1.483
-(mode, treats a single quote in a double-quoted parameter)3.984 F -.15
-(ex)184 692.4 S .958(pansion as a special character).15 F 5.958(.T)-.55
-G .959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459
-(nn).15 G .959(umber\) and)-3.459 F .59
-(the characters between the single quotes are considered quoted.)184
-704.4 R .59(This is the beha)5.59 F .59(vior of)-.2 F .589
-(posix mode through v)184 716.4 R .589(ersion 4.1.)-.15 F .589(The def)
-5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59
-(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 728.4 Q(GNU Bash 4.4)72 768
-Q(2016 August 26)142.895 E(70)192.055 E 0 Cg EP
-%%Page: 71 71
+F1(compat40)144 408 Q F0 1.409(If set,)184 420 R F1(bash)3.909 E F0
+1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41
+(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008
+(string comparison when using the)184 432 R F1([[)4.508 E F0 2.007
+(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>)
+4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 444 R
+F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769
+(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions)
+-.15 E .087(4.0 and later interrupt the list as if the shell recei)184
+456 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086
+(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 468 Q
+(xt command in the list.)-.15 E F1(compat41)144 480 Q F0 1.523(If set,)
+184 492 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523
+(posix mode)4.023 F F0 4.024(,t)C 1.524
+(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184
+504 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958
+(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458(nn).15
+G .958(umber\) and)-3.458 F .59
+(the characters between the single quotes are considered quoted.)184 516
+R .59(This is the beha)5.59 F .59(vior of)-.2 F .59
+(posix mode through v)184 528 R .589(ersion 4.1.)-.15 F .589(The def)
+5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589
+(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 540 Q F1(compat42)144 552 Q
+F0 1.796(If set,)184 564 R F1(bash)4.296 E F0 1.796
+(does not process the replacement string in the pattern substitution w)
+4.296 F(ord)-.1 E -.15(ex)184 576 S(pansion using quote remo).15 E -.25
+(va)-.15 G(l.).25 E F1(compat43)144 588 Q F0 .141(If set,)184 600 R F1
+(bash)2.641 E F0 .141(does not print a w)2.641 F .14
+(arning message if an attempt is made to use a quoted com-)-.1 F .912
+(pound array assignment as an ar)184 612 R .912(gument to)-.18 F F1
+(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913
+(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 624 S .353
+(tal errors that cause the current command to f).1 F .353(ail \(the def)
+-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem)
+-2.852 E -.1(fa)184 636 S 1.057(tal errors that cause the shell to e).1
+F 1.058(xit\), and does not reset the loop state when a shell)-.15 F
+.375(function is e)184 648 R -.15(xe)-.15 G .375(cuted \(this allo).15 F
+(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0
+.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F
+(the caller')184 660 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1
+(compat44)144 672 Q F0 .441(If set,)184 684 R F1(bash)2.941 E F0(sa)
+2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B)
+-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184
+696 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G
+(rdless of whether or not e).05 E(xtended deb)-.15 E
+(ugging mode is enabled.)-.2 E(GNU Bash 5.0)72 768 Q(2018 December 7)
+139.295 E(73)188.455 E 0 Cg EP
+%%Page: 74 74
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(compat42)144 84 Q F0 1.797(If set,)184 96 R F1(bash)4.297 E F0 1.796
-(does not process the replacement string in the pattern substitution w)
-4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25
-(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .14(If set,)184 132 R F1
-(bash)2.64 E F0 .14(does not print a w)2.64 F .141
-(arning message if an attempt is made to use a quoted com-)-.1 F .913
-(pound array assignment as an ar)184 144 R .913(gument to)-.18 F F1
-(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912
-(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 156 S .352
-(tal errors that cause the current command to f).1 F .353(ail \(the def)
--.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem)
--2.853 E -.1(fa)184 168 S 1.058(tal errors that cause the shell to e).1
-F 1.057(xit\), and does not reset the loop state when a shell)-.15 F
-.374(function is e)184 180 R -.15(xe)-.15 G .374(cuted \(this allo).15 F
-(ws)-.25 E F1(br)2.874 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0
-.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F
-(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1
-(complete_fullquote)144 204 Q F0 .654(If set,)184 216 R F1(bash)3.153 E
+SF(complete_fullquote)144 84 Q F0 .654(If set,)184 96 R F1(bash)3.153 E
 F0 .653(quotes all shell metacharacters in \214lenames and directory na\
-mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 228 R 1.524
+mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 108 R 1.524
 (If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G
 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F
 2.667(from the set of characters that will be quoted in completed \214l\
-enames when these)184 240 R .028(metacharacters appear in shell v)184
-252 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1
-F .029(This means)5.029 F 1.073(that dollar signs in v)184 264 R 1.073
+enames when these)184 120 R .028(metacharacters appear in shell v)184
+132 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1
+F .029(This means)5.029 F 1.073(that dollar signs in v)184 144 R 1.073
 (ariable names that e)-.25 F 1.073
 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25
-(ev e)184 276 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
+(ev e)184 156 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
 (ollar signs appearing in \214lenames will not be quoted, either).15 F
 6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59
 (only when bash is using backslashes to quote completed \214lenames.)184
-288 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 300 Q
+168 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 180 Q
 (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E
-(ersions through 4.2.)-.15 E F1(dir)144 312 Q(expand)-.18 E F0 .486
-(If set,)184 324 R F1(bash)2.986 E F0 .486
+(ersions through 4.2.)-.15 E F1(dir)144 192 Q(expand)-.18 E F0 .486
+(If set,)184 204 R F1(bash)2.986 E F0 .486
 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F
 .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184
-336 R .179(This changes the contents of the readline editing b)5.18 F
+216 R .179(This changes the contents of the readline editing b)5.18 F
 (uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,)
-184 348 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
-(hat the user typed.)-2.5 E F1(dirspell)144 360 Q F0 .858(If set,)184
-360 R F1(bash)3.358 E F0 .858
+184 228 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F1(dirspell)144 240 Q F0 .858(If set,)184
+240 R F1(bash)3.358 E F0 .858
 (attempts spelling correction on directory names during w)3.358 F .859
 (ord completion if)-.1 F
-(the directory name initially supplied does not e)184 372 Q(xist.)-.15 E
-F1(dotglob)144 384 Q F0(If set,)184 384 Q F1(bash)2.5 E F0
-(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5
-(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F1(execfail)
-144 396 Q F0 1.387(If set, a non-interacti)184 396 R 1.687 -.15(ve s)
--.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15
-(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 408 Q
-(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E
-(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15
-E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 420 Q F0
-.716(If set, aliases are e)184 432 R .717(xpanded as described abo)-.15
-F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
-/F3 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F
-(by def)184 444 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(extdeb)144 456 Q(ug)-.2 E F0 .672(If set at shell in)184 468 R
--.2(vo)-.4 G .672(cation, arrange to e).2 F -.15(xe)-.15 G .671
-(cute the deb).15 F .671(ugger pro\214le before the shell starts,)-.2 F
-.22(identical to the)184 480 R F1<adad646562>2.72 E(ugger)-.2 E F0 2.721
-(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221
-(cation, beha).2 F .221(vior intended for use by)-.2 F(deb)184 492 Q
-(uggers is enabled:)-.2 E F1(1.)184 504 Q F0(The)220 504 Q F1<ad46>4.251
-E F0 1.751(option to the)4.251 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)
+(the directory name initially supplied does not e)184 252 Q(xist.)-.15 E
+F1(dotglob)144 264 Q F0 .165(If set,)184 264 R F1(bash)2.665 E F0 .165
+(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i)
+-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
+(xpansion.)-.15 E(The \214lenames)184 276 Q F1 -.63(``)2.5 G -.55(.').63
+G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
+(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
+(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
+(is set.)2.5 E F1(execfail)144 288 Q F0 1.386(If set, a non-interacti)
+184 288 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386
+(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387
+(cute the \214le speci\214ed as an).15 F(ar)184 300 Q(gument to the)-.18
+E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3
+-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0
+-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 312 Q F0 .717
+(If set, aliases are e)184 324 R .717(xpanded as described abo)-.15 F
+1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
+/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F
+(by def)184 336 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
+.15 E F1(extdeb)144 348 Q(ug)-.2 E F0 .671(If set at shell in)184 360 R
+-.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671
+(cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F
+.221(identical to the)184 372 R F1<adad646562>2.721 E(ugger)-.2 E F0
+2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221
+(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 384 Q
+(uggers is enabled:)-.2 E F1(1.)184 396 Q F0(The)220 396 Q F1<ad46>4.25
+E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)
 4.251 G 1.751(iltin displays the source \214le name and line).2 F
-(number corresponding to each function name supplied as an ar)220 516 Q
-(gument.)-.18 E F1(2.)184 528 Q F0 1.667(If the command run by the)220
-528 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F
-1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 540
-Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 552 Q F0 .841
-(If the command run by the)220 552 R F1(DEB)3.341 E(UG)-.1 E F0 .841
-(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15
-(exe)220 564 S .488
+(number corresponding to each function name supplied as an ar)220 408 Q
+(gument.)-.18 E F1(2.)184 420 Q F0 1.667(If the command run by the)220
+420 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F
+1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 432
+Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 444 Q F0 .84
+(If the command run by the)220 444 R F1(DEB)3.34 E(UG)-.1 E F0 .841
+(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15
+(exe)220 456 S .488
 (cuting in a subroutine \(a shell function or a shell script e).15 F
 -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1
-(sour)220 576 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 468 Q(ce)-.18 E F0 -.2(bu)2.5 G
 (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E
-(n)-.15 E F0(.)A F1(4.)184 588 Q F2 -.27(BA)220 588 S(SH_ARGC).27 E F0
-(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904
-(are updated as described in their descriptions)3.154 F(abo)220 600 Q
--.15(ve)-.15 G(.).15 E F1(5.)184 612 Q F0 1.637(Function tracing is ena\
-bled: command substitution, shell functions, and sub-)220 612 R
-(shells in)220 624 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
+(n)-.15 E F0(.)A F1(4.)184 480 Q F2 -.27(BA)220 480 S(SH_ARGC).27 E F0
+(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904
+(are updated as described in their descriptions)3.154 F(abo)220 492 Q
+-.15(ve)-.15 G(.).15 E F1(5.)184 504 Q F0 1.637(Function tracing is ena\
+bled: command substitution, shell functions, and sub-)220 504 R
+(shells in)220 516 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
 (\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0
-(traps.)2.5 E F1(6.)184 636 Q F0 1.082(Error tracing is enabled: comman\
-d substitution, shell functions, and subshells)220 636 R(in)220 648 Q
+(traps.)2.5 E F1(6.)184 528 Q F0 1.082(Error tracing is enabled: comman\
+d substitution, shell functions, and subshells)220 528 R(in)220 540 Q
 -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command)
 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1
-(extglob)144 660 Q F0 .4(If set, the e)184 660 R .4
+(extglob)144 552 Q F0 .4(If set, the e)184 552 R .4
 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
--.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 672 Q
-F0(are enabled.)2.5 E F1(extquote)144 684 Q F0 2.473(If set,)184 696 R
+-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 564 Q
+F0(are enabled.)2.5 E F1(extquote)144 576 Q F0 2.473(If set,)184 588 R
 F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973
 E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within)
 -4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G
-(pansions).15 E(enclosed in double quotes.)184 708 Q
-(This option is enabled by def)5 E(ault.)-.1 E(GNU Bash 4.4)72 768 Q
-(2016 August 26)142.895 E(71)192.055 E 0 Cg EP
-%%Page: 72 72
+(pansions).15 E(enclosed in double quotes.)184 600 Q
+(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 612 Q F0
+1.425(If set, patterns which f)184 612 R 1.425
+(ail to match \214lenames during pathname e)-.1 F 1.424
+(xpansion result in an)-.15 F -.15(ex)184 624 S(pansion error).15 E(.)
+-.55 E F1 -.25(fo)144 636 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.936(If set, the suf)184 648 R<8c78>-.25 E .936(es speci\214ed by the)
+-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
+-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 660 R .32
+(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32
+(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947
+(pletions. See)184 672 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0
+(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2
+(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def)
+184 684 Q(ault.)-.1 E F1(globasciiranges)144 696 Q F0 2.519
+(If set, range e)184 708 R 2.519
+(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
+(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
+(Matching)184 720 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha)
+-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
+(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
+-3.214 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(74)188.455 E 0
+Cg EP
+%%Page: 75 75
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(failglob)144 84 Q F0 1.424(If set, patterns which f)184 84 R 1.425
-(ail to match \214lenames during pathname e)-.1 F 1.425
-(xpansion result in an)-.15 F -.15(ex)184 96 S(pansion error).15 E(.)
--.55 E F1 -.25(fo)144 108 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.937(If set, the suf)184 120 R<8c78>-.25 E .936(es speci\214ed by the)
--.15 F/F2 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936
-(ariable cause w)-.25 F .936(ords to be ignored)-.1 F .32
-(when performing w)184 132 R .32(ord completion e)-.1 F -.15(ve)-.25 G
-2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32
-(ords are the only possible com-)-.1 F 2.948(pletions. See)184 144 R F2
-.448(SHELL V)2.948 F(ARIABLES)-1.215 E F0(abo)2.698 E .748 -.15(ve f)
--.15 H .448(or a description of).15 F F2(FIGNORE)2.947 E/F3 9
-/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 F(enabled by def)184
-156 Q(ault.)-.1 E F1(globasciiranges)144 168 Q F0 2.518(If set, range e)
-184 180 R 2.519(xpressions used in pattern matching brack)-.15 F 2.519
-(et e)-.1 F 2.519(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E
-(n)-.135 E(Matching)184 192 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b)
-.15 G(eha)-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214
-G 3.214(nt)-3.214 G .714
-(he traditional C locale when performing comparisons.)-3.214 F 1.02
-(That is, the current locale')184 204 R 3.52(sc)-.55 G 1.02
-(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1
-(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 216 R F1(A)
-3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F
-.957(-case and lo)-.2 F(wer)-.25 E .956
-(-case ASCII characters will collate)-.2 F(together)184 228 Q(.)-.55 E
-F1(globstar)144 240 Q F0 .518(If set, the pattern)184 240 R F1(**)3.018
-E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519
-(xt will match all \214les and zero)-.15 F .432
-(or more directories and subdirectories.)184 252 R .431
-(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0
-2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184
-264 Q F1(gnu_errfmt)144 276 Q F0(If set, shell error messages are writt\
-en in the standard GNU error message format.)184 288 Q F1(histappend)144
-300 Q F0 .676
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.02
+(That is, the current locale')184 84 R 3.52(sc)-.55 G 1.02
+(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F/F1
+10/Times-Bold@0 SF(b)3.52 E F0 1.02(will not)3.52 F .956
+(collate between)184 96 R F1(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0
+3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E
+.957(-case ASCII characters will collate)-.2 F(together)184 108 Q(.)-.55
+E F1(globstar)144 120 Q F0 .519(If set, the pattern)184 120 R F1(**)
+3.019 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F
+.518(xt will match all \214les and zero)-.15 F .431
+(or more directories and subdirectories.)184 132 R .431
+(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0
+2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184
+144 Q F1(gnu_errfmt)144 156 Q F0(If set, shell error messages are writt\
+en in the standard GNU error message format.)184 168 Q F1(histappend)144
+180 Q F0 .676
 (If set, the history list is appended to the \214le named by the v)184
-312 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G
-(ri-).25 E(able when the shell e)184 324 Q(xits, rather than o)-.15 E
--.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 336 Q(eedit)-.18
-E F0 .576(If set, and)184 348 R F1 -.18(re)3.076 G(adline).18 E F0 .575
-(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575
-(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F
-(tory substitution.)184 360 Q F1(histv)144 372 Q(erify)-.1 E F0 .402
-(If set, and)184 384 R F1 -.18(re)2.903 G(adline).18 E F0 .403
+192 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0
+-.25(va)2.926 G(ri-).25 E(able when the shell e)184 204 Q
+(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1
+(histr)144 216 Q(eedit)-.18 E F0 .575(If set, and)184 228 R F1 -.18(re)
+3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15
+(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F
+.576(ailed his-)-.1 F(tory substitution.)184 240 Q F1(histv)144 252 Q
+(erify)-.1 E F0 .403(If set, and)184 264 R F1 -.18(re)2.903 G(adline).18
+E F0 .403
 (is being used, the results of history substitution are not immediately)
-2.903 F .662(passed to the shell parser)184 396 R 5.662(.I)-.55 G .661
-(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161
-G(adline).18 E F0(editing)3.161 E -.2(bu)184 408 S -.25(ff).2 G(er).25 E
+2.903 F .661(passed to the shell parser)184 276 R 5.661(.I)-.55 G .662
+(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162
+G(adline).18 E F0(editing)3.162 E -.2(bu)184 288 S -.25(ff).2 G(er).25 E
 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
-(hostcomplete)144 420 Q F0 1.181(If set, and)184 432 R F1 -.18(re)3.681
-G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182
-(will attempt to perform hostname completion)3.682 F 1.381(when a w)184
-444 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
-(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E
-F2(READLINE)3.88 E F0(abo)184 456 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 468 Q F0(If set,)
-184 480 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
+(hostcomplete)144 300 Q F0 1.182(If set, and)184 312 R F1 -.18(re)3.682
+G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181
+(will attempt to perform hostname completion)3.681 F 1.38(when a w)184
+324 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
+(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E
+F2(READLINE)3.881 E F0(abo)184 336 Q -.15(ve)-.15 G 2.5(\). This).15 F
+(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 348 Q F0(If set,)
+184 360 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e)
-.15 E(xits.)-.15 E F1(inherit_err)144 492 Q(exit)-.18 E F0 .219
-(If set, command substitution inherits the v)184 504 R .219(alue of the)
--.25 F F1(err)2.719 E(exit)-.18 E F0 .22(option, instead of unsetting)
-2.719 F(it in the subshell en)184 516 Q 2.5(vironment. This)-.4 F
-(option is enabled when)2.5 E/F4 10/Times-Italic@0 SF(posix mode)2.5 E
-F0(is enabled.)2.5 E F1(interacti)144 528 Q -.1(ve)-.1 G(_comments).1 E
-F0 .33(If set, allo)184 540 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33
+.15 E(xits.)-.15 E F1(inherit_err)144 372 Q(exit)-.18 E F0 .22
+(If set, command substitution inherits the v)184 384 R .219(alue of the)
+-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting)
+2.719 F(it in the subshell en)184 396 Q 2.5(vironment. This)-.4 F
+(option is enabled when)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E
+F0(is enabled.)2.5 E F1(interacti)144 408 Q -.1(ve)-.1 G(_comments).1 E
+F0 .33(If set, allo)184 420 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33
 (ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33
 (ord and all remaining characters on)-.1 F .967
-(that line to be ignored in an interacti)184 552 R 1.267 -.15(ve s)-.25
+(that line to be ignored in an interacti)184 432 R 1.267 -.15(ve s)-.25
 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15
-G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 564 Q
-(ault.)-.1 E F1(lastpipe)144 576 Q F0 .066
-(If set, and job control is not acti)184 576 R -.15(ve)-.25 G 2.566(,t)
+G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 444 Q
+(ault.)-.1 E F1(lastpipe)144 456 Q F0 .066
+(If set, and job control is not acti)184 456 R -.15(ve)-.25 G 2.566(,t)
 .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F
 -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en)
-184 588 Q(vironment.)-.4 E F1(lithist)144 600 Q F0 .654(If set, and the)
-184 600 R F1(cmdhist)3.154 E F0 .654
+184 468 Q(vironment.)-.4 E F1(lithist)144 480 Q F0 .655(If set, and the)
+184 480 R F1(cmdhist)3.155 E F0 .654
 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G
-3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F
-(with embedded ne)184 612 Q
+3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F
+(with embedded ne)184 492 Q
 (wlines rather than using semicolon separators where possible.)-.25 E F1
-(login_shell)144 624 Q F0 .486
+(localv)144 504 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 516 R
+.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
+(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
+528 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
+(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173
+(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 540 Q
+F1(localv)144 552 Q(ar_unset)-.1 E F0 .328(If set, calling)184 564 R F1
+(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F
+.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\
+ps \214nd them unset until that function returns. This is identical to \
+the beha)184 576 R(v-)-.2 E(ior of unsetting local v)184 588 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 600 Q
+F0 .486
 (The shell sets this option if it is started as a login shell \(see)184
-636 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
--.15 G 2.986(\). The).15 F -.25(va)184 648 S(lue may not be changed.).25
-E F1(mailwar)144 660 Q(n)-.15 E F0 .814(If set, and a \214le that)184
-672 R F1(bash)3.314 E F0 .815
-(is checking for mail has been accessed since the last time it)3.314 F
--.1(wa)184 684 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
-(`The mail in)-.74 E F4(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
--.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 696
-Q F0 .325(If set, and)184 708 R F1 -.18(re)2.825 G(adline).18 E F0 .325
-(is being used,)2.825 F F1(bash)2.824 E F0 .324
-(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E
-F0 .324(for possible)2.574 F
-(completions when completion is attempted on an empty line.)184 720 Q
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(72)192.055 E 0 Cg EP
-%%Page: 73 73
+612 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve)
+-.15 G 2.987(\). The).15 F -.25(va)184 624 S(lue may not be changed.).25
+E F1(mailwar)144 636 Q(n)-.15 E F0 .815(If set, and a \214le that)184
+648 R F1(bash)3.315 E F0 .814
+(is checking for mail has been accessed since the last time it)3.315 F
+-.1(wa)184 660 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
+-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 672
+Q F0 .324(If set, and)184 684 R F1 -.18(re)2.824 G(adline).18 E F0 .324
+(is being used,)2.824 F F1(bash)2.824 E F0 .324
+(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E
+F0 .325(for possible)2.575 F
+(completions when completion is attempted on an empty line.)184 696 Q
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(75)188.455 E 0 Cg EP
+%%Page: 76 76
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(nocaseglob)144 84 Q F0 .436(If set,)184 96 R F1(bash)2.936 E F0 .436
-(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25
-H .437(ashion when performing pathname).05 F -.15(ex)184 108 S
+SF(nocaseglob)144 84 Q F0 .437(If set,)184 96 R F1(bash)2.937 E F0 .436
+(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25
+H .436(ashion when performing pathname).05 F -.15(ex)184 108 S
 (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.194(If set,)184
-132 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti)
-3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05
+-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.193(If set,)184
+132 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti)
+3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05
 F .551(while e)184 144 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0
 (or)3.051 E F1([[)3.051 E F0 .551
 (conditional commands, when performing pattern substitution)3.051 F -.1
-(wo)184 156 S .623(rd e).1 F .623(xpansions, or when \214ltering possib\
+(wo)184 156 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\
 le completions as part of programmable com-)-.15 F(pletion.)184 168 Q F1
-(nullglob)144 180 Q F0 .854(If set,)184 192 R F1(bash)3.354 E F0(allo)
-3.354 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)
-3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355
-(\)t).15 G(o)-3.355 E -.15(ex)184 204 S
+(nullglob)144 180 Q F0 .855(If set,)184 192 R F1(bash)3.355 E F0(allo)
+3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)
+3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354
+(\)t).15 G(o)-3.354 E -.15(ex)184 204 S
 (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-216 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184
-228 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676
-(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E
+216 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
+228 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
+(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E
 (are enabled.)184 240 Q(This option is enabled by def)5 E(ault.)-.1 E F1
-(pr)144 252 Q(omptv)-.18 E(ars)-.1 E F0 1.447
-(If set, prompt strings under)184 264 R 1.448(go parameter e)-.18 F
-1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 276
-S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
+(pr)144 252 Q(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 264 R F1(bash)4.624
+E F0 2.124(treats a command name that)4.624 F(doesn')184 276 Q 3.288(th)
+-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
+(ompletions as a possible alias and attempts alias e)-3.288 F .789
+(xpansion. If it has)-.15 F 1.473(an alias,)184 288 R F1(bash)3.973 E F0
+1.473(attempts programmable completion using the command w)3.973 F 1.473
+(ord resulting)-.1 F(from the e)184 300 Q(xpanded alias.)-.15 E F1(pr)
+144 312 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)
+184 324 R 1.448(go parameter e)-.18 F 1.448
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 336 S
+.171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
 (fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9
 /Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G
-(.).15 E(This option is enabled by def)184 288 Q(ault.)-.1 E F1 -.18(re)
-144 300 S(stricted_shell).18 E F0 1.069
+(.).15 E(This option is enabled by def)184 348 Q(ault.)-.1 E F1 -.18(re)
+144 360 S(stricted_shell).18 E F0 1.069
 (The shell sets this option if it is started in restricted mode \(see)
-184 312 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 324 Q 2.86
+184 372 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 384 Q 2.86
 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36
 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G
-(-).15 E(cuted, allo)184 336 Q(wing the startup \214les to disco)-.25 E
+(-).15 E(cuted, allo)184 396 Q(wing the startup \214les to disco)-.25 E
 -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E
-F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1
+F1(shift_v)144 408 Q(erbose)-.1 E F0 .501(If set, the)184 420 R F1
 (shift)3.001 E F0 -.2(bu)3.001 G .501
 (iltin prints an error message when the shift count e).2 F .502
-(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour)
-144 384 Q(cepath)-.18 E F0 .771(If set, the)184 396 R F1(sour)3.271 E
+(xceeds the number)-.15 F(of positional parameters.)184 432 Q F1(sour)
+144 444 Q(cepath)-.18 E F0 .771(If set, the)184 456 R F1(sour)3.271 E
 (ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
 -3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77
 (to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
-184 408 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
--.1 E F1(xpg_echo)144 420 Q F0(If set, the)184 432 Q F1(echo)2.5 E F0
+184 468 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
+-.1 E F1(xpg_echo)144 480 Q F0(If set, the)184 492 Q F1(echo)2.5 E F0
 -.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15
-E(ault.)-.1 E F1(suspend)108 448.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
-(Suspend the e)144 460.8 R -.15(xe)-.15 G 1.001
+E(ault.)-.1 E F1(suspend)108 508.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
+(Suspend the e)144 520.8 R -.15(xe)-.15 G 1.001
 (cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G
 F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be)
-3.502 F .023(suspended; the)144 472.8 R F1<ad66>2.523 E F0 .023
+3.502 F .023(suspended; the)144 532.8 R F1<ad66>2.523 E F0 .023
 (option can be used to o)2.523 F -.15(ve)-.15 G .022
 (rride this and force the suspension.).15 F .022(The return status is)
-5.022 F 2.5(0u)144 484.8 S(nless the shell is a login shell and)-2.5 E
+5.022 F 2.5(0u)144 544.8 S(nless the shell is a login shell and)-2.5 E
 F1<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5
-E F1(test)108 501.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
-108 513.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877
-(Return a status of 0 \(true\) or 1 \(f)144 513.6 R .878
+E F1(test)108 561.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
+108 573.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877
+(Return a status of 0 \(true\) or 1 \(f)144 573.6 R .878
 (alse\) depending on the e)-.1 F -.25(va)-.25 G .878
-(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 525.6
+(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 585.6
 S(pr).2 E F0 5.53(.E).73 G .53
 (ach operator and operand must be a separate ar)-5.53 F 3.03
 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079
-(primaries described abo)144 537.6 R 3.379 -.15(ve u)-.15 H(nder).15 E
+(primaries described abo)144 597.6 R 3.379 -.15(ve u)-.15 H(nder).15 E
 F2(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF
 (.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F(y)-.15 E
-(options, nor does it accept and ignore an ar)144 549.6 Q(gument of)-.18
+(options, nor does it accept and ignore an ar)144 609.6 Q(gument of)-.18
 E F1<adad>2.5 E F0(as signifying the end of options.)2.5 E .786
-(Expressions may be combined using the follo)144 567.6 R .785
+(Expressions may be combined using the follo)144 627.6 R .785
 (wing operators, listed in decreasing order of prece-)-.25 F 3.411
-(dence. The)144 579.6 R -.25(eva)3.411 G .911
+(dence. The)144 639.6 R -.25(eva)3.411 G .911
 (luation depends on the number of ar).25 F .912(guments; see belo)-.18 F
 4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F
-(used when there are \214v)144 591.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
-(ore ar)-2.5 E(guments.)-.18 E F1(!)144 603.6 Q F3 -.2(ex)2.5 G(pr).2 E
-F0 -.35(Tr)180 603.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23
-E(alse.)-.1 E F1(\()144 615.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
-.26(Returns the v)180 615.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
+(used when there are \214v)144 651.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
+(ore ar)-2.5 E(guments.)-.18 E F1(!)144 663.6 Q F3 -.2(ex)2.5 G(pr).2 E
+F0 -.35(Tr)180 663.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23
+E(alse.)-.1 E F1(\()144 675.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
+.26(Returns the v)180 675.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26
-(rride the normal precedence of opera-).15 F(tors.)180 627.6 Q F3 -.2
-(ex)144 639.6 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0
--.35(Tr)180 651.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5
-E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 663.6 S
-(pr1).2 E F0<ad>2.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180
-675.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2
-(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 692.4 Q F0(and)2.5 E
-F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E
-(xpressions using a set of rules based on the number of ar)-.15 E
-(guments.)-.18 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(73)
-192.055 E 0 Cg EP
-%%Page: 74 74
+(rride the normal precedence of opera-).15 F(tors.)180 687.6 Q F3 -.2
+(ex)144 699.6 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0
+-.35(Tr)180 711.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5
+E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(76)188.455 E 0 Cg EP
+%%Page: 77 77
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(0a)144 84 S
--.18(rg)-2.5 G(uments).18 E(The e)180 96 Q(xpression is f)-.15 E(alse.)
--.1 E 2.5(1a)144 108 S -.18(rg)-2.5 G(ument).18 E(The e)180 120 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F0<ad>2.5 E/F2 10
+/Times-Bold@0 SF(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S
+(ue if either).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G
+(pr2).2 E F0(is true.)2.52 E F2(test)144 112.8 Q F0(and)2.5 E F2([)2.5 E
+F0 -.25(eva)2.5 G(luate conditional e).25 E
+(xpressions using a set of rules based on the number of ar)-.15 E
+(guments.)-.18 E 2.5(0a)144 130.8 S -.18(rg)-2.5 G(uments).18 E(The e)
+180 142.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 154.8 S -.18
+(rg)-2.5 G(ument).18 E(The e)180 166.8 Q
 (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
-E 2.5(2a)144 132 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180
-144 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C
-.37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15
-F .37(gument is null.)-.18 F .38(If the \214rst ar)180 156 R .38
+E 2.5(2a)144 178.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
+180 190.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
+F .37(xpression is true if and only if the second ar)-.15 F .37
+(gument is null.)-.18 F .38(If the \214rst ar)180 202.8 R .38
 (gument is one of the unary conditional operators listed abo)-.18 F .679
--.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180
-168 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552
+-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180
+214.8 Q .552(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552
 (the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F
-.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 180 Q
+.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 226.8 Q
 (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E
-(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 192 S -.18(rg)-2.5 G
-(uments).18 E .236(The follo)180 204 R .236
+(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 238.8 S -.18(rg)-2.5 G
+(uments).18 E .236(The follo)180 250.8 R .236
 (wing conditions are applied in the order listed.)-.25 F .236
 (If the second ar)5.236 F .236(gument is one of)-.18 F .855
-(the binary conditional operators listed abo)180 216 R 1.155 -.15(ve u)
--.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F3(,)A
-F0(the)3.105 E .579(result of the e)180 228 R .578(xpression is the res\
-ult of the binary test using the \214rst and third ar)-.15 F(guments)
--.18 E 1.332(as operands.)180 240 R(The)6.332 E F1<ad61>3.832 E F0(and)
-3.832 E F1<ad6f>3.832 E F0 1.333
+(the binary conditional operators listed abo)180 262.8 R 1.155 -.15
+(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
+F4(,)A F0(the)3.105 E .579(result of the e)180 274.8 R .578(xpression i\
+s the result of the binary test using the \214rst and third ar)-.15 F
+(guments)-.18 E 1.332(as operands.)180 286.8 R(The)6.332 E F2<ad61>3.832
+E F0(and)3.832 E F2<ad6f>3.832 E F0 1.333
 (operators are considered binary operators when there are)3.832 F .558
-(three ar)180 252 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F
-.558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558
-(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1
-E(gument)-.18 E .52(test using the second and third ar)180 264 R 3.021
-(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F
-(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)3.021 F(ar)180 276 Q
-.485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485
-(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18
-F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 288 Q
-(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 300 S -.18(rg)-2.5 G
-(uments).18 E .384(If the \214rst ar)180 312 R .384(gument is)-.18 F F1
-(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15
-G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385
-(xpression com-)-.15 F 1.648(posed of the remaining ar)180 324 R 4.147
-(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647
-(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E
-(according to precedence using the rules listed abo)180 336 Q -.15(ve)
--.15 G(.).15 E 2.5(5o)144 348 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18
-E 1.635(The e)180 360 R 1.635(xpression is parsed and e)-.15 F -.25(va)
--.25 G 1.635(luated according to precedence using the rules listed).25 F
-(abo)180 372 Q -.15(ve)-.15 G(.).15 E(When used with)144 390 Q F1(test)
-2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5
-E F1(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using ASCII ordering.)-.15 E F1(times)108 406.8 Q F0
+(three ar)180 298.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
+F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
+.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F
+(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180
+310.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521
+(gument is e)-.18 F(xactly)-.15 E F2(\()3.021 E F0 .521(and the third)
+3.021 F(ar)180 322.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985
+E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485
+(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E
+(wise, the e)180 334.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
+346.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 358.8 R
+.384(gument is)-.18 F F2(!)2.884 E F0 2.885(,t)C .385
+(he result is the ne)-2.885 F -.05(ga)-.15 G .385(tion of the three-ar)
+.05 F .385(gument e)-.18 F .385(xpression com-)-.15 F 1.648
+(posed of the remaining ar)180 370.8 R 4.147(guments. Otherwise,)-.18 F
+1.647(the e)4.147 F 1.647(xpression is parsed and e)-.15 F -.25(va)-.25
+G(luated).25 E(according to precedence using the rules listed abo)180
+382.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 394.8 S 2.5(rm)-2.5 G(ore ar)
+-2.5 E(guments)-.18 E 1.635(The e)180 406.8 R 1.635
+(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635
+(luated according to precedence using the rules listed).25 F(abo)180
+418.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 436.8 Q F2(test)2.5 E
+F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2
+(>)2.5 E F0(operators sort le)2.5 E
+(xicographically using ASCII ordering.)-.15 E F2(times)108 453.6 Q F0
 1.229(Print the accumulated user and system times for the shell and for\
- processes run from the shell.)144 406.8 R(The return status is 0.)144
-418.8 Q F1(trap)108 435.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
-/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...])
-2.5 E .702(The command)144 447.6 R F4(ar)3.532 E(g)-.37 E F0 .702
-(is to be read and e)3.422 F -.15(xe)-.15 G .702
-(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G
-(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4
-(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single)
-144 459.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E
-F0 3.108(,e)C .608
+ processes run from the shell.)144 453.6 R(The return status is 0.)144
+465.6 Q F2(trap)108 482.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E
+F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .702(The command)
+144 494.4 R F1(ar)3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F
+-.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G
+3.203(ss).15 G(ignal\(s\))-3.203 E F1(sigspec)3.203 E F0 5.703(.I).31 G
+(f)-5.703 E F1(ar)3.533 E(g)-.37 E F0(is)3.423 E .609
+(absent \(and there is a single)144 506.4 R F1(sigspec)3.108 E F0 3.108
+(\)o)C(r)-3.108 E F2<ad>3.108 E F0 3.108(,e)C .608
 (ach speci\214ed signal is reset to its original disposition)-3.108 F
-.658(\(the v)144 471.6 R .658(alue it had upon entrance to the shell\).)
--.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659
-(is the null string the signal speci\214ed by each)3.378 F F4(sigspec)
-144.34 483.6 Q F0 .581
+.658(\(the v)144 518.4 R .658(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659
+(is the null string the signal speci\214ed by each)3.378 F F1(sigspec)
+144.34 530.4 Q F0 .581
 (is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G
--.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58
-(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214
-(been supplied, then the trap commands associated with each)144 495.6 R
-F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
-F(gu-)-.18 E .86(ments are supplied or if only)144 507.6 R F1<ad70>3.36
-E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
+-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58
+(is not present and)3.3 F F2<ad70>3.08 E F0(has)3.08 E 1.214
+(been supplied, then the trap commands associated with each)144 542.4 R
+F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
+F(gu-)-.18 E .86(ments are supplied or if only)144 554.4 R F2<ad70>3.36
+E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86
 (prints the list of commands associated with each)3.36 F 2.83
-(signal. The)144 519.6 R F1<ad6c>2.83 E F0 .33(option causes the shell \
+(signal. The)144 566.4 R F2<ad6c>2.83 E F0 .33(option causes the shell \
 to print a list of signal names and their corresponding num-)2.83 F
-4.311(bers. Each)144 531.6 R F4(sigspec)4.651 E F0 1.811
-(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81
+4.311(bers. Each)144 578.4 R F1(sigspec)4.651 E F0 1.811
+(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81
 (>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E
-(names are case insensiti)144 543.6 Q .3 -.15(ve a)-.25 H(nd the).15 E
-F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 561.6 R F4
-(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648
-(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F
+(names are case insensiti)144 590.4 Q .3 -.15(ve a)-.25 H(nd the).15 E
+F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 608.4 R F1
+(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648
+(\(0\) the command)3.898 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F
 -.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F
-1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 573.6 Q
-(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0
+1.649(If a)6.649 F F1(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 620.4 Q
+(UG)-.09 E F4(,)A F0 1.168(the command)3.418 F F1(ar)3.998 E(g)-.37 E F0
 1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve)
--.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0
-(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 585.6 Q F4
+-.25 G(ry).15 E F1 1.167(simple command)3.667 F F0(,)A F1(for)3.667 E F0
+(command,)3.667 E F1(case)3.667 E F0(com-)3.667 E(mand,)144 632.4 Q F1
 (select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146
-(ry arithmetic).15 F F4(for)2.646 E F0 .147
+(ry arithmetic).15 F F1(for)2.646 E F0 .147
 (command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147
-(cutes in a).15 F .146(shell function \(see)144 597.6 R F2 .146
+(cutes in a).15 F .146(shell function \(see)144 644.4 R F3 .146
 (SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15
-F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0
-.145(option to)2.645 F(the)144 609.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7
-(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG)
--.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2
-(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 621.6 Q F4(ar)
+F .146(to the description of the)2.646 F F2(extdeb)2.645 E(ug)-.2 E F0
+.145(option to)2.645 F(the)144 656.4 Q F2(shopt)3.2 E F0 -.2(bu)3.2 G .7
+(iltin for details of its ef).2 F .7(fect on the)-.25 F F2(DEB)3.2 E(UG)
+-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E F3
+(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 668.4 Q F1(ar)
 3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643
 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
-.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce)
--.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 633.6 Q -.15(xe)
--.15 G(cuting.).15 E .96(If a)144 651.6 R F4(sigspec)3.8 E F0(is)3.77 E
-F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F4(ar)3.791 E(g)-.37 E F0
+.643(cuted with the).15 F F2(.)3.143 E F0(or)3.143 E F2(sour)3.143 E(ce)
+-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 680.4 Q -.15(xe)
+-.15 G(cuting.).15 E .96(If a)144 698.4 R F1(sigspec)3.8 E F0(is)3.77 E
+F3(ERR)3.46 E F4(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0
 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G
 3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\
 gle simple command\), a list, or a compound command returns a non\255ze\
-ro e)144 663.6 R .184(xit status, subject to)-.15 F .451(the follo)144
-675.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451
-(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452
-(ailed command is part of the com-)-.1 F .388
-(mand list immediately follo)144 687.6 R .388(wing a)-.25 F F1(while)
-2.888 E F0(or)2.888 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
-(ord, part of the test in an)-.1 F F4(if)2.897 E F0 .387
-(statement, part)4.847 F .777(of a command e)144 699.6 R -.15(xe)-.15 G
-.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778
-(list e)3.278 F .778(xcept the command follo)-.15 F .778
-(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0
-3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 711.6 R
-1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)
--3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F
-F1(!)3.78 E F0(.)A(These are the same conditions obe)144 723.6 Q
-(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5
-(\)o)C(ption.)-2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(74)
-192.055 E 0 Cg EP
-%%Page: 75 75
+ro e)144 710.4 R .184(xit status, subject to)-.15 F 1.92(the follo)144
+722.4 R 1.92(wing conditions.)-.25 F(The)6.92 E F3(ERR)4.42 E F0 1.92
+(trap is not e)4.17 F -.15(xe)-.15 G 1.92(cuted if the f).15 F 1.92
+(ailed command is part of the)-.1 F(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(77)188.455 E 0 Cg EP
+%%Page: 78 78
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .464
+(command list immediately follo)144 84 R .464(wing a)-.25 F/F1 10
+/Times-Bold@0 SF(while)2.964 E F0(or)2.964 E F1(until)2.964 E F0 -.1(ke)
+2.964 G(yw)-.05 E .464(ord, part of the test in an)-.1 F/F2 10
+/Times-Italic@0 SF(if)2.973 E F0(statement,)4.923 E .711
+(part of a command e)144 96 R -.15(xe)-.15 G .711(cuted in a).15 F F1
+(&&)3.211 E F0(or)3.211 E F1(||)3.212 E F0 .712(list e)3.212 F .712
+(xcept the command follo)-.15 F .712(wing the \214nal)-.25 F F1(&&)3.212
+E F0(or)3.212 E F1(||)3.212 E F0(,)A(an)144 108 Q 2.777(yc)-.15 G .276
+(ommand in a pipeline b)-2.777 F .276(ut the last, or if the command')
+-.2 F 2.776(sr)-.55 G .276(eturn v)-2.776 F .276(alue is being in)-.25 F
+-.15(ve)-.4 G .276(rted using).15 F F1(!)2.776 E F0(.)A
+(These are the same conditions obe)144 120 Q(yed by the)-.15 E F1(err)
+2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5(\)o)C(ption.)-2.5 E 1.095
 (Signals ignored upon entry to the shell cannot be trapped or reset.)144
-84 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662
-(being ignored are reset to their original v)144 96 R .662
+138 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662
+(being ignored are reset to their original v)144 150 R .662
 (alues in a subshell or subshell en)-.25 F .661(vironment when one is)
--.4 F 2.5(created. The)144 108 R(return status is f)2.5 E(alse if an)-.1
-E(y)-.15 E/F1 10/Times-Italic@0 SF(sigspec)2.84 E F0(is in)2.81 E -.25
-(va)-.4 G(lid; otherwise).25 E/F2 10/Times-Bold@0 SF(trap)2.5 E F0
-(returns true.)2.5 E F2(type)108 124.8 Q F0([)2.5 E F2(\255aftpP)A F0(])
-A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 136.8 S
-.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1
-(name)3.033 E F0 -.1(wo)2.853 G .174
+-.4 F 2.5(created. The)144 162 R(return status is f)2.5 E(alse if an)-.1
+E(y)-.15 E F2(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G
+(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108
+178.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2
+(name)A F0(...])2.5 E -.4(Wi)144 190.8 S .173
+(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name)
+3.033 E F0 -.1(wo)2.853 G .174
 (uld be interpreted if used as a command name.).1 F .174(If the)5.174 F
-F2<ad74>144 148.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0
-.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E
-F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0
-(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1
-(\214le)5.252 E F0(if)3.522 E F1(name)144.36 160.8 Q F0 .086
+F1<ad74>144 202.8 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0
+.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E
+F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0
+(,).24 E F2 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F2
+(\214le)5.252 E F0(if)3.522 E F2(name)144.36 214.8 Q F0 .086
 (is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086
 (ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15
-(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1
+(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2
 (name)2.947 E F0 .087(is not)2.767 F .119
-(found, then nothing is printed, and an e)144 172.8 R .118
+(found, then nothing is printed, and an e)144 226.8 R .118
 (xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
-F2<ad70>2.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855
-(either returns the name of the disk \214le that w)144 184.8 R .855
-(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0
+F1<ad70>2.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855
+(either returns the name of the disk \214le that w)144 238.8 R .855
+(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0
 .855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if)
-144 196.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141
-G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
-F2<ad50>3.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666
-(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 208.8 R F1(name)2.612
+144 250.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141
+G .641(uld not return).1 F F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
+F1<ad50>3.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666
+(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 262.8 R F2(name)2.612
 E F0 2.612(,e)C -.15(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113
-(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F1
+(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F2
 (\214le)2.613 E F0 5.113(.I).18 G 2.613(fac)-5.113 G .113
-(ommand is hashed,)-2.613 F F2<ad70>2.613 E F0(and)144 220.8 Q F2<ad50>
+(ommand is hashed,)-2.613 F F1<ad70>2.613 E F0(and)144 274.8 Q F1<ad50>
 3.231 E F0 .731(print the hashed v)3.231 F .73
 (alue, which is not necessarily the \214le that appears \214rst in)-.25
 F F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the)
-5.23 F F2<ad61>144 232.8 Q F0 1.748(option is used,)4.248 F F2(type)
+5.23 F F1<ad61>144 286.8 Q F0 1.748(option is used,)4.248 F F1(type)
 4.248 E F0 1.748(prints all of the places that contain an e)4.248 F -.15
-(xe)-.15 G 1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G
+(xe)-.15 G 1.748(cutable named).15 F F2(name)4.249 E F0 6.749(.T).18 G
 (his)-6.749 E .744(includes aliases and functions, if and only if the)
-144 244.8 R F2<ad70>3.244 E F0 .744(option is not also used.)3.244 F
+144 298.8 R F1<ad70>3.244 E F0 .744(option is not also used.)3.244 F
 .743(The table of hashed)5.744 F 1.223
-(commands is not consulted when using)144 256.8 R F2<ad61>3.723 E F0
-6.223(.T)C(he)-6.223 E F2<ad66>3.723 E F0 1.223
+(commands is not consulted when using)144 310.8 R F1<ad61>3.723 E F0
+6.223(.T)C(he)-6.223 E F1<ad66>3.723 E F0 1.223
 (option suppresses shell function lookup, as)3.723 F .326(with the)144
-268.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type)5.326 E
+322.8 R F1(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F1(type)5.326 E
 F0 .326(returns true if all of the ar)2.826 F .325(guments are found, f)
 -.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325(re not)-2.825 F
-(found.)144 280.8 Q F2(ulimit)108 297.6 Q F0([)2.5 E F2
-(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144
-309.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243
+(found.)144 334.8 Q F1(ulimit)108 351.6 Q F0([)2.5 E F1
+(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F2(limit)A F0(]])A(Pro)144
+363.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243
 (he resources a)-2.743 F -.25(va)-.2 G .244
 (ilable to the shell and to processes started by it, on systems).25 F
-.944(that allo)144 321.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
-(The)5.944 E F2<ad48>3.444 E F0(and)3.444 E F2<ad53>3.444 E F0 .943
+.944(that allo)144 375.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
+(The)5.944 E F1<ad48>3.444 E F0(and)3.444 E F1<ad53>3.444 E F0 .943
 (options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 333.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
+144 387.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
 (hard limit cannot be increased by a non-root user once it is set; a so\
-ft limit may)2.708 F .426(be increased up to the v)144 345.6 R .426
-(alue of the hard limit.)-.25 F .425(If neither)5.426 F F2<ad48>2.925 E
-F0(nor)2.925 E F2<ad53>2.925 E F0 .425
+ft limit may)2.708 F .426(be increased up to the v)144 399.6 R .426
+(alue of the hard limit.)-.25 F .425(If neither)5.426 F F1<ad48>2.925 E
+F0(nor)2.925 E F1<ad53>2.925 E F0 .425
 (is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144
-357.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139
+411.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
 (can be a number in the unit speci\214ed for the resource or one)3.319 F
-.742(of the special v)144 369.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2
-(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w)
+.742(of the special v)144 423.6 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1
+(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
 C .741(hich stand for the current hard limit, the current)-3.241 F .78
-(soft limit, and no limit, respecti)144 381.6 R -.15(ve)-.25 G(ly).15 E
-5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78
+(soft limit, and no limit, respecti)144 435.6 R -.15(ve)-.25 G(ly).15 E
+5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78
 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25
-F .499(resource is printed, unless the)144 393.6 R F2<ad48>2.999 E F0
+F .499(resource is printed, unless the)144 447.6 R F1<ad48>2.999 E F0
 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498
 (more than one resource is speci\214ed, the)2.999 F
-(limit name and unit are printed before the v)144 405.6 Q 2.5
-(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2
-<ad61>144 417.6 Q F0(All current limits are reported)180 417.6 Q F2
-<ad62>144 429.6 Q F0(The maximum sock)180 429.6 Q(et b)-.1 E(uf)-.2 E
-(fer size)-.25 E F2<ad63>144 441.6 Q F0
-(The maximum size of core \214les created)180 441.6 Q F2<ad64>144 453.6
-Q F0(The maximum size of a process')180 453.6 Q 2.5(sd)-.55 G(ata se)
--2.5 E(gment)-.15 E F2<ad65>144 465.6 Q F0
-(The maximum scheduling priority \("nice"\))180 465.6 Q F2<ad66>144
-477.6 Q F0
+(limit name and unit are printed before the v)144 459.6 Q 2.5
+(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1
+<ad61>144 471.6 Q F0(All current limits are reported)180 471.6 Q F1
+<ad62>144 483.6 Q F0(The maximum sock)180 483.6 Q(et b)-.1 E(uf)-.2 E
+(fer size)-.25 E F1<ad63>144 495.6 Q F0
+(The maximum size of core \214les created)180 495.6 Q F1<ad64>144 507.6
+Q F0(The maximum size of a process')180 507.6 Q 2.5(sd)-.55 G(ata se)
+-2.5 E(gment)-.15 E F1<ad65>144 519.6 Q F0
+(The maximum scheduling priority \("nice"\))180 519.6 Q F1<ad66>144
+531.6 Q F0
 (The maximum size of \214les written by the shell and its children)180
-477.6 Q F2<ad69>144 489.6 Q F0(The maximum number of pending signals)180
-489.6 Q F2<ad6b>144 501.6 Q F0
-(The maximum number of kqueues that may be allocated)180 501.6 Q F2
-<ad6c>144 513.6 Q F0(The maximum size that may be lock)180 513.6 Q
-(ed into memory)-.1 E F2<ad6d>144 525.6 Q F0
-(The maximum resident set size \(man)180 525.6 Q 2.5(ys)-.15 G
-(ystems do not honor this limit\))-2.5 E F2<ad6e>144 537.6 Q F0 .791(Th\
+531.6 Q F1<ad69>144 543.6 Q F0(The maximum number of pending signals)180
+543.6 Q F1<ad6b>144 555.6 Q F0
+(The maximum number of kqueues that may be allocated)180 555.6 Q F1
+<ad6c>144 567.6 Q F0(The maximum size that may be lock)180 567.6 Q
+(ed into memory)-.1 E F1<ad6d>144 579.6 Q F0
+(The maximum resident set size \(man)180 579.6 Q 2.5(ys)-.15 G
+(ystems do not honor this limit\))-2.5 E F1<ad6e>144 591.6 Q F0 .791(Th\
 e maximum number of open \214le descriptors \(most systems do not allo)
-180 537.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
-(be set\))180 549.6 Q F2<ad70>144 561.6 Q F0
-(The pipe size in 512-byte blocks \(this may not be set\))180 561.6 Q F2
-<ad71>144 573.6 Q F0
-(The maximum number of bytes in POSIX message queues)180 573.6 Q F2
-<ad72>144 585.6 Q F0(The maximum real-time scheduling priority)180 585.6
-Q F2<ad73>144 597.6 Q F0(The maximum stack size)180 597.6 Q F2<ad74>144
-609.6 Q F0(The maximum amount of cpu time in seconds)180 609.6 Q F2
-<ad75>144 621.6 Q F0(The maximum number of processes a)180 621.6 Q -.25
-(va)-.2 G(ilable to a single user).25 E F2<ad76>144 633.6 Q F0 .47
-(The maximum amount of virtual memory a)180 633.6 R -.25(va)-.2 G .47
+180 591.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
+(be set\))180 603.6 Q F1<ad70>144 615.6 Q F0
+(The pipe size in 512-byte blocks \(this may not be set\))180 615.6 Q F1
+<ad71>144 627.6 Q F0
+(The maximum number of bytes in POSIX message queues)180 627.6 Q F1
+<ad72>144 639.6 Q F0(The maximum real-time scheduling priority)180 639.6
+Q F1<ad73>144 651.6 Q F0(The maximum stack size)180 651.6 Q F1<ad74>144
+663.6 Q F0(The maximum amount of cpu time in seconds)180 663.6 Q F1
+<ad75>144 675.6 Q F0(The maximum number of processes a)180 675.6 Q -.25
+(va)-.2 G(ilable to a single user).25 E F1<ad76>144 687.6 Q F0 .47
+(The maximum amount of virtual memory a)180 687.6 R -.25(va)-.2 G .47
 (ilable to the shell and, on some systems, to).25 F(its children)180
-645.6 Q F2<ad78>144 657.6 Q F0(The maximum number of \214le locks)180
-657.6 Q F2<ad50>144 669.6 Q F0(The maximum number of pseudoterminals)180
-669.6 Q F2<ad54>144 681.6 Q F0(The maximum number of threads)180 681.6 Q
-(If)144 698.4 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G
-.468(n, and the).15 F F2<ad61>2.968 E F0 .468(option is not used,)2.968
-F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468
-(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045
-(no option is gi)144 710.4 R -.15(ve)-.25 G .045(n, then).15 F F2<ad66>
-2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
-(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F2
-<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144
-722.4 R F2<ad70>4.088 E F0 4.089(,w)C 1.589
-(hich is in units of 512-byte blocks;)-4.089 F F2<ad50>4.089 E F0(,)A F2
-<ad54>4.089 E F0(,)A F2<ad62>4.089 E F0(,)A F2<ad6b>4.089 E F0(,)A F2
-<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F2<ad75>4.089 E F0 4.089(,w)C
-1.589(hich are)-4.089 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E
-(75)192.055 E 0 Cg EP
-%%Page: 76 76
+699.6 Q F1<ad78>144 711.6 Q F0(The maximum number of \214le locks)180
+711.6 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(78)188.455 E 0
+Cg EP
+%%Page: 79 79
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.439(unscaled v)
-144 84 R 1.439(alues; and, when in Posix mode,)-.25 F/F1 10/Times-Bold@0
-SF<ad63>3.939 E F0(and)3.939 E F1<ad66>3.939 E F0 3.939(,w)C 1.438
-(hich are in 512-byte increments.)-3.939 F(The)6.438 E .404
-(return status is 0 unless an in)144 96 R -.25(va)-.4 G .404
-(lid option or ar).25 F .404
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad50>144 84 Q F0(The maximum number of pseudoterminals)180 84 Q F1
+<ad54>144 96 Q F0(The maximum number of threads)180 96 Q(If)144 112.8 Q
+/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)
+-.25 G .468(n, and the).15 F F1<ad61>2.968 E F0 .468
+(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F
+2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468
+E .045(no option is gi)144 124.8 R -.15(ve)-.25 G .045(n, then).15 F F1
+<ad66>2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1
+<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144
+136.8 R F1<ad70>4.088 E F0 4.089(,w)C 1.589
+(hich is in units of 512-byte blocks;)-4.089 F F1<ad50>4.089 E F0(,)A F1
+<ad54>4.089 E F0(,)A F1<ad62>4.089 E F0(,)A F1<ad6b>4.089 E F0(,)A F1
+<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F1<ad75>4.089 E F0 4.089(,w)C
+1.589(hich are)-4.089 F 1.476(unscaled v)144 148.8 R 1.476
+(alues; and, when in posix mode,)-.25 F F1<ad63>3.976 E F0(and)3.976 E
+F1<ad66>3.976 E F0 3.976(,w)C 1.476(hich are in 512-byte increments.)
+-3.976 F(The)6.476 E .404(return status is 0 unless an in)144 160.8 R
+-.25(va)-.4 G .404(lid option or ar).25 F .404
 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144
-108 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 124.8 Q F0([)2.5 E F1
-<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF
-(mode)-2.5 E F0(])A .2(The user \214le-creation mask is set to)144 136.8
-R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2
+172.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 189.6 Q F0([)2.5 E
+F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A
+.2(The user \214le-creation mask is set to)144 201.6 R F2(mode)2.7 E F0
+5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2
 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
 therwise it is interpreted as a symbolic mode mask similar to that acce\
-pted by)144 148.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-160.8 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
+pted by)144 213.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
+225.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
 (alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
 (option causes the mask to be)2.882 F .547
-(printed in symbolic form; the def)144 172.8 R .547
+(printed in symbolic form; the def)144 237.6 R .547
 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G
 (he)-3.047 E F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 184.8 Q F0 .552
+(mode)144.38 249.6 Q F0 .552
 (is omitted, the output is in a form that may be reused as input.)3.232
-F .551(The return status is 0 if the)5.551 F(mode w)144 196.8 Q
+F .551(The return status is 0 if the)5.551 F(mode w)144 261.6 Q
 (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E
 (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1
-(unalias)108 213.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
-(...])2.5 E(Remo)144 225.6 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name)
+(unalias)108 278.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
+(...])2.5 E(Remo)144 290.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name)
 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E
 F1<ad61>4.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155
-F(remo)144 237.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
+F(remo)144 302.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
 (alue is true unless a supplied)-.25 E F2(name)2.86 E F0
-(is not a de\214ned alias.)2.68 E F1(unset)108 254.4 Q F0<5bad>2.5 E F1
+(is not a de\214ned alias.)2.68 E F1(unset)108 319.2 Q F0<5bad>2.5 E F1
 (fv)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...])
-2.5 E -.15(Fo)144 266.4 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0
+2.5 E -.15(Fo)144 331.2 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0
 3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328
 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327
 (If the)6.327 F F1<ad76>3.827 E F0 1.327(option is gi)3.827 F -.15(ve)
--.25 G 1.327(n, each).15 F F2(name)144.36 278.4 Q F0 1.55
+-.25 G 1.327(n, each).15 F F2(name)144.36 343.2 Q F0 1.55
 (refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551
 (ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va)
-4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 290.4 R F1
+4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 355.2 R F1
 <ad66>4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0
 2.141(refers to a shell function, and the function de\214nition is)4.821
-F(remo)144 302.4 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1<ad6e>
+F(remo)144 367.2 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1<ad6e>
 2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037
 (is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E
 F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.538 E .492
-(be unset rather than the v)144 314.4 R .492(ariable it references.)-.25
+(be unset rather than the v)144 379.2 R .492(ariable it references.)-.25
 F F1<ad6e>5.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1
 <ad66>2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22
-(options are supplied, each)144 326.4 R F2(name)2.72 E F0 .22
+(options are supplied, each)144 391.2 R F2(name)2.72 E F0 .22
 (refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221
 (ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189
-(tion with that name is unset.)144 338.4 R 1.189(Each unset v)6.189 F
+(tion with that name is unset.)144 403.2 R 1.189(Each unset v)6.189 F
 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G
 1.188(rom the en)-3.688 F(vironment)-.4 E 3.205
-(passed to subsequent commands.)144 350.4 R 3.206(If an)8.206 F 5.706
+(passed to subsequent commands.)144 415.2 R 3.206(If an)8.206 F 5.706
 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09
 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E
-F4(,)A F3(LINENO)144 362.4 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN)
+F4(,)A F3(LINENO)144 427.2 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN)
 4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E
 F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348
 F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144
-374.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15
+439.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15
 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a)
--.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 391.2 Q
-F0([)2.5 E F1<ad6e>A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8
-(Wa)144 403.2 S .026(it for each speci\214ed child process and return i\
-ts termination status.).8 F(Each)5.027 E F2(n)2.887 E F0 .027
-(may be a process ID)2.767 F .256
-(or a job speci\214cation; if a job spec is gi)144 415.2 R -.15(ve)-.25
-G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256
-(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E
-F2(n)3.116 E F0 .317(is not gi)144 427.2 R -.15(ve)-.25 G .317
-(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318
-(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318
-(nd the return status is zero.)-2.818 F .318(If the)5.318 F F1<ad6e>144
-439.2 Q F0 .362(option is supplied,)2.862 F F1(wait)2.862 E F0 -.1(wa)
-2.862 G .362(its for an).1 F 2.862(yj)-.15 G .362
-(ob to terminate and returns its e)-2.862 F .361(xit status.)-.15 F(If)
-5.361 E F2(n)3.221 E F0(speci\214es)3.101 E 2.595(an)144 451.2 S(on-e)
--2.595 E .095(xistent process or job, the return status is 127.)-.15 F
-.096(Otherwise, the return status is the e)5.095 F .096(xit status)-.15
-F(of the last process or job w)144 463.2 Q(aited for)-.1 E(.)-.55 E/F5
-10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 480 Q F0(If)108 492 Q F1(bash)
-4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 E F0
-4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1<ad72>4.397 E F0 1.896
-(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896
-(cation, the shell becomes).2 F 3.445(restricted. A)108 504 R .945
+-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 456 Q
+F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144
+468 S .659(it for each speci\214ed child process and return its termina\
+tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process)
+3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 480 R
+-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G
+.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)
+-5.008 E F2(id)144.01 492 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G
+.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521
+(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521
+(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 504 Q F1
+<ad6e>3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1
+(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557
+(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556
+(If the)5.556 F F1<ad66>3.056 E F0 .586
+(option is supplied, and job control is enabled,)144 516 R F1(wait)3.086
+E F0(forces)3.086 E F2(id)3.086 E F0 .587
+(to terminate before returning its sta-)3.086 F .756
+(tus, instead of returning when it changes status.)144 528 R(If)5.756 E
+F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755
+(xistent process or job, the)-.15 F .365(return status is 127.)144 540 R
+.365(Otherwise, the return status is the e)5.365 F .365
+(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 552
+Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 568.8 Q F0(If)
+108 580.8 Q F1(bash)4.397 E F0 1.897(is started with the name)4.397 F F1
+(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1<ad72>4.397
+E F0 1.896(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896
+(cation, the shell becomes).2 F 3.445(restricted. A)108 592.8 R .945
 (restricted shell is used to set up an en)3.445 F .946
 (vironment more controlled than the standard shell.)-.4 F(It)5.946 E
-(beha)108 516 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1(bash)
-2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
-(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 532.8 Q
-(changing directories with)144 532.8 Q F1(cd)2.5 E F0<83>108 549.6 Q
-(setting or unsetting the v)144 549.6 Q(alues of)-.25 E F3(SHELL)2.5 E
+(beha)108 604.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1
+(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
+(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 621.6 Q
+(changing directories with)144 621.6 Q F1(cd)2.5 E F0<83>108 638.4 Q
+(setting or unsetting the v)144 638.4 Q(alues of)-.25 E F3(SHELL)2.5 E
 F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or)
-2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 566.4 Q
-(specifying command names containing)144 566.4 Q F1(/)2.5 E F0<83>108
-583.2 Q(specifying a \214lename containing a)144 583.2 Q F1(/)2.5 E F0
+2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 655.2 Q
+(specifying command names containing)144 655.2 Q F1(/)2.5 E F0<83>108
+672 Q(specifying a \214lename containing a)144 672 Q F1(/)2.5 E F0
 (as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G
-(iltin command).2 E<83>108 600 Q .45
-(specifying a \214lename containing a slash as an ar)144 600 R .449
+(iltin command).2 E<83>108 688.8 Q .45
+(specifying a \214lename containing a slash as an ar)144 688.8 R .449
 (gument to the)-.18 F F1<ad70>2.949 E F0 .449(option to the)2.949 F F1
-(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 612 Q<83>
-108 628.8 Q(importing function de\214nitions from the shell en)144 628.8
-Q(vironment at startup)-.4 E<83>108 645.6 Q(parsing the v)144 645.6 Q
-(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E
-(vironment at startup)-.4 E<83>108 662.4 Q(redirecting output using the\
- >, >|, <>, >&, &>, and >> redirection operators)144 662.4 Q<83>108
-679.2 Q(using the)144 679.2 Q F1(exec)2.5 E F0 -.2(bu)2.5 G
-(iltin command to replace the shell with another command).2 E<83>108 696
-Q(adding or deleting b)144 696 Q(uiltin commands with the)-.2 E F1<ad66>
-2.5 E F0(and)2.5 E F1<ad64>2.5 E F0(options to the)2.5 E F1(enable)2.5 E
-F0 -.2(bu)2.5 G(iltin command).2 E<83>108 712.8 Q(using the)144 712.8 Q
-F1(enable)2.5 E F0 -.2(bu)2.5 G
-(iltin command to enable disabled shell b).2 E(uiltins)-.2 E
-(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(76)192.055 E 0 Cg EP
-%%Page: 77 77
+(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 700.8 Q
+<83>108 717.6 Q(importing function de\214nitions from the shell en)144
+717.6 Q(vironment at startup)-.4 E(GNU Bash 5.0)72 768 Q
+(2018 December 7)139.295 E(79)188.455 E 0 Cg EP
+%%Page: 80 80
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
 (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q
-(specifying the)144 84 Q/F1 10/Times-Bold@0 SF<ad70>2.5 E F0
-(option to the)2.5 E F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E
-<83>108 100.8 Q(turning of)144 100.8 Q 2.5(fr)-.25 G
-(estricted mode with)-2.5 E F1(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5
-E(estricted)-.18 E F0(.)A(These restrictions are enforced after an)108
-117.6 Q 2.5(ys)-.15 G(tartup \214les are read.)-2.5 E 1.566
-(When a command that is found to be a shell script is e)108 134.4 R -.15
-(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567
-(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1
-(rbash)108 146.4 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H
-(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G
-(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 163.2 Q/F4
-10/Times-Italic@0 SF(Bash Refer)108 175.2 Q(ence Manual)-.37 E F0 2.5
-(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4
-(The Gnu Readline Libr)108 187.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 199.2 Q
+(parsing the v)144 84 Q(alue of)-.25 E/F1 9/Times-Bold@0 SF(SHELLOPTS)
+2.5 E F0(from the shell en)2.25 E(vironment at startup)-.4 E<83>108
+100.8 Q(redirecting output using the >, >|, <>, >&, &>, and >> redirect\
+ion operators)144 100.8 Q<83>108 117.6 Q(using the)144 117.6 Q/F2 10
+/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G
+(iltin command to replace the shell with another command).2 E<83>108
+134.4 Q(adding or deleting b)144 134.4 Q(uiltin commands with the)-.2 E
+F2<ad66>2.5 E F0(and)2.5 E F2<ad64>2.5 E F0(options to the)2.5 E F2
+(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 151.2 Q
+(using the)144 151.2 Q F2(enable)2.5 E F0 -.2(bu)2.5 G
+(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 168
+Q(specifying the)144 168 Q F2<ad70>2.5 E F0(option to the)2.5 E F2
+(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 184.8 Q
+(turning of)144 184.8 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2
+(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A
+(These restrictions are enforced after an)108 201.6 Q 2.5(ys)-.15 G
+(tartup \214les are read.)-2.5 E 1.566
+(When a command that is found to be a shell script is e)108 218.4 R -.15
+(xe)-.15 G 1.567(cuted \(see).15 F F1 1.567(COMMAND EXECUTION)4.067 F F0
+(abo)3.817 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 230.4 Q F0(turns of)
+2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15
+E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E/F3 10.95
+/Times-Bold@0 SF(SEE ALSO)72 247.2 Q/F4 10/Times-Italic@0 SF(Bash Refer)
+108 259.2 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu Readline Libr)108 271.2 Q
 (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
-F4 -.8(Po)108 211.2 S(rtable Oper).8 E
+F4(The Gnu History Libr)108 283.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F4 -.8(Po)108 295.2 S(rtable Oper).8 E
 (ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities)
--.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 223.2 Q
-(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 235.2 Q
+-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 307.2 Q
+(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 319.2 Q
 (.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh)
-108 247.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A
-F4(emacs)108 259.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108
-271.2 S(adline).37 E F0(\(3\))A F3(FILES)72 288 Q F4(/bin/bash)109.666
-300 Q F0(The)144 312 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4
-(/etc/pr)109.666 324 Q(o\214le)-.45 E F0
-(The systemwide initialization \214le, e)144 336 Q -.15(xe)-.15 G
-(cuted for login shells).15 E F4(~/.bash_pr)109.666 348 Q(o\214le)-.45 E
-F0(The personal initialization \214le, e)144 360 Q -.15(xe)-.15 G
-(cuted for login shells).15 E F4(~/.bashr)109.666 372 Q(c)-.37 E F0
-(The indi)144 384 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
-(-shell startup \214le).15 E F4(~/.bash_lo)109.666 396 Q(gout)-.1 E F0
-(The indi)144 408 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe)
+108 331.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A
+F4(emacs)108 343.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108
+355.2 S(adline).37 E F0(\(3\))A F3(FILES)72 372 Q F4(/bin/bash)109.666
+384 Q F0(The)144 396 Q F2(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4
+(/etc/pr)109.666 408 Q(o\214le)-.45 E F0
+(The systemwide initialization \214le, e)144 420 Q -.15(xe)-.15 G
+(cuted for login shells).15 E F4(~/.bash_pr)109.666 432 Q(o\214le)-.45 E
+F0(The personal initialization \214le, e)144 444 Q -.15(xe)-.15 G
+(cuted for login shells).15 E F4(~/.bashr)109.666 456 Q(c)-.37 E F0
+(The indi)144 468 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
+(-shell startup \214le).15 E F4(~/.bash_lo)109.666 480 Q(gout)-.1 E F0
+(The indi)144 492 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe)
 -.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666
-420 Q(c)-.37 E F0(Indi)144 432 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline)
-.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 448.8 S(THORS).548 E
-F0(Brian F)108 460.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15
-E(bfox@gnu.or)108 472.8 Q(g)-.18 E(Chet Rame)108 489.6 Q 1.3 -.65(y, C)
+504 Q(c)-.37 E F0(Indi)144 516 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline)
+.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 532.8 S(THORS).548 E
+F0(Brian F)108 544.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15
+E(bfox@gnu.or)108 556.8 Q(g)-.18 E(Chet Rame)108 573.6 Q 1.3 -.65(y, C)
 -.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)
--.25 G(rsity).15 E(chet.rame)108 501.6 Q(y@case.edu)-.15 E F3 -.11(BU)72
-518.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568
-(If you \214nd a b)108 530.4 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568
+-.25 G(rsity).15 E(chet.rame)108 585.6 Q(y@case.edu)-.15 E F3 -.11(BU)72
+602.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568
+(If you \214nd a b)108 614.4 R .568(ug in)-.2 F F2(bash,)3.068 E F0 .568
 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F
 3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .567(ug, and)-.2
-F 5.625(that it appears in the latest v)108 542.4 R 5.625(ersion of)-.15
-F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626
+F 5.625(that it appears in the latest v)108 626.4 R 5.625(ersion of)-.15
+F F2(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626
 (ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626
-(ilable from).25 F F4(ftp://ftp.gnu.or)108 554.4 Q(g/pub/gnu/bash/)-.37
-E F0(.)A .411(Once you ha)108 571.2 R .711 -.15(ve d)-.2 H .411
+(ilable from).25 F F4(ftp://ftp.gnu.or)108 638.4 Q(g/pub/gnu/bash/)-.37
+E F0(.)A .411(Once you ha)108 655.2 R .711 -.15(ve d)-.2 H .411
 (etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the)
 -.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41
-(ug report.)-.2 F(If)5.41 E .594(you ha)108 583.2 R .894 -.15(ve a \214)
+(ug report.)-.2 F(If)5.41 E .594(you ha)108 667.2 R .894 -.15(ve a \214)
 -.2 H .595(x, you are encouraged to mail that as well!).15 F .595
 (Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F
-(be mailed to)108 595.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0
-(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug)
--.2 E F0(.)A(ALL b)108 612 Q(ug reports should include:)-.2 E(The v)108
-628.8 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 640.8 Q
-(are and operating system)-.1 E(The compiler used to compile)108 652.8 Q
-2.5(Ad)108 664.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E
-2.5(As)108 676.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G
-(rcises the b).15 E(ug)-.2 E F4(bashb)108.27 693.6 Q(ug)-.2 E F0
-(inserts the \214rst three items automatically into the template it pro)
-2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108
-710.4 Q(ug reports concerning this manual page should be directed to)-.2
-E F4 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.)
-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(77)192.055 E 0 Cg
-EP
-%%Page: 78 78
+(be mailed to)108 679.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0
+(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2(gnu.bash.b)2.5 E(ug)
+-.2 E F0(.)A(ALL b)108 696 Q(ug reports should include:)-.2 E
+(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(80)188.455 E 0 Cg EP
+%%Page: 81 81
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
-/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
-(There are some subtle dif)108 112.8 R 1.869(ferences between)-.25 F/F2
-10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869
-(ersions of)-.15 F F2(sh)4.368 E F0 4.368(,m)C 1.868
-(ostly because of the)-4.368 F/F3 9/Times-Bold@0 SF(POSIX)108 124.8 Q F0
-(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 141.6 Q
-(Shell b)108 158.4 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The v)108 84 Q
+(ersion number of)-.15 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0(The hardw)
+108 96 Q(are and operating system)-.1 E(The compiler used to compile)108
+108 Q 2.5(Ad)108 120 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)
+-.2 E 2.5(As)108 132 S(hort script or `recipe' which e)-2.5 E -.15(xe)
+-.15 G(rcises the b).15 E(ug)-.2 E/F2 10/Times-Italic@0 SF(bashb)108.27
+148.8 Q(ug)-.2 E F0
+(inserts the \214rst three items automatically into the template it pro)
+2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108
+165.6 Q(ug reports concerning this manual page should be directed to)-.2
+E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.)
+.25 E/F3 10.95/Times-Bold@0 SF -.11(BU)72 182.4 S(GS).11 E F0(It')108
+194.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
+(There are some subtle dif)108 211.2 R 1.869(ferences between)-.25 F F1
+(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F
+F1(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9
+/Times-Bold@0 SF(POSIX)108 223.2 Q F0(speci\214cation.)2.25 E
+(Aliases are confusing in some uses.)108 240 Q(Shell b)108 256.8 Q
 (uiltin commands and functions are not stoppable/restartable.)-.2 E
 1.315(Compound commands and command sequences of the form `a ; b ; c' a\
-re not handled gracefully when)108 175.2 R .39
-(process suspension is attempted.)108 187.2 R .389
+re not handled gracefully when)108 273.6 R .39
+(process suspension is attempted.)108 285.6 R .389
 (When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15
 G .389(cutes the ne).15 F .389(xt com-)-.15 F .192
-(mand in the sequence.)108 199.2 R .192(It suf)5.192 F .192(\214ces to \
+(mand in the sequence.)108 297.6 R .192(It suf)5.192 F .192(\214ces to \
 place the sequence of commands between parentheses to force it into a)
--.25 F(subshell, which may be stopped as a unit.)108 211.2 Q(Array v)108
-228 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
-(There may be only one acti)108 244.8 Q .3 -.15(ve c)-.25 H
-(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895
-E(78)192.055 E 0 Cg EP
+-.25 F(subshell, which may be stopped as a unit.)108 309.6 Q(Array v)108
+326.4 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
+(There may be only one acti)108 343.2 Q .3 -.15(ve c)-.25 H
+(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295
+E(81)188.455 E 0 Cg EP
 %%Trailer
 end
 %%EOF
index 6b4fc4912415f4c866b9d7998ae0703af0765ed9..ece4544e7eae18a0e9687c0856c65c70bf1573bf 100644 (file)
Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ
index 8c2eabf069c349d57470a128fbf9d85c7b83bf5b..c913de67bc6ee687a4111357a442b61c83ece33b 100644 (file)
@@ -1,13 +1,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!-- This text is a brief description of the features that are present in
-the Bash shell (version 4.4, 7 September 2016).
+the Bash shell (version 5.0, 7 December 2018).
 
-This is Edition 4.4, last updated 7 September 2016,
+This is Edition 5.0, last updated 7 December 2018,
 of The GNU Bash Reference Manual,
-for Bash, Version 4.4.
+for Bash, Version 5.0.
 
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2018 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -15,8 +15,9 @@ 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". -->
-<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
 <head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>Bash Reference Manual</title>
 
 <meta name="description" content="Bash Reference Manual">
@@ -24,7 +25,6 @@ A copy of the license is included in the section entitled
 <meta name="resource-type" content="document">
 <meta name="distribution" content="global">
 <meta name="Generator" content="makeinfo">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <link href="#Top" rel="start" title="Top">
 <link href="#Indexes" rel="index" title="Indexes">
 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
@@ -284,12 +284,12 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
 <h1 class="top">Bash Features</h1>
 
 <p>This text is a brief description of the features that are present in
-the Bash shell (version 4.4, 7 September 2016).
+the Bash shell (version 5.0, 7 December 2018).
 The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
 </p>
-<p>This is Edition 4.4, last updated 7 September 2016,
+<p>This is Edition 5.0, last updated 7 December 2018,
 of <cite>The GNU Bash Reference Manual</cite>,
-for <code>Bash</code>, Version 4.4.
+for <code>Bash</code>, Version 5.0.
 </p>
 <p>Bash contains features that appear in other popular shells, and some
 features that only appear in Bash.  Some of the shells that Bash has
@@ -861,7 +861,7 @@ present, are decoded as follows:
 </p></dd>
 <dt><code>\<var>nnn</var></code></dt>
 <dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
-(one to three digits)
+(one to three octal digits)
 </p></dd>
 <dt><code>\x<var>HH</var></code></dt>
 <dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
@@ -1051,8 +1051,13 @@ the time information.
 <p>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists</a>), the
 shell waits for all commands in the pipeline to complete.
 </p>
-<p>Each command in a pipeline is executed in its own subshell
-(see <a href="#Command-Execution-Environment">Command Execution Environment</a>).  The exit
+<p>Each command in a pipeline is executed in its own subshell, which is a
+separate process (see <a href="#Command-Execution-Environment">Command Execution Environment</a>).
+If the <code>lastpipe</code> option is enabled using the <code>shopt</code> builtin
+(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
+the last element of a pipeline may be run by the shell process.
+</p>
+<p>The exit
 status of a pipeline is the exit status of the last command in the
 pipeline, unless the <code>pipefail</code> option is enabled
 (see <a href="#The-Set-Builtin">The Set Builtin</a>).
@@ -1089,7 +1094,8 @@ to delimit commands, equivalent to a semicolon.
 </p>
 <p>If a command is terminated by the control operator &lsquo;<samp>&amp;</samp>&rsquo;,
 the shell executes the command asynchronously in a subshell.
-This is known as executing the command in the <var>background</var>.
+This is known as executing the command in the <var>background</var>,
+and these are referred to as <var>asynchronous</var> commands.
 The shell does not wait for the command to finish, and the return
 status is 0 (true).
 When job control is not active (see <a href="#Job-Control">Job Control</a>),
@@ -1111,7 +1117,7 @@ associativity.
 </pre></div>
 
 <p><var>command2</var> is executed if, and only if, <var>command1</var>
-returns an exit status of zero.
+returns an exit status of zero (success).
 </p>
 <p>An <small>OR</small> list has the form
 </p><div class="example">
@@ -1144,7 +1150,7 @@ Next: <a href="#Coprocesses" accesskey="n" rel="next">Coprocesses</a>, Previous:
 </td></tr>
 </table>
 
-<p>Compound commands are the shell programming constructs.
+<p>Compound commands are the shell programming language constructs.
 Each construct begins with a reserved word or control operator and is
 terminated by a corresponding reserved word or operator.
 Any redirections (see <a href="#Redirections">Redirections</a>) associated with a compound command
@@ -1211,13 +1217,15 @@ in <var>consequent-commands</var>, or zero if none was executed.
 <pre class="example">for <var>name</var> [ [in [<var>words</var> &hellip;] ] ; ] do <var>commands</var>; done
 </pre></div>
 
-<p>Expand <var>words</var>, and execute <var>commands</var> once for each member
+<p>Expand <var>words</var> (see <a href="#Shell-Expansions">Shell Expansions</a>), and execute <var>commands</var>
+once for each member
 in the resultant list, with <var>name</var> bound to the current member.
 If &lsquo;<samp>in <var>words</var></samp>&rsquo; is not present, the <code>for</code> command
 executes the <var>commands</var> once for each positional parameter that is
 set, as if &lsquo;<samp>in &quot;$@&quot;</samp>&rsquo; had been specified
 (see <a href="#Special-Parameters">Special Parameters</a>).
-The return status is the exit status of the last command that executes.
+</p>
+<p>The return status is the exit status of the last command that executes.
 If there are no items in the expansion of <var>words</var>, no commands are
 executed, and the return status is zero.
 </p>
@@ -1290,11 +1298,15 @@ zero if no condition tested true.
 <p>The syntax of the <code>case</code> command is:
 </p>
 <div class="example">
-<pre class="example">case <var>word</var> in [ [(] <var>pattern</var> [| <var>pattern</var>]&hellip;) <var>command-list</var> ;;]&hellip; esac
+<pre class="example">case <var>word</var> in
+    [ [(] <var>pattern</var> [| <var>pattern</var>]&hellip;) <var>command-list</var> ;;]&hellip;
+esac
 </pre></div>
 
 <p><code>case</code> will selectively execute the <var>command-list</var> corresponding to
 the first <var>pattern</var> that matches <var>word</var>.
+The match is performed according
+to the rules described below in <a href="#Pattern-Matching">Pattern Matching</a>.
 If the <code>nocasematch</code> shell option
 (see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
 is enabled, the match is performed without regard to the case
@@ -1306,7 +1318,9 @@ as a <var>clause</var>.
 </p>
 <p>Each clause must be terminated with &lsquo;<samp>;;</samp>&rsquo;, &lsquo;<samp>;&amp;</samp>&rsquo;, or &lsquo;<samp>;;&amp;</samp>&rsquo;.
 The <var>word</var> undergoes tilde expansion, parameter expansion, command
-substitution, arithmetic expansion, and quote removal before matching is
+substitution, arithmetic expansion, and quote removal
+(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>)
+before matching is
 attempted.  Each <var>pattern</var> undergoes tilde expansion, parameter
 expansion, command substitution, and arithmetic expansion.
 </p>
@@ -1432,14 +1446,15 @@ If the <code>nocasematch</code> shell option
 is enabled, the match is performed without regard to the case
 of alphabetic characters.
 The return value is 0 if the string matches (&lsquo;<samp>==</samp>&rsquo;) or does not
-match (&lsquo;<samp>!=</samp>&rsquo;)the pattern, and 1 otherwise.
+match (&lsquo;<samp>!=</samp>&rsquo;) the pattern, and 1 otherwise.
 Any part of the pattern may be quoted to force the quoted portion
 to be matched as a string.
 </p>
 <p>An additional binary operator, &lsquo;<samp>=~</samp>&rsquo;, is available, with the same
 precedence as &lsquo;<samp>==</samp>&rsquo; and &lsquo;<samp>!=</samp>&rsquo;.
 When it is used, the string to the right of the operator is considered
-an extended regular expression and matched accordingly (as in <i>regex</i>3)).
+a <small>POSIX</small> extended regular expression and matched accordingly
+(as in <i>regex</i>3)).
 The return value is 0 if the string matches
 the pattern, and 1 otherwise.
 If the regular expression is syntactically incorrect, the conditional
@@ -1467,7 +1482,7 @@ if there is a sequence of characters in the value consisting of
 any number, including zero, of 
 space characters, zero or one instances of &lsquo;<samp>a</samp>&rsquo;, then a &lsquo;<samp>b</samp>&rsquo;:
 </p><div class="example">
-<pre class="example">[[ $line =~ [[:space:]]*(a)?b ]]
+<pre class="example">[[ $line =~ [[:space:]]*?(a)b ]]
 </pre></div>
 
 <p>That means values like &lsquo;<samp>aab</samp>&rsquo; and &lsquo;<samp>  aaaaaab</samp>&rsquo; will match, as
@@ -1482,7 +1497,7 @@ expressions while paying attention to the shell&rsquo;s quote removal.
 Using a shell variable to store the pattern decreases these problems.
 For example, the following is equivalent to the above:
 </p><div class="example">
-<pre class="example">pattern='[[:space:]]*(a)?b'
+<pre class="example">pattern='[[:space:]]*?(a)b'
 [[ $line =~ $pattern ]]
 </pre></div>
 
@@ -1633,7 +1648,8 @@ This pipe is established before any redirections specified by the
 command (see <a href="#Redirections">Redirections</a>).
 The file descriptors can be utilized as arguments to shell commands
 and redirections using standard word expansions.
-The file descriptors are not available in subshells.
+Other than those created to execute command and process substitutions,
+the file descriptors are not available in subshells.
 </p>
 <p>The process ID of the shell spawned to execute the coprocess is
 available as the value of the variable <code>NAME</code>_PID.
@@ -1710,7 +1726,8 @@ from a file (in this case, filenames listed one per line):
 
 <p>with a more compact syntax reminiscent of lambdas:
 </p><div class="example">
-<pre class="example">cat list | parallel &quot;do-something1 {} config-{} ; do-something2 &lt; {}&quot; | process-output
+<pre class="example">cat list | parallel &quot;do-something1 {} config-{} ; do-something2 &lt; {}&quot; |
+           process-output
 </pre></div>
 
 <p>Parallel provides a built-in mechanism to remove filename extensions, which
@@ -1732,19 +1749,27 @@ written as
 <p>If a command generates output, you may want to preserve the input order in
 the output.  For instance, the following command
 </p><div class="example">
-<pre class="example">{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
+<pre class="example">{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+} | parallel traceroute
 </pre></div>
 <p>will display as output the traceroute invocation that finishes first.
 Adding the <samp>-k</samp> option 
 </p><div class="example">
-<pre class="example">{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
+<pre class="example">{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+} | parallel -k traceroute
 </pre></div>
 <p>will ensure that the output of <code>traceroute foss.org.my</code> is displayed first.
 </p>
 <p>Finally, Parallel can be used to run a sequence of shell commands in parallel,
 similar to &lsquo;<samp>cat file | bash</samp>&rsquo;.
 It is not uncommon to take a list of filenames, create a series of shell
-commands to operate on them, and feed that list of commnds to a shell.
+commands to operate on them, and feed that list of commands to a shell.
 Parallel can speed this up.  Assuming that <samp>file</samp> contains a list of
 shell commands, one per line,
 </p>
@@ -1865,7 +1890,66 @@ before the <code>return</code>.
 </p>
 <p>Variables local to the function may be declared with the
 <code>local</code> builtin.  These variables are visible only to
-the function and the commands it invokes.
+the function and the commands it invokes.  This is particularly
+important when a shell function calls other functions.
+</p>
+<p>Local variables &quot;shadow&quot; variables with the same name declared at
+previous scopes.  For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+</p>
+<p>The shell uses <var>dynamic scoping</var> to control a variable&rsquo;s visibility
+within functions.
+With dynamic scoping, visible variables and their values
+are a result of the sequence of function calls that caused execution
+to reach the current function.
+The value of a variable that a function sees depends
+on its value within its caller, if any, whether that caller is
+the &quot;global&quot; scope or another shell function.
+This is also the value that a local variable
+declaration &quot;shadows&quot;, and the value that is restored when the function
+returns.
+</p>
+<p>For example, if a variable <var>var</var> is declared as local in function
+<var>func1</var>, and <var>func1</var> calls another function <var>func2</var>,
+references to <var>var</var> made from within <var>func2</var> will resolve to the
+local variable <var>var</var> from <var>func1</var>, shadowing any global variable
+named <var>var</var>.
+</p>
+<p>The following script demonstrates this behavior.
+When executed, the script displays
+</p>
+<div class="example">
+<pre class="example">In func2, var = func1 local
+</pre></div>
+
+<div class="example">
+<pre class="example">func1()
+{
+    local var='func1 local'
+    func2
+}
+
+func2()
+{
+    echo &quot;In func2, var = $var&quot;
+}
+
+var=global
+func1
+</pre></div>
+
+<p>The <code>unset</code> builtin also acts using the same dynamic scope: if a  
+variable is local to the current scope, <code>unset</code> will unset it;         
+otherwise the unset will refer to the variable found in any calling scope 
+as described above.
+If a variable at the current local scope is unset, it will remain so
+until it is reset in that scope or until the function returns.
+Once the function returns, any instance of the variable at a previous
+scope will become visible.
+If the unset acts on a variable at a previous scope, any instance of a   
+variable with that name that had been shadowed will become visible.
 </p>
 <p>Function names and definitions may be listed with the
 <samp>-f</samp> option to the <code>declare</code> (<code>typeset</code>)
@@ -1878,10 +1962,6 @@ Functions may be exported so that subshells
 automatically have them defined with the
 <samp>-f</samp> option to the <code>export</code> builtin
 (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-Note that shell functions and variables with the same name may result
-in multiple identically-named entries in the environment passed to the
-shell&rsquo;s children.
-Care should be taken in cases where this may cause a problem.
 </p>
 <p>Functions may be recursive.
 The <code>FUNCNEST</code> variable may be used to limit the depth of the
@@ -2059,8 +2139,16 @@ separators.
 <a name="index-_0040"></a>
 </dt>
 <dd><a name="index-_0024_0040"></a>
-<p>($@) Expands to the positional parameters, starting from one.  When the
-expansion occurs within double quotes, each parameter expands to a
+<p>($@) Expands to the positional parameters, starting from one.
+In contexts where word splitting is performed, this expands each
+positional parameter to a separate word; if not within double
+quotes, these words are subject to word splitting.
+In contexts where word splitting is not performed,
+this expands to a single word
+with each positional parameter separated by a space.
+When the
+expansion occurs within double quotes, and word splitting is performed,
+each parameter expands to a
 separate word.  That is, <code>&quot;$@&quot;</code> is equivalent to
 <code>&quot;$1&quot; &quot;$2&quot; &hellip;</code>.
 If the double-quoted expansion occurs within a word, the expansion of
@@ -2135,8 +2223,8 @@ to the filename used to invoke Bash, as given by argument zero.
 At shell startup, set to the absolute pathname used to invoke the
 shell or shell script being executed as passed in the environment
 or argument list.
-Subsequently, expands to the last argument to the previous command,
-after expansion.   
+Subsequently, expands to the last argument to the previous simple
+command executed in the foreground, after expansion. 
 Also set to the full pathname used to invoke each command executed
 and placed in the environment exported to that command.
 When checking mail, this parameter holds the name of the mail file.
@@ -2208,10 +2296,11 @@ original word are removed unless they have been quoted themselves
 (<var>quote removal</var>).
 </p>
 <p>Only brace expansion, word splitting, and filename expansion
-can change the number of words of the expansion; other expansions
+can increase 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>&quot;$@&quot;</code> (see <a href="#Special-Parameters">Special Parameters</a>) and <code>&quot;${<var>name</var>[@]}&quot;</code>
+<code>&quot;$@&quot;</code> and <code>$*</code> (see <a href="#Special-Parameters">Special Parameters</a>), and
+<code>&quot;${<var>name</var>[@]}&quot;</code> and <code>${<var>name</var>[*]}</code>
 (see <a href="#Arrays">Arrays</a>).
 </p>
 <p>After all expansions, <code>quote removal</code> (see <a href="#Quote-Removal">Quote Removal</a>)
@@ -2271,8 +2360,6 @@ 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 &lsquo;<samp>${</samp>&rsquo;
-is not considered eligible for brace expansion.
 </p>
 <p>A correctly-formed brace expansion must contain unquoted opening
 and closing braces, and at least one unquoted comma or a valid
@@ -2282,7 +2369,8 @@ Any incorrectly formed brace expansion is left unchanged.
 <p>A { or &lsquo;<samp>,</samp>&rsquo; may be quoted with a backslash to prevent its
 being considered part of a brace expression.
 To avoid conflicts with parameter expansion, the string &lsquo;<samp>${</samp>&rsquo;
-is not considered eligible for brace expansion.
+is not considered eligible for brace expansion,
+and inhibits brace expansion until the closing &lsquo;<samp>}</samp>&rsquo;..
 </p>
 <p>This construct is typically used as shorthand when the common
 prefix of the strings to be generated is longer than in the
@@ -2379,6 +2467,12 @@ and the shell assigns the expanded value.
 </p></dd>
 </dl>
 
+<p>Bash also performs tilde expansion on words satisfying the conditions of
+variable assignments (see <a href="#Shell-Parameters">Shell Parameters</a>)
+when they appear as arguments to simple commands.
+Bash does not do this, except for the <var>declaration</var> commands listed
+above, when in <small>POSIX</small> mode.
+</p>
 <hr>
 <a name="Shell-Parameter-Expansion"></a>
 <div class="header">
@@ -2413,12 +2507,14 @@ interpreted as part of its name.
 </p>
 <p>If the first character of <var>parameter</var> is an exclamation point (!),
 and <var>parameter</var> is not a <var>nameref</var>,
-it introduces a level of variable indirection.
-Bash uses the value of the variable formed from the rest of
-<var>parameter</var> 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</var> itself.
+it introduces a level of indirection.
+Bash uses the value formed by expanding the rest of
+<var>parameter</var> as the new <var>parameter</var>; this is then
+expanded and that value is used in the rest of the expansion, rather
+than the expansion of the original <var>parameter</var>.
 This is known as <code>indirect expansion</code>.
+The value is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
 If <var>parameter</var> is a nameref, this expands to the name of the
 variable referenced by <var>parameter</var> instead of performing the
 complete indirect expansion.
@@ -2647,8 +2743,8 @@ array, and an index of -1 references the last element.
 <dt><code>${<var>parameter</var>#<var>word</var>}</code></dt>
 <dt><code>${<var>parameter</var>##<var>word</var>}</code></dt>
 <dd><p>The <var>word</var>
-is expanded to produce a pattern just as in filename
-expansion (see <a href="#Filename-Expansion">Filename Expansion</a>).  If the pattern matches
+is expanded to produce a pattern and matched according to the rules
+described below (see <a href="#Pattern-Matching">Pattern Matching</a>).  If the pattern matches
 the beginning of the expanded value of <var>parameter</var>,
 then the result of the expansion is the expanded value of <var>parameter</var>
 with the shortest matching pattern (the &lsquo;<samp>#</samp>&rsquo; case) or the
@@ -2664,8 +2760,9 @@ array in turn, and the expansion is the resultant list.
 </dd>
 <dt><code>${<var>parameter</var>%<var>word</var>}</code></dt>
 <dt><code>${<var>parameter</var>%%<var>word</var>}</code></dt>
-<dd><p>The <var>word</var> is expanded to produce a pattern just as in
-filename expansion.
+<dd><p>The <var>word</var>
+is expanded to produce a pattern and matched according to the rules
+described below (see <a href="#Pattern-Matching">Pattern Matching</a>).  If the pattern matches
 If the pattern matches a trailing portion of the expanded value of
 <var>parameter</var>, then the result of the expansion is the value of
 <var>parameter</var> with the shortest matching pattern (the &lsquo;<samp>%</samp>&rsquo; case)
@@ -2685,6 +2782,8 @@ array in turn, and the expansion is the resultant list.
 filename expansion.
 <var>Parameter</var> is expanded and the longest match of <var>pattern</var>
 against its value is replaced with <var>string</var>.
+The match is performed according to the rules described below
+(see <a href="#Pattern-Matching">Pattern Matching</a>).
 If <var>pattern</var> begins with &lsquo;<samp>/</samp>&rsquo;, all matches of <var>pattern</var> are
 replaced with <var>string</var>.  Normally only the first match is replaced.
 If <var>pattern</var> begins with &lsquo;<samp>#</samp>&rsquo;, it must match at the beginning
@@ -2745,7 +2844,7 @@ format that can be reused as input.
 </p></dd>
 <dt><code>E</code></dt>
 <dd><p>The expansion is a string that is the value of <var>parameter</var> with backslash
-escape sequences expanded as with the <code>$'&hellip;'</code> quoting mechansim.
+escape sequences expanded as with the <code>$'&hellip;'</code> quoting mechanism.
 </p></dd>
 <dt><code>P</code></dt>
 <dd><p>The expansion is a string that is the result of expanding the value of
@@ -2974,18 +3073,23 @@ without regard to the case of alphabetic characters.
 <p>When a pattern is used for filename expansion, the character &lsquo;<samp>.</samp>&rsquo;
 at the start of a filename or immediately following a slash
 must be matched explicitly, unless the shell option <code>dotglob</code> is set.
-When matching a filename, the slash character must always be
-matched explicitly.
+The filenames &lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; must always be matched explicitly,
+even if <code>dotglob</code> is set.
 In other cases, the &lsquo;<samp>.</samp>&rsquo; character is not treated specially.
 </p>
+<p>When matching a filename, the slash character must always be
+matched explicitly by a slash in the pattern, but in other matching
+contexts it can be matched by a special pattern character as described
+below (see <a href="#Pattern-Matching">Pattern Matching</a>).
+</p>
 <p>See the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>,
 for a description of the <code>nocaseglob</code>, <code>nullglob</code>,
 <code>failglob</code>, and <code>dotglob</code> options.
 </p>
 <p>The <code>GLOBIGNORE</code>
-shell variable may be used to restrict the set of filenames matching a
+shell variable may be used to restrict the set of file names matching a
 pattern.  If <code>GLOBIGNORE</code>
-is set, each matching filename that also matches one of the patterns in
+is set, each matching file name that also matches one of the patterns in
 <code>GLOBIGNORE</code> is removed from the list of matches.
 If the <code>nocaseglob</code> option is set, the matching against the patterns in
 <code>GLOBIGNORE</code> is performed without regard to case.
@@ -3110,6 +3214,12 @@ sub-patterns:
 </p></dd>
 </dl>
 
+<p>Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.
+Using separate matches against shorter strings, or using arrays of
+strings instead of a single long string, may be faster.
+</p>
 <hr>
 <a name="Quote-Removal"></a>
 <div class="header">
@@ -3154,6 +3264,9 @@ In this case, for each redirection operator except
 than 10 and assign it to {<var>varname</var>}.  If &gt;&amp;- or &lt;&amp;- is preceded
 by {<var>varname</var>}, the value of <var>varname</var> defines the file
 descriptor to close.
+If {<var>varname</var>} is supplied, the redirection persists beyond
+the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 </p>
 <p>In the following descriptions, if the file descriptor number is
 omitted, and the first character of the redirection operator is
@@ -3358,7 +3471,7 @@ natural fashion.
 </pre></div>
 
 <p>The <var>word</var> undergoes
-brace expansion, tilde expansion, parameter and variable expansion,
+tilde expansion, parameter and variable expansion,
 command substitution, arithmetic expansion, and quote removal.
 Pathname expansion and word splitting are not performed.
 The result is supplied as a single string,
@@ -3534,9 +3647,10 @@ A full search of the directories in <code>$PATH</code>
 is performed only if the command is not found in the hash table.
 If the search is unsuccessful, the shell searches for a defined shell
 function named <code>command_not_found_handle</code>.
-If that function exists, it is invoked with the original command and
+If that function exists, it is invoked in a separate execution environment
+with the original command and
 the original command&rsquo;s arguments as its arguments, and the function&rsquo;s
-exit status becomes the exit status of thshell.
+exit status becomes the exit status of that subshell.
 If that function is not defined, the shell prints an error
 message and returns an exit status of 127.
 
@@ -3894,7 +4008,7 @@ facilities (see <a href="#Programmable-Completion-Builtins">Programmable Complet
 <p>Unless otherwise noted, each builtin command documented as accepting
 options preceded by &lsquo;<samp>-</samp>&rsquo; accepts &lsquo;<samp>--</samp>&rsquo;
 to signify the end of the options.
-The <code>:</code>, <code>true</code>, <code>false</code>, and <code>test</code>
+The <code>:</code>, <code>true</code>, <code>false</code>, and <code>test</code>/<code>[</code>
 builtins do not accept options and do not treat &lsquo;<samp>--</samp>&rsquo; specially.
 The <code>exit</code>, <code>logout</code>, <code>return</code>,
 <code>break</code>, <code>continue</code>, <code>let</code>,
@@ -4061,6 +4175,7 @@ cannot be executed for some reason, a non-interactive shell exits,
 unless the <code>execfail</code> shell option
 is enabled.  In that case, it returns failure.
 An interactive shell returns failure if the file cannot be executed.
+A subshell exits unconditionally if <code>exec</code> fails.
 If no <var>command</var> 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.
@@ -4173,7 +4288,7 @@ The <samp>-d</samp> option causes the shell to forget the remembered location
 of each <var>name</var>.
 If the <samp>-t</samp> option is supplied, the full pathname to which each
 <var>name</var> corresponds is printed.  If multiple <var>name</var> arguments are
-supplied with <samp>-t</samp> the <var>name</var> is printed before the hashed
+supplied with <samp>-t</samp>, the <var>name</var> is printed before the hashed
 full pathname.
 The <samp>-l</samp> option causes output to be displayed in a format
 that may be reused as input.
@@ -4238,7 +4353,7 @@ If <var>n</var> is not supplied, the return value is the exit status of the
 last command executed in the function.
 If <code>return</code> is executed by a trap handler, the last command used to
 determine the status is the last command executed before the trap handler.
-if <code>return</code> is executed during a <code>DEBUG</code> trap, the last command
+If <code>return</code> is executed during a <code>DEBUG</code> trap, the last command
 used to determine the status is the last command executed by the trap
 handler before <code>return</code> was invoked.
 <code>return</code> may also be used to terminate execution of a script
@@ -4326,7 +4441,7 @@ expressions using a set of rules based on the number of arguments.
 </p>
 </dd>
 <dt>1 argument</dt>
-<dd><p>The expression is true if and only if the argument is not null.
+<dd><p>The expression is true if, and only if, the argument is not null.
 </p>
 </dd>
 <dt>2 arguments</dt>
@@ -4341,19 +4456,22 @@ false.
 </dd>
 <dt>3 arguments</dt>
 <dd><p>The following conditions are applied in the order listed.
-If the second argument is one of the binary conditional
+</p>
+<ol>
+<li> If the second argument is one of the binary conditional
 operators (see <a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>), the
 result of the expression is the result of the binary test using the
 first and third arguments as operands.
 The &lsquo;<samp>-a</samp>&rsquo; and &lsquo;<samp>-o</samp>&rsquo; operators are considered binary operators
 when there are three arguments.
-If the first argument is &lsquo;<samp>!</samp>&rsquo;, the value is the negation of
+</li><li> If the first argument is &lsquo;<samp>!</samp>&rsquo;, the value is the negation of
 the two-argument test using the second and third arguments.
-If the first argument is exactly &lsquo;<samp>(</samp>&rsquo; and the third argument is
+</li><li> If the first argument is exactly &lsquo;<samp>(</samp>&rsquo; and the third argument is
 exactly &lsquo;<samp>)</samp>&rsquo;, the result is the one-argument test of the second
 argument.
-Otherwise, the expression is false.
-</p>
+</li><li> Otherwise, the expression is false.
+</li></ol>
+
 </dd>
 <dt>4 arguments</dt>
 <dd><p>If the first argument is &lsquo;<samp>!</samp>&rsquo;, the result is the negation of
@@ -4787,8 +4905,8 @@ the environment.
 </dl>
 
 <p>Using &lsquo;<samp>+</samp>&rsquo; instead of &lsquo;<samp>-</samp>&rsquo; turns off the attribute instead,
-with the exceptions that &lsquo;<samp>+a</samp>&rsquo;
-may not be used to destroy an array variable and &lsquo;<samp>+r</samp>&rsquo; will not
+with the exceptions that &lsquo;<samp>+a</samp>&rsquo; and &lsquo;<samp>+A</samp>&rsquo;
+may not be used to destroy array variables and &lsquo;<samp>+r</samp>&rsquo; will not
 remove the readonly attribute.
 When used in a function, <code>declare</code> makes each <var>name</var> local,
 as with the <code>local</code> command, unless the <samp>-g</samp> option is used.
@@ -4990,8 +5108,8 @@ parent.
 <dt><code>mapfile</code></dt>
 <dd><a name="index-mapfile"></a>
 <div class="example">
-<pre class="example">mapfile [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>] [-t] [-u <var>fd</var>]
-    [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
+<pre class="example">mapfile [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
+    [-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
 </pre></div>
 
 <p>Read lines from the standard input into the indexed array variable <var>array</var>,
@@ -5004,6 +5122,8 @@ Options, if supplied, have the following meanings:
 <dt><code>-d</code></dt>
 <dd><p>The first character of <var>delim</var> is used to terminate each input line,
 rather than newline.
+If <var>delim</var> is the empty string, <code>mapfile</code> will terminate a line
+when it reads a NUL character.
 </p></dd>
 <dt><code>-n</code></dt>
 <dd><p>Copy at most <var>count</var> lines.  If <var>count</var> is 0, all lines are copied.
@@ -5022,7 +5142,7 @@ The default index is 0.
 <dd><p>Read lines from file descriptor <var>fd</var> instead of the standard input.
 </p></dd>
 <dt><code>-C</code></dt>
-<dd><p>Evaluate <var>callback</var> each time <var>quantum</var>P lines are read.
+<dd><p>Evaluate <var>callback</var> each time <var>quantum</var> lines are read.
 The <samp>-c</samp> option specifies <var>quantum</var>.
 </p></dd>
 <dt><code>-c</code></dt>
@@ -5142,12 +5262,14 @@ Other <var>name</var> arguments are ignored.
 <dt><code>-d <var>delim</var></code></dt>
 <dd><p>The first character of <var>delim</var> is used to terminate the input line,
 rather than newline.
+If <var>delim</var> is the empty string, <code>read</code> will terminate a line
+when it reads a NUL character.
 </p>
 </dd>
 <dt><code>-e</code></dt>
 <dd><p>Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to obtain the line.
 Readline uses the current (or default, if line editing was not previously
-active) editing settings.
+active) editing settings, but uses Readline&rsquo;s default filename completion.
 </p>
 </dd>
 <dt><code>-i <var>text</var></code></dt>
@@ -5182,7 +5304,7 @@ The prompt is displayed only if input is coming from a terminal.
 <dt><code>-r</code></dt>
 <dd><p>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
+In particular, a backslash-newline pair may not then be used as a line
 continuation.
 </p>
 </dd>
@@ -5217,8 +5339,8 @@ The exit status is greater than 128 if the timeout is exceeded.
 <dt><code>readarray</code></dt>
 <dd><a name="index-readarray"></a>
 <div class="example">
-<pre class="example">readarray [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>] [-t] [-u <var>fd</var>]
-    [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
+<pre class="example">readarray [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
+    [-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
 </pre></div>
 
 <p>Read lines from the standard input into the indexed array variable <var>array</var>,
@@ -5816,7 +5938,8 @@ The settings can be either those listed below, or, if the
 <samp>-o</samp> option is used, those available with the <samp>-o</samp>
 option to the <code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
 With no options, or with the <samp>-p</samp> option, a list of all settable
-options is displayed, with an indication of whether or not each is set.
+options is displayed, with an indication of whether or not each is set;
+if <var>optnames</var> are supplied, the output is restricted to those options.
 The <samp>-p</samp> option causes output to be displayed in a form that
 may be reused as input.
 Other options have the following meanings:
@@ -5859,6 +5982,13 @@ option.
 </p>
 <p>The list of <code>shopt</code> options is:
 </p><dl compact="compact">
+<dt><code>assoc_expand_once</code></dt>
+<dd><p>If set, the shell suppresses multiple evaluation of associative array
+subscripts during arithmetic expression evaluation, while executing
+builtins that can perform variable assignments,
+and while executing builtins that perform array dereferencing.
+</p>
+</dd>
 <dt><code>autocd</code></dt>
 <dd><p>If set, a command name that is the name of a directory is executed as if
 it were the argument to the <code>cd</code> command.
@@ -5896,9 +6026,10 @@ The shell always postpones exiting if any jobs are stopped.
 </p>
 </dd>
 <dt><code>checkwinsize</code></dt>
-<dd><p>If set, Bash checks the window size after each command
- and, if necessary, updates the values of    
+<dd><p>If set, Bash checks the window size after each external (non-builtin)
+command and, if necessary, updates the values of    
 <code>LINES</code> and <code>COLUMNS</code>.
+This option is enabled by default.
 </p>
 </dd>
 <dt><code>cmdhist</code></dt>
@@ -5906,6 +6037,8 @@ The shell always postpones exiting if any jobs are stopped.
 attempts to save all lines of a multiple-line
 command in the same history entry.  This allows
 easy re-editing of multi-line commands.
+This option is enabled by default, but only has an effect if command
+history is enabled (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
 </p>
 </dd>
 <dt><code>compat31</code></dt>
@@ -5966,6 +6099,12 @@ loop state when a shell function is executed (this allows <code>break</code> or
 <code>continue</code> in a shell function to affect loops in the caller&rsquo;s context).
 </p>
 </dd>
+<dt><code>compat44</code></dt>
+<dd><p>If set, Bash
+saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
+used, regardless of whether or not extended debugging mode is enabled.
+</p>
+</dd>
 <dt><code>complete_fullquote</code></dt>
 <dd><p>If set, Bash
 quotes all shell metacharacters in filenames and directory names when
@@ -6001,6 +6140,8 @@ if the directory name initially supplied does not exist.
 <dt><code>dotglob</code></dt>
 <dd><p>If set, Bash includes filenames beginning with a &lsquo;.&rsquo; in
 the results of filename expansion.
+The filenames &lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; must always be matched explicitly,
+even if <code>dotglob</code> is set.
 </p>
 </dd>
 <dt><code>execfail</code></dt>
@@ -6148,6 +6289,19 @@ option is enabled, multi-line commands are saved to the history with
 embedded newlines rather than using semicolon separators where possible.
 </p>
 </dd>
+<dt><code>localvar_inherit</code></dt>
+<dd><p>If set, local variables inherit the value and attributes of a variable of
+the same name that exists at a previous scope before any new value is
+assigned.  The <var>nameref</var> attribute is not inherited.
+</p>
+</dd>
+<dt><code>localvar_unset</code></dt>
+<dd><p>If set, calling <code>unset</code> on local variables in previous function scopes
+marks them so subsequent lookups find them unset until that function
+returns. This is identical to the behavior of unsetting local variables
+at the current function scope.
+</p>
+</dd>
 <dt><code>login_shell</code></dt>
 <dd><p>The shell sets this option if it is started as a login shell
 (see <a href="#Invoking-Bash">Invoking Bash</a>).
@@ -6190,6 +6344,13 @@ files to expand to a null string, rather than themselves.
 This option is enabled by default.
 </p>
 </dd>
+<dt><code>progcomp_alias</code></dt>
+<dd><p>If set, and programmable completion is enabled, Bash treats a command
+name that doesn&rsquo;t have any completions as a possible alias and attempts
+alias expansion. If it has an alias, Bash attempts programmable
+completion using the command word resulting from the expanded alias.
+</p>
+</dd>
 <dt><code>promptvars</code></dt>
 <dd><p>If set, prompt strings undergo
 parameter expansion, command substitution, arithmetic
@@ -6378,6 +6539,8 @@ sequences that are expanded before <code>PS1</code> is displayed.
 <a name="index-PS2"></a>
 </dt>
 <dd><p>The secondary prompt string.  The default value is &lsquo;<samp>&gt; </samp>&rsquo;.
+<code>PS2</code> is expanded in the same way as <code>PS1</code> before being
+displayed.
 </p>
 </dd>
 </dl>
@@ -6424,6 +6587,10 @@ reading any startup files.  This variable is readonly.
 <dd><p>Expands to the process ID of the current Bash process.
 This differs from <code>$$</code> under certain circumstances, such as subshells
 that do not require Bash to be re-initialized.
+Assignments to <code>BASHPID</code> have no effect.
+If <code>BASHPID</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
 </p>
 </dd>
 <dt><code>BASH_ALIASES</code>
@@ -6453,6 +6620,9 @@ The shell sets <code>BASH_ARGC</code> only when in extended debugging mode
 (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>
 for a description of the <code>extdebug</code> option to the <code>shopt</code>
 builtin).
+Setting <code>extdebug</code> after the shell has started to execute a script,
+or referencing this variable when <code>extdebug</code> is not set,
+may result in inconsistent values.
 </p>
 </dd>
 <dt><code>BASH_ARGV</code>
@@ -6467,6 +6637,22 @@ The shell sets <code>BASH_ARGV</code> only when in extended debugging mode
 (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>
 for a description of the <code>extdebug</code> option to the <code>shopt</code>
 builtin).
+Setting <code>extdebug</code> after the shell has started to execute a script,
+or referencing this variable when <code>extdebug</code> is not set,
+may result in inconsistent values.
+</p>
+</dd>
+<dt><code>BASH_ARGV0</code>
+<a name="index-BASH_005fARGV0"></a>
+</dt>
+<dd><p>When referenced, this variable expands to the name of the shell or shell
+script (identical to <code>$0</code>; See <a href="#Special-Parameters">Special Parameters</a>,
+for the description of special parameter 0).
+Assignment to <code>BASH_ARGV0</code>
+causes the value assigned to also be assigned to <code>$0</code>.
+If <code>BASH_ARGV0</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
 </p>
 </dd>
 <dt><code>BASH_CMDS</code>
@@ -6770,6 +6956,29 @@ Emacs shell buffer and disables line editing.
 <small>POSIX</small> Mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
 </p>
 </dd>
+<dt><code>EPOCHREALTIME</code>
+<a name="index-EPOCHREALTIME"></a>
+</dt>
+<dd><p>Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch as a floating point value with micro-second granularity
+(see the documentation for the C library function <var>time</var> for the
+definition of Epoch).
+Assignments to <code>EPOCHREALTIME</code> are ignored.
+If <code>EPOCHREALTIME</code> is unset, it loses its special properties, even if
+it is subsequently reset.
+</p>
+</dd>
+<dt><code>EPOCHSECONDS</code>
+<a name="index-EPOCHSECONDS"></a>
+</dt>
+<dd><p>Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see the documentation for the C library function
+<var>time</var> for the definition of Epoch).
+Assignments to <code>EPOCHSECONDS</code> are ignored.
+If <code>EPOCHSECONDS</code> is unset, it loses its special properties, even if
+it is subsequently reset.
+</p>
+</dd>
 <dt><code>EUID</code>
 <a name="index-EUID"></a>
 </dt>
@@ -6847,9 +7056,9 @@ will cause the current command to abort.
 <dt><code>GLOBIGNORE</code>
 <a name="index-GLOBIGNORE"></a>
 </dt>
-<dd><p>A colon-separated list of patterns defining the set of filenames to
+<dd><p>A colon-separated list of patterns defining the set of file names to
 be ignored by filename expansion.
-If a filename matched by a filename expansion pattern also matches one
+If a file name matched by a filename expansion pattern also matches one
 of the patterns in <code>GLOBIGNORE</code>, it is removed from the list
 of matches.
 The pattern matching honors the setting of the <code>extglob</code> shell
@@ -7019,7 +7228,7 @@ as the sole input.  If set, the value denotes the number
 of consecutive <code>EOF</code> 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.
+have a numeric value, or has no value, then the default is 10.
 If the variable does not exist, then <code>EOF</code> signifies the end of 
 input to the shell.  This is only in effect for interactive shells.
 </p>
@@ -7031,6 +7240,14 @@ input to the shell.  This is only in effect for interactive shells.
 of <samp>~/.inputrc</samp>.
 </p>
 </dd>
+<dt><code>INSIDE_EMACS</code>
+<a name="index-INSIDE_005fEMACS"></a>
+</dt>
+<dd><p>If Bash finds this variable in the environment when the shell
+starts, it assumes that the shell is running in an Emacs shell buffer
+and may disable line editing depending on the value of <code>TERM</code>.
+</p>
+</dd>
 <dt><code>LANG</code>
 <a name="index-LANG"></a>
 </dt>
@@ -7163,7 +7380,9 @@ as if the command
 </p><div class="example">
 <pre class="example"><code>set -o posix</code>
 </pre></div>
-<p>had been executed.  
+<p>had been executed.
+When the shell enters <small>POSIX</small> mode, it sets this variable if it was
+not already set.
 </p>
 </dd>
 <dt><code>PPID</code>
@@ -7208,10 +7427,11 @@ and before the command is executed.
 <dt><code>PS4</code>
 <a name="index-PS4"></a>
 </dt>
-<dd><p>The value is the prompt printed before the command line is echoed
-when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-The first character of <code>PS4</code> is replicated multiple times, as
-necessary, to indicate multiple levels of indirection.
+<dd><p>The value of this parameter is expanded like <var>PS1</var>
+and the expanded value is the prompt printed before the command line
+is echoed when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
+The first character of the expanded value is replicated multiple times,
+as necessary, to indicate multiple levels of indirection.
 The default is &lsquo;<samp>+ </samp>&rsquo;.
 </p>
 </dd>
@@ -7421,9 +7641,12 @@ Next: <a href="#Bash-Startup-Files" accesskey="n" rel="next">Bash Startup Files<
 <h3 class="section">6.1 Invoking Bash</h3>
 
 <div class="example">
-<pre class="example">bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] [<var>argument</var> &hellip;]
-bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] -c <var>string</var> [<var>argument</var> &hellip;]
-bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] [<var>argument</var> &hellip;]
+<pre class="example">bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>]
+    [-O <var>shopt_option</var>] [<var>argument</var> &hellip;]
+bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>]
+    [-O <var>shopt_option</var>] -c <var>string</var> [<var>argument</var> &hellip;]
+bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o <var>option</var>]
+    [-O <var>shopt_option</var>] [<var>argument</var> &hellip;]
 </pre></div>
 
 <p>All of the single-character options used with the <code>set</code> builtin
@@ -7544,7 +7767,8 @@ of a login shell.
 <dd><p>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.
+when invoking an interactive shell or when reading input
+through a pipe.
 </p>
 </dd>
 <dt><code>-D</code></dt>
@@ -7823,7 +8047,10 @@ signals <code>SIGTTIN</code>, <code>SIGTTOU</code>, and <code>SIGTSTP</code>.
 </li><li> Bash expands and displays <code>PS1</code> before reading the first line
 of a command, and expands and displays <code>PS2</code> before reading the
 second and subsequent lines of a multi-line command.
-Bash displays <code>PS0</code> after it reads a command but before executing it.
+Bash expands and displays <code>PS0</code> after it reads a command but before
+executing it.
+See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
+string escape sequences.
 
 </li><li> Bash executes the value of the <code>PROMPT_COMMAND</code> variable as a command
 before printing the primary prompt, <code>$PS1</code>
@@ -7848,7 +8075,7 @@ when a shell with history enabled exits.
 (see <a href="#Signals">Signals</a>).
 
 </li><li> In the absence of any traps, <code>SIGINT</code> is caught and handled
-((see <a href="#Signals">Signals</a>).
+(see <a href="#Signals">Signals</a>).
 <code>SIGINT</code> will interrupt some shell builtins.
 
 </li><li> An interactive login shell sends a <code>SIGHUP</code> to all jobs on exit
@@ -7901,9 +8128,13 @@ Next: <a href="#Shell-Arithmetic" accesskey="n" rel="next">Shell Arithmetic</a>,
 <a name="index-expressions_002c-conditional"></a>
 
 <p>Conditional expressions are used by the <code>[[</code> compound command
-and the <code>test</code> and <code>[</code> builtin commands.
+and the <code>test</code> and <code>[</code> builtin commands. The <code>test</code>
+and <code>[</code> commands determine their behavior based on the number
+of arguments; see the descriptions of those commands for any other
+command-specific actions.
 </p>
-<p>Expressions may be unary or binary.
+<p>Expressions may be unary or binary,
+and are formed from the following primaries.
 Unary expressions are often used to examine the status of a file.
 There are string operators and numeric comparison operators as well.
 Bash handles several filenames specially when they are used in
@@ -8076,6 +8307,8 @@ is equal to, not equal to, less than, less than or equal to,
 greater than, or greater than or equal to <var>arg2</var>,
 respectively.  <var>Arg1</var> and <var>arg2</var>
 may be positive or negative integers.
+When used with the <code>[[</code> command, <var>Arg1</var> and <var>Arg2</var>
+are evaluated as arithmetic expressions (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
 </p></dd>
 </dl>
 
@@ -8255,10 +8488,11 @@ unless the <code>expand_aliases</code> shell option is set using
 <code>shopt</code> (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
 </p>
 <p>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
+somewhat confusing. Bash
+always reads at least one complete line of input,
+and all lines that make up a compound command,
+before executing any of the commands on that line or the compound command.
+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.
@@ -8396,12 +8630,16 @@ special parameters &lsquo;<samp>@</samp>&rsquo; and &lsquo;<samp>*</samp>&rsquo;
 <code>unset <var>name</var>[<var>subscript</var>]</code>
 destroys the array element at index <var>subscript</var>.
 Negative subscripts to indexed arrays are interpreted as described above.
-Care must be taken to avoid unwanted side effects caused by filename
-expansion.
+Unsetting the last element of an array variable does not unset the variable.
 <code>unset <var>name</var></code>, where <var>name</var> is an array, removes the
 entire array.  A subscript of &lsquo;<samp>*</samp>&rsquo; or &lsquo;<samp>@</samp>&rsquo; also removes the
 entire array.
 </p>
+<p>When using a variable name with a subscript as an argument to a command,
+such as with <code>unset</code>, without using the word expansion syntax
+described above, the argument is subject to the shell&rsquo;s filename expansion.
+If filename expansion is not desired, the argument should be quoted.
+</p>
 <p>The <code>declare</code>, <code>local</code>, and <code>readonly</code>
 builtins each accept a <samp>-a</samp> option to specify an indexed
 array and a <samp>-A</samp> option to specify an associative array.
@@ -8569,7 +8807,8 @@ has a non-null value, then the
 value is executed just as if it had been typed on the command line.
 </p>
 <p>In addition, the following table describes the special characters which
-can appear in the prompt variables <code>PS1</code> to <code>PS4</code>:
+can appear in the prompt variables <code>PS0</code>, <code>PS1</code>, <code>PS2</code>, and
+<code>PS4</code>:
 </p>
 <dl compact="compact">
 <dt><code>\a</code></dt>
@@ -8670,7 +8909,7 @@ shell session.
 <p>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</code> shell option (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<code>promptvars</code> shell option (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
 </p>
 <hr>
 <a name="The-Restricted-Shell"></a>
@@ -8740,7 +8979,9 @@ startup files.
 <p>The following list is what&rsquo;s changed when &lsquo;<small>POSIX</small> mode&rsquo; is in effect:
 </p>
 <ol>
-<li> When a command in the hash table no longer exists, Bash will re-search
+<li> Bash ensures that the <code>POSIXLY_CORRECT</code> variable is set.
+
+</li><li> When a command in the hash table no longer exists, Bash will re-search
 <code>$PATH</code> to find the new location.  This is also available with
 &lsquo;<samp>shopt -s checkhash</samp>&rsquo;.
 
@@ -8897,6 +9138,11 @@ the <samp>-e</samp> option from the parent shell.
 When the <code>inherit_errexit</code> option is not enabled,
 Bash clears the <samp>-e</samp> option in such subshells.
 
+</li><li> Enabling <small>POSIX</small> mode has the effect of setting the
+<code>shift_verbose</code> option, so numeric arguments to <code>shift</code>
+that exceed the number of positional parameters will result in an
+error message.
+
 </li><li> When the <code>alias</code> builtin displays alias definitions, it does not
 display them with a leading &lsquo;<samp>alias </samp>&rsquo; unless the <samp>-p</samp> option
 is supplied.
@@ -8913,6 +9159,12 @@ constructed from <code>$PWD</code> and the directory name supplied as an argumen
 does not refer to an existing directory, <code>cd</code> will fail instead of
 falling back to <var>physical</var> mode.
 
+</li><li> When the <code>cd</code> builtin cannot change a directory because the
+length of the pathname 
+constructed from <code>$PWD</code> and the directory name supplied as an argument
+exceeds <var>PATH_MAX</var> when all symbolic links are expanded, <code>cd</code> will
+fail instead of attempting to use only the supplied directory name.
+
 </li><li> The <code>pwd</code> builtin verifies that the value it prints is the same as the
 current directory, even if it is not asked to check the file system with the
 <samp>-P</samp> option.
@@ -9102,6 +9354,11 @@ The <code>jobs</code> command may then be used to inspect their status.
 If a second attempt to exit is made without an intervening command,
 Bash does not print another warning, and any stopped jobs are terminated.
 </p>
+<p>When the shell is waiting for a job or process using the <code>wait</code>
+builtin, and job control is enabled, <code>wait</code> will return when the
+job changes state. The <samp>-f</samp> option will force <code>wait</code> to wait
+until the job or process terminates before returning.
+</p>
 <hr>
 <a name="Job-Control-Builtins"></a>
 <div class="header">
@@ -9212,7 +9469,7 @@ or non-zero if an error occurs or an invalid option is encountered.
 <dt><code>wait</code></dt>
 <dd><a name="index-wait"></a>
 <div class="example">
-<pre class="example">wait [-n] [<var>jobspec</var> or <var>pid</var> &hellip;]
+<pre class="example">wait [-fn] [<var>jobspec</var> or <var>pid</var> &hellip;]
 </pre></div>
 
 <p>Wait until the child process specified by each process <small>ID</small> <var>pid</var>
@@ -9223,6 +9480,9 @@ If no arguments are given, all currently active child processes are
 waited for, and the return status is zero.
 If the <samp>-n</samp> option is supplied, <code>wait</code> waits for any job to
 terminate and returns its exit status.
+If the <samp>-f</samp> option is supplied, and job control is enabled,
+<code>wait</code> forces each <var>pid</var> or <var>jobspec</var> to terminate before
+returning its status, intead of returning when it changes status.
 If neither <var>jobspec</var> nor <var>pid</var> specifies an active child process
 of the shell, the return status is 127.
 </p>
@@ -9823,6 +10083,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
 <p>If set to &lsquo;<samp>on</samp>&rsquo;, and <var>completion-ignore-case</var> is enabled, Readline
 treats hyphens (&lsquo;<samp>-</samp>&rsquo;) and underscores (&lsquo;<samp>_</samp>&rsquo;) as equivalent when
 performing case-insensitive filename matching and completion.
+The default value is &lsquo;<samp>off</samp>&rsquo;.
 </p>
 </dd>
 <dt><code>completion-prefix-display-length</code></dt>
@@ -9879,7 +10140,8 @@ set to either &lsquo;<samp>emacs</samp>&rsquo; or &lsquo;<samp>vi</samp>&rsquo;.
 </dd>
 <dt><code>emacs-mode-string</code></dt>
 <dd><a name="index-emacs_002dmode_002dstring"></a>
-<p>This string is displayed immediately before the last line of the primary
+<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when emacs editing mode is active.  The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
 backslash escape sequences is available.
@@ -9969,7 +10231,7 @@ If this variable has not been given a value, the characters <tt class="key">ESC<
 <dt><code>keymap</code></dt>
 <dd><a name="index-keymap"></a>
 <p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
-Acceptable <code>keymap</code> names are
+Built-in <code>keymap</code> names are
 <code>emacs</code>,
 <code>emacs-standard</code>,
 <code>emacs-meta</code>,
@@ -9980,6 +10242,7 @@ Acceptable <code>keymap</code> names are
 <code>vi-insert</code>.
 <code>vi</code> is equivalent to <code>vi-command</code> (<code>vi-move</code> is also a
 synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
+Applications may add additional names.
 The default value is <code>emacs</code>.
 The value of the <code>editing-mode</code> variable also affects the
 default keymap.
@@ -10092,9 +10355,9 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
 </dd>
 <dt><code>show-mode-in-prompt</code></dt>
 <dd><a name="index-show_002dmode_002din_002dprompt"></a>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, add a character to the beginning of the prompt
+<p>If set to &lsquo;<samp>on</samp>&rsquo;, add a string to the beginning of the prompt
 indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., <var>emacs-mode-string</var>).
 The default value is &lsquo;<samp>off</samp>&rsquo;.
 </p>
 </dd>
@@ -10115,7 +10378,8 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
 </dd>
 <dt><code>vi-cmd-mode-string</code></dt>
 <dd><a name="index-vi_002dcmd_002dmode_002dstring"></a>
-<p>This string is displayed immediately before the last line of the primary
+<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in command mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -10128,7 +10392,8 @@ The default is &lsquo;<samp>(cmd)</samp>&rsquo;.
 </dd>
 <dt><code>vi-ins-mode-string</code></dt>
 <dd><a name="index-vi_002dins_002dmode_002dstring"></a>
-<p>This string is displayed immediately before the last line of the primary
+<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in insertion mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -10181,7 +10446,7 @@ Meta-Rubout: backward-kill-word
 Control-o: &quot;&gt; output&quot;
 </pre></div>
 
-<p>In the above example, <kbd>C-u</kbd> is bound to the function
+<p>In the example above, <kbd>C-u</kbd> is bound to the function
 <code>universal-argument</code>,
 <kbd>M-DEL</kbd> is bound to the function <code>backward-kill-word</code>, and
 <kbd>C-o</kbd> is bound to run the macro
@@ -10321,8 +10586,9 @@ of tests.  There are four parser directives used.
 <dt><code>$if</code></dt>
 <dd><p>The <code>$if</code> 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.
+Readline.  The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
 </p>
 <dl compact="compact">
 <dt><code>mode</code></dt>
@@ -10343,6 +10609,28 @@ the portion of the terminal name before the first &lsquo;<samp>-</samp>&rsquo;.
 allows <code>sun</code> to match both <code>sun</code> and <code>sun-cmd</code>,
 for instance.
 </p>
+</dd>
+<dt><code>version</code></dt>
+<dd><p>The <code>version</code> test may be used to perform comparisons against
+specific Readline versions.
+The <code>version</code> expands to the current Readline version.
+The set of comparison operators includes
+&lsquo;<samp>=</samp>&rsquo; (and &lsquo;<samp>==</samp>&rsquo;), &lsquo;<samp>!=</samp>&rsquo;, &lsquo;<samp>&lt;=</samp>&rsquo;, &lsquo;<samp>&gt;=</samp>&rsquo;, &lsquo;<samp>&lt;</samp>&rsquo;,
+and &lsquo;<samp>&gt;</samp>&rsquo;.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., &lsquo;<samp>7.1</samp>&rsquo;). If the minor version is omitted, it
+is assumed to be &lsquo;<samp>0</samp>&rsquo;.
+The operator may be separated from the string <code>version</code> and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+</p><div class="example">
+<pre class="example">$if version &gt;= 7.0
+set show-mode-in-prompt on
+$endif
+</pre></div>
+
 </dd>
 <dt><code>application</code></dt>
 <dd><p>The <var>application</var> construct is used to include
@@ -10358,6 +10646,24 @@ key sequence that quotes the current or previous word in Bash:
 &quot;\C-xq&quot;: &quot;\eb\&quot;\ef\&quot;&quot;
 $endif
 </pre></div>
+
+</dd>
+<dt><code>variable</code></dt>
+<dd><p>The <var>variable</var> construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are &lsquo;<samp>=</samp>&rsquo;, &lsquo;<samp>==</samp>&rsquo;, and &lsquo;<samp>!=</samp>&rsquo;.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <var>on</var> and <var>off</var>.
+The following example is equivalent to the <code>mode=emacs</code> test described
+above:
+</p><div class="example">
+<pre class="example">$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+</pre></div>
 </dd>
 </dl>
 
@@ -10597,6 +10903,25 @@ Words are delimited by non-quoted shell metacharacters.
 Words are delimited by non-quoted shell metacharacters.
 </p>
 </dd>
+<dt><code>previous-screen-line ()</code>
+<a name="index-previous_002dscreen_002dline-_0028_0029"></a>
+</dt>
+<dd><p>Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+</p>
+</dd>
+<dt><code>next-screen-line ()</code>
+<a name="index-next_002dscreen_002dline-_0028_0029"></a>
+</dt>
+<dd><p>Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+</p>
+</dd>
 <dt><code>clear-screen (C-l)</code>
 <a name="index-clear_002dscreen-_0028C_002dl_0029"></a>
 </dt>
@@ -10710,8 +11035,8 @@ This is a non-incremental search.
 By default, this command is unbound.
 </p>
 </dd>
-<dt><code>history-substr-search-forward ()</code>
-<a name="index-history_002dsubstr_002dsearch_002dforward-_0028_0029"></a>
+<dt><code>history-substring-search-forward ()</code>
+<a name="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></a>
 </dt>
 <dd><p>Search forward through the history for the string of characters
 between the start of the current line and the point.
@@ -10720,8 +11045,8 @@ This is a non-incremental search.
 By default, this command is unbound.
 </p>
 </dd>
-<dt><code>history-substr-search-backward ()</code>
-<a name="index-history_002dsubstr_002dsearch_002dbackward-_0028_0029"></a>
+<dt><code>history-substring-search-backward ()</code>
+<a name="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></a>
 </dt>
 <dd><p>Search backward through the history for the string of characters
 between the start of the current line and the point.
@@ -10824,7 +11149,7 @@ how to insert key sequences like <kbd>C-q</kbd>, for example.
 sequence sent by some terminals, and such a binding is assigned by default.
 It allows Readline to insert the pasted text as a single unit without treating
 each character as if it had been read from the keyboard.  The characters
-are inserted as if each one was bound to <code>self-insert</code>) instead of
+are inserted as if each one was bound to <code>self-insert</code> instead of
 executing any editing commands.
 </p>
 </dd>
@@ -11285,11 +11610,12 @@ ring the terminal&rsquo;s bell (subject to the setting of
 <code>bell-style</code>).
 </p>
 </dd>
-<dt><code>do-uppercase-version (M-a, M-b, M-<var>x</var>, &hellip;)</code>
-<a name="index-do_002duppercase_002dversion-_0028M_002da_002c-M_002db_002c-M_002dx_002c-_2026_0029"></a>
+<dt><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code>
+<a name="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></a>
 </dt>
-<dd><p>If the metafied character <var>x</var> is lowercase, run the command
-that is bound to the corresponding uppercase character.
+<dd><p>If the metafied character <var>x</var> is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if <var>x</var> is already lower case.
 </p>
 </dd>
 <dt><code>prefix-meta (<span class="key">ESC</span>)</code>
@@ -11479,12 +11805,13 @@ word expansions (see <a href="#Shell-Expansions">Shell Expansions</a>).
 <a name="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></a>
 </dt>
 <dd><p>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.
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
 </p>
 </dd>
-<dt><code>edit-and-execute-command (C-xC-e)</code>
-<a name="index-edit_002dand_002dexecute_002dcommand-_0028C_002dxC_002de_0029"></a>
+<dt><code>edit-and-execute-command (C-x C-e)</code>
+<a name="index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"></a>
 </dt>
 <dd><p>Invoke an editor on the current command line, and execute the result as shell
 commands.
@@ -11550,6 +11877,9 @@ If no compspec is found for the full pathname, an attempt is made to
 find a compspec for the portion following the final slash.
 If those searches do not result in a compspec, any compspec defined with
 the <samp>-D</samp> option to <code>complete</code> is used as the default.
+If there is no default compspec, Bash attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion 
 </p>
 <p>Once a compspec has been found, it is used to generate the list of
 matching words.
@@ -11574,7 +11904,9 @@ but the <code>FIGNORE</code> shell variable is used.
 is considered.
 The string is first split using the characters in the <code>IFS</code>
 special variable as delimiters.
-Shell quoting is honored.
+Shell quoting is honored within the string, in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of <code>IFS</code>.
 Each word is then expanded using
 brace expansion, tilde expansion, parameter and variable expansion,
 command substitution, and arithmetic expansion,
@@ -11725,10 +12057,10 @@ matches were generated.
 <dt><code>complete</code></dt>
 <dd><a name="index-complete"></a>
 <div class="example">
-<pre class="example"><code>complete [-abcdefgjksuv] [-o <var>comp-option</var>] [-DE] [-A <var>action</var>] [-G <var>globpat</var>] [-W <var>wordlist</var>]
-[-F <var>function</var>] [-C <var>command</var>] [-X <var>filterpat</var>]
+<pre class="example"><code>complete [-abcdefgjksuv] [-o <var>comp-option</var>] [-DEI] [-A <var>action</var>] [-G <var>globpat</var>]
+[-W <var>wordlist</var>] [-F <var>function</var>] [-C <var>command</var>] [-X <var>filterpat</var>]
 [-P <var>prefix</var>] [-S <var>suffix</var>] <var>name</var> [<var>name</var> &hellip;]</code>
-<code>complete -pr [-DE] [<var>name</var> &hellip;]</code>
+<code>complete -pr [-DEI] [<var>name</var> &hellip;]</code>
 </pre></div>
 
 <p>Specify how arguments to each <var>name</var> should be completed.
@@ -11738,16 +12070,24 @@ reused as input.
 The <samp>-r</samp> option removes a completion specification for
 each <var>name</var>, or, if no <var>name</var>s are supplied, all
 completion specifications.
-The <samp>-D</samp> option indicates that the remaining options and actions should
+The <samp>-D</samp> option indicates that other supplied options and actions should
 apply to the &ldquo;default&rdquo; command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The <samp>-E</samp> option indicates that the remaining options and actions should
+The <samp>-E</samp> option indicates that other supplied options and actions should
 apply to &ldquo;empty&rdquo; command completion; that is, completion attempted on a 
 blank line.
+The <samp>-I</samp> option indicates that other supplied options and actions should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as &lsquo;<samp>;</samp>&rsquo; or &lsquo;<samp>|</samp>&rsquo;, which is usually command
+name completion.
+If multiple options are supplied, the <samp>-D</samp> option takes precedence
+over <samp>-E</samp>, and both take precedence over <samp>-I</samp>.
+If any of <samp>-D</samp>, <samp>-E</samp>, or <samp>-I</samp> are supplied, any other
+<var>name</var> arguments are ignored; these completions only apply to the case
+specified by the option.
 </p>
 <p>The process of applying these completion specifications when word completion
-is attempted is described above (see <a href="#Programmable-Completion">Programmable Completion</a>).  The
-<samp>-D</samp> option takes precedence over <samp>-E</samp>.
+is attempted is described above (see <a href="#Programmable-Completion">Programmable Completion</a>).
 </p>
 <p>Other options, if specified, have the following meanings.
 The arguments to the <samp>-G</samp>, <samp>-W</samp>, and <samp>-X</samp> options
@@ -11779,7 +12119,7 @@ no matches.
 </dd>
 <dt><code>filenames</code></dt>
 <dd><p>Tell Readline that the compspec generates filenames, so it can perform any
-filename-specific processing (like adding a slash to directory names
+filename-specific processing (like adding a slash to directory names,
 quoting special characters, or suppressing trailing spaces).
 This option is intended to be used with shell functions specified
 with <samp>-F</samp>.
@@ -11973,7 +12313,7 @@ an error occurs adding a completion specification.
 <dt><code>compopt</code></dt>
 <dd><a name="index-compopt"></a>
 <div class="example">
-<pre class="example"><code>compopt</code> [-o <var>option</var>] [-DE] [+o <var>option</var>] [<var>name</var>]
+<pre class="example"><code>compopt</code> [-o <var>option</var>] [-DEI] [+o <var>option</var>] [<var>name</var>]
 </pre></div>
 <p>Modify completion options for each <var>name</var> according to the
 <var>option</var>s, or for the currently-executing completion if no <var>name</var>s
@@ -11982,14 +12322,19 @@ If no <var>option</var>s are given, display the completion options for each
 <var>name</var> or the current completion.
 The possible values of <var>option</var> are those valid for the <code>complete</code>
 builtin described above.
-The <samp>-D</samp> option indicates that the remaining options should
+The <samp>-D</samp> option indicates that other supplied options should
 apply to the &ldquo;default&rdquo; command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The <samp>-E</samp> option indicates that the remaining options should
+The <samp>-E</samp> option indicates that other supplied options should
 apply to &ldquo;empty&rdquo; command completion; that is, completion attempted on a 
 blank line.
+The <samp>-I</samp> option indicates that other supplied options should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as &lsquo;<samp>;</samp>&rsquo; or &lsquo;<samp>|</samp>&rsquo;, which is usually command
+name completion.
 </p>
-<p>The <samp>-D</samp> option takes precedence over <samp>-E</samp>.
+<p>If multiple options are supplied, the <samp>-D</samp> option takes precedence
+over <samp>-E</samp>, and both take precedence over <samp>-I</samp>
 </p>
 <p>The return value is true unless an invalid option is supplied, an attempt
 is made to modify the options for a <var>name</var> for which no completion
@@ -12013,7 +12358,7 @@ a shell function and bind it to a particular command using <code>complete -F</co
 </p>
 <p>The following function provides completions for the <code>cd</code> builtin.
 It is a reasonably good example of what shell functions must do when
-used for completion.  This function uses the word passsed as <code>$2</code>
+used for completion.  This function uses the word passed as <code>$2</code>
 to determine the directory name to complete.  You can also use the
 <code>COMP_WORDS</code> array variable; the current word is indexed by the
 <code>COMP_CWORD</code> variable.
@@ -12043,7 +12388,7 @@ _comp_cd()
     local cur _skipdot _cdpath
     local i j k
 
-    # Tilde expansion, with side effect of expanding tilde to full pathname
+    # Tilde expansion, which also expands tilde to full pathname
     case &quot;$2&quot; in
     \~*)    eval cur=&quot;$2&quot; ;;
     *)      cur=$2 ;;
@@ -12220,7 +12565,7 @@ The <code>lithist</code>
 shell option causes the shell to save the command with embedded newlines
 instead of semicolons.
 The <code>shopt</code> builtin is used to set these options.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for a description of <code>shopt</code>.
+See <a href="#The-Shopt-Builtin">The Shopt Builtin</a>, for a description of <code>shopt</code>.
 </p>
 <hr>
 <a name="Bash-History-Builtins"></a>
@@ -12250,8 +12595,8 @@ Both <var>first</var> and
 <var>last</var> may be specified as a string (to locate the most recent
 command beginning with that string) or as a number (an index into the
 history list, where a negative number is used as an offset from the
-current command number).  If <var>last</var> is not specified it is set to
-<var>first</var>.  If <var>first</var> is not specified it is set to the previous
+current command number).  If <var>last</var> is not specified, it is set to
+<var>first</var>.  If <var>first</var> is not specified, it is set to the previous
 command for editing and -16 for listing.  If the <samp>-l</samp> flag is
 given, the commands are listed on standard output.  The <samp>-n</samp> flag
 suppresses the command numbers when listing.  The <samp>-r</samp> flag
@@ -12278,6 +12623,7 @@ and typing &lsquo;<samp>r</samp>&rsquo; re-executes the last command (see <a hre
 <pre class="example">history [<var>n</var>]
 history -c
 history -d <var>offset</var>
+history -d <var>start</var>-<var>end</var>
 history [-anrw] [<var>filename</var>]
 history -ps <var>arg</var>
 </pre></div>
@@ -12301,8 +12647,18 @@ with the other options to replace the history list completely.
 </dd>
 <dt><code>-d <var>offset</var></code></dt>
 <dd><p>Delete the history entry at position <var>offset</var>.
-<var>offset</var> should be specified as it appears when the history is
-displayed.
+If <var>offset</var> is positive, it should be specified as it appears when
+the history is displayed.
+If <var>offset</var> is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of &lsquo;<samp>-1</samp>&rsquo; refers to the current
+<code>history -d</code> command.
+</p>
+</dd>
+<dt><code>-d <var>start</var>-<var>end</var></code></dt>
+<dd><p>Delete the history entries between positions <var>start</var> and <var>end</var>,
+inclusive.  Positive and negative values for <var>start</var> and <var>end</var>
+are interpreted as described above.
 </p>
 </dd>
 <dt><code>-a</code></dt>
@@ -12366,7 +12722,9 @@ arguments to a previous command into the current input line, or
 fix errors in previous commands quickly.
 </p>
 <p>History expansion is performed immediately after a complete line
-is read, before the shell breaks it into words.
+is read, before the shell breaks it into words, and is performed
+on each line individually.  Bash attempts to inform the history
+expansion functions about quoting still in effect from previous lines.
 </p>
 <p>History expansion takes place in two parts.  The first is to determine
 which line from the history list should be used during substitution.
@@ -12379,13 +12737,23 @@ that Bash does, so that several words
 surrounded by quotes are considered one word.
 History expansions are introduced by the appearance of the
 history expansion character, which is &lsquo;<samp>!</samp>&rsquo; by default.
-Only &lsquo;<samp>\</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo; may be used to escape the history expansion
-character, but the history expansion character is
+</p>
+<p>History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+</p>
+<p>When using the shell, only &lsquo;<samp>\</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo; may be used to escape the
+history expansion character, but the history expansion character is
 also treated as quoted if it immediately precedes the closing double quote
 in a double-quoted string. 
 </p>
 <p>Several shell options settable with the <code>shopt</code>
-builtin (see <a href="#Bash-Builtins">Bash Builtins</a>) may be used to tailor
+builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>) may be used to tailor
 the behavior of history expansion.  If the
 <code>histverify</code> shell option is enabled, and Readline
 is being used, history substitutions are not immediately passed to
@@ -12728,11 +13096,27 @@ may remove or edit it.
 <code>configure</code> script understands, type 
 </p>
 <div class="example">
-<pre class="example">bash-2.04$ ./configure --help
+<pre class="example">bash-4.2$ ./configure --help
 </pre></div>
 
 <p>at the Bash prompt in your Bash source directory.
 </p>
+<p>If you want to build Bash in a directory separate from the source
+directory &ndash; to build for multiple architectures, for example &ndash;
+just use the full path to the configure script. The following commands
+will build bash in a directory under <samp>/usr/local/build</samp> from
+the source code in <samp>/usr/local/src/bash-4.4</samp>:
+</p>
+<div class="example">
+<pre class="example">mkdir /usr/local/build/bash-4.4
+cd /usr/local/build/bash-4.4
+bash /usr/local/src/bash-4.4/configure
+make
+</pre></div>
+
+<p>See <a href="#Compiling-For-Multiple-Architectures">Compiling For Multiple Architectures</a> for more information
+about building in a directory separate from the source.
+</p>
 <p>If you need to do unusual things to compile Bash, please
 try to figure out how <code>configure</code> could check whether or not
 to do them, and mail diffs or instructions to
@@ -12794,7 +13178,9 @@ own directory.  To do this, you must use a version of <code>make</code> that
 supports the <code>VPATH</code> variable, such as GNU <code>make</code>.
 <code>cd</code> to the
 directory where you want the object files and executables to go and run
-the <code>configure</code> script from the source directory.  You may need to
+the <code>configure</code> script from the source directory
+(see <a href="#Basic-Installation">Basic Installation</a>).
+You may need to
 supply the <samp>--srcdir=PATH</samp> argument to tell <code>configure</code> where the
 source files are.  <code>configure</code> automatically checks for the
 source code in the directory that <code>configure</code> is in and in &lsquo;..&rsquo;.
@@ -13006,7 +13392,7 @@ compiled and linked, rather than changing run-time features.
 </p>
 <dl compact="compact">
 <dt><code>--enable-largefile</code></dt>
-<dd><p>Enable support for <a href="http://www.sas.com/standards/large_file/x_open.20Mar96.html">large files</a> if the operating system requires special compiler options
+<dd><p>Enable support for <a href="http://www.unix.org/version2/whatsnew/lfs20mar.html">large files</a> 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.
 </p>
@@ -13097,6 +13483,13 @@ This allows pipelines as well as shell builtins and functions to be timed.
 <dd><p>Include support for the bash debugger (distributed separately).
 </p>
 </dd>
+<dt><code>--enable-dev-fd-stat-broken</code></dt>
+<dd><p>If calling <code>stat</code> on /dev/fd/<var>N</var> returns different results than
+calling <code>fstat</code> on file descriptor <var>N</var>, supply this option to
+enable a workaround.
+This has implications for conditional commands that test file attributes.
+</p>
+</dd>
 <dt><code>--enable-direxpand-default</code></dt>
 <dd><p>Cause the <code>direxpand</code> shell option (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
 to be enabled by default when the shell starts.
@@ -13184,7 +13577,7 @@ If Readline is not enabled, this option has no effect.
 </dd>
 <dt><code>--enable-prompt-string-decoding</code></dt>
 <dd><p>Turn on the interpretation of a number of backslash-escaped characters
-in the <code>$PS1</code>, <code>$PS2</code>, <code>$PS3</code>, and <code>$PS4</code> prompt
+in the <code>$PS0</code>, <code>$PS1</code>, <code>$PS2</code>, and <code>$PS4</code> prompt
 strings.  See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
 string escape sequences.
 </p>
@@ -13692,7 +14085,7 @@ Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 </pre></div>
 
-<ol>
+<ol start="0">
 <li> PREAMBLE
 
 <p>The purpose of this License is to make a manual, textbook, or other
@@ -13868,7 +14261,7 @@ 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:
 </p>
-<ol>
+<ol type="A" start="1">
 <li> 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
@@ -14614,6 +15007,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
 <tr><td></td><td valign="top"><a href="#index-BASH_005fALIASES"><code>BASH_ALIASES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-BASH_005fARGC"><code>BASH_ARGC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-BASH_005fARGV"><code>BASH_ARGV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-BASH_005fARGV0"><code>BASH_ARGV0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-BASH_005fCMDS"><code>BASH_CMDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-BASH_005fCOMMAND"><code>BASH_COMMAND</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-BASH_005fCOMPAT"><code>BASH_COMPAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -14666,6 +15060,8 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
 <tr><td></td><td valign="top"><a href="#index-enable_002dbracketed_002dpaste"><code>enable-bracketed-paste</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-enable_002dkeypad"><code>enable-keypad</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-ENV"><code>ENV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-EPOCHREALTIME"><code>EPOCHREALTIME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-EPOCHSECONDS"><code>EPOCHSECONDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-EUID"><code>EUID</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-EXECIGNORE"><code>EXECIGNORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-expand_002dtilde"><code>expand-tilde</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
@@ -14702,6 +15098,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
 <tr><td></td><td valign="top"><a href="#index-IGNOREEOF"><code>IGNOREEOF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-input_002dmeta"><code>input-meta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-INPUTRC"><code>INPUTRC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-INSIDE_005fEMACS"><code>INSIDE_EMACS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-isearch_002dterminators"><code>isearch-terminators</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Variable-Index_vr_letter-K">K</a></th><td></td><td></td></tr>
@@ -14937,7 +15334,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a href="#index-delete_002dhorizontal_002dspace-_0028_0029"><code>delete-horizontal-space ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"><code>display-shell-version (C-x C-v)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-do_002duppercase_002dversion-_0028M_002da_002c-M_002db_002c-M_002dx_002c-_2026_0029"><code>do-uppercase-version (M-a, M-b, M-<var>x</var>, &hellip;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-downcase_002dword-_0028M_002dl_0029"><code>downcase-word (M-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-dump_002dfunctions-_0028_0029"><code>dump-functions ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-dump_002dmacros-_0028_0029"><code>dump-macros ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
@@ -14945,7 +15342,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a href="#index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function-Index_fn_letter-E">E</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-edit_002dand_002dexecute_002dcommand-_0028C_002dxC_002de_0029"><code>edit-and-execute-command (C-xC-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"><code>edit-and-execute-command (C-x C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"><code>end-kbd-macro (C-x ))</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"><code><i>end-of-file</i> (usually C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"><code>end-of-history (M-&gt;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
@@ -14968,8 +15365,8 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a href="#index-history_002dexpand_002dline-_0028M_002d_005e_0029"><code>history-expand-line (M-^)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-history_002dsearch_002dbackward-_0028_0029"><code>history-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-history_002dsearch_002dforward-_0028_0029"><code>history-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsubstr_002dsearch_002dbackward-_0028_0029"><code>history-substr-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsubstr_002dsearch_002dforward-_0028_0029"><code>history-substr-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"><code>history-substring-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"><code>history-substring-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function-Index_fn_letter-I">I</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-insert_002dcomment-_0028M_002d_0023_0029"><code>insert-comment (M-#)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
@@ -14989,6 +15386,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function-Index_fn_letter-N">N</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a href="#index-next_002dhistory-_0028C_002dn_0029"><code>next-history (C-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-next_002dscreen_002dline-_0028_0029"><code>next-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"><code>non-incremental-forward-search-history (M-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"><code>non-incremental-reverse-search-history (M-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
@@ -15005,6 +15403,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a href="#index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"><code>possible-variable-completions (C-x $)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-prefix_002dmeta-_0028ESC_0029"><code>prefix-meta (<span class="key">ESC</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-previous_002dhistory-_0028C_002dp_0029"><code>previous-history (C-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-previous_002dscreen_002dline-_0028_0029"><code>previous-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"><code>print-last-kbd-macro ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Function-Index_fn_letter-Q">Q</a></th><td></td><td></td></tr>
index 28b0610968284b00e301d8df10227083cb3ff354..934c9feb235d96eb86903fa4012f3ae2c2153599 100644 (file)
@@ -1,13 +1,13 @@
-This is bashref.info, produced by makeinfo version 6.1 from
+This is bashref.info, produced by makeinfo version 6.5 from
 bashref.texi.
 
 This text is a brief description of the features that are present in the
-Bash shell (version 4.4, 7 September 2016).
+Bash shell (version 5.0, 7 December 2018).
 
-   This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 4.4.
+   This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.0.
 
-   Copyright (C) 1988-2016 Free Software Foundation, Inc.
+   Copyright (C) 1988-2018 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -27,11 +27,11 @@ Bash Features
 *************
 
 This text is a brief description of the features that are present in the
-Bash shell (version 4.4, 7 September 2016).  The Bash home page is
+Bash shell (version 5.0, 7 December 2018).  The Bash home page is
 <http://www.gnu.org/software/bash/>.
 
-   This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 4.4.
+   This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.0.
 
    Bash contains features that appear in other popular shells, and some
 features that only appear in Bash.  Some of the shells that Bash has
@@ -451,7 +451,7 @@ decoded as follows:
      question mark
 '\NNN'
      the eight-bit character whose value is the octal value NNN (one to
-     three digits)
+     three octal digits)
 '\xHH'
      the eight-bit character whose value is the hexadecimal value HH
      (one or two hex digits)
@@ -586,16 +586,20 @@ information.
    If the pipeline is not executed asynchronously (*note Lists::), the
 shell waits for all commands in the pipeline to complete.
 
-   Each command in a pipeline is executed in its own subshell (*note
-Command Execution Environment::).  The exit status of a pipeline is the
-exit status of the last command in the pipeline, unless the 'pipefail'
-option is enabled (*note The Set Builtin::).  If 'pipefail' is enabled,
-the pipeline's return status is the value of the last (rightmost)
-command to exit with a non-zero status, or zero if all commands exit
-successfully.  If the reserved word '!' precedes the pipeline, the exit
-status is the logical negation of the exit status as described above.
-The shell waits for all commands in the pipeline to terminate before
-returning a value.
+   Each command in a pipeline is executed in its own subshell, which is
+a separate process (*note Command Execution Environment::).  If the
+'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt
+Builtin::), the last element of a pipeline may be run by the shell
+process.
+
+   The exit status of a pipeline is the exit status of the last command
+in the pipeline, unless the 'pipefail' option is enabled (*note The Set
+Builtin::).  If 'pipefail' is enabled, the pipeline's return status is
+the value of the last (rightmost) command to exit with a non-zero
+status, or zero if all commands exit successfully.  If the reserved word
+'!' precedes the pipeline, the exit status is the logical negation of
+the exit status as described above.  The shell waits for all commands in
+the pipeline to terminate before returning a value.
 
 \1f
 File: bashref.info,  Node: Lists,  Next: Compound Commands,  Prev: Pipelines,  Up: Shell Commands
@@ -615,11 +619,12 @@ commands, equivalent to a semicolon.
 
    If a command is terminated by the control operator '&', the shell
 executes the command asynchronously in a subshell.  This is known as
-executing the command in the BACKGROUND.  The shell does not wait for
-the command to finish, and the return status is 0 (true).  When job
-control is not active (*note Job Control::), the standard input for
-asynchronous commands, in the absence of any explicit redirections, is
-redirected from '/dev/null'.
+executing the command in the BACKGROUND, and these are referred to as
+ASYNCHRONOUS commands.  The shell does not wait for the command to
+finish, and the return status is 0 (true).  When job control is not
+active (*note Job Control::), the standard input for asynchronous
+commands, in the absence of any explicit redirections, is redirected
+from '/dev/null'.
 
    Commands separated by a ';' are executed sequentially; the shell
 waits for each command to terminate in turn.  The return status is the
@@ -633,7 +638,7 @@ executed with left associativity.
      COMMAND1 && COMMAND2
 
 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of
-zero.
+zero (success).
 
    An OR list has the form
      COMMAND1 || COMMAND2
@@ -656,11 +661,12 @@ File: bashref.info,  Node: Compound Commands,  Next: Coprocesses,  Prev: Lists,
 * Conditional Constructs::     Shell commands for conditional execution.
 * Command Grouping::           Ways to group commands.
 
-Compound commands are the shell programming constructs.  Each construct
-begins with a reserved word or control operator and is terminated by a
-corresponding reserved word or operator.  Any redirections (*note
-Redirections::) associated with a compound command apply to all commands
-within that compound command unless explicitly overridden.
+Compound commands are the shell programming language constructs.  Each
+construct begins with a reserved word or control operator and is
+terminated by a corresponding reserved word or operator.  Any
+redirections (*note Redirections::) associated with a compound command
+apply to all commands within that compound command unless explicitly
+overridden.
 
    In most cases a list of commands in a compound command's description
 may be separated from the rest of the command by one or more newlines,
@@ -705,14 +711,16 @@ syntax, it may be replaced with one or more newlines.
 
           for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done
 
-     Expand WORDS, and execute COMMANDS once for each member in the
-     resultant list, with NAME bound to the current member.  If 'in
-     WORDS' is not present, the 'for' command executes the COMMANDS once
-     for each positional parameter that is set, as if 'in "$@"' had been
-     specified (*note Special Parameters::).  The return status is the
-     exit status of the last command that executes.  If there are no
-     items in the expansion of WORDS, no commands are executed, and the
-     return status is zero.
+     Expand WORDS (*note Shell Expansions::), and execute COMMANDS once
+     for each member in the resultant list, with NAME bound to the
+     current member.  If 'in WORDS' is not present, the 'for' command
+     executes the COMMANDS once for each positional parameter that is
+     set, as if 'in "$@"' had been specified (*note Special
+     Parameters::).
+
+     The return status is the exit status of the last command that
+     executes.  If there are no items in the expansion of WORDS, no
+     commands are executed, and the return status is zero.
 
      An alternate form of the 'for' command is also supported:
 
@@ -761,23 +769,26 @@ File: bashref.info,  Node: Conditional Constructs,  Next: Command Grouping,  Pre
 'case'
      The syntax of the 'case' command is:
 
-          case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac
+          case WORD in
+              [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]...
+          esac
 
      'case' will selectively execute the COMMAND-LIST corresponding to
-     the first PATTERN that matches WORD.  If the 'nocasematch' shell
-     option (see the description of 'shopt' in *note The Shopt
-     Builtin::) is enabled, the match is performed without regard to the
-     case of alphabetic characters.  The '|' is used to separate
-     multiple patterns, and the ')' operator terminates a pattern list.
-     A list of patterns and an associated command-list is known as a
-     CLAUSE.
+     the first PATTERN that matches WORD.  The match is performed
+     according to the rules described below in *note Pattern Matching::.
+     If the 'nocasematch' shell option (see the description of 'shopt'
+     in *note The Shopt Builtin::) is enabled, the match is performed
+     without regard to the case of alphabetic characters.  The '|' is
+     used to separate multiple patterns, and the ')' operator terminates
+     a pattern list.  A list of patterns and an associated command-list
+     is known as a CLAUSE.
 
      Each clause must be terminated with ';;', ';&', or ';;&'.  The WORD
      undergoes tilde expansion, parameter expansion, command
-     substitution, arithmetic expansion, and quote removal before
-     matching is attempted.  Each PATTERN undergoes tilde expansion,
-     parameter expansion, command substitution, and arithmetic
-     expansion.
+     substitution, arithmetic expansion, and quote removal (*note Shell
+     Parameter Expansion::) before matching is attempted.  Each PATTERN
+     undergoes tilde expansion, parameter expansion, command
+     substitution, and arithmetic expansion.
 
      There may be an arbitrary number of 'case' clauses, each terminated
      by a ';;', ';&', or ';;&'.  The first pattern that matches
@@ -875,36 +886,36 @@ File: bashref.info,  Node: Conditional Constructs,  Next: Command Grouping,  Pre
      'shopt' in *note The Shopt Builtin::) is enabled, the match is
      performed without regard to the case of alphabetic characters.  The
      return value is 0 if the string matches ('==') or does not match
-     ('!=')the pattern, and 1 otherwise.  Any part of the pattern may be
-     quoted to force the quoted portion to be matched as a string.
+     ('!=') the pattern, and 1 otherwise.  Any part of the pattern may
+     be quoted to force the quoted portion to be matched as a string.
 
      An additional binary operator, '=~', is available, with the same
      precedence as '==' and '!='.  When it is used, the string to the
-     right of the operator is considered an extended regular expression
-     and matched accordingly (as in regex3)).  The return value is 0 if
-     the string matches the pattern, and 1 otherwise.  If the regular
-     expression is syntactically incorrect, the conditional expression's
-     return value is 2.  If the 'nocasematch' shell option (see the
-     description of 'shopt' in *note The Shopt Builtin::) is enabled,
-     the match is performed without regard to the case of alphabetic
-     characters.  Any part of the pattern may be quoted to force the
-     quoted portion to be matched as a string.  Bracket expressions in
-     regular expressions must be treated carefully, since normal quoting
-     characters lose their meanings between brackets.  If the pattern is
-     stored in a shell variable, quoting the variable expansion forces
-     the entire pattern to be matched as a string.  Substrings matched
-     by parenthesized subexpressions within the regular expression are
-     saved in the array variable 'BASH_REMATCH'.  The element of
-     'BASH_REMATCH' with index 0 is the portion of the string matching
-     the entire regular expression.  The element of 'BASH_REMATCH' with
-     index N is the portion of the string matching the Nth parenthesized
-     subexpression.
+     right of the operator is considered a POSIX extended regular
+     expression and matched accordingly (as in regex3)).  The return
+     value is 0 if the string matches the pattern, and 1 otherwise.  If
+     the regular expression is syntactically incorrect, the conditional
+     expression's return value is 2.  If the 'nocasematch' shell option
+     (see the description of 'shopt' in *note The Shopt Builtin::) is
+     enabled, the match is performed without regard to the case of
+     alphabetic characters.  Any part of the pattern may be quoted to
+     force the quoted portion to be matched as a string.  Bracket
+     expressions in regular expressions must be treated carefully, since
+     normal quoting characters lose their meanings between brackets.  If
+     the pattern is stored in a shell variable, quoting the variable
+     expansion forces the entire pattern to be matched as a string.
+     Substrings matched by parenthesized subexpressions within the
+     regular expression are saved in the array variable 'BASH_REMATCH'.
+     The element of 'BASH_REMATCH' with index 0 is the portion of the
+     string matching the entire regular expression.  The element of
+     'BASH_REMATCH' with index N is the portion of the string matching
+     the Nth parenthesized subexpression.
 
      For example, the following will match a line (stored in the shell
      variable LINE) if there is a sequence of characters in the value
      consisting of any number, including zero, of space characters, zero
      or one instances of 'a', then a 'b':
-          [[ $line =~ [[:space:]]*(a)?b ]]
+          [[ $line =~ [[:space:]]*?(a)b ]]
 
      That means values like 'aab' and ' aaaaaab' will match, as will a
      line containing a 'b' anywhere in its value.
@@ -917,7 +928,7 @@ File: bashref.info,  Node: Conditional Constructs,  Next: Command Grouping,  Pre
      to the shell's quote removal.  Using a shell variable to store the
      pattern decreases these problems.  For example, the following is
      equivalent to the above:
-          pattern='[[:space:]]*(a)?b'
+          pattern='[[:space:]]*?(a)b'
           [[ $line =~ $pattern ]]
 
      If you want to match a character that's special to the regular
@@ -1030,7 +1041,8 @@ a file descriptor in the executing shell, and that file descriptor is
 assigned to 'NAME'[1].  This pipe is established before any redirections
 specified by the command (*note Redirections::).  The file descriptors
 can be utilized as arguments to shell commands and redirections using
-standard word expansions.  The file descriptors are not available in
+standard word expansions.  Other than those created to execute command
+and process substitutions, the file descriptors are not available in
 subshells.
 
    The process ID of the shell spawned to execute the coprocess is
@@ -1094,7 +1106,8 @@ read from a file (in this case, filenames listed one per line):
        done < file | process-output
 
 with a more compact syntax reminiscent of lambdas:
-     cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
+     cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
+                process-output
 
    Parallel provides a built-in mechanism to remove filename extensions,
 which lends itself to batch file transformations or renaming:
@@ -1109,17 +1122,25 @@ take arguments from the command line; the above can also be written as
 
    If a command generates output, you may want to preserve the input
 order in the output.  For instance, the following command
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
+     {
+         echo foss.org.my ;
+         echo debian.org ;
+         echo freenetproject.org ;
+     } | parallel traceroute
 will display as output the traceroute invocation that finishes first.
 Adding the '-k' option
-     { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
+     {
+         echo foss.org.my ;
+         echo debian.org ;
+         echo freenetproject.org ;
+     } | parallel -k traceroute
 will ensure that the output of 'traceroute foss.org.my' is displayed
 first.
 
    Finally, Parallel can be used to run a sequence of shell commands in
 parallel, similar to 'cat file | bash'.  It is not uncommon to take a
 list of filenames, create a series of shell commands to operate on them,
-and feed that list of commnds to a shell.  Parallel can speed this up.
+and feed that list of commands to a shell.  Parallel can speed this up.
 Assuming that 'file' contains a list of shell commands, one per line,
 
      parallel -j 10 < file
@@ -1210,7 +1231,57 @@ last command executed before the 'return'.
 
    Variables local to the function may be declared with the 'local'
 builtin.  These variables are visible only to the function and the
-commands it invokes.
+commands it invokes.  This is particularly important when a shell
+function calls other functions.
+
+   Local variables "shadow" variables with the same name declared at
+previous scopes.  For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+
+   The shell uses DYNAMIC SCOPING to control a variable's visibility
+within functions.  With dynamic scoping, visible variables and their
+values are a result of the sequence of function calls that caused
+execution to reach the current function.  The value of a variable that a
+function sees depends on its value within its caller, if any, whether
+that caller is the "global" scope or another shell function.  This is
+also the value that a local variable declaration "shadows", and the
+value that is restored when the function returns.
+
+   For example, if a variable VAR is declared as local in function
+FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
+from within FUNC2 will resolve to the local variable VAR from FUNC1,
+shadowing any global variable named VAR.
+
+   The following script demonstrates this behavior.  When executed, the
+script displays
+
+     In func2, var = func1 local
+
+     func1()
+     {
+         local var='func1 local'
+         func2
+     }
+
+     func2()
+     {
+         echo "In func2, var = $var"
+     }
+
+     var=global
+     func1
+
+   The 'unset' builtin also acts using the same dynamic scope: if a
+variable is local to the current scope, 'unset' will unset it; otherwise
+the unset will refer to the variable found in any calling scope as
+described above.  If a variable at the current local scope is unset, it
+will remain so until it is reset in that scope or until the function
+returns.  Once the function returns, any instance of the variable at a
+previous scope will become visible.  If the unset acts on a variable at
+a previous scope, any instance of a variable with that name that had
+been shadowed will become visible.
 
    Function names and definitions may be listed with the '-f' option to
 the 'declare' ('typeset') builtin command (*note Bash Builtins::).  The
@@ -1218,10 +1289,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::).  The
 (and optionally the source file and line number, if the 'extdebug' shell
 option is enabled).  Functions may be exported so that subshells
 automatically have them defined with the '-f' option to the 'export'
-builtin (*note Bourne Shell Builtins::).  Note that shell functions and
-variables with the same name may result in multiple identically-named
-entries in the environment passed to the shell's children.  Care should
-be taken in cases where this may cause a problem.
+builtin (*note Bourne Shell Builtins::).
 
    Functions may be recursive.  The 'FUNCNEST' variable may be used to
 limit the depth of the function call stack and restrict the number of
@@ -1350,15 +1418,21 @@ only be referenced; assignment to them is not allowed.
      is null, the parameters are joined without intervening separators.
 
 '@'
-     ($@) Expands to the positional parameters, starting from one.  When
-     the expansion occurs within double quotes, each parameter expands
-     to a separate word.  That is, '"$@"' is equivalent to '"$1" "$2"
-     ...'.  If the double-quoted expansion occurs within a word, the
-     expansion of the first parameter is joined with the beginning part
-     of the original word, and the expansion of the last parameter is
-     joined with the last part of the original word.  When there are no
-     positional parameters, '"$@"' and '$@' expand to nothing (i.e.,
-     they are removed).
+     ($@) Expands to the positional parameters, starting from one.  In
+     contexts where word splitting is performed, this expands each
+     positional parameter to a separate word; if not within double
+     quotes, these words are subject to word splitting.  In contexts
+     where word splitting is not performed, this expands to a single
+     word with each positional parameter separated by a space.  When the
+     expansion occurs within double quotes, and word splitting is
+     performed, each parameter expands to a separate word.  That is,
+     '"$@"' is equivalent to '"$1" "$2" ...'.  If the double-quoted
+     expansion occurs within a word, the expansion of the first
+     parameter is joined with the beginning part of the original word,
+     and the expansion of the last parameter is joined with the last
+     part of the original word.  When there are no positional
+     parameters, '"$@"' and '$@' expand to nothing (i.e., they are
+     removed).
 
 '#'
      ($#) Expands to the number of positional parameters in decimal.
@@ -1395,10 +1469,11 @@ only be referenced; assignment to them is not allowed.
      ($_, an underscore.)  At shell startup, set to the absolute
      pathname used to invoke the shell or shell script being executed as
      passed in the environment or argument list.  Subsequently, expands
-     to the last argument to the previous command, after expansion.
-     Also set to the full pathname used to invoke each command executed
-     and placed in the environment exported to that command.  When
-     checking mail, this parameter holds the name of the mail file.
+     to the last argument to the previous simple command executed in the
+     foreground, after expansion.  Also set to the full pathname used to
+     invoke each command executed and placed in the environment exported
+     to that command.  When checking mail, this parameter holds the name
+     of the mail file.
 
 \1f
 File: bashref.info,  Node: Shell Expansions,  Next: Redirections,  Prev: Shell Parameters,  Up: Basic Shell Features
@@ -1447,10 +1522,10 @@ original word are removed unless they have been quoted themselves (QUOTE
 REMOVAL).
 
    Only brace expansion, word splitting, and filename expansion can
-change the number of words of the expansion; other expansions expand a
+increase the number of words of the expansion; other expansions expand a
 single word to a single word.  The only exceptions to this are the
-expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"'
-(*note Arrays::).
+expansions of '"$@"' and '$*' (*note Special Parameters::), and
+'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::).
 
    After all expansions, 'quote removal' (*note Quote Removal::) is
 performed.
@@ -1492,9 +1567,7 @@ each term.  The default increment is 1 or -1 as appropriate.
    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 '${' is not
-considered eligible for brace expansion.
+to the context of the expansion or the text between the braces.
 
    A correctly-formed brace expansion must contain unquoted opening and
 closing braces, and at least one unquoted comma or a valid sequence
@@ -1503,7 +1576,7 @@ expression.  Any incorrectly formed brace expansion is left unchanged.
    A { or ',' may be quoted with a backslash to prevent its being
 considered part of a brace expression.  To avoid conflicts with
 parameter expansion, the string '${' is not considered eligible for
-brace expansion.
+brace expansion, and inhibits brace expansion until the closing '}'..
 
    This construct is typically used as shorthand when the common prefix
 of the strings to be generated is longer than in the above example:
@@ -1574,6 +1647,11 @@ assigns the expanded value.
 '~-N'
      The string that would be displayed by 'dirs -N'
 
+   Bash also performs tilde expansion on words satisfying the conditions
+of variable assignments (*note Shell Parameters::) when they appear as
+arguments to simple commands.  Bash does not do this, except for the
+DECLARATION commands listed above, when in POSIX mode.
+
 \1f
 File: bashref.info,  Node: Shell Parameter Expansion,  Next: Command Substitution,  Prev: Tilde Expansion,  Up: Shell Expansions
 
@@ -1599,16 +1677,17 @@ parameter with more than one digit, or when PARAMETER is followed by a
 character that is not to be interpreted as part of its name.
 
    If the first character of PARAMETER is an exclamation point (!), and
-PARAMETER is not a NAMEREF, it introduces a level of variable
-indirection.  Bash uses the value of the variable formed from the rest
-of PARAMETER as the name of the variable; this variable is then expanded
-and that value is used in the rest of the substitution, rather than the
-value of PARAMETER itself.  This is known as 'indirect expansion'.  If
-PARAMETER is a nameref, this expands to the name of the variable
-referenced by PARAMETER instead of performing the complete indirect
-expansion.  The exceptions to this are the expansions of ${!PREFIX*} and
-${!NAME[@]} described below.  The exclamation point must immediately
-follow the left brace in order to introduce indirection.
+PARAMETER is not a NAMEREF, it introduces a level of indirection.  Bash
+uses the value formed by expanding the rest of PARAMETER as the new
+PARAMETER; this is then expanded and that value is used in the rest of
+the expansion, rather than the expansion of the original PARAMETER.
+This is known as 'indirect expansion'.  The value is subject to tilde
+expansion, parameter expansion, command substitution, and arithmetic
+expansion.  If PARAMETER is a nameref, this expands to the name of the
+variable referenced by PARAMETER instead of performing the complete
+indirect expansion.  The exceptions to this are the expansions of
+${!PREFIX*} and ${!NAME[@]} described below.  The exclamation point must
+immediately follow the left brace in order to introduce indirection.
 
    In each of the cases below, WORD is subject to tilde expansion,
 parameter expansion, command substitution, and arithmetic expansion.
@@ -1668,7 +1747,7 @@ omitted, the operator tests only for existence.
      $ echo ${string:7}
      7890abcdefgh
      $ echo ${string:7:0}
-
+     
      $ echo ${string:7:2}
      78
      $ echo ${string:7:-2}
@@ -1676,7 +1755,7 @@ omitted, the operator tests only for existence.
      $ echo ${string: -7}
      bcdefgh
      $ echo ${string: -7:0}
-
+     
      $ echo ${string: -7:2}
      bc
      $ echo ${string: -7:-2}
@@ -1685,7 +1764,7 @@ omitted, the operator tests only for existence.
      $ echo ${1:7}
      7890abcdefgh
      $ echo ${1:7:0}
-
+     
      $ echo ${1:7:2}
      78
      $ echo ${1:7:-2}
@@ -1693,7 +1772,7 @@ omitted, the operator tests only for existence.
      $ echo ${1: -7}
      bcdefgh
      $ echo ${1: -7:0}
-
+     
      $ echo ${1: -7:2}
      bc
      $ echo ${1: -7:-2}
@@ -1702,7 +1781,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[0]:7}
      7890abcdefgh
      $ echo ${array[0]:7:0}
-
+     
      $ echo ${array[0]:7:2}
      78
      $ echo ${array[0]:7:-2}
@@ -1710,7 +1789,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[0]: -7}
      bcdefgh
      $ echo ${array[0]: -7:0}
-
+     
      $ echo ${array[0]: -7:2}
      bc
      $ echo ${array[0]: -7:-2}
@@ -1729,7 +1808,7 @@ omitted, the operator tests only for existence.
      $ echo ${@:7}
      7 8 9 0 a b c d e f g h
      $ echo ${@:7:0}
-
+     
      $ echo ${@:7:2}
      7 8
      $ echo ${@:7:-2}
@@ -1741,7 +1820,7 @@ omitted, the operator tests only for existence.
      $ echo ${@:0:2}
      ./bash 1
      $ echo ${@: -7:0}
-
+     
 
      If PARAMETER is an indexed array name subscripted by '@' or '*',
      the result is the LENGTH members of the array beginning with
@@ -1766,7 +1845,7 @@ omitted, the operator tests only for existence.
      $ echo ${array[@]:0:2}
      0 1
      $ echo ${array[@]: -7:0}
-
+     
 
      Substring expansion applied to an associative array produces
      undefined results.
@@ -1803,22 +1882,23 @@ omitted, the operator tests only for existence.
 
 '${PARAMETER#WORD}'
 '${PARAMETER##WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion (*note Filename Expansion::).  If the pattern matches the
-     beginning of the expanded value of PARAMETER, then the result of
-     the expansion is the expanded value of PARAMETER with the shortest
-     matching pattern (the '#' case) or the longest matching pattern
-     (the '##' case) deleted.  If PARAMETER is '@' or '*', the pattern
-     removal operation is applied to each positional parameter in turn,
-     and the expansion is the resultant list.  If PARAMETER is an array
-     variable subscripted with '@' or '*', the pattern removal operation
-     is applied to each member of the array in turn, and the expansion
-     is the resultant list.
+     The WORD is expanded to produce a pattern and matched according to
+     the rules described below (*note Pattern Matching::).  If the
+     pattern matches the beginning of the expanded value of PARAMETER,
+     then the result of the expansion is the expanded value of PARAMETER
+     with the shortest matching pattern (the '#' case) or the longest
+     matching pattern (the '##' case) deleted.  If PARAMETER is '@' or
+     '*', the pattern removal operation is applied to each positional
+     parameter in turn, and the expansion is the resultant list.  If
+     PARAMETER is an array variable subscripted with '@' or '*', the
+     pattern removal operation is applied to each member of the array in
+     turn, and the expansion is the resultant list.
 
 '${PARAMETER%WORD}'
 '${PARAMETER%%WORD}'
-     The WORD is expanded to produce a pattern just as in filename
-     expansion.  If the pattern matches a trailing portion of the
+     The WORD is expanded to produce a pattern and matched according to
+     the rules described below (*note Pattern Matching::).  If the
+     pattern matches If the pattern matches a trailing portion of the
      expanded value of PARAMETER, then the result of the expansion is
      the value of PARAMETER with the shortest matching pattern (the '%'
      case) or the longest matching pattern (the '%%' case) deleted.  If
@@ -1832,21 +1912,23 @@ omitted, the operator tests only for existence.
 
      The PATTERN is expanded to produce a pattern just as in filename
      expansion.  PARAMETER is expanded and the longest match of PATTERN
-     against its value is replaced with STRING.  If PATTERN begins with
-     '/', all matches of PATTERN are replaced with STRING.  Normally
-     only the first match is replaced.  If PATTERN begins with '#', it
-     must match at the beginning of the expanded value of PARAMETER.  If
-     PATTERN begins with '%', it must match at the end of the expanded
-     value of PARAMETER.  If STRING is null, matches of PATTERN are
-     deleted and the '/' following PATTERN may be omitted.  If the
-     'nocasematch' shell option (see the description of 'shopt' in *note
-     The Shopt Builtin::) is enabled, the match is performed without
-     regard to the case of alphabetic characters.  If PARAMETER is '@'
-     or '*', the substitution operation is applied to each positional
-     parameter in turn, and the expansion is the resultant list.  If
-     PARAMETER is an array variable subscripted with '@' or '*', the
-     substitution operation is applied to each member of the array in
-     turn, and the expansion is the resultant list.
+     against its value is replaced with STRING.  The match is performed
+     according to the rules described below (*note Pattern Matching::).
+     If PATTERN begins with '/', all matches of PATTERN are replaced
+     with STRING.  Normally only the first match is replaced.  If
+     PATTERN begins with '#', it must match at the beginning of the
+     expanded value of PARAMETER.  If PATTERN begins with '%', it must
+     match at the end of the expanded value of PARAMETER.  If STRING is
+     null, matches of PATTERN are deleted and the '/' following PATTERN
+     may be omitted.  If the 'nocasematch' shell option (see the
+     description of 'shopt' in *note The Shopt Builtin::) is enabled,
+     the match is performed without regard to the case of alphabetic
+     characters.  If PARAMETER is '@' or '*', the substitution operation
+     is applied to each positional parameter in turn, and the expansion
+     is the resultant list.  If PARAMETER is an array variable
+     subscripted with '@' or '*', the substitution operation is applied
+     to each member of the array in turn, and the expansion is the
+     resultant list.
 
 '${PARAMETER^PATTERN}'
 '${PARAMETER^^PATTERN}'
@@ -1881,7 +1963,7 @@ omitted, the operator tests only for existence.
      'E'
           The expansion is a string that is the value of PARAMETER with
           backslash escape sequences expanded as with the '$'...''
-          quoting mechansim.
+          quoting mechanism.
      'P'
           The expansion is a string that is the result of expanding the
           value of PARAMETER as if it were a prompt string (*note
@@ -2046,17 +2128,22 @@ performed without regard to the case of alphabetic characters.
 
    When a pattern is used for filename expansion, the character '.' at
 the start of a filename or immediately following a slash must be matched
-explicitly, unless the shell option 'dotglob' is set.  When matching a
-filename, the slash character must always be matched explicitly.  In
-other cases, the '.' character is not treated specially.
+explicitly, unless the shell option 'dotglob' is set.  The filenames '.'
+and '..' must always be matched explicitly, even if 'dotglob' is set.
+In other cases, the '.' character is not treated specially.
+
+   When matching a filename, the slash character must always be matched
+explicitly by a slash in the pattern, but in other matching contexts it
+can be matched by a special pattern character as described below (*note
+Pattern Matching::).
 
    See the description of 'shopt' in *note The Shopt Builtin::, for a
 description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob'
 options.
 
    The 'GLOBIGNORE' shell variable may be used to restrict the set of
-filenames matching a pattern.  If 'GLOBIGNORE' is set, each matching
-filename that also matches one of the patterns in 'GLOBIGNORE' is
+file names matching a pattern.  If 'GLOBIGNORE' is set, each matching
+file name that also matches one of the patterns in 'GLOBIGNORE' is
 removed from the list of matches.  If the 'nocaseglob' option is set,
 the matching against the patterns in 'GLOBIGNORE' is performed without
 regard to case.  The filenames '.' and '..' are always ignored when
@@ -2149,6 +2236,12 @@ of the following sub-patterns:
 '!(PATTERN-LIST)'
      Matches anything except one of the given patterns.
 
+   Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.  Using separate matches against shorter
+strings, or using arrays of strings instead of a single long string, may
+be faster.
+
 \1f
 File: bashref.info,  Node: Quote Removal,  Prev: Filename Expansion,  Up: Shell Expansions
 
@@ -2180,7 +2273,9 @@ instead be preceded by a word of the form {VARNAME}.  In this case, for
 each redirection operator except >&- and <&-, the shell will allocate a
 file descriptor greater than 10 and assign it to {VARNAME}.  If >&- or
 <&- is preceded by {VARNAME}, the value of VARNAME defines the file
-descriptor to close.
+descriptor to close.  If {VARNAME} is supplied, the redirection persists
+beyond the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 
    In the following descriptions, if the file descriptor number is
 omitted, and the first character of the redirection operator is '<', the
@@ -2344,12 +2439,11 @@ fashion.
 A variant of here documents, the format is:
      [N]<<< WORD
 
-   The WORD undergoes brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, arithmetic expansion, and
-quote removal.  Pathname expansion and word splitting are not performed.
-The result is supplied as a single string, with a newline appended, to
-the command on its standard input (or file descriptor N if N is
-specified).
+   The WORD undergoes tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote removal.  Pathname
+expansion and word splitting are not performed.  The result is supplied
+as a single string, with a newline appended, to the command on its
+standard input (or file descriptor N if N is specified).
 
 3.6.8 Duplicating File Descriptors
 ----------------------------------
@@ -2486,11 +2580,11 @@ taken.
      '$PATH' is performed only if the command is not found in the hash
      table.  If the search is unsuccessful, the shell searches for a
      defined shell function named 'command_not_found_handle'.  If that
-     function exists, it is invoked with the original command and the
-     original command's arguments as its arguments, and the function's
-     exit status becomes the exit status of the shell.  If that function
-     is not defined, the shell prints an error message and returns an
-     exit status of 127.
+     function exists, it is invoked in a separate execution environment
+     with the original command and the original command's arguments as
+     its arguments, and the function's exit status becomes the exit
+     status of that subshell.  If that function is not defined, the
+     shell prints an error message and returns an exit status of 127.
 
   4. If the search is successful, or if the command name contains one or
      more slashes, the shell executes the named program in a separate
@@ -2783,13 +2877,13 @@ Completion Builtins::).
 
    Unless otherwise noted, each builtin command documented as accepting
 options preceded by '-' accepts '--' to signify the end of the options.
-The ':', 'true', 'false', and 'test' builtins do not accept options and
-do not treat '--' specially.  The 'exit', 'logout', 'return', 'break',
-'continue', 'let', and 'shift' builtins accept and process arguments
-beginning with '-' without requiring '--'.  Other builtins that accept
-arguments but are not specified as accepting options interpret arguments
-beginning with '-' as invalid options and require '--' to prevent this
-interpretation.
+The ':', 'true', 'false', and 'test'/'[' builtins do not accept options
+and do not treat '--' specially.  The 'exit', 'logout', 'return',
+'break', 'continue', 'let', and 'shift' builtins accept and process
+arguments beginning with '-' without requiring '--'.  Other builtins
+that accept arguments but are not specified as accepting options
+interpret arguments beginning with '-' as invalid options and require
+'--' to prevent this interpretation.
 
 \1f
 File: bashref.info,  Node: Bourne Shell Builtins,  Next: Bash Builtins,  Up: Shell Builtin Commands
@@ -2904,10 +2998,11 @@ standard.
      If COMMAND cannot be executed for some reason, a non-interactive
      shell exits, unless the 'execfail' shell option is enabled.  In
      that case, it returns failure.  An interactive shell returns
-     failure if the file cannot be executed.  If no COMMAND is
-     specified, redirections may be used to affect the current shell
-     environment.  If there are no redirection errors, the return status
-     is zero; otherwise the return status is non-zero.
+     failure if the file cannot be executed.  A subshell exits
+     unconditionally if 'exec' fails.  If no COMMAND is specified,
+     redirections may be used to affect the current shell environment.
+     If there are no redirection errors, the return status is zero;
+     otherwise the return status is non-zero.
 
 'exit'
           exit [N]
@@ -2988,7 +3083,7 @@ standard.
      locations.  The '-d' option causes the shell to forget the
      remembered location of each NAME.  If the '-t' option is supplied,
      the full pathname to which each NAME corresponds is printed.  If
-     multiple NAME arguments are supplied with '-t' the NAME is printed
+     multiple NAME arguments are supplied with '-t', the NAME is printed
      before the hashed full pathname.  The '-l' option causes output to
      be displayed in a format that may be reused as input.  If no
      arguments are given, or if only '-l' is supplied, information about
@@ -3032,7 +3127,7 @@ standard.
      status of the last command executed in the function.  If 'return'
      is executed by a trap handler, the last command used to determine
      the status is the last command executed before the trap handler.
-     if 'return' is executed during a 'DEBUG' trap, the last command
+     If 'return' is executed during a 'DEBUG' trap, the last command
      used to determine the status is the last command executed by the
      trap handler before 'return' was invoked.  'return' may also be
      used to terminate execution of a script being executed with the '.'
@@ -3096,7 +3191,7 @@ standard.
           The expression is false.
 
      1 argument
-          The expression is true if and only if the argument is not
+          The expression is true if, and only if, the argument is not
           null.
 
      2 arguments
@@ -3108,17 +3203,21 @@ standard.
           the expression is false.
 
      3 arguments
-          The following conditions are applied in the order listed.  If
-          the second argument is one of the binary conditional operators
-          (*note Bash Conditional Expressions::), the result of the
-          expression is the result of the binary test using the first
-          and third arguments as operands.  The '-a' and '-o' operators
-          are considered binary operators when there are three
-          arguments.  If the first argument is '!', the value is the
-          negation of the two-argument test using the second and third
-          arguments.  If the first argument is exactly '(' and the third
-          argument is exactly ')', the result is the one-argument test
-          of the second argument.  Otherwise, the expression is false.
+          The following conditions are applied in the order listed.
+
+            1. If the second argument is one of the binary conditional
+               operators (*note Bash Conditional Expressions::), the
+               result of the expression is the result of the binary test
+               using the first and third arguments as operands.  The
+               '-a' and '-o' operators are considered binary operators
+               when there are three arguments.
+            2. If the first argument is '!', the value is the negation
+               of the two-argument test using the second and third
+               arguments.
+            3. If the first argument is exactly '(' and the third
+               argument is exactly ')', the result is the one-argument
+               test of the second argument.
+            4. Otherwise, the expression is false.
 
      4 arguments
           If the first argument is '!', the result is the negation of
@@ -3445,11 +3544,12 @@ standard.
           environment.
 
      Using '+' instead of '-' turns off the attribute instead, with the
-     exceptions that '+a' may not be used to destroy an array variable
-     and '+r' will not remove the readonly attribute.  When used in a
-     function, 'declare' makes each NAME local, as with the 'local'
-     command, unless the '-g' option is used.  If a variable name is
-     followed by =VALUE, the value of the variable is set to VALUE.
+     exceptions that '+a' and '+A' may not be used to destroy array
+     variables and '+r' will not remove the readonly attribute.  When
+     used in a function, 'declare' makes each NAME local, as with the
+     'local' command, unless the '-g' option is used.  If a variable
+     name is followed by =VALUE, the value of the variable is set to
+     VALUE.
 
      When using '-a' or '-A' and the compound assignment syntax to
      create array variables, additional attributes do not take effect
@@ -3590,8 +3690,8 @@ standard.
      Exit a login shell, returning a status of N to the shell's parent.
 
 'mapfile'
-          mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
+          mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
+              [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
 
      Read lines from the standard input into the indexed array variable
      ARRAY, or from file descriptor FD if the '-u' option is supplied.
@@ -3600,7 +3700,8 @@ standard.
 
      '-d'
           The first character of DELIM is used to terminate each input
-          line, rather than newline.
+          line, rather than newline.  If DELIM is the empty string,
+          'mapfile' will terminate a line when it reads a NUL character.
      '-n'
           Copy at most COUNT lines.  If COUNT is 0, all lines are
           copied.
@@ -3615,7 +3716,7 @@ standard.
           Read lines from file descriptor FD instead of the standard
           input.
      '-C'
-          Evaluate CALLBACK each time QUANTUMP lines are read.  The '-c'
+          Evaluate CALLBACK each time QUANTUM lines are read.  The '-c'
           option specifies QUANTUM.
      '-c'
           Specify the number of lines read between each call to
@@ -3712,12 +3813,14 @@ standard.
 
      '-d DELIM'
           The first character of DELIM is used to terminate the input
-          line, rather than newline.
+          line, rather than newline.  If DELIM is the empty string,
+          'read' will terminate a line when it reads a NUL character.
 
      '-e'
           Readline (*note Command Line Editing::) is used to obtain the
           line.  Readline uses the current (or default, if line editing
-          was not previously active) editing settings.
+          was not previously active) editing settings, but uses
+          Readline's default filename completion.
 
      '-i TEXT'
           If Readline is being used to read the line, TEXT is placed
@@ -3746,8 +3849,8 @@ standard.
      '-r'
           If this option is given, backslash does not act as an escape
           character.  The backslash is considered to be part of the
-          line.  In particular, a backslash-newline pair may not be used
-          as a line continuation.
+          line.  In particular, a backslash-newline pair may not then be
+          used as a line continuation.
 
      '-s'
           Silent mode.  If input is coming from a terminal, characters
@@ -3771,8 +3874,8 @@ standard.
           Read input from file descriptor FD.
 
 'readarray'
-          readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD]
-              [-C CALLBACK] [-c QUANTUM] [ARRAY]
+          readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
+              [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
 
      Read lines from the standard input into the indexed array variable
      ARRAY, or from file descriptor FD if the '-u' option is supplied.
@@ -4236,9 +4339,10 @@ This builtin allows you to change additional shell optional behavior.
      option is used, those available with the '-o' option to the 'set'
      builtin command (*note The Set Builtin::).  With no options, or
      with the '-p' option, a list of all settable options is displayed,
-     with an indication of whether or not each is set.  The '-p' option
-     causes output to be displayed in a form that may be reused as
-     input.  Other options have the following meanings:
+     with an indication of whether or not each is set; if OPTNAMES are
+     supplied, the output is restricted to those options.  The '-p'
+     option causes output to be displayed in a form that may be reused
+     as input.  Other options have the following meanings:
 
      '-s'
           Enable (set) each OPTNAME.
@@ -4269,6 +4373,13 @@ This builtin allows you to change additional shell optional behavior.
 
      The list of 'shopt' options is:
 
+     'assoc_expand_once'
+          If set, the shell suppresses multiple evaluation of
+          associative array subscripts during arithmetic expression
+          evaluation, while executing builtins that can perform variable
+          assignments, and while executing builtins that perform array
+          dereferencing.
+
      'autocd'
           If set, a command name that is the name of a directory is
           executed as if it were the argument to the 'cd' command.  This
@@ -4301,13 +4412,16 @@ This builtin allows you to change additional shell optional behavior.
           are stopped.
 
      'checkwinsize'
-          If set, Bash checks the window size after each command and, if
-          necessary, updates the values of 'LINES' and 'COLUMNS'.
+          If set, Bash checks the window size after each external
+          (non-builtin) command and, if necessary, updates the values of
+          'LINES' and 'COLUMNS'.  This option is enabled by default.
 
      '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.
+          re-editing of multi-line commands.  This option is enabled by
+          default, but only has an effect if command history is enabled
+          (*note Bash History Facilities::).
 
      'compat31'
           If set, Bash changes its behavior to that of version 3.1 with
@@ -4357,6 +4471,11 @@ This builtin allows you to change additional shell optional behavior.
           executed (this allows 'break' or 'continue' in a shell
           function to affect loops in the caller's context).
 
+     'compat44'
+          If set, Bash saves the positional parameters to BASH_ARGV and
+          BASH_ARGC before they are used, regardless of whether or not
+          extended debugging mode is enabled.
+
      'complete_fullquote'
           If set, Bash quotes all shell metacharacters in filenames and
           directory names when performing completion.  If not set, Bash
@@ -4384,7 +4503,8 @@ This builtin allows you to change additional shell optional behavior.
 
      'dotglob'
           If set, Bash includes filenames beginning with a '.'  in the
-          results of filename expansion.
+          results of filename expansion.  The filenames '.' and '..'
+          must always be matched explicitly, even if 'dotglob' is set.
 
      'execfail'
           If this is set, a non-interactive shell will not exit if it
@@ -4513,6 +4633,19 @@ This builtin allows you to change additional shell optional behavior.
           commands are saved to the history with embedded newlines
           rather than using semicolon separators where possible.
 
+     'localvar_inherit'
+          If set, local variables inherit the value and attributes of a
+          variable of the same name that exists at a previous scope
+          before any new value is assigned.  The NAMEREF attribute is
+          not inherited.
+
+     'localvar_unset'
+          If set, calling 'unset' on local variables in previous
+          function scopes marks them so subsequent lookups find them
+          unset until that function returns.  This is identical to the
+          behavior of unsetting local variables at the current function
+          scope.
+
      'login_shell'
           The shell sets this option if it is started as a login shell
           (*note Invoking Bash::).  The value may not be changed.
@@ -4547,6 +4680,13 @@ This builtin allows you to change additional shell optional behavior.
           Programmable Completion::) are enabled.  This option is
           enabled by default.
 
+     'progcomp_alias'
+          If set, and programmable completion is enabled, Bash treats a
+          command name that doesn't have any completions as a possible
+          alias and attempts alias expansion.  If it has an alias, Bash
+          attempts programmable completion using the command word
+          resulting from the expanded alias.
+
      'promptvars'
           If set, prompt strings undergo parameter expansion, command
           substitution, arithmetic expansion, and quote removal after
@@ -4676,7 +4816,8 @@ In some cases, Bash assigns a default value to the variable.
      that are expanded before 'PS1' is displayed.
 
 'PS2'
-     The secondary prompt string.  The default value is '> '.
+     The secondary prompt string.  The default value is '> '.  'PS2' is
+     expanded in the same way as 'PS1' before being displayed.
 
 \1f
 File: bashref.info,  Node: Bash Variables,  Prev: Bourne Shell Variables,  Up: Shell Variables
@@ -4706,7 +4847,9 @@ Variables::).
 'BASHPID'
      Expands to the process ID of the current Bash process.  This
      differs from '$$' under certain circumstances, such as subshells
-     that do not require Bash to be re-initialized.
+     that do not require Bash to be re-initialized.  Assignments to
+     'BASHPID' have no effect.  If 'BASHPID' is unset, it loses its
+     special properties, even if it is subsequently reset.
 
 'BASH_ALIASES'
      An associative array variable whose members correspond to the
@@ -4725,7 +4868,10 @@ Variables::).
      subroutine is executed, the number of parameters passed is pushed
      onto 'BASH_ARGC'.  The shell sets 'BASH_ARGC' only when in extended
      debugging mode (see *note The Shopt Builtin:: for a description of
-     the 'extdebug' option to the 'shopt' builtin).
+     the 'extdebug' option to the 'shopt' builtin).  Setting 'extdebug'
+     after the shell has started to execute a script, or referencing
+     this variable when 'extdebug' is not set, may result in
+     inconsistent values.
 
 'BASH_ARGV'
      An array variable containing all of the parameters in the current
@@ -4735,7 +4881,17 @@ Variables::).
      the parameters supplied are pushed onto 'BASH_ARGV'.  The shell
      sets 'BASH_ARGV' only when in extended debugging mode (see *note
      The Shopt Builtin:: for a description of the 'extdebug' option to
-     the 'shopt' builtin).
+     the 'shopt' builtin).  Setting 'extdebug' after the shell has
+     started to execute a script, or referencing this variable when
+     'extdebug' is not set, may result in inconsistent values.
+
+'BASH_ARGV0'
+     When referenced, this variable expands to the name of the shell or
+     shell script (identical to '$0'; *Note Special Parameters::, for
+     the description of special parameter 0).  Assignment to
+     'BASH_ARGV0' causes the value assigned to also be assigned to '$0'.
+     If 'BASH_ARGV0' is unset, it loses its special properties, even if
+     it is subsequently reset.
 
 'BASH_CMDS'
      An associative array variable whose members correspond to the
@@ -4932,6 +5088,21 @@ Variables::).
      Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode
      (*note Bash POSIX Mode::).
 
+'EPOCHREALTIME'
+     Each time this parameter is referenced, it expands to the number of
+     seconds since the Unix Epoch as a floating point value with
+     micro-second granularity (see the documentation for the C library
+     function TIME for the definition of Epoch).  Assignments to
+     'EPOCHREALTIME' are ignored.  If 'EPOCHREALTIME' is unset, it loses
+     its special properties, even if it is subsequently reset.
+
+'EPOCHSECONDS'
+     Each time this parameter is referenced, it expands to the number of
+     seconds since the Unix Epoch (see the documentation for the C
+     library function TIME for the definition of Epoch).  Assignments to
+     'EPOCHSECONDS' are ignored.  If 'EPOCHSECONDS' is unset, it loses
+     its special properties, even if it is subsequently reset.
+
 'EUID'
      The numeric effective user id of the current user.  This variable
      is readonly.
@@ -4982,8 +5153,8 @@ Variables::).
      nesting level will cause the current command to abort.
 
 'GLOBIGNORE'
-     A colon-separated list of patterns defining the set of filenames to
-     be ignored by filename expansion.  If a filename matched by a
+     A colon-separated list of patterns defining the set of file names
+     to be ignored by filename expansion.  If a file name matched by a
      filename expansion pattern also matches one of the patterns in
      'GLOBIGNORE', it is removed from the list of matches.  The pattern
      matching honors the setting of the 'extglob' shell option.
@@ -5102,7 +5273,7 @@ Variables::).
      as the sole input.  If set, the value denotes the number of
      consecutive 'EOF' characters that can be read as the first
      character on an input line before the shell will exit.  If the
-     variable exists but does not have a numeric value (or has no value)
+     variable exists but does not have a numeric value, or has no value,
      then the default is 10.  If the variable does not exist, then 'EOF'
      signifies the end of input to the shell.  This is only in effect
      for interactive shells.
@@ -5111,6 +5282,12 @@ Variables::).
      The name of the Readline initialization file, overriding the
      default of '~/.inputrc'.
 
+'INSIDE_EMACS'
+     If Bash finds this variable in the environment when the shell
+     starts, it assumes that the shell is running in an Emacs shell
+     buffer and may disable line editing depending on the value of
+     'TERM'.
+
 'LANG'
      Used to determine the locale category for any category not
      specifically selected with a variable starting with 'LC_'.
@@ -5191,7 +5368,8 @@ Variables::).
      supplied.  If it is set while the shell is running, Bash enables
      POSIX mode, as if the command
           set -o posix
-     had been executed.
+     had been executed.  When the shell enters POSIX mode, it sets this
+     variable if it was not already set.
 
 'PPID'
      The process ID of the shell's parent process.  This variable is
@@ -5218,10 +5396,12 @@ Variables::).
      with '#? '
 
 'PS4'
-     The value is the prompt printed before the command line is echoed
-     when the '-x' option is set (*note The Set Builtin::).  The first
-     character of 'PS4' is replicated multiple times, as necessary, to
-     indicate multiple levels of indirection.  The default is '+ '.
+     The value of this parameter is expanded like PS1 and the expanded
+     value is the prompt printed before the command line is echoed when
+     the '-x' option is set (*note The Set Builtin::).  The first
+     character of the expanded value is replicated multiple times, as
+     necessary, to indicate multiple levels of indirection.  The default
+     is '+ '.
 
 'PWD'
      The current working directory as set by the 'cd' builtin.
@@ -5356,9 +5536,12 @@ File: bashref.info,  Node: Invoking Bash,  Next: Bash Startup Files,  Up: Bash F
 6.1 Invoking Bash
 =================
 
-     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
-     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...]
-     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...]
+     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] [ARGUMENT ...]
+     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] -c STRING [ARGUMENT ...]
+     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION]
+         [-O SHOPT_OPTION] [ARGUMENT ...]
 
    All of the single-character options used with the 'set' builtin
 (*note The Set Builtin::) can be used as options when the shell is
@@ -5452,7 +5635,7 @@ invocation which are not available with the 'set' builtin.
      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.
+     interactive shell or when reading input through a pipe.
 
 '-D'
      A list of all double-quoted strings preceded by '$' is printed on
@@ -5678,8 +5861,10 @@ several ways.
 
   3. Bash expands and displays 'PS1' before reading the first line of a
      command, and expands and displays 'PS2' before reading the second
-     and subsequent lines of a multi-line command.  Bash displays 'PS0'
-     after it reads a command but before executing it.
+     and subsequent lines of a multi-line command.  Bash expands and
+     displays 'PS0' after it reads a command but before executing it.
+     See *note Controlling the Prompt::, for a complete list of prompt
+     string escape sequences.
 
   4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
      command before printing the primary prompt, '$PS1' (*note Bash
@@ -5702,8 +5887,8 @@ several ways.
   9. In the absence of any traps, Bash ignores 'SIGTERM' (*note
      Signals::).
 
-  10. In the absence of any traps, 'SIGINT' is caught and handled
-     ((*note Signals::).  'SIGINT' will interrupt some shell builtins.
+  10. In the absence of any traps, 'SIGINT' is caught and handled (*note
+     Signals::).  'SIGINT' will interrupt some shell builtins.
 
   11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if
      the 'huponexit' shell option has been enabled (*note Signals::).
@@ -5749,18 +5934,21 @@ File: bashref.info,  Node: Bash Conditional Expressions,  Next: Shell Arithmetic
 ================================
 
 Conditional expressions are used by the '[[' compound command and the
-'test' and '[' builtin commands.
-
-   Expressions may be unary or binary.  Unary expressions are often used
-to examine the status of a file.  There are string operators and numeric
-comparison operators as well.  Bash handles several filenames specially
-when they are used in expressions.  If the operating system on which
-Bash is running provides these special files, Bash will use them;
-otherwise it will emulate them internally with this behavior: If the
-FILE argument to one of the primaries is of the form '/dev/fd/N', then
-file descriptor N is checked.  If the FILE argument to one of the
-primaries is one of '/dev/stdin', '/dev/stdout', or '/dev/stderr', file
-descriptor 0, 1, or 2, respectively, is checked.
+'test' and '[' builtin commands.  The 'test' and '[' commands determine
+their behavior based on the number of arguments; see the descriptions of
+those commands for any other command-specific actions.
+
+   Expressions may be unary or binary, and are formed from the following
+primaries.  Unary expressions are often used to examine the status of a
+file.  There are string operators and numeric comparison operators as
+well.  Bash handles several filenames specially when they are used in
+expressions.  If the operating system on which Bash is running provides
+these special files, Bash will use them; otherwise it will emulate them
+internally with this behavior: If the FILE argument to one of the
+primaries is of the form '/dev/fd/N', then file descriptor N is checked.
+If the FILE argument to one of the primaries is one of '/dev/stdin',
+'/dev/stdout', or '/dev/stderr', file descriptor 0, 1, or 2,
+respectively, is checked.
 
    When used with '[[', the '<' and '>' operators sort lexicographically
 using the current locale.  The 'test' command uses ASCII ordering.
@@ -5884,7 +6072,9 @@ link itself.
      arithmetic binary operators return true if ARG1 is equal to, not
      equal to, less than, less than or equal to, greater than, or
      greater than or equal to ARG2, respectively.  ARG1 and ARG2 may be
-     positive or negative integers.
+     positive or negative integers.  When used with the '[[' command,
+     ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell
+     Arithmetic::).
 
 \1f
 File: bashref.info,  Node: Shell Arithmetic,  Next: Aliases,  Prev: Bash Conditional Expressions,  Up: Bash Features
@@ -6018,9 +6208,10 @@ the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt
 Builtin::).
 
    The rules concerning the definition and use of aliases are somewhat
-confusing.  Bash always reads at least one complete line of input before
-executing any of the commands on that line.  Aliases are expanded when a
-command is read, not when it is executed.  Therefore, an alias
+confusing.  Bash always reads at least one complete line of input, and
+all lines that make up a compound command, before executing any of the
+commands on that line or the compound command.  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
@@ -6122,9 +6313,15 @@ quotes.
    The 'unset' builtin is used to destroy arrays.  'unset
 NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
 Negative subscripts to indexed arrays are interpreted as described
-above.  Care must be taken to avoid unwanted side effects caused by
-filename expansion.  'unset NAME', where NAME is an array, removes the
-entire array.  A subscript of '*' or '@' also removes the entire array.
+above.  Unsetting the last element of an array variable does not unset
+the variable.  'unset NAME', where NAME is an array, removes the entire
+array.  A subscript of '*' or '@' also removes the entire array.
+
+   When using a variable name with a subscript as an argument to a
+command, such as with 'unset', without using the word expansion syntax
+described above, the argument is subject to the shell's filename
+expansion.  If filename expansion is not desired, the argument should be
+quoted.
 
    The 'declare', 'local', and 'readonly' builtins each accept a '-a'
 option to specify an indexed array and a '-A' option to specify an
@@ -6245,7 +6442,7 @@ non-null value, then the value is executed just as if it had been typed
 on the command line.
 
    In addition, the following table describes the special characters
-which can appear in the prompt variables 'PS1' to 'PS4':
+which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
 
 '\a'
      A bell character.
@@ -6315,7 +6512,8 @@ of commands executed during the current shell session.
 
    After the string is decoded, it is expanded via parameter expansion,
 command substitution, arithmetic expansion, and quote removal, subject
-to the value of the 'promptvars' shell option (*note Bash Builtins::).
+to the value of the 'promptvars' shell option (*note The Shopt
+Builtin::).
 
 \1f
 File: bashref.info,  Node: The Restricted Shell,  Next: Bash POSIX Mode,  Prev: Controlling the Prompt,  Up: Bash Features
@@ -6373,212 +6571,224 @@ startup files.
 
    The following list is what's changed when 'POSIX mode' is in effect:
 
-  1. When a command in the hash table no longer exists, Bash will
+  1. Bash ensures that the 'POSIXLY_CORRECT' variable is set.
+
+  2. When a command in the hash table no longer exists, Bash will
      re-search '$PATH' to find the new location.  This is also available
      with 'shopt -s checkhash'.
 
-  2. The message printed by the job control code and builtins when a job
+  3. The message printed by the job control code and builtins when a job
      exits with a non-zero status is 'Done(status)'.
 
-  3. The message printed by the job control code and builtins when a job
+  4. The message printed by the job control code and builtins when a job
      is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example,
      'SIGTSTP'.
 
-  4. Alias expansion is always enabled, even in non-interactive shells.
+  5. Alias expansion is always enabled, even in non-interactive shells.
 
-  5. Reserved words appearing in a context where reserved words are
+  6. Reserved words appearing in a context where reserved words are
      recognized do not undergo alias expansion.
 
-  6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+  7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
      and '!!' to '!' are enabled, and parameter expansion is performed
      on the values of 'PS1' and 'PS2' regardless of the setting of the
      'promptvars' option.
 
-  7. The POSIX startup files are executed ('$ENV') rather than the
+  8. The POSIX startup files are executed ('$ENV') rather than the
      normal Bash files.
 
-  8. Tilde expansion is only performed on assignments preceding a
+  9. Tilde expansion is only performed on assignments preceding a
      command name, rather than on all assignment statements on the line.
 
-  9. The default history file is '~/.sh_history' (this is the default
+  10. The default history file is '~/.sh_history' (this is the default
      value of '$HISTFILE').
 
-  10. Redirection operators do not perform filename expansion on the
+  11. Redirection operators do not perform filename expansion on the
      word in the redirection unless the shell is interactive.
 
-  11. Redirection operators do not perform word splitting on the word in
+  12. Redirection operators do not perform word splitting on the word in
      the redirection.
 
-  12. Function names must be valid shell 'name's.  That is, they may not
+  13. Function names must be valid shell 'name's.  That is, they may not
      contain characters other than letters, digits, and underscores, and
      may not start with a digit.  Declaring a function with an invalid
      name causes a fatal syntax error in non-interactive shells.
 
-  13. Function names may not be the same as one of the POSIX special
+  14. Function names may not be the same as one of the POSIX special
      builtins.
 
-  14. POSIX special builtins are found before shell functions during
+  15. POSIX special builtins are found before shell functions during
      command lookup.
 
-  15. When printing shell function definitions (e.g., by 'type'), Bash
+  16. When printing shell function definitions (e.g., by 'type'), Bash
      does not print the 'function' keyword.
 
-  16. Literal tildes that appear as the first character in elements of
+  17. Literal tildes that appear as the first character in elements of
      the 'PATH' variable are not expanded as described above under *note
      Tilde Expansion::.
 
-  17. The 'time' reserved word may be used by itself as a command.  When
+  18. The 'time' reserved word may be used by itself as a command.  When
      used in this way, it displays timing statistics for the shell and
      its completed children.  The 'TIMEFORMAT' variable controls the
      format of the timing information.
 
-  18. When parsing and expanding a ${...} expansion that appears within
+  19. When parsing and expanding a ${...} expansion that appears within
      double quotes, single quotes are no longer special and cannot be
      used to quote a closing brace or other special character, unless
      the operator is one of those defined to perform pattern removal.
      In this case, they do not have to appear as matched pairs.
 
-  19. The parser does not recognize 'time' as a reserved word if the
+  20. The parser does not recognize 'time' as a reserved word if the
      next token begins with a '-'.
 
-  20. The '!' character does not introduce history expansion within a
+  21. The '!' character does not introduce history expansion within a
      double-quoted string, even if the 'histexpand' option is enabled.
 
-  21. If a POSIX special builtin returns an error status, a
+  22. If a POSIX special builtin returns an error status, a
      non-interactive shell exits.  The fatal errors are those listed in
      the POSIX standard, and include things like passing incorrect
      options, redirection errors, variable assignment errors for
      assignments preceding the command name, and so on.
 
-  22. A non-interactive shell exits with an error status if a variable
+  23. 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.
 
-  23. A non-interactive shell exits with an error status if a variable
+  24. A non-interactive shell exits with an error status if a variable
      assignment error occurs in an assignment statement preceding a
      special builtin, but not with any other simple command.
 
-  24. A non-interactive shell exits with an error status if the
+  25. A non-interactive shell exits with an error status if the
      iteration variable in a 'for' statement or the selection variable
      in a 'select' statement is a readonly variable.
 
-  25. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
+  26. Non-interactive shells exit if FILENAME in '.'  FILENAME is not
      found.
 
-  26. Non-interactive shells exit if a syntax error in an arithmetic
+  27. Non-interactive shells exit if a syntax error in an arithmetic
      expansion results in an invalid expression.
 
-  27. Non-interactive shells exit if a parameter expansion error occurs.
+  28. Non-interactive shells exit if a parameter expansion error occurs.
 
-  28. Non-interactive shells exit if there is a syntax error in a script
+  29. Non-interactive shells exit if there is a syntax error in a script
      read with the '.' or 'source' builtins, or in a string processed by
      the 'eval' builtin.
 
-  29. Process substitution is not available.
+  30. Process substitution is not available.
 
-  30. While variable indirection is available, it may not be applied to
+  31. While variable indirection is available, it may not be applied to
      the '#' and '?' special parameters.
 
-  31. When expanding the '*' special parameter in a pattern context
+  32. When expanding the '*' special parameter in a pattern context
      where the expansion is double-quoted does not treat the '$*' as if
      it were double-quoted.
 
-  32. Assignment statements preceding POSIX special builtins persist in
+  33. Assignment statements preceding POSIX special builtins persist in
      the shell environment after the builtin completes.
 
-  33. Assignment statements preceding shell function calls persist in
+  34. Assignment statements preceding shell function calls persist in
      the shell environment after the function returns, as if a POSIX
      special builtin command had been executed.
 
-  34. The 'command' builtin does not prevent builtins that take
+  35. The 'command' builtin does not prevent builtins that take
      assignment statements as arguments from expanding them as
      assignment statements; when not in POSIX mode, assignment builtins
      lose their assignment statement expansion properties when preceded
      by 'command'.
 
-  35. The 'bg' builtin uses the required format to describe each job
+  36. The 'bg' builtin uses the required format to describe each job
      placed in the background, which does not include an indication of
      whether the job is the current or previous job.
 
-  36. The output of 'kill -l' prints all the signal names on a single
+  37. The output of 'kill -l' prints all the signal names on a single
      line, separated by spaces, without the 'SIG' prefix.
 
-  37. The 'kill' builtin does not accept signal names with a 'SIG'
+  38. The 'kill' builtin does not accept signal names with a 'SIG'
      prefix.
 
-  38. The 'export' and 'readonly' builtin commands display their output
+  39. The 'export' and 'readonly' builtin commands display their output
      in the format required by POSIX.
 
-  39. The 'trap' builtin displays signal names without the leading
+  40. The 'trap' builtin displays signal names without the leading
      'SIG'.
 
-  40. The 'trap' builtin doesn't check the first argument for a possible
+  41. The 'trap' builtin doesn't check the first argument for a possible
      signal specification and revert the signal handling to the original
      disposition if it is, unless that argument consists solely of
      digits and is a valid signal number.  If users want to reset the
      handler for a given signal to the original disposition, they should
      use '-' as the first argument.
 
-  41. The '.' and 'source' builtins do not search the current directory
+  42. The '.' and 'source' builtins do not search the current directory
      for the filename argument if it is not found by searching 'PATH'.
 
-  42. Enabling POSIX mode has the effect of setting the
+  43. Enabling POSIX mode has the effect of setting the
      'inherit_errexit' option, so subshells spawned to execute command
      substitutions inherit the value of the '-e' option from the parent
      shell.  When the 'inherit_errexit' option is not enabled, Bash
      clears the '-e' option in such subshells.
 
-  43. When the 'alias' builtin displays alias definitions, it does not
+  44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+     option, so numeric arguments to 'shift' that exceed the number of
+     positional parameters will result in an error message.
+
+  45. When the 'alias' builtin displays alias definitions, it does not
      display them with a leading 'alias ' unless the '-p' option is
      supplied.
 
-  44. When the 'set' builtin is invoked without options, it does not
+  46. When the 'set' builtin is invoked without options, it does not
      display shell function names and definitions.
 
-  45. When the 'set' builtin is invoked without options, it displays
+  47. When the 'set' builtin is invoked without options, it displays
      variable values without quotes, unless they contain shell
      metacharacters, even if the result contains nonprinting characters.
 
-  46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+  48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
      constructed from '$PWD' and the directory name supplied as an
      argument does not refer to an existing directory, 'cd' will fail
      instead of falling back to PHYSICAL mode.
 
-  47. The 'pwd' builtin verifies that the value it prints is the same as
+  49. When the 'cd' builtin cannot change a directory because the length
+     of the pathname constructed from '$PWD' and the directory name
+     supplied as an argument exceeds PATH_MAX when all symbolic links
+     are expanded, 'cd' will fail instead of attempting to use only the
+     supplied directory name.
+
+  50. The 'pwd' builtin verifies that the value it prints is the same as
      the current directory, even if it is not asked to check the file
      system with the '-P' option.
 
-  48. When listing the history, the 'fc' builtin does not include an
+  51. When listing the history, the 'fc' builtin does not include an
      indication of whether or not a history entry has been modified.
 
-  49. The default editor used by 'fc' is 'ed'.
+  52. The default editor used by 'fc' is 'ed'.
 
-  50. The 'type' and 'command' builtins will not report a non-executable
+  53. The 'type' and 'command' builtins will not report a non-executable
      file as having been found, though the shell will attempt to execute
      such a file if it is the only so-named file found in '$PATH'.
 
-  51. The 'vi' editing mode will invoke the 'vi' editor directly when
+  54. The 'vi' editing mode will invoke the 'vi' editor directly when
      the 'v' command is run, instead of checking '$VISUAL' and
      '$EDITOR'.
 
-  52. When the 'xpg_echo' option is enabled, Bash does not attempt to
+  55. When the 'xpg_echo' option is enabled, Bash does not attempt to
      interpret any arguments to 'echo' as options.  Each argument is
      displayed, after escape characters are converted.
 
-  53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+  56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
      and '-f' options.
 
-  54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+  57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
      interrupt the 'wait' builtin and cause it to return immediately.
      The trap command is run once for each child that exits.
 
-  55. The 'read' builtin may be interrupted by a signal for which a trap
+  58. The 'read' builtin may be interrupted by a signal for which a trap
      has been set.  If Bash receives a trapped signal while executing
      'read', the trap handler executes and 'read' returns an exit status
      greater than 128.
 
-  56. Bash removes an exited background process's status from the list
+  59. Bash removes an exited background process's status from the list
      of such statuses after the 'wait' builtin is used to obtain it.
 
    There is other POSIX behavior that Bash does not implement by default
@@ -6699,6 +6909,11 @@ command may then be used to inspect their status.  If a second attempt
 to exit is made without an intervening command, Bash does not print
 another warning, and any stopped jobs are terminated.
 
+   When the shell is waiting for a job or process using the 'wait'
+builtin, and job control is enabled, 'wait' will return when the job
+changes state.  The '-f' option will force 'wait' to wait until the job
+or process terminates before returning.
+
 \1f
 File: bashref.info,  Node: Job Control Builtins,  Next: Job Control Variables,  Prev: Job Control Basics,  Up: Job Control
 
@@ -6775,7 +6990,7 @@ File: bashref.info,  Node: Job Control Builtins,  Next: Job Control Variables,
      option is encountered.
 
 'wait'
-          wait [-n] [JOBSPEC or PID ...]
+          wait [-fn] [JOBSPEC or PID ...]
 
      Wait until the child process specified by each process ID PID or
      job specification JOBSPEC exits and return the exit status of the
@@ -6783,7 +6998,10 @@ File: bashref.info,  Node: Job Control Builtins,  Next: Job Control Variables,
      the job are waited for.  If no arguments are given, all currently
      active child processes are waited for, and the return status is
      zero.  If the '-n' option is supplied, 'wait' waits for any job to
-     terminate and returns its exit status.  If neither JOBSPEC nor PID
+     terminate and returns its exit status.  If the '-f' option is
+     supplied, and job control is enabled, 'wait' forces each PID or
+     JOBSPEC to terminate before returning its status, intead of
+     returning when it changes status.  If neither JOBSPEC nor PID
      specifies an active child process of the shell, the return status
      is 127.
 
@@ -7228,7 +7446,7 @@ Variable Settings
           If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
           Readline treats hyphens ('-') and underscores ('_') as
           equivalent when performing case-insensitive filename matching
-          and completion.
+          and completion.  The default value is 'off'.
 
      'completion-prefix-display-length'
           The length in characters of the common prefix of a list of
@@ -7272,14 +7490,14 @@ Variable Settings
           This variable can be set to either 'emacs' or 'vi'.
 
      'emacs-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when emacs editing mode is active.  The
-          value is expanded like a key binding, so the standard set of
-          meta- and control prefixes and backslash escape sequences is
-          available.  Use the '\1' and '\2' escapes to begin and end
-          sequences of non-printing characters, which can be used to
-          embed a terminal control sequence into the mode string.  The
-          default is '@'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when emacs editing mode is active.  The value is
+          expanded like a key binding, so the standard set of meta- and
+          control prefixes and backslash escape sequences is available.
+          Use the '\1' and '\2' escapes to begin and end sequences of
+          non-printing characters, which can be used to embed a terminal
+          control sequence into the mode string.  The default is '@'.
 
      'enable-bracketed-paste'
           When set to 'On', Readline will configure the terminal in a
@@ -7343,13 +7561,13 @@ Variable Settings
 
      'keymap'
           Sets Readline's idea of the current keymap for key binding
-          commands.  Acceptable 'keymap' names are 'emacs',
+          commands.  Built-in 'keymap' names are 'emacs',
           'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
           'vi-command', and 'vi-insert'.  'vi' is equivalent to
           'vi-command' ('vi-move' is also a synonym); 'emacs' is
-          equivalent to 'emacs-standard'.  The default value is 'emacs'.
-          The value of the 'editing-mode' variable also affects the
-          default keymap.
+          equivalent to 'emacs-standard'.  Applications may add
+          additional names.  The default value is 'emacs'.  The value of
+          the 'editing-mode' variable also affects the default keymap.
 
      'keyseq-timeout'
           Specifies the duration Readline will wait for a character when
@@ -7431,10 +7649,10 @@ Variable Settings
           default value is 'off'.
 
      'show-mode-in-prompt'
-          If set to 'on', add a character to the beginning of the prompt
+          If set to 'on', add a string to the beginning of the prompt
           indicating the editing mode: emacs, vi command, or vi
-          insertion.  The mode strings are user-settable.  The default
-          value is 'off'.
+          insertion.  The mode strings are user-settable (e.g.,
+          EMACS-MODE-STRING).  The default value is 'off'.
 
      'skip-completed-text'
           If set to 'on', this alters the default completion behavior
@@ -7450,24 +7668,26 @@ Variable Settings
           'off'.
 
      'vi-cmd-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          command mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(cmd)'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when vi editing mode is active and in command mode.
+          The value is expanded like a key binding, so the standard set
+          of meta- and control prefixes and backslash escape sequences
+          is available.  Use the '\1' and '\2' escapes to begin and end
+          sequences of non-printing characters, which can be used to
+          embed a terminal control sequence into the mode string.  The
+          default is '(cmd)'.
 
      'vi-ins-mode-string'
-          This string is displayed immediately before the last line of
-          the primary prompt when vi editing mode is active and in
-          insertion mode.  The value is expanded like a key binding, so
-          the standard set of meta- and control prefixes and backslash
-          escape sequences is available.  Use the '\1' and '\2' escapes
-          to begin and end sequences of non-printing characters, which
-          can be used to embed a terminal control sequence into the mode
-          string.  The default is '(ins)'.
+          If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+          displayed immediately before the last line of the primary
+          prompt when vi editing mode is active and in insertion mode.
+          The value is expanded like a key binding, so the standard set
+          of meta- and control prefixes and backslash escape sequences
+          is available.  Use the '\1' and '\2' escapes to begin and end
+          sequences of non-printing characters, which can be used to
+          embed a terminal control sequence into the mode string.  The
+          default is '(ins)'.
 
      'visible-stats'
           If set to 'on', a character denoting a file's type is appended
@@ -7502,7 +7722,7 @@ Key Bindings
                Meta-Rubout: backward-kill-word
                Control-o: "> output"
 
-          In the above example, 'C-u' is bound to the function
+          In the example above, 'C-u' is bound to the function
           'universal-argument', 'M-DEL' is bound to the function
           'backward-kill-word', and 'C-o' is bound to run the macro
           expressed on the right hand side (that is, to insert the text
@@ -7594,8 +7814,9 @@ four parser directives used.
 '$if'
      The '$if' construct allows bindings to be made based on the editing
      mode, the terminal being used, or the application using Readline.
-     The text of the test extends to the end of the line; no characters
-     are required to isolate it.
+     The text of the test, after any comparison operator, extends to the
+     end of the line; unless otherwise noted, no characters are required
+     to isolate it.
 
      'mode'
           The 'mode=' form of the '$if' directive is used to test
@@ -7612,6 +7833,22 @@ four parser directives used.
           the portion of the terminal name before the first '-'.  This
           allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
 
+     'version'
+          The 'version' test may be used to perform comparisons against
+          specific Readline versions.  The 'version' expands to the
+          current Readline version.  The set of comparison operators
+          includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'.  The
+          version number supplied on the right side of the operator
+          consists of a major version number, an optional decimal point,
+          and an optional minor version (e.g., '7.1').  If the minor
+          version is omitted, it is assumed to be '0'.  The operator may
+          be separated from the string 'version' and from the version
+          number argument by whitespace.  The following example sets a
+          variable if the Readline version being used is 7.0 or newer:
+               $if version >= 7.0
+               set show-mode-in-prompt on
+               $endif
+
      'application'
           The APPLICATION construct is used to include
           application-specific settings.  Each program using the
@@ -7625,6 +7862,20 @@ four parser directives used.
                "\C-xq": "\eb\"\ef\""
                $endif
 
+     'variable'
+          The VARIABLE construct provides simple equality tests for
+          Readline variables and values.  The permitted comparison
+          operators are '=', '==', and '!='.  The variable name must be
+          separated from the comparison operator by whitespace; the
+          operator may be separated from the value on the right hand
+          side by whitespace.  Both string and boolean variables may be
+          tested.  Boolean variables must be tested against the values
+          ON and OFF.  The following example is equivalent to the
+          'mode=emacs' test described above:
+               $if editing-mode == emacs
+               set show-mode-in-prompt on
+               $endif
+
 '$endif'
      This command, as seen in the previous example, terminates an '$if'
      command.
@@ -7810,6 +8061,20 @@ File: bashref.info,  Node: Commands For Moving,  Next: Commands For History,  Up
      Move back to the start of the current or previous word.  Words are
      delimited by non-quoted shell metacharacters.
 
+'previous-screen-line ()'
+     Attempt to move point to the same physical screen column on the
+     previous physical screen line.  This will not have the desired
+     effect if the current Readline line does not take up more than one
+     physical line or if point is not greater than the length of the
+     prompt plus the screen width.
+
+'next-screen-line ()'
+     Attempt to move point to the same physical screen column on the
+     next physical screen line.  This will not have the desired effect
+     if the current Readline line does not take up more than one
+     physical line or if the length of the current Readline line is not
+     greater than the length of the prompt plus the screen width.
+
 'clear-screen (C-l)'
      Clear the screen and redraw the current line, leaving the current
      line at the top of the screen.
@@ -7876,13 +8141,13 @@ File: bashref.info,  Node: Commands For History,  Next: Commands For Text,  Prev
      string must match at the beginning of a history line.  This is a
      non-incremental search.  By default, this command is unbound.
 
-'history-substr-search-forward ()'
+'history-substring-search-forward ()'
      Search forward through the history for the string of characters
      between the start of the current line and the point.  The search
      string may match anywhere in a history line.  This is a
      non-incremental search.  By default, this command is unbound.
 
-'history-substr-search-backward ()'
+'history-substring-search-backward ()'
      Search backward through the history for the string of characters
      between the start of the current line and the point.  The search
      string may match anywhere in a history line.  This is a
@@ -7948,7 +8213,7 @@ File: bashref.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev
      assigned by default.  It allows Readline to insert the pasted text
      as a single unit without treating each character as if it had been
      read from the keyboard.  The characters are inserted as if each one
-     was bound to 'self-insert') instead of executing any editing
+     was bound to 'self-insert' instead of executing any editing
      commands.
 
 'transpose-chars (C-t)'
@@ -8226,9 +8491,10 @@ File: bashref.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up:
      Abort the current editing command and ring the terminal's bell
      (subject to the setting of 'bell-style').
 
-'do-uppercase-version (M-a, M-b, M-X, ...)'
-     If the metafied character X is lowercase, run the command that is
-     bound to the corresponding uppercase character.
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+     If the metafied character X is upper case, run the command that is
+     bound to the corresponding metafied lower case character.  The
+     behavior is undefined if X is already lower case.
 
 'prefix-meta (<ESC>)'
      Metafy the next character typed.  This is for keyboards without a
@@ -8347,10 +8613,11 @@ File: bashref.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up:
 
 '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.
+     relative to the current line from the history for editing.  A
+     numeric argument, if supplied, specifies the history entry to use
+     instead of the current line.
 
-'edit-and-execute-command (C-xC-e)'
+'edit-and-execute-command (C-x C-e)'
      Invoke an editor on the current command line, and execute the
      result as shell commands.  Bash attempts to invoke '$VISUAL',
      '$EDITOR', and 'emacs' as the editor, in that order.
@@ -8395,7 +8662,10 @@ command word is a full pathname, a compspec for the full pathname is
 searched for first.  If no compspec is found for the full pathname, an
 attempt is made to find a compspec for the portion following the final
 slash.  If those searches do not result in a compspec, any compspec
-defined with the '-D' option to 'complete' is used as the default.
+defined with the '-D' option to 'complete' is used as the default.  If
+there is no default compspec, Bash attempts alias expansion on the
+command word as a final resort, and attempts to find a compspec for the
+command word from any successful expansion
 
    Once a compspec has been found, it is used to generate the list of
 matching words.  If a compspec is not found, the default Bash completion
@@ -8414,13 +8684,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used.
 
    Next, the string specified as the argument to the '-W' option is
 considered.  The string is first split using the characters in the 'IFS'
-special variable as delimiters.  Shell quoting is honored.  Each word is
-then expanded using brace expansion, tilde expansion, parameter and
-variable expansion, command substitution, and arithmetic expansion, as
-described above (*note Shell Expansions::).  The results are split using
-the rules described above (*note Word Splitting::).  The results of the
-expansion are prefix-matched against the word being completed, and the
-matching words become the possible completions.
+special variable as delimiters.  Shell quoting is honored within the
+string, in order to provide a mechanism for the words to contain shell
+metacharacters or characters in the value of 'IFS'.  Each word is then
+expanded using brace expansion, tilde expansion, parameter and variable
+expansion, command substitution, and arithmetic expansion, as described
+above (*note Shell Expansions::).  The results are split using the rules
+described above (*note Word Splitting::).  The results of the expansion
+are prefix-matched against the word being completed, and the matching
+words become the possible completions.
 
    After these matches have been generated, any shell function or
 command specified with the '-F' and '-C' options is invoked.  When the
@@ -8540,26 +8812,34 @@ happening.
      no matches were generated.
 
 'complete'
-          complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST]
-          [-F FUNCTION] [-C COMMAND] [-X FILTERPAT]
+          complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT]
+          [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT]
           [-P PREFIX] [-S SUFFIX] NAME [NAME ...]
-          complete -pr [-DE] [NAME ...]
+          complete -pr [-DEI] [NAME ...]
 
      Specify how arguments to each NAME should be completed.  If the
      '-p' option is supplied, or if no options are supplied, existing
      completion specifications are printed in a way that allows them to
      be reused as input.  The '-r' option removes a completion
      specification for each NAME, or, if no NAMEs are supplied, all
-     completion specifications.  The '-D' option indicates that the
-     remaining options and actions should apply to the "default" command
+     completion specifications.  The '-D' option indicates that other
+     supplied options and actions should apply to the "default" command
      completion; that is, completion attempted on a command for which no
      completion has previously been defined.  The '-E' option indicates
-     that the remaining options and actions should apply to "empty"
+     that other supplied options and actions should apply to "empty"
      command completion; that is, completion attempted on a blank line.
+     The '-I' option indicates that other supplied options and actions
+     should apply to completion on the inital non-assignment word on the
+     line, or after a command delimiter such as ';' or '|', which is
+     usually command name completion.  If multiple options are supplied,
+     the '-D' option takes precedence over '-E', and both take
+     precedence over '-I'.  If any of '-D', '-E', or '-I' are supplied,
+     any other NAME arguments are ignored; these completions only apply
+     to the case specified by the option.
 
      The process of applying these completion specifications when word
      completion is attempted is described above (*note Programmable
-     Completion::).  The '-D' option takes precedence over '-E'.
+     Completion::).
 
      Other options, if specified, have the following meanings.  The
      arguments to the '-G', '-W', and '-X' options (and, if necessary,
@@ -8586,7 +8866,7 @@ happening.
           'filenames'
                Tell Readline that the compspec generates filenames, so
                it can perform any filename-specific processing (like
-               adding a slash to directory names quoting special
+               adding a slash to directory names, quoting special
                characters, or suppressing trailing spaces).  This option
                is intended to be used with shell functions specified
                with '-F'.
@@ -8739,20 +9019,24 @@ happening.
      completion specification.
 
 'compopt'
-          compopt [-o OPTION] [-DE] [+o OPTION] [NAME]
+          compopt [-o OPTION] [-DEI] [+o OPTION] [NAME]
      Modify completion options for each NAME according to the OPTIONs,
      or for the currently-executing completion if no NAMEs are supplied.
      If no OPTIONs are given, display the completion options for each
      NAME or the current completion.  The possible values of OPTION are
      those valid for the 'complete' builtin described above.  The '-D'
-     option indicates that the remaining options should apply to the
+     option indicates that other supplied options should apply to the
      "default" command completion; that is, completion attempted on a
      command for which no completion has previously been defined.  The
-     '-E' option indicates that the remaining options should apply to
+     '-E' option indicates that other supplied options should apply to
      "empty" command completion; that is, completion attempted on a
-     blank line.
+     blank line.  The '-I' option indicates that other supplied options
+     should apply to completion on the inital non-assignment word on the
+     line, or after a command delimiter such as ';' or '|', which is
+     usually command name completion.
 
-     The '-D' option takes precedence over '-E'.
+     If multiple options are supplied, the '-D' option takes precedence
+     over '-E', and both take precedence over '-I'
 
      The return value is true unless an invalid option is supplied, an
      attempt is made to modify the options for a NAME for which no
@@ -8770,10 +9054,9 @@ function and bind it to a particular command using 'complete -F'.
 
    The following function provides completions for the 'cd' builtin.  It
 is a reasonably good example of what shell functions must do when used
-for completion.  This function uses the word passsed as '$2' to
-determine the directory name to complete.  You can also use the
-'COMP_WORDS' array variable; the current word is indexed by the
-'COMP_CWORD' variable.
+for completion.  This function uses the word passed as '$2' to determine
+the directory name to complete.  You can also use the 'COMP_WORDS' array
+variable; the current word is indexed by the 'COMP_CWORD' variable.
 
    The function relies on the 'complete' and 'compgen' builtins to do
 much of the work, adding only the things that the Bash 'cd' does beyond
@@ -8797,7 +9080,7 @@ retrieves the completions from there when the function returns.
          local cur _skipdot _cdpath
          local i j k
 
-         # Tilde expansion, with side effect of expanding tilde to full pathname
+         # Tilde expansion, which also expands tilde to full pathname
          case "$2" in
          \~*)    eval cur="$2" ;;
          *)      cur=$2 ;;
@@ -8942,7 +9225,7 @@ of a multi-line command in the same history entry, adding semicolons
 where necessary to preserve syntactic correctness.  The 'lithist' shell
 option causes the shell to save the command with embedded newlines
 instead of semicolons.  The 'shopt' builtin is used to set these
-options.  *Note Bash Builtins::, for a description of 'shopt'.
+options.  *Note The Shopt Builtin::, for a description of 'shopt'.
 
 \1f
 File: bashref.info,  Node: Bash History Builtins,  Next: History Interaction,  Prev: Bash History Facilities,  Up: Using History Interactively
@@ -8962,8 +9245,8 @@ history file.
      FIRST and LAST may be specified as a string (to locate the most
      recent command beginning with that string) or as a number (an index
      into the history list, where a negative number is used as an offset
-     from the current command number).  If LAST is not specified it is
-     set to FIRST.  If FIRST is not specified it is set to the previous
+     from the current command number).  If LAST is not specified, it is
+     set to FIRST.  If FIRST is not specified, it is set to the previous
      command for editing and -16 for listing.  If the '-l' flag is
      given, the commands are listed on standard output.  The '-n' flag
      suppresses the command numbers when listing.  The '-r' flag
@@ -8987,6 +9270,7 @@ history file.
           history [N]
           history -c
           history -d OFFSET
+          history -d START-END
           history [-anrw] [FILENAME]
           history -ps ARG
 
@@ -9005,8 +9289,18 @@ history file.
           options to replace the history list completely.
 
      '-d OFFSET'
-          Delete the history entry at position OFFSET.  OFFSET should be
-          specified as it appears when the history is displayed.
+          Delete the history entry at position OFFSET.  If OFFSET is
+          positive, it should be specified as it appears when the
+          history is displayed.  If OFFSET is negative, it is
+          interpreted as relative to one greater than the last history
+          position, so negative indices count back from the end of the
+          history, and an index of '-1' refers to the current 'history
+          -d' command.
+
+     '-d START-END'
+          Delete the history entries between positions START and END,
+          inclusive.  Positive and negative values for START and END are
+          interpreted as described above.
 
      '-a'
           Append the new history lines to the history file.  These are
@@ -9055,7 +9349,9 @@ a previous command into the current input line, or fix errors in
 previous commands quickly.
 
    History expansion is performed immediately after a complete line is
-read, before the shell breaks it into words.
+read, before the shell breaks it into words, and is performed on each
+line individually.  Bash attempts to inform the history expansion
+functions about quoting still in effect from previous lines.
 
    History expansion takes place in two parts.  The first is to
 determine which line from the history list should be used during
@@ -9066,20 +9362,30 @@ are called "words".  Various "modifiers" are available to manipulate the
 selected words.  The line is broken into words in the same fashion that
 Bash does, so that several words surrounded by quotes are considered one
 word.  History expansions are introduced by the appearance of the
-history expansion character, which is '!' by default.  Only '\' and '''
-may be used to escape the history expansion character, but the history
-expansion character is also treated as quoted if it immediately precedes
-the closing double quote in a double-quoted string.
-
-   Several shell options settable with the 'shopt' builtin (*note Bash
-Builtins::) may be used to tailor the behavior of history expansion.  If
-the 'histverify' shell option is enabled, and Readline is being used,
-history substitutions are not immediately passed to the shell parser.
-Instead, the expanded line is reloaded into the Readline editing buffer
-for further modification.  If Readline is being used, and the
-'histreedit' shell option is enabled, a failed history expansion will be
-reloaded into the Readline editing buffer for correction.  The '-p'
-option to the 'history' builtin command may be used to see what a
+history expansion character, which is '!' by default.
+
+   History expansion implements shell-like quoting conventions: a
+backslash can be used to remove the special handling for the next
+character; single quotes enclose verbatim sequences of characters, and
+can be used to inhibit history expansion; and characters enclosed within
+double quotes may be subject to history expansion, since backslash can
+escape the history expansion character, but single quotes may not, since
+they are not treated specially within double quotes.
+
+   When using the shell, only '\' and ''' may be used to escape the
+history expansion character, but the history expansion character is also
+treated as quoted if it immediately precedes the closing double quote in
+a double-quoted string.
+
+   Several shell options settable with the 'shopt' builtin (*note The
+Shopt Builtin::) may be used to tailor the behavior of history
+expansion.  If the 'histverify' shell option is enabled, and Readline is
+being used, history substitutions are not immediately passed to the
+shell parser.  Instead, the expanded line is reloaded into the Readline
+editing buffer for further modification.  If Readline is being used, and
+the 'histreedit' shell option is enabled, a failed history expansion
+will be reloaded into the Readline editing buffer for correction.  The
+'-p' option to the 'history' builtin command may be used to see what a
 history expansion will do before using it.  The '-s' option to the
 'history' builtin may be used to add commands to the end of the history
 list without actually executing them, so that they are available for
@@ -9319,10 +9625,24 @@ don't want to keep, you may remove or edit it.
    To find out more about the options and arguments that the 'configure'
 script understands, type
 
-     bash-2.04$ ./configure --help
+     bash-4.2$ ./configure --help
 
 at the Bash prompt in your Bash source directory.
 
+   If you want to build Bash in a directory separate from the source
+directory - to build for multiple architectures, for example - just use
+the full path to the configure script.  The following commands will
+build bash in a directory under '/usr/local/build' from the source code
+in '/usr/local/src/bash-4.4':
+
+     mkdir /usr/local/build/bash-4.4
+     cd /usr/local/build/bash-4.4
+     bash /usr/local/src/bash-4.4/configure
+     make
+
+   See *note Compiling For Multiple Architectures:: for more information
+about building in a directory separate from the source.
+
    If you need to do unusual things to compile Bash, please try to
 figure out how 'configure' could check whether or not to do them, and
 mail diffs or instructions to <bash-maintainers@gnu.org> so they can be
@@ -9369,10 +9689,10 @@ time, by placing the object files for each architecture in their own
 directory.  To do this, you must use a version of 'make' that supports
 the 'VPATH' variable, such as GNU 'make'.  'cd' to the directory where
 you want the object files and executables to go and run the 'configure'
-script from the source directory.  You may need to supply the
-'--srcdir=PATH' argument to tell 'configure' where the source files are.
-'configure' automatically checks for the source code in the directory
-that 'configure' is in and in '..'.
+script from the source directory (*note Basic Installation::).  You may
+need to supply the '--srcdir=PATH' argument to tell 'configure' where
+the source files are.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.
 
    If you have to use a 'make' that does not supports the 'VPATH'
 variable, you can compile Bash for one architecture at a time in the
@@ -9538,8 +9858,8 @@ and linked, rather than changing run-time features.
 
 '--enable-largefile'
      Enable support for large files
-     (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if
-     the operating system requires special compiler options to build
+     (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the
+     operating system requires special compiler options to build
      programs which can access large files.  This is enabled by default,
      if the operating system provides large file support.
 
@@ -9611,6 +9931,12 @@ unless the operating system does not provide the necessary support.
 '--enable-debugger'
      Include support for the bash debugger (distributed separately).
 
+'--enable-dev-fd-stat-broken'
+     If calling 'stat' on /dev/fd/N returns different results than
+     calling 'fstat' on file descriptor N, supply this option to enable
+     a workaround.  This has implications for conditional commands that
+     test file attributes.
+
 '--enable-direxpand-default'
      Cause the 'direxpand' shell option (*note The Shopt Builtin::) to
      be enabled by default when the shell starts.  It is normally
@@ -9681,7 +10007,7 @@ unless the operating system does not provide the necessary support.
 
 '--enable-prompt-string-decoding'
      Turn on the interpretation of a number of backslash-escaped
-     characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt
+     characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
      strings.  See *note Controlling the Prompt::, for a complete list
      of prompt string escape sequences.
 
@@ -10636,7 +10962,7 @@ D.1 Index of Shell Builtin Commands
 * ::                                     Bourne Shell Builtins.
                                                               (line  11)
 * [:                                     Bourne Shell Builtins.
-                                                              (line 268)
+                                                              (line 269)
 * alias:                                 Bash Builtins.       (line  11)
 * bg:                                    Job Control Builtins.
                                                               (line   7)
@@ -10653,77 +10979,77 @@ D.1 Index of Shell Builtin Commands
 * complete:                              Programmable Completion Builtins.
                                                               (line  30)
 * compopt:                               Programmable Completion Builtins.
-                                                              (line 229)
+                                                              (line 237)
 * continue:                              Bourne Shell Builtins.
                                                               (line  85)
 * declare:                               Bash Builtins.       (line 148)
 * dirs:                                  Directory Stack Builtins.
                                                               (line   7)
 * disown:                                Job Control Builtins.
-                                                              (line  89)
-* echo:                                  Bash Builtins.       (line 245)
-* enable:                                Bash Builtins.       (line 294)
+                                                              (line  92)
+* echo:                                  Bash Builtins.       (line 246)
+* enable:                                Bash Builtins.       (line 295)
 * eval:                                  Bourne Shell Builtins.
                                                               (line  94)
 * exec:                                  Bourne Shell Builtins.
                                                               (line 102)
 * exit:                                  Bourne Shell Builtins.
-                                                              (line 119)
+                                                              (line 120)
 * export:                                Bourne Shell Builtins.
-                                                              (line 126)
+                                                              (line 127)
 * fc:                                    Bash History Builtins.
                                                               (line  10)
 * fg:                                    Job Control Builtins.
                                                               (line  17)
 * getopts:                               Bourne Shell Builtins.
-                                                              (line 142)
+                                                              (line 143)
 * hash:                                  Bourne Shell Builtins.
-                                                              (line 185)
-* help:                                  Bash Builtins.       (line 323)
+                                                              (line 186)
+* help:                                  Bash Builtins.       (line 324)
 * history:                               Bash History Builtins.
                                                               (line  40)
 * jobs:                                  Job Control Builtins.
                                                               (line  27)
 * kill:                                  Job Control Builtins.
                                                               (line  58)
-* let:                                   Bash Builtins.       (line 342)
-* local:                                 Bash Builtins.       (line 350)
-* logout:                                Bash Builtins.       (line 364)
-* mapfile:                               Bash Builtins.       (line 369)
+* let:                                   Bash Builtins.       (line 343)
+* local:                                 Bash Builtins.       (line 351)
+* logout:                                Bash Builtins.       (line 365)
+* mapfile:                               Bash Builtins.       (line 370)
 * popd:                                  Directory Stack Builtins.
                                                               (line  35)
-* printf:                                Bash Builtins.       (line 414)
+* printf:                                Bash Builtins.       (line 416)
 * pushd:                                 Directory Stack Builtins.
                                                               (line  53)
 * pwd:                                   Bourne Shell Builtins.
-                                                              (line 205)
-* read:                                  Bash Builtins.       (line 458)
-* readarray:                             Bash Builtins.       (line 550)
+                                                              (line 206)
+* read:                                  Bash Builtins.       (line 460)
+* readarray:                             Bash Builtins.       (line 554)
 * readonly:                              Bourne Shell Builtins.
-                                                              (line 215)
+                                                              (line 216)
 * return:                                Bourne Shell Builtins.
-                                                              (line 234)
+                                                              (line 235)
 * set:                                   The Set Builtin.     (line  11)
 * shift:                                 Bourne Shell Builtins.
-                                                              (line 255)
+                                                              (line 256)
 * shopt:                                 The Shopt Builtin.   (line   9)
-* source:                                Bash Builtins.       (line 559)
+* source:                                Bash Builtins.       (line 563)
 * suspend:                               Job Control Builtins.
-                                                              (line 101)
+                                                              (line 104)
 * test:                                  Bourne Shell Builtins.
-                                                              (line 268)
+                                                              (line 269)
 * times:                                 Bourne Shell Builtins.
-                                                              (line 343)
+                                                              (line 348)
 * trap:                                  Bourne Shell Builtins.
-                                                              (line 349)
-* type:                                  Bash Builtins.       (line 564)
-* typeset:                               Bash Builtins.       (line 596)
-* ulimit:                                Bash Builtins.       (line 602)
+                                                              (line 354)
+* type:                                  Bash Builtins.       (line 568)
+* typeset:                               Bash Builtins.       (line 600)
+* ulimit:                                Bash Builtins.       (line 606)
 * umask:                                 Bourne Shell Builtins.
-                                                              (line 398)
-* unalias:                               Bash Builtins.       (line 701)
+                                                              (line 403)
+* unalias:                               Bash Builtins.       (line 705)
 * unset:                                 Bourne Shell Builtins.
-                                                              (line 416)
+                                                              (line 421)
 * wait:                                  Job Control Builtins.
                                                               (line  76)
 
@@ -10738,9 +11064,9 @@ D.2 Index of Shell Reserved Words
 
 * !:                                     Pipelines.           (line   9)
 * [[:                                    Conditional Constructs.
-                                                              (line 121)
+                                                              (line 124)
 * ]]:                                    Conditional Constructs.
-                                                              (line 121)
+                                                              (line 124)
 * {:                                     Command Grouping.    (line  21)
 * }:                                     Command Grouping.    (line  21)
 * case:                                  Conditional Constructs.
@@ -10762,7 +11088,7 @@ D.2 Index of Shell Reserved Words
 * in:                                    Conditional Constructs.
                                                               (line  28)
 * select:                                Conditional Constructs.
-                                                              (line  79)
+                                                              (line  82)
 * then:                                  Conditional Constructs.
                                                               (line   7)
 * time:                                  Pipelines.           (line   9)
@@ -10778,45 +11104,46 @@ D.3 Parameter and Variable Index
 \0\b[index\0\b]
 * Menu:
 
-* !:                                     Special Parameters.  (line  50)
-* #:                                     Special Parameters.  (line  33)
-* $:                                     Special Parameters.  (line  45)
-* $!:                                    Special Parameters.  (line  51)
-* $#:                                    Special Parameters.  (line  34)
-* $$:                                    Special Parameters.  (line  46)
+* !:                                     Special Parameters.  (line  56)
+* #:                                     Special Parameters.  (line  39)
+* $:                                     Special Parameters.  (line  51)
+* $!:                                    Special Parameters.  (line  57)
+* $#:                                    Special Parameters.  (line  40)
+* $$:                                    Special Parameters.  (line  52)
 * $*:                                    Special Parameters.  (line  10)
-* $-:                                    Special Parameters.  (line  41)
-* $0:                                    Special Parameters.  (line  56)
-* $?:                                    Special Parameters.  (line  37)
+* $-:                                    Special Parameters.  (line  47)
+* $0:                                    Special Parameters.  (line  62)
+* $?:                                    Special Parameters.  (line  43)
 * $@:                                    Special Parameters.  (line  23)
-* $_:                                    Special Parameters.  (line  65)
+* $_:                                    Special Parameters.  (line  71)
 * *:                                     Special Parameters.  (line   9)
-* -:                                     Special Parameters.  (line  40)
-* 0:                                     Special Parameters.  (line  55)
-* ?:                                     Special Parameters.  (line  36)
+* -:                                     Special Parameters.  (line  46)
+* 0:                                     Special Parameters.  (line  61)
+* ?:                                     Special Parameters.  (line  42)
 * @:                                     Special Parameters.  (line  22)
-* _:                                     Special Parameters.  (line  64)
+* _:                                     Special Parameters.  (line  70)
 * auto_resume:                           Job Control Variables.
                                                               (line   6)
 * BASH:                                  Bash Variables.      (line  13)
 * BASHOPTS:                              Bash Variables.      (line  16)
 * BASHPID:                               Bash Variables.      (line  25)
-* BASH_ALIASES:                          Bash Variables.      (line  30)
-* BASH_ARGC:                             Bash Variables.      (line  39)
-* BASH_ARGV:                             Bash Variables.      (line  49)
-* BASH_CMDS:                             Bash Variables.      (line  59)
-* BASH_COMMAND:                          Bash Variables.      (line  68)
-* BASH_COMPAT:                           Bash Variables.      (line  73)
-* BASH_ENV:                              Bash Variables.      (line  88)
-* BASH_EXECUTION_STRING:                 Bash Variables.      (line  94)
-* BASH_LINENO:                           Bash Variables.      (line  97)
-* BASH_LOADABLES_PATH:                   Bash Variables.      (line 105)
-* BASH_REMATCH:                          Bash Variables.      (line 109)
-* BASH_SOURCE:                           Bash Variables.      (line 117)
-* BASH_SUBSHELL:                         Bash Variables.      (line 124)
-* BASH_VERSINFO:                         Bash Variables.      (line 129)
-* BASH_VERSION:                          Bash Variables.      (line 152)
-* BASH_XTRACEFD:                         Bash Variables.      (line 155)
+* BASH_ALIASES:                          Bash Variables.      (line  32)
+* BASH_ARGC:                             Bash Variables.      (line  41)
+* BASH_ARGV:                             Bash Variables.      (line  54)
+* BASH_ARGV0:                            Bash Variables.      (line  66)
+* BASH_CMDS:                             Bash Variables.      (line  74)
+* BASH_COMMAND:                          Bash Variables.      (line  83)
+* BASH_COMPAT:                           Bash Variables.      (line  88)
+* BASH_ENV:                              Bash Variables.      (line 103)
+* BASH_EXECUTION_STRING:                 Bash Variables.      (line 109)
+* BASH_LINENO:                           Bash Variables.      (line 112)
+* BASH_LOADABLES_PATH:                   Bash Variables.      (line 120)
+* BASH_REMATCH:                          Bash Variables.      (line 124)
+* BASH_SOURCE:                           Bash Variables.      (line 132)
+* BASH_SUBSHELL:                         Bash Variables.      (line 139)
+* BASH_VERSINFO:                         Bash Variables.      (line 144)
+* BASH_VERSION:                          Bash Variables.      (line 167)
+* BASH_XTRACEFD:                         Bash Variables.      (line 170)
 * bell-style:                            Readline Init File Syntax.
                                                               (line  38)
 * bind-tty-special-chars:                Readline Init File Syntax.
@@ -10825,12 +11152,12 @@ D.3 Parameter and Variable Index
                                                               (line  50)
 * CDPATH:                                Bourne Shell Variables.
                                                               (line   9)
-* CHILD_MAX:                             Bash Variables.      (line 166)
+* CHILD_MAX:                             Bash Variables.      (line 181)
 * colored-completion-prefix:             Readline Init File Syntax.
                                                               (line  55)
 * colored-stats:                         Readline Init File Syntax.
                                                               (line  62)
-* COLUMNS:                               Bash Variables.      (line 173)
+* COLUMNS:                               Bash Variables.      (line 188)
 * comment-begin:                         Readline Init File Syntax.
                                                               (line  68)
 * completion-display-width:              Readline Init File Syntax.
@@ -10843,88 +11170,91 @@ D.3 Parameter and Variable Index
                                                               (line  91)
 * completion-query-items:                Readline Init File Syntax.
                                                               (line  98)
-* COMPREPLY:                             Bash Variables.      (line 225)
-* COMP_CWORD:                            Bash Variables.      (line 179)
-* COMP_KEY:                              Bash Variables.      (line 208)
-* COMP_LINE:                             Bash Variables.      (line 185)
-* COMP_POINT:                            Bash Variables.      (line 190)
-* COMP_TYPE:                             Bash Variables.      (line 198)
-* COMP_WORDBREAKS:                       Bash Variables.      (line 212)
-* COMP_WORDS:                            Bash Variables.      (line 218)
+* COMPREPLY:                             Bash Variables.      (line 240)
+* COMP_CWORD:                            Bash Variables.      (line 194)
+* COMP_KEY:                              Bash Variables.      (line 223)
+* COMP_LINE:                             Bash Variables.      (line 200)
+* COMP_POINT:                            Bash Variables.      (line 205)
+* COMP_TYPE:                             Bash Variables.      (line 213)
+* COMP_WORDBREAKS:                       Bash Variables.      (line 227)
+* COMP_WORDS:                            Bash Variables.      (line 233)
 * convert-meta:                          Readline Init File Syntax.
                                                               (line 108)
-* COPROC:                                Bash Variables.      (line 231)
-* DIRSTACK:                              Bash Variables.      (line 235)
+* COPROC:                                Bash Variables.      (line 246)
+* DIRSTACK:                              Bash Variables.      (line 250)
 * disable-completion:                    Readline Init File Syntax.
                                                               (line 116)
 * echo-control-characters:               Readline Init File Syntax.
                                                               (line 121)
 * editing-mode:                          Readline Init File Syntax.
                                                               (line 126)
-* EMACS:                                 Bash Variables.      (line 245)
+* EMACS:                                 Bash Variables.      (line 260)
 * emacs-mode-string:                     Readline Init File Syntax.
                                                               (line 132)
 * enable-bracketed-paste:                Readline Init File Syntax.
                                                               (line 142)
 * enable-keypad:                         Readline Init File Syntax.
                                                               (line 150)
-* ENV:                                   Bash Variables.      (line 250)
-* EUID:                                  Bash Variables.      (line 254)
-* EXECIGNORE:                            Bash Variables.      (line 258)
+* ENV:                                   Bash Variables.      (line 265)
+* EPOCHREALTIME:                         Bash Variables.      (line 269)
+* EPOCHSECONDS:                          Bash Variables.      (line 277)
+* EUID:                                  Bash Variables.      (line 284)
+* EXECIGNORE:                            Bash Variables.      (line 288)
 * expand-tilde:                          Readline Init File Syntax.
                                                               (line 161)
-* FCEDIT:                                Bash Variables.      (line 271)
-* FIGNORE:                               Bash Variables.      (line 275)
-* FUNCNAME:                              Bash Variables.      (line 281)
-* FUNCNEST:                              Bash Variables.      (line 298)
-* GLOBIGNORE:                            Bash Variables.      (line 303)
-* GROUPS:                                Bash Variables.      (line 310)
-* histchars:                             Bash Variables.      (line 316)
-* HISTCMD:                               Bash Variables.      (line 331)
-* HISTCONTROL:                           Bash Variables.      (line 336)
-* HISTFILE:                              Bash Variables.      (line 352)
-* HISTFILESIZE:                          Bash Variables.      (line 356)
-* HISTIGNORE:                            Bash Variables.      (line 367)
+* FCEDIT:                                Bash Variables.      (line 301)
+* FIGNORE:                               Bash Variables.      (line 305)
+* FUNCNAME:                              Bash Variables.      (line 311)
+* FUNCNEST:                              Bash Variables.      (line 328)
+* GLOBIGNORE:                            Bash Variables.      (line 333)
+* GROUPS:                                Bash Variables.      (line 340)
+* histchars:                             Bash Variables.      (line 346)
+* HISTCMD:                               Bash Variables.      (line 361)
+* HISTCONTROL:                           Bash Variables.      (line 366)
+* HISTFILE:                              Bash Variables.      (line 382)
+* HISTFILESIZE:                          Bash Variables.      (line 386)
+* HISTIGNORE:                            Bash Variables.      (line 397)
 * history-preserve-point:                Readline Init File Syntax.
                                                               (line 165)
 * history-size:                          Readline Init File Syntax.
                                                               (line 171)
-* HISTSIZE:                              Bash Variables.      (line 387)
-* HISTTIMEFORMAT:                        Bash Variables.      (line 394)
+* HISTSIZE:                              Bash Variables.      (line 417)
+* HISTTIMEFORMAT:                        Bash Variables.      (line 424)
 * HOME:                                  Bourne Shell Variables.
                                                               (line  13)
 * horizontal-scroll-mode:                Readline Init File Syntax.
                                                               (line 180)
-* HOSTFILE:                              Bash Variables.      (line 402)
-* HOSTNAME:                              Bash Variables.      (line 413)
-* HOSTTYPE:                              Bash Variables.      (line 416)
+* HOSTFILE:                              Bash Variables.      (line 432)
+* HOSTNAME:                              Bash Variables.      (line 443)
+* HOSTTYPE:                              Bash Variables.      (line 446)
 * IFS:                                   Bourne Shell Variables.
                                                               (line  18)
-* IGNOREEOF:                             Bash Variables.      (line 419)
+* IGNOREEOF:                             Bash Variables.      (line 449)
 * input-meta:                            Readline Init File Syntax.
                                                               (line 187)
-* INPUTRC:                               Bash Variables.      (line 429)
+* INPUTRC:                               Bash Variables.      (line 459)
+* INSIDE_EMACS:                          Bash Variables.      (line 463)
 * isearch-terminators:                   Readline Init File Syntax.
                                                               (line 195)
 * keymap:                                Readline Init File Syntax.
                                                               (line 202)
-* LANG:                                  Bash Variables.      (line 433)
-* LC_ALL:                                Bash Variables.      (line 437)
-* LC_COLLATE:                            Bash Variables.      (line 441)
-* LC_CTYPE:                              Bash Variables.      (line 448)
+* LANG:                                  Bash Variables.      (line 469)
+* LC_ALL:                                Bash Variables.      (line 473)
+* LC_COLLATE:                            Bash Variables.      (line 477)
+* LC_CTYPE:                              Bash Variables.      (line 484)
 * LC_MESSAGES:                           Locale Translation.  (line  11)
-* LC_MESSAGES <1>:                       Bash Variables.      (line 453)
-* LC_NUMERIC:                            Bash Variables.      (line 457)
-* LC_TIME:                               Bash Variables.      (line 461)
-* LINENO:                                Bash Variables.      (line 465)
-* LINES:                                 Bash Variables.      (line 469)
-* MACHTYPE:                              Bash Variables.      (line 475)
+* LC_MESSAGES <1>:                       Bash Variables.      (line 489)
+* LC_NUMERIC:                            Bash Variables.      (line 493)
+* LC_TIME:                               Bash Variables.      (line 497)
+* LINENO:                                Bash Variables.      (line 501)
+* LINES:                                 Bash Variables.      (line 505)
+* MACHTYPE:                              Bash Variables.      (line 511)
 * MAIL:                                  Bourne Shell Variables.
                                                               (line  22)
-* MAILCHECK:                             Bash Variables.      (line 479)
+* MAILCHECK:                             Bash Variables.      (line 515)
 * MAILPATH:                              Bourne Shell Variables.
                                                               (line  27)
-* MAPFILE:                               Bash Variables.      (line 487)
+* MAPFILE:                               Bash Variables.      (line 523)
 * mark-modified-lines:                   Readline Init File Syntax.
                                                               (line 232)
 * mark-symlinked-directories:            Readline Init File Syntax.
@@ -10935,42 +11265,42 @@ D.3 Parameter and Variable Index
                                                               (line 249)
 * meta-flag:                             Readline Init File Syntax.
                                                               (line 187)
-* OLDPWD:                                Bash Variables.      (line 491)
+* OLDPWD:                                Bash Variables.      (line 527)
 * OPTARG:                                Bourne Shell Variables.
                                                               (line  34)
-* OPTERR:                                Bash Variables.      (line 494)
+* OPTERR:                                Bash Variables.      (line 530)
 * OPTIND:                                Bourne Shell Variables.
                                                               (line  38)
-* OSTYPE:                                Bash Variables.      (line 498)
+* OSTYPE:                                Bash Variables.      (line 534)
 * output-meta:                           Readline Init File Syntax.
                                                               (line 254)
 * page-completions:                      Readline Init File Syntax.
                                                               (line 260)
 * PATH:                                  Bourne Shell Variables.
                                                               (line  42)
-* PIPESTATUS:                            Bash Variables.      (line 501)
-* POSIXLY_CORRECT:                       Bash Variables.      (line 506)
-* PPID:                                  Bash Variables.      (line 515)
-* PROMPT_COMMAND:                        Bash Variables.      (line 519)
-* PROMPT_DIRTRIM:                        Bash Variables.      (line 523)
-* PS0:                                   Bash Variables.      (line 529)
+* PIPESTATUS:                            Bash Variables.      (line 537)
+* POSIXLY_CORRECT:                       Bash Variables.      (line 542)
+* PPID:                                  Bash Variables.      (line 552)
+* PROMPT_COMMAND:                        Bash Variables.      (line 556)
+* PROMPT_DIRTRIM:                        Bash Variables.      (line 560)
+* PS0:                                   Bash Variables.      (line 566)
 * PS1:                                   Bourne Shell Variables.
                                                               (line  48)
 * PS2:                                   Bourne Shell Variables.
                                                               (line  53)
-* PS3:                                   Bash Variables.      (line 534)
-* PS4:                                   Bash Variables.      (line 539)
-* PWD:                                   Bash Variables.      (line 545)
-* RANDOM:                                Bash Variables.      (line 548)
-* READLINE_LINE:                         Bash Variables.      (line 553)
-* READLINE_POINT:                        Bash Variables.      (line 557)
-* REPLY:                                 Bash Variables.      (line 561)
+* PS3:                                   Bash Variables.      (line 571)
+* PS4:                                   Bash Variables.      (line 576)
+* PWD:                                   Bash Variables.      (line 584)
+* RANDOM:                                Bash Variables.      (line 587)
+* READLINE_LINE:                         Bash Variables.      (line 592)
+* READLINE_POINT:                        Bash Variables.      (line 596)
+* REPLY:                                 Bash Variables.      (line 600)
 * revert-all-at-newline:                 Readline Init File Syntax.
                                                               (line 270)
-* SECONDS:                               Bash Variables.      (line 564)
-* SHELL:                                 Bash Variables.      (line 570)
-* SHELLOPTS:                             Bash Variables.      (line 575)
-* SHLVL:                                 Bash Variables.      (line 584)
+* SECONDS:                               Bash Variables.      (line 603)
+* SHELL:                                 Bash Variables.      (line 609)
+* SHELLOPTS:                             Bash Variables.      (line 614)
+* SHLVL:                                 Bash Variables.      (line 623)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
                                                               (line 276)
 * show-all-if-unmodified:                Readline Init File Syntax.
@@ -10981,16 +11311,16 @@ D.3 Parameter and Variable Index
                                                               (line 297)
 * TEXTDOMAIN:                            Locale Translation.  (line  11)
 * TEXTDOMAINDIR:                         Locale Translation.  (line  11)
-* TIMEFORMAT:                            Bash Variables.      (line 589)
-* TMOUT:                                 Bash Variables.      (line 627)
-* TMPDIR:                                Bash Variables.      (line 639)
-* UID:                                   Bash Variables.      (line 643)
+* TIMEFORMAT:                            Bash Variables.      (line 628)
+* TMOUT:                                 Bash Variables.      (line 666)
+* TMPDIR:                                Bash Variables.      (line 678)
+* UID:                                   Bash Variables.      (line 682)
 * vi-cmd-mode-string:                    Readline Init File Syntax.
                                                               (line 310)
 * vi-ins-mode-string:                    Readline Init File Syntax.
-                                                              (line 320)
+                                                              (line 321)
 * visible-stats:                         Readline Init File Syntax.
-                                                              (line 330)
+                                                              (line 332)
 
 \1f
 File: bashref.info,  Node: Function Index,  Next: Concept Index,  Prev: Variable Index,  Up: Indexes
@@ -11006,7 +11336,7 @@ D.4 Function Index
 * accept-line (Newline or Return):       Commands For History.
                                                               (line   6)
 * alias-expand-line ():                  Miscellaneous Commands.
-                                                              (line 124)
+                                                              (line 125)
 * backward-char (C-b):                   Commands For Moving. (line  15)
 * backward-delete-char (Rubout):         Commands For Text.   (line  17)
 * backward-kill-line (C-x Rubout):       Commands For Killing.
@@ -11021,10 +11351,10 @@ D.4 Function Index
 * call-last-kbd-macro (C-x e):           Keyboard Macros.     (line  13)
 * capitalize-word (M-c):                 Commands For Text.   (line  61)
 * character-search (C-]):                Miscellaneous Commands.
-                                                              (line  41)
+                                                              (line  42)
 * character-search-backward (M-C-]):     Miscellaneous Commands.
-                                                              (line  46)
-* clear-screen (C-l):                    Commands For Moving. (line  34)
+                                                              (line  47)
+* clear-screen (C-l):                    Commands For Moving. (line  48)
 * complete (<TAB>):                      Commands For Completion.
                                                               (line   6)
 * complete-command (M-!):                Commands For Completion.
@@ -11054,56 +11384,56 @@ D.4 Function Index
                                                               (line  46)
 * digit-argument (M-0, M-1, ... M--):    Numeric Arguments.   (line   6)
 * display-shell-version (C-x C-v):       Miscellaneous Commands.
-                                                              (line 109)
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
+                                                              (line 110)
+* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
                                                               (line  14)
 * downcase-word (M-l):                   Commands For Text.   (line  57)
 * dump-functions ():                     Miscellaneous Commands.
-                                                              (line  73)
+                                                              (line  74)
 * dump-macros ():                        Miscellaneous Commands.
-                                                              (line  85)
+                                                              (line  86)
 * dump-variables ():                     Miscellaneous Commands.
-                                                              (line  79)
+                                                              (line  80)
 * dynamic-complete-history (M-<TAB>):    Commands For Completion.
                                                               (line  90)
-* edit-and-execute-command (C-xC-e):     Miscellaneous Commands.
-                                                              (line 138)
+* edit-and-execute-command (C-x C-e):    Miscellaneous Commands.
+                                                              (line 140)
 * end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
 * end-of-file (usually C-d):             Commands For Text.   (line   6)
 * end-of-history (M->):                  Commands For History.
                                                               (line  23)
 * end-of-line (C-e):                     Commands For Moving. (line   9)
 * exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
-                                                              (line  36)
+                                                              (line  37)
 * forward-backward-delete-char ():       Commands For Text.   (line  21)
 * forward-char (C-f):                    Commands For Moving. (line  12)
 * forward-search-history (C-s):          Commands For History.
                                                               (line  31)
 * forward-word (M-f):                    Commands For Moving. (line  18)
 * glob-complete-word (M-g):              Miscellaneous Commands.
-                                                              (line  91)
+                                                              (line  92)
 * glob-expand-word (C-x *):              Miscellaneous Commands.
-                                                              (line  97)
+                                                              (line  98)
 * glob-list-expansions (C-x g):          Miscellaneous Commands.
-                                                              (line 103)
+                                                              (line 104)
 * history-and-alias-expand-line ():      Miscellaneous Commands.
-                                                              (line 127)
+                                                              (line 128)
 * history-expand-line (M-^):             Miscellaneous Commands.
-                                                              (line 117)
+                                                              (line 118)
 * history-search-backward ():            Commands For History.
                                                               (line  53)
 * history-search-forward ():             Commands For History.
                                                               (line  47)
-* history-substr-search-backward ():     Commands For History.
+* history-substring-search-backward ():  Commands For History.
                                                               (line  65)
-* history-substr-search-forward ():      Commands For History.
+* history-substring-search-forward ():   Commands For History.
                                                               (line  59)
 * insert-comment (M-#):                  Miscellaneous Commands.
-                                                              (line  60)
+                                                              (line  61)
 * insert-completions (M-*):              Commands For Completion.
                                                               (line  22)
 * insert-last-argument (M-. or M-_):     Miscellaneous Commands.
-                                                              (line 130)
+                                                              (line 131)
 * kill-line (C-k):                       Commands For Killing.
                                                               (line   6)
 * kill-region ():                        Commands For Killing.
@@ -11113,19 +11443,20 @@ D.4 Function Index
 * kill-word (M-d):                       Commands For Killing.
                                                               (line  19)
 * magic-space ():                        Miscellaneous Commands.
-                                                              (line 120)
+                                                              (line 121)
 * menu-complete ():                      Commands For Completion.
                                                               (line  26)
 * menu-complete-backward ():             Commands For Completion.
                                                               (line  38)
 * next-history (C-n):                    Commands For History.
                                                               (line  17)
+* next-screen-line ():                   Commands For Moving. (line  41)
 * non-incremental-forward-search-history (M-n): Commands For History.
                                                               (line  41)
 * non-incremental-reverse-search-history (M-p): Commands For History.
                                                               (line  35)
 * operate-and-get-next (C-o):            Miscellaneous Commands.
-                                                              (line 133)
+                                                              (line 134)
 * overwrite-mode ():                     Commands For Text.   (line  65)
 * possible-command-completions (C-x !):  Commands For Completion.
                                                               (line  86)
@@ -11140,38 +11471,39 @@ D.4 Function Index
 * possible-variable-completions (C-x $): Commands For Completion.
                                                               (line  68)
 * prefix-meta (<ESC>):                   Miscellaneous Commands.
-                                                              (line  18)
+                                                              (line  19)
 * previous-history (C-p):                Commands For History.
                                                               (line  13)
+* previous-screen-line ():               Commands For Moving. (line  34)
 * print-last-kbd-macro ():               Keyboard Macros.     (line  17)
 * quoted-insert (C-q or C-v):            Commands For Text.   (line  26)
 * re-read-init-file (C-x C-r):           Miscellaneous Commands.
                                                               (line   6)
-* redraw-current-line ():                Commands For Moving. (line  38)
+* redraw-current-line ():                Commands For Moving. (line  52)
 * reverse-search-history (C-r):          Commands For History.
                                                               (line  27)
 * revert-line (M-r):                     Miscellaneous Commands.
-                                                              (line  25)
+                                                              (line  26)
 * self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  30)
 * set-mark (C-@):                        Miscellaneous Commands.
-                                                              (line  32)
+                                                              (line  33)
 * shell-backward-kill-word ():           Commands For Killing.
                                                               (line  33)
 * shell-backward-word ():                Commands For Moving. (line  30)
 * shell-expand-line (M-C-e):             Miscellaneous Commands.
-                                                              (line 112)
+                                                              (line 113)
 * shell-forward-word ():                 Commands For Moving. (line  26)
 * shell-kill-word ():                    Commands For Killing.
                                                               (line  28)
 * skip-csi-sequence ():                  Miscellaneous Commands.
-                                                              (line  51)
+                                                              (line  52)
 * start-kbd-macro (C-x ():               Keyboard Macros.     (line   6)
 * tilde-expand (M-&):                    Miscellaneous Commands.
-                                                              (line  29)
+                                                              (line  30)
 * transpose-chars (C-t):                 Commands For Text.   (line  42)
 * transpose-words (M-t):                 Commands For Text.   (line  48)
 * undo (C-_ or C-x C-u):                 Miscellaneous Commands.
-                                                              (line  22)
+                                                              (line  23)
 * universal-argument ():                 Numeric Arguments.   (line  10)
 * unix-filename-rubout ():               Commands For Killing.
                                                               (line  41)
@@ -11273,13 +11605,13 @@ D.5 Concept Index
 * history list:                          Bash History Facilities.
                                                               (line   6)
 * History, how to use:                   A Programmable Completion Example.
-                                                              (line 114)
+                                                              (line 113)
 * identifier:                            Definitions.         (line  51)
 * initialization file, readline:         Readline Init File.  (line   6)
 * installation:                          Basic Installation.  (line   6)
 * interaction, readline:                 Readline Interaction.
                                                               (line   6)
-* interactive shell:                     Invoking Bash.       (line 128)
+* interactive shell:                     Invoking Bash.       (line 131)
 * interactive shell <1>:                 Interactive Shells.  (line   6)
 * internationalization:                  Locale Translation.  (line   6)
 * job:                                   Definitions.         (line  38)
@@ -11290,7 +11622,7 @@ D.5 Concept Index
 * killing text:                          Readline Killing Commands.
                                                               (line   6)
 * localization:                          Locale Translation.  (line   6)
-* login shell:                           Invoking Bash.       (line 125)
+* login shell:                           Invoking Bash.       (line 128)
 * matching, pattern:                     Pattern Matching.    (line   6)
 * metacharacter:                         Definitions.         (line  46)
 * name:                                  Definitions.         (line  51)
@@ -11351,134 +11683,134 @@ D.5 Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f897
-Node: Introduction\7f2817
-Node: What is Bash?\7f3033
-Node: What is a shell?\7f4147
-Node: Definitions\7f6685
-Node: Basic Shell Features\7f9636
-Node: Shell Syntax\7f10855
-Node: Shell Operation\7f11881
-Node: Quoting\7f13174
-Node: Escape Character\7f14474
-Node: Single Quotes\7f14959
-Node: Double Quotes\7f15307
-Node: ANSI-C Quoting\7f16585
-Node: Locale Translation\7f17838
-Node: Comments\7f18734
-Node: Shell Commands\7f19352
-Node: Simple Commands\7f20224
-Node: Pipelines\7f20855
-Node: Lists\7f23598
-Node: Compound Commands\7f25327
-Node: Looping Constructs\7f26330
-Node: Conditional Constructs\7f28793
-Node: Command Grouping\7f39715
-Node: Coprocesses\7f41194
-Node: GNU Parallel\7f43026
-Node: Shell Functions\7f46999
-Node: Shell Parameters\7f52205
-Node: Positional Parameters\7f56618
-Node: Special Parameters\7f57518
-Node: Shell Expansions\7f60855
-Node: Brace Expansion\7f62949
-Node: Tilde Expansion\7f65730
-Node: Shell Parameter Expansion\7f68078
-Node: Command Substitution\7f82210
-Node: Arithmetic Expansion\7f83565
-Node: Process Substitution\7f84497
-Node: Word Splitting\7f85617
-Node: Filename Expansion\7f87561
-Node: Pattern Matching\7f89845
-Node: Quote Removal\7f93543
-Node: Redirections\7f93838
-Node: Executing Commands\7f103258
-Node: Simple Command Expansion\7f103928
-Node: Command Search and Execution\7f105858
-Node: Command Execution Environment\7f108194
-Node: Environment\7f111178
-Node: Exit Status\7f112837
-Node: Signals\7f114507
-Node: Shell Scripts\7f116474
-Node: Shell Builtin Commands\7f118989
-Node: Bourne Shell Builtins\7f121023
-Node: Bash Builtins\7f141623
-Node: Modifying Shell Behavior\7f170268
-Node: The Set Builtin\7f170613
-Node: The Shopt Builtin\7f181026
-Node: Special Builtins\7f196825
-Node: Shell Variables\7f197804
-Node: Bourne Shell Variables\7f198241
-Node: Bash Variables\7f200272
-Node: Bash Features\7f228652
-Node: Invoking Bash\7f229551
-Node: Bash Startup Files\7f235500
-Node: Interactive Shells\7f240603
-Node: What is an Interactive Shell?\7f241013
-Node: Is this Shell Interactive?\7f241662
-Node: Interactive Shell Behavior\7f242477
-Node: Bash Conditional Expressions\7f245852
-Node: Shell Arithmetic\7f250092
-Node: Aliases\7f252909
-Node: Arrays\7f255457
-Node: The Directory Stack\7f260541
-Node: Directory Stack Builtins\7f261325
-Node: Controlling the Prompt\7f264293
-Node: The Restricted Shell\7f267039
-Node: Bash POSIX Mode\7f268864
-Node: Job Control\7f279215
-Node: Job Control Basics\7f279675
-Node: Job Control Builtins\7f284394
-Node: Job Control Variables\7f288924
-Node: Command Line Editing\7f290080
-Node: Introduction and Notation\7f291751
-Node: Readline Interaction\7f293374
-Node: Readline Bare Essentials\7f294565
-Node: Readline Movement Commands\7f296348
-Node: Readline Killing Commands\7f297308
-Node: Readline Arguments\7f299226
-Node: Searching\7f300270
-Node: Readline Init File\7f302456
-Node: Readline Init File Syntax\7f303603
-Node: Conditional Init Constructs\7f323790
-Node: Sample Init File\7f326315
-Node: Bindable Readline Commands\7f329432
-Node: Commands For Moving\7f330636
-Node: Commands For History\7f331779
-Node: Commands For Text\7f336068
-Node: Commands For Killing\7f339457
-Node: Numeric Arguments\7f341938
-Node: Commands For Completion\7f343077
-Node: Keyboard Macros\7f347268
-Node: Miscellaneous Commands\7f347955
-Node: Readline vi Mode\7f353759
-Node: Programmable Completion\7f354666
-Node: Programmable Completion Builtins\7f362127
-Node: A Programmable Completion Example\7f372013
-Node: Using History Interactively\7f377265
-Node: Bash History Facilities\7f377949
-Node: Bash History Builtins\7f380950
-Node: History Interaction\7f384947
-Node: Event Designators\7f387911
-Node: Word Designators\7f389130
-Node: Modifiers\7f390767
-Node: Installing Bash\7f392169
-Node: Basic Installation\7f393306
-Node: Compilers and Options\7f395997
-Node: Compiling For Multiple Architectures\7f396738
-Node: Installation Names\7f398401
-Node: Specifying the System Type\7f399219
-Node: Sharing Defaults\7f399935
-Node: Operation Controls\7f400608
-Node: Optional Features\7f401566
-Node: Reporting Bugs\7f411823
-Node: Major Differences From The Bourne Shell\7f413017
-Node: GNU Free Documentation License\7f429869
-Node: Indexes\7f455046
-Node: Builtin Index\7f455500
-Node: Reserved Word Index\7f462327
-Node: Variable Index\7f464775
-Node: Function Index\7f480234
-Node: Concept Index\7f493391
+Node: Top\7f895
+Node: Introduction\7f2813
+Node: What is Bash?\7f3029
+Node: What is a shell?\7f4143
+Node: Definitions\7f6681
+Node: Basic Shell Features\7f9632
+Node: Shell Syntax\7f10851
+Node: Shell Operation\7f11877
+Node: Quoting\7f13170
+Node: Escape Character\7f14470
+Node: Single Quotes\7f14955
+Node: Double Quotes\7f15303
+Node: ANSI-C Quoting\7f16581
+Node: Locale Translation\7f17840
+Node: Comments\7f18736
+Node: Shell Commands\7f19354
+Node: Simple Commands\7f20226
+Node: Pipelines\7f20857
+Node: Lists\7f23789
+Node: Compound Commands\7f25580
+Node: Looping Constructs\7f26592
+Node: Conditional Constructs\7f29087
+Node: Command Grouping\7f40170
+Node: Coprocesses\7f41649
+Node: GNU Parallel\7f43552
+Node: Shell Functions\7f47610
+Node: Shell Parameters\7f54693
+Node: Positional Parameters\7f59106
+Node: Special Parameters\7f60006
+Node: Shell Expansions\7f63760
+Node: Brace Expansion\7f65883
+Node: Tilde Expansion\7f68607
+Node: Shell Parameter Expansion\7f71224
+Node: Command Substitution\7f85680
+Node: Arithmetic Expansion\7f87035
+Node: Process Substitution\7f87967
+Node: Word Splitting\7f89087
+Node: Filename Expansion\7f91031
+Node: Pattern Matching\7f93561
+Node: Quote Removal\7f97547
+Node: Redirections\7f97842
+Node: Executing Commands\7f107400
+Node: Simple Command Expansion\7f108070
+Node: Command Search and Execution\7f110000
+Node: Command Execution Environment\7f112376
+Node: Environment\7f115360
+Node: Exit Status\7f117019
+Node: Signals\7f118689
+Node: Shell Scripts\7f120656
+Node: Shell Builtin Commands\7f123171
+Node: Bourne Shell Builtins\7f125209
+Node: Bash Builtins\7f145959
+Node: Modifying Shell Behavior\7f174884
+Node: The Set Builtin\7f175229
+Node: The Shopt Builtin\7f185642
+Node: Special Builtins\7f203284
+Node: Shell Variables\7f204263
+Node: Bourne Shell Variables\7f204700
+Node: Bash Variables\7f206804
+Node: Bash Features\7f237264
+Node: Invoking Bash\7f238163
+Node: Bash Startup Files\7f244176
+Node: Interactive Shells\7f249279
+Node: What is an Interactive Shell?\7f249689
+Node: Is this Shell Interactive?\7f250338
+Node: Interactive Shell Behavior\7f251153
+Node: Bash Conditional Expressions\7f254640
+Node: Shell Arithmetic\7f259217
+Node: Aliases\7f262034
+Node: Arrays\7f264654
+Node: The Directory Stack\7f270020
+Node: Directory Stack Builtins\7f270804
+Node: Controlling the Prompt\7f273772
+Node: The Restricted Shell\7f276538
+Node: Bash POSIX Mode\7f278363
+Node: Job Control\7f289296
+Node: Job Control Basics\7f289756
+Node: Job Control Builtins\7f294724
+Node: Job Control Variables\7f299451
+Node: Command Line Editing\7f300607
+Node: Introduction and Notation\7f302278
+Node: Readline Interaction\7f303901
+Node: Readline Bare Essentials\7f305092
+Node: Readline Movement Commands\7f306875
+Node: Readline Killing Commands\7f307835
+Node: Readline Arguments\7f309753
+Node: Searching\7f310797
+Node: Readline Init File\7f312983
+Node: Readline Init File Syntax\7f314130
+Node: Conditional Init Constructs\7f334569
+Node: Sample Init File\7f338765
+Node: Bindable Readline Commands\7f341882
+Node: Commands For Moving\7f343086
+Node: Commands For History\7f344935
+Node: Commands For Text\7f349230
+Node: Commands For Killing\7f352618
+Node: Numeric Arguments\7f355099
+Node: Commands For Completion\7f356238
+Node: Keyboard Macros\7f360429
+Node: Miscellaneous Commands\7f361116
+Node: Readline vi Mode\7f367069
+Node: Programmable Completion\7f367976
+Node: Programmable Completion Builtins\7f375756
+Node: A Programmable Completion Example\7f386449
+Node: Using History Interactively\7f391689
+Node: Bash History Facilities\7f392373
+Node: Bash History Builtins\7f395378
+Node: History Interaction\7f399909
+Node: Event Designators\7f403529
+Node: Word Designators\7f404748
+Node: Modifiers\7f406385
+Node: Installing Bash\7f407787
+Node: Basic Installation\7f408924
+Node: Compilers and Options\7f412182
+Node: Compiling For Multiple Architectures\7f412923
+Node: Installation Names\7f414616
+Node: Specifying the System Type\7f415434
+Node: Sharing Defaults\7f416150
+Node: Operation Controls\7f416823
+Node: Optional Features\7f417781
+Node: Reporting Bugs\7f428299
+Node: Major Differences From The Bourne Shell\7f429493
+Node: GNU Free Documentation License\7f446345
+Node: Indexes\7f471522
+Node: Builtin Index\7f471976
+Node: Reserved Word Index\7f478803
+Node: Variable Index\7f481251
+Node: Function Index\7f497002
+Node: Concept Index\7f510305
 \1f
 End Tag Table
index fff99af93ab5013e634901b45ed09ef2d2be4574..0864d8bbd6600ea5339f96509148bbabe86b222b 100644 (file)
Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ
index a7c58bd718f76ce827ddca1c344e64d3f2e1eecc..d98176532a590f3162cb6ec8680cee3f05669237 100644 (file)
@@ -1,8 +1,8 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software
+%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software
 %%Title: bashref.dvi
-%%CreationDate: Wed Sep  7 17:14:23 2016
-%%Pages: 178
+%%CreationDate: Wed Jan  2 14:14:45 2019
+%%Pages: 184
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10
@@ -12,7 +12,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2016.09.07:1714
+%DVIPSSource:  TeX output 2019.01.02:0914
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -3453,6 +3453,11 @@ end readonly def
 dup 45 /hyphen put
 dup 47 /slash put
 dup 50 /two put
+dup 73 /I put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 88 /X put
 dup 97 /a put
 dup 98 /b put
 dup 99 /c put
@@ -3655,125 +3660,157 @@ BBBDDBCC34B65A7D17B8BE932148C39084A9C71516582BCE25EBF7C1E0D84314
 095B1E04CC60718A2DC2BCD99B34202878786A58AE7C2F43D985874AB8A3F204
 4DBD4B9240EE96F0487CB687830972BF302F262C6381B2C79773EEB152B712E9
 34E8229E0B59788EB9B9FC1AC1E123751D1FF032610410F0847E6B9B9A575306
-53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BA95DD600436E0BF
-5E8A00CE3C92859961557763D413E79CDD37FDB07131FDC420EF525CC0B5377F
-9772D3876DBFDB57FE6275D187832F2B7A635967B201E70B532E85838ED3874B
-82B36AB9EAB7DD4D2B5C4140419CA04E87316E802CC93DE6336C22FEBE80C3A5
-D43A0F808E5E6A17F7BCF812FF5EE5AC1959E07F36B24C9192E375FCA3C0A84C
-1D1DD2093D4F151B9FEFBA90DB4E94A1D68E49DF5A715A5BE04E7B7D8C384D61
-5DDD71F057FEF51DE7D002AB3BFE0096C47EB3AAC7B89EEEB9E2F9CFC6BCDFD9
-A438C1097D5253E49DC0DE5B6E8F976AE8894914BF8CAB5236C8A3BB2A437CE6
-374D96AFC592F1238357817E1F2836EA763A3C0DEA2DD3F7D758BA61307C21F4
-796A18638504797DD9A5131EC48DB0D23FC9A3E069B2FECA5B36A2260C6FED2E
-6EBDE3AED119EDFA96B837C56202ADF7F7747291A43CDDED6EB7DB5B9373CB78
-F6FA0B92BB2C17AD8DA549E878D8DEA681028539E5E2A223E2F9BA4CA09A6FF4
-EA195F1EAE62CC33F2282888962B9032D1C83EC4EDD832866A472426EBA6080A
-75E02F39CE0421C5C06B9D593022C23D675D7BE879FCE0B20A9CBB394F9D3815
-9C847518BB8DDBF3A89D699C1FA84E704B02BC85D61ADA5E548CD8DBE269A3E7
-03626A0FEE75E116F95B5D31C73BC852C5FDCF524542BFD9D05D8EB4B2A114E0
-C2FFCE282CBD87D82C1D4E64772B0492068B139B1795E287899CED7791EF5C8F
-E77391C51552FF08DAA85BC8B9896CB5C792C3E1C4D44E3CAC1EAEC02E4B986F
-E5059463613DD3643F8DCE2264FA66D712A0DACCF86DDAB315393219F5EBD18E
-E220AD61CE3C67664615A5F9734421152382E8EA9CBED8269ACFFC37873BA329
-20649A6F684D31BF37194952496E8B962B75B83CEDE72F0DAAB761120B710677
-F3AECF2A67F512F7C423B1DA012D0D0D44F009346C4953447950F514731830D1
-59D01BFF4511CD0257D5ECC2CC4A859E0ED92627F659547C8F137DC0F49F06D6
-02F624EEBDBC779FBECB1816A88F02B3565A9C3D42E919F755F3D80F6FAB681B
-585B5A49F62581EDE1D1DF1906007A8926932FE74FA2A94B92026DE9D678EA3B
-ABC3C2EE5A3757317AD5F5CD361A511F4019CAF77C46C8FFE4615CD6CFDF7F8C
-8CD06F1A2DDBD3BBA03FBBF8DCC898EE71E7D19CDE66971150359310D0BB68B8
-65F3E41D34C8D063A71C27B6C0F27753A9E35D291477858E5B734D72C40C4573
-203C5529340CB56BC00EA0E02B3DB54173E6480D29D957E6735146163980F0A8
-CA4086192E6095F411939DD3FF19854F8F58B39A23D3ABA22BEAE05C4B6B6845
-98968C08559A037DE955F77359FC39249C1149BC4634D10DAABB086A23D9A37A
-73A61EAB63BE3B1A8D8E76ED94E731169E892B469056757EC885D8AC4FF50E5C
-1D80EFE20E40E26006953C53D765B3BCB4C5396646DB3AEF01F939BD163ADD87
-FEB1E55A73722A0866DEC922EFF8B06AFDF2FC742EB1CA422822BB378310A994
-794062BE62D5BC4D44C25655C902F4FB4FA63CE21E095E4DF3723CFE7D2D961F
-10A715B194ED855942588BDA460A28F1B5D849A34D85756CC8CE874E2384AD9F
-3A1C348996EA94927BCE9715A8B229C0D7FCC2C07592052796D7BAE23DF895DA
-1CF991E912EAC97601FD79F35616A1F23D82647BCB49C360740CF010CA4E8ADF
-97A9CAC032D12919CC167CA4C2E6C60EBB4AB87C8F2BDF71E28E91A9BC96056F
-5D905902AE964E5336CFDACC8C5CFC5607D75CA5F364AB8E9A65FD372BF15FA9
-0CE1519CD7DBF31F92D2A078754E4BF90F3121F6F698DEC238404EDDD4EEA153
-0335941E4EB8F08DE0104FD8633BE277E9ED26FC65D28FC1D604D8504B2F788A
-11E2206ACE8AB33D14CE9D4CFC917008D44AFA2B1877C3D42455593889867784
-7CE696EABDEF95872F065DAFEFAC253F367D47127CE76FCB85BBF0684DD1663C
-876E68EC35B21593A10EA5553311880B8EF744014CD1ACFC067FDFD46978BA23
-C86FBA05CEB66E67621680BEE0ABF82364D4E3235A20033437C6B84A71FB34E6
-F8A160AC477A1302B4F98D00FDDB2A35ED9B315700669D9D8A3D254F786316AF
-882CAC6555A766281A0836CD45D8CD8245CA69729260D54C11DB43032A0FAC0B
-05869ED0A432CEF854FE665BACB0F780C9123B4DA1E1895F8717DDE4A58BD3FD
-D214195066D4587463E839EDF667E475BC04EEDAEC41422AC9BC27C238E88318
-7DFFED5D04AAFB1F63AC651B1A4113B7CE9838ABAF75632EDA8B5EE0C8474678
-58898AD595ACD99029DC34EB4BADE834C04444941C3D8280B93951A9E8554EF9
-5F0FAA218DD8224B94807CE2D8DF7E4A5E2B28C44A551DB0708B5D6D5F000B96
-0422A8E953233296B6E5EA698921F1EEEBDF0C5CC72263663895940B4C1EA28E
-E0E3AF21698D5430D6495E32E0D5F5E538EF835FBCF4A96DAD8F011B145584EF
-1C33809372DF602D1FB3D80A4EAB65897F672642E4317926DF178BAB6F9851C7
-63613B3DB11FF07F9C7582592B620C7767D005D7B0C28AF2D309E6CAC222055F
-2C20A58AC1B407641B483D571B9E959A3AE0DEF316EFF7A4514D5313C47AAFBE
-82CC583BEB32F20E4C3A5650B58812EF357B68F26882D30A6BBEBDE64E2FD910
-AB8D974CE5C968C7D34390529F4714A9F1D2373DB1D912D418225932541FB250
-9C74346749DE9C5662B1C40437E783A78A283AD6EF43B2C111DEFBEECEB17ED7
-3630AE404B310F1148C82F4969A794D945CA5E1C18F39BB6F9C46EDC8BC3C88B
-FAC2116B2338E1AF9C975ECC8474BCA351E3FDF89ED4352FF6A3D6C7EF7A7BDC
-DD4B2DA9E7C77F8A6623B670963D2B9B9A80F8445E17B85194AD45E02FF10484
-85E0A700BDE9F574487F9494B424646D48999EA67D469A22B9CB72123F31EA5E
-51C07370BFB1C5EDB4ADE75E7111A0116C212920F1362353BF58F33D7E8EE680
-DBF8085B46AFC40ED9FFD7AE756CB267D0F321FDB71F2DD35FBD3003E91E2758
-3DED65748BE5CD0D2D244E8FA187749FED44ED0C71056AD954FCF656DE28E70B
-93A79EB4D7BD59E92911EC64EA794732A79B9908B7C6DD42C99BDF07AAA06E07
-5CD6497C489BC56B09E44D22D0FE69521A9BA20ACBFDAB8EE718625711BF479E
-512FEC4A8F9EC7CF66D4CC44E2D0EA1235BF17C3D0AD6859385CECA3D4A640B0
-762D325D3A449BF7115CE8469A493C494721D6636BCB9C55ACF1D0F3489E5534
-4A76A8F3E3AD6252D8CBD3EDFDAC890A7B497286241AFE35B2261B66018A1523
-4B9FD31AE07A6CCA6B91A176BC38BC03F97D71F80270E14B83B012FA5270B7B4
-73F889DED2D4BFB24536E495F96BDF408E3840AF1567E9960A4F22F0B749749B
-C156336BD7F349F2F82CE54B459462CB7C9846CC090E752DCDC871FF0873076E
-8885B0AEF490DB0C9FA98A8FDF84EDFD52AB0F992EEB236A79FB8FB52718EBA6
-E0D586512F81079D468A75336540163B966670B437304F3272CF6E49252662C6
-419E8B2B14D240A1DB0CF6EF14E024F9D8C6882F865D7E007B46DB65E2E6AB1A
-22C5F096B255E91CABA7C441A3149FFB4E19BA97E5D43779C2A80208E279A91E
-8B8A281C079B819BBB6A5B1A62F34D59B7223D9FBB5F5E96F0D9AFEBD3CE3D57
-A4C4D2345776FCA140EA95242C8AF1EE7B93D2676209B750ABFCFC8CAF50F578
-4C364CF8BC46839A4379624D56B7B917743E9D6A284E7B315D461ED66B262413
-A9AE1741C633A92061DF92AAF78A18586CDCA41248C586F7D272378F9CA76980
-202A391CC9FD46794140F06CC75AF2F4986D690939E083CDF9B96D066B1EC8F3
-DE3B68AC8FAB84970B1A199B3F3AA5BE27ED8119F306CC5F26230C16E9D9FB31
-1EE9D3F5175E4D4D7A8A2945000C37BC73816AEDE6F2AC0F09B788C9988BA69B
-82CF336482F490F05725696EB080E460FC03B3E28C1B3613C8E5FE3DEA048D97
-4AC72C9955FDE282FA8C8385B30E3A7EFE247B48B370DCB439FA721BED19AF4C
-FDC3D3543A25A4E0273419B6CDD7209FB336C1542BA56257E5D31B70529C12D7
-524617868F4F3B49799322EDF504750D1BAAE307ABC4843704B64ED8AD4996B7
-5193CEA660390527734BF1448AC09998E70FF15BD70F8B6388B0A987CBC783FC
-990F7A5EA016EBC024F12BC9812C7C4DD6E991DB89415A49D0B265E453732F4D
-2B6BB50E995E719B00DEBE74E7D1E291A739C4EAB39B5A61763DDB65BDA6E1C9
-17C49BF1A76546BE0EDAAA17310AB2D01BDF059B066263C8FFBDA53281C882DA
-E2DA35ECE5B4454C8031DBECD8675B60E54261A7D1F70560C6D8CBAB436EF058
-5A0189426AF00AD7EB43FBD13976D8D769ED2639ACBF613A308C941CDB5A632F
-F76E14224909A8E7E45B9B5A47BDC9B7B3E3616AEC4DEEAF2899A59B6E144802
-534109EB0E3ECD270E417B2E9CD8D27DE637AC798ED5CCF791061297A0B218A6
-1188C03BAC8DD8DD783BBBF8C4C9AE98E8F1EFC4684CA4BEE6D533458BB229ED
-4E31392DC4591DF2D2D07632EBEC0A5FA2C4508C1FD48D56EE871EAF4A84AC07
-A1E34CA2CD81ED369043998A23DD01301D41C582963F07EC3417F09ABF45844E
-A74F386BA813F0AC462FE268407B9D2A8813FFCA604C342CE82493DAF631B2B3
-B6D3E9F3398761C4B958569F0D833D27973B07F9DA9D84AC512C284844C04866
-74A325E4ED894F640B8F802097B7C6C4F04BBBC8A7BC6EAECC60EBBF4E676A30
-4A5D0DE4AB45D0C913CCEEB8032D1946A35928BFB0FD76AE324E7E3CEB5B99C9
-0A0A6EBAA6F6D8E4292F9C5408D3859CFDEBFC9413032FA1A6E194C5F616A3D6
-FB0FEB8966534CCC9E6D67DFCA105E8994810D8EE414DAFC80B8A95CAFA254CA
-CCAA72B84130B5E485529013A35040074072A8A63B2F4384D976BBFA0A743C5A
-0A079A2CD15E598801AD121303CC37A2FD3942776FD1AA0805BED2B646D4D1CD
-9DE65CB859735EDC177C5A4D1A54C3E8BE7A91BCA91AB93A9DACAC90204CC207
-8432E95B2C47654DA02EC1664566E2137860F16F798E0A1EFFC819F4304B0FE2
-AA54AFE0AF6CC26D417B0CC9E3F5F6B9BD6DDDE6A2D7FC4C840E4AEF73452D16
-241FF01413DF2125BA3563B3A49EECC8EC4D0BF06283B3C8242F362A546E71B6
-21F3C6DA63882992A14E295926387D66EA6D9F296455276D4FEF0CDC706FBC25
-57169AAF546A1BC72114A3A6DC3A1A76CE001962D771C267864A987188BF6087
-183573E3E9DED10D7023965D29F19C8950B6B9B83E680010995360E54911AAAB
-44D07524518EE59F58E49485E885F56FF2CF8D30FC5779770685C305AEC4262C
-B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72
+53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BBB19DFBEC179B30
+7096FFA89BF7951FBACEF0966A91BD315A7E26E57749072B3F38583C06A5F183
+08BFF3CDCD59AC365E3B4C4F34AC30366CF2BD15F19CBCE5F93259A6C4A8CAD5
+0B9186BF146124C758FAEDA8362FE97F209BA5C9FCC5C2A7FC3981F26D28B3A6
+7F1D6C440909613246CF1D25767D45EDC8FE21582D6C4C2C678BB9E98974E303
+402F0394B17CF3F4CCF6940D3ED7668AB6C9DAD83D75B11DD3BBF2619239BED9
+A82B053CDB66086058524A379BA308D5043498471B6B043923A40F6C1BB0B71B
+20D261D529E3FCCE19871D097C7A434CE18673A6BE20C67AFA21F48213B6342E
+4E069367C51173364B697E890FB9E4FA1E8FE0EE6A8E8176F6ECC5DE736D4272
+3B640EBD341D5DA2B2F64F46339F7612D1CD04D5598F2286A87F83220DB31878
+F7E83F90D003AFE46B3B9103BE3E344FA1025DA3F45D309641C3FDFCB8815C36
+A563F017E5EFE9E9F15262C5F676C8602EF3F7AF6F4EFD60CA78847679729FD1
+C3837760E538338DA5F0EB8B24758E4FCDC922904A2740D145935233DDE03DFD
+17610BEE7050CAEEE6C705A22C3BA7FA1EB44D82ECCE837422363147ACE218F2
+DE186AA197D71524186FEB923E2AD093B00AF017AED4BBF997093F5ED44FF286
+124A6256DAB404B36D596739F883F7465E6C0DDDD8970909777818CD73650C3D
+8CE623AD60CF2CDAEEEF25B6FE0C7ACA99C3AEC768A4544E0FC120821BA349C1
+986ECB6F6D69ED8B6B3F77465665BA74AD091397F6BBF6F48A1E0974377D4586
+5C3DA4BE5F33CB86CDFDBF253C4D08382BD6D9D92945136DD376CF76ECA37560
+67729573F060DE73497A3B48229E45E17852459096FE82AAEBCF5DDBE92A7F9D
+8D1B7F8813106BEB2DEDD4E220717F25FCEA468F8E5B975813C48B30734139D7
+F7D65F4ABF157C7E13C16BF304CECBE2367511BF14030602BFDED6D2D0F40AB9
+5FD1EADCB2FF72F2BA0BA7E726E7C21FB9B4E0B094FDD6FD7912BC389C9C3C62
+57616605E5B8064E1DB19FF9805D872840C9B3F7873FD61951E87BB298B525A7
+30F4E7883EFC51B92A60AA1E5D6565E4F2D349E6083500BB8867977E2BBB0CD5
+7FB86FB5FE38E8A066E102E5326502EF581C9CA461E6A75170AD698EC27839F0
+ECA5AC6ACEB4AA6EF4DD71A0FE4154A1043E38D1923036D998A064082C293B41
+3D2440FB88F1CC166DA6BEE7B0BE62441F3D21BAB31CD80788DD1713D4F7D87F
+F130A1DF211A3795A903FEE48EDD3E34F6AB66413AF77418D222B3DC62EC4E9F
+B53937B944ADC8E5A90176FBC7EA949E02FE996A8B2F6879F0B4193A47B6FA15
+6A23805F40ACB43D778A4ECA2529054A2EE6D95495F280DE27D04505A5F3ED46
+3F9B87B8F8F4EBE0FB5A36F3038E16F5773181E6FFDF3230B26B41279BC3E29E
+02B0A4C6671381E680629DD54FA396BEB597E90CC554F3715D599185F787683A
+0C1C1BC30F40205C90398240DF656D5E8E79A4FB9E53ED69E6CCE72A43D675C5
+86EA8939F02CC6359A78314B3662A30F8F48DF1823CD44CB569D3CB9E8F0924B
+15B682E9787827EB92F340E548961011152520DF15CEE47994555961414D80FD
+6FF51E7F4AD38A7FA670CE31210F1D57FC3B06953D2E098B711B0D354793A804
+61D7ABDD46872F370D14F8EEDE07E9DA2F2F6F5A0B6017FC62D6AE57A5C61D2C
+EE55183B80853D1D4D8C08572E9A15F753DBC75A000CFBA6D7B1C04A2FC07E69
+EBF9833C6C76E8DF9345B1C7FB73DA67CF85757621D36EF0D33F392103DE58F3
+C0D7ED8003E2EFDC8383FA42FD054AF7E3025B6CE9A21D7FF94D9E2653498186
+81621CCCF53F7D922007692CFC3E88AADFF7CDDFD85B3A3DF27721B89D0F26CB
+34F987919D2B3F1FDF2400528A426010FD67481F336BFED8C546104CFE0DA536
+7E2056AB878E59CEB3D7B836AA794E98F7DC6B3F00B8B803F1D62E8837A27A9F
+CDEBB3D8C50E71E146FD39D15071674D0D4A1CC2F7D8E050DDEAA9CDE1A60CC8
+BA54B64C6AB7760439573412C781F04CB5E4C143AD7440819B35AD3872E8A07E
+687F96086AB326022E120AE62242CC62982612AF4C7E99C991AF793A24A36E3A
+21D30A9E9C475E97645A9141417FB632EE51258A3F7C52C12A5656C7B3BF2D64
+E6887418B020A6FCEA184FE311DD77F8CAAC3E1E8BCA9473E52236582A3AD1EB
+6DC2725757EB9E348AF2E31AE4035D0B3A17852673C97EA8E105D2426A28D367
+1BFB95DD775FA2E70E571BDDE80AFC982D9AD1F5E6E2671087262D565C0E3BC0
+EE89D0FF1CBFF7095238CB4A031FCEAE085F0BD31CD2B90DED17D8CBCE81FFF4
+4E77C1848E10BBE71B25B5D323139308D7499C0532F956866B8F056C3BF893E3
+9F029CA58F0B7A029FE944F791C0D644FDA80F1497E9FC7319ABBBDE8B47E9DB
+CF6F71E7AB2C8C0AAB6140A5F165F462DB2CF40060DDFF908A52760C9EE72286
+09161743C5F8C342C97CF14F67ED86F2D723FB605BCFC43760B3ABE9C88A549A
+8BB4B01D73821FA191D028E44FB2938417485BF4037170D45D2ED840A3838D6A
+4C514FD4BFC2818EC64C4725E4F1C7D72CC8D3982BC50C5A4ED5995E17DB6E20
+9350D86CC8FAF93F854ADBCC42E26B85CB15343CEA1AA2DC43E40AA823418D1D
+92DD7EBBF041EC62DA9764840D46A414B7EB95B5505147BDC31D40A157FE2B7B
+4C641B398A6039F9EFE1E929301E38805C26D1FB0E32212505B1B954C9CAF259
+E440C327D8239B1FE0BD976DE222C38AF2F3FDFB5DEA74954199CBEAC621D611
+30C13591B9C183BAF93DE896C497E461F4CA33455D4B41FD4C77BE7E7A8968B9
+7602BD7B2989667EB31D56C3169BAD6D48D1CC5DBA8819E88A7339CC92D3DD26
+EC81ED5155345321B9DD8BBC25B3A53D95531098CCAEA8617EED83815AE6DB19
+A2E97160B2226B11665020D19F419A851AF73C19785433AE958B68D48D3EAFA3
+77DD833E47592E39F6C5C159595C32CD08DF326BDEAA4BEBA3587F017AFEA9A3
+A3473BD086862E87B5AFEBF06A4419878BDEC99686D125EE11E76AD881E10D0A
+F5C18041C26CF62F07B89E7DE6D6691127CCF83F7BC7E7AB501324C2D44C05CB
+D0B2754F2AA37FE707C3D2979648BE7FB3C85813E0389FBAB87810BECB5438E2
+9082705FB9BCCC4CC31DACAA5CC95B4876601D8617BC0B0E8F006638DA8545AF
+DA33E5D59C056AACE716466544DC0CFDAD5E5EE60F2A68723FB9DD7C107E6C2F
+4DD97E89BE2EC827052011B1042C724CEB4968ED5DFA9EAAAF88A4C4160143E9
+0EFADC700B31D030E52609ACCD3F5BF346F642B702C298E11DD837B5FF0615E0
+F5E1239C6A6C8964A575533F9B939C17FC99EB384DC725B2CE842C9331A90D31
+3344936CEEFAD1CF2281FFA21110457F21705DAB57B28C24995C73542396D5C3
+927D082DD0B4C220E0680B547A5E3220A6F506A2A94267B32B26004FEFB5AD1D
+7519969EFFDD0540D5BB3F499CBA8ACF8BA23BF054D51271F958CCB03A3E5B46
+E8CA77CE6835B84071916CA149B8BADD510C8226825F3915BE719F1BF30D7640
+4B86BCA2ED6E43CF3DC32861A475B5C555DA7C34B1ACBB71DA16F1D9AC1AC459
+C0A217197561A827F2E625FDE90BE83B718583CB018BAD5A49DFC6FBC573129D
+28B466BF5A889FDCE2F5DE2B413BED566E49CA2374BF587F9B6C87F79A286B0C
+A13A7770DEF8E0CBDB53F20731E870162E3913581AD2F2893D8D4BD1C3AC473F
+66C20BCF90DE4C711D051B6A2D3A5A57C0DE38BC0ABC739E4ACD1E91E156246E
+6776B3EA66C3418144EA76297793E67D7C4A75605F612F832CBDCCBE60279236
+7E5E8D59A9C390D31764FBD10A8671BE3628DD9FA203C90B000D8867D56C13D0
+5123366778DFD71829A064EA9CC3CBE9C7E0493307129F99702BC522211BE363
+F9A19038EC98672E3B467BFCCEDCFE7C89865C832E4A0939CD1701D6B2E7D88E
+0211CB61AF49A4A7142F3C4142489D11CAC418AEC20A706080B7B81425783794
+A68040FD847CC21F70D67A07867AD6384380DB4021AE764EDD2CB3F963399A4A
+81DCBB3488D16096631DC2CB4F419E9049D9A79B4ABD73A8E774A7255B69885E
+47D0CE20B65E837CF0EEAD9D373058A6B2569C55BB949C4C566D4607F01D8428
+FFE577130A2F9D401898847307E445D60B8BD6AEB7ED7385108036FF1F4EAE5D
+52CDA197065FBD2F70749E38E5A90E313F059B24776F9A749F846788C2AD1439
+CACDC874C20C9BF9A6615C7C897600F2E3BF821E1799E40445E29AA9BD63B91F
+61B9AFF3B82634D1454696315961BC8E2D7AE1BE4E5080E721E8DEA53F44B690
+5704CF886FCFC26E2838BE675D1014723E4D56189B5A7E65A3C20A0AC3A0134A
+A44CE1A7441BE18660C783BE5813723D0AACD76CF8F076B58CA069FFB73AD779
+47ED97053C750072022CCA6655BD40FD8C55299505F4185CFB01C7C31761A75C
+3CDC009FDD666D82C15897007321F13C88D316CC39A262A30DF71F417035A0A6
+691BB4CC99ABA64602D8175999CF835AD999550F90699BC6B8195E5C5DFBF12E
+CA83FB05CACA501A66F49E65F5283883EC4827914CB72B9FEF723B010CD58192
+5528BDAA88B52B362B02FB31F32AECF4CBBBD6719187339F8F5A199663F56A26
+A90574A586FEA95BF0A3ED3B4DAA223F5D5FEC7B4782E6DBE7ED76E2575CEE2A
+49FFD60D976E6069F98F933F6CCB517220D05C9343AD7E6153EBFB31FC84D40D
+582274C484B16742CC4EC64E63A8B8D6E9372FC62976456B78F16184086BD180
+08FBCBCFDF94C777F3905BAE198090AB09C85130C07160FD111DCDA5E095247D
+A647ED88D7B75A2265F819D82FDA474FB08C08DB58B6B6B821382BC9A6D5FDF6
+1EFF0CA350A463EF9B651CBF84EDBFE2AC986AF8636D1D9A9963D401CEEEFEBE
+BFEBAD3B9DFE073BDC21933323E704182AC95D3D5C85E6E47800AF01B244267F
+2B5BC626B5CB796D2EC7A0A9C8878C1FE14ECC924D1E791561073DED0F14F7C3
+B64AC2D28F396A4C9B93DACF026619D3F8BDB54FD04BD9CC183FE4CC7474976A
+60320C568E9F3850C21FD2240914E4262B370E6D47367E2B15EC09F377FF2F4C
+D46518B529835A89A8FE1A70E24DB827D7BBBD756A50603099BE248B318E8D32
+96CFD61B9710B3A2D60B5027020807951138ECC206C626C3691589935F681851
+779ACB632AC58641E5B59ED49B72A5B3B3CDB2E5D88FBB113C6C4807AA344EA5
+F1B3AB548C7DEFC57DA52F4BCD41CCB04ABA2570DF9758CD55A622C533826EB3
+43F42A28A5A348FC056E974D1BBB4D7213FED3D8C2F862130F299481091D46E2
+2DAABFA91A9F8115DE79D2CABBB7686CC7571251CE6876D8EBE71C9EB45BEDA6
+1F845F7AAB768498557F45F5B94DE6E59BFF0B336D901D4503A0064F64169DD3
+6BF1D67C73C1365924B876F94C7484C8909D567300AC73AA4246D043A301E80E
+5E38A79B2090D5548B633FBB39509B346D2E7510FF6F70E54EA642BF2765DBE0
+3495C66A2E9F3DBCBBA5851F0D3764780499D416E002237702C32E492EA02909
+5ADDA6E8FC7314ECE22F586A05FBEA7F35D96CB2D1892AC9A78656C2AAD47182
+9029C3145F208608B4508AFF111EAFBCD37690D07E31ED18AA94C10D62A12844
+C3808AC8DA5CA8F2D99394693E190F6C02AEFC60A637AD8ED2DFEBCEF08EC3D8
+86725D3F852A90FA74F9CAFBC12DD0146EF2A741B9491A43BCA08B9D68765233
+247B74F12712204D2E66AD91F44B392002B57E691D541EC46B0692A963C07496
+1B8BE15305139D77C92580FA06D9C809B263029117B82A0A78ABE9C6DC0F61C3
+A8ECD12138927031B9D1CCF9A7BFCB7F37873249A7CEE6E49998420B4466B06A
+448EDC2F4B00C73FEF997171AA4364DC49DD5E3D59F31C9DC29064CBC0503FA4
+0188BAE53D62C5BFAA13835C14536C07547DECFD8DB00B7B9590B69D29733E4C
+27B3D020EC1843ECBFD4F1C74D210F7E886407874F52893D5E4D960C311056E5
+AAB46CE02CDB2D14F5BA22AA8AAC05CAF62CA950D6CC279AD6FB80BA1194EA2C
+B380CE9D6F03613542860AD8A21D35C300FF5881885B73745A87228642D981B9
+A19DBD36CFDA547468F0259715F564807E1BF59FC29D4ED8F8A394AAC4609C24
+FBE3F169EB8BC230B5788BE64846AA1E4A92EF1DBF768AEEB465025CA94DAB15
+5068385CE16A9995FA5B117AE9B7BC9A21A40EDFECB2CF53E48FDBAAC9B73C73
+D1129088EEB0C16CED9F042A1375A6E28586C7CCF7A7798CC4F14FD6AEBE9341
+DA1222BA55114253A32A7DE2FD81A269D801E61694A7A5549FDF6555F064AE3B
+DE3B689D8A89840976988D9AB4E9FA38F6F1F563AD72E769CE32AD3764F86226
+327CF11586E8711493731FCBD0F88A02BDA98D73EBD6AD50BD2E1416E01ED0E4
+618A830F6CA2DA58CA47680F705E026B53063D0DF143C59C06066F4A4F0B4707
+C28414153F1001B54E7C470938B972C249EB2B65782FCD0FE61ECAE1B7459F23
+FD9637BD0DAFBFEC2F1E0C715A21F13B6EAAD1017938169122C459F1BB9B56A9
+6D93C017E2FFCB4F81DBA0933A2F37C42C0673336124F0A696F24A58021D9D77
+AC5E73816149EDD6EA75AC1E485CE60E08B84059CAD12A6D9D4C969F0C9153F7
+DCDDF6DC1D409A14539FF828799AC16339106C783DD589E71274B5CB35A5EA3B
+ACEE350AFF93B457C0659CE844783EC57C26BFB35CD43EF81190B9773280878F
+6AA50BD9833F4D7DB73A8BE384A08C9A45401E6FC9E1E3ADF70FC5A0BBBA001A
+2A5ED51A820ACEF131B5EF9E21EA84945F9D
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -7549,37 +7586,38 @@ TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
 /CMBX12 rf /Fl 135[42 1[42 1[30 37 38 1[46 46 51 74 23
 2[28 1[42 1[42 46 42 1[46 51[33 32[51 12[{}18 90.9091
 /CMTI10 rf /Fm 135[56 2[56 1[42 55 1[51 58 56 68 47 2[27
-1[58 49 51 57 54 53 56 46[50 2[50 1[34 45[{}20 90.9091
-/CMCSC10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo
-197[33 58[{}1 119.552 /CMMI12 rf /Fp 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 10[122 124 112 90 120 3[126 153 97 1[83 60 126
-127 101 106 124 117 115 122 7[81 81 81 81 81 81 81 81
-81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fq 200[0 21[91
-17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[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 7[68 68 93 1[68 66 51 67 1[62 71 68
-83 57 71 1[33 68 71 59 62 69 66 64 68 12[45 45 45 45
-3[30 8[45 21[76 1[51 53 11[{}57 90.9091 /CMSL10 rf /Fs
-132[67 1[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 1[37 1[67 5[67 112 1[41 20[75 78 11[{}73
-119.552 /CMBX12 rf /Ft 129[48 48 48 48 48 48 48 48 48
+1[58 49 51 57 54 53 56 8[74 4[56 2[67 77 5[37 22[50 2[50
+1[34 45[{}25 90.9091 /CMCSC10 rf /Fn 197[25 58[{}1 90.9091
+/CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 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 10[122 124 112 90 120 3[126 153 97 1[83
+60 126 127 101 106 124 117 115 122 7[81 81 81 81 81 81
+81 81 81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fq 200[0
+21[91 17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[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 7[68 68 93 1[68 66 51 67 1[62 71
+68 83 57 71 1[33 68 71 59 62 69 66 64 68 12[45 45 45
+45 3[30 8[45 21[76 1[51 53 11[{}57 90.9091 /CMSL10 rf
+/Fs 132[67 1[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 1[37 1[67 5[67 112 1[41 20[75 78
+11[{}73 119.552 /CMBX12 rf /Ft 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 1[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 33[{}93 90.9091
-/CMTT10 rf /Fu 131[91 45 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 71 43 1[71 1[25 25 45 45
-45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 71
-76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091 /CMR10
-rf /Fv 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[{}13 172.154 /CMBX12 rf end
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93
+90.9091 /CMTT10 rf /Fu 131[91 45 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 71 43 1[71
+1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45
+35 35 25 71 76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091
+/CMR10 rf /Fv 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[{}13 172.154 /CMBX12
+rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
@@ -7595,21 +7633,21 @@ ifelse
 %%Page: 1 1
 TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5
 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31
-b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.4,)g(for)f
-Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3118 1697 y(Septem)m(b)s(er)f
-(2016)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
+b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.0,)g(for)f
+Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.0.)3145 1697 y(Decem)m(b)s(er)g(2018)
+150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068
 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
 b(oundation)p 150 5141 3600 17 v eop end
 %%Page: 2 2
 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f
 (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
-(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(7)e(Septem)m(b)s
-(er)g(2016\).)150 4523 y(This)h(is)h(Edition)g(4.4,)i(last)f(up)s
-(dated)d(7)i(Septem)m(b)s(er)g(2016,)i(of)e Fr(The)f(GNU)i(Bash)f
-(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)d Ft(Bash)p
-Fu(,)g(V)-8 b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602
-4764 y(c)577 4767 y Fq(\015)f Fu(1988{2016)35 b(F)-8
+(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.0,)c(7)e(Decem)m(b)s
+(er)i(2018\).)150 4523 y(This)h(is)h(Edition)g(5.0,)i(last)e(up)s
+(dated)f(7)h(Decem)m(b)s(er)g(2018,)j(of)d Fr(The)f(GNU)h(Bash)g
+(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p
+Fu(,)g(V)-8 b(ersion)31 b(5.0.)150 4767 y(Cop)m(yrigh)m(t)602
+4764 y(c)577 4767 y Fq(\015)f Fu(1988{2018)35 b(F)-8
 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
@@ -7697,7 +7735,7 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)29 b Fu(10)524 3205 y(3.2.4.2)93 b(Conditional)31
 b(Constructs)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-39 b Fu(10)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22
+39 b Fu(11)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22
 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36
 b Fu(14)399 3425 y(3.2.5)93 b(Copro)s(cesses)26 b Fn(:)15
@@ -7707,7 +7745,7 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399
 3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)26 b Fu(15)275 3644 y(3.3)92 b(Shell)30
+(:)f(:)g(:)h(:)26 b Fu(16)275 3644 y(3.3)92 b(Shell)30
 b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
@@ -7715,385 +7753,385 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
 Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b
-Fu(18)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
+Fu(19)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)21 b Fu(19)399 3973 y(3.4.2)93 b(Sp)s(ecial)30
+h(:)f(:)h(:)21 b Fu(21)399 3973 y(3.4.2)93 b(Sp)s(ecial)30
 b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(20)275 4082
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4082
 y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)38 b Fu(21)399 4192 y(3.5.1)93 b(Brace)31
+(:)g(:)h(:)f(:)38 b Fu(22)399 4192 y(3.5.1)93 b(Brace)31
 b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b
-Fu(21)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
+Fu(23)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
 Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(22)399 4411 y(3.5.3)93
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(23)399 4411 y(3.5.3)93
 b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(23)399 4521 y(3.5.4)93
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(24)399 4521 y(3.5.4)93
 b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(29)399 4630
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(30)399 4630
 y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b
-Fu(29)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
+Fu(31)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)28 b Fu(30)399 4849 y(3.5.7)93 b(W)-8
+(:)f(:)g(:)h(:)28 b Fu(31)399 4849 y(3.5.7)93 b(W)-8
 b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41
-b Fu(30)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22
+b Fu(31)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22
 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)35 b Fu(30)524 5068 y(3.5.8.1)93 b(P)m(attern)31
+f(:)h(:)f(:)g(:)35 b Fu(32)524 5068 y(3.5.8.1)93 b(P)m(attern)31
 b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(31)399 5178 y(3.5.9)93
+h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5178 y(3.5.9)93
 b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30
-b Fu(32)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)
+b Fu(34)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(32)p
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(34)p
 eop end
 %%Page: -2 4
 TeXDict begin -2 3 bop 3699 -116 a Fu(ii)399 83 y(3.6.1)93
 b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24
-b Fu(34)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15
+b Fu(35)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15
 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)28 b Fu(34)399 302 y(3.6.3)93 b(App)s(ending)28
+(:)f(:)g(:)h(:)f(:)28 b Fu(35)399 302 y(3.6.3)93 b(App)s(ending)28
 b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)33 b Fu(34)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h
+(:)33 b Fu(36)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h
 (and)f(Standard)h(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29
-b Fu(34)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)
+b Fu(36)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)
 h(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
-b Fu(34)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
+b Fu(36)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(35)399 741 y(3.6.7)93
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(36)399 741 y(3.6.7)93
 b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(35)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
+b Fu(37)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
-b Fu(35)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
+b Fu(37)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
 Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-40 b Fu(36)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
+40 b Fu(37)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
 (for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
-(:)41 b Fu(36)275 1179 y(3.7)92 b(Executing)31 b(Commands)24
+(:)41 b Fu(37)275 1179 y(3.7)92 b(Executing)31 b(Commands)24
 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(36)399 1289 y(3.7.1)93
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(38)399 1289 y(3.7.1)93
 b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)24 b Fu(36)399 1398 y(3.7.2)93 b(Command)29
+h(:)f(:)g(:)h(:)f(:)24 b Fu(38)399 1398 y(3.7.2)93 b(Command)29
 b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-28 b Fu(37)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
+28 b Fu(38)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
 (vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(37)399
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(39)399
 1617 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)39 b Fu(38)399 1727 y(3.7.5)93 b(Exit)31
+(:)f(:)g(:)h(:)39 b Fu(40)399 1727 y(3.7.5)93 b(Exit)31
 b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29
-b Fu(39)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
+b Fu(40)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(39)275
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(41)275
 1946 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(40)150 2197
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(41)150 2197
 y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20
 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)27 b Fs(42)275 2334 y Fu(4.1)92 b(Bourne)30
+(:)h(:)f(:)h(:)f(:)27 b Fs(43)275 2334 y Fu(4.1)92 b(Bourne)30
 b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29
-b Fu(42)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
+b Fu(43)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)26 b Fu(49)275 2553 y(4.3)92 b(Mo)s(difying)30
+(:)f(:)g(:)h(:)f(:)26 b Fu(50)275 2553 y(4.3)92 b(Mo)s(difying)30
 b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(60)399
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(61)399
 2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)27 b Fu(60)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
+f(:)g(:)27 b Fu(61)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(64)275 2882 y(4.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(65)275 2882 y(4.4)92
 b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)22 b Fu(70)150 3132 y Fs(5)135 b(Shell)45
+f(:)g(:)h(:)f(:)22 b Fu(71)150 3132 y Fs(5)135 b(Shell)45
 b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(71)275 3269 y Fu(5.1)92
+f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3269 y Fu(5.1)92
 b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-23 b Fu(71)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
+23 b Fu(73)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38
-b Fu(71)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
+b Fu(73)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-44 b Fs(82)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
+44 b Fs(85)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(82)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
+b Fu(85)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
 Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(84)275
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(87)275
 3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(85)399 4095 y(6.3.1)93
+(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(88)399 4095 y(6.3.1)93
 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b
 Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(86)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
+b Fu(89)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
 (e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)35 b Fu(86)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33
+h(:)35 b Fu(89)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33
 b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(86)275 4424 y(6.4)92 b(Bash)30
+(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(89)275 4424 y(6.4)92 b(Bash)30
 b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(87)275 4534 y(6.5)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(90)275 4534 y(6.5)92
 b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)26 b Fu(89)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f
+(:)h(:)26 b Fu(92)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
-b Fu(90)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)
+b Fu(93)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38
-b Fu(91)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16
+b Fu(94)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16
 b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(93)399 4972
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(96)399 4972
 y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b
 Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-36 b Fu(93)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13
+36 b Fu(96)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13
 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(94)275 5191 y(6.10)92
+(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(97)275 5191 y(6.10)92
 b(The)30 b(Restricted)h(Shell)11 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)24
-b Fu(95)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17
+b Fu(99)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17
 b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(96)p eop end
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(99)p eop end
 %%Page: -3 5
 TeXDict begin -3 4 bop 3674 -116 a Fu(iii)150 83 y Fs(7)135
 b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(100)275 220 y
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(103)275 220 y
 Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 b Fn(:)16
 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(100)275 330 y(7.2)92
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(103)275 330 y(7.2)92
 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24
-b Fu(101)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
+b Fu(104)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
 b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(103)150
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(106)150
 690 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20
 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)k Fs(104)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30
+(:)g(:)h(:)f(:)h(:)k Fs(107)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30
 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(104)275 936 y(8.2)92
+h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(107)275 936 y(8.2)92
 b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27
-b Fu(104)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
+b Fu(107)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26
-b Fu(105)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+b Fu(108)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
 (Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27
-b Fu(105)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
+b Fu(108)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(106)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
+b Fu(109)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)30 b Fu(106)399 1484 y(8.2.5)93 b(Searc)m(hing)31
+(:)f(:)h(:)30 b Fu(109)399 1484 y(8.2.5)93 b(Searc)m(hing)31
 b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(106)275
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(109)275
 1594 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17
 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(107)399 1704
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(110)399 1704
 y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21
 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34
-b Fu(107)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
+b Fu(110)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
 b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
-b Fu(115)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
+b Fu(118)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(116)275 2032 y(8.4)92
+(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(119)275 2032 y(8.4)92
 b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(119)399 2142 y(8.4.1)93
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(122)399 2142 y(8.4.1)93
 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(119)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(122)399
 2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f
 (History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)39 b Fu(120)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8
+f(:)39 b Fu(123)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8
 b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)23 b Fu(121)399 2471 y(8.4.4)93 b(Killing)31
+h(:)f(:)23 b Fu(124)399 2471 y(8.4.4)93 b(Killing)31
 b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(122)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(126)399
 2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25
 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(124)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(127)399
 2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
 b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33
-b Fu(124)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
+b Fu(127)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(126)399 2909 y(8.4.8)93
+h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(129)399 2909 y(8.4.8)93
 b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)27 b Fu(126)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
+(:)f(:)27 b Fu(129)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
 Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(128)275
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(131)275
 3128 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15
 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
 (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
-b Fu(129)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
+b Fu(132)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
 b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(131)275
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(134)275
 3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8
 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(134)150 3598 y
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(138)150 3598 y
 Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28
 b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)41 b Fs(137)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
+(:)h(:)41 b Fs(141)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
 b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(137)275
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(141)275
 3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16
 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)41 b Fu(137)275 3954 y(9.3)92 b(History)31
+h(:)f(:)h(:)f(:)41 b Fu(141)275 3954 y(9.3)92 b(History)31
 b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23
-b Fu(139)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
+b Fu(143)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
 b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)32 b Fu(140)399 4174 y(9.3.2)93 b(W)-8
+(:)h(:)f(:)g(:)h(:)32 b Fu(144)399 4174 y(9.3.2)93 b(W)-8
 b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(140)399
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(144)399
 4283 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)29 b Fu(141)p eop end
+h(:)f(:)h(:)f(:)g(:)29 b Fu(145)p eop end
 %%Page: -4 6
 TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135
 b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)29 b Fs(142)275 220 y Fu(10.1)92 b(Basic)32
+f(:)h(:)f(:)29 b Fs(147)275 220 y Fu(10.1)92 b(Basic)32
 b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
-b Fu(142)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17
+b Fu(147)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17
 b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)30 b Fu(143)275 439 y(10.3)92 b(Compiling)30
+(:)f(:)h(:)f(:)30 b Fu(148)275 439 y(10.3)92 b(Compiling)30
 b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16
 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(143)275 549 y(10.4)92
+(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(148)275 549 y(10.4)92
 b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
 f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35
-b Fu(143)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s
+b Fu(148)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s
 (e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)34 b Fu(143)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
+h(:)34 b Fu(149)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(144)275
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(149)275
 878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)25 b Fu(144)275 987 y(10.8)92 b(Optional)31
+(:)h(:)f(:)25 b Fu(149)275 987 y(10.8)92 b(Optional)31
 b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32
-b Fu(144)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46
+b Fu(150)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46
 b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)35 b Fs(149)150 1498 y(App)t(endix)44
+(:)f(:)g(:)h(:)f(:)35 b Fs(155)150 1498 y(App)t(endix)44
 b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284
 1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)47 b Fs(150)275 1776 y Fu(B.1)92
+f(:)g(:)h(:)f(:)h(:)47 b Fs(156)275 1776 y Fu(B.1)92
 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31
 b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)35 b Fu(154)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36
+(:)35 b Fu(160)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36
 b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b
-Fo(:)20 b(:)29 b Fs(156)150 2305 y(App)t(endix)44 b(D)118
+Fo(:)20 b(:)29 b Fs(162)150 2305 y(App)t(endix)44 b(D)118
 b(Indexes)27 b Fo(:)20 b(:)g(:)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(:)40
-b Fs(164)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h
+b Fs(170)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h
 (Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38
-b Fu(164)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8
+b Fu(170)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8
 b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
 (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34
-b Fu(165)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8
+b Fu(171)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8
 b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
 (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)42 b Fu(166)275 2771 y(D.4)92 b(F)-8 b(unction)31
+h(:)f(:)g(:)42 b Fu(172)275 2771 y(D.4)92 b(F)-8 b(unction)31
 b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
 f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(168)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b
+b Fu(174)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b
 Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
 (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b
-Fu(170)p eop end
+Fu(176)p eop end
 %%Page: 1 7
 TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80
 b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150
@@ -8242,7 +8280,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an)
 h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38
 b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27
 b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630
-4295 y(tions],)f(page)f(32,)i(for)d(a)g(list)h(of)f(redirection)h(op)s
+4295 y(tions],)f(page)f(34,)i(for)d(a)g(list)h(of)f(redirection)h(op)s
 (erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630
 4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150
 4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h
@@ -8314,34 +8352,34 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g
 (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150
 3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h
 (follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g
-(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(40\),)k
+(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(41\),)k
 (from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h
 (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g
-(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(82\),)h(or)e(from)g
+(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(85\),)h(or)e(from)g
 (the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43
 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d
 (the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27
 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f
 (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330
 4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i
-(Section)f(6.6)g([Aliases],)i(page)e(90\).)199 4186 y(3.)61
+(Section)f(6.6)g([Aliases],)i(page)e(93\).)199 4186 y(3.)61
 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s
 (ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330
 4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40
 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g
-([Shell)g(Expansions],)h(page)f(21\),)330 4551 y(breaking)35
+([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35
 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h
 (\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30
-b(page)h(30\))h(and)e(commands)g(and)g(argumen)m(ts.)199
+b(page)h(32\))h(and)e(commands)g(and)g(argumen)m(ts.)199
 4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g
-(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(32\))g(and)e(re-)330
+(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(34\))g(and)e(re-)330
 4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g
 (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062
 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h
-([Executing)f(Commands],)f(page)h(36\).)199 5208 y(7.)61
+([Executing)f(Commands],)f(page)h(38\).)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(39\).)p
+y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(40\).)p
 eop end
 %%Page: 6 12
 TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41
@@ -8359,11 +8397,11 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m
 (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 1015 y(expansion)i(facilities)j
 (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m
-(teraction],)j(page)c(139\),)47 b(the)150 1124 y Fr(history)30
+(teraction],)j(page)c(143\),)47 b(the)150 1124 y Fr(history)30
 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p
 Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g
 (expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F)
--8 b(acilities],)26 b(page)c(137,)j(for)20 b(more)h(details)h
+-8 b(acilities],)26 b(page)c(141,)j(for)20 b(more)h(details)h
 (concerning)g(history)f(expansion.)275 1364 y(There)37
 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38
 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double)
@@ -8392,13 +8430,13 @@ b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p
 Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g
 (expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254
 y(When)e(the)h(shell)g(is)g(in)f Fm(posix)g Fu(mo)s(de)g(\(see)i
-(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(96\),)i(the)e(`)p
+(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(99\),)i(the)e(`)p
 Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f
 (double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g
 (enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p
 Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f
 (within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150
-3583 y([Shell)29 b(Expansions],)g(page)h(21\).)41 b(The)28
+3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28
 b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f
 (follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h
 (c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p
@@ -8418,7 +8456,7 @@ Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41
 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p
 Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g
 (quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h
-(Expansion],)e(page)h(23\).)150 4672 y Fk(3.1.2.4)63
+(Expansion],)e(page)h(24\).)150 4672 y Fk(3.1.2.4)63
 b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f
 Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8
 b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p
@@ -8432,57 +8470,57 @@ eop end
 TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299
 y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h
-(\(not)f(ANSI)f(C\))150 572 y Ft(\\f)384 b Fu(form)30
-b(feed)150 735 y Ft(\\n)384 b Fu(newline)150 898 y Ft(\\r)g
-Fu(carriage)32 b(return)150 1061 y Ft(\\t)384 b Fu(horizon)m(tal)32
-b(tab)150 1224 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150
-1387 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1551 y Ft(\\')g
-Fu(single)31 b(quote)150 1714 y Ft(\\")384 b Fu(double)30
-b(quote)150 1877 y Ft(\\?)384 b Fu(question)31 b(mark)150
-2040 y Ft(\\)p Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g
-(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5
-b(alue)31 b Fr(nnn)e Fu(\(one)i(to)g(three)g(digits\))150
-2203 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f
-(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5
-b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630
-2313 y(hex)30 b(digits\))150 2476 y Ft(\\u)p Fj(HHHH)192
-b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e
-(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630
-2586 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150
-2749 y Ft(\\U)p Fj(HHHHHHHH)630 2858 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)
-g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g
-(hexadecimal)g(v)-5 b(alue)630 2968 y Fr(HHHHHHHH)42
-b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3131
-y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38
-b Fu(c)m(haracter)150 3296 y(The)30 b(expanded)f(result)i(is)f
+(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30
+b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g
+Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32
+b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150
+1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g
+Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30
+b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150
+1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g
+(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5
+b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630
+2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36
+b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36
+b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46
+b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150
+2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g
+(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g
+(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31
+b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630
+2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f
+(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5
+b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g
+(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p
+Fr(x)38 b Fu(c)m(haracter)150 3313 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 3499 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41
-b(T)-10 b(ranslation)150 3646 y Fu(A)28 b(double-quoted)g(string)f
+(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41
+b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f
 (preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p
 Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150
-3756 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41
+3767 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41
 b(If)24 b(the)h(curren)m(t)g(lo)s(cale)h(is)f Ft(C)g
 Fu(or)g Ft(POSIX)p Fu(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150
-3865 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g
-(replacemen)m(t)h(is)e(double-quoted.)275 4004 y(Some)20
+3876 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g
+(replacemen)m(t)h(is)e(double-quoted.)275 4010 y(Some)20
 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g
 Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150
-4113 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the)
+4119 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the)
 g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5
-b(ariable,)150 4223 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p
+b(ariable,)150 4229 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p
 Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c
 Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150
-4332 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23
+4339 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23
 b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38
-b(Still)23 b(others)f(use)g(b)s(oth)150 4442 y(v)-5 b(ariables)31
+b(Still)23 b(others)f(use)g(b)s(oth)150 4448 y(v)-5 b(ariables)31
 b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p
-Ft(LC_MESSAGES)p Fu(/LC)p 2528 4442 28 4 v 34 w(MESSA)m(GES/)p
+Ft(LC_MESSAGES)p Fu(/LC)p 2528 4448 28 4 v 34 w(MESSA)m(GES/)p
 Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150
 4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m
 (teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments)
 16 b Fu(option)150 4902 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h
 (enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e
-(64\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p
+(65\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p
 Ft(#)p Fu(')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
@@ -8490,7 +8528,7 @@ Ft(interactive_comments)38 b Fu(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 Ft
 (interactive_comments)c Fu(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(85,)g(for)e(a)i
+b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(88,)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
@@ -8516,7 +8554,7 @@ b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s
 (eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150
 1600 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)h
 (command's)f(argumen)m(ts.)275 1736 y(The)h(return)h(status)g(\(see)i
-(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(39\))g(of)g(a)g(simple)f
+(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(40\))g(of)g(a)g(simple)f
 (command)g(is)h(its)150 1846 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
 m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f
 (128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 1956 y(w)m(as)31
@@ -8551,21 +8589,21 @@ h(it)150 3752 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e
 (output)g(format)g(to)150 3971 y(that)j(sp)s(eci\014ed)e(b)m(y)h
 Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e
 Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150
-4081 y(Mo)s(de],)40 b(page)f(96\),)i(it)d(do)s(es)f(not)h(recognize)i
+4081 y(Mo)s(de],)40 b(page)f(99\),)i(it)d(do)s(es)f(not)h(recognize)i
 Ft(time)c Fu(as)i(a)g(reserv)m(ed)g(w)m(ord)f(if)h(the)g(next)g(tok)m
 (en)g(b)s(egins)150 4191 y(with)33 b(a)g(`)p Ft(-)p Fu('.)49
 b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set)
 g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150
 4300 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62
 b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41
-b(page)d(71,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5
+b(page)d(73,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5
 b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f
 Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150
 4519 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s
 (elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time)
 150 4629 y(these)31 b(easily)-8 b(.)275 4765 y(When)29
 b(the)h(shell)h(is)f(in)f Fm(posix)g Fu(mo)s(de)h(\(see)h(Section)f
-(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(96\),)g Ft(time)150
+(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(99\),)g Ft(time)150
 4875 y Fu(ma)m(y)26 b(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39
 b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h
 (user)e(and)g(system)h(time)150 4984 y(consumed)33 b(b)m(y)h(the)h
@@ -8579,2528 +8617,2647 @@ Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150
 %%Page: 9 15
 TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299
-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
-408 y(Execution)36 b(En)m(vironmen)m(t],)i(page)e(37\).)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 518 y(last)27 b(command)f(in)f(the)i(pip)s
-(eline,)f(unless)g(the)g Ft(pipefail)e Fu(option)i(is)g(enabled)g
-(\(see)h(Section)g(4.3.1)h([The)150 628 y(Set)34 b(Builtin],)j(page)e
-(60\).)53 b(If)34 b Ft(pipefail)e Fu(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 737 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 847 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g(w)
-m(ord)g(`)p Ft(!)p Fu(')g(precedes)g(the)g(pip)s(eline,)h(the)g(exit)f
-(status)g(is)g(the)g(logical)150 956 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
-1066 y(pip)s(eline)30 b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v)
--5 b(alue.)150 1262 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150
-1409 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)
+y(Eac)m(h)29 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)e
+(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess)
+150 408 y(\(see)g(Section)g(3.7.3)h([Command)e(Execution)h(En)m
+(vironmen)m(t],)g(page)g(39\).)41 b(If)29 b(the)g Ft(lastpipe)e
+Fu(option)j(is)150 518 y(enabled)35 b(using)g(the)g Ft(shopt)f
+Fu(builtin)g(\(see)i(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)
+f(65\),)i(the)d(last)150 628 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m
+(y)h(b)s(e)f(run)f(b)m(y)h(the)h(shell)f(pro)s(cess.)275
+760 y(The)24 b(exit)i(status)f(of)h(a)f(pip)s(eline)g(is)g(the)g(exit)h
+(status)f(of)h(the)f(last)h(command)f(in)f(the)i(pip)s(eline,)g(unless)
+150 870 y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i
+(Section)f(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(61\).)42
+b(If)30 b Ft(pipefail)150 980 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)
+g(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g
+(\(righ)m(tmost\))i(command)d(to)h(exit)150 1089 y(with)34
+b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h
+(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p
+Ft(!)p Fu(')150 1199 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i
+(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g
+(as)g(describ)s(ed)150 1308 y(ab)s(o)m(v)m(e.)63 b(The)38
+b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f
+(to)h(terminate)h(b)s(efore)e(returning)g(a)150 1418
+y(v)-5 b(alue.)150 1614 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150
+1761 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)
 h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`)
-p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1518 y(`)p Ft(&&)p
+p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1870 y(`)p Ft(&&)p
 Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m
 (y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h
-Ft(newline)p Fu(.)275 1651 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
+Ft(newline)p Fu(.)275 2003 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
 Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f
 (precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p
-Ft(&)p Fu(',)i(whic)m(h)150 1761 y(ha)m(v)m(e)32 b(equal)e(precedence.)
-275 1893 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
+Ft(&)p Fu(',)i(whic)m(h)150 2113 y(ha)m(v)m(e)32 b(equal)e(precedence.)
+275 2245 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 Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-)
-150 2003 y(alen)m(t)i(to)f(a)g(semicolon.)275 2136 y(If)c(a)h(command)f
+150 2355 y(alen)m(t)i(to)f(a)g(semicolon.)275 2488 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
 Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150
-2245 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
+2597 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
-Fr(bac)m(kground)p Fu(.)150 2355 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 2464 y(job)d(con)m(trol)i
-(is)e(not)g(activ)m(e)j(\(see)e(Chapter)f(7)g([Job)g(Con)m(trol],)j
-(page)e(100\),)j(the)d(standard)e(input)g(for)150 2574
-y(async)m(hronous)43 b(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
-2684 y Ft(/dev/null)p Fu(.)275 2816 y(Commands)19 b(separated)j(b)m(y)f
-(a)g(`)p Ft(;)p Fu(')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 2926
-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
-3059 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
+Fr(bac)m(kground)p Fu(,)150 2707 y(and)42 b(these)i(are)f(referred)g
+(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43
+b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 2816
+y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g
+(\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h
+(\(see)150 2926 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(103\),)
+h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f
+(the)150 3036 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f
+(redirected)h(from)f Ft(/dev/null)p Fu(.)275 3168 y(Commands)19
+b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')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
+3278 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
+3411 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
 g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op)
-s(er-)150 3168 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
+s(er-)150 3520 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
 Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30
 b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s
-(ciativit)m(y)-8 b(.)275 3301 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h
-(form)390 3434 y Fj(command1)46 b Ft(&&)h Fj(command2)150
-3566 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
-Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero.)275
-3699 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 3832
-y Fj(command1)46 b Ft(||)h Fj(command2)150 3965 y Fr(command2)38
-b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38
-b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 4097
-y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f
-Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f
-(executed)150 4207 y(in)d(the)h(list.)150 4403 y Fk(3.2.4)63
-b(Comp)s(ound)42 b(Commands)150 4550 y Fu(Comp)s(ound)32
-b(commands)j(are)g(the)g(shell)g(programming)f(constructs.)54
-b(Eac)m(h)35 b(construct)g(b)s(egins)f(with)150 4659
-y(a)k(reserv)m(ed)f(w)m(ord)h(or)f(con)m(trol)i(op)s(erator)f(and)f(is)
-g(terminated)h(b)m(y)f(a)h(corresp)s(onding)f(reserv)m(ed)g(w)m(ord)150
-4769 y(or)44 b(op)s(erator.)81 b(An)m(y)44 b(redirections)g(\(see)h
-(Section)g(3.6)g([Redirections],)j(page)d(32\))g(asso)s(ciated)g(with)
-150 4878 y(a)g(comp)s(ound)e(command)i(apply)f(to)h(all)h(commands)e
-(within)g(that)h(comp)s(ound)e(command)i(unless)150 4988
-y(explicitly)32 b(o)m(v)m(erridden.)275 5121 y(In)20
-b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f
-(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
-5230 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
-(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g
-(newline)150 5340 y(in)f(place)h(of)g(a)g(semicolon.)p
+(ciativit)m(y)-8 b(.)275 3653 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h
+(form)390 3786 y Fj(command1)46 b Ft(&&)h Fj(command2)150
+3918 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g
+(\(success\).)275 4051 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390
+4184 y Fj(command1)46 b Ft(||)h Fj(command2)150 4317
+y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275
+4449 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h
+Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h
+(command)f(executed)150 4559 y(in)d(the)h(list.)150 4755
+y Fk(3.2.4)63 b(Comp)s(ound)42 b(Commands)150 4902 y
+Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f
+(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150
+5011 y(gins)25 b(with)f(a)i(reserv)m(ed)f(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 5121 y(w)m(ord)i(or)g(op)s(erator.)40
+b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h
+(page)f(34\))h(asso)s(ciated)f(with)150 5230 y(a)k(comp)s(ound)f
+(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d
+(command)i(unless)f(ex-)150 5340 y(plicitly)i(o)m(v)m(erridden.)p
 eop end
 %%Page: 10 16
 TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299
-y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
+y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s
+(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
+408 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
+(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g
+(newline)150 518 y(in)f(place)h(of)g(a)g(semicolon.)275
+663 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
-408 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
-609 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150
-756 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
-(constructs.)275 891 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
+773 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
+983 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150
+1130 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
+(constructs.)275 1276 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
 Ft(;)p Fu(')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 1001 y(replaced)c(with)f(one)h
-(or)f(more)g(newlines.)150 1162 y Ft(until)240 b Fu(The)30
+g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1385 y(replaced)c(with)f(one)h
+(or)f(more)g(newlines.)150 1561 y Ft(until)240 b Fu(The)30
 b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870
-1297 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
-(consequent-commands)p Ft(;)c(done)630 1432 y Fu(Execute)f
+1701 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
+(consequent-commands)p Ft(;)c(done)630 1841 y Fu(Execute)f
 Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46
-b Fu(has)41 b(an)g(exit)h(status)630 1542 y(whic)m(h)c(is)h(not)g
+b Fu(has)41 b(an)g(exit)h(status)630 1950 y(whic)m(h)c(is)h(not)g
 (zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g
-(the)g(last)g(command)630 1651 y(executed)31 b(in)f Fr(consequen)m
+(the)g(last)g(command)630 2060 y(executed)31 b(in)f Fr(consequen)m
 (t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150
-1812 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(while)e Fu(command)h(is:)870 1947 y Ft(while)46 b
+2230 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(while)e Fu(command)h(is:)870 2370 y Ft(while)46 b
 Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p
-Ft(;)c(done)630 2082 y Fu(Execute)f Fr(consequen)m(t-commands)k
+Ft(;)c(done)630 2510 y Fu(Execute)f Fr(consequen)m(t-commands)k
 Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41
-b(an)g(exit)h(status)630 2192 y(of)34 b(zero.)53 b(The)34
+b(an)g(exit)h(status)630 2620 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 2301 y Fr(consequen)m(t-commands)p
+(command)f(executed)h(in)630 2729 y Fr(consequen)m(t-commands)p
 Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150
-2462 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(for)e Fu(command)i(is:)870 2597 y Ft(for)47 b Fj(name)g
+2900 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(for)e Fu(command)i(is:)870 3040 y Ft(for)47 b Fj(name)g
 Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g
-Fj(commands)p Ft(;)e(done)630 2732 y Fu(Expand)31 b Fr(w)m(ords)p
-Fu(,)j(and)e(execute)i Fr(commands)i Fu(once)d(for)g(eac)m(h)h(mem)m(b)
-s(er)e(in)g(the)h(resultan)m(t)630 2841 y(list,)d(with)f
-Fr(name)34 b Fu(b)s(ound)27 b(to)i(the)h(curren)m(t)e(mem)m(b)s(er.)40
-b(If)28 b(`)p Ft(in)i Fj(words)p Fu(')e(is)h(not)g(presen)m(t,)h(the)
-630 2951 y Ft(for)f Fu(command)g(executes)i(the)e Fr(commands)k
-Fu(once)d(for)f(eac)m(h)i(p)s(ositional)f(parameter)g(that)630
-3060 y(is)d(set,)h(as)f(if)g(`)p Ft(in)j("$@")p Fu(')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 3170 y(page)c(20\).)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 3280 y(If)i(there)h(are)h(no)e(items)i(in)e(the)h
-(expansion)g(of)g Fr(w)m(ords)p Fu(,)h(no)f(commands)f(are)h(executed,)
-j(and)630 3389 y(the)j(return)e(status)i(is)f(zero.)630
-3524 y(An)g(alternate)i(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g
-(also)h(supp)s(orted:)870 3659 y Ft(for)47 b(\(\()g Fj(expr1)f
-Ft(;)i Fj(expr2)e Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f
-Fj(commands)e Ft(;)j(done)630 3794 y Fu(First,)38 b(the)f(arithmetic)h
-(expression)e Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38
-b(according)f(to)g(the)g(rules)f(de-)630 3904 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
-(89\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33
-b Fr(expr2)41 b Fu(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 4123 y(time)23 b Fr(expr2)30
-b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h(v)-5 b(alue,)25
-b Fr(commands)h Fu(are)d(executed)g(and)g(the)g(arith-)630
-4233 y(metic)29 b(expression)f Fr(expr3)36 b Fu(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 4342 y(if)i(it)h(ev)-5
+Fj(commands)p Ft(;)e(done)630 3180 y Fu(Expand)30 b Fr(w)m(ords)k
+Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d
+(execute)i Fr(com-)630 3289 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem)
+m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46
+b Fu(b)s(ound)39 b(to)i(the)630 3399 y(curren)m(t)34
+b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p
+Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h
+(the)630 3508 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g
+(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30
+b("$@")p Fu(')36 b(had)630 3618 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j
+(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)630
+3758 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h
+(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630
+3868 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g
+Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630
+3977 y(return)29 b(status)i(is)f(zero.)630 4117 y(An)g(alternate)i
+(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870
+4257 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e
+Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630
+4397 y Fu(First,)38 b(the)f(arithmetic)h(expression)e
+Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g
+(rules)f(de-)630 4507 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(92\).)77 b(The)42
+b(arithmetic)630 4616 y(expression)33 b Fr(expr2)41 b
+Fu(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 4726
+y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h
+(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g
+(arith-)630 4835 y(metic)29 b(expression)f Fr(expr3)36
+b Fu(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 4945 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
-4452 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m
+5055 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m
 (y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275
-4613 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
-(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(42\))g(ma)m(y)
-150 4723 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150
-4923 y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150
-5095 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(if)f Fu(command)g(is:)870 5230 y Ft(if)47 b Fj(test-commands)p
-Ft(;)d(then)965 5340 y Fj(consequent-commands)p Ft(;)p
+5230 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
+(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(43\))g(ma)m(y)
+150 5340 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)p
 eop end
 %%Page: 11 17
 TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)870 299
-y Ft([elif)46 b Fj(more-test-commands)p Ft(;)d(then)965
-408 y Fj(more-consequents)p Ft(;])870 518 y([else)j Fj
-(alternate-consequents)p Ft(;])870 628 y(fi)630 757 y
-Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)150 299
+y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 472
+y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(if)f
+Fu(command)g(is:)870 608 y Ft(if)47 b Fj(test-commands)p
+Ft(;)d(then)965 718 y Fj(consequent-commands)p Ft(;)870
+828 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965
+937 y Fj(more-consequents)p Ft(;])870 1047 y([else)j
+Fj(alternate-consequents)p Ft(;])870 1156 y(fi)630 1292
+y Fu(The)53 b Fr(test-commands)58 b Fu(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 867 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
+b(the)630 1402 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
 (executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39
-b(a)h(non-zero)630 976 y(status,)45 b(eac)m(h)e Ft(elif)d
+b(a)h(non-zero)630 1512 y(status,)45 b(eac)m(h)e Ft(elif)d
 Fu(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 1086 y(corresp)s(onding)37 b
+(is)f(zero,)46 b(the)630 1621 y(corresp)s(onding)37 b
 Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g
-(completes.)63 b(If)630 1196 y(`)p Ft(else)29 b Fj
+(completes.)63 b(If)630 1731 y(`)p Ft(else)29 b Fj
 (alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g
-(\014nal)g(command)g(in)g(the)g(\014nal)630 1305 y Ft(if)44
+(\014nal)g(command)g(in)g(the)g(\014nal)630 1840 y Ft(if)44
 b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j
-(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1415
+(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1950
 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 1524 y(or)30 b(zero)i(if)e(no)g
-(condition)h(tested)g(true.)150 1674 y Ft(case)288 b
+g(the)g(last)g(command)g(executed,)630 2060 y(or)30 b(zero)i(if)e(no)g
+(condition)h(tested)g(true.)150 2222 y Ft(case)288 b
 Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870
-1803 y Ft(case)47 b Fj(word)f Ft(in)h([)h([\(])f Fj(pattern)f
-Ft([|)h Fj(pattern)p Ft(]...)m(\))g Fj(command-list)e
-Ft(;;]...)h(esac)630 1933 y(case)20 b Fu(will)i(selectiv)m(ely)j
-(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20
-b(to)i(the)g(\014rst)f Fr(pattern)630 2042 y Fu(that)42
-b(matc)m(hes)g Fr(w)m(ord)p Fu(.)73 b(If)41 b(the)g Ft(nocasematch)d
-Fu(shell)j(option)h(\(see)g(the)g(description)f(of)630
-2152 y Ft(shopt)34 b Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f
-(Builtin],)k(page)e(64\))g(is)g(enabled,)g(the)g(matc)m(h)g(is)630
-2262 y(p)s(erformed)29 b(without)i(regard)g(to)g(the)g(case)h(of)f
-(alphab)s(etic)g(c)m(haracters.)44 b(The)30 b(`)p Ft(|)p
-Fu(')h(is)g(used)630 2371 y(to)e(separate)g(m)m(ultiple)g(patterns,)g
-(and)e(the)i(`)p Ft(\))p Fu(')f(op)s(erator)g(terminates)h(a)g(pattern)
-f(list.)41 b(A)630 2481 y(list)31 b(of)g(patterns)f(and)g(an)g(asso)s
-(ciated)i(command-list)f(is)f(kno)m(wn)g(as)h(a)g Fr(clause)p
-Fu(.)630 2610 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
+2358 y Ft(case)47 b Fj(word)f Ft(in)1061 2468 y([)h([\(])g
+Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c
+Ft(;;]...)870 2577 y(esac)630 2713 y(case)20 b Fu(will)i(selectiv)m
+(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20
+b(to)i(the)g(\014rst)f Fr(pattern)630 2823 y Fu(that)h(matc)m(hes)h
+Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e
+(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630
+2933 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m
+(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d
+Fu(shell)j(op-)630 3042 y(tion)j(\(see)g(the)f(description)g(of)g
+Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f
+(65\))630 3152 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)
+g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
+3261 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i
+(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p
+Ft(\))p Fu(')h(op)s(erator)630 3371 y(terminates)f(a)f(pattern)g(list.)
+43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h
+(command-list)g(is)630 3481 y(kno)m(wn)e(as)g(a)h Fr(clause)p
+Fu(.)630 3617 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
 (with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p
 Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630
-2720 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
-(command)f(substitution,)h(arithmetic)630 2829 y(expansion,)47
-b(and)d(quote)g(remo)m(v)-5 b(al)45 b(b)s(efore)f(matc)m(hing)h(is)f
-(attempted.)82 b(Eac)m(h)45 b Fr(pattern)630 2939 y Fu(undergo)s(es)38
-b(tilde)h(expansion,)i(parameter)e(expansion,)i(command)d
-(substitution,)j(and)630 3049 y(arithmetic)32 b(expansion.)630
-3178 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
-Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p
-Ft(;;)p Fu(',)630 3288 y(`)p Ft(;&)p Fu(',)c(or)e(`)p
+3726 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
+(command)f(substitution,)h(arithmetic)630 3836 y(expansion,)g(and)f
+(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g(3.5.3)h([Shell)e(P)m
+(arameter)h(Expansion],)630 3945 y(page)22 b(24\))g(b)s(efore)f(matc)m
+(hing)h(is)g(attempted.)38 b(Eac)m(h)22 b Fr(pattern)g
+Fu(undergo)s(es)e(tilde)i(expansion,)630 4055 y(parameter)31
+b(expansion,)f(command)g(substitution,)h(and)f(arithmetic)h(expansion.)
+630 4191 y(There)f(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f
+(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p
+Ft(;;)p Fu(',)630 4301 y(`)p Ft(;&)p Fu(',)c(or)e(`)p
 Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h
-(determines)e(the)h(command-list)g(that)630 3397 y(is)35
+(determines)e(the)h(command-list)g(that)630 4410 y(is)35
 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p
 Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630
-3507 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h
-(matc)m(h.)630 3636 y(Here)j(is)g(an)g(example)h(using)e
+4520 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h
+(matc)m(h.)630 4656 y(Here)j(is)g(an)g(example)h(using)e
 Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h
-(describ)s(e)g(one)630 3746 y(in)m(teresting)d(feature)f(of)f(an)g
-(animal:)870 3875 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
-(animal:)f(")870 3985 y(read)h(ANIMAL)870 4095 y(echo)g(-n)g("The)f
-($ANIMAL)g(has)h(")870 4204 y(case)g($ANIMAL)e(in)965
-4314 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965
-4423 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
-4533 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
-4643 y(esac)870 4752 y(echo)h(")g(legs.")630 4902 y Fu(If)25
+(describ)s(e)g(one)630 4766 y(in)m(teresting)d(feature)f(of)f(an)g
+(animal:)870 4902 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
+(animal:)f(")870 5011 y(read)h(ANIMAL)870 5121 y(echo)g(-n)g("The)f
+($ANIMAL)g(has)h(")870 5230 y(case)g($ANIMAL)e(in)965
+5340 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)p
+eop end
+%%Page: 12 18
+TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)965 299
+y Ft(man)47 b(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
+408 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
+518 y(esac)870 628 y(echo)h(")g(legs.")630 781 y Fu(If)25
 b(the)h(`)p Ft(;;)p Fu(')g(op)s(erator)g(is)g(used,)g(no)g(subsequen)m
 (t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)f(\014rst)630
-5011 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p
+891 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p
 Fu(')f(in)h(place)g(of)g(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)f
-(con)m(tin)m(ue)h(with)f(the)630 5121 y Fr(command-list)39
+(con)m(tin)m(ue)h(with)f(the)630 1000 y Fr(command-list)39
 b Fu(asso)s(ciated)f(with)e(the)g(next)g(clause,)j(if)d(an)m(y)-8
 b(.)59 b(Using)37 b(`)p Ft(;;&)p Fu(')f(in)g(place)h(of)630
-5230 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f
+1110 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f
 (patterns)g(in)f(the)h(next)g(clause,)h(if)e(an)m(y)-8
-b(,)31 b(and)f(execute)630 5340 y(an)m(y)h(asso)s(ciated)h
-Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)p
-eop end
-%%Page: 12 18
-TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299
-y(The)26 b(return)f(status)h(is)g(zero)h(if)f(no)g Fr(pattern)g
-Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e(status)630
-408 y(is)30 b(the)h(exit)g(status)g(of)f(the)h Fr(command-list)i
-Fu(executed.)150 564 y Ft(select)630 697 y Fu(The)g Ft(select)f
-Fu(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 806 y(same)c(syn)m(tax)g(as)f(the)h
-Ft(for)e Fu(command:)870 939 y Ft(select)46 b Fj(name)h
-Ft([in)g Fj(words)f Ft(...)o(];)h(do)h Fj(commands)p
-Ft(;)d(done)630 1072 y Fu(The)25 b(list)h(of)f(w)m(ords)g(follo)m(wing)
-i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)g(items.)39
-b(The)25 b(set)h(of)630 1181 y(expanded)i(w)m(ords)h(is)g(prin)m(ted)f
-(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)g(preceded)
-630 1291 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 b(If)20
-b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j(the)d(p)s
-(ositional)h(parameters)g(are)f(prin)m(ted,)630 1401
-y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s
+b(,)31 b(and)f(execute)630 1219 y(an)m(y)h(asso)s(ciated)h
+Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)630
+1351 y(The)c(return)f(status)h(is)g(zero)h(if)f(no)g
+Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e
+(status)630 1461 y(is)30 b(the)h(exit)g(status)g(of)f(the)h
+Fr(command-list)i Fu(executed.)150 1614 y Ft(select)630
+1745 y Fu(The)g Ft(select)f Fu(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
+1855 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870
+1987 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h
+Fj(commands)p Ft(;)d(done)630 2118 y Fu(The)25 b(list)h(of)f(w)m(ords)g
+(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)
+g(items.)39 b(The)25 b(set)h(of)630 2228 y(expanded)i(w)m(ords)h(is)g
+(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)
+g(preceded)630 2337 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37
+b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j
+(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630
+2447 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s
 (eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m
-(ed)h(and)f(a)h(line)630 1510 y(is)h(read)f(from)h(the)f(standard)g
+(ed)h(and)f(a)h(line)630 2556 y(is)h(read)f(from)h(the)f(standard)g
 (input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e
-(corresp)s(onding)630 1620 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h
+(corresp)s(onding)630 2666 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h
 (w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40
-b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 1729
+b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 2776
 y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f
 (prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b
-Ft(EOF)f Fu(is)h(read,)630 1839 y(the)c Ft(select)e Fu(command)i
+Ft(EOF)f Fu(is)h(read,)630 2885 y(the)c Ft(select)e Fu(command)i
 (completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g
-Fr(name)38 b Fu(to)c(b)s(e)e(set)630 1948 y(to)f(n)m(ull.)41
+Fr(name)38 b Fu(to)c(b)s(e)e(set)630 2995 y(to)f(n)m(ull.)41
 b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5
-b(ariable)31 b Ft(REPLY)p Fu(.)630 2081 y(The)42 b Fr(commands)j
+b(ariable)31 b Ft(REPLY)p Fu(.)630 3126 y(The)42 b Fr(commands)j
 Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h
-Ft(break)d Fu(command)i(is)630 2191 y(executed,)32 b(at)f(whic)m(h)f(p)
+Ft(break)d Fu(command)i(is)630 3236 y(executed,)32 b(at)f(whic)m(h)f(p)
 s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630
-2323 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f
+3367 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
-2433 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 2566 y Ft(select)46
-b(fname)g(in)i(*;)870 2675 y(do)870 2785 y(echo)f(you)g(picked)f
-($fname)g(\\\($REPLY\\\))870 2894 y(break;)870 3004 y(done)150
-3160 y(\(\(...)o(\)\))870 3292 y(\(\()h Fj(expression)e
-Ft(\)\))630 3425 y Fu(The)33 b(arithmetic)i Fr(expression)f
+3477 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 3608 y Ft(select)46
+b(fname)g(in)i(*;)870 3718 y(do)870 3828 y(echo)f(you)g(picked)f
+($fname)g(\\\($REPLY\\\))870 3937 y(break;)870 4047 y(done)150
+4200 y(\(\(...)o(\)\))870 4332 y(\(\()h Fj(expression)e
+Ft(\)\))630 4463 y Fu(The)33 b(arithmetic)i Fr(expression)f
 Fu(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 3535 y(\(see)j(Section)f(6.5)h([Shell)f
-(Arithmetic],)i(page)f(89\).)55 b(If)34 b(the)h(v)-5
-b(alue)35 b(of)g(the)g(expression)g(is)630 3644 y(non-zero,)27
+(ed)g(b)s(elo)m(w)630 4573 y(\(see)j(Section)f(6.5)h([Shell)f
+(Arithmetic],)i(page)f(92\).)55 b(If)34 b(the)h(v)-5
+b(alue)35 b(of)g(the)g(expression)g(is)630 4682 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 3754 y(equiv)-5
-b(alen)m(t)32 b(to)870 3886 y Ft(let)47 b(")p Fj(expression)p
-Ft(")630 4019 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f
-(49,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e
-Fu(builtin.)150 4175 y Ft([[...)o(]])870 4308 y([[)47
-b Fj(expression)e Ft(]])630 4440 y Fu(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 4550 y(sion)j
-Fr(expression)p Fu(.)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
-4659 y(Section)36 b(6.4)h([Bash)f(Conditional)g(Expressions],)h(page)f
-(87.)57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630
-4769 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j(the)f(w)m
-(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f Ft(]])p
-Fu(;)i(tilde)630 4879 y(expansion,)e(parameter)g(and)f(v)-5
-b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630
-4988 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
-5098 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p
-Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j
-(as)f(primaries.)630 5230 y(When)k(used)f(with)h Ft([[)p
-Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g
-(sort)g(lexicographically)j(using)d(the)630 5340 y(curren)m(t)30
-b(lo)s(cale.)p eop end
+(is)g(1.)39 b(This)25 b(is)g(exactly)630 4792 y(equiv)-5
+b(alen)m(t)32 b(to)870 4924 y Ft(let)47 b(")p Fj(expression)p
+Ft(")630 5055 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f
+(50,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e
+Fu(builtin.)150 5208 y Ft([[...)o(]])870 5340 y([[)47
+b Fj(expression)e Ft(]])p eop end
 %%Page: 13 19
 TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)630 299
-y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p Ft(!=)p
-Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e(righ)m(t)
-h(of)g(the)g(op)s(erator)630 408 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 518 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m
-(hing],)h(page)f(31,)g(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g
-(w)m(ere)630 628 y(enabled.)46 b(The)31 b(`)p Ft(=)p
-Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p Ft(==)p
-Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630
-737 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d
+y(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
+408 y(sion)j Fr(expression)p Fu(.)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 518 y(Section)36 b(6.4)h([Bash)f(Conditional)g
+(Expressions],)h(page)f(90.)57 b(W)-8 b(ord)36 b(splitting)h(and)e
+(\014le-)630 628 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j
+(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f
+Ft(]])p Fu(;)i(tilde)630 737 y(expansion,)e(parameter)g(and)f(v)-5
+b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630
+847 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
+956 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p Ft(-f)p
+Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j(as)f
+(primaries.)630 1097 y(When)k(used)f(with)h Ft([[)p Fu(,)h(the)f(`)p
+Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g(sort)g
+(lexicographically)j(using)d(the)630 1207 y(curren)m(t)30
+b(lo)s(cale.)630 1348 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p
+Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e
+(righ)m(t)h(of)g(the)g(op)s(erator)630 1457 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 1567 y(Section)d(3.5.8.1)h([P)m(attern)f
+(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d
+Fu(shell)j(option)g(w)m(ere)630 1677 y(enabled.)46 b(The)31
+b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p
+Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630
+1786 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d
 Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45
-b(page)d(64\))630 847 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s
+b(page)d(65\))630 1896 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s
 (erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
-956 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28
+2005 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28
 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p
-Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 1066 y(\(`)p
-Ft(!=)p Fu('\)the)33 b(pattern,)g(and)f(1)g(otherwise.)47
-b(An)m(y)32 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to)
-630 1176 y(force)f(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed)
-h(as)g(a)f(string.)630 1316 y(An)j(additional)i(binary)e(op)s(erator,)i
+Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 2115 y(\(`)p
+Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41
+b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to)
+630 2225 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed)
+h(as)g(a)f(string.)630 2365 y(An)j(additional)i(binary)e(op)s(erator,)i
 (`)p Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g
-(precedence)h(as)630 1426 y(`)p Ft(==)p Fu(')29 b(and)f(`)p
-Ft(!=)p Fu('.)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
-1536 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m
-(hed)i(accordingly)g(\(as)f(in)g Fl(r)-5 b(e)g(gex)11
-b Fu(3\)\).)630 1645 y(The)29 b(return)f(v)-5 b(alue)30
-b(is)g(0)g(if)f(the)h(string)g(matc)m(hes)g(the)g(pattern,)g(and)f(1)h
-(otherwise.)41 b(If)29 b(the)630 1755 y(regular)e(expression)g(is)h
-(syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e
-(return)630 1864 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39
-b(the)h Ft(nocasematch)c Fu(shell)k(option)g(\(see)g(the)g(description)
-g(of)f Ft(shopt)f Fu(in)630 1974 y(Section)32 b(4.3.2)g([The)f(Shopt)f
-(Builtin],)i(page)g(64\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s
-(erformed)630 2084 y(without)36 b(regard)g(to)h(the)f(case)h(of)f
-(alphab)s(etic)h(c)m(haracters.)59 b(An)m(y)36 b(part)g(of)h(the)f
-(pattern)630 2193 y(ma)m(y)31 b(b)s(e)f(quoted)h(to)g(force)g(the)g
-(quoted)g(p)s(ortion)f(to)h(b)s(e)f(matc)m(hed)h(as)g(a)g(string.)41
-b(Brac)m(k)m(et)630 2303 y(expressions)27 b(in)f(regular)i(expressions)
-e(m)m(ust)h(b)s(e)g(treated)h(carefully)-8 b(,)29 b(since)e(normal)g
-(quot-)630 2412 y(ing)38 b(c)m(haracters)h(lose)f(their)g(meanings)f(b)
-s(et)m(w)m(een)h(brac)m(k)m(ets.)64 b(If)37 b(the)h(pattern)f(is)h
-(stored)630 2522 y(in)33 b(a)i(shell)f(v)-5 b(ariable,)35
-b(quoting)f(the)g(v)-5 b(ariable)35 b(expansion)e(forces)i(the)f(en)m
-(tire)g(pattern)g(to)630 2632 y(b)s(e)h(matc)m(hed)i(as)f(a)g(string.)
-56 b(Substrings)34 b(matc)m(hed)j(b)m(y)f(paren)m(thesized)g(sub)s
-(expressions)630 2741 y(within)k(the)g(regular)g(expression)g(are)g(sa)
-m(v)m(ed)i(in)d(the)i(arra)m(y)f(v)-5 b(ariable)41 b
-Ft(BASH_REMATCH)p Fu(.)630 2851 y(The)30 b(elemen)m(t)i(of)e
-Ft(BASH_REMATCH)d Fu(with)j(index)g(0)h(is)g(the)f(p)s(ortion)g(of)h
-(the)f(string)h(matc)m(h-)630 2960 y(ing)j(the)g(en)m(tire)g(regular)g
-(expression.)50 b(The)34 b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c
-Fu(with)j(index)g Fr(n)630 3070 y Fu(is)d(the)h(p)s(ortion)f(of)g(the)h
-(string)f(matc)m(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s
-(expression.)630 3211 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i
+(precedence)h(as)630 2475 y(`)p Ft(==)p Fu(')g(and)g(`)p
+Ft(!=)p Fu('.)55 b(When)35 b(it)g(is)h(used,)f(the)h(string)f(to)h(the)
+f(righ)m(t)h(of)f(the)h(op)s(erator)f(is)g(con-)630 2585
+y(sidered)43 b(a)h Fm(POSIX)f Fu(extended)h(regular)g(expression)f(and)
+g(matc)m(hed)i(accordingly)f(\(as)630 2694 y(in)d Fl(r)-5
+b(e)g(gex)11 b Fu(3\)\).)76 b(The)41 b(return)f(v)-5
+b(alue)42 b(is)g(0)f(if)h(the)f(string)h(matc)m(hes)g(the)g(pattern,)j
+(and)c(1)630 2804 y(otherwise.)59 b(If)35 b(the)i(regular)f(expression)
+g(is)g(syn)m(tactically)j(incorrect,)g(the)e(conditional)630
+2913 y(expression's)27 b(return)f(v)-5 b(alue)28 b(is)f(2.)40
+b(If)27 b(the)g Ft(nocasematch)e Fu(shell)i(option)h(\(see)g(the)f
+(descrip-)630 3023 y(tion)41 b(of)g Ft(shopt)f Fu(in)h(Section)g(4.3.2)
+i([The)e(Shopt)f(Builtin],)k(page)e(65\))g(is)f(enabled,)j(the)630
+3133 y(matc)m(h)36 b(is)f(p)s(erformed)e(without)i(regard)g(to)h(the)f
+(case)h(of)f(alphab)s(etic)g(c)m(haracters.)56 b(An)m(y)630
+3242 y(part)25 b(of)h(the)g(pattern)f(ma)m(y)h(b)s(e)f(quoted)h(to)g
+(force)g(the)g(quoted)f(p)s(ortion)g(to)i(b)s(e)d(matc)m(hed)j(as)630
+3352 y(a)34 b(string.)49 b(Brac)m(k)m(et)36 b(expressions)c(in)h
+(regular)h(expressions)f(m)m(ust)g(b)s(e)f(treated)j(carefully)-8
+b(,)630 3461 y(since)37 b(normal)f(quoting)h(c)m(haracters)g(lose)g
+(their)g(meanings)f(b)s(et)m(w)m(een)h(brac)m(k)m(ets.)60
+b(If)36 b(the)630 3571 y(pattern)e(is)g(stored)g(in)f(a)i(shell)f(v)-5
+b(ariable,)36 b(quoting)e(the)g(v)-5 b(ariable)35 b(expansion)e(forces)
+i(the)630 3680 y(en)m(tire)30 b(pattern)e(to)i(b)s(e)e(matc)m(hed)h(as)
+g(a)g(string.)40 b(Substrings)27 b(matc)m(hed)j(b)m(y)e(paren)m
+(thesized)630 3790 y(sub)s(expressions)40 b(within)h(the)g(regular)h
+(expression)f(are)h(sa)m(v)m(ed)h(in)e(the)h(arra)m(y)g(v)-5
+b(ariable)630 3900 y Ft(BASH_REMATCH)p Fu(.)56 b(The)37
+b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c Fu(with)j(index)h(0)g(is)g(the)f
+(p)s(ortion)h(of)630 4009 y(the)22 b(string)f(matc)m(hing)h(the)g(en)m
+(tire)g(regular)g(expression.)37 b(The)21 b(elemen)m(t)i(of)e
+Ft(BASH_REMATCH)630 4119 y Fu(with)26 b(index)h Fr(n)f
+Fu(is)h(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)f
+Fr(n)p Fu(th)f(paren)m(thesized)h(sub)s(ex-)630 4228
+y(pression.)630 4369 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i
 (will)e(matc)m(h)h(a)g(line)f(\(stored)h(in)e(the)i(shell)f(v)-5
-b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 3320 y(there)22
+b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 4479 y(there)22
 b(is)g(a)h(sequence)f(of)h(c)m(haracters)g(in)f(the)g(v)-5
 b(alue)23 b(consisting)g(of)f(an)m(y)h(n)m(um)m(b)s(er,)f(including)630
-3430 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f
+4589 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f
 (instances)h(of)g(`)p Ft(a)p Fu(',)f(then)g(a)h(`)p Ft(b)p
-Fu(':)870 3571 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630
-3712 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p
+Fu(':)870 4729 y Ft([[)47 b($line)g(=~)g([[:space:]]*?\(a\)b)c(]])630
+4870 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p
 Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j
-(as)d(will)g(a)g(line)g(con)m(taining)630 3821 y(a)31
+(as)d(will)g(a)g(line)g(con)m(taining)630 4980 y(a)31
 b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630
-3962 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5
+5121 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5
 b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid)
-630 4072 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp)
+630 5230 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp)
 s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630
-4181 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f
-(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630
-4291 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g
+5340 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f
+(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)p
+eop end
+%%Page: 14 20
+TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299
+y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g
 (expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630
-4401 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25
+408 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25
 b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g
-(decreases)g(these)630 4510 y(problems.)40 b(F)-8 b(or)31
+(decreases)g(these)630 518 y(problems.)40 b(F)-8 b(or)31
 b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32
-b(to)f(the)g(ab)s(o)m(v)m(e:)870 4651 y Ft(pattern='[[:space:]]*\(a\))o
-(?b')870 4761 y([[)47 b($line)g(=~)g($pattern)e(]])630
-4902 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m
+b(to)f(the)g(ab)s(o)m(v)m(e:)870 649 y Ft(pattern='[[:space:]]*?\(a)o
+(\)b')870 758 y([[)47 b($line)g(=~)g($pattern)e(]])630
+889 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m
 (haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g
-(gram-)630 5011 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m
-(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g
-(the)630 5121 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p
+(gram-)630 999 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m(v)
+m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g
+(the)630 1108 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p
 Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f
-(\(its)h(usual)f(regular)630 5230 y(expression)g(meaning\),)i(but)e(in)
+(\(its)h(usual)f(regular)630 1218 y(expression)g(meaning\),)i(but)e(in)
 g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h)
-i(a)e(literal)630 5340 y(`)p Ft(.)p Fu('.)56 b(Shell)35
+i(a)e(literal)630 1328 y(`)p Ft(.)p Fu('.)56 b(Shell)35
 b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m
-(kslashes,)i(since)f(bac)m(k-)p eop end
-%%Page: 14 20
-TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299
-y(slashes)27 b(are)g(used)f(b)s(oth)g(b)m(y)h(the)f(shell)h(and)f
-(regular)h(expressions)g(to)g(remo)m(v)m(e)h(the)f(sp)s(ecial)630
-408 y(meaning)h(from)f(the)h(follo)m(wing)i(c)m(haracter.)41
-b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f(of)g(commands)g(are)630
-518 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 649 y Ft(pattern='\\.')
-870 868 y([[)47 b(.)h(=~)f($pattern)e(]])870 978 y([[)i(.)h(=~)f(\\.)g
-(]])870 1197 y([[)g(.)h(=~)f("$pattern")e(]])870 1307
-y([[)i(.)h(=~)f('\\.')f(]])630 1438 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h
-(matc)m(hes)g(will)f(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f
-(not,)h(b)s(ecause)f(in)g(the)630 1547 y(second)39 b(t)m(w)m(o)i(the)e
-(bac)m(kslash)h(will)f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e
-(matc)m(hed.)68 b(In)39 b(the)630 1657 y(\014rst)31 b(t)m(w)m(o)h
-(examples,)h(the)e(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g
-(meaning)f(from)g(`)p Ft(.)p Fu(',)h(so)g(the)630 1766
-y(literal)f(`)p Ft(.)p Fu(')e(matc)m(hes.)42 b(If)28
-b(the)i(string)f(in)g(the)g(\014rst)g(examples)g(w)m(ere)h(an)m(ything)
-g(other)f(than)630 1876 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p
-Ft(a)p Fu(',)g(the)f(pattern)g(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause)
-e(the)g(quoted)g(`)p Ft(.)p Fu(')h(in)e(the)i(pattern)630
-1986 y(loses)i(its)g(sp)s(ecial)g(meaning)f(of)h(matc)m(hing)g(an)m(y)g
-(single)g(c)m(haracter.)630 2116 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 2226 y(order)30 b(of)g(precedence:)630
-2378 y Ft(\()g Fj(expression)e Ft(\))1110 2488 y Fu(Returns)i(the)h(v)
--5 b(alue)31 b(of)g Fr(expression)p Fu(.)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
-2598 y(normal)e(precedence)h(of)g(op)s(erators.)630 2750
-y Ft(!)f Fj(expression)1110 2860 y Fu(T)-8 b(rue)30 b(if)g
-Fr(expression)g Fu(is)h(false.)630 3012 y Fj(expression1)c
-Ft(&&)j Fj(expression2)1110 3122 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g
-Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31
-b(true.)630 3274 y Fj(expression1)c Ft(||)j Fj(expression2)1110
-3384 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
+(kslashes,)i(since)f(bac)m(k-)630 1437 y(slashes)27 b(are)g(used)f(b)s
+(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m
+(v)m(e)h(the)f(sp)s(ecial)630 1547 y(meaning)h(from)f(the)h(follo)m
+(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f
+(of)g(commands)g(are)630 1656 y Fl(not)40 b Fu(equiv)-5
+b(alen)m(t:)870 1787 y Ft(pattern='\\.')870 2006 y([[)47
+b(.)h(=~)f($pattern)e(]])870 2116 y([[)i(.)h(=~)f(\\.)g(]])870
+2335 y([[)g(.)h(=~)f("$pattern")e(]])870 2445 y([[)i(.)h(=~)f('\\.')f
+(]])630 2576 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f
+(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f
+(in)g(the)630 2685 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)
+f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68
+b(In)39 b(the)630 2795 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e
+(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p
+Ft(.)p Fu(',)h(so)g(the)630 2904 y(literal)f(`)p Ft(.)p
+Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g
+(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)630
+3014 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g
+(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p
+Ft(.)p Fu(')h(in)e(the)i(pattern)630 3124 y(loses)i(its)g(sp)s(ecial)g
+(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630
+3254 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
+3364 y(order)30 b(of)g(precedence:)630 3516 y Ft(\()g
+Fj(expression)e Ft(\))1110 3626 y Fu(Returns)i(the)h(v)-5
+b(alue)31 b(of)g Fr(expression)p Fu(.)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 3735 y(normal)e(precedence)h(of)
+g(op)s(erators.)630 3887 y Ft(!)f Fj(expression)1110
+3997 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630
+4149 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 4259
+y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38
+b Fu(and)29 b Fr(expression2)38 b Fu(are)31 b(true.)630
+4411 y Fj(expression1)c Ft(||)j Fj(expression2)1110 4520
+y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
 b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630
-3536 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g
+4672 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g
 (ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5
-b(alue)25 b(of)g Fr(expression1)630 3646 y Fu(is)30 b(su\016cien)m(t)h
+b(alue)25 b(of)g Fr(expression1)630 4782 y Fu(is)30 b(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 3838 y Fk(3.2.4.3)63
-b(Grouping)43 b(Commands)150 3985 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
+g(conditional)h(expression.)150 4974 y Fk(3.2.4.3)63
+b(Grouping)43 b(Commands)150 5121 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
 (o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e
-(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 4094
+(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 5230
 y(mands)h(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 4204 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 4356 y Ft(\(\))870 4487 y(\()47 b Fj(list)g Ft(\))630
-4618 y Fu(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
-4728 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(37\),)630 4837
+b(example,)150 5340 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.)p
+eop end
+%%Page: 15 21
+TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)150 299
+y Ft(\(\))870 437 y(\()47 b Fj(list)g Ft(\))630 574 y
+Fu(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
+684 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(39\),)630 793
 y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j
 Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28
-b(the)f Fr(list)630 4947 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5
+b(the)f Fr(list)630 903 y Fu(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 5057 y(subshell)g(completes.)150 5209
-y Ft({})870 5340 y({)47 b Fj(list)p Ft(;)g(})p eop end
-%%Page: 15 21
-TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299
-y(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f
+(after)e(the)630 1013 y(subshell)g(completes.)150 1178
+y Ft({})870 1316 y({)47 b Fj(list)p Ft(;)g(})630 1453
+y Fu(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
-408 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42
+1563 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 518 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275
-668 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j
+(newline\))630 1673 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275
+1841 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j
 (there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150
-778 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67
+1951 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67
 b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40
-b(so)g(they)f(m)m(ust)150 887 y(b)s(e)d(separated)h(from)f(the)g
+b(so)g(they)f(m)m(ust)150 2061 y(b)s(e)d(separated)h(from)f(the)g
 Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m
-(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 997
+(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 2170
 y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i
 (tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f
-(separated)150 1107 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.)
-275 1236 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h
+(separated)150 2280 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.)
+275 2421 y(The)e(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 Fr(list)p
-Fu(.)150 1426 y Fk(3.2.5)63 b(Copro)s(cesses)150 1573
+Fu(.)150 2626 y Fk(3.2.5)63 b(Copro)s(cesses)150 2773
 y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m
 (y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36
-b(copro)s(cess)h(is)150 1683 y(executed)g(async)m(hronously)g(in)f(a)h
+b(copro)s(cess)h(is)150 2883 y(executed)g(async)m(hronously)g(in)f(a)h
 (subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i
-(with)g(the)150 1793 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g
+(with)g(the)150 2992 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g
 (with)f(a)g(t)m(w)m(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m
-(een)h(the)f(executing)h(shell)f(and)f(the)150 1902 y(copro)s(cess.)275
-2032 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390
-2162 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
-Ft([)p Fj(redirections)p Ft(])150 2292 y Fu(This)39 b(creates)j(a)e
+(een)h(the)f(executing)h(shell)f(and)f(the)150 3102 y(copro)s(cess.)275
+3243 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390
+3383 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
+Ft([)p Fj(redirections)p Ft(])150 3524 y Fu(This)39 b(creates)j(a)e
 (copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46
 b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150
-2401 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23
+3634 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23
 b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f
-(command)g(\(see)i(Section)f(3.2.1)150 2511 y([Simple)39
+(command)g(\(see)i(Section)f(3.2.1)150 3743 y([Simple)39
 b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h
 (as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150
-2621 y(command.)275 2750 y(When)j(the)i(copro)s(cess)f(is)g(executed,)
+3853 y(command.)275 3994 y(When)j(the)i(copro)s(cess)f(is)g(executed,)
 48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5
-b(ariable)44 b(\(see)g(Section)g(6.7)150 2860 y([Arra)m(ys],)32
-b(page)g(91\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h
+b(ariable)44 b(\(see)g(Section)g(6.7)150 4103 y([Arra)m(ys],)32
+b(page)g(94\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h
 (executing)g(shell.)44 b(The)31 b(standard)f(output)150
-2970 y(of)g Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)i
-(a)f(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)f(and)g(that)g
-(\014le)150 3079 y(descriptor)i(is)f(assigned)h(to)g
-Ft(NAME)p Fu([0].)45 b(The)31 b(standard)g(input)f(of)i
-Fr(command)j Fu(is)d(connected)h(via)f(a)g(pip)s(e)150
-3189 y(to)39 b(a)g(\014le)f(descriptor)g(in)g(the)g(executing)i(shell,)
-g(and)e(that)h(\014le)f(descriptor)g(is)g(assigned)h(to)g
-Ft(NAME)p Fu([1].)150 3298 y(This)31 b(pip)s(e)g(is)h(established)g(b)s
-(efore)g(an)m(y)g(redirections)g(sp)s(eci\014ed)g(b)m(y)f(the)i
-(command)e(\(see)i(Section)g(3.6)150 3408 y([Redirections],)25
-b(page)e(32\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f
-(utilized)i(as)f(argumen)m(ts)h(to)f(shell)g(commands)150
-3518 y(and)33 b(redirections)g(using)g(standard)f(w)m(ord)h
-(expansions.)49 b(The)33 b(\014le)g(descriptors)g(are)g(not)h(a)m(v)-5
-b(ailable)35 b(in)150 3627 y(subshells.)275 3757 y(The)27
-b(pro)s(cess)h(ID)h(of)f(the)h(shell)f(spa)m(wned)g(to)h(execute)h(the)
-e(copro)s(cess)h(is)f(a)m(v)-5 b(ailable)31 b(as)d(the)h(v)-5
-b(alue)29 b(of)150 3867 y(the)k(v)-5 b(ariable)33 b Ft(NAME)p
-850 3867 28 4 v 39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g
-(ma)m(y)h(b)s(e)f(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150
-3976 y(to)e(terminate.)275 4106 y(Since)20 b(the)g(copro)s(cess)h(is)g
-(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f
-Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 4216 y(returns)29
-b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f
-(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 4406
-y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4553 y Fu(There)30
-b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e
-(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150
-4662 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 4792
-y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g
-(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150
-4902 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g
-(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g
-(\014lenames,)150 5011 y(usernames,)27 b(hostnames,)h(or)e(lines)h
-(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d
-(shorthand)g(references)150 5121 y(to)38 b(man)m(y)g(of)g(the)g(most)g
-(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38
-b(p)s(ortions)f(of)h(the)g(input)e(line,)150 5230 y(di\013eren)m(t)f(w)
-m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).)
-54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150
-5340 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f
-(di\013eren)m(t)g(instances)g(of)g(Bash.)p eop end
+4213 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)
+i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that)
+150 4322 y(\014le)i(descriptor)h(is)f(assigned)h(to)g
+Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g
+Fr(command)k Fu(is)c(connected)h(via)150 4432 y(a)h(pip)s(e)f(to)i(a)f
+(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h
+(\014le)g(descriptor)g(is)g(assigned)g(to)150 4542 y
+Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s
+(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h
+(command)g(\(see)150 4651 y(Section)45 b(3.6)h([Redirections],)k(page)
+45 b(34\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)
+h(as)g(argumen)m(ts)150 4761 y(to)d(shell)g(commands)f(and)g
+(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74
+b(Other)41 b(than)g(those)150 4870 y(created)27 b(to)g(execute)g
+(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g
+(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4980
+y(in)30 b(subshells.)275 5121 y(The)d(pro)s(cess)h(ID)h(of)f(the)h
+(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5
+b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 5230
+y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 5230 28 4 v
+39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f
+(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5340
+y(to)e(terminate.)p eop end
 %%Page: 16 22
 TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299
-y(F)-8 b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g
-(P)m(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150
-408 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)g
-(use.)275 541 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g
-(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h
-(the)f(curren)m(t)g(directory)150 650 y(and)30 b(its)h(sub)s
-(directories:)390 783 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g
-(-print)g(|)h(parallel)f(gzip)150 915 y Fu(If)30 b(y)m(ou)h(need)f(to)h
-(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f
-(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 1025
-y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275
-1157 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h
-(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m
-(b)s(er)e(of)i(\014les)150 1267 y(is)c(to)s(o)i(large)f(to)g(pro)s
-(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390
-1399 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275
-1532 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g
-Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g(standard)g
-(input.)39 b(While)29 b(using)150 1641 y Ft(ls)g Fu(will)h(w)m(ork)g
-(in)f(most)h(instances,)h(it)f(is)g(not)g(su\016cien)m(t)g(to)h(deal)f
-(with)f(all)i(\014lenames.)40 b(If)30 b(y)m(ou)g(need)f(to)150
-1751 y(accommo)s(date)j(sp)s(ecial)f(c)m(haracters)h(in)e(\014lenames,)
-h(y)m(ou)f(can)h(use)390 1883 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f
-(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(mv)g({})g(destdir)150
-2016 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275
-2148 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h
-(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8
-b(.)42 b(Y)-8 b(ou)31 b(can)150 2258 y(em)m(ulate)h(a)f(parallel)g
-Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390
-2390 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h
-(parallel)f(-0)h(-X)g(mv)g({})g(destdir)275 2523 y Fu(GNU)31
-b(P)m(arallel)i(can)e(replace)h(certain)g(common)g(idioms)f(that)g(op)s
-(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 2632
-y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g(line\):)
-390 2765 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390
-2874 y(do-something1)d("$x")j("config-$x")390 2984 y(do-something2)d(<)
-k("$x")390 3093 y(done)f(<)g(file)g(|)g(process-output)150
-3226 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g
-(of)g(lam)m(b)s(das:)390 3358 y Ft(cat)47 b(list)g(|)g(parallel)f
-("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)g
-(process-output)275 3491 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h
-(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h(\014lename)e
-(extensions,)i(whic)m(h)e(lends)g(itself)150 3600 y(to)i(batc)m(h)g
-(\014le)g(transformations)f(or)g(renaming:)390 3733 y
-Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g
-(>{.}.bz2)e(&&)j(rm)f({}")150 3865 y Fu(This)28 b(will)i(recompress)e
-(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g
-(ending)f(in)h(.gz)h(using)f(bzip2,)150 3975 y(running)37
-b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66
-b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c
-Ft(find)g Fu(as)150 4084 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h
-(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m
-(haracters.\))57 b(P)m(arallel)150 4194 y(can)31 b(tak)m(e)h(argumen)m
-(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also)
-g(b)s(e)f(written)g(as)390 4326 y Ft(parallel)46 b("zcat)g({})h(|)h
-(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 4459
-y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m
-(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.)
-150 4568 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390
-4701 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h
-(freenetproject.org;)d(})k(|)h(parallel)d(traceroute)150
-4833 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m
-(v)m(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30
-b(the)g Ft(-k)g Fu(option)390 4966 y Ft({)47 b(echo)g(foss.org.my)e(;)i
-(echo)g(debian.org;)e(echo)h(freenetproject.org;)d(})k(|)h(parallel)d
-(-k)i(traceroute)150 5098 y Fu(will)31 b(ensure)e(that)i(the)g(output)f
-(of)g Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.)
-275 5230 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i
-(run)d(a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)
-f(to)150 5340 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53
-b(It)35 b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f
-(\014lenames,)h(create)g(a)g(series)f(of)g(shell)p eop
-end
+y(Since)20 b(the)g(copro)s(cess)h(is)g(created)g(as)g(an)f(async)m
+(hronous)g(command,)i(the)f Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150
+408 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h
+(copro)s(cess)g(is)f(the)h(exit)g(status)g(of)f Fr(command)p
+Fu(.)150 612 y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150
+759 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g
+(parallel)h(that)h(are)e(not)h(built)g(in)m(to)g(Bash.)41
+b(GNU)31 b(P)m(arallel)i(is)150 869 y(a)e(to)s(ol)g(to)g(do)f(just)g
+(that.)275 1007 y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j
+(can)d(b)s(e)g(used)g(to)h(build)f(and)g(run)f(commands)h(in)h
+(parallel.)150 1117 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h
+(command)f(with)g(di\013eren)m(t)h(argumen)m(ts,)j(whether)39
+b(they)i(are)g(\014lenames,)150 1227 y(usernames,)27
+b(hostnames,)h(or)e(lines)h(read)f(from)h(\014les.)39
+b(GNU)27 b(P)m(arallel)i(pro)m(vides)d(shorthand)g(references)150
+1336 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op)s(erations)g
+(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h(the)g(input)e
+(line,)150 1446 y(di\013eren)m(t)f(w)m(a)m(ys)h(to)f(sp)s(ecify)f(the)h
+(input)f(source,)i(and)e(so)h(on\).)54 b(P)m(arallel)36
+b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 1555 y(commands)30
+b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f(di\013eren)m(t)g
+(instances)g(of)g(Bash.)275 1694 y(F)-8 b(or)33 b(a)g(complete)h
+(description,)g(refer)e(to)i(the)f(GNU)g(P)m(arallel)i(do)s(cumen)m
+(tation.)48 b(A)33 b(few)f(examples)150 1804 y(should)d(pro)m(vide)i(a)
+g(brief)e(in)m(tro)s(duction)i(to)g(its)g(use.)275 1943
+y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g(replace)h
+Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h(the)f(curren)m
+(t)g(directory)150 2052 y(and)30 b(its)h(sub)s(directories:)390
+2191 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g(-print)g(|)h
+(parallel)f(gzip)150 2330 y Fu(If)30 b(y)m(ou)h(need)f(to)h(protect)h
+(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f(\014le)g
+(names,)h(use)f(\014nd's)f Ft(-print0)150 2439 y Fu(option)i(and)f
+(parallel's)h Ft(-0)f Fu(option.)275 2578 y(Y)-8 b(ou)34
+b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h(\014les)f(from)f(the)h
+(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m(b)s(er)e(of)i(\014les)
+150 2688 y(is)c(to)s(o)i(large)f(to)g(pro)s(cess)f(with)g(one)h
+Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 2827 y Ft(ls)47 b(|)h(parallel)d
+(mv)i({})h(destdir)275 2965 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g
+Fi({})g Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g
+(standard)g(input.)39 b(While)29 b(using)150 3075 y Ft(ls)g
+Fu(will)h(w)m(ork)g(in)f(most)h(instances,)h(it)f(is)g(not)g
+(su\016cien)m(t)g(to)h(deal)f(with)f(all)i(\014lenames.)40
+b(If)30 b(y)m(ou)g(need)f(to)150 3185 y(accommo)s(date)j(sp)s(ecial)f
+(c)m(haracters)h(in)e(\014lenames,)h(y)m(ou)f(can)h(use)390
+3323 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h
+(parallel)f(-0)h(mv)g({})g(destdir)150 3462 y Fu(as)31
+b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 3601 y(This)e(will)i(run)e(as)h
+(man)m(y)h Ft(mv)e Fu(commands)h(as)h(there)f(are)h(\014les)f(in)h(the)
+f(curren)m(t)g(directory)-8 b(.)42 b(Y)-8 b(ou)31 b(can)150
+3711 y(em)m(ulate)h(a)f(parallel)g Ft(xargs)e Fu(b)m(y)h(adding)g(the)h
+Ft(-X)f Fu(option:)390 3850 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f
+(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(-X)g(mv)g({})g(destdir)
+275 3988 y Fu(GNU)31 b(P)m(arallel)i(can)e(replace)h(certain)g(common)g
+(idioms)f(that)g(op)s(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150
+4098 y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g
+(line\):)390 4237 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390
+4346 y(do-something1)d("$x")j("config-$x")390 4456 y(do-something2)d(<)
+k("$x")390 4566 y(done)f(<)g(file)g(|)g(process-output)150
+4704 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g
+(of)g(lam)m(b)s(das:)390 4843 y Ft(cat)47 b(list)g(|)g(parallel)f
+("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)
+915 4953 y(process-output)275 5092 y Fu(P)m(arallel)31
+b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h
+(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150
+5201 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390
+5340 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g
+(>{.}.bz2)e(&&)j(rm)f({}")p eop end
 %%Page: 17 23
 TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41
 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299
-y(commands)27 b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g
-(list)g(of)g(commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29
-b(can)f(sp)s(eed)150 408 y(this)i(up.)40 b(Assuming)30
-b(that)h Ft(file)e Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h
-(one)f(p)s(er)g(line,)390 540 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150
-672 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h
+y(This)28 b(will)i(recompress)e(all)i(\014les)f(in)g(the)g(curren)m(t)g
+(directory)g(with)g(names)g(ending)f(in)h(.gz)h(using)f(bzip2,)150
+408 y(running)37 b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p
+Ft(+)p Fu(0\))i(in)e(parallel.)66 b(\(W)-8 b(e)40 b(use)e
+Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c Ft(find)g
+Fu(as)150 518 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h(the)h(face)g
+(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m(haracters.\))57
+b(P)m(arallel)150 628 y(can)31 b(tak)m(e)h(argumen)m(ts)e(from)g(the)h
+(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also)g(b)s(e)f(written)
+g(as)390 770 y Ft(parallel)46 b("zcat)g({})h(|)h(bzip2)e(>{.}.bz2)f(&&)
+j(rm)f({}")g(:::)g(*.gz)275 913 y Fu(If)24 b(a)i(command)f(generates)h
+(output,)g(y)m(ou)g(ma)m(y)f(w)m(an)m(t)h(to)g(preserv)m(e)g(the)f
+(input)f(order)h(in)g(the)g(output.)150 1023 y(F)-8 b(or)31
+b(instance,)g(the)g(follo)m(wing)h(command)390 1165 y
+Ft({)581 1275 y(echo)47 b(foss.org.my)d(;)581 1385 y(echo)j(debian.org)
+e(;)581 1494 y(echo)i(freenetproject.org)42 b(;)390 1604
+y(})47 b(|)h(parallel)d(traceroute)150 1747 y Fu(will)31
+b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m(o)s(cation)h
+(that)e(\014nishes)e(\014rst.)40 b(Adding)30 b(the)g
+Ft(-k)g Fu(option)390 1889 y Ft({)581 1999 y(echo)47
+b(foss.org.my)d(;)581 2108 y(echo)j(debian.org)e(;)581
+2218 y(echo)i(freenetproject.org)42 b(;)390 2328 y(})47
+b(|)h(parallel)d(-k)j(traceroute)150 2470 y Fu(will)31
+b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f
+Fu(is)k(displa)m(y)m(ed)g(\014rst.)275 2613 y(Finally)-8
+b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i(sequence)h
+(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150
+2723 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35
+b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h
+(create)g(a)g(series)f(of)g(shell)150 2832 y(commands)24
+b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e
+(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150
+2942 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e
+Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g
+(line,)390 3085 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150
+3227 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h
 (shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an)
-150 781 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h
-(jobs)f(at)h(a)g(time.)150 1016 y Fs(3.3)68 b(Shell)45
-b(F)-11 b(unctions)150 1175 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m
+150 3337 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h
+(jobs)f(at)h(a)g(time.)150 3590 y Fs(3.3)68 b(Shell)45
+b(F)-11 b(unctions)150 3750 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m
 (a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h
-(single)g(name)g(for)150 1285 y(the)f(group.)55 b(They)35
+(single)g(name)g(for)150 3859 y(the)f(group.)55 b(They)35
 b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p
 Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150
-1395 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e
+3969 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
-1504 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25
+4078 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 1614 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m
-(terpret)g(them.)275 1745 y(F)-8 b(unctions)30 b(are)h(declared)g
-(using)f(this)g(syn)m(tax:)390 1877 y Fj(name)47 b Ft(\(\))g
+(text;)j(no)c(new)150 4188 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m
+(terpret)g(them.)275 4331 y(F)-8 b(unctions)30 b(are)h(declared)g
+(using)f(this)g(syn)m(tax:)390 4473 y Fj(name)47 b Ft(\(\))g
 Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275
-2008 y Fu(or)390 2140 y Ft(function)i Fj(name)g Ft([\(\)])h
+4616 y Fu(or)390 4759 y Ft(function)i Fj(name)g Ft([\(\)])h
 Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275
-2271 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f
+4902 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f
 Fr(name)p Fu(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f
-Ft(function)f Fu(is)h(optional.)49 b(If)150 2381 y(the)39
+Ft(function)f Fu(is)h(optional.)49 b(If)150 5011 y(the)39
 b Ft(function)f Fu(reserv)m(ed)h(w)m(ord)g(is)g(supplied,)i(the)e
 (paren)m(theses)h(are)f(optional.)69 b(The)39 b Fr(b)s(o)s(dy)45
-b Fu(of)40 b(the)150 2491 y(function)h(is)h(the)g(comp)s(ound)e
+b Fu(of)40 b(the)150 5121 y(function)h(is)h(the)g(comp)s(ound)e
 (command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.4)g([Comp)
-s(ound)150 2600 y(Commands],)33 b(page)h(9\).)49 b(That)33
+s(ound)150 5230 y(Commands],)33 b(page)h(9\).)49 b(That)33
 b(command)f(is)h(usually)g(a)g Fr(list)j Fu(enclosed)e(b)s(et)m(w)m
 (een)f Fi({)h Fu(and)e Fi(})p Fu(,)i(but)e(ma)m(y)150
-2710 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v)
+5340 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v)
 m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e
-Fu(reserv)m(ed)150 2819 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m
-(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63
-b Fr(comp)s(ound-)150 2929 y(command)39 b Fu(is)c(executed)h(whenev)m
-(er)f Fr(name)41 b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h
-(a)f(command.)56 b(When)35 b(the)150 3038 y(shell)d(is)h(in)f
-Fm(posix)f Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s
-(de],)j(page)f(96\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150
-3148 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e
-(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(70\).)61
-b(An)m(y)150 3258 y(redirections)32 b(\(see)g(Section)h(3.6)f
-([Redirections],)i(page)e(32\))h(asso)s(ciated)g(with)e(the)h(shell)f
-(function)h(are)150 3367 y(p)s(erformed)d(when)g(the)i(function)f(is)g
-(executed.)275 3499 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f
-(deleted)h(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g
-Ft(unset)e Fu(builtin)h(\(see)150 3608 y(Section)31 b(4.1)h([Bourne)e
-(Shell)g(Builtins],)h(page)h(42\).)275 3740 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
-3849 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
-3959 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 4091 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 4200 y(the)38 b(b)s(o)s(dy)d(of)j
-(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s
-(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150
-4310 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 4419 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e
-(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41
-b(Also,)28 b(when)150 4529 y(using)i(the)g(braces,)h(the)g
-Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a)
-e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 4660 y(When)i(a)i(function)f
-(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)
-g(the)h(p)s(ositional)g(pa-)150 4770 y(rameters)42 b(during)e(its)i
+Fu(reserv)m(ed)p eop end
+%%Page: 18 24
+TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299
+y(w)m(ord)38 b(is)g(used,)h(but)f(the)g(paren)m(theses)h(are)f(not)h
+(supplied,)g(the)f(braces)g(are)h(required.)63 b Fr(comp)s(ound-)150
+408 y(command)39 b Fu(is)c(executed)h(whenev)m(er)f Fr(name)41
+b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h(a)f(command.)56
+b(When)35 b(the)150 518 y(shell)d(is)h(in)f Fm(posix)f
+Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page)
+f(99\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 628 y(the)k(same)g(as)g
+(one)g(of)g(the)f(sp)s(ecial)i(builtins)e(\(see)h(Section)h(4.4)g([Sp)s
+(ecial)f(Builtins],)i(page)e(71\).)61 b(An)m(y)150 737
+y(redirections)32 b(\(see)g(Section)h(3.6)f([Redirections],)i(page)e
+(34\))h(asso)s(ciated)g(with)e(the)h(shell)f(function)h(are)150
+847 y(p)s(erformed)d(when)g(the)i(function)f(is)g(executed.)275
+981 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f(deleted)h
+(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g Ft(unset)e
+Fu(builtin)h(\(see)150 1090 y(Section)31 b(4.1)h([Bourne)e(Shell)g
+(Builtins],)h(page)h(43\).)275 1224 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 1334 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 1443 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 1577 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
+1687 y(the)38 b(b)s(o)s(dy)d(of)j(the)f(function)g(m)m(ust)g(b)s(e)g
+(separated)h(from)f(the)g(b)s(o)s(dy)f(b)m(y)h Ft(blank)p
+Fu(s)f(or)h(newlines.)62 b(This)150 1797 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 1906 y(separated)26
+b(from)f(the)h(command)f(list)i(b)m(y)e(whitespace)h(or)g(another)g
+(shell)g(metac)m(haracter.)41 b(Also,)28 b(when)150 2016
+y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g
+(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p Ft(&)p
+Fu(',)h(or)g(a)f(newline.)275 2150 y(When)i(a)i(function)f(is)g
+(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)g
+(the)h(p)s(ositional)g(pa-)150 2259 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(19\).)75 b(The)150 4880 y(sp)s(ecial)37
+(arameters],)i(page)c(21\).)75 b(The)150 2369 y(sp)s(ecial)37
 b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b)
 s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150
-4989 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35
+2478 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35
 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35
-b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 5099
+b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 2588
 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h
 (function)f(while)g(the)h(function)f(is)g(executing.)275
-5230 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)
+2722 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)
 m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g
-(and)150 5340 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
+(and)150 2832 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
 b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f
-(inherited)f(unless)h(the)p eop end
-%%Page: 18 24
-TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299
-y(function)26 b(has)g(b)s(een)f(giv)m(en)i(the)g Ft(trace)d
-Fu(attribute)j(using)f(the)g Ft(declare)e Fu(builtin)i(or)g(the)h
-Ft(-o)i(functrace)150 408 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)
-g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f
-(functions)e(inherit)h(the)g Ft(DEBUG)150 518 y Fu(and)33
-b Ft(RETURN)f Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g
-(inherited)f(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150
-628 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f
-(Shell)g(Builtins],)i(page)f(42,)i(for)c(the)i(description)f(of)150
-737 y(the)c Ft(trap)e Fu(builtin.)275 885 y(The)38 b
-Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f
-(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150
-995 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
+(inherited)f(unless)h(the)150 2941 y(function)26 b(has)g(b)s(een)f(giv)
+m(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g
+Ft(declare)e Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150
+3051 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g
+Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e
+(inherit)h(the)g Ft(DEBUG)150 3160 y Fu(and)33 b Ft(RETURN)f
+Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f
+(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150
+3270 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f
+(Shell)g(Builtins],)i(page)f(43,)i(for)c(the)i(description)f(of)150
+3380 y(the)c Ft(trap)e Fu(builtin.)275 3513 y(The)38
+b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)
+f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150
+3623 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
 b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g
-(en)m(tire)g(command)150 1105 y(to)31 b(ab)s(ort.)275
-1253 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
+(en)m(tire)g(command)150 3733 y(to)31 b(ab)s(ort.)275
+3867 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
 Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h
-(and)150 1362 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f
+(and)150 3976 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 1472 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed)
+(ciated)150 4086 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed)
 g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g
-(completes,)150 1581 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s
+(completes,)150 4195 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s
 (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p
-Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 1691 y(v)-5
+Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 4305 y(v)-5
 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40
 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g
-Ft(return)p Fu(,)150 1801 y(that)j(is)g(the)f(function's)h(return)e
+Ft(return)p Fu(,)150 4415 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 1910 y(of)h(the)f(last)h(command)f(executed)i(b)s
-(efore)e(the)g Ft(return)p Fu(.)275 2058 y(V)-8 b(ariables)31
+(exit)h(status)150 4524 y(of)h(the)f(last)h(command)f(executed)i(b)s
+(efore)e(the)g Ft(return)p Fu(.)275 4658 y(V)-8 b(ariables)31
 b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f
 (the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150
-2168 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 2316 y(F)-8 b(unction)51
-b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h
-Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2426 y
-Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g
-(4.2)g([Bash)f(Builtins],)i(page)f(49\).)59 b(The)35
-b Ft(-F)h Fu(option)g(to)150 2535 y Ft(declare)e Fu(or)i
-Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g
-(optionally)h(the)f(source)g(\014le)h(and)150 2645 y(line)c(n)m(um)m(b)
-s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49
-b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150
-2754 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f
-(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d
-Fu(builtin)i(\(see)150 2864 y(Section)c(4.1)g([Bourne)f(Shell)g
-(Builtins],)i(page)f(42\).)47 b(Note)33 b(that)g(shell)f(functions)g
-(and)f(v)-5 b(ariables)33 b(with)150 2973 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 3083 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 3231
-y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48
+4768 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i
+(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h
+(imp)s(ortan)m(t)150 4877 y(when)j(a)i(shell)g(function)f(calls)h
+(other)g(functions.)275 5011 y(Lo)s(cal)41 b(v)-5 b(ariables)42
+b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42
+b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150
+5121 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5
+b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5
+b(ariable)41 b(of)g(the)g(same)150 5230 y(name:)59 b(references)40
+b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5
+b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150
+5340 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the)
+g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)p
+eop end
+%%Page: 19 25
+TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299
+y(The)30 b(shell)h(uses)g Fr(dynamic)g(scoping)39 b Fu(to)32
+b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h(within)d
+(functions.)42 b(With)150 408 y(dynamic)31 b(scoping,)i(visible)e(v)-5
+b(ariables)32 b(and)f(their)h(v)-5 b(alues)32 b(are)f(a)h(result)g(of)f
+(the)h(sequence)g(of)f(function)150 518 y(calls)37 b(that)g(caused)g
+(execution)g(to)g(reac)m(h)g(the)g(curren)m(t)f(function.)58
+b(The)36 b(v)-5 b(alue)36 b(of)h(a)g(v)-5 b(ariable)37
+b(that)g(a)150 628 y(function)24 b(sees)g(dep)s(ends)f(on)h(its)g(v)-5
+b(alue)25 b(within)e(its)i(caller,)i(if)d(an)m(y)-8 b(,)26
+b(whether)e(that)g(caller)i(is)e(the)g Ft(")p Fu(global)p
+Ft(")150 737 y Fu(scop)s(e)41 b(or)g(another)g(shell)g(function.)73
+b(This)40 b(is)h(also)h(the)f(v)-5 b(alue)41 b(that)h(a)f(lo)s(cal)i(v)
+-5 b(ariable)41 b(declaration)150 847 y Ft(")p Fu(shado)m(ws)p
+Ft(")p Fu(,)30 b(and)g(the)g(v)-5 b(alue)31 b(that)g(is)f(restored)h
+(when)e(the)i(function)f(returns.)275 991 y(F)-8 b(or)41
+b(example,)j(if)d(a)g(v)-5 b(ariable)41 b Fr(v)-5 b(ar)48
+b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f(function)f
+Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 1101
+y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h
+Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39
+b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 1210
+y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b
+Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5
+b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 1355 y(The)29
+b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40
+b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390
+1499 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390
+1643 y(func1\(\))390 1753 y({)581 1862 y(local)g(var='func1)f(local')
+581 1972 y(func2)390 2081 y(})390 2301 y(func2\(\))390
+2410 y({)581 2520 y(echo)i("In)f(func2,)h(var)f(=)i($var")390
+2629 y(})390 2849 y(var=global)390 2958 y(func1)275 3102
+y Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)
+f(dynamic)g(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34
+b(is)f(lo)s(cal)h(to)g(the)150 3212 y(curren)m(t)i(scop)s(e,)h
+Ft(unset)e Fu(will)h(unset)g(it;)j(otherwise)e(the)f(unset)f(will)h
+(refer)g(to)h(the)f(v)-5 b(ariable)37 b(found)d(in)150
+3322 y(an)m(y)j(calling)h(scop)s(e)f(as)g(describ)s(ed)f(ab)s(o)m(v)m
+(e.)61 b(If)36 b(a)h(v)-5 b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s
+(cal)h(scop)s(e)e(is)h(unset,)h(it)150 3431 y(will)27
+b(remain)h(so)f(un)m(til)g(it)h(is)f(reset)h(in)f(that)g(scop)s(e)h(or)
+f(un)m(til)g(the)h(function)e(returns.)39 b(Once)27 b(the)g(function)
+150 3541 y(returns,)34 b(an)m(y)h(instance)g(of)f(the)g(v)-5
+b(ariable)35 b(at)g(a)g(previous)e(scop)s(e)i(will)f(b)s(ecome)h
+(visible.)52 b(If)34 b(the)g(unset)150 3650 y(acts)e(on)f(a)h(v)-5
+b(ariable)32 b(at)g(a)f(previous)g(scop)s(e,)h(an)m(y)f(instance)h(of)f
+(a)h(v)-5 b(ariable)32 b(with)f(that)h(name)f(that)h(had)150
+3760 y(b)s(een)e(shado)m(w)m(ed)g(will)h(b)s(ecome)g(visible.)275
+3904 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s
+(e)e(listed)h(with)f(the)h Ft(-f)f Fu(option)h(to)g(the)g
+Ft(declare)150 4014 y Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g
+(command)h(\(see)h(Section)g(4.2)g([Bash)f(Builtins],)i(page)f(50\).)59
+b(The)35 b Ft(-F)h Fu(option)g(to)150 4123 y Ft(declare)e
+Fu(or)i Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g
+(\(and)g(optionally)h(the)f(source)g(\014le)h(and)150
+4233 y(line)c(n)m(um)m(b)s(er,)g(if)f(the)h Ft(extdebug)e
+Fu(shell)i(option)g(is)g(enabled\).)49 b(F)-8 b(unctions)33
+b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 4343 y(subshells)j
+(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f(with)h(the)h
+Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d Fu(builtin)i(\(see)150
+4452 y(Section)31 b(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).)
+275 4596 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48
 b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g
-(to)i(limit)g(the)f(depth)f(of)150 3341 y(the)27 b(function)f(call)i
+(to)i(limit)g(the)f(depth)f(of)150 4706 y(the)27 b(function)f(call)i
 (stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f
 (in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150
-3450 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f
-(calls.)150 3711 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
-3871 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that)
+4816 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f
+(calls.)150 5071 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
+5230 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that)
 f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g
 Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s
-(ecial)150 3980 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39
+(ecial)150 5340 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39
 b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b)
 m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24
-b(has)f(a)g Fr(v)-5 b(alue)150 4090 y Fu(and)33 b(zero)i(or)f(more)g
-Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g
-(the)g Ft(declare)e Fu(builtin)h(command)150 4200 y(\(see)e(the)g
-(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2)
-g([Bash)g(Builtins],)g(page)g(49\).)275 4348 y(A)d(parameter)h(is)g
-(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5
-b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5
-b(alid)28 b(v)-5 b(alue.)41 b(Once)150 4457 y(a)31 b(v)-5
-b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f
-(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4605
-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 4754 y Fj(name)p
-Ft(=[)p Fj(value)p Ft(])150 4902 y Fu(If)j Fr(v)-5 b(alue)40
+b(has)f(a)g Fr(v)-5 b(alue)p eop end
+%%Page: 20 26
+TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299
+y(and)33 b(zero)i(or)f(more)g Fr(attributes)p Fu(.)52
+b(A)m(ttributes)35 b(are)f(assigned)g(using)g(the)g Ft(declare)e
+Fu(builtin)h(command)150 408 y(\(see)e(the)g(description)f(of)h(the)f
+Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2)g([Bash)g(Builtins],)g
+(page)g(50\).)275 542 y(A)d(parameter)h(is)g(set)g(if)f(it)h(has)f(b)s
+(een)g(assigned)h(a)g(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)
+h(a)g(v)-5 b(alid)28 b(v)-5 b(alue.)41 b(Once)150 652
+y(a)31 b(v)-5 b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g
+(only)h(b)m(y)f(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275
+786 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 920 y Fj(name)p
+Ft(=[)p Fj(value)p Ft(])150 1054 y Fu(If)j Fr(v)-5 b(alue)40
 b Fu(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 Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150
-5011 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
+1163 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
 b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150
-5121 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).)
+1273 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 Ft(integer)e
-Fu(attribute)i(set,)j(then)150 5230 y Fr(v)-5 b(alue)38
+Fu(attribute)i(set,)j(then)150 1383 y Fr(v)-5 b(alue)38
 b Fu(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 Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g
-(used)150 5340 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
-(page)h(29\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s
-(erformed,)f(with)p eop end
-%%Page: 19 25
-TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299
-y(the)35 b(exception)h(of)f Ft("$@")f Fu(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 408 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 Ft(alias)p Fu(,)e
-Ft(declare)p Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150
-518 y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g
-(\()p Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f
-Fm(posix)f Fu(mo)s(de)150 628 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX)
-d(Mo)s(de],)j(page)f(96\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e
-(in)g(a)h(command)150 737 y(after)i(one)g(or)f(more)h(instances)g(of)f
-(the)h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g
-(statemen)m(t)150 847 y(prop)s(erties.)275 994 y(In)29
+(used)150 1492 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
+(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s
+(erformed,)f(with)150 1602 y(the)35 b(exception)h(of)f
+Ft("$@")f Fu(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
+1711 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 Ft(alias)p Fu(,)e Ft(declare)p
+Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 1821
+y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p
+Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f
+Fu(mo)s(de)150 1931 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s
+(de],)j(page)f(99\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e(in)g(a)h
+(command)150 2040 y(after)i(one)g(or)f(more)h(instances)g(of)f(the)h
+Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g
+(statemen)m(t)150 2150 y(prop)s(erties.)275 2284 y(In)29
 b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e
 (assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5
-b(ariable)31 b(or)150 1104 y(arra)m(y)24 b(index)f(\(see)h(Section)g
-(6.7)g([Arra)m(ys],)i(page)e(91\),)i(the)e(`)p Ft(+=)p
+b(ariable)31 b(or)150 2393 y(arra)m(y)24 b(index)f(\(see)h(Section)g
+(6.7)g([Arra)m(ys],)i(page)e(94\),)i(the)e(`)p Ft(+=)p
 Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)150
-1213 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5
+2503 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5
 b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g
-(commands)f(suc)m(h)h(as)150 1323 y Ft(declare)e Fu(that)i(accept)h
+(commands)f(suc)m(h)h(as)150 2612 y Ft(declare)e Fu(that)i(accept)h
 (assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h
 Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150
-1433 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h
+2722 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h
 Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j
 Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g
-(arithmetic)150 1542 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5
+(arithmetic)150 2832 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5
 b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h
 (ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150
-1652 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26
+2941 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26
 b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m
-(ys],)h(page)f(91\),)150 1761 y(the)33 b(v)-5 b(ariable's)33
+(ys],)h(page)f(94\),)150 3051 y(the)33 b(v)-5 b(ariable's)33
 b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i
 (`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e
-(to)150 1871 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h
+(to)150 3160 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h
 (than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra)
-m(ys\),)j(or)150 1980 y(added)c(as)i(additional)g(k)m(ey-v)-5
+m(ys\),)j(or)150 3270 y(added)c(as)i(additional)g(k)m(ey-v)-5
 b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8
 b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150
-2090 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31
+3380 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31
 b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32
-b(v)-5 b(alue.)275 2237 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f
+b(v)-5 b(alue.)275 3513 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f
 (assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g
 Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150
-2347 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)f(49\))h(to)f(create)i(a)e
-Fr(nameref)p Fu(,)g(or)g(a)150 2457 y(reference)f(to)g(another)f(v)-5
+3623 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h
+([Bash)f(Builtins],)h(page)f(50\))h(to)f(create)i(a)e
+Fr(nameref)p Fu(,)g(or)g(a)150 3733 y(reference)f(to)g(another)f(v)-5
 b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26
 b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150
-2566 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g
+3842 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g
 (assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed)
-f(\(other)150 2676 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f
+f(\(other)150 3952 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f
 (attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h
-(p)s(erformed)d(on)150 2785 y(the)31 b(v)-5 b(ariable)31
+(p)s(erformed)d(on)150 4061 y(the)31 b(v)-5 b(ariable)31
 b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31
 b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150
-2895 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5
+4171 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5
 b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to)
-g(the)f(function.)150 3005 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5
+g(the)f(function.)150 4281 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5
 b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h
-(its)f(\014rst)g(argumen)m(t,)h(running)390 3152 y Ft(declare)46
-b(-n)h(ref=$1)150 3299 y Fu(inside)31 b(the)h(function)f(creates)i(a)g
+(its)f(\014rst)g(argumen)m(t,)h(running)390 4415 y Ft(declare)46
+b(-n)h(ref=$1)150 4548 y Fu(inside)31 b(the)h(function)f(creates)i(a)g
 (nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32
 b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150
-3409 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30
+4658 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30
 b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g
-(its)f(attributes,)i(are)150 3518 y(treated)g(as)f(references,)g
+(its)f(attributes,)i(are)150 4768 y(treated)g(as)f(references,)g
 (assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v)
--5 b(ariable)30 b(whose)g(name)150 3628 y(w)m(as)h(passed)f(as)g
-Ft($1)p Fu(.)275 3775 y(If)h(the)g(con)m(trol)i(v)-5
+-5 b(ariable)30 b(whose)g(name)150 4877 y(w)m(as)h(passed)f(as)g
+Ft($1)p Fu(.)275 5011 y(If)h(the)g(con)m(trol)i(v)-5
 b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h
 (attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150
-3885 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f
+5121 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f
 (reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in)
-h(the)g(list,)150 3995 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g
+h(the)g(list,)150 5230 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g
 (executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e
-(giv)m(en)h(the)g(nameref)g(attribute.)150 4104 y(Ho)m(w)m(ev)m(er,)39
+(giv)m(en)h(the)g(nameref)g(attribute.)150 5340 y(Ho)m(w)m(ev)m(er,)39
 b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5
-b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150
-4214 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h
-Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section)
-g(4.1)h([Bourne)150 4323 y(Shell)43 b(Builtins],)j(page)e(42\).)79
+b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)p
+eop end
+%%Page: 21 27
+TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299
+y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h Ft(-n)e
+Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section)g(4.1)h
+([Bourne)150 408 y(Shell)43 b(Builtins],)j(page)e(43\).)79
 b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name)
-g(of)g(a)g(nameref)150 4433 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m
+g(of)g(a)g(nameref)150 518 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m
 (t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v)
--5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 4645 y Fk(3.4.1)63
-b(P)m(ositional)41 b(P)m(arameters)150 4792 y Fu(A)28
+-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 741 y Fk(3.4.1)63
+b(P)m(ositional)41 b(P)m(arameters)150 888 y Fu(A)28
 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted)
 g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150
-4902 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are)
-g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)
-m(v)m(ok)m(ed,)150 5011 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)
-e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41
-b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 5121 y(referenced)34
+998 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are)g
+(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)m
+(v)m(ok)m(ed,)150 1107 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)e
+(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41
+b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 1217 y(referenced)34
 b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g
 Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37
-b(parameters)d(ma)m(y)150 5230 y(not)j(b)s(e)f(assigned)h(to)g(with)f
+b(parameters)d(ma)m(y)150 1327 y(not)j(b)s(e)f(assigned)h(to)g(with)f
 (assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g
 Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150
-5340 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
-(Builtin)g(Commands],)h(page)f(42\).)68 b(The)39 b(p)s(ositional)p
-eop end
-%%Page: 20 26
-TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299
-y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h(shell)g
-(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150
-408 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275
-540 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f
+1436 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
+(Builtin)g(Commands],)h(page)f(43\).)68 b(The)39 b(p)s(ositional)150
+1546 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h
+(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150
+1655 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275
+1814 y(When)c(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
-650 y(b)s(e)h(enclosed)h(in)f(braces.)150 844 y Fk(3.4.2)63
-b(Sp)s(ecial)41 b(P)m(arameters)150 991 y Fu(The)d(shell)g(treats)h
+1923 y(b)s(e)h(enclosed)h(in)f(braces.)150 2146 y Fk(3.4.2)63
+b(Sp)s(ecial)41 b(P)m(arameters)150 2293 y Fu(The)d(shell)g(treats)h
 (sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38
 b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150
-1101 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150
-1255 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
+2403 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150
+2598 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
 (parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630
-1365 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s
-(ositional)f(parameter)g(expands)f(to)i(a)630 1474 y(separate)e(w)m
+2708 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s
+(ositional)f(parameter)g(expands)f(to)i(a)630 2817 y(separate)e(w)m
 (ord.)56 b(In)35 b(con)m(texts)i(where)e(it)h(is)g(p)s(erformed,)g
-(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1584
+(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 2927
 y(further)h(w)m(ord)h(splitting)h(and)f(pathname)g(expansion.)61
-b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1694 y(within)25
+b(When)38 b(the)f(expansion)g(o)s(ccurs)630 3037 y(within)25
 b(double)h(quotes,)h(it)f(expands)f(to)i(a)f(single)g(w)m(ord)f(with)h
-(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1803
+(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 3146
 y(eter)32 b(separated)h(b)m(y)e(the)h(\014rst)f(c)m(haracter)i(of)f
 (the)g Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)45 b(That)32
-b(is,)g Ft("$*")630 1913 y Fu(is)f(equiv)-5 b(alen)m(t)32
+b(is,)g Ft("$*")630 3256 y Fu(is)f(equiv)-5 b(alen)m(t)32
 b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)f(where)g
 Fr(c)37 b Fu(is)31 b(the)g(\014rst)f(c)m(haracter)j(of)e(the)g(v)-5
-b(alue)32 b(of)f(the)630 2022 y Ft(IFS)e Fu(v)-5 b(ariable.)41
+b(alue)32 b(of)f(the)630 3365 y Ft(IFS)e Fu(v)-5 b(ariable.)41
 b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated)
-g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2132
+g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 3475
 y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m
-(ening)i(separators.)150 2286 y Ft(@)432 b Fu(\($@\))35
-b(Expands)e(to)i(the)g(p)s(ositional)g(parameters,)h(starting)f(from)f
-(one.)53 b(When)34 b(the)g(ex-)630 2396 y(pansion)41
-b(o)s(ccurs)g(within)f(double)h(quotes,)k(eac)m(h)d(parameter)g
-(expands)e(to)i(a)g(separate)630 2506 y(w)m(ord.)50 b(That)34
-b(is,)g Ft("$@")f Fu(is)g(equiv)-5 b(alen)m(t)35 b(to)g
-Ft("$1")29 b("$2")g(...)o Fu(.)51 b(If)33 b(the)h(double-quoted)f(ex-)
-630 2615 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e
-(expansion)g(of)g(the)g(\014rst)f(parameter)h(is)g(joined)630
-2725 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m
-(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2834
-y(parameter)31 b(is)f(joined)g(with)f(the)i(last)g(part)e(of)i(the)f
-(original)h(w)m(ord.)40 b(When)30 b(there)h(are)f(no)630
-2944 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h
-Ft($@)f Fu(expand)h(to)h(nothing)f(\(i.e.,)j(they)e(are)f(remo)m(v)m
-(ed\).)150 3098 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
+(ening)i(separators.)150 3658 y Ft(@)432 b Fu(\($@\))43
+b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f
+(one.)78 b(In)42 b(con)m(texts)630 3768 y(where)35 b(w)m(ord)h
+(splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s
+(ositional)g(parameter)f(to)630 3877 y(a)d(separate)h(w)m(ord;)g(if)f
+(not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5
+b(ject)33 b(to)g(w)m(ord)630 3987 y(splitting.)60 b(In)36
+b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,)
+g(this)f(expands)g(to)630 4097 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h)
+h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46
+b(When)32 b(the)630 4206 y(expansion)i(o)s(ccurs)h(within)e(double)i
+(quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630
+4316 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37
+b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24
+b(to)g Ft("$1")29 b("$2")630 4425 y(...)o Fu(.)39 b(If)26
+b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h
+(the)f(expansion)g(of)g(the)630 4535 y(\014rst)31 b(parameter)h(is)g
+(joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m
+(ord,)f(and)f(the)630 4645 y(expansion)25 b(of)g(the)h(last)g
+(parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h
+(original)g(w)m(ord.)630 4754 y(When)i(there)g(are)g(no)g(p)s
+(ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h
+Fu(expand)f(to)h(nothing)g(\(i.e.,)630 4864 y(they)j(are)f(remo)m(v)m
+(ed\).)150 5047 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
 (um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150
-3253 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status)
+5230 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status)
 f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630
-3362 y(pip)s(eline.)150 3517 y Ft(-)432 b Fu(\($-,)24
-b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f
-(\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630
-3626 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i
-(set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g
-Ft(-i)630 3736 y Fu(option\).)150 3890 y Ft($)432 b Fu(\($$\))31
-b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41
-b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630
-4000 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g
-(not)g(the)f(subshell.)150 4154 y Ft(!)432 b Fu(\($!\))51
-b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f
-(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630
-4264 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f
-(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630
-4374 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g
-(page)h(101\).)150 4528 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)
-g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44
-b(is)g(set)h(at)h(shell)630 4638 y(initialization.)d(If)27
-b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g
-(\(see)g(Section)h(3.8)g([Shell)630 4747 y(Scripts],)g(page)g(40\),)h
-Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41
-b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4857 y
-Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g
-(page)f(82\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630
-4966 y(argumen)m(t)g(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
-5076 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 5230
-y Ft(_)432 b Fu(\($)p 716 5230 28 4 v 41 w(,)41 b(an)e(underscore.\))67
-b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the)f(absolute)h(pathname)f
-(used)f(to)630 5340 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g
-(script)g(b)s(eing)f(executed)i(as)f(passed)g(in)f(the)h(en)m(vironmen)
-m(t)p eop end
-%%Page: 21 27
-TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299
-y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8
-b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous)
-630 408 y(command,)g(after)f(expansion.)48 b(Also)34
-b(set)g(to)f(the)g(full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac)
-m(h)630 518 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m
-(vironmen)m(t)f(exp)s(orted)g(to)h(that)g(command.)630
-628 y(When)g(c)m(hec)m(king)i(mail,)g(this)e(parameter)h(holds)f(the)g
-(name)h(of)f(the)h(mail)g(\014le.)150 878 y Fs(3.5)68
-b(Shell)45 b(Expansions)150 1037 y Fu(Expansion)27 b(is)i(p)s(erformed)
-d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)s(een)f(split)h(in)m
-(to)i Ft(token)p Fu(s.)38 b(There)28 b(are)150 1147 y(sev)m(en)j(kinds)
-e(of)i(expansion)f(p)s(erformed:)225 1287 y Fq(\017)60
-b Fu(brace)31 b(expansion)225 1425 y Fq(\017)60 b Fu(tilde)31
-b(expansion)225 1562 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5
-b(ariable)31 b(expansion)225 1700 y Fq(\017)60 b Fu(command)30
-b(substitution)225 1837 y Fq(\017)60 b Fu(arithmetic)32
-b(expansion)225 1975 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225
-2112 y Fq(\017)60 b Fu(\014lename)31 b(expansion)275
-2281 y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25
+5340 y(pip)s(eline.)p eop end
+%%Page: 22 28
+TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299
+y Ft(-)432 b Fu(\($-,)24 b(a)e(h)m(yphen.\))37 b(Expands)20
+b(to)i(the)f(curren)m(t)h(option)f(\015ags)h(as)f(sp)s(eci\014ed)g(up)s
+(on)f(in)m(v)m(o)s(cation,)630 408 y(b)m(y)38 b(the)h
+Ft(set)f Fu(builtin)g(command,)j(or)d(those)i(set)f(b)m(y)f(the)h
+(shell)g(itself)g(\(suc)m(h)g(as)g(the)g Ft(-i)630 518
+y Fu(option\).)150 675 y Ft($)432 b Fu(\($$\))31 b(Expands)d(to)j(the)e
+(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 b(In)28
+b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630
+785 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g(not)
+g(the)f(subshell.)150 943 y Ft(!)432 b Fu(\($!\))51 b(Expands)32
+b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f(most)h(recen)m
+(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 1052 y(ground,)26
+b(whether)g(executed)g(as)h(an)f(async)m(hronous)f(command)h(or)g
+(using)g(the)g Ft(bg)f Fu(builtin)630 1162 y(\(see)31
+b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g(page)h(104\).)150
+1319 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)g(name)g(of)f(the)h
+(shell)g(or)f(shell)h(script.)83 b(This)44 b(is)g(set)h(at)h(shell)630
+1429 y(initialization.)d(If)27 b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e
+(a)i(\014le)e(of)h(commands)g(\(see)g(Section)h(3.8)g([Shell)630
+1538 y(Scripts],)g(page)g(41\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f
+(name)h(of)f(that)h(\014le.)41 b(If)28 b(Bash)g(is)h(started)g(with)f
+(the)630 1648 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m
+(oking)h(Bash],)g(page)f(85\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)
+f(\014rst)630 1758 y(argumen)m(t)g(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 1867 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
+2025 y Ft(_)432 b Fu(\($)p 716 2025 28 4 v 41 w(,)41
+b(an)e(underscore.\))67 b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the)
+f(absolute)h(pathname)f(used)f(to)630 2134 y(in)m(v)m(ok)m(e)43
+b(the)e(shell)g(or)g(shell)g(script)g(b)s(eing)f(executed)i(as)f
+(passed)g(in)f(the)h(en)m(vironmen)m(t)630 2244 y(or)34
+b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 b(,)34
+b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous)630
+2353 y(simple)g(command)f(executed)i(in)e(the)h(foreground,)g(after)g
+(expansion.)51 b(Also)34 b(set)g(to)h(the)630 2463 y(full)d(pathname)h
+(used)f(to)i(in)m(v)m(ok)m(e)g(eac)m(h)g(command)f(executed)g(and)f
+(placed)i(in)e(the)h(en)m(vi-)630 2572 y(ronmen)m(t)24
+b(exp)s(orted)g(to)h(that)g(command.)38 b(When)24 b(c)m(hec)m(king)i
+(mail,)h(this)d(parameter)g(holds)630 2682 y(the)31 b(name)f(of)h(the)f
+(mail)h(\014le.)150 2921 y Fs(3.5)68 b(Shell)45 b(Expansions)150
+3080 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)
+h(after)f(it)h(has)f(b)s(een)f(split)h(in)m(to)i Ft(token)p
+Fu(s.)38 b(There)28 b(are)150 3190 y(sev)m(en)j(kinds)e(of)i(expansion)
+f(p)s(erformed:)225 3323 y Fq(\017)60 b Fu(brace)31 b(expansion)225
+3457 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 3590
+y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31
+b(expansion)225 3724 y Fq(\017)60 b Fu(command)30 b(substitution)225
+3857 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225
+3991 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 4124
+y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 4282
+y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25
 b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5
-b(ariable)26 b(ex-)150 2391 y(pansion,)j(arithmetic)i(expansion,)f(and)
+b(ariable)26 b(ex-)150 4391 y(pansion,)j(arithmetic)i(expansion,)f(and)
 f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k
-(fashion\);)150 2500 y(w)m(ord)d(splitting;)h(and)f(\014lename)h
-(expansion.)275 2641 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,)
+(fashion\);)150 4501 y(w)m(ord)d(splitting;)h(and)f(\014lename)h
+(expansion.)275 4635 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,)
 47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m(v)-5
-b(ailable:)69 b Fr(pro)s(cess)150 2750 y(substitution)p
+b(ailable:)69 b Fr(pro)s(cess)150 4744 y(substitution)p
 Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g
 (tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150
-2860 y(metic)d(expansion)g(and)e(command)i(substitution.)275
-3001 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
+4854 y(metic)d(expansion)g(and)e(command)i(substitution.)275
+4987 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
 (haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150
-3110 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g
+5097 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g
 (themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275
-3251 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
-3360 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 3470 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f
-(expansions)g(of)h Ft("$@")e Fu(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f
-(P)m(arameters],)150 3580 y(page)e(20\))h(and)d Ft("${)p
-Fj(name)p Ft([@]}")e Fu(\(see)32 b(Section)f(6.7)g([Arra)m(ys],)h(page)
-f(91\).)275 3720 y(After)41 b(all)i(expansions,)h Ft(quote)29
-b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5
-b(al],)47 b(page)42 b(32\))h(is)150 3830 y(p)s(erformed.)150
-4035 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4182 y
-Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h
-(arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43
-b(This)30 b(mec)m(h-)150 4292 y(anism)35 b(is)h(similar)f(to)h
-Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g
-(Expansion],)f(page)g(30\),)150 4401 y(but)26 b(the)h(\014lenames)g
-(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28
-b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150
-4511 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f
-(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h
-(sequence)150 4620 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 Fr(p)s(ostscript)p
-Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4730 y(pre\014xed)28
+5230 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e
+(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150
+5340 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g
+(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38
+b(The)24 b(only)p eop end
+%%Page: 23 29
+TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299
+y(exceptions)26 b(to)f(this)g(are)g(the)g(expansions)g(of)g
+Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)e
+(P)m(arameters],)150 408 y(page)31 b(21\),)h(and)e Ft("${)p
+Fj(name)p Ft([@]}")d Fu(and)i Ft(${)p Fj(name)p Ft([*]})f
+Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g(page)g(94\).)275
+537 y(After)41 b(all)i(expansions,)h Ft(quote)29 b(removal)40
+b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 b(al],)47
+b(page)42 b(34\))h(is)150 647 y(p)s(erformed.)150 834
+y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 981 y Fu(Brace)32
+b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h(arbitrary)f
+(strings)h(ma)m(y)g(b)s(e)f(generated.)43 b(This)30 b(mec)m(h-)150
+1090 y(anism)35 b(is)h(similar)f(to)h Fr(\014lename)g(expansion)f
+Fu(\(see)i(Section)f(3.5.8)h([Filename)g(Expansion],)f(page)g(32\),)150
+1200 y(but)26 b(the)h(\014lenames)g(generated)h(need)f(not)g(exist.)40
+b(P)m(atterns)28 b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f
+(form)g(of)150 1310 y(an)j(optional)h Fr(pream)m(ble)p
+Fu(,)g(follo)m(w)m(ed)g(b)m(y)f(either)g(a)h(series)f(of)g
+(comma-separated)i(strings)d(or)h(a)h(sequence)150 1419
+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 Fr(p)s(ostscript)p
+Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 1529 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
-4840 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
-m(t.)275 4980 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
+1638 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
+m(t.)275 1767 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 5090 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 5230 y Ft(bash$)46
-b(echo)h(a{d,c,b}e)390 5340 y(ade)g(ace)g(abe)p eop end
-%%Page: 22 28
-TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299
-y(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g
+(sorted;)150 1876 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 2005 y Ft(bash$)46
+b(echo)h(a{d,c,b}e)390 2115 y(ade)g(ace)g(abe)275 2243
+y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g
 Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p
 Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24
-b(either)g(in)m(tegers)150 408 y(or)42 b(single)h(c)m(haracters,)48
+b(either)g(in)m(tegers)150 2353 y(or)42 b(single)h(c)m(haracters,)48
 b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an)
-h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 518
+h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 2462
 y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s
 (er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p
-Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 628 y(in)m(tegers)33
+Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 2572 y(in)m(tegers)33
 b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g
 (eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42
-b(When)31 b(either)150 737 y Fr(x)43 b Fu(or)36 b Fr(y)44
+b(When)31 b(either)150 2681 y Fr(x)43 b Fu(or)36 b Fr(y)44
 b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g
 (force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150
-847 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h
+2791 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h
 (necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the)
-150 956 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g
+150 2901 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g
 (lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24
-b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 1066
+b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 3010
 y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e
 Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h
 (same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150
-1176 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s
+3120 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s
 (et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h
-(is)f(1)h(or)f(-1)150 1285 y(as)i(appropriate.)275 1425
+(is)f(1)h(or)f(-1)150 3229 y(as)i(appropriate.)275 3358
 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
-1535 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f
+3467 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 1645 y(an)m(y)27 b(syn)m(tactic)i(in)m
+b(do)s(es)f(not)h(apply)150 3577 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 1754
-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 Ft(${)p Fu(')g(is)g(not)g(considered)g
-(eligible)i(for)150 1864 y(brace)31 b(expansion.)275
-2004 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
-2113 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5
+(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 3706
+y(A)h(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
+3815 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 2223 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
-2363 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
+(formed)150 3925 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
+4053 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
 h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f
-(considered)g(part)g(of)h(a)g(brace)150 2473 y(expression.)51
+(considered)g(part)g(of)h(a)g(brace)150 4163 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 Ft(${)p Fu(')g(is)g(not)g(considered)
-150 2582 y(eligible)e(for)e(brace)h(expansion.)275 2723
-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
-2832 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 2972 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
-(ew,)o(dist)o(,bug)o(s})275 3112 y Fu(or)390 3253 y Ft(chown)g(root)h
+150 4272 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g
+(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p
+Fu('..)275 4401 y(This)e(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 4511 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 4639 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
+(ew,)o(dist)o(,bug)o(s})275 4768 y Fu(or)390 4896 y Ft(chown)g(root)h
 (/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150
-3457 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3604 y
+5083 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 5230 y
 Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m
 (haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up)
-d(to)j(the)f(\014rst)150 3714 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m
+d(to)j(the)f(\014rst)150 5340 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m
 (haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g
-(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3824 y(If)38
-b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h
-(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150
-3933 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
+(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)p eop end
+%%Page: 24 30
+TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299
+y(If)38 b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f
+(are)h(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150
+408 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
 (ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f
-(is)g(the)g(n)m(ull)g(string,)150 4043 y(the)35 b(tilde)g(is)g
-(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g
-Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g
-Fu(is)h(unset,)g(the)g(home)150 4152 y(directory)e(of)g(the)f(user)g
-(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47
-b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4262 y(is)d(replaced)h(with)
-f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed)
-e(login)j(name.)275 4402 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
+(is)g(the)g(n)m(ull)g(string,)150 518 y(the)35 b(tilde)g(is)g(replaced)
+g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g Ft(HOME)e
+Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g Fu(is)h(unset,)g(the)
+g(home)150 628 y(directory)e(of)g(the)f(user)g(executing)i(the)e(shell)
+h(is)f(substituted)g(instead.)47 b(Otherwise,)33 b(the)g
+(tilde-pre\014x)150 737 y(is)d(replaced)h(with)f(the)h(home)f
+(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed)e(login)j
+(name.)275 874 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
 Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5
 b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47
-b(If)150 4512 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p
+b(If)150 984 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p
 Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5
 b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f
-(substituted.)275 4652 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)
+(substituted.)275 1121 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 Fr(N)p Fu(,)j(optionally)150 4761 y(pre\014xed)22
+(er)d Fr(N)p Fu(,)j(optionally)150 1230 y(pre\014xed)22
 b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d
 (tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e
-(elemen)m(t)j(from)e(the)150 4871 y(directory)36 b(stac)m(k,)i(as)e(it)
+(elemen)m(t)j(from)e(the)150 1340 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
 Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters)
-150 4981 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g
+150 1450 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 5090 y(page)c(93\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans)
+(k],)150 1559 y(page)c(96\).)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 Ft(+)p Fu(')g(or)150 5200 y(`)p Ft(-)p
-Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 5340 y(If)e(the)i(login)
+(leading)h(`)p Ft(+)p Fu(')g(or)150 1669 y(`)p Ft(-)p
+Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 1806 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.)p
-eop end
-%%Page: 23 29
-TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299
-y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m(k)m
-(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m(wing)
-150 408 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p
+(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275
+1943 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m
+(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m
+(wing)150 2052 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p
 Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g
 (also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37
-b(one)150 518 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g
+b(one)150 2162 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g
 (assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p
 Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150
-628 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 761
+2271 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 2408
 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 919 y Ft(~)432 b Fu(The)30
-b(v)-5 b(alue)31 b(of)f Ft($HOME)150 1077 y(~/foo)240
-b($HOME/foo)150 1235 y(~fred/foo)630 1345 y Fu(The)30
+(unquoted)e(tilde-pre\014xes:)150 2572 y Ft(~)432 b Fu(The)30
+b(v)-5 b(alue)31 b(of)f Ft($HOME)150 2733 y(~/foo)240
+b($HOME/foo)150 2895 y(~fred/foo)630 3005 y Fu(The)30
 b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the)
-f(user)g Ft(fred)150 1503 y(~+/foo)192 b($PWD/foo)150
-1661 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 1819 y(~)p Fj(N)384
+f(user)g Ft(fred)150 3167 y(~+/foo)192 b($PWD/foo)150
+3329 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 3491 y(~)p Fj(N)384
 b Fu(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 Ft(dirs)g(+)p Fj(N)p Fu(')150 1977 y Ft(~+)p
+(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3653 y Ft(~+)p
 Fj(N)336 b Fu(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 Ft(dirs)g(+)p Fj(N)p Fu(')150 2135
+(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3814
 y Ft(~-)p Fj(N)336 b Fu(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 Ft(dirs)g(-)p Fj(N)p Fu(')150
-2332 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150
-2479 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d
-(parameter)h(expansion,)j(command)d(substitution,)i(or)e(arithmetic)150
-2589 y(expansion.)d(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 2699 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 2808 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 2942
-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 Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a)
-150 3051 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
-3161 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275
-3295 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
+(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275
+3978 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m
+(ords)e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41
+b(as-)150 4087 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m
+(arameters],)k(page)d(19\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m
+(ts)150 4197 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h
+(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d
+(listed)150 4306 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g
+Fu(mo)s(de.)150 4508 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f
+(Expansion)150 4655 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m
+(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e
+(arithmetic)150 4765 y(expansion.)d(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 4874 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 4984 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 Ft(})p Fu(')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: 25 31
+TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)275 299
+y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
 Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5
-b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 3404 y(substituted.)43
+b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 408 y(substituted.)43
 b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g
 (describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150
-3514 y(P)m(arameters],)e(page)f(18\))h(or)e(an)g(arra)m(y)h(reference)f
-(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(91\).)42
-b(The)29 b(braces)150 3624 y(are)j(required)g(when)f
-Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f
-(more)g(than)g(one)g(digit,)i(or)e(when)150 3733 y Fr(parameter)37
-b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f
-(not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275
-3867 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
+518 y(P)m(arameters],)e(page)f(19\))h(or)e(an)g(arra)m(y)h(reference)f
+(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(94\).)42
+b(The)29 b(braces)150 628 y(are)j(required)g(when)f Fr(parameter)39
+b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f(more)g(than)g(one)g
+(digit,)i(or)e(when)150 737 y Fr(parameter)37 b Fu(is)31
+b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f(not)h(to)g(b)
+s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275
+885 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
 b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d
-Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3977 y Fr(nameref)p
-Fu(,)i(it)f(in)m(tro)s(duces)f(a)h(lev)m(el)h(of)f(v)-5
-b(ariable)37 b(indirection.)59 b(Bash)37 b(uses)f(the)g(v)-5
-b(alue)37 b(of)g(the)f(v)-5 b(ariable)150 4086 y(formed)22
-b(from)f(the)h(rest)h(of)f Fr(parameter)29 b Fu(as)22
-b(the)g(name)h(of)f(the)g(v)-5 b(ariable;)26 b(this)c(v)-5
-b(ariable)23 b(is)f(then)g(expanded)150 4196 y(and)34
-b(that)h(v)-5 b(alue)35 b(is)g(used)f(in)g(the)h(rest)g(of)g(the)g
-(substitution,)g(rather)g(than)f(the)h(v)-5 b(alue)35
-b(of)g Fr(parameter)150 4305 y Fu(itself.)52 b(This)33
-b(is)g(kno)m(wn)h(as)g Ft(indirect)28 b(expansion)p Fu(.)48
-b(If)33 b Fr(parameter)41 b Fu(is)34 b(a)g(nameref,)h(this)e(expands)g
-(to)150 4415 y(the)d(name)g(of)g(the)h(v)-5 b(ariable)30
-b(referenced)g(b)m(y)g Fr(parameter)37 b Fu(instead)31
-b(of)f(p)s(erforming)f(the)h(complete)h(indi-)150 4524
-y(rect)i(expansion.)46 b(The)32 b(exceptions)i(to)f(this)f(are)h(the)f
-(expansions)g(of)h($)p Fi({)p Fu(!)p Fr(pre\014x)6 b
-Fu(*)p Fi(})33 b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5
-b Fu([@])p Fi(})150 4634 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41
+Fr(parameter)42 b Fu(is)34 b(not)i(a)150 995 y Fr(nameref)p
+Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44
+b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g
+(the)150 1104 y(rest)c(of)f Fr(parameter)33 b Fu(as)27
+b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g
+(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150
+1214 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h
+(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48
+b(This)32 b(is)g(kno)m(wn)150 1324 y(as)42 b Ft(indirect)28
+b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5
+b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150
+1433 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43
+b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands)
+150 1543 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28
+b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27
+b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 1652
+y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the)
+f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b
+Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5
+b Fu([@])p Fi(})150 1762 y Fu(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 4744 y(in)m(tro)s(duce)i
-(indirection.)275 4877 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
+(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 1872 y(in)m(tro)s(duce)i
+(indirection.)275 2019 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
 (w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j
-(parameter)e(expansion,)150 4987 y(command)30 b(substitution,)g(and)g
-(arithmetic)i(expansion.)275 5121 y(When)h(not)h(p)s(erforming)e
+(parameter)e(expansion,)150 2129 y(command)30 b(substitution,)g(and)g
+(arithmetic)i(expansion.)275 2277 y(When)h(not)h(p)s(erforming)e
 (substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m
-(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 5230 y(Bash)d(tests)h(for)e(a)i
+(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 2387 y(Bash)d(tests)h(for)e(a)i
 (parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33
-b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 5340
+b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 2496
 y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31
 b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f
-(the)h(op)s(erator)g(tests)p eop end
-%%Page: 24 30
-TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299
-y(for)36 b(b)s(oth)g Fr(parameter)7 b Fu('s)37 b(existence)h(and)e
-(that)i(its)f(v)-5 b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h
-(is)e(omitted,)k(the)150 408 y(op)s(erator)31 b(tests)g(only)f(for)g
-(existence.)150 569 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p
-Fj(word)p Ft(})630 679 y Fu(If)g Fr(parameter)37 b Fu(is)30
-b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k
-Fu(is)c(substituted.)40 b(Otherwise,)630 788 y(the)31
-b(v)-5 b(alue)30 b(of)h Fr(parameter)37 b Fu(is)31 b(substituted.)150
-948 y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630
-1058 y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h
-(the)f(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h
-Fr(parameter)p Fu(.)630 1167 y(The)c(v)-5 b(alue)32 b(of)f
+(the)h(op)s(erator)g(tests)150 2606 y(for)36 b(b)s(oth)g
+Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5
+b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k
+(the)150 2715 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150
+2895 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p
+Ft(})630 3005 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m
+(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40
+b(Otherwise,)630 3114 y(the)31 b(v)-5 b(alue)30 b(of)h
+Fr(parameter)37 b Fu(is)31 b(substituted.)150 3287 y
+Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 3397
+y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f
+(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h
+Fr(parameter)p Fu(.)630 3506 y(The)c(v)-5 b(alue)32 b(of)f
 Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33
-b(parameters)e(and)f(sp)s(ecial)630 1277 y(parameters)h(ma)m(y)g(not)f
+b(parameters)e(and)f(sp)s(ecial)630 3616 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
-1437 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630
-1547 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h
+3789 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630
+3898 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h
 (the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that)
-f(e\013ect)630 1656 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h
+f(e\013ect)630 4008 y(if)i Fr(w)m(ord)j Fu(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 1766 y(in)m(teractiv)m(e,)33 b(exits.)42
+(it)h(is)f(not)630 4118 y(in)m(teractiv)m(e,)33 b(exits.)42
 b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38
-b Fu(is)30 b(substituted.)150 1926 y Ft(${)p Fj(parameter)p
-Ft(:+)p Fj(word)p Ft(})630 2036 y Fu(If)35 b Fr(parameter)42
+b Fu(is)30 b(substituted.)150 4290 y Ft(${)p Fj(parameter)p
+Ft(:+)p Fj(word)p Ft(})630 4400 y Fu(If)35 b Fr(parameter)42
 b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i
-(otherwise)e(the)h(expansion)630 2145 y(of)31 b Fr(w)m(ord)i
-Fu(is)e(substituted.)150 2305 y Ft(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(})150 2415 y(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 2524
+(otherwise)e(the)h(expansion)630 4510 y(of)31 b Fr(w)m(ord)i
+Fu(is)e(substituted.)150 4682 y Ft(${)p Fj(parameter)p
+Ft(:)p Fj(offset)p Ft(})150 4792 y(${)p Fj(parameter)p
+Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 4902
 y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41
 b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630
-2634 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42
+5011 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42
 b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h
-Fr(o\013set)p Fu(.)55 b(If)630 2744 y Fr(parameter)32
+Fr(o\013set)p Fu(.)55 b(If)630 5121 y Fr(parameter)32
 b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e
 (b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s
-(ciativ)m(e)j(ar-)630 2853 y(ra)m(y)g(name,)h(the)f(results)g(di\013er)
+(ciativ)m(e)j(ar-)630 5230 y(ra)m(y)g(name,)h(the)f(results)g(di\013er)
 g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g
-Fu(is)g(omitted,)i(it)f(expands)630 2963 y(to)e(the)g(substring)f(of)g
+Fu(is)g(omitted,)i(it)f(expands)630 5340 y(to)e(the)g(substring)f(of)g
 (the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28
-b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630
-3072 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the)
-g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j
-Fu(are)e(arithmetic)630 3182 y(expressions)30 b(\(see)h(Section)g(6.5)h
-([Shell)e(Arithmetic],)i(page)f(89\).)630 3317 y(If)39
+b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)p
+eop end
+%%Page: 26 32
+TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299
+y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the)g(v)
+-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j
+Fu(are)e(arithmetic)630 408 y(expressions)30 b(\(see)h(Section)g(6.5)h
+([Shell)e(Arithmetic],)i(page)f(92\).)630 555 y(If)39
 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f
 (less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g
-(o\013set)630 3426 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h
+(o\013set)630 664 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h
 (the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33
-b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 3536
+b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 774
 y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f
 (as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630
-3646 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38
+883 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38
 b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j
-(and)d(the)h(expansion)630 3755 y(is)39 b(the)g(c)m(haracters)i(b)s(et)
-m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67
-b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3865
-y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h
-(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630
-3974 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630
-4109 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f
-(expansion)g(on)g(parameters)h(and)630 4219 y(subscripted)29
-b(arra)m(ys:)630 4354 y Ft($)47 b(string=01234567890abcdefgh)630
-4463 y($)g(echo)g(${string:7})630 4573 y(7890abcdefgh)630
-4682 y($)g(echo)g(${string:7:0})630 4902 y($)g(echo)g(${string:7:2})630
-5011 y(78)630 5121 y($)g(echo)g(${string:7:-2})630 5230
-y(7890abcdef)630 5340 y($)g(echo)g(${string:)e(-7})p
-eop end
-%%Page: 25 31
-TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)630 299
-y Ft(bcdefgh)630 408 y($)47 b(echo)g(${string:)e(-7:0})630
-628 y($)i(echo)g(${string:)e(-7:2})630 737 y(bc)630 847
-y($)i(echo)g(${string:)e(-7:-2})630 956 y(bcdef)630 1066
-y($)i(set)g(--)h(01234567890abcdefgh)630 1176 y($)f(echo)g(${1:7})630
-1285 y(7890abcdefgh)630 1395 y($)g(echo)g(${1:7:0})630
-1614 y($)g(echo)g(${1:7:2})630 1724 y(78)630 1833 y($)g(echo)g
-(${1:7:-2})630 1943 y(7890abcdef)630 2052 y($)g(echo)g(${1:)g(-7})630
-2162 y(bcdefgh)630 2271 y($)g(echo)g(${1:)g(-7:0})630
-2491 y($)g(echo)g(${1:)g(-7:2})630 2600 y(bc)630 2710
-y($)g(echo)g(${1:)g(-7:-2})630 2819 y(bcdef)630 2929
-y($)g(array[0]=01234567890abcdef)o(gh)630 3039 y($)g(echo)g
-(${array[0]:7})630 3148 y(7890abcdefgh)630 3258 y($)g(echo)g
-(${array[0]:7:0})630 3477 y($)g(echo)g(${array[0]:7:2})630
-3587 y(78)630 3696 y($)g(echo)g(${array[0]:7:-2})630
-3806 y(7890abcdef)630 3915 y($)g(echo)g(${array[0]:)e(-7})630
-4025 y(bcdefgh)630 4134 y($)i(echo)g(${array[0]:)e(-7:0})630
-4354 y($)i(echo)g(${array[0]:)e(-7:2})630 4463 y(bc)630
-4573 y($)i(echo)g(${array[0]:)e(-7:-2})630 4682 y(bcdef)630
-5011 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p
+(and)d(the)h(expansion)630 993 y(is)39 b(the)g(c)m(haracters)i(b)s(et)m
+(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 b(Note)40
+b(that)g(a)g(negativ)m(e)h(o\013set)630 1103 y(m)m(ust)27
+b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h(least)g(one)f
+(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 1212
+y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 1358
+y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f
+(expansion)g(on)g(parameters)h(and)630 1468 y(subscripted)29
+b(arra)m(ys:)630 1614 y Ft($)47 b(string=01234567890abcdefgh)630
+1724 y($)g(echo)g(${string:7})630 1833 y(7890abcdefgh)630
+1943 y($)g(echo)g(${string:7:0})630 2162 y($)g(echo)g(${string:7:2})630
+2271 y(78)630 2381 y($)g(echo)g(${string:7:-2})630 2491
+y(7890abcdef)630 2600 y($)g(echo)g(${string:)e(-7})630
+2710 y(bcdefgh)630 2819 y($)i(echo)g(${string:)e(-7:0})630
+3039 y($)i(echo)g(${string:)e(-7:2})630 3148 y(bc)630
+3258 y($)i(echo)g(${string:)e(-7:-2})630 3367 y(bcdef)630
+3477 y($)i(set)g(--)h(01234567890abcdefgh)630 3587 y($)f(echo)g(${1:7})
+630 3696 y(7890abcdefgh)630 3806 y($)g(echo)g(${1:7:0})630
+4025 y($)g(echo)g(${1:7:2})630 4134 y(78)630 4244 y($)g(echo)g
+(${1:7:-2})630 4354 y(7890abcdef)630 4463 y($)g(echo)g(${1:)g(-7})630
+4573 y(bcdefgh)630 4682 y($)g(echo)g(${1:)g(-7:0})630
+4902 y($)g(echo)g(${1:)g(-7:2})630 5011 y(bc)630 5121
+y($)g(echo)g(${1:)g(-7:-2})630 5230 y(bcdef)630 5340
+y($)g(array[0]=01234567890abcdef)o(gh)p eop end
+%%Page: 27 33
+TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299
+y Ft($)47 b(echo)g(${array[0]:7})630 408 y(7890abcdefgh)630
+518 y($)g(echo)g(${array[0]:7:0})630 737 y($)g(echo)g(${array[0]:7:2})
+630 847 y(78)630 956 y($)g(echo)g(${array[0]:7:-2})630
+1066 y(7890abcdef)630 1176 y($)g(echo)g(${array[0]:)e(-7})630
+1285 y(bcdefgh)630 1395 y($)i(echo)g(${array[0]:)e(-7:0})630
+1614 y($)i(echo)g(${array[0]:)e(-7:2})630 1724 y(bc)630
+1833 y($)i(echo)g(${array[0]:)e(-7:-2})630 1943 y(bcdef)630
+2071 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p
 Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h
-(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 5121 y(A)36
+(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 2180 y(A)36
 b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e
 (one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630
-5230 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5
+2290 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5
 b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40
-b(It)28 b(is)g(an)630 5340 y(expansion)i(error)g(if)h
+b(It)28 b(is)g(an)630 2399 y(expansion)i(error)g(if)h
 Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i
-(than)f(zero.)p eop end
-%%Page: 26 32
-TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299
-y(The)32 b(follo)m(wing)i(examples)f(illustrate)h(substring)d
-(expansion)i(using)f(p)s(ositional)h(param-)630 408 y(eters:)630
-573 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f(7)h(8)f(9)h(0)f(a)h
-(b)f(c)g(d)h(e)f(f)h(g)f(h)630 682 y($)g(echo)g(${@:7})630
-792 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h(g)f(h)630
-902 y($)g(echo)g(${@:7:0})630 1121 y($)g(echo)g(${@:7:2})630
-1230 y(7)g(8)630 1340 y($)g(echo)g(${@:7:-2})630 1450
-y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 1559
-y($)g(echo)g(${@:)g(-7:2})630 1669 y(b)g(c)630 1778 y($)g(echo)g
-(${@:0})630 1888 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h(9)f(0)h(a)f
-(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1998 y($)f(echo)g(${@:0:2})630
-2107 y(./bash)f(1)630 2217 y($)h(echo)g(${@:)g(-7:0})630
-2491 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
+(than)f(zero.)630 2527 y(The)i(follo)m(wing)i(examples)f(illustrate)h
+(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630
+2637 y(eters:)630 2765 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f
+(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 2874
+y($)g(echo)g(${@:7})630 2984 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h
+(g)f(h)630 3093 y($)g(echo)g(${@:7:0})630 3313 y($)g(echo)g(${@:7:2})
+630 3422 y(7)g(8)630 3532 y($)g(echo)g(${@:7:-2})630
+3641 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630
+3751 y($)g(echo)g(${@:)g(-7:2})630 3861 y(b)g(c)630 3970
+y($)g(echo)g(${@:0})630 4080 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h
+(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 4189 y($)f(echo)g(${@:0:2})
+630 4299 y(./bash)f(1)630 4408 y($)h(echo)g(${@:)g(-7:0})630
+4646 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
 g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p
-Ft(*)p Fu(',)h(the)e(result)g(is)630 2600 y(the)j Fr(length)g
+Ft(*)p Fu(',)h(the)e(result)g(is)630 4755 y(the)j Fr(length)g
 Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i
 Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60
-b(A)630 2710 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
+b(A)630 4865 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
 (relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f
-(of)h(the)630 2819 y(sp)s(eci\014ed)38 b(arra)m(y)-8
+(of)h(the)630 4975 y(sp)s(eci\014ed)38 b(arra)m(y)-8
 b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f
 Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630
-2929 y(than)30 b(zero.)630 3093 y(These)23 b(examples)i(sho)m(w)e(ho)m
+5084 y(than)30 b(zero.)630 5212 y(These)23 b(examples)i(sho)m(w)e(ho)m
 (w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g
-(arra)m(ys:)630 3258 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
-f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 3367
-y($)f(echo)g(${array[@]:7})630 3477 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h
-(e)f(f)h(g)f(h)630 3587 y($)g(echo)g(${array[@]:7:2})630
-3696 y(7)g(8)630 3806 y($)g(echo)g(${array[@]:)e(-7:2})630
-3915 y(b)i(c)630 4025 y($)g(echo)g(${array[@]:)e(-7:-2})630
-4134 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
-4244 y($)g(echo)g(${array[@]:0})630 4354 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
-(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 4463
-y($)g(echo)g(${array[@]:0:2})630 4573 y(0)g(1)630 4682
-y($)g(echo)g(${array[@]:)e(-7:0})630 4956 y Fu(Substring)25
+(arra)m(ys:)630 5340 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
+f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))p eop end
+%%Page: 28 34
+TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299
+y Ft($)47 b(echo)g(${array[@]:7})630 408 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f
+(d)h(e)f(f)h(g)f(h)630 518 y($)g(echo)g(${array[@]:7:2})630
+628 y(7)g(8)630 737 y($)g(echo)g(${array[@]:)e(-7:2})630
+847 y(b)i(c)630 956 y($)g(echo)g(${array[@]:)e(-7:-2})630
+1066 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
+1176 y($)g(echo)g(${array[@]:0})630 1285 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
+(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 1395
+y($)g(echo)g(${array[@]:0:2})630 1504 y(0)g(1)630 1614
+y($)g(echo)g(${array[@]:)e(-7:0})630 1855 y Fu(Substring)25
 b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s
-(duces)f(unde\014ned)f(results.)630 5121 y(Substring)32
+(duces)f(unde\014ned)f(results.)630 1987 y(Substring)32
 b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g
-(parameters)g(are)g(used,)g(in)630 5230 y(whic)m(h)29
+(parameters)g(are)g(used,)g(in)630 2096 y(whic)m(h)29
 b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41
 b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630
-5340 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h
-(the)f(list.)p eop end
-%%Page: 27 33
-TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299
-y Ft(${!)p Fj(prefix)p Ft(*})150 408 y(${!)p Fj(prefix)p
-Ft(@})630 518 y Fu(Expands)24 b(to)h(the)g(names)g(of)g(v)-5
-b(ariables)26 b(whose)f(names)f(b)s(egin)h(with)f Fr(pre\014x)p
-Fu(,)i(separated)f(b)m(y)630 628 y(the)k(\014rst)f(c)m(haracter)j(of)e
-(the)g Ft(IFS)f Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29
-b(`)p Ft(@)p Fu(')g(is)g(used)f(and)h(the)g(expan-)630
-737 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5
+2206 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h
+(the)f(list.)150 2359 y Ft(${!)p Fj(prefix)p Ft(*})150
+2469 y(${!)p Fj(prefix)p Ft(@})630 2578 y Fu(Expands)24
+b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s
+(egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630
+2688 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f
+Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p
+Fu(')g(is)g(used)f(and)h(the)g(expan-)630 2798 y(sion)35
+b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5
 b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630
-847 y(w)m(ord.)150 1066 y Ft(${!)p Fj(name)p Ft([@]})150
-1176 y(${!)p Fj(name)p Ft([*]})630 1285 y Fu(If)26 b
+2907 y(w)m(ord.)150 3061 y Ft(${!)p Fj(name)p Ft([@]})150
+3170 y(${!)p Fj(name)p Ft([*]})630 3280 y Fu(If)26 b
 Fr(name)32 b Fu(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 Fr(name)p Fu(.)39 b(If)24 b
+(assigned)630 3389 y(in)c Fr(name)p Fu(.)39 b(If)24 b
 Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27
 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g
-(otherwise.)630 1504 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f
+(otherwise.)630 3499 y(When)39 b(`)p Ft(@)p Fu(')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
-1833 y Ft(${#)p Fj(parameter)p Ft(})630 1943 y Fu(The)40
+(k)m(ey)630 3608 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150
+3762 y Ft(${#)p Fj(parameter)p Ft(})630 3871 y Fu(The)40
 b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5
 b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630
-2052 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
+3981 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
 Ft(@)p Fu(',)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 2162 y(parameters.)i(If)32
+(b)s(er)f(of)h(p)s(ositional)630 4091 y(parameters.)i(If)32
 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m
 (y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5
-b(alue)630 2271 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
+b(alue)630 4200 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
 (elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30
-b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 2381
+b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 4310
 y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m
 (b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630
-2491 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
+4419 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
 (index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630
-2600 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
+4529 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
 (arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630
-2710 y(last)g(elemen)m(t.)150 2929 y Ft(${)p Fj(parameter)p
-Ft(#)p Fj(word)p Ft(})150 3039 y(${)p Fj(parameter)p
-Ft(##)p Fj(word)p Ft(})630 3148 y Fu(The)g Fr(w)m(ord)k
-Fu(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 3258 y(Section)k(3.5.8)h([Filename)
-g(Expansion],)g(page)f(30\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i
-(the)e(b)s(e-)630 3367 y(ginning)28 b(of)g(the)h(expanded)e(v)-5
-b(alue)29 b(of)f Fr(parameter)p Fu(,)h(then)f(the)g(result)g(of)h(the)f
-(expansion)g(is)630 3477 y(the)36 b(expanded)f(v)-5 b(alue)36
-b(of)g Fr(parameter)43 b Fu(with)35 b(the)h(shortest)g(matc)m(hing)h
-(pattern)f(\(the)g(`)p Ft(#)p Fu(')630 3587 y(case\))26
-b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p
-Ft(##)p Fu(')g(case\))h(deleted.)39 b(If)24 b Fr(parameter)32
-b Fu(is)25 b(`)p Ft(@)p Fu(')630 3696 y(or)j(`)p Ft(*)p
-Fu(',)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
-3806 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.)
-45 b(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5
-b(ariable)630 3915 y(subscripted)39 b(with)g(`)p Ft(@)p
-Fu(')h(or)g(`)p Ft(*)p Fu(',)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
-4025 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 4244
-y Ft(${)p Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150
-4354 y(${)p Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630
-4463 y Fu(The)k Fr(w)m(ord)k Fu(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 4573 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
-Fr(parameter)p Fu(,)630 4682 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 Fr(parameter)46
-b Fu(with)39 b(the)h(shortest)630 4792 y(matc)m(hing)31
-b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h
-(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630
-4902 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33
-b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5
-b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 5011 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 5121 y Fr(parameter)38
-b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h
-(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5
-b(al)630 5230 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 5340 y(the)h(resultan)m(t)g(list.)p eop end
-%%Page: 28 34
-TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299
-y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p
-Ft(})630 408 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s
-(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630
-518 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g
-(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5
-b(alue)39 b(is)630 628 y(replaced)34 b(with)e Fr(string)p
-Fu(.)49 b(If)33 b Fr(pattern)g Fu(b)s(egins)g(with)f(`)p
-Ft(/)p Fu(',)j(all)f(matc)m(hes)g(of)f Fr(pattern)g Fu(are)h(re-)630
-737 y(placed)28 b(with)f Fr(string)p Fu(.)40 b(Normally)28
-b(only)f(the)h(\014rst)e(matc)m(h)j(is)e(replaced.)40
-b(If)27 b Fr(pattern)g Fu(b)s(egins)630 847 y(with)34
-b(`)p Ft(#)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)f(the)h(b)s(eginning)
-e(of)h(the)g(expanded)f(v)-5 b(alue)35 b(of)f Fr(parameter)p
-Fu(.)630 956 y(If)g Fr(pattern)g Fu(b)s(egins)g(with)g(`)p
-Ft(\045)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)g(the)f(end)g(of)g(the)h
-(expanded)e(v)-5 b(alue)35 b(of)630 1066 y Fr(parameter)p
-Fu(.)41 b(If)29 b Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of)
-e Fr(pattern)h Fu(are)g(deleted)g(and)f(the)g Ft(/)g
-Fu(follo)m(wing)630 1176 y Fr(pattern)k Fu(ma)m(y)h(b)s(e)e(omitted.)50
-b(If)33 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f
-(description)630 1285 y(of)28 b Ft(shopt)e Fu(in)h(Section)i(4.3.2)g
-([The)e(Shopt)g(Builtin],)i(page)g(64\))g(is)e(enabled,)i(the)e(matc)m
-(h)i(is)630 1395 y(p)s(erformed)f(without)j(regard)e(to)i(the)f(case)i
-(of)e(alphab)s(etic)g(c)m(haracters.)42 b(If)30 b Fr(parameter)37
-b Fu(is)630 1504 y(`)p Ft(@)p Fu(')31 b(or)g(`)p Ft(*)p
-Fu(',)g(the)g(substitution)f(op)s(eration)h(is)g(applied)f(to)i(eac)m
-(h)g(p)s(ositional)f(parameter)g(in)630 1614 y(turn,)g(and)g(the)h
-(expansion)g(is)g(the)g(resultan)m(t)g(list.)45 b(If)32
-b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 b(ariable)630
-1724 y(subscripted)23 b(with)g(`)p Ft(@)p Fu(')i(or)f(`)p
-Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)f(applied)g(to)g
-(eac)m(h)i(mem)m(b)s(er)630 1833 y(of)31 b(the)f(arra)m(y)h(in)f(turn,)
-g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h(list.)150
-1987 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150
-2096 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150
-2206 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150
-2315 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630
-2425 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f
-(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p
-Fu(.)59 b(The)630 2534 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s
-(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47
-b(Eac)m(h)630 2644 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5
-b(alue)31 b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h
-Fr(pattern)p Fu(,)e(and,)g(if)630 2754 y(it)j(matc)m(hes)h(the)g
+4639 y(last)g(elemen)m(t.)150 4792 y Ft(${)p Fj(parameter)p
+Ft(#)p Fj(word)p Ft(})150 4902 y(${)p Fj(parameter)p
+Ft(##)p Fj(word)p Ft(})630 5011 y Fu(The)43 b Fr(w)m(ord)k
+Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
+(according)f(to)h(the)630 5121 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
+h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f
+(33\).)46 b(If)32 b(the)630 5230 y(pattern)37 b(matc)m(hes)h(the)f(b)s
+(eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f
+Fr(parameter)p Fu(,)i(then)e(the)630 5340 y(result)f(of)h(the)f
+(expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g
+Fr(parameter)43 b Fu(with)36 b(the)h(shortest)p eop end
+%%Page: 29 35
+TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299
+y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e
+(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p
+Ft(##)p Fu(')g(case\))630 408 y(deleted.)49 b(If)32 b
+Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p
+Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is)
+f(applied)f(to)630 518 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 628 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
+b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p
+Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 737
+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
+847 y(the)h(resultan)m(t)g(list.)150 993 y Ft(${)p Fj(parameter)p
+Ft(\045)p Fj(word)p Ft(})150 1103 y(${)p Fj(parameter)p
+Ft(\045\045)p Fj(word)p Ft(})630 1212 y Fu(The)43 b Fr(w)m(ord)k
+Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
+(according)f(to)h(the)630 1322 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
+h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f
+(33\).)46 b(If)32 b(the)630 1431 y(pattern)25 b(matc)m(hes)h(If)f(the)g
+(pattern)g(matc)m(hes)i(a)e(trailing)h(p)s(ortion)f(of)g(the)g
+(expanded)f(v)-5 b(alue)630 1541 y(of)23 b Fr(parameter)p
+Fu(,)i(then)e(the)g(result)f(of)h(the)g(expansion)g(is)g(the)g(v)-5
+b(alue)23 b(of)g Fr(parameter)30 b Fu(with)23 b(the)630
+1650 y(shortest)35 b(matc)m(hing)h(pattern)f(\(the)g(`)p
+Ft(\045)p Fu(')g(case\))i(or)d(the)h(longest)i(matc)m(hing)e(pattern)g
+(\(the)630 1760 y(`)p Ft(\045\045)p Fu(')f(case\))i(deleted.)54
+b(If)34 b Fr(parameter)42 b Fu(is)35 b(`)p Ft(@)p Fu(')f(or)h(`)p
+Ft(*)p Fu(',)h(the)e(pattern)h(remo)m(v)-5 b(al)36 b(op)s(eration)f(is)
+630 1870 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
+(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630
+1979 y(list.)56 b(If)34 b Fr(parameter)42 b Fu(is)35
+b(an)g(arra)m(y)h(v)-5 b(ariable)36 b(subscripted)e(with)g(`)p
+Ft(@)p Fu(')i(or)f(`)p Ft(*)p Fu(',)i(the)e(pattern)630
+2089 y(remo)m(v)-5 b(al)44 b(op)s(eration)g(is)e(applied)h(to)h(eac)m
+(h)g(mem)m(b)s(er)e(of)h(the)g(arra)m(y)h(in)e(turn,)j(and)e(the)630
+2198 y(expansion)30 b(is)h(the)f(resultan)m(t)h(list.)150
+2345 y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p
+Fj(stri)o(ng)p Ft(})630 2454 y Fu(The)37 b Fr(pattern)g
+Fu(is)g(expanded)g(to)h(pro)s(duce)e(a)h(pattern)g(just)g(as)h(in)e
+(\014lename)i(expansion.)630 2564 y Fr(P)m(arameter)46
+b Fu(is)38 b(expanded)f(and)g(the)i(longest)g(matc)m(h)g(of)f
+Fr(pattern)g Fu(against)h(its)f(v)-5 b(alue)39 b(is)630
+2673 y(replaced)31 b(with)g Fr(string)p Fu(.)42 b(The)30
+b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the)f(rules)f
+(describ)s(ed)630 2783 y(b)s(elo)m(w)f(\(see)h(Section)g(3.5.8.1)h([P)m
+(attern)g(Matc)m(hing],)g(page)f(33\).)41 b(If)29 b Fr(pattern)g
+Fu(b)s(egins)f(with)630 2892 y(`)p Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g
+(of)f Fr(pattern)g Fu(are)h(replaced)f(with)g Fr(string)p
+Fu(.)69 b(Normally)41 b(only)f(the)h(\014rst)630 3002
+y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h
+Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g
+(the)f(b)s(eginning)f(of)630 3112 y(the)32 b(expanded)f(v)-5
+b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h
+Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g
+(at)630 3221 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5
+b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31
+b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630
+3331 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i
+Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34
+b(the)i Ft(nocasematch)630 3440 y Fu(shell)31 b(option)h(\(see)g(the)g
+(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f
+(Builtin],)630 3550 y(page)45 b(65\))h(is)f(enabled,)j(the)d(matc)m(h)g
+(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630
+3660 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b
+Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p
+Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630
+3769 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
+(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630
+3879 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22
+b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p
+Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630
+3988 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
+4098 y(the)h(resultan)m(t)g(list.)150 4244 y Ft(${)p
+Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 4354 y(${)p
+Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 4463 y(${)p
+Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 4573 y(${)p
+Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 4682 y Fu(This)36
+b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m
+(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 4792
+y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e
+(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630
+4902 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31
+b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h
+Fr(pattern)p Fu(,)e(and,)g(if)630 5011 y(it)j(matc)m(hes)h(the)g
 (pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33
-b(pattern)g(should)f(not)h(attempt)630 2863 y(to)f(matc)m(h)g(more)f
+b(pattern)g(should)f(not)h(attempt)630 5121 y(to)f(matc)m(h)g(more)f
 (than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p
 Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630
-2973 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p
+5230 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p
 Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s
-(ercase)630 3082 y(letters)e(to)f(lo)m(w)m(ercase.)50
+(ercase)630 5340 y(letters)e(to)f(lo)m(w)m(ercase.)50
 b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h
-(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630
-3192 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30
-b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m
-(h)h(and)f(con)m(v)m(ert)i(only)630 3302 y(the)37 b(\014rst)g(c)m
-(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37
-b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630
-3411 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m
-(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37
-b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630
-3521 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m
-(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630
-3630 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65
-b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5
-b(ariable)39 b(subscripted)630 3740 y(with)26 b(`)p Ft(@)p
-Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s
-(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630
-3850 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h
-(resultan)m(t)g(list.)150 4003 y Ft(${)p Fj(parameter)p
-Ft(@)p Fj(operator)p Ft(})630 4113 y Fu(The)d(expansion)h(is)f(either)h
-(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g
-Fr(parameter)35 b Fu(or)29 b(informa-)630 4222 y(tion)e(ab)s(out)f
-Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5
-b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27
-b Fr(op)s(erator)630 4332 y Fu(is)j(a)h(single)g(letter:)630
-4485 y Ft(Q)432 b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f
-(the)g(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31
-b(in)1110 4595 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i
-(input.)630 4748 y Ft(E)432 b Fu(The)48 b(expansion)h(is)g(a)g(string)g
-(that)h(is)f(the)g(v)-5 b(alue)49 b(of)g Fr(parameter)56
-b Fu(with)1110 4858 y(bac)m(kslash)36 b(escap)s(e)f(sequences)h
-(expanded)e(as)h(with)g(the)g Ft($'...)o(')f Fu(quoting)1110
-4967 y(mec)m(hansim.)630 5121 y Ft(P)432 b Fu(The)22
-b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)g(result)g(of)g
-(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 5230 y Fr(parameter)31
-b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)
-h(6.9)g([Con)m(trolling)1110 5340 y(the)31 b(Prompt],)f(page)h(94\).)p
-eop end
-%%Page: 29 35
-TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299
-y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)
-g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 408
-y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31
-b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 518
-y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 680 y
+(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)p eop
+end
+%%Page: 30 36
+TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299
+y(acter)29 b(in)f(the)h(expanded)e(v)-5 b(alue;)30 b(the)e(`)p
+Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m(h)h(and)f
+(con)m(v)m(ert)i(only)630 408 y(the)37 b(\014rst)g(c)m(haracter)i(in)e
+(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 b Fr(pattern)g
+Fu(is)h(omitted,)i(it)e(is)f(treated)630 518 y(lik)m(e)h(a)f(`)p
+Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m(ery)f(c)m(haracter.)61
+b(If)37 b Fr(parameter)43 b Fu(is)37 b(`)p Ft(@)p Fu(')g(or)f(`)p
+Ft(*)p Fu(',)j(the)e(case)630 628 y(mo)s(di\014cation)29
+b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)h(p)s(ositional)f
+(parameter)f(in)g(turn,)g(and)g(the)630 737 y(expansion)38
+b(is)g(the)g(resultan)m(t)h(list.)65 b(If)37 b Fr(parameter)46
+b Fu(is)38 b(an)g(arra)m(y)g(v)-5 b(ariable)39 b(subscripted)630
+847 y(with)26 b(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h
+(mo)s(di\014cation)f(op)s(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m
+(b)s(er)e(of)h(the)630 956 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h
+(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 1120
+y Ft(${)p Fj(parameter)p Ft(@)p Fj(operator)p Ft(})630
+1230 y Fu(The)d(expansion)h(is)f(either)h(a)g(transformation)g(of)g
+(the)g(v)-5 b(alue)29 b(of)g Fr(parameter)35 b Fu(or)29
+b(informa-)630 1340 y(tion)e(ab)s(out)f Fr(parameter)33
+b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 b(alue)26
+b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 b Fr(op)s(erator)630
+1449 y Fu(is)j(a)h(single)g(letter:)630 1613 y Ft(Q)432
+b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5
+b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110
+1723 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630
+1887 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h
+(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27
+b(bac)m(k-)1110 1996 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g
+(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110
+2106 y(anism.)630 2270 y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g
+(string)g(that)g(is)g(the)g(result)g(of)g(expanding)f(the)h(v)-5
+b(alue)24 b(of)1110 2379 y Fr(parameter)31 b Fu(as)24
+b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)h(6.9)g
+([Con)m(trolling)1110 2489 y(the)31 b(Prompt],)f(page)h(97\).)630
+2653 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g
+(form)g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110
+2763 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31
+b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 2872
+y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 3036 y
 Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g
 (\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110
-789 y(rameter)7 b Fu('s)31 b(attributes.)630 951 y(If)e
+3146 y(rameter)7 b Fu('s)31 b(attributes.)630 3310 y(If)e
 Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p
 Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s
-(ositional)f(parameter)630 1060 y(in)24 b(turn,)g(and)f(the)h
+(ositional)f(parameter)630 3419 y(in)24 b(turn,)g(and)f(the)h
 (expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23
 b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630
-1170 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p
+3529 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p
 Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m
-(b)s(er)e(of)h(the)f(arra)m(y)630 1279 y(in)30 b(turn,)g(and)f(the)i
-(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1415
+(b)s(er)e(of)h(the)f(arra)m(y)630 3639 y(in)30 b(turn,)g(and)f(the)i
+(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 3775
 y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5
 b(ject)22 b(to)h(w)m(ord)f(splitting)g(and)g(pathname)g(expansion)630
-1524 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1726 y
-Fk(3.5.4)63 b(Command)41 b(Substitution)150 1873 y Fu(Command)f
+3885 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 4089 y
+Fk(3.5.4)63 b(Command)41 b(Substitution)150 4236 y Fu(Command)f
 (substitution)h(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h
-(replace)g(the)g(command)f(itself.)150 1982 y(Command)29
+(replace)g(the)g(command)f(itself.)150 4345 y(Command)29
 b(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g(enclosed)h(as)g
-(follo)m(ws:)390 2119 y Ft($\()p Fj(command)p Ft(\))150
-2255 y Fu(or)390 2392 y Ft(`)p Fj(command)p Ft(`)150
-2529 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i
+(follo)m(ws:)390 4484 y Ft($\()p Fj(command)p Ft(\))150
+4623 y Fu(or)390 4763 y Ft(`)p Fj(command)p Ft(`)150
+4902 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i
 Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f
-(replacing)150 2638 y(the)40 b(command)g(substitution)f(with)h(the)g
+(replacing)150 5011 y(the)40 b(command)g(substitution)f(with)h(the)g
 (standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150
-2748 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g
+5121 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g
 (not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during)
-150 2857 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g
+150 5230 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g
 (substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g
-(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2967
-y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275
-3103 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g
+(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 5340
+y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)p
+eop end
+%%Page: 31 37
+TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)275 299
+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
-3213 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p
+408 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p
 Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64
 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150
-3323 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72
+518 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72
 b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c
-Fu(form,)43 b(all)150 3432 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 3569 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 3678 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275
-3815 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
-3925 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150
-4126 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4273
-y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5
+Fu(form,)43 b(all)150 628 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 762 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 872 y(the)31 b(inner)e(bac)m(kquotes)j
+(with)e(bac)m(kslashes.)275 1007 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 1116 y(are)i(not)f(p)s(erformed)f(on)h(the)
+h(results.)150 1316 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150
+1463 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5
 b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g
-(substitution)150 4382 y(of)31 b(the)f(result.)41 b(The)30
-b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4519
-y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4655 y Fu(The)33
+(substitution)150 1572 y(of)31 b(the)f(result.)41 b(The)30
+b(format)g(for)g(arithmetic)i(expansion)e(is:)390 1707
+y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 1841 y Fu(The)33
 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)f(double)
-h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 4765
+h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 1951
 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8
 b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g
-(parameter)150 4875 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g
+(parameter)150 2061 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g
 (command)e(substitution,)i(and)e(quote)i(remo)m(v)-5
-b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 4984
+b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 2170
 y(the)j(arithmetic)g(expression)f(to)h(b)s(e)f(ev)-5
 b(aluated.)42 b(Arithmetic)31 b(expansions)g(ma)m(y)g(b)s(e)e(nested.)
-275 5121 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e
+275 2305 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(89\).)42
+g(6.5)h([Shell)150 2415 y(Arithmetic],)32 b(page)f(92\).)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: 30 36
-TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)150 299
-y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 446
-y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g
+2524 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s
+(ccurs.)150 2724 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150
+2870 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g
 (input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i(using)f(a)g
-(\014lename.)150 555 y(It)d(tak)m(es)i(the)f(form)f(of)390
-696 y Ft(<\()p Fj(list)p Ft(\))150 836 y Fu(or)390 976
-y Ft(>\()p Fj(list)p Ft(\))150 1116 y Fu(The)e(pro)s(cess)h
+(\014lename.)150 2980 y(It)d(tak)m(es)i(the)f(form)f(of)390
+3115 y Ft(<\()p Fj(list)p Ft(\))150 3249 y Fu(or)390
+3384 y Ft(>\()p Fj(list)p Ft(\))150 3519 y Fu(The)e(pro)s(cess)h
 Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i
 (input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41
-b(This)150 1226 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h
+b(This)150 3628 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h
 (to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h
-(expansion.)38 b(If)150 1335 y(the)28 b Ft(>\()p Fj(list)p
+(expansion.)38 b(If)150 3738 y(the)28 b Ft(>\()p Fj(list)p
 Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h
 (pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26
-b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1445 y(is)g(used,)g(the)
+b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 3848 y(is)g(used,)g(the)
 f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to)
 g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25
-b(that)150 1555 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m
+b(that)150 3957 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m
 (een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m
-(thesis,)f(otherwise)h(the)f(construct)150 1664 y(w)m(ould)j(b)s(e)g
+(thesis,)f(otherwise)h(the)f(construct)150 4067 y(w)m(ould)j(b)s(e)g
 (in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36
 b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150
-1774 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p
+4176 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p
 Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g
-(\014les.)275 1914 y(When)36 b(a)m(v)-5 b(ailable,)40
+(\014les.)275 4311 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 2024 y(v)-5 b(ariable)31
+(with)g(parameter)g(and)150 4421 y(v)-5 b(ariable)31
 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.)
-150 2229 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150
-2376 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g
+150 4620 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150
+4767 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g
 (expansion,)g(command)g(substitution,)g(and)f(arithmetic)150
-2485 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
-(quotes)h(for)f(w)m(ord)g(splitting.)275 2625 y(The)e(shell)g(treats)i
+4877 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
+(quotes)h(for)f(w)m(ord)g(splitting.)275 5011 y(The)e(shell)g(treats)i
 (eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e
-(splits)g(the)h(results)f(of)h(the)g(other)150 2735 y(expansions)22
+(splits)g(the)h(results)f(of)h(the)g(other)150 5121 y(expansions)22
 b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f
 (terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5
-b(alue)150 2845 y(is)36 b(exactly)j Ft(<space><tab><newline>)p
+b(alue)150 5230 y(is)36 b(exactly)j Ft(<space><tab><newline>)p
 Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67
-b Ft(<space>)p Fu(,)36 b Ft(<tab>)p Fu(,)h(and)150 2954
+b Ft(<space>)p Fu(,)36 b Ft(<tab>)p Fu(,)h(and)150 5340
 y Ft(<newline>)28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g
-(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150
-3064 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
+(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)p
+eop end
+%%Page: 32 38
+TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299
+y(and)36 b(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
 (at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m
-(ords.)150 3173 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5
-b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f
-(the)h(whitespace)f(c)m(haracters)150 3283 y Ft(space)p
-Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g
-(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as)
-g(the)150 3393 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
+(ords.)150 408 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 b(alue)43
+b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f(the)h
+(whitespace)f(c)m(haracters)150 518 y Ft(space)p Fu(,)29
+b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g(the)f(b)s
+(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as)g(the)150
+628 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
 b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m
-(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3502
+(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 737
 y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with)
 e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i
-(delimits)150 3612 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f
+(delimits)150 847 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f
 Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f
-(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3721 y(of)31
+(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 956 y(of)31
 b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275
-3862 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g
+1114 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g
 Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e
-(as)i(empt)m(y)f(strings.)150 3971 y(Unquoted)37 b(implicit)i(n)m(ull)f
+(as)i(empt)m(y)f(strings.)150 1224 y(Unquoted)37 b(implicit)i(n)m(ull)f
 (argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f
-(that)i(ha)m(v)m(e)150 4081 y(no)32 b(v)-5 b(alues,)33
+(that)i(ha)m(v)m(e)150 1333 y(no)32 b(v)-5 b(alues,)33
 b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5
 b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150
-4190 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f
+1443 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f
 (passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40
-b(When)150 4300 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as)
+b(When)150 1552 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as)
 i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h
-(the)e(n)m(ull)150 4409 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69
+(the)e(n)m(ull)150 1662 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69
 b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i
 Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150
-4519 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4659 y(Note)31
+1772 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 1929 y(Note)31
 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s
-(erformed.)150 4864 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150
-5011 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i
+(erformed.)150 2152 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150
+2299 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i
 Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g
-([The)e(Set)h(Builtin],)150 5121 y(page)d(60\),)i(Bash)d(scans)h(eac)m
+([The)e(Set)h(Builtin],)150 2408 y(page)d(61\),)i(Bash)d(scans)h(eac)m
 (h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p
 Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39
-b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 5230 y(app)s(ears,)h
+b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 2518 y(app)s(ears,)h
 (then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g Fr(pattern)p
 Fu(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h(sorted)150
-5340 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h
-(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(31\).)43
-b(If)p eop end
-%%Page: 31 37
-TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299
-y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and)g(the)h(shell)
-f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left)
-150 408 y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e
-Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w)
-m(ord)g(is)g(remo)m(v)m(ed.)150 518 y(If)i(the)g Ft(failglob)e
-Fu(shell)i(option)h(is)f(set,)h(and)f(no)g(matc)m(hes)h(are)g(found,)e
-(an)h(error)g(message)h(is)f(prin)m(ted)150 628 y(and)e(the)g(command)g
-(is)h(not)f(executed.)42 b(If)30 b(the)g(shell)h(option)g
-Ft(nocaseglob)c Fu(is)k(enabled,)f(the)h(matc)m(h)g(is)150
-737 y(p)s(erformed)e(without)h(regard)h(to)g(the)f(case)i(of)e(alphab)s
-(etic)h(c)m(haracters.)275 876 y(When)23 b(a)h(pattern)f(is)h(used)f
-(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p
-Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150
-985 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f
-(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g
-Ft(dotglob)150 1095 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g
-(\014lename,)h(the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b)
-s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 1205 y(In)30
-b(other)g(cases,)i(the)e(`)p Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h
-(treated)g(sp)s(ecially)-8 b(.)275 1343 y(See)28 b(the)g(description)g
-(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i
-(page)g(64,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h
+2627 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h
+(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(33\).)43
+b(If)150 2737 y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and)
+g(the)h(shell)f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m
+(ord)f(is)g(left)150 2846 y(unc)m(hanged.)40 b(If)30
+b(the)g Ft(nullglob)e Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h
+(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v)m(ed.)150
+2956 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f
+(no)g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f(prin)m
+(ted)150 3066 y(and)e(the)g(command)g(is)h(not)f(executed.)42
+b(If)30 b(the)g(shell)h(option)g Ft(nocaseglob)c Fu(is)k(enabled,)f
+(the)h(matc)m(h)g(is)150 3175 y(p)s(erformed)e(without)h(regard)h(to)g
+(the)f(case)i(of)e(alphab)s(etic)h(c)m(haracters.)275
+3333 y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h
+(expansion,)h(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g
+(of)g(a)g(\014lename)150 3442 y(or)f(immediately)i(follo)m(wing)g(a)f
+(slash)f(m)m(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8
+b(,)27 b(unless)c(the)g(shell)h(option)g Ft(dotglob)150
+3552 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p Ft(.)p
+Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e(matc)m
+(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d
+Fu(is)i(set.)150 3662 y(In)i(other)g(cases,)i(the)e(`)p
+Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8
+b(.)275 3819 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f
+(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h
+(explicitly)i(b)m(y)e(a)150 3929 y(slash)d(in)f(the)h(pattern,)h(but)e
+(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m
+(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 4038 y(c)m(haracter)j(as)f
+(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e
+(Matc)m(hing],)i(page)e(33\).)275 4196 y(See)d(the)g(description)g(of)g
+Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g
+(65,)g(for)f(a)g(descrip-)150 4306 y(tion)j(of)f(the)h
 Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p
-Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 1592 y(The)j
-Ft(GLOBIGNORE)f Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f
-(to)i(restrict)g(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150
-1701 y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g
-(matc)m(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g
-(patterns)150 1811 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h
-(from)e(the)i(list)f(of)g(matc)m(hes.)59 b(If)36 b(the)g
-Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1920
-y(matc)m(hing)i(against)g(the)f(patterns)f(in)h Ft(GLOBIGNORE)d
-Fu(is)j(p)s(erformed)e(without)h(regard)h(to)h(case.)66
-b(The)150 2030 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h
-Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)e
-Fu(is)i(set)i(and)e(not)h(n)m(ull.)72 b(Ho)m(w)m(ev)m(er,)150
-2139 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5
+Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 4463 y(The)36
+b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used)
+g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150
+4573 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)
+m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g
+(of)g(the)150 4682 y(patterns)34 b(in)g Ft(GLOBIGNORE)d
+Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54
+b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 4792
+y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h
+Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.)
+150 4902 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h
+Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f
+Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150
+5011 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5
 b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h
-Ft(dotglob)d Fu(shell)i(option,)150 2249 y(so)j(all)h(other)f
+Ft(dotglob)d Fu(shell)i(option,)150 5121 y(so)j(all)h(other)f
 (\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc)
 m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h
-(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p
+(ignoring)150 5230 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p
 Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g
 (in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150
-2468 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d
-Fu(is)k(unset.)150 2672 y Fk(3.5.8.1)63 b(P)m(attern)40
-b(Matc)m(hing)150 2819 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s
-(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g
-(c)m(haracters)h(describ)s(ed)150 2928 y(b)s(elo)m(w,)31
-b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)
-e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s
-(es)150 3038 y(the)38 b(follo)m(wing)g(c)m(haracter;)43
-b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m
-(hing.)63 b(The)36 b(sp)s(ecial)150 3147 y(pattern)30
-b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s
-(e)d(matc)m(hed)i(literally)-8 b(.)275 3286 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 3452 y Ft(*)432 b Fu(Matc)m(hes)31
-b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41
-b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630
-3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h
-(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p
-Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)
-m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630
-3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
+5340 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d
+Fu(is)k(unset.)p eop end
+%%Page: 33 39
+TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)150 299
+y Fk(3.5.8.1)63 b(P)m(attern)40 b(Matc)m(hing)150 446
+y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s(ears)f(in)g(a)h(pattern,)i
+(other)e(than)f(the)h(sp)s(ecial)g(pattern)g(c)m(haracters)h(describ)s
+(ed)150 555 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42
+b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)e(not)h(o)s(ccur)f(in)g(a)
+h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s(es)150
+665 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37
+b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m(hing.)63
+b(The)36 b(sp)s(ecial)150 775 y(pattern)30 b(c)m(haracters)i(m)m(ust)f
+(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i
+(literally)-8 b(.)275 901 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
+1045 y Ft(*)432 b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f
+(the)g(n)m(ull)g(string.)41 b(When)29 b(the)g Ft(globstar)e
+Fu(shell)i(option)630 1155 y(is)37 b(enabled,)h(and)e(`)p
+Ft(*)p Fu(')h(is)g(used)f(in)g(a)h(\014lename)g(expansion)g(con)m
+(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p Ft(*)p Fu('s)630
+1264 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)m(h)i(all)f
+(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630
+1374 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
 Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g
-(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150
-4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)
-150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g
+(matc)m(h)h(only)f(directories)630 1484 y(and)k(sub)s(directories.)150
+1627 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)
+150 1771 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g
 (the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)
-i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g
+i(separated)e(b)m(y)g(a)630 1881 y(h)m(yphen)k(denotes)i(a)g
 Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g
-(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d
+(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 1990 y(c)m(haracters,)d
 (inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g
-(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42
+(sequence)e(and)f(c)m(haracter)630 2100 y(set,)31 b(is)f(matc)m(hed.)42
 b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p
 Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p
-Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g
+Ft(^)p Fu(')g(then)f(an)m(y)630 2210 y(c)m(haracter)c(not)f(enclosed)g
 (is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e
-(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765
+(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 2319
 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50
 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f
-(including)g(it)g(as)h(the)630 4875 y(\014rst)25 b(c)m(haracter)i(in)e
+(including)g(it)g(as)h(the)630 2429 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 4984 y(determined)h(b)m(y)h(the)g(curren)
+(range)g(expressions)f(is)630 2538 y(determined)h(b)m(y)h(the)g(curren)
 m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g
-Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 5094 y Fu(shell)31
-b(v)-5 b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34
+Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 2648 y Fu(shell)31
+b(v)-5 b(ariables,)31 b(if)f(set.)630 2775 y(F)-8 b(or)34
 b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p
 Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p
-Ft([abcdxyz])p Fu('.)630 5340 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m
+Ft([abcdxyz])p Fu('.)630 2884 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)p eop end
-%%Page: 32 38
-TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299
-y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5
-b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f
-(equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxXyYz])p
-Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h
-(in)m(terpretation)h(of)630 518 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 628 y(the)c Ft(LC_COLLATE)e
-Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i(v)-5 b(ariable)30
-b(to)g(the)f(v)-5 b(alue)30 b(`)p Ft(C)p Fu(',)g(or)f(enable)h(the)630
-737 y Ft(globasciiranges)c Fu(shell)31 b(option.)630
-873 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p
-Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h
-(using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p
-Fu(,)630 983 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h
-(follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f
-Fu(standard:)870 1119 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g
-(digit)g(graph)g(lower)870 1228 y(print)g(punct)g(space)f(upper)h(word)
-190 b(xdigit)630 1364 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h
-(an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75
-b(The)41 b Ft(word)630 1474 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h
+(cales)630 2994 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e
+(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m
+(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 3104 y(to)34 b(`)p
+Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8
+b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630
+3213 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
+3323 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i
+(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p
+Ft(C)p Fu(',)g(or)f(enable)h(the)630 3432 y Ft(globasciiranges)c
+Fu(shell)31 b(option.)630 3559 y(Within)23 b(`)p Ft([)p
+Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j
+Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f
+Ft([:)p Fr(class)t Ft(:])p Fu(,)630 3669 y(where)30 b
+Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f
+(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 3795
+y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower)
+870 3905 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630
+4032 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m
+(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41
+b Ft(word)630 4141 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h
 (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p
-Ft(_)p Fu('.)630 1610 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p
+Ft(_)p Fu('.)630 4268 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p
 Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j
 Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h
-Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1720 y(whic)m(h)29
+Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 4378 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 1829
+m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 4487
 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h
-Fr(c)p Fu(.)630 1965 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p
+Fr(c)p Fu(.)630 4614 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p
 Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t
 Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d
-Fr(sym)m(b)s(ol)p Fu(.)275 2129 y(If)29 b(the)g Ft(extglob)f
+Fr(sym)m(b)s(ol)p Fu(.)275 4758 y(If)29 b(the)g Ft(extglob)f
 Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e
-Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2239
+Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 4867
 y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58
 b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j
-Fu(is)d(a)g(list)g(of)150 2348 y(one)d(or)f(more)h(patterns)f
+Fu(is)d(a)g(list)g(of)150 4977 y(one)d(or)f(more)h(patterns)f
 (separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33
 b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150
-2458 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
-2622 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2731 y Fu(Matc)m(hes)h
-(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150
-2894 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3003 y Fu(Matc)m(hes)h
-(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)
-150 3166 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3275
-y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m
-(en)i(patterns.)150 3437 y Ft(@\()p Fj(pattern-list)p
-Ft(\))630 3547 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)
-150 3709 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3819
-y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g
-(patterns.)150 4021 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7
-b(al)150 4168 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f
-(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p
-Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150
-4278 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m
-(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4523 y Fs(3.6)68
-b(Redirections)150 4682 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h
+5087 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
+5230 y Ft(?\()p Fj(pattern-list)p Ft(\))630 5340 y Fu(Matc)m(hes)h
+(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)p
+eop end
+%%Page: 34 40
+TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299
+y Ft(*\()p Fj(pattern-list)p Ft(\))630 408 y Fu(Matc)m(hes)32
+b(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)
+150 554 y Ft(+\()p Fj(pattern-list)p Ft(\))630 663 y
+Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)
+i(patterns.)150 809 y Ft(@\()p Fj(pattern-list)p Ft(\))630
+918 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)150
+1064 y Ft(!\()p Fj(pattern-list)p Ft(\))630 1173 y Fu(Matc)m(hes)h(an)m
+(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g(patterns.)275
+1319 y(Complicated)41 b(extended)f(pattern)g(matc)m(hing)h(against)h
+(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d(when)150
+1428 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f(the)g
+(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42
+b(Using)29 b(separate)150 1538 y(matc)m(hes)38 b(against)g(shorter)e
+(strings,)i(or)f(using)f(arra)m(ys)h(of)g(strings)f(instead)h(of)g(a)g
+(single)g(long)h(string,)150 1647 y(ma)m(y)31 b(b)s(e)f(faster.)150
+1833 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150
+1979 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f(unquoted)f
+(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p Ft(\\)p
+Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150
+2089 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m
+(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 2316 y Fs(3.6)68
+b(Redirections)150 2475 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h
 (its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k
-Fu(using)c(a)i(sp)s(ecial)f(no-)150 4792 y(tation)d(in)m(terpreted)f(b)
+Fu(using)c(a)i(sp)s(ecial)f(no-)150 2585 y(tation)d(in)m(terpreted)f(b)
 m(y)f(the)h(shell.)40 b(Redirection)27 b(allo)m(ws)h(commands')f
-(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4902
+(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 2694
 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f(to)h(di\013eren)m(t)f
 (\014les,)h(and)f(can)g(c)m(hange)h(the)g(\014les)f(the)g(command)g
-(reads)150 5011 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40
+(reads)150 2804 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40
 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g
-(in)g(the)h(curren)m(t)150 5121 y(shell)e(execution)h(en)m(vironmen)m
+(in)g(the)h(curren)m(t)150 2914 y(shell)e(execution)h(en)m(vironmen)m
 (t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g
-(precede)h(or)f(app)s(ear)150 5230 y(an)m(ywhere)30 b(within)f(a)h
+(precede)h(or)f(app)s(ear)150 3023 y(an)m(ywhere)30 b(within)f(a)h
 (simple)f(command)h(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40
-b(Redirections)30 b(are)g(pro)s(cessed)150 5340 y(in)g(the)h(order)f
-(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)p eop
-end
-%%Page: 33 39
-TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299
-y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h
-(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)
-150 408 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f
+b(Redirections)30 b(are)g(pro)s(cessed)150 3133 y(in)g(the)h(order)f
+(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275
+3260 y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)
+m(y)h(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)
+s(e)150 3370 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f
 Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k
-(for)c(eac)m(h)i(redirection)f(op)s(erator)150 518 y(except)30
+(for)c(eac)m(h)i(redirection)f(op)s(erator)150 3479 y(except)30
 b Ft(>)p Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s
 (cate)h(a)e(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i
-(it)f(to)150 628 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p
+(it)f(to)150 3589 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p
 Fu(.)45 b(If)31 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b)
 m(y)g Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5
 b(alue)32 b(of)g Fr(v)-5 b(arname)36 b Fu(de\014nes)31
-b(the)h(\014le)150 737 y(descriptor)e(to)h(close.)275
-877 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g
+b(the)h(\014le)150 3698 y(descriptor)i(to)g(close.)52
+b(If)34 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})34 b Fu(is)g(supplied,)g
+(the)g(redirection)g(p)s(ersists)f(b)s(ey)m(ond)g(the)h(scop)s(e)g(of)
+150 3808 y(the)d(command,)f(allo)m(wing)i(the)f(shell)f(programmer)g
+(to)h(manage)h(the)e(\014le)h(descriptor)f(himself.)275
+3936 y(In)d(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 986 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g
+(c)m(har-)150 4045 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g
 (is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g
-(standard)f(input)f(\(\014le)150 1096 y(descriptor)33
+(standard)f(input)f(\(\014le)150 4155 y(descriptor)33
 b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f
 (redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)
-g(refers)150 1205 y(to)e(the)g(standard)e(output)h(\(\014le)h
-(descriptor)f(1\).)275 1345 y(The)h(w)m(ord)h(follo)m(wing)i(the)f
+g(refers)150 4264 y(to)e(the)g(standard)e(output)h(\(\014le)h
+(descriptor)f(1\).)275 4392 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 1455 y(wise)21 b(noted,)i(is)e(sub)5
+(unless)e(other-)150 4501 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 1564 y(substitution,)31 b(arithmetic)h
+e(expansion,)i(command)150 4611 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 1674 y(If)f(it)h(expands)e(to)i(more)g
+(and)f(w)m(ord)h(splitting.)150 4721 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
-1813 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g
+4848 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)390
-1953 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2092 y
+4975 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 5103 y
 Fu(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 2202 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390
-2341 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2481 y Fu(directs)28
-b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p
-Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m
-(y)150 2590 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g
-(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p
-Fu(.)275 2730 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 2839 y(in)38 b(the)h(follo)m(wing)h(table.)66
-b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f
-(running)f(pro)m(vides)h(these)150 2949 y(sp)s(ecial)27
-b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m
-(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150
-3059 y(describ)s(ed)j(b)s(elo)m(w.)150 3225 y Ft(/dev/fd/)p
-Fj(fd)630 3335 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31
-b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)150
-3499 y Ft(/dev/stdin)630 3609 y Fu(File)i(descriptor)e(0)h(is)f
-(duplicated.)150 3773 y Ft(/dev/stdout)630 3883 y Fu(File)i(descriptor)
-e(1)h(is)f(duplicated.)150 4047 y Ft(/dev/stderr)630
-4157 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150
-4321 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4431
+150 5213 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390
+5340 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)p eop end
+%%Page: 35 41
+TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299
+y(directs)28 b(only)f(the)h(standard)e(output)i(to)g(\014le)f
+Fr(dirlist)p Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h
+(made)f(a)h(cop)m(y)150 408 y(of)j(the)f(standard)g(output)g(b)s(efore)
+g(the)g(standard)g(output)g(w)m(as)g(redirected)h(to)g
+Fr(dirlist)p Fu(.)275 543 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 652 y(in)38 b(the)h(follo)m
+(wing)h(table.)66 b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m
+(h)f(Bash)h(is)f(running)f(pro)m(vides)h(these)150 762
+y(sp)s(ecial)27 b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g
+(it)f(will)h(em)m(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m
+(vior)150 871 y(describ)s(ed)j(b)s(elo)m(w.)150 1030
+y Ft(/dev/fd/)p Fj(fd)630 1140 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5
+b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i
+Fu(is)d(duplicated.)150 1298 y Ft(/dev/stdin)630 1408
+y Fu(File)i(descriptor)e(0)h(is)f(duplicated.)150 1566
+y Ft(/dev/stdout)630 1676 y Fu(File)i(descriptor)e(1)h(is)f
+(duplicated.)150 1835 y Ft(/dev/stderr)630 1944 y Fu(File)i(descriptor)
+e(2)h(is)f(duplicated.)150 2103 y Ft(/dev/tcp/)p Fj(host)p
+Ft(/)p Fj(port)630 2212 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5
+b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c
+Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 2322
+y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f(attempts)h(to)f
+(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m(et.)150
+2480 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 2590
 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In)
 m(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s
-(ort)630 4540 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f
-(attempts)h(to)f(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m
-(et.)150 4705 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630
-4814 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41
-b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fr(p)s(ort)j
-Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 4924 y(n)m(um)m(b)s(er)23
-b(or)h(service)h(name,)h(Bash)e(attempts)h(to)g(op)s(en)f(the)g
-(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)275 5091 y(A)30
-b(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.)275 5230 y(Redirections)f(using)e(\014le)i
-(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f(with)h
-(care,)h(as)g(they)f(ma)m(y)150 5340 y(con\015ict)i(with)f(\014le)h
-(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8
-b(.)p eop end
-%%Page: 34 40
-TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299
-y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 446 y Fu(Redirection)35
-b(of)f(input)f(causes)i(the)f(\014le)g(whose)g(name)g(results)g(from)g
-(the)g(expansion)g(of)g Fr(w)m(ord)k Fu(to)d(b)s(e)150
-555 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h(descriptor)f
-Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i(descriptor)f
-(0\))h(if)f Ft(n)g Fu(is)h(not)150 665 y(sp)s(eci\014ed.)275
-805 y(The)c(general)j(format)e(for)h(redirecting)g(input)e(is:)390
-944 y Ft([)p Fj(n)p Ft(]<)p Fj(word)150 1149 y Fk(3.6.2)63
-b(Redirecting)40 b(Output)150 1296 y Fu(Redirection)31
-b(of)g(output)f(causes)h(the)f(\014le)h(whose)f(name)g(results)h(from)e
-(the)i(expansion)f(of)h Fr(w)m(ord)i Fu(to)f(b)s(e)150
-1405 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h(descriptor)f
-Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h(descriptor)f
-(1\))h(if)g Fr(n)e Fu(is)i(not)150 1515 y(sp)s(eci\014ed.)40
-b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g(it)g(is)f(created;)i
-(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f(to)h(zero)g(size.)
-275 1654 y(The)e(general)j(format)e(for)h(redirecting)g(output)f(is:)
-390 1794 y Ft([)p Fj(n)p Ft(]>[|])p Fj(word)275 1934
-y Fu(If)g(the)h(redirection)g(op)s(erator)g(is)g(`)p
-Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g(the)g
-Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2043 y(enabled,)h(the)g
+(ort)630 2700 y(n)m(um)m(b)s(er)23 b(or)h(service)h(name,)h(Bash)e
+(attempts)h(to)g(op)s(en)f(the)g(corresp)s(onding)f(UDP)i(so)s(c)m(k)m
+(et.)275 2858 y(A)30 b(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.)275
+2992 y(Redirections)f(using)e(\014le)i(descriptors)f(greater)h(than)f
+(9)h(should)e(b)s(e)h(used)f(with)h(care,)h(as)g(they)f(ma)m(y)150
+3102 y(con\015ict)i(with)f(\014le)h(descriptors)f(the)g(shell)h(uses)f
+(in)m(ternally)-8 b(.)150 3300 y Fk(3.6.1)63 b(Redirecting)40
+b(Input)150 3447 y Fu(Redirection)35 b(of)f(input)f(causes)i(the)f
+(\014le)g(whose)g(name)g(results)g(from)g(the)g(expansion)g(of)g
+Fr(w)m(ord)k Fu(to)d(b)s(e)150 3557 y(op)s(ened)d(for)g(reading)g(on)g
+(\014le)h(descriptor)f Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f
+(\(\014le)i(descriptor)f(0\))h(if)f Ft(n)g Fu(is)h(not)150
+3667 y(sp)s(eci\014ed.)275 3801 y(The)c(general)j(format)e(for)h
+(redirecting)g(input)e(is:)390 3935 y Ft([)p Fj(n)p Ft(]<)p
+Fj(word)150 4133 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150
+4280 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose)
+f(name)g(results)h(from)e(the)i(expansion)f(of)h Fr(w)m(ord)i
+Fu(to)f(b)s(e)150 4390 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h
+(descriptor)f Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h
+(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 4499
+y(sp)s(eci\014ed.)40 b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g
+(it)g(is)f(created;)i(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f
+(to)h(zero)g(size.)275 4633 y(The)e(general)j(format)e(for)h
+(redirecting)g(output)f(is:)390 4768 y Ft([)p Fj(n)p
+Ft(]>[|])p Fj(word)275 4902 y Fu(If)g(the)h(redirection)g(op)s(erator)g
+(is)g(`)p Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g
+(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 5011 y(enabled,)h(the)g
 (redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g
 (results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150
-2153 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41
+5121 y Fu(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
 Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150
-2262 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e
+5230 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e
 Fu(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 2372 y(named)30 b(b)m(y)g
-Fr(w)m(ord)k Fu(exists.)150 2576 y Fk(3.6.3)63 b(App)s(ending)42
-b(Redirected)e(Output)150 2723 y Fu(Redirection)23 b(of)e(output)h(in)f
-(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f
-(from)g(the)h(expansion)g(of)150 2833 y Fr(w)m(ord)28
-b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g
-(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g
-(descriptor)150 2942 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s
-(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g
-(is)f(created.)275 3082 y(The)f(general)j(format)e(for)h(app)s(ending)e
-(output)h(is:)390 3222 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150
-3426 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g
-(Standard)g(Error)150 3573 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s
-(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f
-(the)g(standard)f(error)150 3683 y(output)d(\(\014le)h(descriptor)f
-(2\))h(to)g(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is)
-f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 3822 y(There)f(are)i(t)m
-(w)m(o)h(formats)e(for)h(redirecting)g(standard)e(output)h(and)g
-(standard)f(error:)390 3962 y Ft(&>)p Fj(word)150 4101
-y Fu(and)390 4241 y Ft(>&)p Fj(word)150 4381 y Fu(Of)h(the)g(t)m(w)m(o)
-i(forms,)e(the)h(\014rst)e(is)i(preferred.)39 b(This)30
-b(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 b(to)390
-4520 y Ft(>)p Fj(word)46 b Ft(2>&1)275 4660 y Fu(When)41
-b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand)
-f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p Ft(-)p Fu('.)75
-b(If)41 b(it)h(do)s(es,)150 4769 y(other)27 b(redirection)g(op)s
-(erators)f(apply)h(\(see)g(Duplicating)h(File)f(Descriptors)h(b)s(elo)m
-(w\))f(for)f(compatibilit)m(y)150 4879 y(reasons.)150
-5083 y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g
-(Standard)g(Error)150 5230 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s
-(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f
-(the)g(standard)f(error)150 5340 y(output)d(\(\014le)h(descriptor)f
-(2\))h(to)g(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g
-(is)h(the)f(expansion)h(of)f Fr(w)m(ord)p Fu(.)p eop
-end
-%%Page: 35 41
-TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)275 299
-y(The)29 b(format)i(for)f(app)s(ending)f(standard)h(output)g(and)f
-(standard)h(error)g(is:)390 442 y Ft(&>>)p Fj(word)150
-585 y Fu(This)g(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32
-b(to)390 728 y Ft(>>)p Fj(word)46 b Ft(2>&1)275 871 y
-Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g(b)s(elo)m(w\).)150
-1079 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 1226
-y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g(shell)
-h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m(til)h(a)g
-(line)150 1336 y(con)m(taining)h(only)e Fr(w)m(ord)k
+(ev)m(en)h(if)e(the)h(\014le)150 5340 y(named)30 b(b)m(y)g
+Fr(w)m(ord)k Fu(exists.)p eop end
+%%Page: 36 42
+TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299
+y Fk(3.6.3)63 b(App)s(ending)42 b(Redirected)e(Output)150
+446 y Fu(Redirection)23 b(of)e(output)h(in)f(this)h(fashion)f(causes)h
+(the)g(\014le)g(whose)f(name)h(results)f(from)g(the)h(expansion)g(of)
+150 555 y Fr(w)m(ord)28 b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s
+(ending)e(on)i(\014le)g(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)
+f(output)h(\(\014le)g(descriptor)150 665 y(1\))31 b(if)f
+Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s
+(es)g(not)h(exist)g(it)g(is)f(created.)275 796 y(The)f(general)j
+(format)e(for)h(app)s(ending)e(output)h(is:)390 928 y
+Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 1120 y Fk(3.6.4)63
+b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g(Error)150
+1267 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g(standard)g
+(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g(standard)f(error)
+150 1377 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f
+(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is)f(the)g(expansion)h
+(of)f Fr(w)m(ord)p Fu(.)275 1508 y(There)f(are)i(t)m(w)m(o)h(formats)e
+(for)h(redirecting)g(standard)e(output)h(and)g(standard)f(error:)390
+1639 y Ft(&>)p Fj(word)150 1771 y Fu(and)390 1902 y Ft(>&)p
+Fj(word)150 2033 y Fu(Of)h(the)g(t)m(w)m(o)i(forms,)e(the)h(\014rst)e
+(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5
+b(alen)m(t)32 b(to)390 2164 y Ft(>)p Fj(word)46 b Ft(2>&1)275
+2296 y Fu(When)41 b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f
+Fu(ma)m(y)e(not)g(expand)f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p
+Ft(-)p Fu('.)75 b(If)41 b(it)h(do)s(es,)150 2405 y(other)27
+b(redirection)g(op)s(erators)f(apply)h(\(see)g(Duplicating)h(File)f
+(Descriptors)h(b)s(elo)m(w\))f(for)f(compatibilit)m(y)150
+2515 y(reasons.)150 2707 y Fk(3.6.5)63 b(App)s(ending)42
+b(Standard)f(Output)g(and)g(Standard)g(Error)150 2854
+y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g(standard)g
+(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g(standard)f(error)
+150 2964 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f(app)s
+(ended)f(to)i(the)f(\014le)h(whose)f(name)g(is)h(the)f(expansion)h(of)f
+Fr(w)m(ord)p Fu(.)275 3095 y(The)f(format)i(for)f(app)s(ending)f
+(standard)h(output)g(and)f(standard)h(error)g(is:)390
+3226 y Ft(&>>)p Fj(word)150 3358 y Fu(This)g(is)g(seman)m(tically)j
+(equiv)-5 b(alen)m(t)32 b(to)390 3489 y Ft(>>)p Fj(word)46
+b Ft(2>&1)275 3620 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g
+(b)s(elo)m(w\).)150 3813 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150
+3960 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g
+(shell)h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m
+(til)h(a)g(line)150 4070 y(con)m(taining)h(only)e Fr(w)m(ord)k
 Fu(\(with)c(no)g(trailing)h(blanks\))f(is)g(seen.)40
 b(All)27 b(of)f(the)g(lines)h(read)f(up)f(to)i(that)g(p)s(oin)m(t)150
-1445 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le)
+4179 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le)
 h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\))g(for)h
-(a)f(command.)275 1589 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f
-(is:)390 1732 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p
-Fj(word)772 1841 y(here-document)390 1951 y(delimiter)275
-2094 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h
+(a)f(command.)275 4310 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f
+(is:)390 4442 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p
+Fj(word)772 4551 y(here-document)390 4661 y(delimiter)275
+4792 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h
 (command)f(substitution,)h(arithmetic)g(expansion,)g(or)150
-2204 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i
+4902 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i
 Fr(w)m(ord)p Fu(.)39 b(If)25 b(an)m(y)i(part)e(of)h Fr(w)m(ord)j
 Fu(is)d(quoted,)i(the)e Fr(delimiter)33 b Fu(is)26 b(the)150
-2313 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f
+5011 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f
 Fr(w)m(ord)p Fu(,)g(and)f(the)h(lines)g(in)g(the)g(here-do)s(cumen)m(t)
-g(are)g(not)g(expanded.)47 b(If)150 2423 y Fr(w)m(ord)26
+g(are)g(not)g(expanded.)47 b(If)150 5121 y Fr(w)m(ord)26
 b Fu(is)c(unquoted,)h(all)g(lines)g(of)g(the)f(here-do)s(cumen)m(t)g
 (are)h(sub)5 b(jected)22 b(to)h(parameter)g(expansion,)h(com-)150
-2532 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f
+5230 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f
 (c)m(haracter)i(sequence)f Ft(\\newline)d Fu(is)j(ignored,)150
-2642 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g
+5340 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g
 (the)g(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft($)p
-Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 2785 y(If)21 b(the)i(redirection)g
-(op)s(erator)g(is)f(`)p Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g
-(c)m(haracters)h(are)e(stripp)s(ed)f(from)h(input)150
-2895 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g
-Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f
-(within)f(shell)i(scripts)e(to)150 3004 y(b)s(e)e(inden)m(ted)g(in)g(a)
-h(natural)f(fashion.)150 3212 y Fk(3.6.7)63 b(Here)41
-b(Strings)150 3359 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s
-(cumen)m(ts,)f(the)g(format)h(is:)390 3502 y Ft([)p Fj(n)p
-Ft(]<<<)46 b Fj(word)275 3645 y Fu(The)21 b Fr(w)m(ord)k
-Fu(undergo)s(es)c(brace)h(expansion,)i(tilde)e(expansion,)i(parameter)e
-(and)f(v)-5 b(ariable)23 b(expansion,)150 3755 y(command)j
-(substitution,)g(arithmetic)i(expansion,)f(and)e(quote)i(remo)m(v)-5
-b(al.)40 b(P)m(athname)27 b(expansion)f(and)150 3865
-y(w)m(ord)32 b(splitting)h(are)g(not)g(p)s(erformed.)46
-b(The)32 b(result)g(is)h(supplied)e(as)i(a)f(single)i(string,)f(with)f
-(a)h(newline)150 3974 y(app)s(ended,)c(to)i(the)g(command)f(on)g(its)h
+Fu(',)g(and)f(`)p Ft(`)p Fu('.)p eop end
+%%Page: 37 43
+TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299
+y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f(`)p
+Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are)e
+(stripp)s(ed)f(from)h(input)150 408 y(lines)33 b(and)f(the)h(line)h
+(con)m(taining)g Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i
+(here-do)s(cumen)m(ts)f(within)f(shell)i(scripts)e(to)150
+518 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150
+709 y Fk(3.6.7)63 b(Here)41 b(Strings)150 856 y Fu(A)30
+b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h
+(is:)390 987 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275
+1117 y Fu(The)29 b Fr(w)m(ord)k Fu(undergo)s(es)c(tilde)i(expansion,)f
+(parameter)h(and)e(v)-5 b(ariable)31 b(expansion,)f(command)g(sub-)150
+1227 y(stitution,)25 b(arithmetic)f(expansion,)h(and)d(quote)h(remo)m
+(v)-5 b(al.)40 b(P)m(athname)23 b(expansion)g(and)f(w)m(ord)g
+(splitting)150 1336 y(are)35 b(not)g(p)s(erformed.)51
+b(The)34 b(result)h(is)g(supplied)e(as)i(a)f(single)i(string,)f(with)g
+(a)g(newline)f(app)s(ended,)g(to)150 1446 y(the)d(command)f(on)g(its)h
 (standard)e(input)h(\(or)g(\014le)h(descriptor)f Fr(n)g
-Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\).)150 4182 y Fk(3.6.8)63
-b(Duplicating)41 b(File)g(Descriptors)150 4329 y Fu(The)30
-b(redirection)h(op)s(erator)390 4472 y Ft([)p Fj(n)p
-Ft(]<&)p Fj(word)150 4615 y Fu(is)k(used)e(to)j(duplicate)f(input)f
+Fu(if)g Fr(n)g Fu(is)h(sp)s(eci\014ed\).)150 1637 y Fk(3.6.8)63
+b(Duplicating)41 b(File)g(Descriptors)150 1784 y Fu(The)30
+b(redirection)h(op)s(erator)390 1914 y Ft([)p Fj(n)p
+Ft(]<&)p Fj(word)150 2045 y Fu(is)k(used)e(to)j(duplicate)f(input)f
 (\014le)g(descriptors.)53 b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one)
-g(or)g(more)g(digits,)h(the)f(\014le)150 4725 y(descriptor)e(denoted)h
+g(or)g(more)g(digits,)h(the)f(\014le)150 2154 y(descriptor)e(denoted)h
 (b)m(y)f Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g
 (\014le)f(descriptor.)50 b(If)33 b(the)h(digits)g(in)f
-Fr(w)m(ord)150 4835 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f
+Fr(w)m(ord)150 2264 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f
 (descriptor)g(op)s(en)g(for)g(input,)g(a)h(redirection)g(error)f(o)s
 (ccurs.)40 b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150
-4944 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g
+2373 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g
 Fr(n)f Fu(is)g(closed.)43 b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s
 (eci\014ed,)f(the)h(standard)f(input)g(\(\014le)h(descriptor)f(0\))150
-5054 y(is)g(used.)275 5197 y(The)f(op)s(erator)390 5340
-y Ft([)p Fj(n)p Ft(]>&)p Fj(word)p eop end
-%%Page: 36 42
-TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299
-y(is)40 b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h
-(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f
-(standard)150 408 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f
-(used.)39 b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34
-b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150
-518 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55
+2483 y(is)g(used.)275 2613 y(The)f(op)s(erator)390 2744
+y Ft([)p Fj(n)p Ft(]>&)p Fj(word)150 2874 y Fu(is)40
+b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h(descriptors.)70
+b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150
+2984 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39
+b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 b Fu(do)29
+b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150
+3093 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55
 b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 b(to)f(`)p
 Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g Fu(is)g(closed.)150
-628 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i(and)
-e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g
-(digits)h(or)f(`)p Ft(-)p Fu(',)150 737 y(the)d(standard)e(output)h
+3203 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i
+(and)e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g
+(digits)h(or)f(`)p Ft(-)p Fu(',)150 3313 y(the)d(standard)e(output)h
 (and)g(standard)f(error)h(are)h(redirected)g(as)g(describ)s(ed)e
-(previously)-8 b(.)150 938 y Fk(3.6.9)63 b(Mo)m(ving)41
-b(File)h(Descriptors)150 1085 y Fu(The)30 b(redirection)h(op)s(erator)
-390 1220 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150
-1356 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k
+(previously)-8 b(.)150 3504 y Fk(3.6.9)63 b(Mo)m(ving)41
+b(File)h(Descriptors)150 3651 y Fu(The)30 b(redirection)h(op)s(erator)
+390 3781 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150
+3911 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k
 Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f
-(input)f(\(\014le)j(descriptor)e(0\))150 1465 y(if)f
+(input)f(\(\014le)j(descriptor)e(0\))150 4021 y(if)f
 Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33
 b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h
-Fr(n)p Fu(.)275 1601 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s
-(erator)390 1736 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p
-Ft(-)150 1872 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f
+Fr(n)p Fu(.)275 4151 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s
+(erator)390 4282 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p
+Ft(-)150 4412 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f
 Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g
 (standard)f(output)h(\(\014le)g(descriptor)g(1\))150
-1982 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150
-2182 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g
-(Reading)e(and)h(W)-10 b(riting)150 2329 y Fu(The)30
-b(redirection)h(op)s(erator)390 2464 y Ft([)p Fj(n)p
-Ft(]<>)p Fj(word)150 2600 y Fu(causes)39 b(the)g(\014le)g(whose)g(name)
+4522 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150
+4713 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g
+(Reading)e(and)h(W)-10 b(riting)150 4860 y Fu(The)30
+b(redirection)h(op)s(erator)390 4990 y Ft([)p Fj(n)p
+Ft(]<>)p Fj(word)150 5121 y Fu(causes)39 b(the)g(\014le)g(whose)g(name)
 g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f
-(for)g(b)s(oth)h(reading)g(and)150 2710 y(writing)33
+(for)g(b)s(oth)h(reading)g(and)150 5230 y(writing)33
 b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h
 (descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47
-b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2819 y(exist,)e(it)g(is)g
-(created.)150 3062 y Fs(3.7)68 b(Executing)46 b(Commands)150
-3286 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150
-3433 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g
-(shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150
-3542 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.)
-199 3678 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 3788 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
-3923 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 4032 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g
-(21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h
-(the)e(\014rst)330 4142 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 4251 y(men)m(ts.)199 4386 y(3.)61
-b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m
-(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(32\).)199
-4521 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p
-Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)
-e(tilde)i(expansion,)g(parameter)330 4631 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 4741 y(b)s(eing)30
-b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4902 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 5011 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 5121 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 5230 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
-5340 y(status.)p eop end
-%%Page: 37 43
-TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299
-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
-408 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
-548 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g
+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: 38 44
+TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299
+y Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63
+b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33
+b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e
+(the)i(follo)m(wing)i(expansions,)e(assign-)150 779 y(men)m(ts,)e(and)f
+(redirections,)h(from)f(left)h(to)g(righ)m(t.)199 913
+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 1023 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 1157 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
+1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g(22\).)61
+b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h(the)e
+(\014rst)330 1376 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 1486 y(men)m(ts.)199 1620 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(34\).)199 1754
+y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h)
+j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)e(tilde)i
+(expansion,)g(parameter)330 1864 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 1973 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5
+b(ariable.)275 2132 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 2242 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 2351 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 2461 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 2570 y(status.)275 2705 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 2814
+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
+2948 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 658 y(Otherwise,)39 b(the)e(command)g(exits.)62
+(w.)150 3058 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 767 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 877 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f
+(substitu-)150 3167 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 3277 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
-987 y(zero.)150 1191 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h
-(Execution)150 1338 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h
+3387 y(zero.)150 3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h
+(Execution)150 3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h
 (in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g
-(and)f(an)150 1448 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g
-(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 1587 y(1.)61
+(and)f(an)150 3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g
+(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 3976 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 1697 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f
+330 4085 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 1807 y(F)-8 b(unctions],)31 b(page)h(17.)199
-1944 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e
+(3.3)h([Shell)330 4195 y(F)-8 b(unctions],)31 b(page)h(17.)199
+4329 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 2053 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 2190 y(3.)61
+(of)g(shell)330 4439 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 4573 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
-2300 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d
+4682 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d
 Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m
-(y)g(that)330 2410 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)
+(y)g(that)330 4792 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 2519 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f
+(to)330 4902 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f
 Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g
-Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 2629 y(Builtins],)37
-b(page)f(42\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h
+Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 5011 y(Builtins],)37
+b(page)f(43\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h
 (in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330
-2738 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39
+5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39
 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m
-(hes)330 2848 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e
+(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e
 Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f
-(exists,)330 2958 y(it)32 b(is)f(in)m(v)m(ok)m(ed)i(with)e(the)h
-(original)g(command)f(and)g(the)h(original)g(command's)f(argumen)m(ts)h
-(as)g(its)330 3067 y(argumen)m(ts,)h(and)e(the)i(function's)e(exit)i
-(status)g(b)s(ecomes)f(the)g(exit)h(status)f(of)h(the)f(shell.)46
-b(If)31 b(that)330 3177 y(function)g(is)g(not)g(de\014ned,)f(the)i
-(shell)f(prin)m(ts)f(an)h(error)g(message)h(and)f(returns)e(an)i(exit)h
-(status)g(of)330 3286 y(127.)199 3423 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 3533
-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
-3643 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 3752 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8
-b(.)199 3889 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g
+(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i(in)e(a)h(separate)h
+(execution)f(en)m(vironmen)m(t)g(with)f(the)h(original)h(command)e(and)
+g(the)p eop end
+%%Page: 39 45
+TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)330 299
+y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h
+(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330
+408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39
+b(If)27 b(that)h(function)f(is)h(not)g(de\014ned,)f(the)g(shell)h(prin)
+m(ts)f(an)g(error)330 518 y(message)k(and)f(returns)f(an)i(exit)g
+(status)g(of)f(127.)199 654 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 763 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 873 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 983 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8
+b(.)199 1118 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 3999 y(a)d(directory)-8 b(,)34
+(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34
 b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h
 Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330
-4109 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(40.)199
-4246 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async)
+1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(41.)199
+1473 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(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f
-(to)330 4355 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
-4560 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150
-4707 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t)
+(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
+1785 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150
+1932 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t)
 p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225
-4847 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f
+2069 y Fq(\017)60 b Fu(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 4956 y(the)g Ft(exec)e
-Fu(builtin)225 5093 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking)
+(redirections)h(supplied)e(to)330 2178 y(the)g Ft(exec)e
+Fu(builtin)225 2314 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking)
 h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p
 Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at)
-330 5203 y(in)m(v)m(o)s(cation)225 5340 y Fq(\017)60
+330 2424 y(in)m(v)m(o)s(cation)225 2560 y Fq(\017)60
 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f
-Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)p
-eop end
-%%Page: 38 44
-TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)225 299
-y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f
-Ft(trap)225 435 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g
+Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225
+2695 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f
+Ft(trap)225 2831 y Fq(\017)60 b Fu(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
-Ft(set)f Fu(or)i(inherited)f(from)g(the)330 545 y(shell's)i(paren)m(t)f
-(in)g(the)h(en)m(vironmen)m(t)225 682 y Fq(\017)60 b
-Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e
+Ft(set)f Fu(or)i(inherited)f(from)g(the)330 2941 y(shell's)i(paren)m(t)
+f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60
+Fu(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
-791 y(en)m(vironmen)m(t)225 928 y Fq(\017)60 b Fu(options)33
+3186 y(en)m(vironmen)m(t)225 3322 y Fq(\017)60 b Fu(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 1037
-y(b)m(y)c Ft(set)225 1174 y Fq(\017)60 b Fu(options)31
+g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432
+y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31
 b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e
-(Shopt)g(Builtin],)h(page)g(64\))225 1310 y Fq(\017)60
+(Shopt)g(Builtin],)h(page)g(65\))225 3703 y Fq(\017)60
 b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f
-Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(90\))225
-1447 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f
+Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(93\))225
+3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f
 Fm(id)p Fu(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 1556 y(page)31
+(\(see)i(Section)g(3.2.3)g([Lists],)330 3948 y(page)31
 b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5
-b(alue)31 b(of)f Ft($PPID)275 1722 y Fu(When)k(a)g(simple)h(command)f
+b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(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 1832 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g
+(executed,)i(it)f(is)150 4221 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 1941 y(noted,)31
+f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4331 y(noted,)31
 b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225
-2080 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e
+4468 y Fq(\017)60 b Fu(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 2189 y(the)g(command)225 2326
+(y)g(redirections)g(to)330 4578 y(the)g(command)225 4713
 y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225
-2462 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225
-2599 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33
+4849 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225
+4985 y Fq(\017)60 b Fu(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 2709 y(command,)e(passed)g
+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(38\))225 2845 y Fq(\017)60 b
+(vironmen)m(t],)e(page)g(40\))225 5230 y Fq(\017)60 b
 Fu(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 2955 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)
-275 3120 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
-3230 y(en)m(vironmen)m(t.)275 3368 y(Command)35 b(substitution,)j
+(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p
+eop end
+%%Page: 40 46
+TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)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 552 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 3478 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i
+(hronous)g(com-)150 662 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 3588 y(except)i(that)g(traps)f(caugh)m
+(shell)g(en)m(vironmen)m(t,)150 772 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
-3697 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49
+881 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 3807 y(executed)41
+(of)h(a)f(pip)s(eline)g(are)h(also)150 991 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
-3916 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275
-4055 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions)
+1100 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275
+1244 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions)
 g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e
-Fu(option)150 4165 y(from)23 b(the)i(paren)m(t)f(shell.)38
+Fu(option)150 1354 y(from)23 b(the)i(paren)m(t)f(shell.)38
 b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f
-Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4303
+Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1498
 y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p
 Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c
-(default)g(standard)f(input)150 4413 y(for)35 b(the)g(command)g(is)g
+(default)g(standard)f(input)150 1607 y(for)35 b(the)g(command)g(is)g
 (the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37
-b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4522
+b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1717
 y(the)c(\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 4726 y Fk(3.7.4)63
-b(En)m(vironmen)m(t)150 4873 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m
+(di\014ed)g(b)m(y)g(redirections.)150 1926 y Fk(3.7.4)63
+b(En)m(vironmen)m(t)150 2073 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m
 (ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h
 (the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150
-4982 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g
-Ft(name=value)p Fu(.)275 5121 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w)
+2182 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g
+Ft(name=value)p Fu(.)275 2326 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 5230
+b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2436
 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
-5340 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s
+2545 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(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)p eop end
-%%Page: 39 45
-TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299
-y Ft(export)35 b Fu(and)i(`)p Ft(declare)29 b(-x)p Fu(')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 408 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 518
-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 628 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 737 y(mo)s(di\014ed)26
+(t.)39 b(The)150 2655 y Ft(export)c Fu(and)i(`)p Ft(declare)29
+b(-x)p Fu(')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 2765 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 2874 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
+2984 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 3093 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 Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g
-(plus)150 847 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d
-Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 991
+(plus)150 3203 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d
+Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3347
 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
-1100 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h
+3457 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
-1210 y(page)g(18.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
+3566 y(page)g(19.)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 1354 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g
-(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(60\),)h(then)e(all)g
-(parameter)150 1464 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m
+(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g
+(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(61\),)h(then)e(all)g
+(parameter)150 3820 y(assignmen)m(ts)f(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 1573 y(command)g(name.)275 1717 y(When)h(Bash)h(in)m
+(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m
 (v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5
 b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g
-(pathname)150 1827 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g
-(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2035 y Fk(3.7.5)63
-b(Exit)40 b(Status)150 2182 y Fu(The)26 b(exit)h(status)f(of)g(an)g
+(pathname)150 4183 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g
+(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4392 y Fk(3.7.5)63
+b(Exit)40 b(Status)150 4538 y Fu(The)26 b(exit)h(status)f(of)g(an)g
 (executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h
-(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2292
+(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 4648
 y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g
 (b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s
-(elo)m(w,)h(the)150 2401 y(shell)i(ma)m(y)g(use)f(v)-5
+(elo)m(w,)h(the)150 4758 y(shell)i(ma)m(y)g(use)f(v)-5
 b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54
 b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150
-2511 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58
+4867 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58
 b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150
-2621 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c)
-f(failure)h(mo)s(des.)275 2765 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s
+4977 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c)
+f(failure)h(mo)s(des.)275 5121 y(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 2874 y(A)e(non-zero)h(exit)g(status)g
+(status)f(has)f(succeeded.)150 5230 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 2984 y(there)34
+(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 5340 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 3093 y(failure)38 b(mo)s(des.)62 b(When)37
-b(a)h(command)f(terminates)i(on)e(a)h(fatal)h(signal)g(whose)e(n)m(um)m
-(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3203 y(uses)30
-b(the)g(v)-5 b(alue)31 b(128)p Ft(+)p Fr(N)42 b Fu(as)30
-b(the)h(exit)g(status.)275 3347 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 3457 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
-3600 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
-3710 y(is)c(greater)i(than)e(zero.)275 3854 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 3964
-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
-4073 y(page)31 b(9\).)275 4217 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 4327 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 4436 y(return)e(an)i(exit)g
-(status)g(of)f(2)h(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)
-m(v)-5 b(alid)35 b(options)g(or)f(missing)150 4546 y(argumen)m(ts.)150
-4755 y Fk(3.7.6)63 b(Signals)150 4902 y Fu(When)36 b(Bash)g(is)h(in)m
+b(arious)p eop end
+%%Page: 41 47
+TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)150 299
+y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e
+(a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i
+Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31
+b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275
+537 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
+647 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
+776 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
+885 y(is)c(greater)i(than)e(zero.)275 1014 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 1123 y(ditional)i(Constructs],)h(page)f
+(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f
+(3.2.3)i([Lists],)150 1233 y(page)31 b(9\).)275 1362
+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
+1471 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 1581 y(return)e(an)i(exit)g(status)g(of)f(2)h
+(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)m(v)-5
+b(alid)35 b(options)g(or)f(missing)150 1691 y(argumen)m(ts.)150
+1878 y Fk(3.7.6)63 b(Signals)150 2025 y Fu(When)36 b(Bash)g(is)h(in)m
 (teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e
 (ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150
-5011 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j
+2135 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j
 (shell\),)f(and)d Ft(SIGINT)f Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so)
-h(that)h(the)f Ft(wait)150 5121 y Fu(builtin)24 b(is)h(in)m
+h(that)h(the)f Ft(wait)150 2244 y Fu(builtin)24 b(is)h(in)m
 (terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d
 Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s
-(ops.)150 5230 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g
+(ops.)150 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g
 Ft(SIGQUIT)p Fu(.)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 5340 y(page)f(100\),)h
+(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(103\),)h
 (Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h
-Ft(SIGTSTP)p Fu(.)p eop end
-%%Page: 40 46
-TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299
-y(Non-builtin)31 b(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 408 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 518 y(ignore)f Ft(SIGINT)e Fu(and)h
-Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f(inherited)f(handlers.)55
-b(Commands)35 b(run)f(as)i(a)150 628 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 Ft(SIGTTIN)p Fu(,)150 737 y Ft(SIGTTOU)p
-Fu(,)h(and)g Ft(SIGTSTP)p Fu(.)275 882 y(The)h(shell)i(exits)g(b)m(y)f
-(default)g(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42
-b(Before)32 b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150
-992 y(resends)41 b(the)i Ft(SIGHUP)e Fu(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
-Ft(SIGCONT)d Fu(to)150 1101 y(ensure)32 b(that)h(they)g(receiv)m(e)i
+Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(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 2702 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 2812 y(ignore)f
+Ft(SIGINT)e Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f
+(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150
+2921 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
+Ft(SIGTTIN)p Fu(,)150 3031 y Ft(SIGTTOU)p Fu(,)h(and)g
+Ft(SIGTSTP)p Fu(.)275 3160 y(The)h(shell)i(exits)g(b)m(y)f(default)g
+(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32
+b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 3269
+y(resends)41 b(the)i Ft(SIGHUP)e Fu(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
+Ft(SIGCONT)d Fu(to)150 3379 y(ensure)32 b(that)h(they)g(receiv)m(e)i
 (the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)
-g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 1211
+g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488
 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 Ft(disown)e
-Fu(builtin)h(\(see)150 1320 y(Section)c(7.2)g([Job)e(Con)m(trol)i
-(Builtins],)g(page)g(101\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i
-Ft(SIGHUP)c Fu(using)i Ft(disown)150 1430 y(-h)p Fu(.)275
-1575 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f
+Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i
+(Builtins],)g(page)g(104\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i
+Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275
+3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f
 (set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150
-1684 y(Builtin],)31 b(page)g(64\),)h(Bash)f(sends)e(a)i
+3946 y(Builtin],)31 b(page)g(65\),)h(Bash)f(sends)e(a)i
 Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login)
-e(shell)g(exits.)275 1829 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g
+e(shell)g(exits.)275 4075 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 1939 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g
+m(h)h(a)g(trap)150 4184 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 2048 y(w)m(aiting)j(for)f(an)g(async)m
+b(When)35 b(Bash)g(is)150 4294 y(w)m(aiting)j(for)f(an)g(async)m
 (hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g
-(reception)g(of)f(a)g(signal)h(for)150 2158 y(whic)m(h)d(a)g(trap)g
+(reception)g(of)f(a)g(signal)h(for)150 4403 y(whic)m(h)d(a)g(trap)g
 (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f
 Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150
-2267 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 2524 y Fs(3.8)68 b(Shell)45
-b(Scripts)150 2683 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le)
+4513 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 4742 y Fs(3.8)68 b(Shell)45
+b(Scripts)150 4902 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le)
 f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h
-(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 2792 y(non-option)c
+(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c
 (argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g
 Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150
-2902 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(82\),)i
+5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(85\),)i
 (Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150
-3012 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f
+5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f
 (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31
-b(shell)i(\014rst)e(searc)m(hes)150 3121 y(for)d(the)g(\014le)g(in)g
+b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g
 (the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i
-(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275
-3266 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f
-(sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g
-(\014le,)150 3376 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 3485 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 3595 y(parameters)31 b(are)f(unset.)275
-3740 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m
+(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p
+eop end
+%%Page: 42 48
+TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)275 299
+y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s
+(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150
+408 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
+518 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 628 y(parameters)31 b(are)f(unset.)275
+762 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m
 (y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150
-3849 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h
+872 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h
 (\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h
-(command,)h(it)150 3959 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 4103
-y Ft(filename)46 b Fj(arguments)150 4248 y Fu(is)30 b(equiv)-5
-b(alen)m(t)32 b(to)f(executing)390 4393 y Ft(bash)47
-b(filename)e Fj(arguments)150 4538 y Fu(if)30 b Ft(filename)d
+(command,)h(it)150 981 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 1116
+y Ft(filename)46 b Fj(arguments)150 1250 y Fu(is)30 b(equiv)-5
+b(alen)m(t)32 b(to)f(executing)390 1385 y Ft(bash)47
+b(filename)e Fj(arguments)150 1519 y Fu(if)30 b Ft(filename)d
 Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29
 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150
-4647 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)
+1629 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 4757 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s
+(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s
 (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g
-Ft(hash)f Fu(in)h(Section)h(4.1)150 4866 y([Bourne)30
-b(Shell)h(Builtins],)g(page)g(42\))h(are)e(retained)h(b)m(y)f(the)h(c)m
-(hild.)275 5011 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g
+Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30
+b(Shell)h(Builtins],)g(page)g(43\))h(are)e(retained)h(b)m(y)f(the)h(c)m
+(hild.)275 1983 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 5121 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h
+150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h
 (script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p
-Ft(#!)p Fu(',)f(the)g(remainder)150 5230 y(of)d(the)g(line)h(sp)s
+Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)d(the)g(line)h(sp)s
 (eci\014es)e(an)h(in)m(terpreter)g(for)g(the)g(program.)43
 b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p
-Fu(,)e(P)m(erl,)150 5340 y(or)g(some)h(other)g(in)m(terpreter)g(and)e
+Fu(,)e(P)m(erl,)150 2311 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.)p eop end
-%%Page: 41 47
-TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299
-y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m(terpreter)g(consist)g(of)g(a)
-g(single)h(optional)f(argumen)m(t)h(follo)m(wing)g(the)150
-408 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 518 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 628 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 737 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 872 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g
-Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f
-(installed)i(in)150 981 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)
-f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h
-(script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091
-y(under)j(another)h(shell.)p eop end
-%%Page: 42 48
-TeXDict begin 42 47 bop 3659 -116 a Fu(42)150 299 y Fp(4)80
+(language.)275 2446 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m
+(terpreter)g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h
+(follo)m(wing)g(the)150 2555 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 2665 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
+2775 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 2884 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 3019 y(Bash)h(scripts)g
+(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h
+(Bash)f(has)g(b)s(een)f(installed)i(in)150 3128 y Ft(/bin)p
+Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f(will)h(b)s(e)f(used)
+f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g(if)f(it)h(is)f
+(executed)150 3238 y(under)j(another)h(shell.)p eop end
+%%Page: 43 49
+TeXDict begin 43 48 bop 3659 -116 a Fu(43)150 299 y Fp(4)80
 b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34
 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50
 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150
@@ -11119,39 +11276,40 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g
 (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150
 1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f
 (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h
-(Builtins],)150 1521 y(page)37 b(101\),)i(the)d(directory)g(stac)m(k)h
+(Builtins],)150 1521 y(page)37 b(104\),)i(the)d(directory)g(stac)m(k)h
 (\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e
-(93\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
-([Bash)f(History)g(Builtins],)h(page)g(137\),)h(and)d(the)h
+(96\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
+([Bash)f(History)g(Builtins],)h(page)g(141\),)h(and)d(the)h
 (programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f
-(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(131\).)275
+(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(134\).)275
 1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended)
 g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20
 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g
-(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)29
-b(`)p Ft(-)p Fu(')g(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f(the)g
-(end)g(of)g(the)h(options.)40 b(The)29 b Ft(:)p Fu(,)g
-Ft(true)p Fu(,)g Ft(false)p Fu(,)f(and)h Ft(test)f Fu(builtins)150
-2215 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p
-Ft(--)p Fu(')e(sp)s(ecially)-8 b(.)54 b(The)34 b Ft(exit)p
-Fu(,)h Ft(logout)p Fu(,)f Ft(return)p Fu(,)g Ft(break)p
-Fu(,)150 2325 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e
-Ft(shift)f Fu(builtins)h(accept)i(and)e(pro)s(cess)g(argumen)m(ts)h(b)s
-(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2434
-y(requiring)41 b(`)p Ft(--)p Fu('.)74 b(Other)41 b(builtins)g(that)h
-(accept)h(argumen)m(ts)e(but)g(are)h(not)g(sp)s(eci\014ed)f(as)g
-(accepting)150 2544 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s
-(eginning)e(with)h(`)p Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25
-b(options)g(and)e(require)h(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150
-2653 y(this)30 b(in)m(terpretation.)150 2880 y Fs(4.1)68
-b(Bourne)45 b(Shell)g(Builtins)150 3040 y Fu(The)22 b(follo)m(wing)j
-(shell)d(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g
-(Shell.)38 b(These)22 b(commands)150 3149 y(are)31 b(implemen)m(ted)g
-(as)f(sp)s(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150
-3295 y Ft(:)h Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p
-Fj(arguments)p Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g
-(expanding)f Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f
-(redirections.)76 b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150
+(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)42
+b(`)p Ft(-)p Fu(')g(accepts)h(`)p Ft(--)p Fu(')f(to)h(signify)f(the)g
+(end)f(of)h(the)g(options.)76 b(The)41 b Ft(:)p Fu(,)k
+Ft(true)p Fu(,)f Ft(false)p Fu(,)g(and)d Ft(test)p Fu(/)p
+Ft([)150 2215 y Fu(builtins)32 b(do)g(not)h(accept)h(options)f(and)f
+(do)g(not)h(treat)g(`)p Ft(--)p Fu(')g(sp)s(ecially)-8
+b(.)48 b(The)32 b Ft(exit)p Fu(,)g Ft(logout)p Fu(,)f
+Ft(return)p Fu(,)150 2325 y Ft(break)p Fu(,)38 b Ft(continue)p
+Fu(,)f Ft(let)p Fu(,)i(and)d Ft(shift)g Fu(builtins)h(accept)i(and)e
+(pro)s(cess)g(argumen)m(ts)h(b)s(eginning)e(with)150
+2434 y(`)p Ft(-)p Fu(')h(without)f(requiring)g(`)p Ft(--)p
+Fu('.)59 b(Other)36 b(builtins)g(that)h(accept)h(argumen)m(ts)f(but)f
+(are)h(not)g(sp)s(eci\014ed)f(as)150 2544 y(accepting)28
+b(options)f(in)m(terpret)g(argumen)m(ts)g(b)s(eginning)e(with)i(`)p
+Ft(-)p Fu(')f(as)h(in)m(v)-5 b(alid)27 b(options)g(and)f(require)g(`)p
+Ft(--)p Fu(')150 2653 y(to)31 b(prev)m(en)m(t)g(this)f(in)m
+(terpretation.)150 2880 y Fs(4.1)68 b(Bourne)45 b(Shell)g(Builtins)150
+3040 y Fu(The)22 b(follo)m(wing)j(shell)d(builtin)h(commands)f(are)h
+(inherited)g(from)f(the)h(Bourne)g(Shell.)38 b(These)22
+b(commands)150 3149 y(are)31 b(implemen)m(ted)g(as)f(sp)s(eci\014ed)g
+(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 3295 y Ft(:)h
+Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p Fj(arguments)p
+Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g(expanding)f
+Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f(redirections.)76
+b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150
 3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47
 b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y
 Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h
@@ -11182,9 +11340,9 @@ b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s
 (e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71
 b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32
 b(to)f Ft(source)p Fu(.)p eop end
-%%Page: 43 49
-TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(43)150 299 y Ft(break)870
+%%Page: 44 50
+TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(44)150 299 y Ft(break)870
 428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g
 Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d
 Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e
@@ -11257,9 +11415,9 @@ b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h
 Ft(eval)p Fu(.)54 b(If)630 5340 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.)p eop end
-%%Page: 44 50
-TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f
-(Builtin)h(Commands)2079 b(44)150 299 y Ft(exec)870 430
+%%Page: 45 51
+TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f
+(Builtin)h(Commands)2079 b(45)150 299 y Ft(exec)870 430
 y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g
 Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k
 Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i
@@ -11275,24 +11433,26 @@ Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f
 (executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d
 (exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h
 (is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40
-b(An)630 1329 y(in)m(teractiv)m(e)d(shell)c(returns)g(failure)h(if)f
-(the)h(\014le)g(cannot)g(b)s(e)f(executed.)52 b(If)33
-b(no)h Fr(command)630 1439 y Fu(is)27 b(sp)s(eci\014ed,)g(redirections)
-h(ma)m(y)f(b)s(e)g(used)f(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g
-(en)m(vironmen)m(t.)40 b(If)630 1548 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 1658 y(status)d(is)f(non-zero.)150
-1811 y Ft(exit)870 1943 y(exit)47 b([)p Fj(n)p Ft(])630
-2074 y Fu(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g
-Fr(n)f Fu(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30
-b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 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 Ft(EXIT)f Fu(is)i(executed)630 2293 y(b)s(efore)j(the)h
-(shell)f(terminates.)150 2447 y Ft(export)870 2578 y(export)46
-b([-fn])g([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(]])630
-2710 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 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 2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h
+b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g
+(the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32
+b(subshell)f(exits)630 1439 y(unconditionally)j(if)g
+Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s
+(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548
+y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m
+(t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630
+1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e
+(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943
+y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h
+(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m
+(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184
+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 Ft(EXIT)f Fu(is)i(executed)630
+2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447
+y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p
+Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40
+b(eac)m(h)h Fr(name)k Fu(to)40 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
+2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h
 Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f
 (the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41
 b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m
@@ -11338,9 +11498,9 @@ b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m
 (shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30
 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop
 end
-%%Page: 45 51
-TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y(When)41
+%%Page: 46 52
+TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(When)41
 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39
 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408
 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the)
@@ -11393,9 +11553,9 @@ b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g
 Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b
 Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f
 (eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477
-y(prin)m(ted.)k(If)30 b(m)m(ultiple)i Fr(name)k Fu(argumen)m(ts)31
-b(are)g(supplied)f(with)g Ft(-t)g Fu(the)h Fr(name)36
-b Fu(is)31 b(prin)m(ted)630 3587 y(b)s(efore)e(the)i(hashed)e(full)g
+y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29
+b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34
+b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g
 (pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s
 (e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b)
 s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m
@@ -11421,9 +11581,9 @@ b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630
 5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38
 b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h
 Fr(name)j Fu(refers)38 b(to)p eop end
-%%Page: 46 52
-TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(a)37
+%%Page: 47 53
+TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(a)37
 b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i
 Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630
 408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h
@@ -11455,9 +11615,9 @@ b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630
 1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e
 Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630
 2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f
-(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)28
-b(trap)f(handler.)39 b(if)28 b Ft(return)e Fu(is)h(executed)i(during)d
-(a)i Ft(DEBUG)f Fu(trap,)h(the)g(last)g(command)630 2297
+(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27
+b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d
+(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297
 y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e
 (executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e
 Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25
@@ -11499,971 +11659,980 @@ Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f
 g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630
 4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s
 (elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630
-5087 y(Expressions],)39 b(page)g(87.)64 b Ft(test)37
+5087 y(Expressions],)39 b(page)g(90.)64 b Ft(test)37
 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h
 (accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f
 Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630
 5340 y(When)g(the)h Ft([)f Fu(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 Ft(])p
 Fu(.)p eop end
-%%Page: 47 53
-TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(Expressions)23
+%%Page: 48 54
+TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 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 408 y(order)30
 b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33
 b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g
 (see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f
 (used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630
-667 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37
-b Fu(is)30 b(false.)630 817 y Ft(\()g Fj(expr)f Ft(\))133
+673 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37
+b Fu(is)30 b(false.)630 829 y Ft(\()g Fj(expr)f Ft(\))133
 b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p
 Fu(.)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 927 y(precedence)31 b(of)f(op)s(erators.)630
-1076 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1186 y Fu(T)-8
+(normal)1110 938 y(precedence)31 b(of)f(op)s(erators.)630
+1093 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1203 y Fu(T)-8
 b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38
-b Fu(are)30 b(true.)630 1335 y Fj(expr1)f Ft(-o)h Fj(expr2)1110
-1445 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b
-Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1594 y(The)37
+b Fu(are)30 b(true.)630 1358 y Fj(expr1)f Ft(-o)h Fj(expr2)1110
+1468 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b
+Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1623 y(The)37
 b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39
 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630
-1704 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630
-1853 y(0)h(argumen)m(ts)1110 1963 y(The)f(expression)g(is)g(false.)630
-2112 y(1)h(argumen)m(t)1110 2222 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
-2371 y(2)g(argumen)m(ts)1110 2481 y(If)f(the)h(\014rst)f(argumen)m(t)h
+1733 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630
+1888 y(0)h(argumen)m(ts)1110 1998 y(The)f(expression)g(is)g(false.)630
+2153 y(1)h(argumen)m(t)1110 2262 y(The)f(expression)g(is)g(true)h(if,)f
+(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630
+2418 y(2)h(argumen)m(ts)1110 2527 y(If)f(the)h(\014rst)f(argumen)m(t)h
 (is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f
-(only)h(if)g(the)1110 2590 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50
+(only)h(if)g(the)1110 2637 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 2700 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f
-([Bash)g(Conditional)g(Expres-)1110 2809 y(sions],)34
-b(page)f(87\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
-(test)j(is)f(true.)47 b(If)1110 2919 y(the)33 b(\014rst)g(argumen)m(t)h
+1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f
+([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34
+b(page)f(90\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
+(test)j(is)f(true.)47 b(If)1110 2966 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 3029 y(false.)630 3178 y(3)e(argumen)m(ts)1110
-3288 y(The)44 b(follo)m(wing)i(conditions)f(are)g(applied)f(in)g(the)g
-(order)g(listed.)84 b(If)44 b(the)1110 3397 y(second)f(argumen)m(t)g
-(is)g(one)g(of)g(the)g(binary)f(conditional)i(op)s(erators)f(\(see)1110
-3507 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e
-(87\),)k(the)43 b(result)1110 3616 y(of)h(the)h(expression)f(is)g(the)g
-(result)g(of)h(the)f(binary)g(test)h(using)e(the)i(\014rst)1110
-3726 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44
-b(The)31 b(`)p Ft(-a)p Fu(')h(and)g(`)p Ft(-o)p Fu(')f(op)s(erators)i
-(are)1110 3836 y(considered)25 b(binary)g(op)s(erators)g(when)f(there)i
-(are)f(three)h(argumen)m(ts.)39 b(If)25 b(the)1110 3945
-y(\014rst)j(argumen)m(t)h(is)g(`)p Ft(!)p Fu(',)h(the)f(v)-5
-b(alue)29 b(is)g(the)g(negation)i(of)e(the)g(t)m(w)m(o-argumen)m(t)1110
-4055 y(test)38 b(using)f(the)g(second)g(and)g(third)f(argumen)m(ts.)61
-b(If)37 b(the)g(\014rst)f(argumen)m(t)1110 4164 y(is)j(exactly)i(`)p
-Ft(\()p Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)f(exactly)i(`)p
-Ft(\))p Fu(',)h(the)e(result)f(is)1110 4274 y(the)46
-b(one-argumen)m(t)g(test)h(of)f(the)f(second)h(argumen)m(t.)86
-b(Otherwise,)50 b(the)1110 4384 y(expression)30 b(is)h(false.)630
-4533 y(4)g(argumen)m(ts)1110 4643 y(If)h(the)i(\014rst)e(argumen)m(t)h
+(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110
+3340 y(The)f(follo)m(wing)i(conditions)f(are)f(applied)h(in)f(the)g
+(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m
+(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290
+3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f
+(Expressions],)h(page)f(90\),)1290 3692 y(the)d(result)g(of)f(the)h
+(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290
+3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s
+(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p
+Fu(')1290 3911 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s
+(erators)h(when)f(there)h(are)h(three)1290 4020 y(argumen)m(ts.)1159
+4153 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p
+Ft(!)p Fu(',)k(the)d(v)-5 b(alue)41 b(is)h(the)f(negation)i(of)f(the)
+1290 4262 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h
+(and)e(third)h(argumen)m(ts.)1159 4395 y(3.)61 b(If)35
+b(the)h(\014rst)e(argumen)m(t)i(is)g(exactly)h(`)p Ft(\()p
+Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 4504
+y(exactly)i(`)p Ft(\))p Fu(',)g(the)f(result)f(is)h(the)f(one-argumen)m
+(t)i(test)f(of)f(the)h(second)1290 4614 y(argumen)m(t.)1159
+4746 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)630
+4902 y(4)h(argumen)m(ts)1110 5011 y(If)h(the)i(\014rst)e(argumen)m(t)h
 (is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the)
-g(three-)1110 4752 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the)
-h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 4862 y(erwise,)34
+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 4971 y(dence)e(using)e(the)i(rules)f
-(listed)h(ab)s(o)m(v)m(e.)630 5121 y(5)g(or)f(more)h(argumen)m(ts)1110
-5230 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5
-b(aluated)45 b(according)f(to)f(precedence)1110 5340
-y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)p
-eop end
-%%Page: 48 54
-TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(When)40
-b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p Fu(',)j(the)d(`)p
-Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g
-(lexicographically)630 408 y(using)30 b(ASCI)s(I)f(ordering.)150
-559 y Ft(times)870 689 y(times)630 819 y Fu(Prin)m(t)37
+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: 49 55
+TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(5)31
+b(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.)630
+690 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p
+Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g
+(sort)g(lexicographically)630 800 y(using)30 b(ASCI)s(I)f(ordering.)150
+972 y Ft(times)870 1113 y(times)630 1254 y Fu(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 929 y(return)29
-b(status)i(is)f(zero.)150 1080 y Ft(trap)870 1210 y(trap)47
+f(and)g(its)h(c)m(hildren.)61 b(The)630 1363 y(return)29
+b(status)i(is)f(zero.)150 1536 y Ft(trap)870 1677 y(trap)47
 b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630
-1340 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44
+1817 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(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 1450 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35
+(es)630 1927 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35
 b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i
 Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p
-Fu(',)630 1559 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g
+Fu(',)630 2037 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g
 (is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h
-(shell)630 1669 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41
+(shell)630 2146 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41
 b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s
-(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 1778
+(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 2256
 y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v)
 m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g
-Ft(-p)630 1888 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m
+Ft(-p)630 2365 y Fu(has)g(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
-1998 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h
+2475 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h
 (supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i
-Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2107 y(of)c(commands)f(asso)s
+Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2585 y(of)c(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 2217 y(as)f(shell)h(input.)38
+(that)h(ma)m(y)h(b)s(e)e(reused)630 2694 y(as)f(shell)h(input.)38
 b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e
-(a)i(list)f(of)h(signal)g(names)f(and)630 2326 y(their)33
+(a)i(list)f(of)h(signal)g(names)f(and)630 2804 y(their)33
 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34
 b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g
-(signal)630 2436 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h
+(signal)630 2913 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h
 (case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i
-(optional.)630 2566 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35
+(optional.)630 3054 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35
 b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35
 b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g
-Fr(sigsp)s(ec)41 b Fu(is)630 2676 y Ft(DEBUG)p Fu(,)32
+Fr(sigsp)s(ec)41 b Fu(is)630 3164 y Ft(DEBUG)p Fu(,)32
 b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m
-(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 2785
+(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 3273
 y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h
-(arithmetic)g Ft(for)d Fu(command,)j(and)630 2895 y(b)s(efore)22
+(arithmetic)g Ft(for)d Fu(command,)j(and)630 3383 y(b)s(efore)22
 b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37
-b(Refer)22 b(to)h(the)g(description)f(of)630 3004 y(the)i
+b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i
 Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i
-(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3114
-y(page)33 b(64\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g
+(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602
+y(page)33 b(65\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g
 Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38
-b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3224 y(command)h
+b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h
 Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g
-(function)g(or)f(a)h(script)g(executed)g(with)630 3333
+(function)g(or)f(a)h(script)g(executed)g(with)630 3821
 y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h
-(executing.)630 3463 y(If)20 b(a)i Fr(sigsp)s(ec)27 b
+(executing.)630 3962 y(If)20 b(a)i Fr(sigsp)s(ec)27 b
 Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29
 b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h
-(ma)m(y)630 3573 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h
+(ma)m(y)630 4072 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h
 (a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630
-3682 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41
+4181 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41
 b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b
-Ft(ERR)f Fu(trap)i(is)630 3792 y(not)c(executed)h(if)f(the)h(failed)f
+Ft(ERR)f Fu(trap)i(is)630 4291 y(not)c(executed)h(if)f(the)h(failed)f
 (command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630
-3902 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e
+4401 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e
 Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f
-Ft(if)f Fu(or)g Ft(elif)630 4011 y Fu(reserv)m(ed)45
+Ft(if)f Fu(or)g Ft(elif)630 4510 y Fu(reserv)m(ed)45
 b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g
-Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4121
+Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4620
 y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f
 Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g
-(the)h(last,)630 4230 y(or)d(if)g(the)f(command's)h(return)f(status)h
+(the)h(last,)630 4729 y(or)d(if)g(the)f(command's)h(return)f(status)h
 (is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39
-b(These)25 b(are)i(the)f(same)630 4340 y(conditions)31
+b(These)25 b(are)i(the)f(same)630 4839 y(conditions)31
 b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p
-Fu(\))h(option.)630 4470 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i
+Fu(\))h(option.)630 4980 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 4580 y(signals)28 b(that)f(are)h(not)f(b)s(eing)
+b(T)-8 b(rapp)s(ed)630 5089 y(signals)28 b(that)f(are)h(not)f(b)s(eing)
 g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5
-b(alues)28 b(in)e(a)i(subshell)630 4689 y(or)i(subshell)g(en)m
-(vironmen)m(t)h(when)e(one)i(is)f(created.)630 4819 y(The)g(return)f
+b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m
+(vironmen)m(t)h(when)e(one)i(is)f(created.)630 5340 y(The)g(return)f
 (status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b
 Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31
-b(signal.)150 4970 y Ft(umask)870 5100 y(umask)46 b([-p])h([-S])g([)p
-Fj(mode)p Ft(])630 5230 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f
-(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40
-b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630
-5340 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)p eop end
-%%Page: 49 55
-TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(mask)29
-b(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g Ft(chmod)e
-Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 b(omitted,)j(the)630
-408 y(curren)m(t)39 b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m
-(ted.)66 b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j
-(a)630 518 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m
-(ted)f(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g
-Ft(-p)g Fu(option)h(is)630 628 y(supplied,)f(and)f Fr(mo)s(de)37
+b(signal.)p eop end
+%%Page: 50 56
+TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(50)150 299 y Ft(umask)870
+427 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630
+554 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g
+(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34
+b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 664 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
+773 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g
+Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28
+b(omitted,)j(the)630 883 y(curren)m(t)39 b(v)-5 b(alue)40
+b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g
+Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 993
+y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a)
+g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g
+Fu(option)h(is)630 1102 y(supplied,)f(and)f Fr(mo)s(de)37
 b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m
-(y)g(b)s(e)e(reused)h(as)630 737 y(input.)62 b(The)38
+(y)g(b)s(e)e(reused)h(as)630 1212 y(input.)62 b(The)38
 b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully)
-g(c)m(hanged)g(or)g(if)g(no)630 847 y Fr(mo)s(de)d Fu(argumen)m(t)c(is)
-f(supplied,)g(and)f(non-zero)i(otherwise.)630 977 y(Note)38
-b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f(an)g(o)s
-(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630
-1086 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p
+g(c)m(hanged)g(or)g(if)g(no)630 1321 y Fr(mo)s(de)d Fu(argumen)m(t)c
+(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1449
+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
+1559 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p
 Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s
-(ermissions)630 1196 y(of)d Ft(755)p Fu(.)150 1347 y
-Ft(unset)870 1477 y(unset)46 b([-fnv])g([)p Fj(name)p
-Ft(])630 1607 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
+(ermissions)630 1668 y(of)d Ft(755)p Fu(.)150 1814 y
+Ft(unset)870 1942 y(unset)46 b([-fnv])g([)p Fj(name)p
+Ft(])630 2069 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
 b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e
-Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 1716
+Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2179
 y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5
 b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g
-Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 1826 y(the)37
+Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2288 y(the)37
 b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h
 (function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630
-1936 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g
+2398 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g
 Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f
-Fr(nameref)51 b Fu(attribute,)630 2045 y Fr(name)42 b
+Fr(nameref)51 b Fu(attribute,)630 2508 y Fr(name)42 b
 Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5
 b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect)
-h(if)630 2155 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65
+h(if)630 2617 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65
 b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h
-Fr(name)j Fu(refers)39 b(to)h(a)630 2264 y(v)-5 b(ariable;)37
+Fr(name)j Fu(refers)39 b(to)h(a)630 2727 y(v)-5 b(ariable;)37
 b(if)d(there)g(is)g(no)g(v)-5 b(ariable)34 b(b)m(y)g(that)h(name,)g(an)
-m(y)f(function)g(with)f(that)i(name)f(is)630 2374 y(unset.)46
+m(y)f(function)g(with)f(that)i(name)f(is)630 2836 y(unset.)46
 b(Readonly)33 b(v)-5 b(ariables)33 b(and)e(functions)h(ma)m(y)h(not)g
-(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2483
+(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2946
 y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8
-b(.)150 2715 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150
-2875 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m
+b(.)150 3173 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150
+3332 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m
 (h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150
-2984 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g
-(in)g(the)h Fm(posix)e Fu(standard.)150 3135 y Ft(alias)870
-3265 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p
-Ft(])d(...)o(])630 3395 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f
+3442 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g
+(in)g(the)h Fm(posix)e Fu(standard.)150 3588 y Ft(alias)870
+3715 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p
+Ft(])d(...)o(])630 3843 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f
 (the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f
-(aliases)h(on)f(the)630 3505 y(standard)g(output)g(in)g(a)h(form)f
+(aliases)h(on)f(the)630 3953 y(standard)g(output)g(in)g(a)h(form)f
 (that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39
-b(If)25 b(argumen)m(ts)630 3614 y(are)j(supplied,)e(an)i(alias)g(is)f
+b(If)25 b(argumen)m(ts)630 4062 y(are)j(supplied,)e(an)i(alias)g(is)f
 (de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27
 b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26
-b(no)h Fr(v)-5 b(alue)630 3724 y Fu(is)37 b(giv)m(en,)j(the)d(name)g
+b(no)h Fr(v)-5 b(alue)630 4172 y Fu(is)37 b(giv)m(en,)j(the)d(name)g
 (and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61
-b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3833 y(Section)31
-b(6.6)h([Aliases],)g(page)f(90.)150 3984 y Ft(bind)870
-4114 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870
-4224 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p
+b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4281 y(Section)31
+b(6.6)h([Aliases],)g(page)f(93.)150 4427 y Ft(bind)870
+4555 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870
+4664 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p
 Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870
-4333 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870
-4443 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)
-870 4552 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)
-870 4662 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj
-(keyseq:readline-command)630 4792 y Fu(Displa)m(y)22
+4774 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870
+4884 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)
+870 4993 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)
+870 5103 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj
+(keyseq:readline-command)630 5230 y Fu(Displa)m(y)22
 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h
-(Editing],)j(page)e(104\))g(k)m(ey)630 4902 y(and)36
+(Editing],)j(page)e(107\))g(k)m(ey)630 5340 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 5011 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 5121 y(w)m(ould)e(app)s(ear)f(in)h(a)h
-(Readline)g(initialization)i(\014le)d(\(see)h(Section)g(8.3)g
-([Readline)g(Init)630 5230 y(File],)c(page)d(107\),)j(but)c(eac)m(h)h
-(binding)f(or)g(command)h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)
-630 5340 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft
-("\\C-x\\C-r":re-read-init-f)o(ile)p Fu('.)p eop end
-%%Page: 50 56
-TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(Options,)30
-b(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630
-454 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j
-Fu(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 563 y(bindings.)46 b(Acceptable)34
+(Readline)g(function)f(or)h(macro,)p eop end
+%%Page: 51 57
+TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 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
+408 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i
+(\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init)630
+518 y(File],)c(page)d(110\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h
+(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 628
+y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p
+Fu('.)630 762 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m
+(wing)h(meanings:)630 921 y Ft(-m)e Fj(keymap)66 b Fu(Use)54
+b Fr(k)m(eymap)j Fu(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 1031 y(bindings.)46 b(Acceptable)34
 b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p
-Fu(,)1110 673 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
+Fu(,)1110 1140 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
 Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p
-Fu(,)f(and)1110 782 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
+Fu(,)f(and)1110 1250 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c
-Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 892 y(synon)m(ym\);)30
+Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1359 y(synon)m(ym\);)30
 b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p
-Fu(.)630 1047 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
-(Readline)g(functions.)630 1201 y Ft(-p)384 b Fu(Displa)m(y)34
+Fu(.)630 1518 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
+(Readline)g(functions.)630 1678 y Ft(-p)384 b Fu(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 1311 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 1466
+(a)m(y)f(that)1110 1787 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 1946
 y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g
-(and)g(bindings.)630 1620 y Ft(-v)384 b Fu(Displa)m(y)25
+(and)g(bindings.)630 2105 y Ft(-v)384 b Fu(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 1730
+b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2215
 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 1885 y Ft(-V)384 b Fu(List)31
+(initialization)j(\014le.)630 2374 y Ft(-V)384 b Fu(List)31
 b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5
-b(alues.)630 2039 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g
+b(alues.)630 2533 y Ft(-s)384 b Fu(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
-2149 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 2259
-y(Readline)d(initialization)i(\014le.)630 2413 y Ft(-S)384
+2643 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 2752
+y(Readline)d(initialization)i(\014le.)630 2911 y Ft(-S)384
 b Fu(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 2523 y(they)31 b(output.)630
-2678 y Ft(-f)f Fj(filename)1110 2787 y Fu(Read)h(k)m(ey)g(bindings)e
-(from)h Fr(\014lename)p Fu(.)630 2942 y Ft(-q)g Fj(function)1110
-3051 y Fu(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 Fr(function)p Fu(.)630 3206 y Ft(-u)g
-Fj(function)1110 3316 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i
-(the)f(named)g Fr(function)p Fu(.)630 3471 y Ft(-r)g
+(macros)g(and)f(the)g(strings)1110 3021 y(they)31 b(output.)630
+3180 y Ft(-f)f Fj(filename)1110 3290 y Fu(Read)h(k)m(ey)g(bindings)e
+(from)h Fr(\014lename)p Fu(.)630 3449 y Ft(-q)g Fj(function)1110
+3558 y Fu(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 Fr(function)p Fu(.)630 3717 y Ft(-u)g
+Fj(function)1110 3827 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i
+(the)f(named)g Fr(function)p Fu(.)630 3986 y Ft(-r)g
 Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f
-(for)h Fr(k)m(eyseq)p Fu(.)630 3625 y Ft(-x)g Fj(keyseq:shell-command)
-1110 3735 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
+(for)h Fr(k)m(eyseq)p Fu(.)630 4145 y Ft(-x)g Fj(keyseq:shell-command)
+1110 4255 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
 (whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110
-3844 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51
-b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 3954
+4364 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51
+b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4474
 y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e
-(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4064
+(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4583
 y Ft(READLINE_POINT)e Fu(v)-5 b(ariable)39 b(to)h(the)e(curren)m(t)h
-(lo)s(cation)h(of)f(the)g(insertion)1110 4173 y(p)s(oin)m(t.)59
+(lo)s(cation)h(of)f(the)g(insertion)1110 4693 y(p)s(oin)m(t.)59
 b(If)37 b(the)f(executed)i(command)e(c)m(hanges)i(the)f(v)-5
-b(alue)37 b(of)f Ft(READLINE_)1110 4283 y(LINE)29 b Fu(or)h
+b(alue)37 b(of)f Ft(READLINE_)1110 4803 y(LINE)29 b Fu(or)h
 Ft(READLINE_POINT)p Fu(,)c(those)31 b(new)e(v)-5 b(alues)31
-b(will)f(b)s(e)f(re\015ected)i(in)f(the)1110 4392 y(editing)h(state.)
-630 4547 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s
+b(will)f(b)s(e)f(re\015ected)i(in)f(the)1110 4912 y(editing)h(state.)
+630 5071 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s
 (ound)e(to)j(shell)g(commands)e(and)h(the)g(asso)s(ciated)1110
-4657 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i
-(input.)630 4811 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i
+5181 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i
+(input.)630 5340 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 4966 y Ft(builtin)870 5098 y(builtin)46 b([)p
-Fj(shell-builtin)e Ft([)p Fj(args)p Ft(]])630 5230 y
-Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h Fr(args)p
-Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 b(This)35
-b(is)i(useful)630 5340 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)p
-eop end
-%%Page: 51 57
-TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(the)34
-b(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 408 y(zero)e(if)g
-Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)g(command.)150
-579 y Ft(caller)870 719 y(caller)46 b([)p Fj(expr)p Ft(])630
-859 y Fu(Returns)34 b(the)g(con)m(text)j(of)e(an)m(y)g(activ)m(e)i
-(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h(a)g(script)630
-969 y(executed)c(with)f(the)h Ft(.)f Fu(or)g Ft(source)f
-Fu(builtins\).)630 1109 y(Without)45 b Fr(expr)p Fu(,)j
-Ft(caller)43 b Fu(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 1218 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 Fr(expr)p Fu(,)h Ft(caller)630
-1328 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d
+(ccurs.)p eop end
+%%Page: 52 58
+TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(builtin)870
+437 y(builtin)46 b([)p Fj(shell-builtin)e Ft([)p Fj(args)p
+Ft(]])630 576 y Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h
+Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59
+b(This)35 b(is)i(useful)630 685 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 795 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
+905 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)
+g(command.)150 1072 y Ft(caller)870 1210 y(caller)46
+b([)p Fj(expr)p Ft(])630 1349 y Fu(Returns)34 b(the)g(con)m(text)j(of)e
+(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h
+(a)g(script)630 1458 y(executed)c(with)f(the)h Ft(.)f
+Fu(or)g Ft(source)f Fu(builtins\).)630 1597 y(Without)45
+b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(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 1706
+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 Fr(expr)p Fu(,)h Ft(caller)630
+1816 y Fu(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
-1437 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g
+1925 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
-1547 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m
+2035 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.)630
-1687 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g
+2173 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g
 (is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f
-Fr(expr)630 1797 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5
+Fr(expr)630 2283 y Fu(do)s(es)h(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
-1967 y Ft(command)870 2107 y(command)46 b([-pVv])g Fj(command)g
-Ft([)p Fj(arguments)f Ft(...)o(])630 2247 y Fu(Runs)32
+2450 y Ft(command)870 2589 y(command)46 b([-pVv])g Fj(command)g
+Ft([)p Fj(arguments)f Ft(...)o(])630 2727 y Fu(Runs)32
 b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g
-(shell)h(function)e(named)h Fr(command)p Fu(.)630 2357
+(shell)h(function)e(named)h Fr(command)p Fu(.)630 2837
 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 Ft(PATH)f Fu(are)630 2466 y(executed.)59
+h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 2946 y(executed.)59
 b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g
 Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35
-b(within)630 2576 y(the)c(function)f(will)h(execute)g(the)g(external)g
+b(within)630 3056 y(the)c(function)f(will)h(execute)g(the)g(external)g
 (command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630
-2685 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b
+3165 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b
 Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5
-b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 2795 y(guaran)m(teed)f(to)
+b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3275 y(guaran)m(teed)f(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 2905
+b(The)33 b(return)g(status)h(in)f(this)h(case)630 3385
 y(is)29 b(127)g(if)g Fr(command)j Fu(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
-3014 y Fr(command)34 b Fu(otherwise.)630 3154 y(If)e(either)h(the)f
+3494 y Fr(command)34 b Fu(otherwise.)630 3633 y(If)e(either)h(the)f
 Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f
-(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3264 y(The)f
+(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3742 y(The)f
 Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g
-(command)g(or)g(\014le)g(name)g(used)630 3373 y(to)40
+(command)g(or)g(\014le)g(name)g(used)630 3852 y(to)40
 b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44
 b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose)
-630 3483 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
+630 3961 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
 (status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630
-3593 y(non-zero)31 b(if)f(not.)150 3763 y Ft(declare)870
-3903 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p
-Ft([=)p Fj(value)p Ft(])d(...)o(])630 4043 y Fu(Declare)29
+4071 y(non-zero)31 b(if)f(not.)150 4238 y Ft(declare)870
+4377 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 4515 y Fu(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 Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m
-(y)630 4153 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
-b(instead.)630 4293 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
+(y)630 4625 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
+b(instead.)630 4763 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
 (the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i
-Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4402 y Fu(is)i(used)g(with)g
+Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4873 y Fu(is)i(used)g(with)g
 Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g
-Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4512 y(ignored.)630
-4652 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k
+Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4982 y(ignored.)630
+5121 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k
 Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630
-4762 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
+5230 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
 b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h
-(the)g(addi-)630 4871 y(tional)k(options.)52 b(If)34
+(the)g(addi-)630 5340 y(tional)k(options.)52 b(If)34
 b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p
-Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 4981 y(the)e(attributes)h
-(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50
-b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630
-5090 y(displa)m(y)d(to)g(shell)f(functions.)630 5230
-y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g
-(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630
-5340 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40
-b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using)
-p eop end
-%%Page: 52 58
-TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y Ft(shopt)24
-b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f(Builtin],)k(page)e(64\),)
-i(the)d(source)h(\014le)f(name)h(and)630 408 y(line)31
-b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 b Fu(is)30
-b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41
-b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 543 y(The)36
+Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)p eop end
+%%Page: 53 59
+TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(the)33
+b(attributes)h(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5
+b(ariables.)50 b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630
+408 y(displa)m(y)d(to)g(shell)f(functions.)630 544 y(The)41
+b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g(function)g
+(de\014nitions;)47 b(only)41 b(the)g(function)630 654
+y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 b(If)30
+b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using)630
+764 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f
+(Builtin],)k(page)e(65\),)i(the)d(source)h(\014le)f(name)h(and)630
+873 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36
+b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41
+b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1009 y(The)36
 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f
 (created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)s(e,)630
-653 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)h
-(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630
-763 y(cases.)630 897 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e)g
-(used)f(to)i(restrict)g(output)e(to)i(v)-5 b(ariables)28
-b(with)f(the)g(sp)s(ec-)630 1007 y(i\014ed)j(attributes)h(or)f(to)h
-(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1167
+1119 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)
+h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630
+1228 y(cases.)630 1364 y(The)27 b(follo)m(wing)h(options)g(can)f(b)s(e)
+g(used)f(to)i(restrict)g(output)e(to)i(v)-5 b(ariables)28
+b(with)f(the)g(sp)s(ec-)630 1474 y(i\014ed)j(attributes)h(or)f(to)h
+(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1636
 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra)
 m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110
-1277 y(page)31 b(91\).)630 1437 y Ft(-A)384 b Fu(Eac)m(h)24
+1745 y(page)31 b(94\).)630 1908 y Ft(-A)384 b Fu(Eac)m(h)24
 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5
 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110
-1547 y(page)31 b(91\).)630 1707 y Ft(-f)384 b Fu(Use)31
-b(function)f(names)g(only)-8 b(.)630 1867 y Ft(-i)384
+2017 y(page)31 b(94\).)630 2179 y Ft(-f)384 b Fu(Use)31
+b(function)f(names)g(only)-8 b(.)630 2342 y Ft(-i)384
 b Fu(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
-1976 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(89\))h
-(is)f(p)s(erformed)e(when)h(the)1110 2086 y(v)-5 b(ariable)31
-b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2246 y Ft(-l)384
+2451 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(92\))h
+(is)f(p)s(erformed)e(when)h(the)1110 2561 y(v)-5 b(ariable)31
+b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2723 y Ft(-l)384
 b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5
 b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110
-2356 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30
-b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2516
+2833 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30
+b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 2995
 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k Fu(the)27
 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f
-(reference)1110 2626 y(to)32 b(another)g(v)-5 b(ariable.)46
+(reference)1110 3104 y(to)32 b(another)g(v)-5 b(ariable.)46
 b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g
-(v)-5 b(alue)32 b(of)1110 2735 y Fr(name)p Fu(.)54 b(All)35
+(v)-5 b(alue)32 b(of)1110 3214 y Fr(name)p Fu(.)54 b(All)35
 b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations)
-g(to)1110 2845 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or)
+g(to)1110 3324 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or)
 g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110
-2954 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25
+3433 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25
 b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39
-b(The)23 b(nameref)1110 3064 y(attribute)31 b(cannot)g(b)s(e)f(applied)
-g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3224 y Ft(-r)384
+b(The)23 b(nameref)1110 3543 y(attribute)31 b(cannot)g(b)s(e)f(applied)
+g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3705 y Ft(-r)384
 b Fu(Mak)m(e)25 b Fr(name)5 b Fu(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 3334 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
-(statemen)m(ts)h(or)f(unset.)630 3494 y Ft(-t)384 b Fu(Giv)m(e)33
+b(alues)1110 3814 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
+(statemen)m(ts)h(or)f(unset.)630 3977 y Ft(-t)384 b Fu(Giv)m(e)33
 b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46
-b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 3603
+b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4086
 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h
-(shell.)40 b(The)27 b(trace)i(attribute)1110 3713 y(has)h(no)g(sp)s
-(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 3873 y
+(shell.)40 b(The)27 b(trace)i(attribute)1110 4196 y(has)h(no)g(sp)s
+(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 4358 y
 Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f
 (v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110
-3983 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30
-b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 4143
+4468 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30
+b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 4630
 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29
 b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
-4253 y(ronmen)m(t.)630 4413 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g
+4739 y(ronmen)m(t.)630 4902 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g
 (`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f
-(the)g(exceptions)h(that)630 4522 y(`)p Ft(+a)p Fu(')h(ma)m(y)h(not)f
-(b)s(e)f(used)g(to)i(destro)m(y)g(an)f(arra)m(y)g(v)-5
-b(ariable)31 b(and)f(`)p Ft(+r)p Fu(')g(will)g(not)g(remo)m(v)m(e)i
-(the)630 4632 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h
-(function,)g Ft(declare)e Fu(mak)m(es)j(eac)m(h)f Fr(name)35
-b Fu(lo)s(cal,)630 4741 y(as)f(with)f(the)g Ft(local)f
-Fu(command,)i(unless)f(the)g Ft(-g)g Fu(option)h(is)f(used.)49
-b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4851 y(is)c(follo)m(w)m(ed)i
-(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)30 b(the)h(v)-5 b(alue)31
-b(of)f(the)h(v)-5 b(ariable)31 b(is)g(set)g(to)g Fr(v)-5
-b(alue)p Fu(.)630 4986 y(When)41 b(using)g Ft(-a)g Fu(or)h
-Ft(-A)e Fu(and)h(the)h(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g
-(create)h(arra)m(y)630 5096 y(v)-5 b(ariables,)28 b(additional)f
-(attributes)g(do)f(not)h(tak)m(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)
-g(assignmen)m(ts.)630 5230 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 5340 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g
-(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h
-(assign)p eop end
-%%Page: 53 59
-TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 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 408 y(arra)m(y)30 b(v)-5 b(ariable)30
+(the)g(exceptions)h(that)630 5011 y(`)p Ft(+a)p Fu(')23
+b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m
+(y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p
+Fu(')h(will)g(not)g(remo)m(v)m(e)630 5121 y(the)36 b(readonly)h
+(attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g
+Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 5230
+y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d
+(the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5
+b(ariable)630 5340 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p
+Fr(v)-5 b(alue)p Fu(,)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 Fr(v)-5 b(alue)p Fu(.)p
+eop end
+%%Page: 54 60
+TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)41
+b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s(ound)e
+(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630
+408 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m
+(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630
+537 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
+647 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p
+Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630
+757 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 866 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 518 y([Arra)m(ys],)47 b(page)c(91\),)48
+(\(see)h(Section)f(6.7)630 976 y([Arra)m(ys],)47 b(page)c(94\),)48
 b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5
 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
-628 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
+1085 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
-737 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
+1195 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
-847 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
-Ft(-f)p Fu(.)150 1005 y Ft(echo)870 1139 y(echo)47 b([-neE])f([)p
-Fj(arg)g Ft(...])630 1273 y Fu(Output)31 b(the)i Fr(arg)8
+1305 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
+Ft(-f)p Fu(.)150 1453 y Ft(echo)870 1582 y(echo)47 b([-neE])f([)p
+Fj(arg)g Ft(...])630 1711 y Fu(Output)31 b(the)i Fr(arg)8
 b Fu(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 1383 y(status)f(is)f(0)h(unless)f(a)
+(newline.)47 b(The)32 b(return)630 1820 y(status)f(is)f(0)h(unless)f(a)
 h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s
-(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1492
+(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1930
 y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i
 (in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630
-1602 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
+2039 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
 b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of)
-630 1711 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
+630 2149 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
 (systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630
-1821 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
+2259 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
 (used)g(to)h(dynamically)h(determine)f(whether)f(or)630
-1931 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
+2368 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
 (b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630
-2040 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
-2174 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
-(sequences:)630 2332 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
-2491 y Ft(\\b)384 b Fu(bac)m(kspace)630 2649 y Ft(\\c)g
-Fu(suppress)28 b(further)h(output)630 2807 y Ft(\\e)630
-2917 y(\\E)384 b Fu(escap)s(e)630 3075 y Ft(\\f)g Fu(form)30
-b(feed)630 3233 y Ft(\\n)384 b Fu(new)30 b(line)630 3392
-y Ft(\\r)384 b Fu(carriage)32 b(return)630 3550 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 3708 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 3867 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4025
+2478 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
+2607 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
+(sequences:)630 2755 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
+2903 y Ft(\\b)384 b Fu(bac)m(kspace)630 3051 y Ft(\\c)g
+Fu(suppress)28 b(further)h(output)630 3200 y Ft(\\e)630
+3309 y(\\E)384 b Fu(escap)s(e)630 3458 y Ft(\\f)g Fu(form)30
+b(feed)630 3606 y Ft(\\n)384 b Fu(new)30 b(line)630 3754
+y Ft(\\r)384 b Fu(carriage)32 b(return)630 3902 y Ft(\\t)384
+b Fu(horizon)m(tal)32 b(tab)630 4051 y Ft(\\v)384 b Fu(v)m(ertical)32
+b(tab)630 4199 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4347
 y Ft(\\0)p Fj(nnn)240 b Fu(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 Fr(nnn)f Fu(\(zero)i(to)1110 4134 y(three)e(o)s(ctal)g
-(digits\))630 4293 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)
+b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 4457 y(three)e(o)s(ctal)g
+(digits\))630 4605 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)
 m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
-b(alue)39 b Fr(HH)1110 4402 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 4561 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41
+b(alue)39 b Fr(HH)1110 4715 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 4863 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41
 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5
-b(alue)41 b(is)g(the)g(hex-)1110 4670 y(adecimal)32 b(v)-5
+b(alue)41 b(is)g(the)g(hex-)1110 4973 y(adecimal)32 b(v)-5
 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630
-4829 y Ft(\\U)p Fj(HHHHHHHH)1110 4938 y Fu(the)41 b(Unico)s(de)g
+5121 y Ft(\\U)p Fj(HHHHHHHH)1110 5230 y Fu(the)41 b(Unico)s(de)g
 (\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41
-b(is)g(the)g(hex-)1110 5048 y(adecimal)32 b(v)-5 b(alue)31
-b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150
-5206 y Ft(enable)870 5340 y(enable)46 b([-a])h([-dnps])f([-f)g
-Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])p eop end
-%%Page: 54 60
-TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(Enable)36
+b(is)g(the)g(hex-)1110 5340 y(adecimal)32 b(v)-5 b(alue)31
+b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))p
+eop end
+%%Page: 55 61
+TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(55)150 299 y Ft(enable)870
+433 y(enable)46 b([-a])h([-dnps])f([-f)g Fj(filename)p
+Ft(])g([)p Fj(name)g Ft(...)o(])630 567 y Fu(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 408 y(command)e(whic)m(h)g
+b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 676 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 518 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g
+(executed)h(without)630 786 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 628 y(b)s(efore)35 b(disk)g(commands.)55
+(builtins)630 896 y(b)s(efore)35 b(disk)g(commands.)55
 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g Fr(name)5 b Fu(s)35
-b(b)s(ecome)h(disabled.)55 b(Otherwise)630 737 y Fr(name)5
+b(b)s(ecome)h(disabled.)55 b(Otherwise)630 1005 y Fr(name)5
 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f
 (the)g Ft(test)f Fu(binary)h(found)f(via)h Ft($PATH)630
-847 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m
-(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p Fu('.)630 983 y(If)45
-b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g
+1115 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m
+(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p Fu('.)630 1249
+y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g
 Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f(shell)
-630 1092 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
+630 1358 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 1202 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
+(enabled)630 1468 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
 Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h
-(indication)h(of)630 1311 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
-630 1447 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
+(indication)h(of)630 1577 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
+630 1711 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
 (builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5
-b(ject)630 1557 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
+b(ject)630 1821 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
 s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h
-(delete)630 1667 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
-Fu(.)630 1802 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
+(delete)630 1931 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
+Fu(.)630 2064 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
 g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33
-b Ft(-s)g Fu(option)630 1912 y(restricts)j Ft(enable)d
+b Ft(-s)g Fu(option)630 2174 y(restricts)j Ft(enable)d
 Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54
 b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630
-2022 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
-(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(70\).)630
-2158 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
+2284 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
+(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(71\).)630
+2418 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
 Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g
-(error)630 2267 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
-(ob)5 b(ject.)150 2429 y Ft(help)870 2565 y(help)47 b([-dms])f([)p
-Fj(pattern)p Ft(])630 2701 y Fu(Displa)m(y)40 b(helpful)e(information)h
+(error)630 2527 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
+(ob)5 b(ject.)150 2685 y Ft(help)870 2819 y(help)47 b([-dms])f([)p
+Fj(pattern)p Ft(])630 2953 y Fu(Displa)m(y)40 b(helpful)e(information)h
 (ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h
-Fu(is)g(sp)s(eci\014ed,)630 2811 y Ft(help)28 b Fu(giv)m(es)i(detailed)
+Fu(is)g(sp)s(eci\014ed,)630 3063 y Ft(help)28 b Fu(giv)m(es)i(detailed)
 g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p
-Fu(,)g(otherwise)f(a)g(list)h(of)630 2920 y(the)h(builtins)e(is)i(prin)
-m(ted.)630 3056 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
-m(wing)h(meanings:)630 3218 y Ft(-d)384 b Fu(Displa)m(y)32
+Fu(,)g(otherwise)f(a)g(list)h(of)630 3173 y(the)h(builtins)e(is)i(prin)
+m(ted.)630 3306 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
+m(wing)h(meanings:)630 3465 y Ft(-d)384 b Fu(Displa)m(y)32
 b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630
-3381 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
+3623 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
 h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630
-3543 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
-(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3705 y Fu(The)f(return)f
+3781 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
+(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3940 y Fu(The)f(return)f
 (status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g
-Fr(pattern)p Fu(.)150 3867 y Ft(let)870 4003 y(let)47
+Fr(pattern)p Fu(.)150 4098 y Ft(let)870 4232 y(let)47
 b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630
-4139 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
+4366 y Fu(The)c Ft(let)g Fu(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 4248 y Fr(expression)31 b Fu(is)g(ev)-5
+b(Eac)m(h)630 4475 y Fr(expression)31 b Fu(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 4358 y(Arithmetic],)51
-b(page)46 b(89.)87 b(If)45 b(the)g(last)h Fr(expression)g
+(in)f(Section)i(6.5)g([Shell)630 4585 y(Arithmetic],)51
+b(page)46 b(92.)87 b(If)45 b(the)g(last)h Fr(expression)g
 Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630
-4468 y(otherwise)31 b(0)g(is)f(returned.)150 4630 y Ft(local)870
-4766 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
-Fj(value)p Ft(])e(...)630 4902 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
+4695 y(otherwise)31 b(0)g(is)f(returned.)150 4853 y Ft(local)870
+4987 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
+Fj(value)p Ft(])e(...)630 5121 y Fu(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 Fr(name)31
 b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p
-Fu(.)630 5011 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f
+Fu(.)630 5230 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f
 (the)h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59
-b Ft(local)36 b Fu(can)i(only)630 5121 y(b)s(e)j(used)h(within)f(a)i
+b Ft(local)36 b Fu(can)i(only)630 5340 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 Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630
-5230 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78
+b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)p
+eop end
+%%Page: 56 62
+TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(restricted)44
+b(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78
 b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f
-(shell)630 5340 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f
+(shell)630 408 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f
 (function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48
-b(shell)34 b(options)p eop end
-%%Page: 55 61
-TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(c)m(hanged)32
-b(using)e(the)i Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g
-(restored)h(to)g(their)f(original)630 408 y(v)-5 b(alues)25
-b(when)e(the)i(function)f(returns.)37 b(The)24 b(return)f(status)i(is)f
-(zero)i(unless)d Ft(local)g Fu(is)i(used)630 518 y(outside)k(a)f
-(function,)h(an)f(in)m(v)-5 b(alid)29 b Fr(name)k Fu(is)28
-b(supplied,)g(or)g Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5
-b(ariable.)150 681 y Ft(logout)870 817 y(logout)46 b([)p
-Fj(n)p Ft(])630 953 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i
-(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150
-1116 y Ft(mapfile)870 1252 y(mapfile)46 b([-d)h Fj(delim)p
-Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g
-Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 1362
-y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p
-Fj(array)p Ft(])630 1498 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e
-(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38
-b Fr(arra)m(y)p Fu(,)i(or)630 1607 y(from)28 b(\014le)h(descriptor)f
+b(shell)34 b(options)630 518 y(c)m(hanged)e(using)e(the)i
+Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g
+(their)f(original)630 628 y(v)-5 b(alues)25 b(when)e(the)i(function)f
+(returns.)37 b(The)24 b(return)f(status)i(is)f(zero)i(unless)d
+Ft(local)g Fu(is)i(used)630 737 y(outside)k(a)f(function,)h(an)f(in)m
+(v)-5 b(alid)29 b Fr(name)k Fu(is)28 b(supplied,)g(or)g
+Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5 b(ariable.)150
+887 y Ft(logout)870 1016 y(logout)46 b([)p Fj(n)p Ft(])630
+1146 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f
+Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 1295 y
+Ft(mapfile)870 1425 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h
+Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p
+Ft(])1061 1534 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
+1664 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
+Fu(,)i(or)630 1773 y(from)28 b(\014le)h(descriptor)f
 Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39
 b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630
-1717 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
+1883 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
 b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630
-1880 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f
+2032 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f
 Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110
-1989 y(rather)30 b(than)g(newline.)630 2152 y Ft(-n)384
-b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41
-b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630
-2315 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39
-b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f
-(is)g(0.)630 2477 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g
-Fr(coun)m(t)j Fu(lines)e(read.)630 2640 y Ft(-t)384 b
-Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g
-(newline\))f(from)g(eac)m(h)i(line)f(read.)630 2803 y
-Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f
-Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630
-2966 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33 b Fr(callbac)m(k)39
-b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p Fu(P)f(lines)h(are)g(read.)45
-b(The)31 b Ft(-c)g Fu(op-)1110 3075 y(tion)g(sp)s(eci\014es)f
-Fr(quan)m(tum)p Fu(.)630 3238 y Ft(-c)384 b Fu(Sp)s(ecify)30
-b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m
-(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 3401 y(If)36
-b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p
-Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36
-b Fr(callbac)m(k)44 b Fu(is)630 3510 y(ev)-5 b(aluated,)30
-b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g
-(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 3620 y(the)39
-b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e
-(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b
-Fu(is)630 3729 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g
-(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
-3866 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
+2142 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h
+Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110
+2252 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m
+(haracter.)630 2401 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g
+Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h
+(lines)e(are)h(copied.)630 2550 y Ft(-O)384 b Fu(Begin)31
+b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f
+Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630
+2700 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j
+Fu(lines)e(read.)630 2849 y Ft(-t)384 b Fu(Remo)m(v)m(e)32
+b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i
+(line)f(read.)630 2999 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g
+(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e
+(input.)630 3148 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b
+Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f
+Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110
+3258 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 3407
+y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f
+(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p
+Fu(.)630 3557 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g
+Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60
+b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 3666 y(ev)-5
+b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g
+(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630
+3776 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
+(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47
+b Fu(is)630 3885 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
+g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
+4015 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
 Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24
-b(assigning)630 3975 y(to)31 b(it.)630 4111 y Ft(mapfile)41
+b(assigning)630 4125 y(to)31 b(it.)630 4254 y Ft(mapfile)41
 b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5
 b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630
-4221 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
+4364 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
 b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38
 b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150
-4384 y Ft(printf)870 4520 y(printf)46 b([-v)h Fj(var)p
-Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4656
+4513 y Ft(printf)870 4643 y(printf)46 b([-v)h Fj(var)p
+Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4772
 y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k
 Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the)
-630 4765 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
+630 4882 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
 (the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5
-b(ariable)39 b Fr(v)-5 b(ar)630 4875 y Fu(rather)30 b(than)g(b)s(eing)g
-(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5011
+b(ariable)39 b Fr(v)-5 b(ar)630 4991 y Fu(rather)30 b(than)g(b)s(eing)g
+(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5121
 y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g
 (con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53
-b(plain)630 5121 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
+b(plain)630 5230 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
 (copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630
-5230 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
-g(the)g(standard)f(output,)i(and)f(format)630 5340 y(sp)s
-(eci\014cations,)j(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 Fr(argumen)m(t)p Fu(.)p
-eop end
-%%Page: 56 62
-TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(In)24
-b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e Fu(formats,)27
-b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630
-408 y(extensions:)630 596 y Ft(\045b)384 b Fu(Causes)38
+5340 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
+g(the)g(standard)f(output,)i(and)f(format)p eop end
+%%Page: 57 63
+TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 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 Fr(argumen)m(t)p Fu(.)630
+408 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
+Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630
+518 y(extensions:)630 690 y Ft(\045b)384 b Fu(Causes)38
 b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g
-(in)f(the)h(cor-)1110 706 y(resp)s(onding)31 b Fr(argumen)m(t)j
+(in)f(the)h(cor-)1110 800 y(resp)s(onding)31 b Fr(argumen)m(t)j
 Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j
-Fu(\(see)h(Section)g(4.2)1110 816 y([Bash)e(Builtins],)g(page)g(49\).)
-630 1003 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
+Fu(\(see)h(Section)g(4.2)1110 909 y([Bash)e(Builtins],)g(page)g(50\).)
+630 1082 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
 Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j
-Fu(in)d(a)i(format)1110 1113 y(that)e(can)g(b)s(e)e(reused)h(as)h
-(shell)f(input.)630 1301 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
-1410 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i
-(string)e(resulting)h(from)e(using)1110 1520 y Fr(datefm)m(t)45
+Fu(in)d(a)i(format)1110 1191 y(that)e(can)g(b)s(e)e(reused)h(as)h
+(shell)f(input.)630 1363 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
+1473 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i
+(string)e(resulting)h(from)e(using)1110 1583 y Fr(datefm)m(t)45
 b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74
-b(The)41 b(corresp)s(onding)1110 1630 y Fr(argumen)m(t)h
+b(The)41 b(corresp)s(onding)1110 1692 y Fr(argumen)m(t)h
 Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of)
-h(seconds)g(since)1110 1739 y(the)24 b(ep)s(o)s(c)m(h.)38
+h(seconds)g(since)1110 1802 y(the)24 b(ep)s(o)s(c)m(h.)38
 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24
 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110
-1849 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
+1911 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
 (time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110
-1958 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
+2021 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
 (ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110
-2068 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
-Ft(printf)f Fu(b)s(eha)m(vior.)630 2256 y(Argumen)m(ts)f(to)h
+2131 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
+Ft(printf)f Fu(b)s(eha)m(vior.)630 2303 y(Argumen)m(ts)f(to)h
 (non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e
-(language)j(constan)m(ts,)630 2365 y(except)22 b(that)g(a)g(leading)g
+(language)j(constan)m(ts,)630 2412 y(except)22 b(that)g(a)g(leading)g
 (plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g
-(leading)h(c)m(haracter)h(is)630 2475 y(a)i(single)g(or)f(double)h
+(leading)h(c)m(haracter)h(is)630 2522 y(a)i(single)g(or)f(double)h
 (quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5
 b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630
-2624 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i
+2663 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i
 (consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44
-b(If)30 b(the)i Fr(for-)630 2733 y(mat)c Fu(requires)e(more)g
+b(If)30 b(the)i Fr(for-)630 2772 y(mat)c Fu(requires)e(more)g
 Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f
-(sp)s(eci\014cations)630 2843 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g
+(sp)s(eci\014cations)630 2882 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 2952 y(return)29 b(v)-5
+s(een)g(supplied.)38 b(The)630 2992 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
-3140 y Ft(read)870 3289 y(read)47 b([-ers])f([-a)h Fj(aname)p
+3164 y Ft(read)870 3305 y(read)47 b([-ers])f([-a)h Fj(aname)p
 Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h
-Fj(nchars)p Ft(])1061 3399 y([-N)g Fj(nchars)p Ft(])f([-p)h
+Fj(nchars)p Ft(])1061 3414 y([-N)g Fj(nchars)p Ft(])f([-p)h
 Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p
-Ft(])g([)p Fj(name)f Ft(...)o(])630 3547 y Fu(One)38
+Ft(])g([)p Fj(name)f Ft(...)o(])630 3555 y Fu(One)38
 b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i
-(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3657 y(plied)34
+(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3665 y(plied)34
 b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m
 (to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630
-3767 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(30,)j
+3774 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(31,)j
 (and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630
-3876 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)
+3884 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)
 g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32
-b(there)h(are)g(more)630 3986 y(w)m(ords)39 b(than)g(names,)j(the)e
+b(there)h(are)g(more)630 3994 y(w)m(ords)39 b(than)g(names,)j(the)e
 (remaining)f(w)m(ords)g(and)g(their)h(in)m(terv)m(ening)g(delimiters)h
-(are)630 4095 y(assigned)29 b(to)h(the)g(last)g Fr(name)p
+(are)630 4103 y(assigned)29 b(to)h(the)g(last)g Fr(name)p
 Fu(.)40 b(If)29 b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g
-(the)g(input)g(stream)630 4205 y(than)35 b(names,)i(the)e(remaining)h
+(the)g(input)g(stream)630 4213 y(than)35 b(names,)i(the)e(remaining)h
 (names)f(are)h(assigned)f(empt)m(y)h(v)-5 b(alues.)56
-b(The)34 b(c)m(haracters)630 4315 y(in)e(the)h(v)-5 b(alue)33
+b(The)34 b(c)m(haracters)630 4322 y(in)e(the)h(v)-5 b(alue)33
 b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f
-(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4424
+(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4432
 y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed)
 g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630
-4534 y(Splitting],)38 b(page)f(30\).)60 b(The)35 b(bac)m(kslash)i(c)m
+4542 y(Splitting],)38 b(page)f(31\).)60 b(The)35 b(bac)m(kslash)i(c)m
 (haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m
-(e)h(an)m(y)630 4643 y(sp)s(ecial)i(meaning)g(for)f(the)g(next)h(c)m
+(e)h(an)m(y)630 4651 y(sp)s(ecial)i(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 4753 y(names)c(are)h(supplied,)f(the)h(line)g(read)f
+b(If)39 b(no)630 4761 y(names)c(are)h(supplied,)f(the)h(line)g(read)f
 (is)g(assigned)h(to)g(the)f(v)-5 b(ariable)36 b Ft(REPLY)p
-Fu(.)54 b(The)35 b(exit)630 4862 y(status)f(is)f(zero,)i(unless)e
+Fu(.)54 b(The)35 b(exit)630 4870 y(status)f(is)f(zero,)i(unless)e
 (end-of-\014le)h(is)f(encoun)m(tered,)i Ft(read)e Fu(times)h(out)f
-(\(in)h(whic)m(h)f(case)630 4972 y(the)g(status)h(is)f(greater)i(than)e
+(\(in)h(whic)m(h)f(case)630 4980 y(the)g(status)h(is)f(greater)i(than)e
 (128\),)j(a)e(v)-5 b(ariable)34 b(assignmen)m(t)g(error)f(\(suc)m(h)g
-(as)g(assigning)630 5082 y(to)38 b(a)f(readonly)g(v)-5
+(as)g(assigning)630 5089 y(to)38 b(a)f(readonly)g(v)-5
 b(ariable\))38 b(o)s(ccurs,)h(or)e(an)g(in)m(v)-5 b(alid)38
 b(\014le)f(descriptor)g(is)g(supplied)e(as)j(the)630
-5191 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h
+5199 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h
 (supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)p
 eop end
-%%Page: 57 63
-TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-a)30
+%%Page: 58 64
+TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-a)30
 b Fj(aname)114 b Fu(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
 408 y Fr(aname)p Fu(,)29 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 Fr(aname)34
 b Fu(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30
 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630
-667 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
+671 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
 Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110
-777 y(rather)30 b(than)g(newline.)630 927 y Ft(-e)384
-b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50
-b(page)45 b(104\))i(is)1110 1036 y(used)37 b(to)i(obtain)g(the)f(line.)
-65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110
-1146 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j
-(editing)e(settings.)630 1295 y Ft(-i)f Fj(text)162 b
-Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j
-Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 1405 y(editing)31
-b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 1554
-y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f
-Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110
-1664 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f(honors)g(a)h
-(delimiter)g(if)f(few)m(er)h(than)1110 1773 y Fr(nc)m(hars)d
-Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630
-1923 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j
-(reading)e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than)
-1110 2032 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g
-(unless)f(EOF)h(is)g(encoun)m(tered)g(or)1110 2142 y
-Ft(read)f Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m
-(tered)g(in)f(the)g(input)g(are)1110 2252 y(not)g(treated)h(sp)s
-(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m
-(til)i Fr(nc)m(hars)1110 2361 y Fu(c)m(haracters)26 b(are)f(read.)38
-b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e
-Ft(IFS)p Fu(;)1110 2471 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5
+781 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h
+Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110
+891 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)630
+1044 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f
+(Line)h(Editing],)50 b(page)45 b(107\))i(is)1110 1154
+y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39
+b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110
+1263 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k
+(editing)d(settings,)j(but)c(uses)1110 1373 y(Readline's)31
+b(default)g(\014lename)f(completion.)630 1526 y Ft(-i)g
+Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g
+(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110
+1636 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630
+1789 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j
+(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m
+(aiting)1110 1899 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f
+(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 2008
+y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g
+(delimiter.)630 2162 y Ft(-N)g Fj(nchars)66 b Ft(read)39
+b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h
+Fu(c)m(haracters)f(rather)d(than)1110 2271 y(w)m(aiting)32
+b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun)
+m(tered)g(or)1110 2381 y Ft(read)f Fu(times)i(out.)43
+b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g
+(are)1110 2491 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause)
+g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110
+2600 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24
+b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e
+Ft(IFS)p Fu(;)1110 2710 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5
 b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read)
-1110 2580 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
-(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2730 y
+1110 2819 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
+(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2973 y
 Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p
 Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)
-1110 2839 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 2949 y(from)30
-b(a)h(terminal.)630 3098 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
+1110 3082 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 3192 y(from)30
+b(a)h(terminal.)630 3345 y Ft(-r)384 b Fu(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 3208 y(The)30 b(bac)m(kslash)i(is)f(considered)g
+(c)m(haracter.)1110 3455 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
-3318 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 3467 y Ft(-s)384
-b Fu(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 3577
-y(ec)m(ho)s(ed.)630 3726 y Ft(-t)i Fj(timeout)1110 3836
-y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i
-(if)g(a)g(complete)h(line)f(of)1110 3945 y(input)26 b(\(or)h(a)g(sp)s
-(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g
-(within)f Fr(time-)1110 4055 y(out)37 b Fu(seconds.)53
-b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d
-(with)h(a)h(fractional)1110 4164 y(p)s(ortion)29 b(follo)m(wing)h(the)f
-(decimal)h(p)s(oin)m(t.)40 b(This)29 b(option)g(is)g(only)g(e\013ectiv)
-m(e)j(if)1110 4274 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h
-(terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110
-4384 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g
-(\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110
-4493 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)
-m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p
-Fu(.)1110 4603 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e
-Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110
-4712 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g
+3565 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f
+(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 3718
+y Ft(-s)384 b Fu(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
+3828 y(ec)m(ho)s(ed.)630 3981 y Ft(-t)i Fj(timeout)1110
+4091 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f
+(failure)i(if)g(a)g(complete)h(line)f(of)1110 4200 y(input)26
+b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h
+(is)f(not)g(read)g(within)f Fr(time-)1110 4310 y(out)37
+b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)
+m(um)m(b)s(er)d(with)h(a)h(fractional)1110 4419 y(p)s(ortion)29
+b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29
+b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 4529
+y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e
+(or)g(other)f(sp)s(ecial)i(\014le;)1110 4639 y(it)31
+b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42
+b(If)30 b Ft(read)g Fu(times)h(out,)1110 4748 y Ft(read)d
+Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s
+(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110
+4858 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f
+(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110
+4967 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g
 (input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110
-4822 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
-b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 4932
-y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5081
+5077 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
+b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 5187
+y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5340
 y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h
-Fr(fd)p Fu(.)150 5230 y Ft(readarray)870 5340 y(readarray)45
-b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h
-Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])f([-t])h([-u)g
-Fj(fd)p Ft(])p eop end
-%%Page: 58 64
-TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(58)1061 299 y
-Ft([-C)47 b Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p
-Fj(array)p Ft(])630 433 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e
-(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38
-b Fr(arra)m(y)p Fu(,)i(or)630 543 y(from)30 b(\014le)g(descriptor)h
-Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
-677 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 836
-y Ft(source)870 971 y(source)46 b Fj(filename)630 1105
+Fr(fd)p Fu(.)p eop end
+%%Page: 59 65
+TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(59)150 299 y Ft(readarray)870
+408 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p
+Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061
+518 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
+650 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
+Fu(,)i(or)630 760 y(from)30 b(\014le)g(descriptor)h Fr(fd)i
+Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
+892 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 1047
+y Ft(source)870 1179 y(source)46 b Fj(filename)630 1312
 y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g
-([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)150 1264
-y Ft(type)870 1398 y(type)47 b([-afptP])e([)p Fj(name)i
-Ft(...)o(])630 1533 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
+([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)150 1467
+y Ft(type)870 1599 y(type)47 b([-afptP])e([)p Fj(name)i
+Ft(...)o(])630 1731 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
 Fu(,)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 1642 y(name.)630 1777 y(If)g(the)g
+g(used)f(as)i(a)f(command)630 1841 y(name.)630 1973 y(If)g(the)g
 Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g
 (w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p
-Fu(',)630 1886 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
+Fu(',)630 2083 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
 Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h
 Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630
-1996 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g
+2192 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
-Fr(name)40 b Fu(is)35 b(not)630 2105 y(found,)29 b(then)h(nothing)h(is)
+Fr(name)40 b Fu(is)35 b(not)630 2302 y(found,)29 b(then)h(nothing)h(is)
 f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630
-2240 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
+2434 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
 Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g
-(that)h(w)m(ould)630 2349 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
+(that)h(w)m(ould)630 2544 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
 Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630
-2484 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
+2676 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
 (eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h
-(return)630 2593 y(`)p Ft(file)p Fu('.)630 2728 y(If)f(a)g(command)g
+(return)630 2785 y(`)p Ft(file)p Fu('.)630 2918 y(If)f(a)g(command)g
 (is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f
-(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 2837
+(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 3027
 y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g
-Ft($PATH)p Fu(.)630 2971 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
+Ft($PATH)p Fu(.)630 3160 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
 (used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m
-(tain)i(an)d(executable)630 3081 y(named)32 b Fr(\014le)p
+(tain)i(an)d(executable)630 3269 y(named)32 b Fr(\014le)p
 Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f
-(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3191 y(not)d(also)g
-(used.)630 3325 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
+(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3379 y(not)d(also)g
+(used.)630 3511 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
 Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j
-(functions,)f(as)g(with)630 3435 y(the)h Ft(command)d
-Fu(builtin.)630 3569 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h
+(functions,)f(as)g(with)630 3621 y(the)h Ft(command)d
+Fu(builtin.)630 3753 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h
 (of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h
-(not)630 3678 y(found.)150 3838 y Ft(typeset)870 3972
+(not)630 3862 y(found.)150 4017 y Ft(typeset)870 4150
 y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p
-Ft([=)p Fj(value)p Ft(])d(...)o(])630 4106 y Fu(The)31
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 4282 y Fu(The)31
 b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i
-(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4216
+(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4391
 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150
-4375 y Ft(ulimit)870 4509 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c
-([)p Fj(limit)p Ft(])630 4644 y(ulimit)25 b Fu(pro)m(vides)h(con)m
+4546 y Ft(ulimit)870 4679 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c
+([)p Fj(limit)p Ft(])630 4811 y(ulimit)25 b Fu(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 4753
+b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4921
 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
-4863 y(as)i(follo)m(ws:)630 5022 y Ft(-S)384 b Fu(Change)30
+5030 y(as)i(follo)m(ws:)630 5185 y Ft(-S)384 b Fu(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 5181 y Ft(-H)384 b Fu(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
-5340 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s
-(orted.)p eop end
-%%Page: 59 65
-TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y Ft(-b)384
-b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e(size.)630
-462 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)g(\014les)f
-(created.)630 625 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)
-g(pro)s(cess's)f(data)h(segmen)m(t.)630 788 y Ft(-e)384
-b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p
-Ft(")p Fu(nice)p Ft(")p Fu(\).)630 951 y Ft(-f)384 b
-Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g
-(shell)h(and)f(its)h(c)m(hildren.)630 1114 y Ft(-i)384
+(resource.)630 5340 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)
+g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)p
+eop end
+%%Page: 60 66
+TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-a)384
+b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630
+454 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e
+(size.)630 610 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)
+g(\014les)f(created.)630 765 y Ft(-d)384 b Fu(The)30
+b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630
+921 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)
+f(\()p Ft(")p Fu(nice)p Ft(")p Fu(\).)630 1076 y Ft(-f)384
+b Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)
+g(shell)h(and)f(its)h(c)m(hildren.)630 1232 y Ft(-i)384
 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e
-(signals.)630 1277 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s
+(signals.)630 1387 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s
 (er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630
-1440 y Ft(-l)384 b Fu(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 1603
+1543 y Ft(-l)384 b Fu(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 1698
 y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g
-(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1713
-y(limit\).)630 1876 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s
+(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1808
+y(limit\).)630 1963 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s
 (er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110
-1985 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)
-630 2149 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
-2312 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
-(ytes)g(in)f(POSIX)f(message)j(queues.)630 2475 y Ft(-r)384
+2073 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)
+630 2228 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
+2384 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
+(ytes)g(in)f(POSIX)f(message)j(queues.)630 2539 y Ft(-r)384
 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8
-b(.)630 2638 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.)
-630 2801 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g
-(time)h(in)f(seconds.)630 2964 y Ft(-u)384 b Fu(The)30
+b(.)630 2695 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.)
+630 2850 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g
+(time)h(in)f(seconds.)630 3005 y Ft(-u)384 b Fu(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 3127 y Ft(-v)384
+b(ailable)33 b(to)e(a)f(single)i(user.)630 3161 y Ft(-v)384
 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5
-b(ailable)44 b(to)e(the)g(shell,)1110 3236 y(and,)30
+b(ailable)44 b(to)e(the)g(shell,)1110 3271 y(and,)30
 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
-3399 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(\014le)f(lo)s(c)m(ks.)630 3562 y Ft(-P)384 b Fu(The)30
+3426 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(\014le)f(lo)s(c)m(ks.)630 3581 y Ft(-P)384 b Fu(The)30
 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630
-3726 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(threads.)630 3889 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h
+3737 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(threads.)630 3892 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h
 Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f
-(v)-5 b(alue)37 b(of)g(the)630 3998 y(sp)s(eci\014ed)c(resource.)51
+(v)-5 b(alue)37 b(of)g(the)630 4002 y(sp)s(eci\014ed)c(resource.)51
 b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34
 b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e
-Fu(stand)630 4108 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
+Fu(stand)630 4112 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
 (curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8
-b(.)48 b(A)630 4217 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b)
+b(.)48 b(A)630 4221 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b)
 m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g
-(limit)630 4327 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5
+(limit)630 4331 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5
 b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43
-b(the)d(curren)m(t)630 4437 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit)
+b(the)d(curren)m(t)630 4440 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit)
 h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f
-(the)h Ft(-H)f Fu(option)630 4546 y(is)h(supplied.)39
+(the)h Ft(-H)f Fu(option)630 4550 y(is)h(supplied.)39
 b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g
 Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630
-4656 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31
+4660 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31
 b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46
-b(V)-8 b(alues)630 4765 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e
+b(V)-8 b(alues)630 4769 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e
 (except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h
-Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4875 y(units)h(of)g(512-b)m(yte)j
+Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4879 y(units)h(of)g(512-b)m(yte)j
 (blo)s(c)m(ks;)e Ft(-P)p Fu(,)f Ft(-T)p Fu(,)h Ft(-b)p
 Fu(,)f Ft(-k)p Fu(,)g Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)h(are)f
-(unscaled)g(v)-5 b(alues;)630 4984 y(and,)31 b(when)f(in)g
+(unscaled)g(v)-5 b(alues;)630 4988 y(and,)31 b(when)f(in)g
 Fm(posix)g Fu(Mo)s(de)h(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s
-(de],)h(page)h(96\),)h Ft(-c)630 5094 y Fu(and)d Ft(-f)p
+(de],)h(page)h(99\),)h Ft(-c)630 5098 y Fu(and)d Ft(-f)p
 Fu(,)g(whic)m(h)g(are)h(in)f(512-b)m(yte)i(incremen)m(ts.)630
 5230 y(The)i(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
 5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)p
 eop end
-%%Page: 60 66
-TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(60)150 299 y Ft(unalias)870
+%%Page: 61 67
+TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(61)150 299 y Ft(unalias)870
 428 y(unalias)46 b([-a])g([)p Fj(name)h Ft(...)g(])630
 558 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f Fr(name)k Fu(from)39
 b(the)i(list)f(of)g(aliases.)71 b(If)40 b Ft(-a)f Fu(is)h(supplied,)h
 (all)g(aliases)h(are)630 668 y(remo)m(v)m(ed.)g(Aliases)31
-b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(90.)150
+b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(93.)150
 898 y Fs(4.3)68 b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150
 1118 y Fk(4.3.1)63 b(The)41 b(Set)g(Builtin)150 1265
 y Fu(This)35 b(builtin)h(is)g(so)g(complicated)i(that)f(it)f(deserv)m
@@ -12524,12 +12693,12 @@ Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not)
 5011 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
 (and)f(eac)m(h)h(subshell)f(en-)1110 5121 y(vironmen)m(t)j(separately)i
 (\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110
-5230 y(vironmen)m(t],)i(page)f(37\),)i(and)d(ma)m(y)h(cause)f
+5230 y(vironmen)m(t],)i(page)f(39\),)i(and)d(ma)m(y)h(cause)f
 (subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 5340 y(cuting)d(all)g
 (the)g(commands)f(in)g(the)g(subshell.)p eop end
-%%Page: 61 67
-TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y(If)41
+%%Page: 62 68
+TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y(If)41
 b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f
 (a)g(con)m(text)1110 408 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g
 (ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110
@@ -12552,7 +12721,7 @@ Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g
 1737 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 1847 y(command)30
 b(name.)630 1998 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g
-(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(100\).)41
+(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(103\).)41
 b(All)1110 2107 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
 (cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110
 2217 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
@@ -12568,7 +12737,7 @@ Fu(.)1110 3258 y Ft(braceexpand)1590 3367 y Fu(Same)f(as)h
 Ft(-B)p Fu(.)1110 3518 y Ft(emacs)240 b Fu(Use)25 b(an)f
 Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g
 (Chapter)e(8)1590 3628 y([Command)33 b(Line)g(Editing],)h(page)h
-(104\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in)
+(107\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in)
 m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3888
 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110
 4039 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110
@@ -12577,14 +12746,14 @@ Fu(.)1110 4450 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p
 Fu(.)1110 4600 y Ft(histexpand)1590 4710 y Fu(Same)f(as)h
 Ft(-H)p Fu(.)1110 4861 y Ft(history)144 b Fu(Enable)39
 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1)
-1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(137.)60
+1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(141.)60
 b(This)36 b(option)h(is)f(on)1590 5080 y(b)m(y)30 b(default)h(in)f(in)m
 (teractiv)m(e)j(shells.)1110 5230 y Ft(ignoreeof)1590
 5340 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on)
 e(reading)i(EOF.)p eop end
-%%Page: 62 68
-TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y
+%%Page: 63 69
+TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y
 Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110
 457 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110
 615 y Ft(noclobber)1590 725 y Fu(Same)f(as)h Ft(-C)p
@@ -12605,7 +12774,7 @@ b(of)1590 2101 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h
 (vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590
 2588 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f
 Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2698 y(dard)32
-b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(96\).)
+b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(99\).)
 1590 2807 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m
 (v)m(e)g(as)g(a)f(strict)h(su-)1590 2917 y(p)s(erset)30
 b(of)h(that)f(standard.)1110 3075 y Ft(privileged)1590
@@ -12640,9 +12809,9 @@ b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110
 5340 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g
 (error)g(when)f(p)s(erforming)g(parameter)i(expansion.)p
 eop end
-%%Page: 63 69
-TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y(An)28
+%%Page: 64 70
+TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y(An)28
 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e(standard)g
 (error,)h(and)f(a)h(non-)1110 408 y(in)m(teractiv)m(e)k(shell)e(will)g
 (exit.)630 568 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i
@@ -12658,7 +12827,7 @@ b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h
 (command)g(and)f(its)i(expanded)1110 1275 y(argumen)m(ts.)630
 1435 y Ft(-B)384 b Fu(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 1544
-y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m
+y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m
 (y)h(default.)630 1704 y Ft(-C)384 b Fu(Prev)m(en)m(t)25
 b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p
 Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110
@@ -12670,7 +12839,7 @@ b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.)
 (in)g(suc)m(h)g(cases.)630 2351 y Ft(-H)384 b Fu(Enable)38
 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h
 (Section)h(9.3)f([History)g(In-)1110 2461 y(teraction],)g(page)d
-(139\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m
+(143\).)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 2570 y(shells.)630 2730 y Ft(-P)384
 b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g
 (when)f(p)s(erforming)g(commands)1110 2839 y(suc)m(h)29
@@ -12699,510 +12868,559 @@ b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f
 i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p
 Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p
 Ft(-)p Fu('.)p eop end
-%%Page: 64 70
-TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-)432
+%%Page: 65 71
+TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(-)432
 b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e
 Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33
 b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33
 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518
 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e
 (p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630
-801 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p
+775 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p
 Fu(')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 910 y(also)36 b(b)s(e)f(used)f(up)s(on)g
+b(The)27 b(options)h(can)630 884 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
-1020 y(found)29 b(in)h Ft($-)p Fu(.)630 1161 y(The)43
+994 y(found)29 b(in)h Ft($-)p Fu(.)630 1122 y(The)43
 b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g
-(parameters)g(and)f(are)h(assigned,)j(in)630 1271 y(order,)30
+(parameters)g(and)f(are)h(assigned,)j(in)630 1232 y(order,)30
 b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42
 b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f
-Fu(is)g(set)h(to)g(N.)630 1412 y(The)f(return)f(status)i(is)f(alw)m(a)m
+Fu(is)g(set)h(to)g(N.)630 1360 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 1625 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150
-1772 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h
+(supplied.)150 1548 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150
+1695 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h
 (additional)f(shell)f(optional)i(b)s(eha)m(vior.)150
-1952 y Ft(shopt)870 2093 y(shopt)46 b([-pqsu])g([-o])h([)p
-Fj(optname)e Ft(...])630 2234 y Fu(T)-8 b(oggle)37 b(the)e(v)-5
+1842 y Ft(shopt)870 1970 y(shopt)46 b([-pqsu])g([-o])h([)p
+Fj(optname)e Ft(...])630 2099 y Fu(T)-8 b(oggle)37 b(the)e(v)-5
 b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s
-(eha)m(vior.)55 b(The)34 b(settings)630 2344 y(can)24
+(eha)m(vior.)55 b(The)34 b(settings)630 2208 y(can)24
 b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f
 Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26
-b(with)630 2453 y(the)k Ft(-o)f Fu(option)i(to)f(the)g
+b(with)630 2318 y(the)k Ft(-o)f Fu(option)i(to)f(the)g
 Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)630 2563 y(page)i(60\).)45 b(With)32 b(no)f(options,)h(or)g
+(Builtin],)630 2427 y(page)i(61\).)45 b(With)32 b(no)f(options,)h(or)g
 (with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g
-(options)630 2673 y(is)j(displa)m(y)m(ed,)h(with)f(an)f(indication)i
-(of)e(whether)g(or)h(not)g(eac)m(h)h(is)e(set.)57 b(The)35
-b Ft(-p)g Fu(option)630 2782 y(causes)i(output)e(to)i(b)s(e)e(displa)m
-(y)m(ed)i(in)f(a)g(form)g(that)h(ma)m(y)f(b)s(e)g(reused)f(as)h(input.)
-57 b(Other)630 2892 y(options)31 b(ha)m(v)m(e)g(the)g(follo)m(wing)h
-(meanings:)630 3065 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f
-Fr(optname)p Fu(.)630 3238 y Ft(-u)384 b Fu(Disable)31
-b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3411 y
+(options)630 2537 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h
+(of)g(whether)e(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e
+Fr(optnames)38 b Fu(are)630 2647 y(supplied,)25 b(the)g(output)g(is)g
+(restricted)g(to)h(those)g(options.)39 b(The)24 b Ft(-p)h
+Fu(option)g(causes)g(output)630 2756 y(to)30 b(b)s(e)f(displa)m(y)m(ed)
+g(in)g(a)h(form)f(that)g(ma)m(y)h(b)s(e)f(reused)f(as)i(input.)39
+b(Other)29 b(options)g(ha)m(v)m(e)i(the)630 2866 y(follo)m(wing)h
+(meanings:)630 3013 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f
+Fr(optname)p Fu(.)630 3160 y Ft(-u)384 b Fu(Disable)31
+b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3307 y
 Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e
-(status)i(indicates)h(whether)e(the)1110 3520 y Fr(optname)37
+(status)i(indicates)h(whether)e(the)1110 3417 y Fr(optname)37
 b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h
 Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110
-3630 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f
-(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3740
-y(zero)i(otherwise.)630 3913 y Ft(-o)384 b Fu(Restricts)22
+3527 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f
+(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3636
+y(zero)i(otherwise.)630 3784 y Ft(-o)384 b Fu(Restricts)22
 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22
 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110
-4022 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g
-([The)e(Set)g(Builtin],)i(page)f(60\).)630 4195 y(If)e(either)i
+3893 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g
+([The)e(Set)g(Builtin],)i(page)f(61\).)630 4040 y(If)e(either)i
 Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35
 b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630
-4305 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m
-(ely)-8 b(.)630 4446 y(Unless)30 b(otherwise)h(noted,)g(the)g
+4150 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m
+(ely)-8 b(.)630 4278 y(Unless)30 b(otherwise)h(noted,)g(the)g
 Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32
-b(b)m(y)e(default.)630 4587 y(The)d(return)f(status)i(when)f(listing)h
+b(b)m(y)e(default.)630 4407 y(The)d(return)f(status)i(when)f(listing)h
 (options)g(is)f(zero)i(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g
-(non-)630 4697 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f
+(non-)630 4516 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
-4806 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5
-b(alid)30 b(shell)h(option.)630 4948 y(The)f(list)h(of)f
-Ft(shopt)f Fu(options)i(is:)630 5121 y Ft(autocd)192
+4626 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5
+b(alid)30 b(shell)h(option.)630 4754 y(The)f(list)h(of)f
+Ft(shopt)f Fu(options)i(is:)630 4902 y Ft(assoc_expand_once)1110
+5011 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5
+b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110
+5121 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5
+b(aluation,)28 b(while)e(executing)1110 5230 y(builtins)c(that)i(can)f
+(p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g
+(executing)1110 5340 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i
+(dereferencing.)p eop end
+%%Page: 66 72
+TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(autocd)192
 b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h
-(a)f(directory)h(is)f(executed)1110 5230 y(as)j(if)f(it)h(w)m(ere)f
-(the)h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40
-b(This)29 b(option)g(is)h(only)1110 5340 y(used)g(b)m(y)g(in)m
-(teractiv)m(e)j(shells.)p eop end
-%%Page: 65 71
-TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(cdable_vars)1110
-408 y Fu(If)34 b(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f
-Ft(cd)f Fu(builtin)h(command)f(that)i(is)f(not)1110 518
-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 628
-y(the)g(directory)f(to)i(c)m(hange)f(to.)630 792 y Ft(cdspell)144
-b Fu(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 Ft(cd)1110 902
-y Fu(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
-1011 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47
+(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the)
+h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29
+b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j
+(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i
+(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i
+(is)f(not)1110 902 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 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630
+1176 y Ft(cdspell)144 b Fu(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
+Ft(cd)1110 1285 y Fu(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
+1395 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 1121 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 1230
+b(If)42 b(a)1110 1504 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 1614
 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 1395 y Ft(checkhash)1110
-1504 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
-(command)f(found)g(in)g(the)h(hash)f(table)1110 1614
+(teractiv)m(e)k(shells.)630 1778 y Ft(checkhash)1110
+1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
+(command)f(found)g(in)g(the)h(hash)f(table)1110 1998
 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 1724
+b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2107
 y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630
-1888 y Ft(checkjobs)1110 1998 y Fu(If)d(set,)i(Bash)e(lists)h(the)g
+2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g
 (status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)
-1110 2107 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72
+1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72
 b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110
-2217 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
-(exit)g(is)g(attempted)h(without)e(an)1110 2326 y(in)m(terv)m(ening)d
-(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(100\).)40
-b(The)1110 2436 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
-(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2600 y Ft(checkwinsize)1110
-2710 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j
-(after)f(eac)m(h)g(command)f(and,)j(if)1110 2819 y(necessary)-8
-b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Ft(LINES)e
-Fu(and)g Ft(COLUMNS)p Fu(.)630 2984 y Ft(cmdhist)144
+2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
+(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d
+(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(103\).)40
+b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
+(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110
+3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h
+(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203
+y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62
+b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f
+Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g
+(enabled)f(b)m(y)g(default.)630 3477 y Ft(cmdhist)144
 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f
-(of)g(a)h(m)m(ultiple-line)g(command)1110 3093 y(in)c(the)g(same)g
+(of)g(a)h(m)m(ultiple-line)g(command)1110 3587 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 3203 y(commands.)630
-3367 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s
-(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect)
-1110 3477 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h
-(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3587
+(re-editing)g(of)f(m)m(ulti-line)1110 3696 y(commands.)79
+b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g
+(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h
+(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110
+3915 y(F)-8 b(acilities],)34 b(page)d(141\).)630 4080
+y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)
+m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect)1110
+4189 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h
+(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 4299
 y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e
-(comparison)g(when)f(using)1110 3696 y(the)31 b Ft([[)e
+(comparison)g(when)f(using)1110 4408 y(the)31 b Ft([[)e
 Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p
 Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110
-3806 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e
-(strcmp\(3\);)i(bash-4.1)g(and)1110 3915 y(later)e(use)f(the)h(curren)m
+4518 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e
+(strcmp\(3\);)i(bash-4.1)g(and)1110 4628 y(later)e(use)f(the)h(curren)m
 (t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630
-4080 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s
+4792 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s
 (eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect)
-1110 4189 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g
-(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 4299
+1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g
+(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011
 y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s
 (erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110
-4408 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24
+5121 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24
 b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110
-4518 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h
-(terminates)g(due)e(to)i(an)1110 4628 y(in)m(terrupt.)630
-4792 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s
-(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)
-1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g
-(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011
-y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s
-(erators)f(\(see)i(description)e(of)h Ft(compat31)p Fu(\))e(and)1110
-5121 y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)
-64 b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 5230 y(later)24
-b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i
-(the)e(in)m(terrupt;)i(previous)1110 5340 y(v)m(ersions)31
-b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)p
+5230 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h
+(terminates)g(due)e(to)i(an)1110 5340 y(in)m(terrupt.)p
 eop end
-%%Page: 66 72
-TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(compat41)96
-b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g Fm(posix)g Fu(mo)s(de,)i
-(treats)f(a)g(single)h(quote)f(in)f(a)h(double-)1110
-408 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s(ecial)f(c)m
-(haracter.)90 b(The)45 b(single)1110 518 y(quotes)34
-b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e(and)g(the)h
-(c)m(haracters)h(b)s(et)m(w)m(een)1110 628 y(the)40 b(single)g(quotes)g
-(are)g(considered)g(quoted.)69 b(This)38 b(is)i(the)g(b)s(eha)m(vior)g
-(of)1110 737 y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69
+%%Page: 67 73
+TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(compat40)96
+b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i
+(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110
+408 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f
+(using)h(the)g Ft([[)g Fu(conditional)1110 518 y(command's)28
+b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s(erators)f(\(see)i
+(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 628
+y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)64
+b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 737 y(later)24
+b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i
+(the)e(in)m(terrupt;)i(previous)1110 847 y(v)m(ersions)31
+b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)630
+1003 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g
+Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in)f(a)h
+(double-)1110 1113 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s
+(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 1223
+y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e
+(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 1332
+y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69
+b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 1442
+y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69
 b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110
-847 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630
-998 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s
+1551 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630
+1708 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s
 (cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110
-1107 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5
-b(al.)630 1258 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g
+1817 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5
+b(al.)630 1974 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g
 (not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f
-(made)1110 1367 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i
-(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 1477
+(made)1110 2084 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i
+(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 2193
 y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g
-(non-fatal)i(errors)d(that)i(cause)1110 1587 y(the)28
+(non-fatal)i(errors)d(that)i(cause)1110 2303 y(the)28
 b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f
-(is)h(to)g(mak)m(e)g(them)1110 1696 y(fatal)42 b(errors)e(that)i(cause)
+(is)h(to)g(mak)m(e)g(them)1110 2412 y(fatal)42 b(errors)e(that)i(cause)
 f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110
-1806 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g
+2522 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g
 (executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110
-1915 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g
-(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2066
-y Ft(complete_fullquote)1110 2176 y Fu(If)i(set,)g(Bash)h(quotes)f(all)
-h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110
-2285 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43
-b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 2395
-y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g(sign)g(from)f
-(the)h(set)g(of)f(c)m(haracters)1110 2504 y(that)f(will)g(b)s(e)f
-(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i(metac)m(har-)
-1110 2614 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5
-b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.)
-1110 2724 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5
-b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110
-2833 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)
-g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 2943
+2632 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g
+(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2788
+y Ft(compat44)96 b Fu(If)33 b(set,)i(Bash)f(sa)m(v)m(es)h(the)e(p)s
+(ositional)i(parameters)f(to)g(BASH)p 3264 2788 28 4
+v 40 w(AR)m(GV)h(and)1110 2898 y(BASH)p 1367 2898 V 40
+w(AR)m(GC)k(b)s(efore)e(they)i(are)f(used,)i(regardless)e(of)g(whether)
+g(or)g(not)1110 3007 y(extended)30 b(debugging)h(mo)s(de)f(is)g
+(enabled.)630 3164 y Ft(complete_fullquote)1110 3273
+y Fu(If)h(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e
+(\014lenames)g(and)g(direc-)1110 3383 y(tory)g(names)f(when)g(p)s
+(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m
+(es)1110 3493 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g
+(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3602
+y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f
+(these)i(metac)m(har-)1110 3712 y(acters)29 b(app)s(ear)e(in)g(shell)h
+(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e
+(completed.)1110 3821 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)
+-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110
+3931 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)
+g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 4041
 y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41
 b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110
-3052 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
-(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 3162
+4150 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
+(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4260
 y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g
-(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 3271 y(through)30
-b(4.2.)630 3422 y Ft(direxpand)1110 3532 y Fu(If)k(set,)i(Bash)f
+(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4369 y(through)30
+b(4.2.)630 4526 y Ft(direxpand)1110 4635 y Fu(If)k(set,)i(Bash)f
 (replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g
-(ex-)1110 3641 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
-(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 3751
+(ex-)1110 4745 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
+(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4855
 y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38
-b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 3861
+b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4964
 y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630
-4011 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s
+5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s
 (elling)g(correction)g(on)g(directory)g(names)f(during)1110
-4121 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g
-(initially)h(supplied)e(do)s(es)h(not)1110 4230 y(exist.)630
-4381 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g
-(\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 b(in)27
-b(the)h(results)g(of)1110 4491 y(\014lename)j(expansion.)630
-4641 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m
-(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute)
-1110 4751 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)
-h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110
-4861 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e
-Ft(exec)f Fu(fails.)630 5011 y Ft(expand_aliases)1110
-5121 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b)
-s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 5230 y(tion)38
-b(6.6)h([Aliases],)j(page)d(90.)64 b(This)37 b(option)h(is)g(enabled)g
-(b)m(y)g(default)g(for)1110 5340 y(in)m(teractiv)m(e)33
-b(shells.)p eop end
-%%Page: 67 73
-TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(extdebug)96
+5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g
+(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p
+eop end
+%%Page: 68 74
+TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(dotglob)144
+b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f
+(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f
+(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p
+Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518
+y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f
+Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b
+Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will)
+f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp)
+s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f
+Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33
+b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630
+1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g
+(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-)
+1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(93.)64
+b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110
+1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96
 b Fu(If)36 b(set)h(at)h(shell)f(in)m(v)m(o)s(cation,)j(arrange)d(to)h
-(execute)g(the)f(debugger)f(pro\014le)1110 408 y(b)s(efore)f(the)h
+(execute)g(the)f(debugger)f(pro\014le)1110 1669 y(b)s(efore)f(the)h
 (shell)f(starts,)j(iden)m(tical)f(to)f(the)g Ft(--debugger)c
-Fu(option.)56 b(If)35 b(set)1110 518 y(after)25 b(in)m(v)m(o)s(cation,)
-j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g(debuggers)f(is)h
-(enabled:)1159 652 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g
-Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290
-762 y(Builtins],)29 b(page)g(49\))g(displa)m(ys)f(the)g(source)h
-(\014le)f(name)g(and)f(line)h(n)m(um-)1290 871 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 981 y(men)m(t.)1159 1115 y(2.)61 b(If)20 b(the)h(command)g(run)e
-(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5
-b(alue,)1290 1224 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g
-(not)i(executed.)1159 1358 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m
-(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38
-b(of)f(2,)1290 1468 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 1577 y(a)h(shell)g
+Fu(option.)56 b(If)35 b(set)1110 1778 y(after)25 b(in)m(v)m(o)s
+(cation,)j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g
+(debuggers)f(is)h(enabled:)1159 1915 y(1.)61 b(The)37
+b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i
+(Section)f(4.2)h([Bash)1290 2025 y(Builtins],)29 b(page)g(50\))g
+(displa)m(ys)f(the)g(source)h(\014le)f(name)g(and)f(line)h(n)m(um-)1290
+2134 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 2244 y(men)m(t.)1159
+2381 y(2.)61 b(If)20 b(the)h(command)g(run)e(b)m(y)i(the)f
+Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 b(alue,)1290
+2491 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g(not)i
+(executed.)1159 2628 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m(y)i
+(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38
+b(of)f(2,)1290 2737 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 2847 y(a)h(shell)g
 (script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f
-Fu(builtins\),)i(the)g(shell)1290 1687 y(sim)m(ulates)d(a)g(call)h(to)f
-Ft(return)p Fu(.)1159 1821 y(4.)61 b Ft(BASH_ARGC)34
+Fu(builtins\),)i(the)g(shell)1290 2956 y(sim)m(ulates)d(a)g(call)h(to)f
+Ft(return)p Fu(.)1159 3093 y(4.)61 b Ft(BASH_ARGC)34
 b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in)
-g(their)1290 1931 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
-(V)-8 b(ariables],)32 b(page)f(71\).)1159 2064 y(5.)61
+g(their)1290 3203 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
+(V)-8 b(ariables],)32 b(page)f(73\).)1159 3340 y(5.)61
 b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56
-b(substitution,)63 b(shell)1290 2174 y(functions,)32
+b(substitution,)63 b(shell)1290 3450 y(functions,)32
 b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f
-Fj(command)e Ft(\))j Fu(inherit)h(the)1290 2284 y Ft(DEBUG)d
-Fu(and)h Ft(RETURN)e Fu(traps.)1159 2418 y(6.)61 b(Error)41
+Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3559 y Ft(DEBUG)d
+Fu(and)h Ft(RETURN)e Fu(traps.)1159 3696 y(6.)61 b(Error)41
 b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f
-(func-)1290 2527 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i
+(func-)1290 3806 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i
 (with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g
-Ft(ERR)1290 2637 y Fu(trap.)630 2795 y Ft(extglob)144
+Ft(ERR)1290 3915 y Fu(trap.)630 4080 y Ft(extglob)144
 b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g
-(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 2905 y(Section)j(3.5.8.1)i
-([P)m(attern)f(Matc)m(hing],)g(page)f(31\))h(are)f(enabled.)630
-3063 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4189 y(Section)j(3.5.8.1)i
+([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630
+4354 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p
 Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e
-Fu(quoting)k(is)e(p)s(erformed)f(within)1110 3173 y Ft(${)p
+Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4463 y Ft(${)p
 Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f
-(quotes.)55 b(This)33 b(option)1110 3282 y(is)d(enabled)h(b)m(y)f
-(default.)630 3440 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d
+(quotes.)55 b(This)33 b(option)1110 4573 y(is)d(enabled)h(b)m(y)f
+(default.)630 4737 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d
 (whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g
-(ex-)1110 3550 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
-3708 y Ft(force_fignore)1110 3818 y Fu(If)43 b(set,)k(the)d(su\016xes)f
+(ex-)1110 4847 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
+5011 y Ft(force_fignore)1110 5121 y Fu(If)43 b(set,)k(the)d(su\016xes)f
 (sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5
-b(ariable)44 b(cause)1110 3927 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h
+b(ariable)44 b(cause)1110 5230 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
-4037 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 4147 y([Bash)24
-b(V)-8 b(ariables],)27 b(page)e(71,)h(for)d(a)h(description)g(of)g
-Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 4256 y(is)30
-b(enabled)h(b)m(y)f(default.)630 4415 y Ft(globasciiranges)1110
-4524 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)
-m(hing)h(brac)m(k)m(et)h(expres-)1110 4634 y(sions)28
-b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e
-(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 4743 y(in)i(the)g(traditional)i
-(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44
-b(That)31 b(is,)1110 4853 y(the)d(curren)m(t)g(lo)s(cale's)i(collating)
-h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110
-4963 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p
+5340 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)p eop end
+%%Page: 69 75
+TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y([Bash)24
+b(V)-8 b(ariables],)27 b(page)e(73,)h(for)d(a)h(description)g(of)g
+Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 408 y(is)30
+b(enabled)h(b)m(y)f(default.)630 603 y Ft(globasciiranges)1110
+713 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)m
+(hing)h(brac)m(k)m(et)h(expres-)1110 822 y(sions)28 b(\(see)h(Section)h
+(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)
+g(as)g(if)1110 932 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)
+s(erforming)g(comparisons.)44 b(That)31 b(is,)1110 1042
+y(the)d(curren)m(t)g(lo)s(cale's)i(collating)h(sequence)d(is)h(not)f
+(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 1151 y(`)p
+Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p
 Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m
-(w)m(er-)1110 5072 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i
-(together.)630 5230 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)
+(w)m(er-)1110 1261 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i
+(together.)630 1456 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)
 f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m
-(text)j(will)1110 5340 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)
-f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)p
-eop end
-%%Page: 68 74
-TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(the)30
-b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p Ft(/)p
-Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110
-408 y(matc)m(h.)630 568 y Ft(gnu_errfmt)1110 677 y Fu(If)35
-b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g
-(standard)f Fm(gnu)g Fu(error)1110 787 y(message)c(format.)630
-946 y Ft(histappend)1110 1056 y Fu(If)c(set,)j(the)e(history)g(list)g
+(text)j(will)1110 1565 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)
+f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)1110
+1675 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p
+Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110
+1784 y(matc)m(h.)630 1979 y Ft(gnu_errfmt)1110 2089 y
+Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g
+(standard)f Fm(gnu)g Fu(error)1110 2198 y(message)c(format.)630
+2393 y Ft(histappend)1110 2503 y Fu(If)c(set,)j(the)e(history)g(list)g
 (is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5
-b(alue)29 b(of)1110 1166 y(the)d Ft(HISTFILE)d Fu(v)-5
+b(alue)29 b(of)1110 2612 y(the)d Ft(HISTFILE)d Fu(v)-5
 b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m
-(erwriting)1110 1275 y(the)31 b(\014le.)630 1435 y Ft(histreedit)1110
-1544 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g
+(erwriting)1110 2722 y(the)31 b(\014le.)630 2917 y Ft(histreedit)1110
+3026 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g
 (user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110
-1654 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
-1813 y Ft(histverify)1110 1923 y Fu(If)35 b(set,)i(and)e(Readline)h(is)
+3136 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
+3331 y Ft(histverify)1110 3440 y Fu(If)35 b(set,)i(and)e(Readline)h(is)
 f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110
-2032 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 2142 y(resulting)i(line)f(is)h
+3550 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 3660 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 2252 y(further)29 b(mo)s(di\014cation.)630 2411
-y Ft(hostcomplete)1110 2521 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f
+1110 3769 y(further)29 b(mo)s(di\014cation.)630 3964
+y Ft(hostcomplete)1110 4074 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f
 (b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110
-2630 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
-(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 2740 y(pleted)g(\(see)h
+4183 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
+(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4293 y(pleted)g(\(see)h
 (Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g
-(124\).)1110 2849 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
-630 3009 y Ft(huponexit)1110 3118 y Fu(If)i(set,)i(Bash)f(will)h(send)d
+(127\).)1110 4402 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
+630 4597 y Ft(huponexit)1110 4707 y Fu(If)i(set,)i(Bash)f(will)h(send)d
 Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login)
-1110 3228 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
-(page)f(39\).)630 3387 y Ft(inherit_errexit)1110 3497
+1110 4816 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
+(page)f(41\).)630 5011 y Ft(inherit_errexit)1110 5121
 y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5
-b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 3606
+b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230
 y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m
-(vironmen)m(t.)46 b(This)32 b(op-)1110 3716 y(tion)f(is)f(enabled)h
-(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 3875
-y Ft(interactive_comments)1110 3985 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s
+(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h
+(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end
+%%Page: 70 76
+TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y Ft
+(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s
 (eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and)
-f(all)i(remain-)1110 4095 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g
+f(all)i(remain-)1110 518 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
-4204 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630
-4364 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f
+628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630
+777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f
 (not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110
-4473 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m
-(kground)g(in)g(the)g(curren)m(t)g(shell)1110 4583 y(en)m(vironmen)m
-(t.)630 4742 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h
+887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m
+(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.)
+630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h
 Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110
-4852 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 4961 y(semicolon)32
-b(separators)f(where)e(p)s(ossible.)630 5121 y Ft(login_shell)1110
-5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f
-(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110
-5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(82\).)41
-b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p
+1255 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 1365 y(semicolon)32
+b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110
+1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g
+(v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110
+1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g
+(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5
+b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48
+b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y
+Ft(localvar_unset)1110 2102 y Fu(If)i(set,)i(calling)g
+Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 b(ariables)35 b(in)e(previous)g
+(function)g(scop)s(es)1110 2212 y(marks)26 b(them)g(so)g(subsequen)m(t)
+g(lo)s(okups)f(\014nd)g(them)h(unset)f(un)m(til)i(that)g(func-)1110
+2321 y(tion)40 b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g
+(b)s(eha)m(vior)g(of)g(unsetting)g(lo)s(cal)1110 2431
+y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630
+2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f
+(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g
+(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g
+(85\).)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 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h
+(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s
+(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)
+f(c)m(hec)m(k)m(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f
+Fj(mail-)1110 3168 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)
+m(ed.)630 3318 y Ft(no_empty_cmd_completion)1110 3427
+y Fu(If)g(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g
+(not)g(attempt)i(to)e(searc)m(h)1110 3537 y(the)25 b
+Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j(when)d(completion)i(is)f
+(attempted)h(on)1110 3646 y(an)k(empt)m(y)h(line.)630
+3796 y Ft(nocaseglob)1110 3905 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g
+(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110
+4015 y(p)s(erforming)29 b(\014lename)i(expansion.)630
+4164 y Ft(nocasematch)1110 4274 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g
+(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110
+4384 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i
+Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110
+4493 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m
+(ord)g(expansions,)g(or)1110 4603 y(when)g(\014ltering)i(p)s(ossible)f
+(completions)h(as)g(part)f(of)h(programmable)f(com-)1110
+4712 y(pletion.)630 4862 y Ft(nullglob)96 b Fu(If)23
+b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m
+(h)h(no)g(\014les)f(to)i(expand)1110 4971 y(to)31 b(a)g(n)m(ull)f
+(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y
+Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g
+(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230
+y(grammable)45 b(Completion],)k(page)c(132\))h(are)f(enabled.)82
+b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p
 eop end
-%%Page: 69 75
-TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(mailwarn)96
-b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m
-(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408
-y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the)
-c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g
-Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630
-693 y Ft(no_empty_cmd_completion)1110 803 y Fu(If)g(set,)g(and)g
-(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e
-(searc)m(h)1110 913 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f
-(completions)j(when)d(completion)i(is)f(attempted)h(on)1110
-1022 y(an)k(empt)m(y)h(line.)630 1198 y Ft(nocaseglob)1110
-1307 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h
-(case-insensitiv)m(e)j(fashion)c(when)1110 1417 y(p)s(erforming)29
-b(\014lename)i(expansion.)630 1592 y Ft(nocasematch)1110
-1702 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h
-(case-insensitiv)m(e)i(fashion)d(when)1110 1811 y(p)s(erforming)31
-b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h
-Ft([[)g Fu(conditional)h(com-)1110 1921 y(mands,)d(when)g(p)s
-(erforming)g(pattern)h(substitution)g(w)m(ord)g(expansions,)g(or)1110
-2030 y(when)g(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of)
-h(programmable)f(com-)1110 2140 y(pletion.)630 2315 y
-Ft(nullglob)96 b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g
-(patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110
-2425 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.)
-630 2600 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g
-(completion)g(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110
-2710 y(grammable)45 b(Completion],)k(page)c(129\))h(are)f(enabled.)82
-b(This)44 b(option)h(is)1110 2819 y(enabled)30 b(b)m(y)h(default.)630
-2995 y Ft(promptvars)1110 3104 y Fu(If)50 b(set,)56 b(prompt)49
+%%Page: 71 77
+TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft(progcomp_alias)
+1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f
+(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34
+b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g
+(a)g(p)s(ossible)g(alias)1110 628 y(and)40 b(attempts)i(alias)h
+(expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110
+737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h
+(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630
+996 y Ft(promptvars)1110 1106 y Fu(If)50 b(set,)56 b(prompt)49
 b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110
-3214 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo)
-m(v)-5 b(al)35 b(after)f(b)s(eing)1110 3324 y(expanded)53
+1215 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo)
+m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1325 y(expanded)53
 b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m
-(trolling)g(the)1110 3433 y(Prompt],)30 b(page)h(94\).)42
+(trolling)g(the)1110 1434 y(Prompt],)30 b(page)h(97\).)42
 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630
-3608 y Ft(restricted_shell)1110 3718 y Fu(The)40 b(shell)h(sets)g(this)
+1584 y Ft(restricted_shell)1110 1693 y Fu(The)40 b(shell)h(sets)g(this)
 g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see)
-1110 3828 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e
-(95\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110
-3937 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 4047
+1110 1803 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e
+(99\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110
+1913 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 2022
 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 4156
-y(stricted.)630 4332 y Ft(shift_verbose)1110 4441 y Fu(If)g(this)g(is)g
+(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2132
+y(stricted.)630 2281 y Ft(shift_verbose)1110 2391 y Fu(If)g(this)g(is)g
 (set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message)
-i(when)d(the)1110 4551 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 4726 y
-Ft(sourcepath)1110 4836 y Fu(If)22 b(set,)j(the)e Ft(source)e
+i(when)d(the)1110 2500 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 2649 y
+Ft(sourcepath)1110 2759 y Fu(If)22 b(set,)j(the)e Ft(source)e
 Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e
-Fu(to)j(\014nd)d(the)h(directory)1110 4945 y(con)m(taining)29
+Fu(to)j(\014nd)d(the)h(directory)1110 2869 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 5055 y(b)m(y)j(default.)630
-5230 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e
+b(This)27 b(option)h(is)f(enabled)1110 2978 y(b)m(y)j(default.)630
+3127 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e
 Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f
-(de-)1110 5340 y(fault.)p eop end
-%%Page: 70 76
-TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y(The)27
-b(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i(if)e(all)i
-Fr(optnames)i Fu(are)d(enabled,)g(non-)630 408 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 518 y(unless)30 b(an)g
-Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)
-150 759 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 918
+(de-)1110 3237 y(fault.)630 3386 y(The)c(return)f(status)i(when)f
+(listing)h(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i
+Fu(are)d(enabled,)g(non-)630 3496 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 3606 y(unless)30 b(an)g Fr(optname)36
+b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150
+3836 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 3996
 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g
 Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g
-(as)h Fl(sp)-5 b(e-)150 1028 y(cial)p Fu(.)47 b(When)33
+(as)h Fl(sp)-5 b(e-)150 4105 y(cial)p Fu(.)47 b(When)33
 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s
 (ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150
-1137 y(commands)e(in)g(three)h(resp)s(ects:)199 1272
+4215 y(commands)e(in)g(three)h(resp)s(ects:)199 4344
 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h
-(functions)f(during)f(command)h(lo)s(okup.)199 1406 y(2.)61
+(functions)f(during)f(command)h(lo)s(okup.)199 4474 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 1541
+(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4603
 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
-1650 y(after)i(the)f(command)h(completes.)275 1810 y(When)36
+4713 y(after)i(the)f(command)h(completes.)275 4862 y(When)36
 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f
 (builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150
-1919 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41
+4972 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41
 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h
-(Section)h(6.11)150 2029 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(96.)275
-2164 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390
-2298 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
-(readonly)f(return)h(set)390 2408 y(shift)g(trap)h(unset)p
-eop end
-%%Page: 71 77
-TeXDict begin 71 76 bop 3659 -116 a Fu(71)150 299 y Fp(5)80
-b(Shell)53 b(V)-13 b(ariables)150 539 y Fu(This)21 b(c)m(hapter)i
+(Section)h(6.11)150 5081 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(99.)275
+5211 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390
+5340 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
+(readonly)f(return)h(set)p eop end
+%%Page: 72 78
+TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(72)390 299 y Ft(shift)46
+b(trap)h(unset)p eop end
+%%Page: 73 79
+TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80
+b(Shell)53 b(V)-13 b(ariables)150 522 y Fu(This)21 b(c)m(hapter)i
 (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.)
 37 b(Bash)23 b(automatically)h(assigns)f(default)150
-648 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5
-b(ariables.)150 892 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11
-b(ariables)150 1051 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5
+631 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5
+b(ariables.)150 867 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11
+b(ariables)150 1027 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5
 b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g
-(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1161 y(assigns)f(a)f
+(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1136 y(assigns)f(a)f
 (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150
-1323 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g
+1291 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g
 (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g
-Ft(cd)f Fu(builtin)630 1433 y(command.)150 1594 y Ft(HOME)288
+Ft(cd)f Fu(builtin)630 1401 y(command.)150 1556 y Ft(HOME)288
 b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g
 (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630
-1704 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37
+1665 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 1813 y(Expansion],)30 b(page)h(22\).)150
-1975 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f
+(3.5.2)h([Tilde)630 1775 y(Expansion],)30 b(page)h(23\).)150
+1930 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f
 (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e
-(as)i(part)630 2084 y(of)31 b(expansion.)150 2246 y Ft(MAIL)288
+(as)i(part)630 2039 y(of)31 b(expansion.)150 2194 y Ft(MAIL)288
 b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f
-(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2355
+(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2304
 y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user)
 f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed)
-630 2465 y(\014le)f(or)h(Maildir-format)g(directory)-8
-b(.)150 2626 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f
+630 2413 y(\014le)f(or)h(Maildir-format)g(directory)-8
+b(.)150 2568 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f
 (\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m
-(ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g
+(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 2845 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m
+(new)h(mail)630 2787 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m
 (y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i
-(`)p Ft(?)p Fu('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g
+(`)p Ft(?)p Fu('.)630 2897 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g
 (message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m
-(t)630 3064 y(mail)f(\014le.)150 3226 y Ft(OPTARG)192
+(t)630 3006 y(mail)f(\014le.)150 3161 y Ft(OPTARG)192
 b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g
 (pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150
-3387 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g
+3316 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g
 (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f
-Fu(builtin.)150 3548 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f
+Fu(builtin.)150 3471 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f
 (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f
-(commands.)45 b(A)630 3658 y(zero-length)e(\(n)m(ull\))g(directory)f
+(commands.)45 b(A)630 3581 y(zero-length)e(\(n)m(ull\))g(directory)f
 (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f
-(curren)m(t)630 3768 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f
+(curren)m(t)630 3690 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 3877 y(initial)f(or)e(trailing)h(colon.)150
-4039 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55
+(colons,)g(or)f(as)g(an)630 3800 y(initial)f(or)e(trailing)h(colon.)150
+3955 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55
 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28
-b Fu('.)56 b(See)36 b(Section)g(6.9)630 4148 y([Con)m(trolling)42
-b(the)e(Prompt],)j(page)e(94,)j(for)c(the)g(complete)i(list)f(of)f
-(escap)s(e)h(sequences)630 4258 y(that)31 b(are)g(expanded)e(b)s(efore)
-h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4419 y Ft(PS2)336
-b Fu(The)30 b(secondary)g(prompt)g(string.)41 b(The)29
-b(default)i(v)-5 b(alue)31 b(is)f(`)p Ft(>)g Fu('.)150
-4663 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4822
+b Fu('.)56 b(See)36 b(Section)g(6.9)630 4064 y([Con)m(trolling)42
+b(the)e(Prompt],)j(page)e(97,)j(for)c(the)g(complete)i(list)f(of)f
+(escap)s(e)h(sequences)630 4174 y(that)31 b(are)g(expanded)e(b)s(efore)
+h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4329 y Ft(PS2)336
+b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28
+b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40
+b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4438 y(same)j(w)m(a)m(y)g
+(as)g Ft(PS1)e Fu(b)s(efore)h(b)s(eing)g(displa)m(y)m(ed.)150
+4674 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4834
 y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h
 (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g
-(them)150 4932 y(sp)s(ecially)-8 b(.)275 5068 y(A)24
+(them)150 4943 y(sp)s(ecially)-8 b(.)275 5076 y(A)24
 b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f
 (in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25
-b(for)f(con)m(trolling)150 5178 y(the)31 b(job)f(con)m(trol)h
+b(for)f(con)m(trolling)150 5185 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(103\).)150 5340 y Ft(BASH)288
+b(ariables],)32 b(page)g(106\).)150 5340 y Ft(BASH)288
 b Fu(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t)
 g(instance)h(of)g(Bash.)p eop end
-%%Page: 72 78
-TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Ft(BASHOPTS)96
+%%Page: 74 80
+TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(74)150 299 y Ft(BASHOPTS)96
 b Fu(A)31 b(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 408 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f
 Fu(option)i(to)f(the)g Ft(shopt)f Fu(builtin)g(command)h(\(see)g
-(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(64\).)60
+(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(65\).)60
 b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e
 Fu(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Ft(on)p
 Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5
@@ -13210,774 +13428,828 @@ b(ariable)36 b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630
 737 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g
 (will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630
 847 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8
-b(.)150 1029 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f
+b(.)150 1044 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f
 (ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35
-b(di\013ers)h(from)g Ft($$)630 1139 y Fu(under)31 b(certain)j
+b(di\013ers)h(from)g Ft($$)630 1154 y Fu(under)31 b(certain)j
 (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require)
-g(Bash)g(to)h(b)s(e)630 1249 y(re-initialized.)150 1431
-y Ft(BASH_ALIASES)630 1541 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d
-(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f
-(in)m(ternal)h(list)630 1650 y(of)c(aliases)h(as)f(main)m(tained)g(b)m
-(y)g(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f
-([Bourne)g(Shell)630 1760 y(Builtins],)31 b(page)g(42\).)42
-b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)
-g(alias)h(list;)h(ho)m(w-)630 1870 y(ev)m(er,)k(unsetting)f(arra)m(y)g
-(elemen)m(ts)g(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)
-s(e)f(remo)m(v)m(ed)630 1979 y(from)25 b(the)h(alias)h(list.)40
-b(If)25 b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s
-(ecial)g(prop)s(erties,)g(ev)m(en)630 2089 y(if)k(it)h(is)g(subsequen)m
-(tly)f(reset.)150 2271 y Ft(BASH_ARGC)630 2381 y Fu(An)39
-b(arra)m(y)g(v)-5 b(ariable)40 b(whose)f(v)-5 b(alues)39
-b(are)h(the)f(n)m(um)m(b)s(er)f(of)h(parameters)g(in)g(eac)m(h)h(frame)
-630 2491 y(of)i(the)g(curren)m(t)g(bash)f(execution)i(call)g(stac)m(k.)
-76 b(The)42 b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630
-2600 y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f
+g(Bash)g(to)h(b)s(e)630 1263 y(re-initialized.)57 b(Assignmen)m(ts)35
+b(to)h Ft(BASHPID)d Fu(ha)m(v)m(e)j(no)f(e\013ect.)56
+b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 1373 y(loses)31
+b(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 1570 y Ft(BASH_ALIASES)630
+1680 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5
+b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m
+(ternal)h(list)630 1789 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g
+(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g
+(Shell)630 1899 y(Builtins],)31 b(page)g(43\).)42 b(Elemen)m(ts)31
+b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h
+(ho)m(w-)630 2008 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g
+(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m
+(v)m(ed)630 2118 y(from)25 b(the)h(alias)h(list.)40 b(If)25
+b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s(ecial)g
+(prop)s(erties,)g(ev)m(en)630 2228 y(if)k(it)h(is)g(subsequen)m(tly)f
+(reset.)150 2425 y Ft(BASH_ARGC)630 2534 y Fu(An)39 b(arra)m(y)g(v)-5
+b(ariable)40 b(whose)f(v)-5 b(alues)39 b(are)h(the)f(n)m(um)m(b)s(er)f
+(of)h(parameters)g(in)g(eac)m(h)h(frame)630 2644 y(of)i(the)g(curren)m
+(t)g(bash)f(execution)i(call)g(stac)m(k.)76 b(The)42
+b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 2754
+y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f
 (executed)h(with)e Ft(.)h Fu(or)g Ft(source)p Fu(\))f(is)h(at)630
-2710 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27
+2863 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27
 b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h
-(parameters)630 2819 y(passed)44 b(is)h(pushed)e(on)m(to)j
+(parameters)630 2973 y(passed)44 b(is)h(pushed)e(on)m(to)j
 Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e
-Fu(only)i(when)e(in)630 2929 y(extended)34 b(debugging)f(mo)s(de)g
-(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(64,)g(for)
-630 3039 y(a)c(description)f(of)h(the)f Ft(extdebug)e
-Fu(option)j(to)g(the)g Ft(shopt)e Fu(builtin\).)150 3221
-y Ft(BASH_ARGV)630 3331 y Fu(An)24 b(arra)m(y)g(v)-5
+Fu(only)i(when)e(in)630 3082 y(extended)34 b(debugging)f(mo)s(de)g
+(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(65,)g(for)
+630 3192 y(a)e(description)g(of)f(the)h Ft(extdebug)d
+Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33
+b Ft(extdebug)630 3302 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g
+(execute)i(a)e(script,)g(or)g(referencing)g(this)f(v)-5
+b(ariable)30 b(when)630 3411 y Ft(extdebug)e Fu(is)j(not)f(set,)h(ma)m
+(y)g(result)g(in)f(inconsisten)m(t)h(v)-5 b(alues.)150
+3608 y Ft(BASH_ARGV)630 3718 y Fu(An)24 b(arra)m(y)g(v)-5
 b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h(parameters)f(in)g(the)g
-(curren)m(t)g(bash)g(execution)630 3440 y(call)35 b(stac)m(k.)53
+(curren)m(t)g(bash)g(execution)630 3828 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 3550 y(stac)m(k;)28
+(is)f(at)h(the)f(top)h(of)f(the)630 3937 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 3660
+(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 4047
 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m
-(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 3769
+(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4156
 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g
-(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 3879 y(Shopt)g(Builtin],)
-h(page)g(64,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
-Fu(option)j(to)g(the)f Ft(shopt)630 3988 y Fu(builtin\).)150
-4171 y Ft(BASH_CMDS)630 4281 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f
-(v)-5 b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f
-(in)m(ternal)h(hash)630 4390 y(table)c(of)g(commands)f(as)g(main)m
-(tained)h(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h
-([Bourne)630 4500 y(Shell)42 b(Builtins],)k(page)d(42\).)77
-b(Elemen)m(ts)43 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)
-i(hash)630 4609 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g
-(elemen)m(ts)i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630
-4719 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f
-(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its)
-630 4829 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)150 5011 y Ft(BASH_COMMAND)630
-5121 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e
+(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 4266 y(Shopt)g(Builtin],)
+h(page)g(65,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
+Fu(option)j(to)g(the)f Ft(shopt)630 4376 y Fu(builtin\).)64
+b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g
+(to)h(execute)g(a)g(script,)h(or)630 4485 y(referencing)35
+b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j
+(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 4595 y(v)-5
+b(alues.)150 4792 y Ft(BASH_ARGV0)630 4902 y Fu(When)31
+b(referenced,)g(this)g(v)-5 b(ariable)32 b(expands)e(to)h(the)h(name)f
+(of)g(the)g(shell)g(or)g(shell)g(script)630 5011 y(\(iden)m(tical)42
+b(to)e Ft($0)p Fu(;)j(See)d(Section)g(3.4.2)i([Sp)s(ecial)e(P)m
+(arameters],)j(page)d(21,)j(for)c(the)h(de-)630 5121
+y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45
+b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5
+b(alue)630 5230 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g
+Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h
+(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)p eop end
+%%Page: 75 81
+TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_CMDS)630
+408 y Fu(An)34 b(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5
+b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m
+(ternal)h(hash)630 518 y(table)c(of)g(commands)f(as)g(main)m(tained)h
+(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)
+630 628 y(Shell)42 b(Builtins],)k(page)d(43\).)77 b(Elemen)m(ts)43
+b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630
+737 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts)i
+(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 847
+y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f(table.)58
+b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its)630
+956 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)150 1129 y Ft(BASH_COMMAND)630
+1238 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e
 (ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630
-5230 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g
+1348 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g
 (a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630
-5340 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)p
-eop end
-%%Page: 73 79
-TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(BASH_COMPAT)630
-408 y Fu(The)33 b(v)-5 b(alue)34 b(is)f(used)g(to)h(set)f(the)h
-(shell's)g(compatibilit)m(y)h(lev)m(el.)51 b(See)34 b(Section)g(4.3.2)h
-([The)630 518 y(Shopt)40 b(Builtin],)45 b(page)c(64,)k(for)c(a)g
-(description)g(of)g(the)g(v)-5 b(arious)41 b(compatibilit)m(y)i(lev)m
-(els)630 628 y(and)31 b(their)g(e\013ects.)45 b(The)31
-b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)h(decimal)g(n)m(um)m(b)s(er)e
-(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)630 737 y(\(e.g.,)39
-b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f(compatibilit)m(y)k
-(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d Fu(is)630 847
-y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d
-(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630
-956 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40
+1457 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)150
+1630 y Ft(BASH_COMPAT)630 1739 y Fu(The)i(v)-5 b(alue)34
+b(is)f(used)g(to)h(set)f(the)h(shell's)g(compatibilit)m(y)h(lev)m(el.)
+51 b(See)34 b(Section)g(4.3.2)h([The)630 1849 y(Shopt)40
+b(Builtin],)45 b(page)c(65,)k(for)c(a)g(description)g(of)g(the)g(v)-5
+b(arious)41 b(compatibilit)m(y)i(lev)m(els)630 1958 y(and)31
+b(their)g(e\013ects.)45 b(The)31 b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)
+h(decimal)g(n)m(um)m(b)s(er)e(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)
+630 2068 y(\(e.g.,)39 b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f
+(compatibilit)m(y)k(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d
+Fu(is)630 2178 y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j
+(the)d(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630
+2287 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40
 b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e(v)-5 b(alue)41
-b(that)h(is)e(not)h(one)g(of)630 1066 y(the)f(v)-5 b(alid)40
+b(that)h(is)e(not)h(one)g(of)630 2397 y(the)f(v)-5 b(alid)40
 b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g(prin)m(ts)f(an)h(error)
-f(message)i(and)f(sets)g(the)630 1176 y(compatibilit)m(y)23
+f(message)i(and)f(sets)g(the)630 2506 y(compatibilit)m(y)23
 b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g(curren)m(t)g(v)m(ersion.)
-38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 1285
+38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 2616
 y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g(compatibilit)m(y)i(options)
 e(accepted)h(b)m(y)f(the)g Ft(shopt)e Fu(builtin)630
-1395 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h
+2725 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h
 Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d(42)i(are)g(v)-5
-b(alid)21 b(v)-5 b(alues\).)630 1504 y(The)30 b(curren)m(t)g(v)m
+b(alid)21 b(v)-5 b(alues\).)630 2835 y(The)30 b(curren)m(t)g(v)m
 (ersion)h(is)f(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150
-1655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30
+3007 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30
 b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e
-(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 1765
+(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 3117
 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g
-(to)h(read)f(b)s(efore)g(executing)i(the)630 1874 y(script.)41
-b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(84.)150
-2025 y Ft(BASH_EXECUTION_STRING)630 2134 y Fu(The)f(command)g(argumen)m
+(to)h(read)f(b)s(efore)g(executing)i(the)630 3226 y(script.)41
+b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(87.)150
+3399 y Ft(BASH_EXECUTION_STRING)630 3508 y Fu(The)f(command)g(argumen)m
 (t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150
-2285 y Ft(BASH_LINENO)630 2395 y Fu(An)62 b(arra)m(y)i(v)-5
+3680 y Ft(BASH_LINENO)630 3790 y Fu(An)62 b(arra)m(y)i(v)-5
 b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s
-(ers)f(in)g(source)h(\014les)630 2504 y(where)46 b(eac)m(h)i(corresp)s
+(ers)f(in)g(source)h(\014les)630 3900 y(where)46 b(eac)m(h)i(corresp)s
 (onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47
-b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 2614 y(LINENO[$i]})39
+b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 4009 y(LINENO[$i]})39
 b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g
-(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 2724 y(where)d
+(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 4119 y(where)d
 Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft
 (${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630
-2833 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31
+4228 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31
 b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s
-(er.)150 2984 y Ft(BASH_LOADABLES_PATH)630 3093 y Fu(A)39
+(er.)150 4401 y Ft(BASH_LOADABLES_PATH)630 4510 y Fu(A)39
 b(colon-separated)i(list)f(of)f(directories)h(in)f(whic)m(h)g(the)g
-(shell)h(lo)s(oks)f(for)g(dynamically)630 3203 y(loadable)32
+(shell)h(lo)s(oks)f(for)g(dynamically)630 4620 y(loadable)32
 b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e
-Fu(command.)150 3354 y Ft(BASH_REMATCH)630 3463 y Fu(An)43
+Fu(command.)150 4792 y Ft(BASH_REMATCH)630 4902 y Fu(An)43
 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h
 (assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630
-3573 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h
+5011 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h
 (Section)g(3.2.4.2)i([Conditional)e(Constructs],)630
-3682 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
+5121 y(page)e(11\).)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
-3792 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
+5230 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
 b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g
-(the)g(string)630 3902 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m
+(the)g(string)630 5340 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m
 (thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31
-b(is)g(read-only)-8 b(.)150 4052 y Ft(BASH_SOURCE)630
-4162 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)
-g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630
-4271 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h
+b(is)g(read-only)-8 b(.)p eop end
+%%Page: 76 82
+TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(BASH_SOURCE)630
+408 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)g
+(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630
+518 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h
 Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38
-b(The)630 4381 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c
+b(The)630 628 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c
 Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21
-b Fu(and)630 4491 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150
-4641 y(BASH_SUBSHELL)630 4751 y Fu(Incremen)m(ted)24
-b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m
-(vironmen)m(t)i(when)f(the)h(shell)630 4861 y(b)s(egins)30
-b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 b(The)30
-b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 5011 y Ft(BASH_VERSINFO)630
-5121 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37
-b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(91\))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 end
-%%Page: 74 80
-TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y Ft(BASH_VERSINFO[0])
-1110 408 y Fu(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e
-(\(the)i Fr(release)5 b Fu(\).)630 578 y Ft(BASH_VERSINFO[1])1110
-687 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i
-Fr(v)m(ersion)p Fu(\).)630 857 y Ft(BASH_VERSINFO[2])1110
-966 y Fu(The)f(patc)m(h)h(lev)m(el.)630 1136 y Ft(BASH_VERSINFO[3])1110
-1245 y Fu(The)f(build)f(v)m(ersion.)630 1415 y Ft(BASH_VERSINFO[4])1110
-1524 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7
-b Fu(\).)630 1694 y Ft(BASH_VERSINFO[5])1110 1803 y Fu(The)30
-b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 1973 y
-Ft(BASH_VERSION)630 2082 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h
-(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 2252 y
-Ft(BASH_XTRACEFD)630 2361 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i
+b Fu(and)630 737 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150
+892 y(BASH_SUBSHELL)630 1002 y Fu(Incremen)m(ted)24 b(b)m(y)f(one)h
+(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m(vironmen)m(t)i
+(when)f(the)h(shell)630 1112 y(b)s(egins)30 b(executing)h(in)f(that)h
+(en)m(vironmen)m(t.)42 b(The)30 b(initial)h(v)-5 b(alue)31
+b(is)f(0.)150 1267 y Ft(BASH_VERSINFO)630 1377 y Fu(A)36
+b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 b(\(see)f(Section)h(6.7)g
+([Arra)m(ys],)h(page)e(94\))h(whose)f(mem)m(b)s(ers)630
+1486 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
+1596 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g(follo)m(ws:)630
+1751 y Ft(BASH_VERSINFO[0])1110 1861 y Fu(The)f(ma)5
+b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i Fr(release)5
+b Fu(\).)630 2016 y Ft(BASH_VERSINFO[1])1110 2125 y Fu(The)30
+b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i Fr(v)m(ersion)p
+Fu(\).)630 2281 y Ft(BASH_VERSINFO[2])1110 2390 y Fu(The)f(patc)m(h)h
+(lev)m(el.)630 2545 y Ft(BASH_VERSINFO[3])1110 2655 y
+Fu(The)f(build)f(v)m(ersion.)630 2810 y Ft(BASH_VERSINFO[4])1110
+2920 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7
+b Fu(\).)630 3075 y Ft(BASH_VERSINFO[5])1110 3185 y Fu(The)30
+b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 3340 y
+Ft(BASH_VERSION)630 3450 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h
+(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 3605 y
+Ft(BASH_XTRACEFD)630 3714 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i
 (corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g
-(Bash)g(will)g(write)g(the)630 2471 y(trace)37 b(output)f(generated)h
+(Bash)g(will)g(write)g(the)630 3824 y(trace)37 b(output)f(generated)h
 (when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f
-(\014le)h(descriptor.)58 b(This)630 2580 y(allo)m(ws)29
+(\014le)h(descriptor.)58 b(This)630 3934 y(allo)m(ws)29
 b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f
-(error)f(messages.)41 b(The)630 2690 y(\014le)31 b(descriptor)f(is)h
+(error)f(messages.)41 b(The)630 4043 y(\014le)31 b(descriptor)f(is)h
 (closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g
-(new)f(v)-5 b(alue.)630 2800 y(Unsetting)45 b Ft(BASH_XTRACEFD)40
+(new)f(v)-5 b(alue.)630 4153 y(Unsetting)45 b Ft(BASH_XTRACEFD)40
 b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f
-(trace)630 2909 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g
+(trace)630 4262 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g
 (standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c
-Fu(to)630 3019 y(2)39 b(\(the)h(standard)e(error)g(\014le)h
+Fu(to)630 4372 y(2)39 b(\(the)h(standard)e(error)g(\014le)h
 (descriptor\))h(and)e(then)h(unsetting)g(it)g(will)g(result)g(in)g(the)
-630 3128 y(standard)30 b(error)g(b)s(eing)f(closed.)150
-3298 y Ft(CHILD_MAX)630 3407 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h
+630 4482 y(standard)30 b(error)g(b)s(eing)f(closed.)150
+4637 y Ft(CHILD_MAX)630 4746 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h
 (exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to)
-h(remem)m(b)s(er.)55 b(Bash)630 3517 y(will)37 b(not)g(allo)m(w)i(this)
+h(remem)m(b)s(er.)55 b(Bash)630 4856 y(will)37 b(not)g(allo)m(w)i(this)
 e(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g
-Fm(posix)p Fu(-mandated)f(minim)m(um,)630 3626 y(and)30
+Fm(posix)p Fu(-mandated)f(minim)m(um,)630 4966 y(and)30
 b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h
 (8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630
-3736 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.)
-150 3905 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h
+5075 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.)
+150 5230 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h
 Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d
-(when)h(prin)m(ting)630 4015 y(selection)39 b(lists.)63
+(when)h(prin)m(ting)630 5340 y(selection)39 b(lists.)63
 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d
-Fu(option)j(is)f(enabled)h(\(see)630 4125 y(Section)44
-b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43
-b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4234
-y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4403 y
-Ft(COMP_CWORD)630 4513 y Fu(An)38 b(index)g(in)m(to)h
+Fu(option)j(is)f(enabled)h(\(see)p eop end
+%%Page: 77 83
+TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(Section)44
+b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43
+b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 408
+y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 555 y
+Ft(COMP_CWORD)630 664 y Fu(An)38 b(index)g(in)m(to)h
 Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e
-(curren)m(t)g(cursor)g(p)s(o-)630 4623 y(sition.)72 b(This)40
+(curren)m(t)g(cursor)g(p)s(o-)630 774 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
-4732 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
-([Programmable)g(Completion],)630 4842 y(page)31 b(129\).)150
-5011 y Ft(COMP_LINE)630 5121 y Fu(The)38 b(curren)m(t)h(command)f
+883 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
+([Programmable)g(Completion],)630 993 y(page)31 b(132\).)150
+1139 y Ft(COMP_LINE)630 1249 y Fu(The)38 b(curren)m(t)h(command)f
 (line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5
-b(ailable)41 b(only)d(in)h(shell)f(functions)630 5230
+b(ailable)41 b(only)d(in)h(shell)f(functions)630 1358
 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 5340
-y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(129\).)p
-eop end
-%%Page: 75 81
-TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(COMP_POINT)630
-408 y Fu(The)25 b(index)g(of)h(the)g(curren)m(t)f(cursor)g(p)s(osition)
-h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)g(the)h(curren)m(t)630
-518 y(command.)40 b(If)27 b(the)h(curren)m(t)g(cursor)g(p)s(osition)g
-(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g(command,)630
-628 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31
-b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 b(This)29
-b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 737
-y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g(in)m
-(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 847 y(completion)c
-(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g(Completion],)h
-(page)f(129\).)150 1011 y Ft(COMP_TYPE)630 1121 y Fu(Set)c(to)h(an)f
-(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s
-(e)f(of)g(completion)h(attempted)g(that)630 1230 y(caused)e(a)h
-(completion)h(function)e(to)h(b)s(e)f(called:)40 b Fr(T)-8
-b(AB)p Fu(,)27 b(for)g(normal)f(completion,)j(`)p Ft(?)p
-Fu(',)e(for)630 1340 y(listing)35 b(completions)h(after)f(successiv)m
-(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d
-(partial)630 1450 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p
-Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)
-s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 1559
-y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27
-b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g
-(external)630 1669 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g
-(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630
-1778 y([Programmable)e(Completion],)h(page)f(129\).)150
-1943 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i
+(programmable)f(completion)i(facilities)g(\(see)630 1468
+y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(132\).)150
+1614 y Ft(COMP_POINT)630 1724 y Fu(The)25 b(index)g(of)h(the)g(curren)m
+(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)
+g(the)h(curren)m(t)630 1833 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 1943 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5
+b(ariable)31 b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37
+b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630
+2052 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 2162
+y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g
+(Completion],)h(page)f(132\).)150 2308 y Ft(COMP_TYPE)630
+2418 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28
+b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h
+(attempted)g(that)630 2527 y(caused)e(a)h(completion)h(function)e(to)h
+(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f
+(completion,)j(`)p Ft(?)p Fu(',)e(for)630 2637 y(listing)35
+b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p
+Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630
+2746 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g
+(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h
+(`)p Ft(\045)p Fu(',)h(for)630 2856 y(men)m(u)i(completion.)41
+b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28
+b(only)f(in)f(shell)g(functions)g(and)g(external)630
+2966 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h
+(completion)g(facilities)i(\(see)e(Section)g(8.6)630
+3075 y([Programmable)e(Completion],)h(page)f(132\).)150
+3221 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i
 (of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e
-(curren)m(t)g(completion)630 2052 y(function.)150 2217
-y Ft(COMP_WORDBREAKS)630 2326 y Fu(The)f(set)i(of)e(c)m(haracters)j
+(curren)m(t)g(completion)630 3331 y(function.)150 3477
+y Ft(COMP_WORDBREAKS)630 3587 y Fu(The)f(set)i(of)e(c)m(haracters)j
 (that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g
-(when)630 2436 y(p)s(erforming)i(w)m(ord)h(completion.)51
+(when)630 3696 y(p)s(erforming)i(w)m(ord)h(completion.)51
 b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e
-(sp)s(ecial)630 2545 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)150 2710 y Ft(COMP_WORDS)630
-2819 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the)
+(sp)s(ecial)630 3806 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)150 3952 y Ft(COMP_WORDS)630
+4061 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the)
 g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630
-2929 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as)
+4171 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as)
 h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)630
-3039 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60
+4281 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60
 b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39
-b(only)e(in)f(shell)h(func-)630 3148 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)
+b(only)e(in)f(shell)h(func-)630 4390 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)
 m(y)d(the)i(programmable)f(completion)h(facilities)h(\(see)f(Section)g
-(8.6)g([Pro-)630 3258 y(grammable)e(Completion],)g(page)g(129\).)150
-3422 y Ft(COMPREPLY)630 3532 y Fu(An)37 b(arra)m(y)h(v)-5
+(8.6)g([Pro-)630 4500 y(grammable)e(Completion],)g(page)g(132\).)150
+4646 y Ft(COMPREPLY)630 4756 y Fu(An)37 b(arra)m(y)h(v)-5
 b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e
-(completions)j(generated)630 3641 y(b)m(y)33 b(a)g(shell)h(function)f
+(completions)j(generated)630 4865 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 3751 y(tion)g(8.6)g([Programmable)g(Completion],)
-h(page)f(129\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
-630 3861 y(one)c(p)s(ossible)f(completion.)150 4025 y
+(y)h(\(see)f(Sec-)630 4975 y(tion)g(8.6)g([Programmable)g(Completion],)
+h(page)f(132\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
+630 5084 y(one)c(p)s(ossible)f(completion.)150 5230 y
 Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28
 b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f
-(from)h(and)f(input)630 4134 y(to)31 b(an)f(unnamed)f(copro)s(cess)i
-(\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)150
-4299 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28
-b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f
-(directory)i(stac)m(k.)41 b(Direc-)630 4408 y(tories)33
-b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g
-(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630
-4518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5
-b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630
-4628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h
-Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h
-(to)i(add)630 4737 y(and)37 b(remo)m(v)m(e)h(directories.)63
+(from)h(and)f(input)630 5340 y(to)31 b(an)f(unnamed)f(copro)s(cess)i
+(\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)p
+eop end
+%%Page: 78 84
+TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(78)150 299 y Ft(DIRSTACK)96
+b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f
+(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f(directory)i(stac)m(k.)41
+b(Direc-)630 408 y(tories)33 b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e
+(the)h(order)f(they)h(are)g(displa)m(y)m(ed)g(b)m(y)f(the)h
+Ft(dirs)e Fu(builtin.)630 518 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 628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)
+40 b(the)h Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)
+e(used)h(to)i(add)630 737 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 4847 y(ren)m(t)c(directory)-8
+(hange)i(the)e(cur-)630 847 y(ren)m(t)c(directory)-8
 b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s
 (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630
-4956 y(subsequen)m(tly)d(reset.)150 5121 y Ft(EMACS)240
+956 y(subsequen)m(tly)d(reset.)150 1115 y Ft(EMACS)240
 b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32
 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f
-(v)-5 b(alue)630 5230 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
+(v)-5 b(alue)630 1224 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
 (the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and)
-h(disables)630 5340 y(line)d(editing.)p eop end
-%%Page: 76 82
-TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(ENV)336
+h(disables)630 1334 y(line)d(editing.)150 1492 y Ft(ENV)336
 b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g
 (is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630
-408 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)150
-564 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d
-(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5
-b(ariable)31 b(is)f(readonly)-8 b(.)150 720 y Ft(EXECIGNORE)630
-830 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f(\(see)
-i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630
-939 y(page)j(31\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g
-(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630
-1049 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h)
-h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630
-1158 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j
-(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630
-1268 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b)
-s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f
-Ft([[)g Fu(commands.)630 1377 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g
-(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41
-b(to)g Ft(EXECIGNORE)p Fu(.)630 1487 y(Use)30 b(this)f(v)-5
-b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g(that)h(ha)m
-(v)m(e)h(the)f(executable)h(bit)e(set,)630 1597 y(but)36
-b(are)h(not)g(executable)i(\014les.)60 b(The)36 b(pattern)h(matc)m
-(hing)h(honors)e(the)h(setting)h(of)f(the)630 1706 y
-Ft(extglob)28 b Fu(shell)j(option.)150 1862 y Ft(FCEDIT)192
-b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f
-Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150
-2018 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g
+1602 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(99\).)150
+1760 y Ft(EPOCHREALTIME)630 1870 y Fu(Eac)m(h)38 b(time)f(this)g
+(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s
+(er)f(of)h(seconds)630 1979 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as)
+h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i
+(gran)m(ularit)m(y)630 2089 y(\(see)42 b(the)g(do)s(cumen)m(tation)g
+(for)f(the)g(C)g(library)g(function)g Fr(time)47 b Fu(for)41
+b(the)h(de\014nition)f(of)630 2198 y(Ep)s(o)s(c)m(h\).)82
+b(Assignmen)m(ts)44 b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83
+b(If)43 b Ft(EPOCHREALTIME)e Fu(is)630 2308 y(unset,)30
+b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h
+(is)g(subsequen)m(tly)f(reset.)150 2466 y Ft(EPOCHSECONDS)630
+2576 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it)
+f(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(seconds)630
+2685 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m
+(tation)g(for)g(the)f(C)h(library)f(function)g Fr(time)630
+2795 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73
+b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73
+b(If)630 2905 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its)
+g(sp)s(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m
+(tly)630 3014 y(reset.)150 3173 y Ft(EUID)288 b Fu(The)30
+b(n)m(umeric)g(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f
+(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
+b(.)150 3331 y Ft(EXECIGNORE)630 3440 y Fu(A)29 b(colon-separated)h
+(list)f(of)g(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m
+(attern)f(Matc)m(hing],)630 3550 y(page)j(33\))g(de\014ning)e(the)h
+(list)g(of)g(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h
+(searc)m(h)g(using)630 3660 y Ft(PATH)p Fu(.)k(Files)22
+b(whose)f(full)g(pathnames)g(matc)m(h)h(one)f(of)g(these)h(patterns)e
+(are)i(not)f(considered)630 3769 y(executable)j(\014les)e(for)g(the)h
+(purp)s(oses)d(of)j(completion)h(and)d(command)i(execution)g(via)g
+Ft(PATH)630 3879 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h
+(a\013ect)i(the)d(b)s(eha)m(vior)h(of)g(the)g Ft([)p
+Fu(,)h Ft(test)p Fu(,)f(and)f Ft([[)g Fu(commands.)630
+3988 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g(command)g(hash)f(table)i
+(are)g(not)f(sub)5 b(ject)41 b(to)g Ft(EXECIGNORE)p Fu(.)630
+4098 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f
+(library)g(\014les)g(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)
+630 4208 y(but)36 b(are)h(not)g(executable)i(\014les.)60
+b(The)36 b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the)
+630 4317 y Ft(extglob)28 b Fu(shell)j(option.)150 4475
+y Ft(FCEDIT)192 b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)
+h(the)f Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)
+150 4634 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g
 (su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-)
-630 2127 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i
+630 4743 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i
 (one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630
-2237 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41
+4853 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41
 b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p
-Fu(')150 2393 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5
+Fu(')150 5011 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5
 b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g
-(functions)g(curren)m(tly)f(in)h(the)630 2502 y(execution)g(call)h
+(functions)g(curren)m(tly)f(in)h(the)630 5121 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 2612 y(executing)f(shell)f
+(name)h(of)f(an)m(y)h(curren)m(tly-)630 5230 y(executing)f(shell)f
 (function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f
-(with)g(the)g(highest)630 2721 y(index\))e(is)h Ft("main")p
+(with)g(the)g(highest)630 5340 y(index\))e(is)h Ft("main")p
 Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i
-(shell)f(function)g(is)g(executing.)630 2831 y(Assignmen)m(ts)23
+(shell)f(function)g(is)g(executing.)p eop end
+%%Page: 79 85
+TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Assignmen)m(ts)23
 b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39
 b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)
-630 2941 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m
-(tly)f(reset.)630 3073 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)
-g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40
-b(Eac)m(h)32 b(elemen)m(t)630 3183 y(of)g Ft(FUNCNAME)d
+630 408 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)
+f(reset.)630 543 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)g
+(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40
+b(Eac)m(h)32 b(elemen)m(t)630 653 y(of)g Ft(FUNCNAME)d
 Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c
-Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 3292 y(describ)s(e)39
+Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 763 y(describ)s(e)39
 b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i
 Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630
-3402 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27
+872 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27
 b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34
-b(The)27 b Ft(caller)630 3512 y Fu(builtin)j(displa)m(ys)g(the)h
-(curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150
-3667 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5
+b(The)27 b Ft(caller)630 982 y Fu(builtin)j(displa)m(ys)g(the)h(curren)
+m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150
+1142 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5
 b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g
-(function)g(nesting)630 3777 y(lev)m(el.)42 b(F)-8 b(unction)29
+(function)g(nesting)630 1251 y(lev)m(el.)42 b(F)-8 b(unction)29
 b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h
-(will)f(cause)g(the)f(curren)m(t)630 3886 y(command)i(to)h(ab)s(ort.)
-150 4042 y Ft(GLOBIGNORE)630 4152 y Fu(A)38 b(colon-separated)i(list)f
-(of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s
-(e)g(ignored)630 4261 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 4371 y(also)i(matc)m(hes)g(one)f(of)g(the)g
+(will)f(cause)g(the)f(curren)m(t)630 1361 y(command)i(to)h(ab)s(ort.)
+150 1521 y Ft(GLOBIGNORE)630 1631 y Fu(A)k(colon-separated)i(list)f(of)
+f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e)
+g(ignored)630 1740 y(b)m(y)28 b(\014lename)h(expansion.)40
+b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f
+(expansion)h(pattern)630 1850 y(also)k(matc)m(hes)g(one)f(of)g(the)g
 (patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from)
-e(the)h(list)h(of)630 4481 y(matc)m(hes.)41 b(The)27
+e(the)h(list)h(of)630 1960 y(matc)m(hes.)41 b(The)27
 b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h
-Ft(extglob)d Fu(shell)i(option.)150 4636 y Ft(GROUPS)192
+Ft(extglob)d Fu(shell)i(option.)150 2120 y Ft(GROUPS)192
 b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list)
 h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630
-4746 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d
+2229 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d
 Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f
-Fu(is)i(unset,)f(it)h(loses)h(its)630 4855 y(sp)s(ecial)f(prop)s
+Fu(is)i(unset,)f(it)h(loses)h(its)630 2339 y(sp)s(ecial)f(prop)s
 (erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
-5011 y Ft(histchars)630 5121 y Fu(Up)c(to)g(three)g(c)m(haracters)i
+2499 y Ft(histchars)630 2609 y Fu(Up)c(to)g(three)g(c)m(haracters)i
 (whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g
-(substitution,)g(and)630 5230 y(tok)m(enization)k(\(see)f(Section)f
-(9.3)h([History)f(In)m(teraction],)i(page)f(139\).)41
-b(The)29 b(\014rst)e(c)m(harac-)630 5340 y(ter)j(is)f(the)g
+(substitution,)g(and)630 2718 y(tok)m(enization)k(\(see)f(Section)f
+(9.3)h([History)f(In)m(teraction],)i(page)f(143\).)41
+b(The)29 b(\014rst)e(c)m(harac-)630 2828 y(ter)j(is)f(the)g
 Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m
-(haracter)h(whic)m(h)d(signi\014es)i(the)p eop end
-%%Page: 77 83
-TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(start)25
+(haracter)h(whic)m(h)d(signi\014es)i(the)630 2937 y(start)25
 b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p
 Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630
-408 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f
+3047 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
-518 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d
+3157 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d
 (c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that)
-630 628 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h
+630 3266 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
-737 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34
+3376 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34
 b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g
-(substitution)630 847 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f
+(substitution)630 3485 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 956 y(the)k(shell)f(parser)g(to)h(treat)g(the)
-g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 1106
-y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f(index)
-g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)56
-b(If)630 1215 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f(sp)
-s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f
-(reset.)150 1365 y Ft(HISTCONTROL)630 1474 y Fu(A)40
+(necessarily)g(cause)630 3595 y(the)k(shell)f(parser)g(to)h(treat)g
+(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150
+3755 y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f
+(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)
+56 b(If)630 3865 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f
+(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m
+(tly)f(reset.)150 4025 y Ft(HISTCONTROL)630 4134 y Fu(A)40
 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m
-(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 1584
+(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 4244
 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5
 b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g
-(b)s(egin)f(with)630 1694 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g
+(b)s(egin)f(with)630 4354 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g
 (sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5
-b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 1803 y(causes)34
+b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 4463 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
-1913 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p
+4573 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p
 Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42
-b(A)32 b(v)-5 b(alue)32 b(of)630 2022 y(`)p Ft(erasedups)p
+b(A)32 b(v)-5 b(alue)32 b(of)630 4682 y(`)p Ft(erasedups)p
 Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m
-(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 2132 y(from)42
+(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 4792 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
-2242 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e
+4902 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e
 Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5
-b(alid)35 b(v)-5 b(alue,)36 b(all)630 2351 y(lines)30
+b(alid)35 b(v)-5 b(alue,)36 b(all)630 5011 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 2461 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42
+b(alue)630 5121 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42
 b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp)
-s(ound)630 2570 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added)
+s(ound)630 5230 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added)
 f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630
-2680 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 2829 y Ft(HISTFILE)96
+5340 y(of)31 b Ft(HISTCONTROL)p Fu(.)p eop end
+%%Page: 80 86
+TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTFILE)96
 b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command)
 f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5
-b(alue)630 2939 y(is)30 b Ft(~/.bash_history)p Fu(.)150
-3088 y Ft(HISTFILESIZE)630 3198 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s
-(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39
-b(When)26 b(this)g(v)-5 b(ariable)630 3308 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
-3417 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m
-(ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is)
-630 3527 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g
+b(alue)630 408 y(is)30 b Ft(~/.bash_history)p Fu(.)150
+569 y Ft(HISTFILESIZE)630 678 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s(er)g
+(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39
+b(When)26 b(this)g(v)-5 b(ariable)630 788 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 897 y(than)37
+b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m(ving)h(the)f
+(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is)630
+1007 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g
 (when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39
-b(is)630 3636 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i
+b(is)630 1117 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i
 (zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37
-b(and)f(n)m(umeric)630 3746 y(v)-5 b(alues)31 b(less)f(than)g(zero)h
+b(and)f(n)m(umeric)630 1226 y(v)-5 b(alues)31 b(less)f(than)g(zero)h
 (inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v)
--5 b(alue)31 b(to)g(the)630 3856 y(v)-5 b(alue)31 b(of)f
+-5 b(alue)31 b(to)g(the)630 1336 y(v)-5 b(alue)31 b(of)f
 Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150
-4005 y Ft(HISTIGNORE)630 4115 y Fu(A)j(colon-separated)h(list)f(of)g
+1496 y Ft(HISTIGNORE)630 1606 y Fu(A)j(colon-separated)h(list)f(of)g
 (patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should)
-630 4224 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47
+630 1715 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 4334 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g
+(of)h(the)630 1825 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g
 (complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s
-(ended\).)75 b(Eac)m(h)630 4443 y(pattern)42 b(is)g(tested)g(against)h
+(ended\).)75 b(Eac)m(h)630 1934 y(pattern)42 b(is)g(tested)g(against)h
 (the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h
-Ft(HISTCONTROL)630 4553 y Fu(are)37 b(applied.)59 b(In)36
+Ft(HISTCONTROL)630 2044 y Fu(are)37 b(applied.)59 b(In)36
 b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m
-(haracters,)i(`)p Ft(&)p Fu(')630 4663 y(matc)m(hes)d(the)f(previous)g
+(haracters,)i(`)p Ft(&)p Fu(')630 2153 y(matc)m(hes)d(the)f(previous)g
 (history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed)
-h(using)g(a)g(bac)m(kslash;)k(the)630 4772 y(bac)m(kslash)34
+h(using)g(a)g(bac)m(kslash;)k(the)630 2263 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 4882 y(lines)e(of)h(a)g(m)m
+b(The)34 b(second)f(and)h(subsequen)m(t)630 2373 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 4991 y(history)k(regardless)h(of)f(the)g(v)-5
+(added)g(to)h(the)630 2482 y(history)k(regardless)h(of)f(the)g(v)-5
 b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m
-(hing)i(honors)630 5101 y(the)31 b(setting)g(of)g(the)f
-Ft(extglob)f Fu(shell)h(option.)630 5230 y Ft(HISTIGNORE)20
+(hing)i(honors)630 2592 y(the)31 b(setting)g(of)g(the)f
+Ft(extglob)f Fu(shell)h(option.)630 2727 y Ft(HISTIGNORE)20
 b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p
 Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630
-5340 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p
+2836 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p
 Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p
-Fu(.)36 b(Com)m(bining)p eop end
-%%Page: 78 84
-TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y(these)30
-b(t)m(w)m(o)h(patterns,)f(separating)g(them)g(with)f(a)h(colon,)h(pro)m
-(vides)e(the)h(functionalit)m(y)h(of)630 408 y Ft(ignoreboth)p
-Fu(.)150 558 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s
-(er)e(of)j(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)
-62 b(If)37 b(the)630 667 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h
+Fu(.)36 b(Com)m(bining)630 2946 y(these)30 b(t)m(w)m(o)h(patterns,)f
+(separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h
+(functionalit)m(y)h(of)630 3055 y Ft(ignoreboth)p Fu(.)150
+3216 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j
+(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62
+b(If)37 b(the)630 3325 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h
 (not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26
-b(v)-5 b(alues)26 b(less)g(than)630 777 y(zero)i(result)e(in)h(ev)m
+b(v)-5 b(alues)26 b(less)g(than)630 3435 y(zero)i(result)e(in)h(ev)m
 (ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i
-(\(there)f(is)g(no)g(limit\).)630 887 y(The)j(shell)g(sets)h(the)g
+(\(there)f(is)g(no)g(limit\).)630 3544 y(The)j(shell)g(sets)h(the)g
 (default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h
-(startup)f(\014les.)150 1036 y Ft(HISTTIMEFORMAT)630
-1146 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m
+(startup)f(\014les.)150 3705 y Ft(HISTTIMEFORMAT)630
+3814 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m
 (ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g
-(for)630 1255 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp)
+(for)630 3924 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp)
 f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m
-(ed)630 1365 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50
+(ed)630 4033 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50
 b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g
-(written)f(to)i(the)630 1474 y(history)26 b(\014le)g(so)g(they)g(ma)m
+(written)f(to)i(the)630 4143 y(history)26 b(\014le)g(so)g(they)g(ma)m
 (y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f(sessions.)39
-b(This)25 b(uses)h(the)g(history)630 1584 y(commen)m(t)31
+b(This)25 b(uses)h(the)g(history)630 4253 y(commen)m(t)31
 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g
-(history)h(lines.)150 1733 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33
+(history)h(lines.)150 4413 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33
 b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f
-Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 1843 y(read)21
+Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 4522 y(read)21
 b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38
-b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 1953
+b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 4632
 y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g
-(is)f(running;)h(the)g(next)f(time)i(hostname)630 2062
+(is)f(running;)h(the)g(next)f(time)i(hostname)630 4741
 y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5
 b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of)
-630 2172 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53
+630 4851 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53
 b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5
-b(alue,)36 b(or)e(do)s(es)630 2281 y(not)d(name)f(a)h(readable)g
+b(alue,)36 b(or)e(do)s(es)630 4961 y(not)d(name)f(a)h(readable)g
 (\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e
-Fu(to)j(obtain)g(the)f(list)630 2391 y(of)h(p)s(ossible)f(hostname)h
+Fu(to)j(obtain)g(the)f(list)630 5070 y(of)h(p)s(ossible)f(hostname)h
 (completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h
-(hostname)g(list)630 2501 y(is)f(cleared.)150 2650 y
-Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150
-2800 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m
-(hine)h(Bash)g(is)f(running)f(on.)150 2949 y Ft(IGNOREEOF)630
-3059 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt)
-h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630
-3168 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s
+(hostname)g(list)630 5180 y(is)f(cleared.)150 5340 y
+Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)p
+eop end
+%%Page: 81 87
+TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(HOSTTYPE)96
+b Fu(A)30 b(string)h(describing)f(the)g(mac)m(hine)h(Bash)g(is)f
+(running)f(on.)150 448 y Ft(IGNOREEOF)630 557 y Fu(Con)m(trols)e(the)h
+(action)g(of)f(the)g(shell)g(on)g(receipt)h(of)f(an)g
+Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630
+667 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s
 (er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b)
-s(e)630 3278 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f
+s(e)630 776 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f
 (input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70
-b(If)39 b(the)630 3387 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 3497 y(default)31
-b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g
-(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630
-3606 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 3756 y Ft(INPUTRC)144
-b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78
-b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 3866 y
-Ft(~/.inputrc)p Fu(.)150 4015 y Ft(LANG)288 b Fu(Used)28
-b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h
-(category)h(not)e(sp)s(eci\014cally)g(selected)630 4125
-y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p
-Fu(.)150 4274 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29
-b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f
-Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29
-b(sp)s(ecifying)630 4384 y(a)i(lo)s(cale)h(category)-8
-b(.)150 4533 y Ft(LC_COLLATE)630 4643 y Fu(This)37 b(v)-5
-b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f
-(sorting)i(the)g(results)g(of)630 4752 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 4862 y(alence)e(classes,)h(and)e(collating)i(sequences)e
-(within)f(\014lename)h(expansion)g(and)f(pattern)630
-4971 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],)
-e(page)h(30\).)150 5121 y Ft(LC_CTYPE)96 b Fu(This)36
-b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m
-(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 5230
-y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f
-(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 5340 y(tion)31
-b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)p eop
-end
-%%Page: 79 85
-TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(LC_MESSAGES)630
-408 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i
-(used)d(to)i(translate)g(double-quoted)f(strings)g(pre-)630
-518 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h
-(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)150
-679 y Ft(LC_NUMERIC)630 788 y Fu(This)f(v)-5 b(ariable)31
-b(determines)f(the)h(lo)s(cale)h(category)g(used)e(for)g(n)m(um)m(b)s
-(er)f(formatting.)150 949 y Ft(LC_TIME)144 b Fu(This)25
-b(v)-5 b(ariable)26 b(determines)g(the)g(lo)s(cale)h(category)h(used)d
-(for)g(data)h(and)f(time)i(formatting.)150 1110 y Ft(LINENO)192
-b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g
-(function)h(curren)m(tly)f(executing.)150 1271 y Ft(LINES)240
-b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g
-(the)g(column)g(length)g(for)g(prin)m(ting)630 1380 y(selection)c
+b(If)39 b(the)630 886 y(v)-5 b(ariable)39 b(exists)f(but)g(do)s(es)f
+(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)f(v)-5 b(alue,)40
+b(or)e(has)g(no)g(v)-5 b(alue,)40 b(then)e(the)630 996
+y(default)31 b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31
+b(do)s(es)g(not)g(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f
+(of)h(input)630 1105 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
+1254 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g
+(initialization)j(\014le,)78 b(o)m(v)m(erriding)69 b(the)g(default)g
+(of)630 1363 y Ft(~/.inputrc)p Fu(.)150 1512 y Ft(INSIDE_EMACS)630
+1622 y Fu(If)29 b(Bash)h(\014nds)e(this)h(v)-5 b(ariable)31
+b(in)e(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)g(starts,)g(it)g
+(assumes)630 1731 y(that)i(the)g(shell)g(is)f(running)f(in)i(an)f
+(Emacs)h(shell)g(bu\013er)e(and)h(ma)m(y)i(disable)e(line)h(editing)630
+1841 y(dep)s(ending)d(on)h(the)h(v)-5 b(alue)31 b(of)f
+Ft(TERM)p Fu(.)150 1990 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f
+(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h(category)h(not)e(sp)s
+(eci\014cally)g(selected)630 2099 y(with)i(a)h(v)-5 b(ariable)31
+b(starting)g(with)f Ft(LC_)p Fu(.)150 2248 y Ft(LC_ALL)192
+b Fu(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5
+b(alue)29 b(of)g Ft(LANG)f Fu(and)g(an)m(y)h(other)g
+Ft(LC_)f Fu(v)-5 b(ariable)29 b(sp)s(ecifying)630 2358
+y(a)i(lo)s(cale)h(category)-8 b(.)150 2506 y Ft(LC_COLLATE)630
+2616 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i
+(order)d(used)g(when)f(sorting)i(the)g(results)g(of)630
+2725 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 2835 y(alence)e
+(classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h
+(expansion)g(and)f(pattern)630 2945 y(matc)m(hing)d(\(see)h(Section)f
+(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150 3093
+y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h
+(in)m(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h
+(of)630 3203 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
+3313 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150
+3461 y Ft(LC_MESSAGES)630 3571 y Fu(This)25 b(v)-5 b(ariable)27
+b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted)
+f(strings)g(pre-)630 3680 y(ceded)31 b(b)m(y)f(a)h(`)p
+Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8
+b(ranslation],)32 b(page)f(7\).)150 3829 y Ft(LC_NUMERIC)630
+3939 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h
+(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150
+4088 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26
+b(determines)g(the)g(lo)s(cale)h(category)h(used)d(for)g(data)h(and)f
+(time)i(formatting.)150 4236 y Ft(LINENO)192 b Fu(The)30
+b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g(function)h
+(curren)m(tly)f(executing.)150 4385 y Ft(LINES)240 b
+Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g
+(the)g(column)g(length)g(for)g(prin)m(ting)630 4495 y(selection)c
 (lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d
-Fu(option)j(is)f(enabled)h(\(see)630 1490 y(Section)44
-b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43
-b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1599
-y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1760 y
+Fu(option)j(is)f(enabled)h(\(see)630 4604 y(Section)44
+b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43
+b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4714
+y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4862 y
 Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f(the)h
 (system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e
-(the)630 1870 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h
-Fu(format.)150 2030 y Ft(MAILCHECK)630 2140 y Fu(Ho)m(w)d(often)g(\(in)
+(the)630 4972 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h
+Fu(format.)150 5121 y Ft(MAILCHECK)630 5230 y Fu(Ho)m(w)d(often)g(\(in)
 g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h
-(in)f(the)h(\014les)g(sp)s(eci\014ed)630 2250 y(in)i(the)h
+(in)f(the)h(\014les)g(sp)s(eci\014ed)630 5340 y(in)i(the)h
 Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43
 b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30
-b(it)h(is)g(time)630 2359 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e
-(shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g
-(prompt.)57 b(If)630 2469 y(this)37 b(v)-5 b(ariable)38
-b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h
-(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2578 y(equal)31
-b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150
-2739 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36
-b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h
-Ft(mapfile)d Fu(builtin)i(when)630 2849 y(no)30 b(v)-5
-b(ariable)31 b(name)g(is)f(supplied.)150 3009 y Ft(OLDPWD)192
-b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f
-(the)h Ft(cd)e Fu(builtin.)150 3170 y Ft(OPTERR)192 b
-Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g
-(error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630
-3280 y Fu(builtin)30 b(command.)150 3440 y Ft(OSTYPE)192
-b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f
-(is)h(running)d(on.)150 3601 y Ft(PIPESTATUS)630 3711
-y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h
-([Arra)m(ys],)g(page)f(91\))h(con)m(taining)g(a)f(list)g(of)g(exit)g
-(sta-)630 3820 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g
-(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630
-3930 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
-(command\).)150 4091 y Ft(POSIXLY_CORRECT)630 4200 y
+b(it)h(is)g(time)p eop end
+%%Page: 82 88
+TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(82)630 299 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
+408 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 518 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f
+(mail)h(c)m(hec)m(king.)150 682 y Ft(MAPFILE)144 b Fu(An)35
+b(arra)m(y)h(v)-5 b(ariable)36 b(created)g(to)h(hold)e(the)g(text)i
+(read)e(b)m(y)g(the)h Ft(mapfile)d Fu(builtin)i(when)630
+792 y(no)30 b(v)-5 b(ariable)31 b(name)g(is)f(supplied.)150
+956 y Ft(OLDPWD)192 b Fu(The)30 b(previous)g(w)m(orking)g(directory)h
+(as)g(set)g(b)m(y)f(the)h Ft(cd)e Fu(builtin.)150 1121
+y Ft(OPTERR)192 b Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36
+b(1,)i(Bash)e(displa)m(ys)g(error)f(messages)i(generated)g(b)m(y)f(the)
+g Ft(getopts)630 1230 y Fu(builtin)30 b(command.)150
+1395 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s
+(erating)h(system)g(Bash)f(is)h(running)d(on.)150 1559
+y Ft(PIPESTATUS)630 1669 y Fu(An)23 b(arra)m(y)h(v)-5
+b(ariable)24 b(\(see)h(Section)f(6.7)h([Arra)m(ys],)g(page)f(94\))h
+(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 1778
+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
+1888 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
+(command\).)150 2052 y Ft(POSIXLY_CORRECT)630 2162 y
 Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g
 (when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630
-4310 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s
-(de],)k(page)e(96\))g(b)s(efore)f(reading)g(the)g(startup)630
-4419 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s
+2271 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s
+(de],)k(page)e(99\))g(b)s(efore)f(reading)g(the)g(startup)630
+2381 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s
 (cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34
-b(it)h(is)g(set)g(while)630 4529 y(the)c(shell)f(is)h(running,)d(Bash)j
+b(it)h(is)g(set)g(while)630 2491 y(the)c(shell)f(is)h(running,)d(Bash)j
 (enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870
-4664 y Ft(set)47 b(-o)g(posix)630 4799 y Fu(had)30 b(b)s(een)f
-(executed.)150 4960 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g
-Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40
-b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150
-5121 y Ft(PROMPT_COMMAND)630 5230 y Fu(If)32 b(set,)h(the)f(v)-5
-b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s
-(efore)f(the)g(prin)m(ting)g(of)630 5340 y(eac)m(h)g(primary)d(prompt)g
-(\()p Ft($PS1)p Fu(\).)p eop end
-%%Page: 80 86
-TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(PROMPT_DIRTRIM)630
-408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f
-(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)
-e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h
-(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g
-Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f
-(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(94\).)39
-b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f
-(an)g(ellipsis.)150 911 y Ft(PS0)336 b Fu(The)30 b(v)-5
-b(alue)32 b(of)f(this)f(parameter)i(is)f(expanded)f(lik)m(e)i
-Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630
-1020 y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h
-(command)f(is)h(executed.)150 1194 y Ft(PS3)336 b Fu(The)34
-b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i
-(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52
-b(If)630 1303 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e
-Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g
-Fu(')150 1477 y Ft(PS4)336 b Fu(The)24 b(v)-5 b(alue)25
-b(is)f(the)h(prompt)e(prin)m(ted)h(b)s(efore)g(the)h(command)f(line)h
-(is)f(ec)m(ho)s(ed)i(when)d(the)i Ft(-x)630 1587 y Fu(option)32
-b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f
-(60\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 1696
-y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e
-(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630
-1806 y(indirection.)41 b(The)30 b(default)h(is)f(`)p
-Ft(+)g Fu('.)150 1979 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m
-(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f
-Fu(builtin.)150 2153 y Ft(RANDOM)192 b Fu(Eac)m(h)30
-b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger)
-h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 2262 y(is)i(generated.)43
-b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5
-b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630
-2372 y(erator.)150 2545 y Ft(READLINE_LINE)630 2655 y
-Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)f(for)
-h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630
-2765 y([Bash)i(Builtins],)g(page)g(49\).)150 2938 y Ft(READLINE_POINT)
-630 3048 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m
-(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p
-Ft(bind)630 3157 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g
-(Builtins],)g(page)g(49\).)150 3331 y Ft(REPLY)240 b
-Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g
-Ft(read)g Fu(builtin.)150 3504 y Ft(SECONDS)144 b Fu(This)40
-b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i
-(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630
-3614 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43
+2628 y Ft(set)47 b(-o)g(posix)630 2765 y Fu(had)33 b(b)s(een)g
+(executed.)51 b(When)33 b(the)h(shell)f(en)m(ters)h Fm(posix)f
+Fu(mo)s(de,)h(it)g(sets)g(this)g(v)-5 b(ariable)34 b(if)630
+2874 y(it)d(w)m(as)g(not)f(already)h(set.)150 3039 y
+Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g Fm(id)g Fu(of)h(the)f(shell's)h
+(paren)m(t)g(pro)s(cess.)40 b(This)30 b(v)-5 b(ariable)31
+b(is)f(readonly)-8 b(.)150 3203 y Ft(PROMPT_COMMAND)630
+3313 y Fu(If)32 b(set,)h(the)f(v)-5 b(alue)33 b(is)f(in)m(terpreted)g
+(as)g(a)h(command)f(to)h(execute)g(b)s(efore)f(the)g(prin)m(ting)g(of)
+630 3422 y(eac)m(h)g(primary)d(prompt)g(\()p Ft($PS1)p
+Fu(\).)150 3587 y Ft(PROMPT_DIRTRIM)630 3696 y Fu(If)e(set)g(to)h(a)g
+(n)m(um)m(b)s(er)e(greater)i(than)f(zero,)i(the)e(v)-5
+b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)e(of)h(trailing)630
+3806 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f(when)f
+(expanding)g(the)h Ft(\\w)f Fu(and)g Ft(\\W)g Fu(prompt)g(string)630
+3915 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h([Con)m(trolling)g(the)f
+(Prompt],)h(page)f(97\).)39 b(Characters)21 b(remo)m(v)m(ed)630
+4025 y(are)31 b(replaced)g(with)f(an)g(ellipsis.)150
+4189 y Ft(PS0)336 b Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)f(parameter)
+i(is)f(expanded)f(lik)m(e)i Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h
+(b)m(y)g(in)m(teractiv)m(e)630 4299 y(shells)f(after)h(reading)g(a)g
+(command)f(and)f(b)s(efore)h(the)h(command)f(is)h(executed.)150
+4463 y Ft(PS3)336 b Fu(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5
+b(ariable)35 b(is)g(used)e(as)i(the)f(prompt)g(for)g(the)g
+Ft(select)f Fu(command.)52 b(If)630 4573 y(this)30 b(v)-5
+b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h
+(prompts)f(with)h(`)p Ft(#?)g Fu(')150 4737 y Ft(PS4)336
+b Fu(The)37 b(v)-5 b(alue)37 b(of)g(this)g(parameter)h(is)f(expanded)f
+(lik)m(e)i Fr(PS1)44 b Fu(and)37 b(the)g(expanded)f(v)-5
+b(alue)38 b(is)630 4847 y(the)d(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)h Ft(-x)f
+Fu(option)h(is)630 4956 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g
+(Builtin],)j(page)e(61\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e
+(the)630 5066 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m
+(ultiple)g(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m
+(ultiple)630 5176 y(lev)m(els)e(of)e(indirection.)42
+b(The)29 b(default)i(is)f(`)p Ft(+)h Fu('.)150 5340 y
+Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m(orking)h(directory)g(as)f
+(set)h(b)m(y)f(the)h Ft(cd)f Fu(builtin.)p eop end
+%%Page: 83 89
+TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(RANDOM)192
+b Fu(Eac)m(h)30 b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f
+(random)g(in)m(teger)h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630
+408 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 518 y(erator.)150 675 y Ft(READLINE_LINE)630
+784 y Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)
+f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)
+630 894 y([Bash)i(Builtins],)g(page)g(50\).)150 1050
+y Ft(READLINE_POINT)630 1160 y Fu(The)23 b(p)s(osition)g(of)g(the)h
+(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h
+(for)f(use)g(with)g(`)p Ft(bind)630 1270 y(-x)p Fu(')30
+b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).)150
+1426 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32
+b(for)e(the)g Ft(read)g Fu(builtin.)150 1583 y Ft(SECONDS)144
+b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s
+(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630
+1692 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 3724 y(expanded)35 b(v)-5
+b(assigned,)j(and)c(the)630 1802 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 3833 y(the)31
-b(assignmen)m(t.)150 4007 y Ft(SHELL)240 b Fu(The)29
+(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 1911 y(the)31
+b(assignmen)m(t.)150 2068 y Ft(SHELL)240 b Fu(The)29
 b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m
 (vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630
-4116 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f
+2178 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
-4226 y(user's)30 b(login)h(shell.)150 4399 y Ft(SHELLOPTS)630
-4509 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.)
+2287 y(user's)30 b(login)h(shell.)150 2444 y Ft(SHELLOPTS)630
+2553 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.)
 41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5
-b(alid)630 4619 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e
+b(alid)630 2663 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e
 Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section)
-f(4.3.1)h([The)630 4728 y(Set)g(Builtin],)h(page)f(60\).)42
+f(4.3.1)h([The)630 2772 y(Set)g(Builtin],)h(page)f(61\).)42
 b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e
-Fu(are)j(those)h(rep)s(orted)630 4838 y(as)g(`)p Ft(on)p
+Fu(are)j(those)h(rep)s(orted)630 2882 y(as)g(`)p Ft(on)p
 Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5
 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h
-(starts)g(up,)630 4947 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list)
+(starts)g(up,)630 2992 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 5057 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
-b(.)150 5230 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac)
+(\014les.)630 3101 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
+b(.)150 3258 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac)
 m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38
-b(This)20 b(is)h(in)m(tended)630 5340 y(to)31 b(b)s(e)f(a)h(coun)m(t)g
-(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)p
-eop end
-%%Page: 81 87
-TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(TIMEFORMAT)630
-408 y Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f
-(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630
-518 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h
-(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630
-628 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h
-(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g
-(to)630 737 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)
-59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630
-847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h(p)
-s(ortions.)630 1006 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p
-Ft(\045)p Fu('.)630 1166 y Ft(\045[)p Fj(p)p Ft(][l]R)96
-b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 1325
+b(This)20 b(is)h(in)m(tended)630 3367 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
+3524 y Ft(TIMEFORMAT)630 3634 y Fu(The)f(v)-5 b(alue)32
+b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s
+(ecifying)f(ho)m(w)h(the)g(tim-)630 3743 y(ing)37 b(information)f(for)h
+(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w)
+m(ord)f(should)g(b)s(e)630 3853 y(displa)m(y)m(ed.)k(The)27
+b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s
+(e)g(sequence)g(that)g(is)f(expanded)g(to)630 3962 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
+4072 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h
+(p)s(ortions.)630 4228 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p
+Ft(\045)p Fu('.)630 4385 y Ft(\045[)p Fj(p)p Ft(][l]R)96
+b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 4542
 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h
 (CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630
-1484 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f
+4698 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f
 (of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630
-1644 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e
-(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 1803
+4855 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e
+(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 5011
 y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h
 (precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630
-1913 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35
+5121 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35
 b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h
-(fraction)g(to)g(b)s(e)630 2022 y(output.)48 b(A)m(t)34
+(fraction)g(to)g(b)s(e)630 5230 y(output.)48 b(A)m(t)34
 b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)
-h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 2132 y(of)31
+h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 5340 y(of)31
 b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42
 b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5
-b(alue)30 b(3)h(is)g(used.)630 2267 y(The)54 b(optional)h
-Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54
-b(min)m(utes,)61 b(of)54 b(the)g(form)630 2376 y Fr(MM)10
-b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5
-b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f
-(fraction)h(is)630 2486 y(included.)630 2620 y(If)30
-b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f
-(it)h(had)f(the)h(v)-5 b(alue)870 2755 y Ft
+b(alue)30 b(3)h(is)g(used.)p eop end
+%%Page: 84 90
+TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(The)54
+b(optional)h Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61
+b(including)54 b(min)m(utes,)61 b(of)54 b(the)g(form)630
+408 y Fr(MM)10 b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103
+b(The)50 b(v)-5 b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h
+(not)h(the)f(fraction)h(is)630 518 y(included.)630 653
+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 787 y Ft
 ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630
-2889 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f
+922 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f
 (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e
-(is)630 2999 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
-(y)m(ed.)150 3158 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
+(is)630 1031 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
+(y)m(ed.)150 1191 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
 b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e
-(the)h(default)g(timeout)g(for)g(the)630 3268 y Ft(read)31
+(the)h(default)g(timeout)g(for)g(the)630 1300 y Ft(read)31
 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g
-(49\).)47 b(The)32 b Ft(select)e Fu(command)630 3377
+(50\).)47 b(The)32 b Ft(select)e Fu(command)630 1410
 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 3487 y(not)k(arriv)m(e)g
+(11\))f(terminates)g(if)g(input)e(do)s(es)630 1519 y(not)k(arriv)m(e)g
 (after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a)
-h(terminal.)630 3621 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d
+h(terminal.)630 1654 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d
 (v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f
-(of)h(seconds)f(to)630 3731 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)
+(of)h(seconds)f(to)630 1763 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)
 e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26
-b(terminates)h(after)630 3841 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m
+b(terminates)h(after)630 1873 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m
 (b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s
-(es)h(not)h(arriv)m(e.)150 4000 y Ft(TMPDIR)192 b Fu(If)39
+(es)h(not)h(arriv)m(e.)150 2032 y Ft(TMPDIR)192 b Fu(If)39
 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a)
-g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 4110
+g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 2142
 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150
-4269 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g
+2301 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g
 (the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31
 b(is)f(readonly)-8 b(.)p eop end
-%%Page: 82 88
-TeXDict begin 82 87 bop 3659 -116 a Fu(82)150 299 y Fp(6)80
+%%Page: 85 91
+TeXDict begin 85 90 bop 3659 -116 a Fu(85)150 299 y Fp(6)80
 b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h
 (describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731
 y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e
 ([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p
-Ft(])e([-O)i Fj(shopt_option)p Ft(])e([)p Fj(ar-)390
-1000 y(gument)h Ft(...)o(])390 1110 y(bash)h([long-opt])e
-([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])f([-O)h
-Fj(shopt_option)p Ft(])d(-c)j Fj(string)f Ft([)p Fj(ar-)390
-1219 y(gument)g Ft(...)o(])390 1329 y(bash)h([long-opt])e(-s)i
-([-abefhkmnptuvxdBCDHP])42 b([-o)k Fj(option)p Ft(])g([-O)h
-Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1438 y(gument)i
-Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k
-(options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h
-(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(60\))i(can)e(b)s
-(e)f(used)h(as)g(options)g(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)
-74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m
-(ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61
-b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150
-1896 y(command)30 b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j
-(options)e(to)g(b)s(e)f(recognized.)150 2043 y Ft(--debugger)630
-2152 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e
-(executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8
-b(urns)630 2262 y(on)35 b(extended)g(debugging)f(mo)s(de)h(\(see)g
-(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)j(page)f(64,)630
-2371 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f
-Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519
-y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i
+Ft(])581 1000 y([-O)g Fj(shopt_option)p Ft(])d([)p Fj(argument)h
+Ft(...)o(])390 1110 y(bash)i([long-opt])e([-abefhkmnptuvxdBCDHP])c([-o)
+47 b Fj(option)p Ft(])581 1219 y([-O)g Fj(shopt_option)p
+Ft(])d(-c)j Fj(string)f Ft([)p Fj(argument)g Ft(...)o(])390
+1329 y(bash)h([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42
+b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p
+Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31
+b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h
+Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150
+1676 y(Builtin],)45 b(page)c(61\))i(can)e(b)s(e)f(used)h(as)g(options)g
+(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41
+b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m
+(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38
+b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 1896 y(command)30
+b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f
+(recognized.)150 2043 y Ft(--debugger)630 2152 y Fu(Arrange)j(for)g
+(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g
+(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g
+(debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g
+(Builtin],)j(page)f(65,)630 2371 y(for)30 b(a)h(description)f(of)h(the)
+f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150
+2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i
 (double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p
 Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2738
 y(output)29 b(in)g(the)g Fm(gnu)g Ft(gettext)f Fu(PO)g(\(p)s(ortable)i
@@ -13993,7 +14265,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150
 3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g
 Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h
 (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)
-f(Line)g(Editing],)630 4131 y(page)h(104\))h(to)f(read)g(command)f
+f(Line)g(Editing],)630 4131 y(page)h(107\))h(to)f(read)g(command)f
 (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150
 4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g
 (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h
@@ -14010,88 +14282,89 @@ b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s
 y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55
 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g
 (as)g(a)630 5230 y(strict)26 b(sup)s(erset)e(of)h(that)g(standard.)38
-b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(96,)630
+b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(99,)630
 5340 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f
 Fu(mo)s(de.)p eop end
-%%Page: 83 89
-TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(83)150 299 y Ft(--restricted)630
+%%Page: 86 92
+TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Ft(--restricted)630
 408 y Fu(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 518
-y(page)31 b(95\).)150 687 y Ft(--verbose)630 796 y Fu(Equiv)-5
+y(page)31 b(99\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5
 b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g
-(lines)g(as)h(they're)g(read.)150 965 y Ft(--version)630
-1074 y Fu(Sho)m(w)d(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 1184
-y(exit)j(successfully)-8 b(.)275 1357 y(There)28 b(are)i(sev)m(eral)g
+(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630
+1056 y Fu(Sho)m(w)d(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 1166
+y(exit)j(successfully)-8 b(.)275 1325 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 1467 y(not)i(a)m(v)-5
+i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1435 y(not)i(a)m(v)-5
 b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150
-1640 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h
-(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1749
-y(mand)p 859 1749 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49
+1594 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h
+(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1704
+y(mand)p 859 1704 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49
 b(If)32 b(there)h(are)g(argumen)m(ts)g(after)g(the)g
-Fr(command)p 3303 1749 V 40 w(string)p Fu(,)h(the)630
-1859 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e
+Fr(command)p 3303 1704 V 40 w(string)p Fu(,)h(the)630
+1813 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e
 Fu(and)h(an)m(y)g(remaining)g(argumen)m(ts)g(are)g(assigned)g(to)630
-1968 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37
+1923 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37
 b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g
-(shell,)630 2078 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g
-(error)g(messages.)150 2247 y Ft(-i)384 b Fu(F)-8 b(orce)22
+(shell,)630 2032 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g
+(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22
 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 2356 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(85.)150
-2525 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h
+(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(88.)150
+2461 y Ft(-l)384 b Fu(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 2634 y(is)37 b(in)m(teractiv)m(e,)43
+b(When)31 b(the)h(shell)630 2570 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 Ft(exec)30 b(-l)g(bash)p Fu('.)630
-2744 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c
+2680 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
-2853 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29
+2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29
 b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell)
-h(with)g(a)630 2963 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(84,)i(for)d(a)h
-(description)630 3073 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)
-f(a)h(login)g(shell.)150 3241 y Ft(-r)384 b Fu(Mak)m(e)54
+h(with)g(a)630 2899 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(87,)i(for)d(a)h
+(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)
+f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(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 3351 y(page)31 b(95\).)150
-3519 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f
+d(Restricted)j(Shell],)630 3278 y(page)31 b(99\).)150
+3437 y Ft(-s)384 b Fu(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 3629 y(commands)i(are)h(read)g(from)f(the)h(standard)f
+(then)630 3547 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
-3738 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 3907 y Ft(-D)384 b Fu(A)37
-b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p
-Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630
-4017 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5
-b(ject)38 b(to)h(language)g(translation)g(when)630 4126
+3656 y(parameters)i(to)h(b)s(e)e(set)i(when)d(in)m(v)m(oking)k(an)d(in)
+m(teractiv)m(e)k(shell)d(or)g(when)f(reading)h(input)630
+3766 y(through)f(a)g(pip)s(e.)150 3925 y Ft(-D)384 b
+Fu(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)
+h(`)p Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630
+4035 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5
+b(ject)38 b(to)h(language)g(translation)g(when)630 4144
 y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f
 Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8
-b(ranslation],)630 4236 y(page)31 b(7\).)42 b(This)29
+b(ranslation],)630 4254 y(page)31 b(7\).)42 b(This)29
 b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f
-(executed.)150 4404 y Ft([-+]O)f([)p Fj(shopt_option)p
-Ft(])630 4514 y Fr(shopt)p 854 4514 V 40 w(option)44
+(executed.)150 4413 y Ft([-+]O)f([)p Fj(shopt_option)p
+Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44
 b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h
-Ft(shopt)d Fu(builtin)i(\(see)630 4623 y(Section)32 b(4.3.2)h([The)e
-(Shopt)f(Builtin],)i(page)g(64\).)44 b(If)31 b Fr(shopt)p
-2724 4623 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f
-Fu(sets)630 4733 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h
+Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e
+(Shopt)f(Builtin],)i(page)g(65\).)44 b(If)31 b Fr(shopt)p
+2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f
+Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h
 Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423
-4733 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630
-4843 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g
+4742 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630
+4852 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g
 (accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g
-(standard)630 4952 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h
+(standard)630 4961 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h
 (option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in)
-f(a)h(format)f(that)630 5062 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.)
+f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.)
 150 5230 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(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 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g
 Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p
 eop end
-%%Page: 84 90
-TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(84)275 299 y(A)27 b
+%%Page: 87 93
+TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(87)275 299 y(A)27 b
 Fl(lo)-5 b(gin)35 b Fu(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 Ft(-)p
 Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150
@@ -14103,13 +14376,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150
 774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p
 Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51
 b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e
-(page)g(85,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h
+(page)g(88,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h
 (remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g
 Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140
 y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e
 (to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150
 1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page)
-h(40\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h
+h(41\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h
 (fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f
 (the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g
 (to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26
@@ -14123,9 +14396,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g
 (exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f
 (an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g
 (describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g
-(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275
+(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(23\).)275
 2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h
-(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(85.)150
+(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(88.)150
 2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j
 (shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m
 (v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g
@@ -14164,9 +14437,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g
 5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(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)p eop end
-%%Page: 85 91
-TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y(expanded)30
+%%Page: 88 94
+TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y(expanded)30
 b(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 408 y(command)g(w)m(ere)h(executed:)390 552
@@ -14247,9 +14520,9 @@ y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m
 (but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.)
 150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p
 eop end
-%%Page: 86 92
-TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Fk(6.3.1)63
+%%Page: 89 95
+TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Fk(6.3.1)63
 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150
 446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without)
 g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s
@@ -14284,1016 +14557,1048 @@ b(Shell)k(Beha)m(vior)150 3102 y Fu(When)30 b(the)h(shell)f(is)h
 (eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3234
 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
-3343 y(page)31 b(84.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g
-(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(100\))h(is)e(enabled)g(b)m
+3343 y(page)31 b(87.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g
+(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(103\))h(is)e(enabled)g(b)m
 (y)g(default.)46 b(When)32 b(job)330 3585 y(con)m(trol)j(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 Ft(SIGTTIN)p Fu(,)330 3694 y
 Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3826
-y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f
-Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i
-(and)d(ex-)330 3936 y(pands)30 b(and)g(displa)m(ys)h
-Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f
-(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)40
-b(Bash)31 b(displa)m(ys)f Ft(PS0)g Fu(after)h(it)g(reads)f(a)h(command)
-f(but)f(b)s(efore)h(executing)i(it.)199 4177 y(4.)61
+y(3.)61 b(Bash)25 b(expands)e(and)h(displa)m(ys)h Ft(PS1)e
+Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h
+(and)e(expands)330 3936 y(and)33 b(displa)m(ys)h Ft(PS2)f
+Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i
+(of)f(a)g(m)m(ulti-line)h(com-)330 4045 y(mand.)42 b(Bash)31
+b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g
+(command)g(but)f(b)s(efore)h(executing)330 4155 y(it.)62
+b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e
+(97,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4265
+y(string)30 b(escap)s(e)h(sequences.)199 4396 y(4.)61
 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h
 Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s
-(efore)g(prin)m(ting)330 4287 y(the)31 b(primary)e(prompt,)h
+(efore)g(prin)m(ting)330 4506 y(the)31 b(primary)e(prompt,)h
 Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32
-b(page)f(71\).)199 4419 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h
-([Command)g(Line)g(Editing],)h(page)g(104\))g(is)f(used)g(to)g(read)g
-(commands)330 4528 y(from)k(the)g(user's)g(terminal.)199
-4660 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37
+b(page)f(73\).)199 4638 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h
+([Command)g(Line)g(Editing],)h(page)g(107\))g(is)f(used)g(to)g(read)g
+(commands)330 4748 y(from)k(the)g(user's)g(terminal.)199
+4879 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37
 b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29
-b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4770
+b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4989
 y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g
 (standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330
-4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)199
-5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f
-(History)h(F)-8 b(acilities],)51 b(page)45 b(137\))h(and)d(history)330
-5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)
-k(page)45 b(139\))h(are)f(enabled)g(b)m(y)f(default.)330
-5230 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g
-(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g
-(with)330 5340 y(history)i(enabled)h(exits.)p eop end
-%%Page: 87 93
-TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(87)199 299 y(8.)61
-b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e
-(90\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 429
-y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g
-(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)
-f(39\).)154 560 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g
-(traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k
-(Section)e(3.7.6)i([Signals],)330 669 y(page)i(39\).)42
-b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
-800 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
+5099 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)199
+5230 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(141\))h(and)d(history)330
+5340 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)
+k(page)45 b(143\))h(are)f(enabled)g(b)m(y)f(default.)p
+eop end
+%%Page: 90 96
+TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(90)330 299 y(Bash)28
+b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)g(\014le)g
+(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)330
+408 y(history)i(enabled)h(exits.)199 541 y(8.)61 b(Alias)31
+b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e(93\))h(is)e
+(p)s(erformed)f(b)m(y)h(default.)199 674 y(9.)61 b(In)24
+b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g(ignores)f
+Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)f(41\).)154
+807 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g(traps,)f
+Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j(Section)f
+(3.7.6)h([Signals],)330 916 y(page)g(41\).)42 b Ft(SIGINT)29
+b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
+1049 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
 Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f
-Ft(huponexit)e Fu(shell)330 909 y(option)31 b(has)f(b)s(een)g(enabled)g
-(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(39\).)154
-1040 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g
+Ft(huponexit)e Fu(shell)330 1159 y(option)31 b(has)f(b)s(een)g(enabled)
+g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(41\).)154
+1291 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g
 (ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see)
-e(Section)h(4.3.1)g([The)330 1149 y(Set)g(Builtin],)g(page)g(60\).)154
-1280 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s
+e(Section)h(4.3.1)g([The)330 1401 y(Set)g(Builtin],)g(page)g(61\).)154
+1534 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s
 (dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32
 b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330
-1389 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31
+1643 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31
 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32
-b(page)f(71\).)154 1520 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
+b(page)f(73\).)154 1776 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
 (references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34
 b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330
-1629 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
-(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(60\).)154
-1760 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f
+1886 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
+(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(61\).)154
+2018 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f
 (errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48
-b(unset)g(or)h(n)m(ull)f(in)330 1869 y Ft(${)p Fj(var)p
+b(unset)g(or)h(n)m(ull)f(in)330 2128 y Ft(${)p Fj(var)p
 Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g
-([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154
-2000 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f
+([Shell)e(P)m(arameter)i(Expansion],)e(page)h(24\).)154
+2261 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
-2130 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f
+2393 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f
 (sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f
-(cause)330 2240 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(96\).)154 2370 y(18.)61
+(cause)330 2503 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(99\).)154 2636 y(18.)61
 b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g
 (exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330
-2480 y(page)e(42\).)154 2610 y(19.)61 b(P)m(arser)31
+2745 y(page)e(43\).)154 2878 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 2741 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g
+154 3011 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g
 (directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h
-(enabled)f(b)m(y)h(default)330 2850 y(\(see)35 b(the)g(description)f
+(enabled)f(b)m(y)h(default)330 3120 y(\(see)35 b(the)g(description)f
 (of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f
-Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2960 y(Shopt)30
-b(Builtin],)h(page)g(64\).)154 3090 y(21.)61 b(The)42
+Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3230 y(Shopt)30
+b(Builtin],)h(page)g(65\).)154 3363 y(21.)61 b(The)42
 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h
 Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h
-(not)330 3200 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s
+(not)330 3472 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s
 (er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f
-Fu(\(see)i(Section)g(5.2)h([Bash)330 3310 y(V)-8 b(ariables],)32
-b(page)f(71\).)150 3542 y Fs(6.4)68 b(Bash)45 b(Conditional)h
-(Expressions)150 3702 y Fu(Conditional)26 b(expressions)g(are)g(used)f
+Fu(\(see)i(Section)g(5.2)h([Bash)330 3582 y(V)-8 b(ariables],)32
+b(page)f(73\).)150 3819 y Fs(6.4)68 b(Bash)45 b(Conditional)h
+(Expressions)150 3979 y Fu(Conditional)26 b(expressions)g(are)g(used)f
 (b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h
-Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3811 y(commands.)275
-3942 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
-b(.)48 b(Unary)33 b(expressions)f(are)i(often)f(used)f(to)i(examine)g
-(the)150 4051 y(status)44 b(of)g(a)g(\014le.)80 b(There)43
-b(are)h(string)f(op)s(erators)h(and)f(n)m(umeric)g(comparison)h(op)s
-(erators)g(as)g(w)m(ell.)150 4161 y(Bash)26 b(handles)f(sev)m(eral)i
-(\014lenames)f(sp)s(ecially)g(when)f(they)g(are)i(used)d(in)i
-(expressions.)38 b(If)26 b(the)f(op)s(erating)150 4270
-y(system)d(on)g(whic)m(h)g(Bash)h(is)f(running)e(pro)m(vides)i(these)h
-(sp)s(ecial)g(\014les,)h(Bash)e(will)h(use)f(them;)j(otherwise)d(it)150
-4380 y(will)27 b(em)m(ulate)h(them)e(in)m(ternally)h(with)f(this)g(b)s
-(eha)m(vior:)39 b(If)26 b(the)g Fr(\014le)32 b Fu(argumen)m(t)27
-b(to)g(one)f(of)h(the)f(primaries)150 4489 y(is)33 b(of)g(the)f(form)h
-Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)h(\014le)h(descriptor)f
-Fr(N)43 b Fu(is)33 b(c)m(hec)m(k)m(ed.)49 b(If)33 b(the)f
-Fr(\014le)38 b Fu(argumen)m(t)33 b(to)h(one)f(of)150
-4599 y(the)f(primaries)g(is)g(one)g(of)g Ft(/dev/stdin)p
-Fu(,)e Ft(/dev/stdout)p Fu(,)f(or)j Ft(/dev/stderr)p
-Fu(,)d(\014le)j(descriptor)g(0,)h(1,)g(or)150 4709 y(2,)e(resp)s(ectiv)
-m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4839 y(When)37
-b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p
-Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h
-(curren)m(t)150 4949 y(lo)s(cale.)k(The)30 b Ft(test)f
-Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 5079 y(Unless)44
+Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4088 y(commands.)50
+b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f
+(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150
+4198 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g
+(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275
+4331 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
+b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38
+b(Unary)150 4440 y(expressions)c(are)g(often)g(used)g(to)g(examine)h
+(the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s
+(erators)h(and)150 4550 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f
+(w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s
+(ecially)g(when)e(they)150 4659 y(are)35 b(used)e(in)i(expressions.)52
+b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f
+(running)f(pro)m(vides)h(these)150 4769 y(sp)s(ecial)22
+b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m
+(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150
+4878 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27
+b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g
+Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f
+Fr(N)150 4988 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26
+b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g
+(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p
+Fu(,)150 5098 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h
+(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m
+(ed.)275 5230 y(When)37 b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p
+Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g
+(lexicographically)i(using)d(the)h(curren)m(t)150 5340
+y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI)s(I)e
+(ordering.)p eop end
+%%Page: 91 97
+TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Unless)44
 b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g
 (\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150
-5189 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h
-(than)f(the)g(link)h(itself.)150 5340 y Ft(-a)f Fj(file)162
-b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)p
-eop end
-%%Page: 88 94
-TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Ft(-b)30
+408 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h
+(than)f(the)g(link)h(itself.)150 564 y Ft(-a)f Fj(file)162
+b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150
+720 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g
+(\014le.)150 876 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s
+(ecial)f(\014le.)150 1032 y Ft(-d)f Fj(file)162 b Fu(T)-8
+b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)
+-8 b(.)150 1188 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists.)150 1344 y Ft(-f)30
 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36
-b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150
-461 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36
-b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial)f(\014le.)150
-623 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36
-b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 b(.)150
-785 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists.)150 948 y Ft(-f)30 b Fj(file)162
-b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
-b(and)f(is)g(a)h(regular)f(\014le.)150 1110 y Ft(-g)g
+b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150
+1500 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f
+(set.)150 1656 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g
+(link.)150 1812 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p
+Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 1968 y Ft(-p)g
 Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
-Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150
-1272 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150
-1434 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p Fu(stic)m(ky)p
-Ft(")h Fu(bit)g(is)f(set.)150 1596 y Ft(-p)g Fj(file)162
+Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150
+2124 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150
+2280 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f
+(zero.)150 2436 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30
+b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g
+(to)h(a)g(terminal.)150 2592 y Ft(-u)f Fj(file)162 b
+Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g
+(set-user-id)h(bit)f(is)h(set.)150 2748 y Ft(-w)f Fj(file)162
 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
-b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 1759
-y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36
-b Fu(exists)31 b(and)f(is)g(readable.)150 1921 y Ft(-s)g
-Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
-Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150
-2083 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor)
-f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150
-2245 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h
-(set.)150 2407 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30
-b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(writable.)150
-2570 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(executable.)150
-2732 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f
-(e\013ectiv)m(e)j(group)d(id.)150 2894 y Ft(-L)g Fj(file)162
+b(and)f(is)g(writable.)150 2904 y Ft(-x)g Fj(file)162
 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
-b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 3056 y Ft(-N)f
-Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
-Fu(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 3218 y Ft(-O)f Fj(file)162 b Fu(T)-8
-b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m
-(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150 3381 y Ft(-S)g
+b(and)f(is)g(executable.)150 3060 y Ft(-G)g Fj(file)162
+b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
+b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150
+3216 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150
+3372 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(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 3528 y Ft(-O)f
 Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
-Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 3543
-y Fj(file1)e Ft(-ef)g Fj(file2)630 3652 y Fu(T)-8 b(rue)30
-b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(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
-3814 y Fj(file1)f Ft(-nt)g Fj(file2)630 3924 y Fu(T)-8
-b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to)
-g(mo)s(di\014cation)f(date\))h(than)f Fr(\014le2)p Fu(,)i(or)e(if)g
-Fr(\014le1)31 b Fu(exists)630 4034 y(and)f Fr(\014le2)38
-b Fu(do)s(es)30 b(not.)150 4196 y Fj(file1)f Ft(-ot)g
-Fj(file2)630 4305 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38
-b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g
-Fr(\014le2)38 b Fu(exists)31 b(and)f Fr(\014le1)38 b
-Fu(do)s(es)30 b(not.)150 4468 y Ft(-o)g Fj(optname)630
-4577 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f
-Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h
-(app)s(ears)e(in)630 4687 y(the)33 b(description)h(of)f(the)g
-Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g
-(4.3.1)h([The)e(Set)630 4796 y(Builtin],)e(page)g(60\).)150
-4959 y Ft(-v)f Fj(varname)630 5068 y Fu(T)-8 b(rue)30
-b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35
-b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5
-b(alue\).)150 5230 y Ft(-R)30 b Fj(varname)630 5340 y
-Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32
-b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h
-(reference.)p eop end
-%%Page: 89 95
-TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Ft(-z)30
-b Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f
-Fr(string)38 b Fu(is)31 b(zero.)150 462 y Ft(-n)f Fj(string)150
-571 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f
-Fr(string)38 b Fu(is)31 b(non-zero.)150 734 y Fj(string1)d
-Ft(==)i Fj(string2)150 844 y(string1)e Ft(=)i Fj(string2)630
-953 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82
+Fu(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 3683 y Ft(-S)g Fj(file)162 b Fu(T)-8
+b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m
+(k)m(et.)150 3839 y Fj(file1)e Ft(-ef)g Fj(file2)630
+3949 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30
+b Fr(\014le2)38 b Fu(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 4105 y Fj(file1)f Ft(-nt)g
+Fj(file2)630 4215 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32
+b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h
+(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b
+Fu(exists)630 4324 y(and)f Fr(\014le2)38 b Fu(do)s(es)30
+b(not.)150 4480 y Fj(file1)f Ft(-ot)g Fj(file2)630 4590
+y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g
+Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31
+b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 4746
+y Ft(-o)g Fj(optname)630 4855 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h
+(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41
+b(list)h(of)f(options)h(app)s(ears)e(in)630 4965 y(the)33
+b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g
+Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630
+5074 y(Builtin],)e(page)g(61\).)150 5230 y Ft(-v)f Fj(varname)630
+5340 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32
+b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i
+(a)g(v)-5 b(alue\).)p eop end
+%%Page: 92 98
+TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Ft(-R)30
+b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5
+b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f
+(name)h(reference.)150 571 y Ft(-z)f Fj(string)66 b Fu(T)-8
+b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31
+b(zero.)150 734 y Ft(-n)f Fj(string)150 844 y(string)192
+b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38
+b Fu(is)31 b(non-zero.)150 1006 y Fj(string1)d Ft(==)i
+Fj(string2)150 1116 y(string1)e Ft(=)i Fj(string2)630
+1225 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82
 b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-)
-630 1063 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m
+630 1335 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m
 (v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630
-1173 y(Constructs],)30 b(page)h(10\).)630 1309 y(`)p
+1445 y(Constructs],)30 b(page)h(11\).)630 1581 y(`)p
 Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e
-Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1472
-y Fj(string1)e Ft(!=)i Fj(string2)630 1581 y Fu(T)-8
+Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1743
+y Fj(string1)e Ft(!=)i Fj(string2)630 1853 y Fu(T)-8
 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150
-1744 y Fj(string1)e Ft(<)i Fj(string2)630 1854 y Fu(T)-8
+2016 y Fj(string1)e Ft(<)i Fj(string2)630 2125 y Fu(T)-8
 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f
-Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2017
-y Fj(string1)28 b Ft(>)i Fj(string2)630 2126 y Fu(T)-8
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2288
+y Fj(string1)28 b Ft(>)i Fj(string2)630 2398 y Fu(T)-8
 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g
-Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2289
-y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2399 y Ft(OP)j Fu(is)h(one)g(of)h(`)
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2560
+y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2670 y Ft(OP)j Fu(is)h(one)g(of)h(`)
 p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p
 Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p
 Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630
-2508 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44
+2780 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44
 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f
-(than)f(or)630 2618 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i
+(than)f(or)630 2889 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i
 (than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8
-b(.)42 b Fr(Arg1)36 b Fu(and)630 2728 y Fr(arg2)j Fu(ma)m(y)30
-b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m(tegers.)150
-2974 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3133 y Fu(The)26
+b(.)42 b Fr(Arg1)36 b Fu(and)630 2999 y Fr(arg2)41 b
+Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m
+(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630
+3108 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33
+b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section)
+f(6.5)g([Shell)630 3218 y(Arithmetic],)e(page)f(92\).)150
+3464 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3623 y Fu(The)26
 b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5
 b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y)
-150 3243 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g
+150 3733 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g
 Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h
-Ft(declare)d Fu(builtin.)275 3381 y(Ev)-5 b(aluation)27
+Ft(declare)d Fu(builtin.)275 3870 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
-3490 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39
+3980 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 3600 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h
+(y)-8 b(,)32 b(and)150 4090 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 3709 y(lev)m(els)27
+(erators)g(is)g(group)s(ed)f(in)m(to)150 4199 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
-3874 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31
+4364 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31
 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150
-4037 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
-b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4200
+4526 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
+b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4689
 y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150
-4363 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
-4526 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 4688 y
+4852 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
+5015 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5177 y
 Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d
-(remainder)150 4851 y Ft(+)g(-)354 b Fu(addition,)31
-b(subtraction)150 5014 y Ft(<<)f(>>)258 b Fu(left)31
-b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 5177 y Ft(<=)f(>=)g(<)g(>)
-102 b Fu(comparison)150 5340 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32
-b(and)e(inequalit)m(y)p eop end
-%%Page: 90 96
-TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Ft(&)432
-b Fu(bit)m(wise)31 b(AND)150 459 y Ft(^)432 b Fu(bit)m(wise)31
-b(exclusiv)m(e)h(OR)150 618 y Ft(|)432 b Fu(bit)m(wise)31
-b(OR)150 778 y Ft(&&)384 b Fu(logical)33 b(AND)150 938
-y Ft(||)384 b Fu(logical)33 b(OR)150 1097 y Ft(expr)c(?)h(expr)f(:)h
-(expr)630 1207 y Fu(conditional)i(op)s(erator)150 1366
-y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630
-1476 y Fu(assignmen)m(t)150 1636 y Ft(expr1)g(,)h(expr2)630
-1745 y Fu(comma)275 1905 y(Shell)38 b(v)-5 b(ariables)39
+(remainder)150 5340 y Ft(+)g(-)354 b Fu(addition,)31
+b(subtraction)p eop end
+%%Page: 93 99
+TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(<<)30
+b(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150
+456 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 612
+y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150
+769 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 926 y Ft(^)432
+b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1082 y Ft(|)432
+b Fu(bit)m(wise)31 b(OR)150 1239 y Ft(&&)384 b Fu(logical)33
+b(AND)150 1396 y Ft(||)384 b Fu(logical)33 b(OR)150 1552
+y Ft(expr)c(?)h(expr)f(:)h(expr)630 1662 y Fu(conditional)i(op)s
+(erator)150 1819 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
+(^=)f(|=)630 1928 y Fu(assignmen)m(t)150 2085 y Ft(expr1)g(,)h(expr2)
+630 2195 y Fu(comma)275 2351 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 2015 y(expression)g(is)g(ev)-5
+f(p)s(erformed)g(b)s(efore)g(the)150 2461 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
-2124 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m
+2570 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 2234 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b)
+f(unset)150 2680 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 2343 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5
+(tax.)150 2790 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 2453
+(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2899
 y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m
 (en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p
-Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 2563 y(a)j(v)-5
+Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3009 y(a)j(v)-5
 b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5
 b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37
 b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b
-Fu(attribute)150 2672 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g
-(expression.)275 2807 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)
+Fu(attribute)150 3118 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g
+(expression.)275 3252 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)
 g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72
 b(A)41 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p
-Fu(')150 2916 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30
+Fu(')150 3361 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30
 b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5
 b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g
-Fr(base)150 3026 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m
+Fr(base)150 3471 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m
 (een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and)
-g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3136 y(in)c(that)g(base.)39
+g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3580 y(in)c(that)g(base.)39
 b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h
 (is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h
-(greater)150 3245 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h
+(greater)150 3690 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h
 (lo)m(w)m(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p
 Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150
-3355 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f
+3800 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f
 (equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i
-(ma)m(y)g(b)s(e)e(used)150 3464 y(in)m(terc)m(hangeably)32
+(ma)m(y)g(b)s(e)e(used)150 3909 y(in)m(terc)m(hangeably)32
 b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f
-(35.)275 3599 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46
+(35.)275 4042 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 3709 y(ev)-5 b(aluated)32
+b(in)g(paren)m(theses)i(are)150 4152 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 3950 y Fs(6.6)68 b(Aliases)150 4109
+(ab)s(o)m(v)m(e.)150 4390 y Fs(6.6)68 b(Aliases)150 4549
 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g
 (for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m
-(ord)h(of)h(a)150 4219 y(simple)32 b(command.)45 b(The)31
+(ord)h(of)h(a)150 4659 y(simple)32 b(command.)45 b(The)31
 b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s
-(e)e(set)h(and)g(unset)f(with)h(the)150 4329 y Ft(alias)d
-Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4463
+(e)e(set)h(and)g(unset)f(with)h(the)150 4768 y Ft(alias)d
+Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4902
 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f
 (unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g
-(alias.)150 4573 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m
+(alias.)150 5011 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m
 (y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p
 Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p
-Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4682 y(the)e(shell)g(metac)m
+Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 5121 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
-4792 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v)
+5230 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 4902 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i
+40 b(The)150 5340 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 5011 y(alias)c(b)s(eing)f(expanded)f(is)h
-(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one)
-g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 5121 y Ft("ls)f(-F")p
-Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h
-(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40
-b(If)150 5230 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5
-b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w)
-m(ord)h(follo)m(wing)i(the)150 5340 y(alias)f(is)e(also)h(c)m(hec)m(k)m
-(ed)i(for)d(alias)h(expansion.)p eop end
-%%Page: 91 97
-TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Aliases)29
-b(are)f(created)i(and)d(listed)i(with)f(the)g Ft(alias)f
-Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g Ft(unalias)150
-408 y Fu(command.)275 540 y(There)44 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
-Ft(csh)p Fu(.)83 b(If)150 650 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 759 y(page)31 b(17\).)275
-891 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 Ft(expand_aliases)150
-1000 y Fu(shell)e(option)f(is)h(set)g(using)f Ft(shopt)f
-Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(64\).)
-275 1132 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 1241 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i(one)e
-(complete)h(line)f(of)g(input)f(b)s(efore)g(executing)i(an)m(y)g(of)f
-(the)g(commands)f(on)150 1351 y(that)22 b(line.)39 b(Aliases)23
-b(are)f(expanded)f(when)g(a)h(command)g(is)f(read,)j(not)e(when)f(it)h
-(is)g(executed.)39 b(Therefore,)150 1461 y(an)24 b(alias)i
-(de\014nition)e(app)s(earing)g(on)g(the)h(same)g(line)f(as)h(another)g
-(command)f(do)s(es)g(not)h(tak)m(e)h(e\013ect)g(un)m(til)150
-1570 y(the)k(next)f(line)h(of)g(input)f(is)g(read.)40
-b(The)29 b(commands)h(follo)m(wing)h(the)e(alias)i(de\014nition)e(on)h
-(that)g(line)g(are)150 1680 y(not)j(a\013ected)h(b)m(y)f(the)g(new)f
-(alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e
-(functions)i(are)g(executed.)150 1789 y(Aliases)c(are)g(expanded)e
-(when)g(a)i(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g
-(function)g(is)g(executed,)150 1899 y(b)s(ecause)36 b(a)h(function)f
-(de\014nition)f(is)i(itself)g(a)f(command.)58 b(As)36
-b(a)h(consequence,)h(aliases)g(de\014ned)d(in)h(a)150
-2009 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31
-b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41
+(iden)m(tical)i(to)e(an)p eop end
+%%Page: 94 100
+TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y(alias)32
+b(b)s(eing)f(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43
+b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e
+Fu(to)150 408 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i
+(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen)
+m(t)h(text.)40 b(If)150 518 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h
+(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)
+h(command)e(w)m(ord)h(follo)m(wing)i(the)150 628 y(alias)f(is)e(also)h
+(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 770
+y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g
+Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g
+Ft(unalias)150 880 y Fu(command.)275 1023 y(There)44
+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 Ft(csh)p Fu(.)83
+b(If)150 1132 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 1242 y(page)31 b(17\).)275 1385 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 Ft(expand_aliases)150 1494 y Fu(shell)e(option)f(is)h
+(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g
+(Builtin],)h(page)g(65\).)275 1637 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 1747 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g
+(one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m
+(e)h(up)e(a)h(comp)s(ound)150 1856 y(command,)29 b(b)s(efore)g
+(executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h
+(the)f(comp)s(ound)f(command.)150 1966 y(Aliases)g(are)g(expanded)e
+(when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41
+b(Therefore,)28 b(an)f(alias)150 2075 y(de\014nition)36
+b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s
+(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2185
+y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo)
+m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150
+2295 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49
+b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions)
+i(are)g(executed.)150 2404 y(Aliases)c(are)g(expanded)e(when)g(a)i
+(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g(function)g
+(is)g(executed,)150 2514 y(b)s(ecause)36 b(a)h(function)f(de\014nition)
+f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g
+(de\014ned)d(in)h(a)150 2623 y(function)28 b(are)h(not)g(a)m(v)-5
+b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41
 b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150
-2118 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h
+2733 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h
 (use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275
-2250 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i
+2876 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
-2484 y Fs(6.7)68 b(Arra)l(ys)150 2644 y Fu(Bash)33 b(pro)m(vides)g
+3129 y Fs(6.7)68 b(Arra)l(ys)150 3288 y Fu(Bash)33 b(pro)m(vides)g
 (one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5
 b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150
-2753 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e
+3398 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e
 Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y)
--8 b(.)46 b(There)32 b(is)150 2863 y(no)h(maxim)m(um)g(limit)h(on)f
+-8 b(.)46 b(There)32 b(is)150 3507 y(no)h(maxim)m(um)g(limit)h(on)f
 (the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen)
-m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2973
+m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3617
 y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25
 b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e
-(arithmetic)150 3082 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
-e(Arithmetic],)k(page)d(89\)\))h(and)d(are)i(zero-based;)k(asso)s
-(ciativ)m(e)150 3192 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
+(arithmetic)150 3727 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
+e(Arithmetic],)k(page)d(92\)\))h(and)d(are)i(zero-based;)k(asso)s
+(ciativ)m(e)150 3836 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
 b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m
-(ust)g(b)s(e)g(non-)150 3301 y(negativ)m(e)d(in)m(tegers.)275
-3433 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c
+(ust)g(b)s(e)g(non-)150 3946 y(negativ)m(e)d(in)m(tegers.)275
+4088 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c
 (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m
-(tax)390 3564 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
-Fj(value)150 3696 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
+(tax)390 4231 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
+Fj(value)150 4374 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
 (an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5
 b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150
-3806 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
-b(use)390 3937 y Ft(declare)46 b(-a)h Fj(name)150 4069
-y Fu(The)30 b(syn)m(tax)390 4200 y Ft(declare)46 b(-a)h
-Fj(name)p Ft([)p Fj(subscript)p Ft(])150 4332 y Fu(is)30
+4484 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
+b(use)390 4626 y Ft(declare)46 b(-a)h Fj(name)150 4769
+y Fu(The)30 b(syn)m(tax)390 4912 y Ft(declare)46 b(-a)h
+Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5054 y Fu(is)30
 b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150
-4463 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390
-4595 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4726 y
-Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m
-(y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h
-Ft(readonly)150 4836 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g
-(applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8
-b(.)275 4967 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 5099 y Fj(name)p
-Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 5230
-y Fu(where)38 b(eac)m(h)i Fr(v)-5 b(alue)44 b Fu(is)39
-b(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p
-Fu(.)63 b(Indexed)37 b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150
-5340 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43
-b(When)31 b(assigning)g(to)h(indexed)e(arra)m(ys,)i(if)f(the)g
-(optional)h(subscript)e(is)p eop end
-%%Page: 92 98
-TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y(supplied,)32
-b(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f(the)g(index)f(of)h
-(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 408
-y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c(one.)41
-b(Indexing)30 b(starts)h(at)g(zero.)275 555 y(When)f(assigning)h(to)g
-(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 b(,)32 b(the)e(subscript)f(is)i
-(required.)275 701 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f
-(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen)
-m(ts)h(ma)m(y)g(b)s(e)150 810 y(assigned)e(to)g(using)f(the)g
-Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p Fj(value)25 b
-Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275
-956 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8
-b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g
-(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 1066 y(n)m(um)m(b)s(er)43
-b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e
-(the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150
-1176 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g
-(end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h
-(references)g(the)f(last)150 1285 y(elemen)m(t.)275 1431
-y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f
-(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p
-Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 1541 y(required)f(to)j(a)m
-(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion)
-f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150
-1650 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f
-(expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h
-Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150
-1760 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g
-(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j
-Ft(${)p Fj(name)p Ft([*]})150 1870 y Fu(expands)25 b(to)h(a)g(single)h
-(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)
-m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150
-1979 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
+5197 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390
+5340 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)p eop end
+%%Page: 95 101
+TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(95)275 299 y(A)m(ttributes)46
+b(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5
+b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150
+408 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g
+(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 548 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 687 y Fj(name)p Ft(=\()p Fj(value1)44
+b(value2)j Ft(...)f(\))150 827 y Fu(where)38 b(eac)m(h)i
+Fr(v)-5 b(alue)44 b Fu(is)39 b(of)g(the)g(form)f Ft([)p
+Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)63 b(Indexed)37
+b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 936 y(require)31
+b(an)m(ything)g(but)f Fr(string)p Fu(.)43 b(When)31 b(assigning)g(to)h
+(indexed)e(arra)m(ys,)i(if)f(the)g(optional)h(subscript)e(is)150
+1046 y(supplied,)i(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f
+(the)g(index)f(of)h(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150
+1156 y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c
+(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1295
+y(When)f(assigning)h(to)g(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8
+b(,)32 b(the)e(subscript)f(is)i(required.)275 1435 y(This)f(syn)m(tax)j
+(is)e(also)i(accepted)g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44
+b(Individual)31 b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150
+1544 y(assigned)e(to)g(using)f(the)g Fj(name)p Ft([)p
+Fj(subscript)p Ft(]=)p Fj(value)25 b Fu(syn)m(tax)31
+b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 1684 y(When)h(assigning)h(to)h
+(an)e(indexed)g(arra)m(y)-8 b(,)32 b(if)f Fr(name)36
+b Fu(is)31 b(subscripted)e(b)m(y)i(a)g(negativ)m(e)i(n)m(um)m(b)s(er,)c
+(that)150 1793 y(n)m(um)m(b)s(er)43 b(is)h(in)m(terpreted)h(as)f
+(relativ)m(e)j(to)e(one)f(greater)i(than)e(the)g(maxim)m(um)g(index)g
+(of)h Fr(name)p Fu(,)j(so)150 1903 y(negativ)m(e)30 b(indices)d(coun)m
+(t)h(bac)m(k)g(from)f(the)g(end)g(of)g(the)h(arra)m(y)-8
+b(,)29 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)f(last)150
+2012 y(elemen)m(t.)275 2152 y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)
+g(ma)m(y)h(b)s(e)f(referenced)g(using)g Ft(${)p Fj(name)p
+Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150
+2262 y(required)f(to)j(a)m(v)m(oid)f(con\015icts)g(with)f(the)h
+(shell's)f(\014lename)h(expansion)f(op)s(erators.)41
+b(If)28 b(the)i Fr(subscript)g Fu(is)150 2371 y(`)p Ft(@)p
+Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f(expands)f(to)i(all)g
+(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40
+b(These)29 b(subscripts)f(di\013er)h(only)150 2481 y(when)36
+b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g(quotes.)60
+b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j Ft(${)p
+Fj(name)p Ft([*]})150 2590 y Fu(expands)25 b(to)h(a)g(single)h(w)m(ord)
+e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)m(b)s(er)
+f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150
+2700 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
 b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h
 (of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150
-2089 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f
+2809 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f
 Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47
-b(If)31 b(the)i(double-quoted)150 2198 y(expansion)39
+b(If)31 b(the)i(double-quoted)150 2919 y(expansion)39
 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f
-(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 2308
+(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 3029
 y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h
 (expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150
-2418 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40
+3138 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40
 b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s
-(ecial)h(param-)150 2527 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p
+(ecial)h(param-)150 3248 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p
 Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p
 Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p
 Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150
-2637 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p
+3357 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p
 Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i
 (elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27
-b(the)g Fr(subscript)150 2746 y Fu(used)34 b(to)h(reference)g(an)f
+b(the)g Fr(subscript)150 3467 y Fu(used)34 b(to)h(reference)g(an)f
 (elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36
 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150
-2856 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h
+3577 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h
 (than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8
-b(,)33 b(so)g(negativ)m(e)150 2966 y(indices)d(coun)m(t)h(bac)m(k)h
+b(,)33 b(so)g(negativ)m(e)150 3686 y(indices)d(coun)m(t)h(bac)m(k)h
 (from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g
 (of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275
-3112 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42
+3826 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42
 b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42
-b(to)f(referencing)g(with)g(a)150 3221 y(subscript)35
+b(to)f(referencing)g(with)g(a)150 3935 y(subscript)35
 b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5
 b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j
-(and)c Ft(bash)g Fu(will)150 3331 y(create)d(an)e(arra)m(y)h(if)f
-(necessary)-8 b(.)275 3477 y(An)35 b(arra)m(y)i(v)-5
+(and)c Ft(bash)g Fu(will)150 4045 y(create)d(an)e(arra)m(y)h(if)f
+(necessary)-8 b(.)275 4184 y(An)35 b(arra)m(y)i(v)-5
 b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s
 (een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150
-3587 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275
-3733 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i
+4294 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275
+4433 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i
 (\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5
 b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p
-Fi(})150 3842 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5
+Fi(})150 4543 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5
 b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g
 (arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39
-b(treatmen)m(t)150 3952 y(when)i(in)g(double)g(quotes)h(is)f(similar)h
+b(treatmen)m(t)150 4653 y(when)i(in)g(double)g(quotes)h(is)f(similar)h
 (to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p
-Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4061 y(within)30
-b(double)g(quotes.)275 4208 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g
-(to)h(destro)m(y)g(arra)m(ys.)52 b Ft(unset)29 b Fj(name)p
-Ft([)p Fj(subscript)p Ft(])h Fu(destro)m(ys)35 b(the)g(ar-)150
-4317 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p
-Fu(.)61 b(Negativ)m(e)41 b(subscripts)36 b(to)i(indexed)g(arra)m(ys)g
-(are)g(in)m(terpreted)g(as)150 4427 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67
-b(Care)38 b(m)m(ust)h(b)s(e)f(tak)m(en)h(to)h(a)m(v)m(oid)g(un)m(w)m
-(an)m(ted)e(side)h(e\013ects)h(caused)e(b)m(y)h(\014lename)150
-4536 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34
-b(where)f Fr(name)39 b Fu(is)34 b(an)f(arra)m(y)-8 b(,)36
-b(remo)m(v)m(es)f(the)f(en)m(tire)g(arra)m(y)-8 b(.)52
-b(A)33 b(subscript)g(of)150 4646 y(`)p Ft(*)p Fu(')e(or)f(`)p
-Ft(@)p Fu(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8
-b(.)275 4792 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p
+Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4762 y(within)30
+b(double)g(quotes.)275 4902 y(The)25 b Ft(unset)g Fu(builtin)g(is)h
+(used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29
+b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g
+(arra)m(y)150 5011 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p
+Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are)
+f(in)m(terpreted)h(as)f(de-)150 5121 y(scrib)s(ed)30
+b(ab)s(o)m(v)m(e.)42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f
+(an)g(arra)m(y)g(v)-5 b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5
+b(ariable.)150 5230 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h
+Fr(name)33 b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f
+(en)m(tire)h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p
+Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 5340 y(remo)m(v)m(es)k
+(the)e(en)m(tire)i(arra)m(y)-8 b(.)p eop end
+%%Page: 96 102
+TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(96)275 299 y(When)35
+b(using)g(a)i(v)-5 b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i
+(an)g(argumen)m(t)g(to)h(a)f(command,)h(suc)m(h)f(as)150
+408 y(with)k Ft(unset)p Fu(,)h(without)e(using)h(the)g(w)m(ord)f
+(expansion)h(syn)m(tax)g(describ)s(ed)f(ab)s(o)m(v)m(e,)44
+b(the)c(argumen)m(t)g(is)150 518 y(sub)5 b(ject)25 b(to)h(the)g
+(shell's)g(\014lename)f(expansion.)39 b(If)25 b(\014lename)h(expansion)
+f(is)g(not)h(desired,)g(the)f(argumen)m(t)150 628 y(should)k(b)s(e)h
+(quoted.)275 773 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p
 Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g
 Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150
-4902 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f
-(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27
-b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150
-5011 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g
-Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g
-(from)g(the)150 5121 y(standard)h(input)g(to)i(an)f(arra)m(y)-8
-b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g
-(input)f(in)m(to)i(individual)150 5230 y(arra)m(y)f(elemen)m(ts.)62
+883 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an)
+h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h
+(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 992 y(precedence.)55
+b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e
+Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the)
+150 1102 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40
+b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f
+(in)m(to)i(individual)150 1212 y(arra)m(y)f(elemen)m(ts.)62
 b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g
 (arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150
-5340 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)p
+1321 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150
+1579 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150
+1738 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m
+(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g
+Fu(builtin)h(adds)g(directories)150 1848 y(to)42 b(the)f(stac)m(k)i(as)
+e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45
+b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed)
+150 1957 y(directories)29 b(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 2067 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m
+(ten)m(ts)i(of)e(the)g(directory)h(stac)m(k.)56 b(The)34
+b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 2176
+y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275
+2322 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
+Ft(DIRSTACK)e Fu(shell)150 2432 y(v)-5 b(ariable.)150
+2642 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
+2819 y Ft(dirs)870 2959 y(dirs)47 b([-clpv])e([+)p Fj(N)i
+Ft(|)h(-)p Fj(N)p Ft(])630 3099 y Fu(Displa)m(y)35 b(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 3209 y(the)28 b(list)h(with)f(the)g
+Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h
+(directories)g(from)630 3319 y(the)i(list.)41 b(The)30
+b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e
+(directory)i(in)f(the)h(stac)m(k.)630 3489 y Ft(-c)384
+b Fu(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 3659 y Ft(-l)384 b Fu(Pro)s(duces)31
+b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h
+(format)1110 3769 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h
+(directory)-8 b(.)630 3940 y Ft(-p)384 b Fu(Causes)30
+b Ft(dirs)f Fu(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 4110 y Ft(-v)384 b Fu(Causes)36
+b Ft(dirs)f Fu(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 4220 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.)630
+4390 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10
+b Fu(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 4500 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m
+(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)630
+4670 y Ft(-)p Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10
+b Fu(th)46 b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g
+(the)f(list)1110 4780 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g
+Fu(when)f(in)m(v)m(ok)m(ed)j(without)f(options\),)h(starting)g(with)e
+(zero.)150 4950 y Ft(popd)870 5090 y(popd)47 b([-n])f([+)p
+Fj(N)h Ft(|)h(-)p Fj(N)p Ft(])630 5230 y Fu(When)32 b(no)g(argumen)m
+(ts)h(are)g(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f
+(directory)h(from)f(the)g(stac)m(k)630 5340 y(and)f(p)s(erforms)e(a)j
+Ft(cd)f Fu(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)p
 eop end
-%%Page: 93 99
-TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Fs(6.8)68
-b(The)45 b(Directory)g(Stac)l(k)150 458 y Fu(The)21 b(directory)h(stac)
-m(k)h(is)e(a)h(list)g(of)f(recen)m(tly-visited)j(directories.)39
-b(The)20 b Ft(pushd)g Fu(builtin)h(adds)g(directories)150
-568 y(to)42 b(the)f(stac)m(k)i(as)e(it)h(c)m(hanges)g(the)f(curren)m(t)
-g(directory)-8 b(,)45 b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)
-m(es)j(sp)s(eci\014ed)150 677 y(directories)29 b(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 787 y Ft(dirs)34
-b Fu(builtin)g(displa)m(ys)h(the)g(con)m(ten)m(ts)i(of)e(the)g
-(directory)h(stac)m(k.)56 b(The)34 b(curren)m(t)h(directory)g(is)g(alw)
-m(a)m(ys)150 897 y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h
-(directory)g(stac)m(k.)275 1037 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 Ft(DIRSTACK)e Fu(shell)150 1146
-y(v)-5 b(ariable.)150 1351 y Fk(6.8.1)63 b(Directory)40
-b(Stac)m(k)g(Builtins)150 1525 y Ft(dirs)870 1663 y(dirs)47
-b([-clpv])e([+)p Fj(N)i Ft(|)h(-)p Fj(N)p Ft(])630 1800
-y Fu(Displa)m(y)35 b(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
-1909 y(the)28 b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f
-Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630
-2019 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a)
-m(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630
-2184 y Ft(-c)384 b Fu(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 2349 y
-Ft(-l)384 b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h
-(pathnames;)h(the)f(default)g(listing)h(format)1110 2458
-y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h(directory)-8
-b(.)630 2623 y Ft(-p)384 b Fu(Causes)30 b Ft(dirs)f Fu(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 2788 y Ft(-v)384 b Fu(Causes)36 b Ft(dirs)f Fu(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
-2898 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.)630 3063 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23
-b(the)f Fr(N)10 b Fu(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 3172 y(b)m(y)30
-b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h
-(starting)g(with)g(zero.)630 3337 y Ft(-)p Fj(N)384 b
-Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m
-(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110
-3447 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j
-(without)f(options\),)h(starting)g(with)e(zero.)150 3611
-y Ft(popd)870 3749 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p
-Fj(N)p Ft(])630 3886 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m
-(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the)
-g(stac)m(k)630 3995 y(and)f(p)s(erforms)e(a)j Ft(cd)f
-Fu(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 4105
-y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f
-Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5
-b(alen)m(t)33 b(to)630 4215 y Ft(popd)c(+0)p Fu(.)630
-4379 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g
-(directory)g(when)e(remo)m(ving)j(directo-)1110 4489
-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.)630 4654 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22
-b(the)f Fr(N)10 b Fu(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 4763 y(b)m(y)30
-b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 4928
-y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10
-b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g
-(the)g(list)1110 5038 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p
-Fu(\),)g(starting)h(with)f(zero.)150 5203 y Ft(pushd)870
-5340 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f
-Fj(dir)p Ft(])p eop end
-%%Page: 94 100
-TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(94)630 299 y(Sa)m(v)m(e)30
+%%Page: 97 103
+TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(97)630 299 y(0)33 b(starting)g(at)g
+(the)f(\014rst)g(directory)g(listed)h(with)f Ft(dirs)p
+Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 b(alen)m(t)33
+b(to)630 408 y Ft(popd)c(+0)p Fu(.)630 570 y Ft(-n)384
+b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g(directory)g(when)e
+(remo)m(ving)j(directo-)1110 679 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.)630
+841 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 b(the)f Fr(N)10
+b Fu(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 950 y(b)m(y)30 b Ft(dirs)p Fu(\),)g(starting)h
+(with)f(zero.)630 1111 y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46
+b(the)g Fr(N)10 b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g
+(righ)m(t)g(of)g(the)g(list)1110 1221 y(prin)m(ted)30
+b(b)m(y)g Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)150
+1382 y Ft(pushd)870 1518 y(pushd)46 b([-n])h([+)p Fj(N)g
+Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 1653 y Fu(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 Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630
-408 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f
-(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630
-518 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8
-b(.)630 675 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h
-(of)g(directory)f(when)g(rotating)h(or)f(adding)1110
-784 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h
-(stac)m(k)h(is)e(manipulated.)630 941 y Ft(+)p Fj(N)384
+1763 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)
+f(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630
+1872 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8
+b(.)630 2033 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)
+h(of)g(directory)f(when)g(rotating)h(or)f(adding)1110
+2143 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h
+(stac)m(k)h(is)e(manipulated.)630 2304 y Ft(+)p Fj(N)384
 b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h
 (from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110
-1051 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)
+2414 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)
 f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110
-1160 y(stac)m(k.)630 1317 y Ft(-)p Fj(N)384 b Fu(Brings)23
+2523 y(stac)m(k.)630 2685 y Ft(-)p Fj(N)384 b Fu(Brings)23
 b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i
-(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 1426 y(b)m(y)34
+(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 2794 y(b)m(y)34
 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h
-(the)f(list)h(b)m(y)f(rotating)i(the)1110 1536 y(stac)m(k.)630
-1693 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27
+(the)f(list)h(b)m(y)f(rotating)i(the)1110 2904 y(stac)m(k.)630
+3065 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27
 b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m
-(t)g(direc-)1110 1802 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied)
+(t)g(direc-)1110 3175 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied)
 f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150
-2040 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150
-2200 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25
+3418 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150
+3578 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25
 b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s(efore)f(Bash)
-i(prin)m(ts)e(eac)m(h)j(primary)150 2309 y(prompt.)39
+i(prin)m(ts)e(eac)m(h)j(primary)150 3687 y(prompt.)39
 b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a)h(non-n)m
 (ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29
-b(is)f(executed)i(just)150 2419 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m
-(yp)s(ed)h(on)h(the)f(command)g(line.)275 2552 y(In)d(addition,)j(the)f
+b(is)f(executed)i(just)150 3797 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m
+(yp)s(ed)h(on)h(the)f(command)g(line.)275 3933 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
-2661 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i
-Ft(PS4)p Fu(:)150 2818 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m
-(haracter.)150 2975 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f
-Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h
-Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p
-Ft(")p Fu(\).)150 3131 y Ft(\\D{)p Fj(format)p Ft(})630
-3241 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p
-Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)
-630 3351 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g
-(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65
-b(The)630 3460 y(braces)31 b(are)f(required.)150 3617
+4043 y(prompt)g(v)-5 b(ariables)32 b Ft(PS0)p Fu(,)d
+Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f Ft(PS4)p Fu(:)150
+4205 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m(haracter.)150
+4366 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f Ft(")p Fu(W)-8
+b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h Fu(format)f(\(e.g.,)h
+Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p Ft(")p Fu(\).)150
+4527 y Ft(\\D{)p Fj(format)p Ft(})630 4637 y Fu(The)c
+Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p Fu(\(3\))f(and)f(the)i
+(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)630
+4747 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g(a)h
+(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65
+b(The)630 4856 y(braces)31 b(are)f(required.)150 5017
 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150
-3773 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
-(`.'.)150 3930 y Ft(\\H)384 b Fu(The)30 b(hostname.)150
-4087 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m
-(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4243 y Ft(\\l)384
-b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g
-(name.)150 4400 y Ft(\\n)384 b Fu(A)30 b(newline.)150
-4557 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150
-4713 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f
-(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f
-(\014nal)e(slash\).)150 4870 y Ft(\\t)384 b Fu(The)30
-b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 5027
-y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)
-150 5183 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f
-(format.)150 5340 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h
-(HH:MM)g(format.)p eop end
-%%Page: 95 101
-TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Ft(\\u)384
-b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f(user.)150
-455 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h
-(2.00\))150 611 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m
-(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150
-766 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8
-b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f
-(the)630 876 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150
-1032 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p
-Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150
-1188 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f
-(command.)150 1343 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s
-(er)f(of)i(this)f(command.)150 1499 y Ft(\\$)384 b Fu(If)30
-b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g
-Ft($)p Fu(.)150 1655 y Ft(\\)p Fj(nnn)288 b Fu(The)30
-b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v)
--5 b(alue)31 b Fr(nnn)p Fu(.)150 1811 y Ft(\\\\)384 b
-Fu(A)30 b(bac)m(kslash.)150 1967 y Ft(\\[)384 b Fu(Begin)38
-b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61
-b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630
-2076 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)
-150 2232 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m
-(ting)g(c)m(haracters.)275 2388 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 2497
-y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f
+5179 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
+(`.'.)150 5340 y Ft(\\H)384 b Fu(The)30 b(hostname.)p
+eop end
+%%Page: 98 104
+TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(98)150 299 y Ft(\\j)384
+b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m(tly)h(managed)g(b)
+m(y)f(the)g(shell.)150 489 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f
+(the)h(shell's)f(terminal)h(device)g(name.)150 678 y
+Ft(\\n)384 b Fu(A)30 b(newline.)150 868 y Ft(\\r)384
+b Fu(A)30 b(carriage)i(return.)150 1058 y Ft(\\s)384
+b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f(basename)f(of)h
+Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f(\014nal)e
+(slash\).)150 1248 y Ft(\\t)384 b Fu(The)30 b(time,)h(in)f(24-hour)h
+(HH:MM:SS)g(format.)150 1437 y Ft(\\T)384 b Fu(The)30
+b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)150 1627
+y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f(format.)150
+1817 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM)g(format.)
+150 2006 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f
+(user.)150 2196 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h
+(\(e.g.,)h(2.00\))150 2386 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e
+(Bash,)h(v)m(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))
+150 2576 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g
+(directory)-8 b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h
+(tilde)h(\(uses)f(the)630 2685 y Ft($PROMPT_DIRTRIM)26
+b Fu(v)-5 b(ariable\).)150 2875 y Ft(\\W)384 b Fu(The)30
+b(basename)h(of)f Ft($PWD)p Fu(,)g(with)g Ft($HOME)f
+Fu(abbreviated)h(with)g(a)h(tilde.)150 3065 y Ft(\\!)384
+b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f(command.)150
+3254 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er)f(of)i(this)f
+(command.)150 3444 y Ft(\\$)384 b Fu(If)30 b(the)g(e\013ectiv)m(e)j
+(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g Ft($)p Fu(.)150
+3634 y Ft(\\)p Fj(nnn)288 b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s
+(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v)-5 b(alue)31 b
+Fr(nnn)p Fu(.)150 3824 y Ft(\\\\)384 b Fu(A)30 b(bac)m(kslash.)150
+4013 y Ft(\\[)384 b Fu(Begin)38 b(a)f(sequence)g(of)g(non-prin)m(ting)g
+(c)m(haracters.)61 b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)
+g(a)630 4123 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e
+(prompt.)150 4313 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f
+(non-prin)m(ting)g(c)m(haracters.)275 4518 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
+4627 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
-2607 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(137\),)j(while)d(the)f
-(command)150 2717 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g
+4737 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(141\),)j(while)d(the)f
+(command)150 4846 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 2826 y(session.)275 2959 y(After)35 b(the)g(string)g(is)g
+f(shell)150 4956 y(session.)275 5121 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 3068 y(tution,)k(arithmetic)f(expansion,)g(and)e
+(command)d(substi-)150 5230 y(tution,)k(arithmetic)f(expansion,)g(and)e
 (quote)h(remo)m(v)-5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5
-b(alue)36 b(of)g(the)g Ft(promptvars)150 3178 y Fu(shell)31
-b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(49\).)
-150 3415 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150
-3575 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h
-Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k
-Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3684 y(in)m(v)m(o)s(cation,)
-d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h
-(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150
-3794 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40
-b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f
-Ft(bash)e Fu(with)150 3903 y(the)31 b(exception)g(that)g(the)g(follo)m
-(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225
-4036 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f
-Ft(cd)g Fu(builtin.)225 4169 y Fq(\017)60 b Fu(Setting)31
+b(alue)36 b(of)g(the)g Ft(promptvars)150 5340 y Fu(shell)31
+b(option)f(\(see)i(Section)f(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
+(65\).)p eop end
+%%Page: 99 105
+TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Fs(6.10)68
+b(The)45 b(Restricted)h(Shell)150 458 y Fu(If)34 b(Bash)g(is)g(started)
+g(with)g(the)g(name)h Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30
+b Fu(or)k Ft(-r)g Fu(option)g(is)g(supplied)f(at)150
+568 y(in)m(v)m(o)s(cation,)d(the)d(shell)g(b)s(ecomes)h(restricted.)40
+b(A)27 b(restricted)h(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m
+(vironmen)m(t)150 677 y(more)g(con)m(trolled)i(than)e(the)g(standard)g
+(shell.)40 b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m
+(tically)h(to)f Ft(bash)e Fu(with)150 787 y(the)31 b(exception)g(that)g
+(the)g(follo)m(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s
+(erformed:)225 931 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g
+(the)f Ft(cd)g Fu(builtin.)225 1070 y Fq(\017)60 b Fu(Setting)31
 b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f
 Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g
-Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 4301 y Fq(\017)60
+Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 1210 y Fq(\017)60
 b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225
-4434 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m
+1349 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m
 (taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f
-Ft(.)h Fu(builtin)e(command.)225 4567 y Fq(\017)60 b
+Ft(.)h Fu(builtin)e(command.)225 1488 y Fq(\017)60 b
 Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h
 (an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f
-Ft(hash)330 4676 y Fu(builtin)e(command.)225 4809 y Fq(\017)60
+Ft(hash)330 1598 y Fu(builtin)e(command.)225 1737 y Fq(\017)60
 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g
-(en)m(vironmen)m(t)g(at)g(startup.)225 4942 y Fq(\017)60
+(en)m(vironmen)m(t)g(at)g(startup.)225 1876 y Fq(\017)60
 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d
 Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225
-5075 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p
+2016 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p
 Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p
 Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p
-Fu(')i(redirection)g(op)s(erators.)225 5207 y Fq(\017)60
+Fu(')i(redirection)g(op)s(erators.)225 2155 y Fq(\017)60
 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e
-(shell)h(with)f(another)h(command.)225 5340 y Fq(\017)60
+(shell)h(with)f(another)h(command.)225 2294 y Fq(\017)60
 b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f
 Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f
-Fu(builtin.)p eop end
-%%Page: 96 102
-TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(96)225 299 y Fq(\017)60
-b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g
-(disabled)f(shell)g(builtins.)225 434 y Fq(\017)60 b
-Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g(the)g
-Ft(command)d Fu(builtin.)225 569 y Fq(\017)60 b Fu(T)-8
-b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p
-Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p
-Fu('.)275 729 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m(y)
-g(startup)f(\014les)g(are)h(read.)275 865 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 974 y(Scripts],)25 b(page)e(40\),)j
-Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h(in)f(the)g(shell)
-h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 1216
-y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 1376 y Fu(Starting)39
-b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f
-(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150
-1485 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f
-(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m
-(hanging)150 1595 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g
-(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h
-(Bash)f(default)h(di\013ers.)275 1730 y(When)f(in)m(v)m(ok)m(ed)h(as)g
-Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h
-(reading)g(the)f(startup)g(\014les.)275 1866 y(The)f(follo)m(wing)j
-(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h
-Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 2001 y(1.)61 b(When)28
+Fu(builtin.)225 2433 y Fq(\017)60 b Fu(Using)31 b(the)f
+Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g
+(builtins.)225 2573 y Fq(\017)60 b Fu(Sp)s(ecifying)30
+b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225
+2712 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)
+f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p
+Fu('.)275 2886 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m
+(y)g(startup)f(\014les)g(are)h(read.)275 3030 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 3139 y(Scripts],)25
+b(page)e(41\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h
+(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)150
+3394 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 3554
+y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j
+(option)g(or)f(executing)h(`)p Ft(set)30 b(-o)g(posix)p
+Fu(')37 b(while)150 3663 y(Bash)26 b(is)g(running)e(will)j(cause)f
+(Bash)g(to)h(conform)f(more)g(closely)h(to)g(the)f Fm(posix)f
+Fu(standard)g(b)m(y)h(c)m(hanging)150 3773 y(the)31 b(b)s(eha)m(vior)f
+(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g
+Fu(in)g(areas)h(where)f(the)h(Bash)f(default)h(di\013ers.)275
+3917 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g
+Fm(posix)e Fu(mo)s(de)h(after)h(reading)g(the)f(startup)g(\014les.)275
+4061 y(The)f(follo)m(wing)j(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)
+p Fm(posix)h Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 4205
+y(1.)61 b(Bash)31 b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d
+Fu(v)-5 b(ariable)31 b(is)f(set.)199 4345 y(2.)61 b(When)28
 b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)
 f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330
-2111 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5
+4454 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5
 b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p
-Fu('.)199 2246 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g
+Fu('.)199 4593 y(3.)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 2355 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199
-2490 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con)
+(with)f(a)330 4703 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199
+4842 y(4.)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 2600 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31
+(is)330 4952 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31
 b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h
-Ft(SIGTSTP)p Fu(.)199 2735 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m
+Ft(SIGTSTP)p Fu(.)199 5091 y(5.)61 b(Alias)31 b(expansion)g(is)f(alw)m
 (a)m(ys)i(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199
-2870 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)
+5230 y(6.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)
 m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not)
-330 2979 y(undergo)30 b(alias)h(expansion.)199 3114 y(6.)61
+330 5340 y(undergo)30 b(alias)h(expansion.)p eop end
+%%Page: 100 106
+TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(100)199 299 y(7.)61
 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i
 (`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p
-Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 3224 y(enabled,)26
+Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 408 y(enabled,)26
 b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5
 b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330
-3333 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c
-Fu(option.)199 3468 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les)
-i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)
-f(Bash)g(\014les.)199 3603 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h
+518 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c
+Fu(option.)199 651 y(8.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les)i
+(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)f
+(Bash)g(\014les.)199 783 y(9.)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 3713 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h
-(on)e(the)h(line.)199 3848 y(9.)61 b(The)30 b(default)g(history)h
-(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)
-g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3982
-y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f
-(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)
-330 4092 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
-4227 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e
+(rather)330 893 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h(on)
+e(the)h(line.)154 1026 y(10.)61 b(The)30 b(default)g(history)h(\014le)f
+(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)g(v)-5
+b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 1158 y(11.)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
+1268 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
+1401 y(12.)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
-4362 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5
+1533 y(13.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5
 b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y)
-g(not)g(con)m(tain)g(c)m(haracters)330 4472 y(other)e(than)g(letters,)h
+g(not)g(con)m(tain)g(c)m(haracters)330 1643 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 4581 y(a)31 b(function)f(with)g(an)g(in)m(v)
+(digit.)49 b(Declaring)330 1752 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 4716 y(13.)61 b(F)-8
+(non-in)m(teractiv)m(e)j(shells.)154 1885 y(14.)61 b(F)-8
 b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f
 (of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154
-4851 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e
+2018 y(15.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e
 (b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154
-4986 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f
+2150 y(16.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f
 (de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s
-(es)f(not)h(prin)m(t)f(the)330 5095 y Ft(function)28
-b Fu(k)m(eyw)m(ord.)154 5230 y(16.)61 b(Literal)28 b(tildes)g(that)f
+(es)f(not)h(prin)m(t)f(the)330 2260 y Ft(function)28
+b Fu(k)m(eyw)m(ord.)154 2393 y(17.)61 b(Literal)28 b(tildes)g(that)f
 (app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of)
 e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330
-5340 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
-i(3.5.2)h([Tilde)f(Expansion],)f(page)h(22.)p eop end
-%%Page: 97 103
-TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(97)154 299 y(17.)61
-b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f
-(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h
-(w)m(a)m(y)-8 b(,)330 408 y(it)33 b(displa)m(ys)g(timing)g(statistics)h
-(for)e(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47
-b(The)32 b Ft(TIMEFORMAT)330 518 y Fu(v)-5 b(ariable)31
-b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154
-646 y(18.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p
-Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s
-(ears)f(within)f(double)h(quotes,)330 756 y(single)42
-b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e
-(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 865
-y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f
-(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330
-975 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h
-(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154
-1103 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
+2502 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
+i(3.5.2)h([Tilde)f(Expansion],)f(page)h(23.)154 2635
+y(18.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s
+(e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30
+b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 2744 y(it)33
+b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f(its)g
+(completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330
+2854 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f
+(timing)h(information.)154 2987 y(19.)61 b(When)33 b(parsing)g(and)f
+(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33
+b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330
+3096 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f
+(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330
+3206 y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s
+(erator)f(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e
+(pattern)330 3315 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)
+e(do)g(not)h(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154
+3448 y(20.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
 Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m
-(en)h(b)s(egins)d(with)i(a)330 1212 y(`)p Ft(-)p Fu('.)154
-1340 y(20.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e
+(en)h(b)s(egins)d(with)i(a)330 3558 y(`)p Ft(-)p Fu('.)154
+3690 y(21.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e
 (not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h
-(double-quoted)g(string,)330 1450 y(ev)m(en)g(if)f(the)h
-Ft(histexpand)d Fu(option)i(is)h(enabled.)154 1577 y(21.)61
+(double-quoted)g(string,)330 3800 y(ev)m(en)g(if)f(the)h
+Ft(histexpand)d Fu(option)i(is)h(enabled.)154 3933 y(22.)61
 b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h
 (error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39
-b(The)24 b(fatal)330 1687 y(errors)30 b(are)h(those)f(listed)h(in)f
+b(The)24 b(fatal)330 4042 y(errors)30 b(are)h(those)f(listed)h(in)f
 (the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i
-(passing)e(incorrect)330 1797 y(options,)43 b(redirection)d(errors,)i
+(passing)e(incorrect)330 4152 y(options,)43 b(redirection)d(errors,)i
 (v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i
-(preceding)f(the)330 1906 y(command)30 b(name,)h(and)f(so)g(on.)154
-2034 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e
+(preceding)f(the)330 4261 y(command)30 b(name,)h(and)f(so)g(on.)154
+4394 y(23.)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 2144 y(when)38 b(no)h(command)g(name)g(follo)m
+(error)e(o)s(ccurs)330 4504 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 2253 y(error)30
+b(v)-5 b(ariable)40 b(assignmen)m(t)330 4613 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 2381
-y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h
+b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 4746
+y(24.)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 2491 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g
+(o)s(ccurs)330 4855 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g
 (preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f
-(other)h(simple)330 2600 y(command.)154 2728 y(24.)61
+(other)h(simple)330 4965 y(command.)154 5098 y(25.)61
 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h
 (status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g
-Ft(for)330 2838 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5
+Ft(for)330 5207 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5
 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f
-(readonly)h(v)-5 b(ariable.)154 2966 y(25.)61 b(Non-in)m(teractiv)m(e)
+(readonly)h(v)-5 b(ariable.)154 5340 y(26.)61 b(Non-in)m(teractiv)m(e)
 34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b
-Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154
-3093 y(26.)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 3203 y(in)m(v)-5 b(alid)31 b(expression.)154
-3331 y(27.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f
-(parameter)h(expansion)g(error)f(o)s(ccurs.)154 3459
-y(28.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f
-(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f
-Ft(.)g Fu(or)h Ft(source)330 3568 y Fu(builtins,)30 b(or)g(in)g(a)h
-(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154
-3696 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5
-b(ailable.)154 3824 y(30.)61 b(While)32 b(v)-5 b(ariable)32
-b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s
-(e)g(applied)g(to)g(the)h(`)p Ft(#)p Fu(')f(and)f(`)p
-Ft(?)p Fu(')h(sp)s(ecial)330 3934 y(parameters.)154 4061
-y(31.)61 b(When)28 b(expanding)g(the)g(`)p Ft(*)p Fu(')g(sp)s(ecial)h
-(parameter)f(in)g(a)h(pattern)f(con)m(text)i(where)e(the)g(expansion)g
-(is)330 4171 y(double-quoted)i(do)s(es)g(not)h(treat)h(the)e
-Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154
-4299 y(32.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e
+Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)p eop
+end
+%%Page: 101 107
+TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(101)154 299 y(27.)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
+408 y(in)m(v)-5 b(alid)31 b(expression.)154 541 y(28.)61
+b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f(parameter)h
+(expansion)g(error)f(o)s(ccurs.)154 674 y(29.)61 b(Non-in)m(teractiv)m
+(e)27 b(shells)c(exit)i(if)e(there)h(is)f(a)h(syn)m(tax)g(error)f(in)g
+(a)h(script)f(read)g(with)h(the)f Ft(.)g Fu(or)h Ft(source)330
+783 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i
+(the)f Ft(eval)f Fu(builtin.)154 916 y(30.)61 b(Pro)s(cess)30
+b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 1049
+y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5
+b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p
+Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
+1158 y(parameters.)154 1291 y(32.)61 b(When)28 b(expanding)g(the)g(`)p
+Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i
+(where)e(the)g(expansion)g(is)330 1401 y(double-quoted)i(do)s(es)g(not)
+h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154
+1533 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e
 Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f
-(en)m(vironmen)m(t)330 4408 y(after)31 b(the)f(builtin)g(completes.)154
-4536 y(33.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f
+(en)m(vironmen)m(t)330 1643 y(after)31 b(the)f(builtin)g(completes.)154
+1775 y(34.)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 4646 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h
+330 1885 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h
 Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g
-(executed.)154 4774 y(34.)61 b(The)31 b Ft(command)e
+(executed.)154 2018 y(35.)61 b(The)31 b Ft(command)e
 Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)
-h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 4883 y(gumen)m(ts)40
+h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 2127 y(gumen)m(ts)40
 b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46
-b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 4993
+b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 2237
 y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m
-(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 5103
-y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 5230 y(35.)61
+(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 2346
+y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 2479 y(36.)61
 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g
 (describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330
-5340 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f
-(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)p
-eop end
-%%Page: 98 104
-TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(98)154 299 y(36.)61
-b(The)23 b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23
-b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h(single)g(line,)h
-(separated)e(b)m(y)g(spaces,)330 408 y(without)30 b(the)h(`)p
-Ft(SIG)p Fu(')f(pre\014x.)154 542 y(37.)61 b(The)30 b
-Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)h(signal)f(names)f(with)g
-(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 676 y(38.)61 b(The)38
-b Ft(export)f Fu(and)g Ft(readonly)f Fu(builtin)i(commands)g(displa)m
-(y)h(their)f(output)g(in)g(the)h(format)g(re-)330 786
-y(quired)30 b(b)m(y)g Fm(posix)p Fu(.)154 920 y(39.)61
-b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g(signal)i(names)e
-(without)g(the)h(leading)g Ft(SIG)p Fu(.)154 1054 y(40.)61
-b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g
-(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s
-(eci\014cation)330 1163 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling)
-e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that)
-h(argumen)m(t)330 1273 y(consists)e(solely)g(of)g(digits)g(and)f(is)g
-(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28
-b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330
-1383 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
+2589 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f
+(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)154
+2721 y(37.)61 b(The)23 b(output)f(of)i(`)p Ft(kill)29
+b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h
+(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 2831
+y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
+2964 y(38.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)
+h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
+3096 y(39.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f
+Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h
+(format)g(re-)330 3206 y(quired)30 b(b)m(y)g Fm(posix)p
+Fu(.)154 3339 y(40.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g
+(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p
+Fu(.)154 3471 y(41.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g
+(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e
+(signal)i(sp)s(eci\014cation)330 3581 y(and)30 b(rev)m(ert)i(the)e
+(signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g
+(is,)g(unless)f(that)h(argumen)m(t)330 3690 y(consists)e(solely)g(of)g
+(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38
+b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330
+3800 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
 (osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst)
-f(argumen)m(t.)154 1517 y(41.)61 b(The)21 b Ft(.)h Fu(and)f
+f(argumen)m(t.)154 3933 y(42.)61 b(The)21 b Ft(.)h Fu(and)f
 Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f
 (directory)h(for)g(the)g(\014lename)f(argumen)m(t)330
-1626 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g
-Ft(PATH)p Fu(.)154 1760 y(42.)61 b(Enabling)21 b Fm(posix)g
+4042 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g
+Ft(PATH)p Fu(.)154 4175 y(43.)61 b(Enabling)21 b Fm(posix)g
 Fu(mo)s(de)g(has)g(the)g(e\013ect)i(of)e(setting)i(the)e
 Ft(inherit_errexit)d Fu(option,)23 b(so)f(subshells)330
-1870 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h
+4284 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h
 (inherit)f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f
-Fu(option)h(from)g(the)330 1979 y(paren)m(t)37 b(shell.)62
+Fu(option)h(from)g(the)330 4394 y(paren)m(t)37 b(shell.)62
 b(When)37 b(the)g Ft(inherit_errexit)c Fu(option)38 b(is)f(not)h
-(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 2089 y Fu(option)31
-b(in)f(suc)m(h)g(subshells.)154 2223 y(43.)61 b(When)43
-b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i
-(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330
-2332 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g
-Ft(-p)g Fu(option)h(is)f(supplied.)154 2466 y(44.)61
-b(When)40 b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h
-(without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g
-(function)330 2576 y(names)30 b(and)g(de\014nitions.)154
-2710 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)
-m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37
-b(v)-5 b(alues)37 b(without)330 2819 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 2929 y(c)m(haracters.)154
-3063 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m
+(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 4504 y Fu(option)31
+b(in)f(suc)m(h)g(subshells.)154 4636 y(44.)61 b(Enabling)32
+b Fm(posix)f Fu(mo)s(de)h(has)g(the)h(e\013ect)g(of)g(setting)g(the)g
+Ft(shift_verbose)28 b Fu(option,)34 b(so)e(n)m(umeric)330
+4746 y(argumen)m(ts)f(to)g Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m
+(b)s(er)g(of)h(p)s(ositional)g(parameters)g(will)g(result)g(in)f(an)330
+4855 y(error)g(message.)154 4988 y(45.)61 b(When)43 b(the)g
+Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do)
+s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 5098 y(leading)31
+b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f
+(supplied.)154 5230 y(46.)61 b(When)40 b(the)g Ft(set)f
+Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es)
+f(not)g(displa)m(y)g(shell)g(function)330 5340 y(names)30
+b(and)g(de\014nitions.)p eop end
+%%Page: 102 108
+TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(102)154 299 y(47.)61
+b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i
+(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37
+b(v)-5 b(alues)37 b(without)330 408 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 518 y(c)m(haracters.)154
+653 y(48.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m
 (ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g
-(constructed)g(from)330 3173 y Ft($PWD)i Fu(and)h(the)h(directory)f
+(constructed)g(from)330 762 y Ft($PWD)i Fu(and)h(the)h(directory)f
 (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g
-(an)f(existing)330 3282 y(directory)-8 b(,)32 b Ft(cd)d
+(an)f(existing)330 872 y(directory)-8 b(,)32 b Ft(cd)d
 Fu(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f
-Fr(ph)m(ysical)j Fu(mo)s(de.)154 3416 y(47.)61 b(The)36
-b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5
+Fr(ph)m(ysical)j Fu(mo)s(de.)154 1006 y(49.)61 b(When)37
+b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m(hange)h(a)f(directory)g(b)s
+(ecause)g(the)g(length)g(of)f(the)h(pathname)330 1116
+y(constructed)52 b(from)f Ft($PWD)f Fu(and)g(the)i(directory)g(name)f
+(supplied)f(as)i(an)f(argumen)m(t)h(exceeds)330 1225
+y Fr(P)-8 b(A)g(TH)p 584 1225 28 4 v 41 w(MAX)42 b Fu(when)31
+b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,)h Ft(cd)f
+Fu(will)g(fail)h(instead)g(of)g(attempting)330 1335 y(to)e(use)f(only)h
+(the)f(supplied)f(directory)i(name.)154 1469 y(50.)61
+b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5
 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f
-(directory)-8 b(,)330 3526 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m
+(directory)-8 b(,)330 1579 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m
 (ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h
-Ft(-P)e Fu(option.)154 3660 y(48.)61 b(When)35 b(listing)g(the)g
+Ft(-P)e Fu(option.)154 1714 y(51.)61 b(When)35 b(listing)g(the)g
 (history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h
-(include)g(an)f(indication)i(of)f(whether)f(or)330 3769
+(include)g(an)f(indication)i(of)f(whether)f(or)330 1823
 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154
-3903 y(49.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g
-Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4037 y(50.)61 b(The)37
+1958 y(52.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g
+Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 2092 y(53.)61 b(The)37
 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort)
 f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
-4147 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
+2202 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
 (execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named)
-g(\014le)330 4256 y(found)i(in)h Ft($PATH)p Fu(.)154
-4390 y(51.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
+g(\014le)330 2311 y(found)i(in)h Ft($PATH)p Fu(.)154
+2446 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
 (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p
-Ft(v)p Fu(')f(command)g(is)g(run,)330 4500 y(instead)e(of)f(c)m(hec)m
-(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4634
-y(52.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j
+Ft(v)p Fu(')f(command)g(is)g(run,)330 2555 y(instead)e(of)f(c)m(hec)m
+(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 2690
+y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j
 (Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330
-4743 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54
+2800 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54
 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e)
-g(c)m(haracters)h(are)330 4853 y(con)m(v)m(erted.)154
-4987 y(53.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
+g(c)m(haracters)h(are)330 2909 y(con)m(v)m(erted.)154
+3044 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
 (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f
-Fu(and)g Ft(-f)f Fu(options.)154 5121 y(54.)61 b(The)39
+Fu(and)g Ft(-f)f Fu(options.)154 3178 y(57.)61 b(The)39
 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h
 (on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
-Ft(wait)330 5230 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
+Ft(wait)330 3288 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
 (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j
-(for)f(eac)m(h)330 5340 y(c)m(hild)31 b(that)g(exits.)p
-eop end
-%%Page: 99 105
-TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(99)154 299 y(55.)61
-b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m(terrupted)h(b)m
-(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s(een)f(set.)40
-b(If)27 b(Bash)330 408 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i
-(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i
-(and)f Ft(read)330 518 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i
-(than)e(128.)154 653 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i
-(bac)m(kground)e(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m
-(h)f(statuses)h(after)330 762 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)
-g(to)h(obtain)g(it.)275 922 y(There)j(is)g(other)h Fm(posix)f
-Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)
-g(default)f(ev)m(en)i(when)d(in)150 1031 y Fm(posix)d
-Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 1166 y(1.)61
-b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c
-Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h(if)f
-Ft(FCEDIT)f Fu(is)h(unset,)330 1275 y(rather)g(than)g(defaulting)h
-(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g
-Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 1410 y(2.)61
-b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g
-Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g
-Ft(echo)f Fu(builtin)330 1519 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275
-1679 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g
-Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s
-(ecifying)g(the)g Ft(--enable-)150 1788 y(strict-posix-default)c
-Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g
-([Optional)g(F)-8 b(eatures],)150 1898 y(page)31 b(144\).)p
-eop end
-%%Page: 100 106
-TeXDict begin 100 105 bop 3614 -116 a Fu(100)150 299
+(for)f(eac)m(h)330 3397 y(c)m(hild)31 b(that)g(exits.)154
+3532 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m
+(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s
+(een)f(set.)40 b(If)27 b(Bash)330 3641 y(receiv)m(es)41
+b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p
+Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330
+3751 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154
+3885 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
+(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h
+(after)330 3995 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)
+g(it.)275 4154 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h
+(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m
+(en)i(when)d(in)150 4264 y Fm(posix)d Fu(mo)s(de.)40
+b(Sp)s(eci\014cally:)199 4399 y(1.)61 b(The)30 b Ft(fc)f
+Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h
+(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330
+4508 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p
+Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f
+Fu(is)h(unset.)199 4643 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i
+(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e
+(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 4752
+y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 4912 y(Bash)c(can)g(b)s(e)f
+(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g
+(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150
+5021 y(strict-posix-default)c Fu(to)27 b Ft(configure)e
+Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8
+b(eatures],)150 5131 y(page)31 b(150\).)p eop end
+%%Page: 103 109
+TeXDict begin 103 108 bop 3614 -116 a Fu(103)150 299
 y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25
 b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it)
 h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access)
@@ -15385,9 +15690,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys)
 i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150
 5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p
 eop end
-%%Page: 101 107
-TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(101)275 299 y(A)38 b(job)g(ma)m(y)h(also)g
+%%Page: 104 110
+TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(104)275 299 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 408 y(substring)29
 b(that)i(app)s(ears)f(in)g(its)h(command)f(line.)41 b(F)-8
@@ -15397,188 +15702,201 @@ Fu(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m
 (taining)h(the)f(string)f(`)p Ft(ce)p Fu(')h(in)f(its)h(command)150
 628 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j
 (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275
-761 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it)
+767 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it)
 i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31
-b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Ft(fg)g(\0451)p
+b(is)g(a)h(synon)m(ym)e(for)150 876 y(`)p Ft(fg)g(\0451)p
 Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i
 (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p
-Fu(')i(resumes)150 980 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5
-b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1114
+Fu(')i(resumes)150 986 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5
+b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1125
 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 1223 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s
+150 1234 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 1333 y(an)m(y)k(other)f(output.)40
+g(to)g(not)g(in)m(terrupt)150 1344 y(an)m(y)k(other)f(output.)40
 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e
 Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges)
-150 1443 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)i(page)f(60\).)40 b(An)m(y)24 b(trap)f(on)h
-Ft(SIGCHLD)e Fu(is)i(executed)150 1552 y(for)30 b(eac)m(h)i(c)m(hild)e
-(pro)s(cess)g(that)h(exits.)275 1686 y(If)25 b(an)h(attempt)h(to)g
+150 1453 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g
+(Builtin],)i(page)f(61\).)40 b(An)m(y)24 b(trap)f(on)h
+Ft(SIGCHLD)e Fu(is)i(executed)150 1563 y(for)30 b(eac)m(h)i(c)m(hild)e
+(pro)s(cess)g(that)h(exits.)275 1702 y(If)25 b(an)h(attempt)h(to)g
 (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h
-(running,)e(if)h(the)g Ft(checkjobs)150 1795 y Fu(option)e(is)f
+(running,)e(if)h(the)g Ft(checkjobs)150 1812 y Fu(option)e(is)f
 (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page)
-e(64\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
-1905 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f
+e(65\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
+1921 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f
 (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39
-b(The)25 b Ft(jobs)150 2014 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f
+b(The)25 b Ft(jobs)150 2031 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f
 (used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36
-b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2124
+b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2140
 y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h
 (prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150
-2234 y(jobs)c(are)h(terminated.)150 2472 y Fs(7.2)68
-b(Job)45 b(Con)l(trol)h(Builtins)150 2656 y Ft(bg)870
-2789 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2923 y Fu(Resume)24
-b(eac)m(h)h(susp)s(ended)d(job)i Fr(jobsp)s(ec)29 b Fu(in)24
-b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g(started)630
-3032 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37
-b Fu(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45
-b(The)31 b(return)g(status)630 3142 y(is)i(zero)g(unless)f(it)h(is)g
-(run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f
-(run)f(with)h(job)630 3252 y(con)m(trol)h(enabled,)g(an)m(y)f
-Fr(jobsp)s(ec)37 b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h
-(a)g(job)g(that)g(w)m(as)g(started)630 3361 y(without)e(job)g(con)m
-(trol.)150 3519 y Ft(fg)870 3652 y(fg)47 b([)p Fj(jobspec)p
-Ft(])630 3786 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48
-b Fu(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f
-(job.)78 b(If)630 3895 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h
-(the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h
-(is)h(that)g(of)630 4005 y(the)d(command)g(placed)h(in)m(to)g(the)f
+2250 y(jobs)c(are)h(terminated.)275 2389 y(When)f(the)h(shell)g(is)f(w)
+m(aiting)i(for)f(a)g(job)f(or)h(pro)s(cess)f(using)g(the)h
+Ft(wait)f Fu(builtin,)g(and)g(job)h(con)m(trol)h(is)150
+2498 y(enabled,)27 b Ft(wait)f Fu(will)g(return)g(when)f(the)h(job)g(c)
+m(hanges)i(state.)41 b(The)25 b Ft(-f)h Fu(option)h(will)g(force)g
+Ft(wait)e Fu(to)i(w)m(ait)150 2608 y(un)m(til)k(the)f(job)g(or)h(pro)s
+(cess)f(terminates)h(b)s(efore)f(returning.)150 2855
+y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3042
+y Ft(bg)870 3179 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630
+3315 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i
+Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h
+(had)e(b)s(een)g(started)630 3425 y(with)32 b(`)p Ft(&)p
+Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the)
+h(curren)m(t)g(job)f(is)h(used.)45 b(The)31 b(return)g(status)630
+3535 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
+3644 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37
+b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g
+(w)m(as)g(started)630 3754 y(without)e(job)g(con)m(trol.)150
+3918 y Ft(fg)870 4054 y(fg)47 b([)p Fj(jobspec)p Ft(])630
+4191 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43
+b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f(job.)78
+b(If)630 4301 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f
+(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h(is)h
+(that)g(of)630 4410 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
-4114 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h
+4520 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h
 (enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630
-4224 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b
+4629 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b
 Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f
-(job)g(con)m(trol.)150 4381 y Ft(jobs)870 4515 y(jobs)47
-b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4625 y(jobs)i(-x)g
-Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4758 y Fu(The)30
+(job)g(con)m(trol.)150 4793 y Ft(jobs)870 4930 y(jobs)47
+b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5039 y(jobs)i(-x)g
+Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5176 y Fu(The)30
 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41
 b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630
-4916 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p
-Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630
-5073 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e
-(jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110
-5183 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f
-(status.)630 5340 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
-Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p
+5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p
+Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p
 eop end
-%%Page: 102 108
-TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(102)630 299 y Ft(-r)384
-b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y
-Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
-622 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
+%%Page: 105 111
+TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(105)630 299 y Ft(-n)384
+b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m
+(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31
+b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630
+570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
+Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630
+732 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630
+894 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
+1056 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
 (restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37
-b(If)23 b Fr(jobsp)s(ec)630 732 y Fu(is)30 b(not)h(supplied,)e(the)i
-(status)g(of)f(all)h(jobs)f(is)h(listed.)630 868 y(If)k(the)g
+b(If)23 b Fr(jobsp)s(ec)630 1165 y Fu(is)30 b(not)h(supplied,)e(the)i
+(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1301 y(If)k(the)g
 Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f
 Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630
-977 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)h
-(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p
-Fu(,)630 1087 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
-(its)g(exit)i(status.)150 1249 y Ft(kill)870 1384 y(kill)47
+1410 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)
+h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p
+Fu(,)630 1520 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
+(its)g(exit)i(status.)150 1682 y Ft(kill)870 1817 y(kill)47
 b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p
-Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1494
-y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 1630
+Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1927
+y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2063
 y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g
 Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f
-(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1739 y(cation)k
+(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2172 y(cation)k
 Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p
 Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m
-(e)i(signal)e(name)630 1849 y(suc)m(h)37 b(as)g Ft(SIGINT)f
+(e)i(signal)e(name)630 2282 y(suc)m(h)37 b(as)g Ft(SIGINT)f
 Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h
-(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 1958 y
+(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2392 y
 Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44
 b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h
-Ft(SIGTERM)d Fu(is)h(used.)630 2068 y(The)27 b Ft(-l)h
+Ft(SIGTERM)d Fu(is)h(used.)630 2501 y(The)27 b Ft(-l)h
 Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28
 b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g
-Fu(is)630 2178 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g
+Fu(is)630 2611 y(giv)m(en,)32 b(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
-2287 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
-1796 2287 28 4 v 41 w(status)32 b Fu(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 2397
+2720 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
+1796 2720 28 4 v 41 w(status)32 b Fu(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 2830
 y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h
 (signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5
-b(alen)m(t)630 2506 y(to)34 b Ft(-l)p Fu(.)47 b(The)32
+b(alen)m(t)630 2939 y(to)34 b Ft(-l)p Fu(.)47 b(The)32
 b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m
-(as)f(successfully)g(sen)m(t,)h(or)630 2616 y(non-zero)d(if)f(an)h
+(as)f(successfully)g(sen)m(t,)h(or)630 3049 y(non-zero)d(if)f(an)h
 (error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f
-(encoun)m(tered.)150 2778 y Ft(wait)870 2913 y(wait)47
-b([-n])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630
-3049 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s
+(encoun)m(tered.)150 3211 y Ft(wait)870 3346 y(wait)47
+b([-fn])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630
+3482 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s
 (eci\014ed)g(b)m(y)g(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i
-Fu(or)d(job)g(sp)s(eci\014cation)630 3159 y Fr(jobsp)s(ec)j
+Fu(or)d(job)g(sp)s(eci\014cation)630 3592 y Fr(jobsp)s(ec)j
 Fu(exits)c(and)f(return)g(the)g(exit)h(status)g(of)g(the)f(last)h
 (command)g(w)m(aited)g(for.)39 b(If)23 b(a)i(job)630
-3268 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g
+3701 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g
 (are)h(w)m(aited)g(for.)40 b(If)27 b(no)i(argumen)m(ts)f(are)h(giv)m
-(en,)630 3378 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s
+(en,)630 3811 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s
 (cesses)f(are)h(w)m(aited)g(for,)g(and)f(the)h(return)e(status)i(is)g
-(zero.)630 3487 y(If)f(the)g Ft(-n)g Fu(option)h(is)f(supplied,)g
-Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)h(job)f(to)h(terminate)g(and)f
-(returns)f(its)630 3597 y(exit)37 b(status.)56 b(If)36
-b(neither)f Fr(jobsp)s(ec)41 b Fu(nor)35 b Fr(pid)j Fu(sp)s(eci\014es)d
-(an)h(activ)m(e)i(c)m(hild)e(pro)s(cess)f(of)h(the)630
-3707 y(shell,)31 b(the)f(return)g(status)g(is)h(127.)150
-3868 y Ft(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p
-Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4140
+(zero.)630 3921 y(If)36 b(the)g Ft(-n)f Fu(option)i(is)f(supplied,)g
+Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)g(job)g(to)h(terminate)g(and)e
+(returns)630 4030 y(its)i(exit)g(status.)60 b(If)36 b(the)g
+Ft(-f)g Fu(option)h(is)g(supplied,)f(and)g(job)g(con)m(trol)i(is)f
+(enabled,)h Ft(wait)630 4140 y Fu(forces)g(eac)m(h)h
+Fr(pid)i Fu(or)d Fr(jobsp)s(ec)43 b Fu(to)38 b(terminate)h(b)s(efore)e
+(returning)g(its)i(status,)h(in)m(tead)f(of)630 4249
+y(returning)29 b(when)f(it)i(c)m(hanges)h(status.)41
+b(If)29 b(neither)g Fr(jobsp)s(ec)35 b Fu(nor)29 b Fr(pid)j
+Fu(sp)s(eci\014es)d(an)h(activ)m(e)630 4359 y(c)m(hild)h(pro)s(cess)f
+(of)g(the)h(shell,)g(the)f(return)f(status)i(is)f(127.)150
+4521 y Ft(disown)870 4656 y(disown)46 b([-ar])g([-h])h([)p
+Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4792
 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f
 Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47
-b(If)32 b(the)h Ft(-h)630 4249 y Fu(option)j(is)f(giv)m(en,)i(the)f
+b(If)32 b(the)h Ft(-h)630 4902 y Fu(option)j(is)f(giv)m(en,)i(the)f
 (job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i
-(mark)m(ed)f(so)g(that)630 4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h
+(mark)m(ed)f(so)g(that)630 5011 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h
 (to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e
 Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630
-4468 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f
+5121 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f
 Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g
-(job)f(is)630 4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k
+(job)f(is)630 5230 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k
 Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m
-(e)h(or)e(mark)h(all)g(jobs;)630 4688 y(the)31 b Ft(-r)e
+(e)h(or)e(mark)h(all)g(jobs;)630 5340 y(the)31 b Ft(-r)e
 Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30
-b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150
-4849 y Ft(suspend)870 4985 y(suspend)46 b([-f])630 5121
-y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h
-(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33
-b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g
-Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h(this)e
-(and)g(force)630 5340 y(the)k(susp)s(ension.)p eop end
-%%Page: 103 109
-TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(103)275 299 y(When)30 b(job)f(con)m(trol)j
-(is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f
+b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)p eop
+end
+%%Page: 106 112
+TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(106)150 299 y Ft(suspend)870
+433 y(suspend)46 b([-f])630 568 y Fu(Susp)s(end)31 b(the)i(execution)h
+(of)g(this)f(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e
+Ft(SIGCONT)f Fu(signal.)50 b(A)33 b(login)630 677 y(shell)28
+b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s
+(e)f(used)g(to)h(o)m(v)m(erride)h(this)e(and)g(force)630
+787 y(the)k(susp)s(ension.)275 946 y(When)f(job)f(con)m(trol)j(is)e
+(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f
 Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150
-408 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)
-h Fm(id)p Fu(s.)150 649 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11
-b(ariables)150 834 y Ft(auto_resume)630 943 y Fu(This)31
+1056 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s
+(cess)h Fm(id)p Fu(s.)150 1297 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)
+-11 b(ariables)150 1481 y Ft(auto_resume)630 1591 y Fu(This)31
 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m
 (teracts)h(with)e(the)h(user)e(and)h(job)g(con)m(trol.)45
-b(If)630 1053 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h
+b(If)630 1700 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
-1162 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g
+1810 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
-1272 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s
+1919 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
-1381 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.)
+2029 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
-1491 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g
+2139 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 1601 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
+b(alue)630 2248 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
 (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h
-(exactly;)j(if)630 1710 y(set)29 b(to)h(`)p Ft(substring)p
+(exactly;)j(if)630 2358 y(set)29 b(to)h(`)p Ft(substring)p
 Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f
-(substring)f(of)h(the)g(name)630 1820 y(of)38 b(a)f(stopp)s(ed)g(job.)
+(substring)f(of)h(the)g(name)630 2467 y(of)38 b(a)f(stopp)s(ed)g(job.)
 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38
 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630
-1929 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
-(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(100\).)56
-b(If)34 b(set)i(to)g(an)m(y)630 2039 y(other)c(v)-5 b(alue,)32
+2577 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
+(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(103\).)56
+b(If)34 b(set)i(to)g(an)m(y)630 2687 y(other)c(v)-5 b(alue,)32
 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g
-(stopp)s(ed)e(job's)i(name;)g(this)630 2149 y(pro)m(vides)e
+(stopp)s(ed)e(job's)i(name;)g(this)630 2796 y(pro)m(vides)e
 (functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p
 Fu(')f(job)g Fm(id)p Fu(.)p eop end
-%%Page: 104 110
-TeXDict begin 104 109 bop 3614 -116 a Fu(104)150 299
+%%Page: 107 113
+TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299
 y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28
 b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g
 Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42
@@ -15591,7 +15909,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g
 (shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150
 1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g
 Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h
-(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(49\).)52
+(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(50\).)52
 b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f
 (to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g
 (in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34
@@ -15599,7 +15917,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150
 1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30
 b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g
 (\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g
-(60\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g
+(61\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g
 Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150
 1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
 1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
@@ -15638,7 +15956,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p
 Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g
 (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
 h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i
-(page)e(107\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
+(page)e(110\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
 Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s
 (duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30
 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h
@@ -15662,9 +15980,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
 Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
 (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340
 y(within)c(the)g(line.)p eop end
-%%Page: 105 111
-TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(105)150 299 y Fk(8.2.1)63
+%%Page: 108 114
+TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(108)150 299 y Fk(8.2.1)63
 b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31
 b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g
 (simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i
@@ -15731,9 +16049,9 @@ b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
 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: 106 112
-TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(106)150 299 y Fk(8.2.3)63
+%%Page: 109 115
+TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(109)150 299 y Fk(8.2.3)63
 b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35
 b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i
 (but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f
@@ -15807,13 +16125,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40
 b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35
 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i
 (command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h
-(F)-8 b(acilities],)42 b(page)37 b(137\))i(for)d(lines)h(con)m(taining)
+(F)-8 b(acilities],)42 b(page)37 b(141\))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
 5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35
 b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end
-%%Page: 107 113
-TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(107)275 299 y(Incremen)m(tal)26
+%%Page: 110 116
+TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(110)275 299 y(Incremen)m(tal)26
 b(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
 408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
@@ -15889,7 +16207,7 @@ b(lines)h(are)150 4515 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
 (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41
 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150
 4625 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g
-([Conditional)g(Init)e(Constructs],)j(page)e(115\).)64
+([Conditional)g(Init)e(Constructs],)j(page)e(118\).)64
 b(Other)150 4735 y(lines)31 b(denote)g(v)-5 b(ariable)31
 b(settings)g(and)f(k)m(ey)h(bindings.)150 4882 y(V)-8
 b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
@@ -15898,9 +16216,9 @@ b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
 b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h
 (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5211 y(is)d(simple:)870
 5340 y Ft(set)47 b Fj(variable)e(value)p eop end
-%%Page: 108 114
-TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y(Here,)29
+%%Page: 111 117
+TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y(Here,)29
 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 408 y(use)k
 Ft(vi)g Fu(line)h(editing)g(commands:)870 541 y Ft(set)47
@@ -15917,7 +16235,7 @@ b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
 1268 y(The)37 b Ft(bind)30 b(-V)37 b Fu(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 1377 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)
-g(49.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g
+g(50.)630 1510 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 1666 y Ft(bell-style)1110 1775 y Fu(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
@@ -15966,508 +16284,556 @@ b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
 5340 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
 (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)p
 eop end
-%%Page: 109 115
-TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Ft
+%%Page: 112 118
+TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(112)630 299 y Ft
 (completion-ignore-case)1110 408 y Fu(If)27 b(set)h(to)g(`)p
 Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
 (and)e(completion)1110 518 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 Ft(off)p
-Fu('.)630 669 y Ft(completion-map-case)1110 778 y Fu(If)22
+Fu('.)630 682 y Ft(completion-map-case)1110 792 y Fu(If)22
 b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31
-b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 888 y(h)m(yphens)29
+b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 902 y(h)m(yphens)29
 b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p
 Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
-998 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e
-(completion.)630 1148 y Ft(completion-prefix-displa)o(y-le)o(ngth)1110
-1258 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h
-(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 1367
-y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
-(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1477
+1011 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 1121 y(v)-5 b(alue)31
+b(is)f(`)p Ft(off)p Fu('.)630 1285 y Ft(completion-prefix-displa)o
+(y-le)o(ngth)1110 1395 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f
+(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
+1504 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1614
 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e
-(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 1587
+(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 1724
 y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)630 1737 y Ft(completion-query-items)1110
-1847 y Fu(The)c(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 1956 y(is)i(ask)m(ed)h
+f(completions.)630 1888 y Ft(completion-query-items)1110
+1998 y Fu(The)c(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 2107 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 2066 y(n)m(um)m(b)s(er)d(of)h
+(displa)m(y)m(ed.)41 b(If)29 b(the)1110 2217 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 2176 y(will)f(ask)g(the)f(user)g(whether)g
+b(alue,)28 b(Readline)1110 2326 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
-2285 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5
+2436 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 2395 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40
+b(alue)1110 2545 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40
 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110
-2504 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g
-Ft(100)p Fu(.)630 2655 y Ft(convert-meta)1110 2765 y
+2655 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g
+Ft(100)p Fu(.)630 2819 y Ft(convert-meta)1110 2929 y
 Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)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
-2874 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g
+3039 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g
 (stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110
-2984 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f
-(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 3093
+3148 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f
+(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 3258
 y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will)
 i(b)s(e)f(set)h(to)g(`)p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f
-(one)1110 3203 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
-3354 y Ft(disable-completion)1110 3463 y Fu(If)k(set)h(to)h(`)p
+(one)1110 3367 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+3532 y Ft(disable-completion)1110 3641 y Fu(If)k(set)h(to)h(`)p
 Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
-b(Completion)1110 3573 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+b(Completion)1110 3751 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
-3682 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 3833 y Ft(echo-control-characters)1110
-3943 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h
-(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4052
+3861 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p
+Ft(off)p Fu('.)630 4025 y Ft(echo-control-characters)1110
+4134 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4244
 y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
-(to)j(a)f(signal)g(generated)1110 4162 y(from)e(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4313
-y Ft(editing-mode)1110 4422 y Fu(The)d Ft(editing-mode)e
+(to)j(a)f(signal)g(generated)1110 4354 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4518
+y Ft(editing-mode)1110 4628 y Fu(The)d Ft(editing-mode)e
 Fu(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 4532 y(ings)25 b(is)g(used.)38 b(By)26
+m(ey)i(bind-)1110 4737 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 4641 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+1110 4847 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
-4751 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p
-Ft(vi)p Fu('.)630 4902 y Ft(emacs-mode-string)1110 5011
-y Fu(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e
-(the)h(last)g(line)h(of)e(the)h(pri-)1110 5121 y(mary)43
-b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82
-b(The)43 b(v)-5 b(alue)44 b(is)1110 5230 y(expanded)28
-b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g
-(meta-)g(and)f(con-)1110 5340 y(trol)36 b(pre\014xes)e(and)h(bac)m
-(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58
-b(Use)36 b(the)p eop end
-%%Page: 110 116
-TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(110)1110 299 y(`)p
-Ft(\\1)p Fu(')38 b(and)f(`)p Ft(\\2)p Fu(')h(escap)s(es)g(to)h(b)s
-(egin)e(and)h(end)f(sequences)h(of)g(non-prin)m(ting)1110
-408 y(c)m(haracters,)27 b(whic)m(h)c(can)h(b)s(e)f(used)f(to)j(em)m(b)s
-(ed)e(a)h(terminal)g(con)m(trol)h(sequence)1110 518 y(in)m(to)31
-b(the)g(mo)s(de)f(string.)41 b(The)29 b(default)i(is)f(`)p
-Ft(@)p Fu('.)630 682 y Ft(enable-bracketed-paste)1110
-792 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g
+4956 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p
+Ft(vi)p Fu('.)630 5121 y Ft(emacs-mode-string)1110 5230
+y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+5340 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)p eop end
+%%Page: 113 119
+TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(emacs)22
+b(editing)h(mo)s(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5
+b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f(bind-)1110
+408 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i(and)e(con)m
+(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110 518 y(escap)s(e)f
+(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p
+Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p Fu(')g(escap)s(es)g(to)g(b)s(egin)
+1110 628 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m
+(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)1110 737
+y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f(in)m(to)g
+(the)f(mo)s(de)g(string.)61 b(The)1110 847 y(default)31
+b(is)f(`)p Ft(@)p Fu('.)630 1019 y Ft(enable-bracketed-paste)1110
+1129 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g
 (con\014gure)f(the)h(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110
-902 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g
-(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1011
+1238 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g
+(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1348
 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g(treating)h(eac)m(h)g
-(c)m(haracter)g(as)f(if)f(it)i(had)1110 1121 y(b)s(een)e(read)i(from)e
+(c)m(haracter)g(as)f(if)f(it)i(had)1110 1457 y(b)s(een)e(read)i(from)e
 (the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)
-m(haracters)1110 1230 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f
+m(haracters)1110 1567 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f
 (editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p
-Ft(off)p Fu('.)630 1395 y Ft(enable-keypad)1110 1504
+Ft(off)p Fu('.)630 1739 y Ft(enable-keypad)1110 1849
 y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(try)f
-(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1614
+(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1958
 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 1724 y(The)j(default)g(is)h(`)
-p Ft(off)p Fu('.)630 1888 y Ft(enable-meta-key)1110 1998
+(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 2068 y(The)j(default)g(is)h(`)
+p Ft(off)p Fu('.)630 2240 y Ft(enable-meta-key)1110 2350
 y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g(try)g
-(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2107
+(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2459
 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h(is)g
-(called.)76 b(On)41 b(man)m(y)1110 2217 y(terminals,)c(the)e(meta)h(k)m
+(called.)76 b(On)41 b(man)m(y)1110 2569 y(terminals,)c(the)e(meta)h(k)m
 (ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
-b(The)1110 2326 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630
-2491 y Ft(expand-tilde)1110 2600 y Fu(If)d(set)h(to)h(`)p
+b(The)1110 2679 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630
+2851 y Ft(expand-tilde)1110 2960 y Fu(If)d(set)h(to)h(`)p
 Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
-(Readline)h(attempts)1110 2710 y(w)m(ord)i(completion.)42
-b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2874
-y Ft(history-preserve-point)1110 2984 y Fu(If)41 b(set)h(to)h(`)p
+(Readline)h(attempts)1110 3070 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 3242
+y Ft(history-preserve-point)1110 3352 y Fu(If)41 b(set)h(to)h(`)p
 Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
-(p)s(oin)m(t)f(\(the)1110 3093 y(curren)m(t)35 b(cursor)g(p)s
+(p)s(oin)m(t)f(\(the)1110 3461 y(curren)m(t)35 b(cursor)g(p)s
 (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
-(line)1110 3203 y(retriev)m(ed)h(with)f Ft(previous-history)c
+(line)1110 3571 y(retriev)m(ed)h(with)f Ft(previous-history)c
 Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110
-3313 y(is)30 b(`)p Ft(off)p Fu('.)630 3477 y Ft(history-size)1110
-3587 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
-(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3696
+3680 y(is)30 b(`)p Ft(off)p Fu('.)630 3853 y Ft(history-size)1110
+3962 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 4072
 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
-(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3806 y(new)e(en)m(tries)i
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 4181 y(new)e(en)m(tries)i
 (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
-3915 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+4291 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
-4025 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
-f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4134
+4401 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
+f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4510
 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
-(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4244
-y(b)s(e)c(set)h(to)g(500.)630 4408 y Ft(horizontal-scroll-mode)1110
-4518 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4620
+y(b)s(e)c(set)h(to)g(500.)630 4792 y Ft(horizontal-scroll-mode)1110
+4902 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
 (`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36
-b(it)g(to)h(`)p Ft(on)p Fu(')1110 4628 y(means)26 b(that)h(the)f(text)h
+b(it)g(to)h(`)p Ft(on)p Fu(')1110 5011 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 4737 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 4847
+(tally)1110 5121 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 5230
 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 4956 y(v)-5
-b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630
-5121 y Ft(input-meta)1110 5230 y Fu(If)f(set)g(to)h(`)p
-Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
-i(will)f(not)h(clear)1110 5340 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)p
-eop end
-%%Page: 111 117
-TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(111)1110 299 y(terminal)44
-b(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5
-b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 408 y(Readline)24
+(line.)39 b(By)27 b(default,)g(this)1110 5340 y(v)-5
+b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)p eop
+end
+%%Page: 114 120
+TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(114)630 299 y Ft(input-meta)1110
+408 y Fu(If)31 b(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f
+(enable)h(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110
+518 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 628 y(terminal)k(claims)h
+(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5
+b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 737 y(Readline)24
 b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con)
-m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 518 y(The)30
+m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 847 y(The)30
 b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5
-b(ariable.)630 675 y Ft(isearch-terminators)1110 784
+b(ariable.)630 1029 y Ft(isearch-terminators)1110 1139
 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j
-(an)f(incremen)m(tal)1110 894 y(searc)m(h)25 b(without)g(subsequen)m
+(an)f(incremen)m(tal)1110 1249 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
-1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(106\).)62
-b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1113
+1358 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(109\).)62
+b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1468
 y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h
 Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110
-1223 y(incremen)m(tal)c(searc)m(h.)630 1379 y Ft(keymap)192
-b Fu(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 1489 y(mands.)81
-b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h Ft(emacs)p
-Fu(,)i Ft(emacs-standard)p Fu(,)1110 1598 y Ft(emacs-meta)p
-Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p
-Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 1708 y Ft(vi-insert)p
-Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g
-Ft(vi-command)c Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110
-1817 y(synon)m(ym\);)g Ft(emacs)39 b Fu(is)i(equiv)-5
-b(alen)m(t)42 b(to)g Ft(emacs-standard)p Fu(.)68 b(The)40
-b(default)1110 1927 y(v)-5 b(alue)52 b(is)f Ft(emacs)p
-Fu(.)103 b(The)51 b(v)-5 b(alue)52 b(of)f(the)h Ft(editing-mode)c
-Fu(v)-5 b(ariable)52 b(also)1110 2037 y(a\013ects)32
-b(the)e(default)h(k)m(eymap.)630 2193 y Ft(keyseq-timeout)1110
-2303 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
-(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2412
+1577 y(incremen)m(tal)c(searc)m(h.)630 1760 y Ft(keymap)192
+b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
+(for)f(k)m(ey)h(binding)1110 1870 y(commands.)71 b(Built-in)41
+b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p
+Fu(,)1110 1979 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
+Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p
+Fu(,)f(and)1110 2089 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
+b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c
+Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2198 y(synon)m(ym\);)41
+b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p
+Fu(.)59 b(Applications)1110 2308 y(ma)m(y)32 b(add)e(additional)i
+(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
+Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2418 y(of)31
+b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f
+(the)g(default)g(k)m(eymap.)630 2600 y Ft(keyseq-timeout)1110
+2710 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2819
 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
-(form)g(a)g(complete)h(k)m(ey)1110 2522 y(sequence)j(using)e(the)i
+(form)g(a)g(complete)h(k)m(ey)1110 2929 y(sequence)j(using)e(the)i
 (input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
-1110 2632 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+1110 3039 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
-2741 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
-g(but)f(complete)j(k)m(ey)e(se-)1110 2851 y(quence.)c(Readline)26
+3148 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 3258 y(quence.)c(Readline)26
 b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
-(input)1110 2960 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(input)1110 3367 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
 (t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110
-3070 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+3477 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
 (milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
-1110 3180 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+1110 3587 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
 (additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
-b(is)1110 3289 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
+b(is)1110 3696 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
 (equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
-b(alue,)1110 3399 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
+b(alue,)1110 3806 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
 (k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
-3508 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)g Ft(500)p Fu(.)630 3665 y Ft(mark-directories)1110
-3774 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
+3915 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)g Ft(500)p Fu(.)630 4098 y Ft(mark-directories)1110
+4208 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
 f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-3884 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
-4041 y Ft(mark-modified-lines)1110 4150 y Fu(This)k(v)-5
+4317 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
+4500 y Ft(mark-modified-lines)1110 4609 y Fu(This)k(v)-5
 b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g
-(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4260 y(terisk)f(\(`)p
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4719 y(terisk)f(\(`)p
 Ft(*)p Fu('\))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 4369 y(This)d(v)-5
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4829 y(This)d(v)-5
 b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630
-4526 y Ft(mark-symlinked-directori)o(es)1110 4635 y Fu(If)59
+5011 y Ft(mark-symlinked-directori)o(es)1110 5121 y Fu(If)59
 b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g
-(are)h(sym)m(b)s(olic)g(links)f(to)1110 4745 y(directories)71
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 5230 y(directories)71
 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
-b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4855 y Ft(mark-directories)p
-Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630
-5011 y Ft(match-hidden-files)1110 5121 y Fu(This)21 b(v)-5
-b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f
-(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 5230
-y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f
-(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 5340
-y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e
-(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)p
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 5340 y Ft(mark-directories)p
+Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)p
 eop end
-%%Page: 112 118
-TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(112)1110 299 y(the)34
-b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53
-b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110
-408 y(default.)630 555 y Ft(menu-complete-display-pr)o(efix)1110
-664 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i
-(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
-774 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)s
-(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 883 y(through)30
-b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p
-Fu('.)630 1029 y Ft(output-meta)1110 1139 y Fu(If)35
-b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m
-(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1249 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 1358 y(default)26 b(is)f(`)p Ft(off)p Fu(',)i(but)e
-(Readline)h(will)g(set)g(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)f(lo)s
-(cale)j(con)m(tains)1110 1468 y(eigh)m(t-bit)k(c)m(haracters.)630
-1614 y Ft(page-completions)1110 1724 y Fu(If)h(set)i(to)f(`)p
-Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h
-Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
-1833 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 Ft(on)p Fu(')1110
-1943 y(b)m(y)e(default.)630 2089 y Ft(print-completions-horizo)o(ntal)o
-(ly)1110 2198 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g
-(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
-2308 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 2418 y(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 2564 y Ft(revert-all-at-newline)1110
-2673 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f
-(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
-2783 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 2892 y(ma)m(y)42
+%%Page: 115 121
+TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft
+(match-hidden-files)1110 408 y Fu(This)21 b(v)-5 b(ariable,)25
+b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m
+(h)g(\014les)f(whose)1110 518 y(names)44 b(b)s(egin)g(with)g(a)g(`)p
+Ft(.)p Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)
+1110 628 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p
+Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f
+(b)m(y)1110 737 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f
+(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p
+Ft(on)p Fu(')g(b)m(y)1110 847 y(default.)630 1011 y Ft
+(menu-complete-display-pr)o(efix)1110 1121 y Fu(If)f(set)h(to)g(`)p
+Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g
+(pre\014x)e(of)i(the)1110 1230 y(list)k(of)g(p)s(ossible)f(completions)
+i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110
+1340 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p
+Ft(off)p Fu('.)630 1504 y Ft(output-meta)1110 1614 y
+Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)
+f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1724
+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 1833 y(default)26 b(is)f(`)p
+Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
+Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
+1943 y(eigh)m(t-bit)k(c)m(haracters.)630 2107 y Ft(page-completions)
+1110 2217 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e
+(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)
+1110 2326 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 Ft(on)p
+Fu(')1110 2436 y(b)m(y)e(default.)630 2600 y Ft
+(print-completions-horizo)o(ntal)o(ly)1110 2710 y Fu(If)23
+b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g
+(completions)h(with)f(matc)m(hes)h(sorted)1110 2819 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 2929 y(The)30 b(default)g(is)h(`)p Ft(off)p
+Fu('.)630 3093 y Ft(revert-all-at-newline)1110 3203 y
+Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h
+(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3313
+y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 3422 y(ma)m(y)42
 b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
-(across)g(calls)h(to)1110 3002 y Ft(readline)p Fu(.)38
-b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3148
-y Ft(show-all-if-ambiguous)1110 3258 y Fu(This)f(alters)i(the)f
+(across)g(calls)h(to)1110 3532 y Ft(readline)p Fu(.)38
+b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3696
+y Ft(show-all-if-ambiguous)1110 3806 y Fu(This)f(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 3367 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 3915 y(to)f(`)p Ft(on)p Fu(',)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 3477 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 3587 y(The)30
+1110 4025 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 4134 y(The)30
 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630
-3733 y Ft(show-all-if-unmodified)1110 3842 y Fu(This)38
+4299 y Ft(show-all-if-unmodified)1110 4408 y Fu(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 3952 y(fashion)25 b(similar)h(to)g
+(functions)e(in)h(a)1110 4518 y(fashion)25 b(similar)h(to)g
 Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p
-Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4061 y(ha)m(v)m(e)32
+Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4628 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 4171 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
-f(completions)h(don't)f(share)g(a)h(common)1110 4281
+(ossible)f(par-)1110 4737 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 4847
 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 4390 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 4956 y(ing)g(the)f(b)s(ell.)41
 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p
-Fu('.)630 4536 y Ft(show-mode-in-prompt)1110 4646 y Fu(If)g(set)g(to)h
-(`)p Ft(on)p Fu(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g
-(of)g(the)g(prompt)f(indi-)1110 4756 y(cating)j(the)g(editing)f(mo)s
-(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43
-b(The)1110 4865 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42
-b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p
-Fu('.)630 5011 y Ft(skip-completed-text)1110 5121 y Fu(If)h(set)i(to)f
-(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s
-(eha)m(vior)f(when)f(in-)1110 5230 y(serting)d(a)h(single)g(matc)m(h)f
-(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s
-(erform-)1110 5340 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f
-(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)p
-eop end
-%%Page: 113 119
-TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(not)41
+Fu('.)630 5121 y Ft(show-mode-in-prompt)1110 5230 y Fu(If)24
+b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 5340
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)p eop end
+%%Page: 116 122
+TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8
+b Fu(\).)87 b(The)45 b(default)1110 408 y(v)-5 b(alue)31
+b(is)f(`)p Ft(off)p Fu('.)630 558 y Ft(skip-completed-text)1110
+667 y Fu(If)i(set)i(to)f(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g
+(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
+777 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
+b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
+887 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
+b(If)35 b(enabled,)g(readline)g(do)s(es)1110 996 y(not)41
 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
-(c)m(haracters)1110 408 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b)
-s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
-518 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+(c)m(haracters)1110 1106 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
+(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+1215 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
-628 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
-(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 737 y(`)p Ft(Makefile)p
+1325 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1435 y(`)p Ft(Makefile)p
 Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`)
-p Ft(Makefilefile)p Fu(',)1110 847 y(assuming)d(there)g(is)h(a)f
+p Ft(Makefilefile)p Fu(',)1110 1544 y(assuming)d(there)g(is)h(a)f
 (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
-b(alue)1110 956 y(is)30 b(`)p Ft(off)p Fu('.)630 1117
-y Ft(vi-cmd-mode-string)1110 1226 y Fu(This)f(string)h(is)f(displa)m(y)
-m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-)
-1110 1336 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g
-(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 1445
-y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g
-(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1555
-y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h
-(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1665
-y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p
-Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i
-(of)1110 1774 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 1884 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(cmd\))p
-Fu('.)630 2044 y Ft(vi-ins-mode-string)1110 2153 y Fu(This)f(string)h
-(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h
-(of)e(the)h(pri-)1110 2263 y(mary)25 b(prompt)f(when)g(vi)h(editing)h
-(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110
-2373 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g
-(binding,)g(so)g(the)f(standard)g(set)h(of)1110 2482
-y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h
-(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 2592
-y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p
-Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i
-(of)1110 2701 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 2811 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(ins\))p
-Fu('.)630 2971 y Ft(visible-stats)1110 3081 y Fu(If)h(set)i(to)f(`)p
-Ft(on)p Fu(',)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 3190 y(\014lename)e(when)e
-(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)150 3351 y(Key)f(Bindings)630 3460 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
-3570 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)630
-3679 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
-3789 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h
-(do)s(es.)630 3924 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
-4033 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
-4143 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+b(alue)1110 1654 y(is)30 b(`)p Ft(off)p Fu('.)630 1803
+y Ft(vi-cmd-mode-string)1110 1913 y Fu(If)j(the)h Fr(sho)m(w-mo)s
+(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 2022 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
+g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+2132 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)
+g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
+2242 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
+2351 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)
+g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p
+Fu(')1110 2461 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s
+(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
+2570 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2680
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Ft(\(cmd\))p Fu('.)630 2829 y Ft(vi-ins-mode-string)1110
+2939 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+3049 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 3158 y(vi)35
+b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3268 y(panded)26
+b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
+(meta-)h(and)e(con)m(trol)1110 3377 y(pre\014xes)34 b(and)g(bac)m
+(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
+b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3487 y(and)23
+b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3597
+y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3706
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Ft(\(ins\))p Fu('.)630 3856 y Ft(visible-stats)1110 3965
+y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)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
+4075 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4224
+y(Key)f(Bindings)630 4334 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 4443 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)630 4553 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 4663 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 4792 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 4902 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 5011 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
-(and)630 4253 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 5121 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
 (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
-b(The)40 b(name)h(of)630 4362 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 5230 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
 (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
-(what)h(y)m(ou)g(\014nd)e(most)630 4472 y(comfortable.)630
-4607 y(In)i(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
-4716 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
-(\(a)h Fr(macro)5 b Fu(\).)630 4851 y(The)42 b Ft(bind)30
-b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and)
-f(bindings)g(in)h(a)630 4961 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 5070 y(Builtins],)31 b(page)g(49.)630
-5230 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35
-b Fu(or)c Fr(macro)1110 5340 y(k)m(eyname)k Fu(is)29
+(what)h(y)m(ou)g(\014nd)e(most)630 5340 y(comfortable.)p
+eop end
+%%Page: 117 123
+TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y(In)35
+b(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 408 y(that)31
+b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a)h
+Fr(macro)5 b Fu(\).)630 538 y(The)42 b Ft(bind)30 b(-p)42
+b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and)f
+(bindings)g(in)h(a)630 647 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 757 y(Builtins],)31 b(page)g(50.)630
+906 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35
+b Fu(or)c Fr(macro)1110 1015 y(k)m(eyname)k Fu(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:)p eop end
-%%Page: 114 120
-TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(114)1350 299 y Ft(Control-u:)45
-b(universal-argument)1350 408 y(Meta-Rubout:)f(backward-kill-word)1350
-518 y(Control-o:)h(">)i(output")1110 650 y Fu(In)94 b(the)g(ab)s(o)m(v)
-m(e)i(example,)111 b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f
-(function)1110 760 y Ft(universal-argument)p Fu(,)124
-b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110
-869 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g
-Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 979 y(expressed)45
+b(F)-8 b(or)30 b(example:)1350 1144 y Ft(Control-u:)45
+b(universal-argument)1350 1254 y(Meta-Rubout:)f(backward-kill-word)1350
+1363 y(Control-o:)h(">)i(output")1110 1493 y Fu(In)94
+b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fj(C-u)94 b Fu(is)g(b)s(ound)f
+(to)i(the)f(function)1110 1602 y Ft(universal-argument)p
+Fu(,)124 b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110
+1712 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g
+Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 1821 y(expressed)45
 b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)
-h(text)h(`)p Ft(>)1110 1089 y(output)p Fu(')29 b(in)m(to)i(the)g
-(line\).)1110 1221 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m
-(haracter)g(names)f(are)g(recognized)h(while)1110 1330
+h(text)h(`)p Ft(>)1110 1931 y(output)p Fu(')29 b(in)m(to)i(the)g
+(line\).)1110 2060 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m
+(haracter)g(names)f(are)g(recognized)h(while)1110 2170
 y(pro)s(cessing)40 b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60
 b Fr(DEL)p Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f
-Fr(LFD)p Fu(,)1110 1440 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p
+Fr(LFD)p Fu(,)1110 2279 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p
 Fu(,)f Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8
 b(A)m(CE)p Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p
-Fu(.)630 1595 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41
-b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 1704
+Fu(.)630 2428 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41
+b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 2538
 y(k)m(eyseq)k Fu(di\013ers)d(from)f Fr(k)m(eyname)37
 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
-1814 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 1923
+2647 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 2757
 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Fu(Emacs)f(st)m(yle)i(k)m
-(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2033
+(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2866
 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 2143 y(recognized.)1350
-2275 y Ft("\\C-u":)46 b(universal-argument)1350 2384
-y("\\C-x\\C-r":)f(re-read-init-file)1350 2494 y("\\e[11~":)g("Function)
-h(Key)g(1")1110 2626 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
+(haracter)g(names)f(are)g(not)1110 2976 y(recognized.)1350
+3105 y Ft("\\C-u":)46 b(universal-argument)1350 3215
+y("\\C-x\\C-r":)f(re-read-init-file)1350 3324 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 3453 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
 b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-2736 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
-(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 2845
+3563 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3673
 y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
 Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110
-2955 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
-Ft(Function)e(Key)g(1)p Fu('.)630 3110 y(The)g(follo)m(wing)i
+3782 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Ft(Function)e(Key)g(1)p Fu('.)630 3931 y(The)g(follo)m(wing)i
 Fm(gnu)f Fu(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 3219 y(k)m(ey)i(sequences:)630
-3374 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
-3529 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3683 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 4041 y(k)m(ey)i(sequences:)630
+4189 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
+4338 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4487 y
 Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630
-3838 y Fj(\\\\)384 b Fu(bac)m(kslash)630 3993 y Fj(\\)p
+4635 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4784 y Fj(\\)p
 Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630
-4147 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)630 4302 y(In)d(addition)h(to)g(the)g Fm(gnu)f
+4933 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 5082 y(In)d(addition)h(to)g(the)g Fm(gnu)f
 Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
-(bac)m(kslash)630 4412 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
-4566 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 4721
-y Ft(\\b)384 b Fu(bac)m(kspace)630 4876 y Ft(\\d)g Fu(delete)630
-5031 y Ft(\\f)g Fu(form)30 b(feed)630 5185 y Ft(\\n)384
-b Fu(newline)630 5340 y Ft(\\r)g Fu(carriage)32 b(return)p
-eop end
-%%Page: 115 121
-TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 451 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 604 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m
+(bac)m(kslash)630 5191 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+5340 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))p eop end
+%%Page: 118 124
+TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(118)630 299 y Ft(\\b)384
+b Fu(bac)m(kspace)630 456 y Ft(\\d)g Fu(delete)630 613
+y Ft(\\f)g Fu(form)30 b(feed)630 770 y Ft(\\n)384 b Fu(newline)630
+928 y Ft(\\r)g Fu(carriage)32 b(return)630 1085 y Ft(\\t)384
+b Fu(horizon)m(tal)32 b(tab)630 1242 y Ft(\\v)384 b Fu(v)m(ertical)32
+b(tab)630 1399 y Ft(\\)p Fj(nnn)288 b Fu(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 Fr(nnn)e Fu(\(one)i(to)1110 713 y(three)c(digits\))630
-866 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g
+b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 1509 y(three)c(digits\))630
+1666 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g
 (whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
-b(alue)39 b Fr(HH)1110 975 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 1128 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g
+b(alue)39 b Fr(HH)1110 1775 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1933 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 1237 y(indicate)23 b(a)e(macro)h(de\014nition.)38
+630 2042 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 1347 y(the)22 b(macro)f(b)s(o)s(dy)-8
+(name.)38 b(In)630 2152 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 1456 y(will)j(quote)h(an)m
+(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2261 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 Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8
-b(or)630 1566 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
+b(or)630 2371 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
 (mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p
-Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 1697 y Ft("\\C-x\\\\":)45
-b("\\\\")150 1889 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
-150 2036 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
+Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2504 y Ft("\\C-x\\\\":)45
+b("\\\\")150 2701 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 2848 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
 (in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-2146 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
+2958 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
 (bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s
-(erformed)f(as)i(the)150 2255 y(result)f(of)h(tests.)41
+(erformed)f(as)i(the)150 3067 y(result)f(of)h(tests.)41
 b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-2408 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
+3225 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(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 2517 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 2627 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
-2779 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h
-Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110
-2889 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g
-Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction)
-1110 2998 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38
-b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
-3108 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
-Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3218 y(starting)f(out)g
-(in)f Ft(emacs)f Fu(mo)s(de.)630 3370 y Ft(term)288 b
+(the)630 3334 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h
+(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)
+630 3444 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f
+(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
+3553 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 3711 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e
+Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g
+(whether)e(Read-)1110 3820 y(line)44 b(is)f(in)g Ft(emacs)f
+Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
+(conjunction)1110 3930 y(with)c(the)h(`)p Ft(set)29 b(keymap)p
+Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
+4039 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
+Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4149 y(starting)f(out)g
+(in)f Ft(emacs)f Fu(mo)s(de.)630 4306 y Ft(term)288 b
 Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
-(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3480 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4416 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 3589 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 4525 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
-Ft(=)p Fu(')g(is)g(tested)h(against)1110 3699 y(b)s(oth)k(the)h(full)g
+Ft(=)p Fu(')g(is)g(tested)h(against)1110 4635 y(b)s(oth)k(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 3808 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 4744 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
 Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s
-(oth)f Ft(sun)g Fu(and)1110 3918 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
-630 4070 y Ft(application)1110 4180 y Fu(The)21 b Fr(application)j
-Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 4289 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
-(Readline)g(library)g(sets)g(the)g Fr(application)1110
-4399 y(name)p Fu(,)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
-4509 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 4618
-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 4728 y(the)e(curren)m(t)f(or)g(previous)
-g(w)m(ord)g(in)g(Bash:)1350 4859 y Ft($if)47 b(Bash)1350
-4968 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
-5078 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5188 y($endif)150
-5340 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g
-(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)p
-eop end
-%%Page: 116 122
-TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Ft($else)240
-b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)f
-Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.)
-150 458 y Ft($include)96 b Fu(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 568 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+(oth)f Ft(sun)g Fu(and)1110 4854 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
+630 5011 y Ft(version)144 b Fu(The)44 b Ft(version)f
+Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 5121 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110
+5230 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110
+5340 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p
+Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p
+Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)p eop end
+%%Page: 119 125
+TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(119)1110 299 y(the)34
+b(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f(a)g(ma)5
+b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 408 y(an)45
+b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f
+(v)m(ersion)h(\(e.g.,)1110 518 y(`)p Ft(7.1)p Fu('\).)40
+b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g(omitted,)h(it)f(is)g(assumed)
+f(to)h(b)s(e)f(`)p Ft(0)p Fu('.)40 b(The)1110 628 y(op)s(erator)34
+b(ma)m(y)g(b)s(e)f(separated)g(from)g(the)h(string)f
+Ft(version)f Fu(and)h(from)g(the)1110 737 y(v)m(ersion)39
+b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67
+b(The)38 b(follo)m(wing)i(example)1110 847 y(sets)31
+b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g
+(used)g(is)g(7.0)i(or)e(new)m(er:)1350 981 y Ft($if)47
+b(version)f(>=)h(7.0)1350 1091 y(set)g(show-mode-in-prompt)42
+b(on)1350 1200 y($endif)630 1360 y(application)1110 1469
+y Fu(The)21 b Fr(application)j Fu(construct)e(is)g(used)f(to)i(include)
+f(application-sp)s(eci\014c)h(set-)1110 1579 y(tings.)39
+b(Eac)m(h)26 b(program)e(using)g(the)h(Readline)g(library)g(sets)g(the)
+g Fr(application)1110 1689 y(name)p Fu(,)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 1798 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 1908 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 2017 y(the)e(curren)m(t)f
+(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 2152 y Ft($if)47
+b(Bash)1350 2262 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)
+1350 2371 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2481 y($endif)630
+2640 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39
+b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g
+(Readline)1110 2750 y(v)-5 b(ariables)32 b(and)f(v)-5
+b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i
+(`)p Ft(=)p Fu(',)1110 2859 y(`)p Ft(==)p Fu(',)49 b(and)44
+b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
+(b)s(e)g(separated)g(from)g(the)1110 2969 y(comparison)25
+b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
+(e)f(separated)1110 3078 y(from)33 b(the)h(v)-5 b(alue)35
+b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
+b(Both)35 b(string)1110 3188 y(and)i(b)s(o)s(olean)g(v)-5
+b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3298 y(tested)46
+b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f
+Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
+3407 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e
+Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3542 y
+Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3651 y(set)f
+(show-mode-in-prompt)42 b(on)1350 3761 y($endif)150 3920
+y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
+g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150
+4080 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+(the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
+(fails.)150 4239 y Ft($include)96 b Fu(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 4349 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 677 y Ft(/etc/inputrc)p Fu(:)870 812 y Ft($include)46
-b(/etc/inputrc)150 1011 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
-1158 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k
+(from)630 4458 y Ft(/etc/inputrc)p Fu(:)870 4593 y Ft($include)46
+b(/etc/inputrc)150 4792 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
+4939 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k
 Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
-b(ariable)27 b(assignmen)m(t,)i(and)150 1268 y(conditional)j(syn)m
+b(ariable)27 b(assignmen)m(t,)i(and)150 5049 y(conditional)j(syn)m
 (tax.)p eop end
-%%Page: 117 123
-TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(117)390 408 y Ft(#)47
+%%Page: 120 126
+TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(120)390 408 y Ft(#)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)
@@ -16496,9 +16862,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)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 end
-%%Page: 118 124
-TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(118)390 299 y Ft(#"\\M-\\C-[A":)
+%%Page: 121 127
+TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(121)390 299 y Ft(#"\\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)
@@ -16531,2075 +16897,2182 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
 (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 end
-%%Page: 119 125
-TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(119)390 299 y Ft(#)47
+%%Page: 122 128
+TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(122)390 299 y Ft(#)47
 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
-847 y($endif)150 1083 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands)
-150 1242 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f
+847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1248 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f
 (that)h(ma)m(y)h(b)s(e)d(b)s(ound)g(to)i(k)m(ey)g(sequences.)48
-b(Y)-8 b(ou)33 b(can)150 1352 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d
+b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d
 (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g
-(terse)g(format,)i(suitable)e(for)f(an)150 1461 y Fr(inputrc)34
+(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34
 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h
-([Bash)g(Builtins],)g(page)g(49.\))41 b(Command)28 b(names)h(without)
-150 1571 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s
-(ound)d(b)m(y)i(default.)275 1703 y(In)25 b(the)h(follo)m(wing)i
+([Bash)g(Builtins],)g(page)g(50.\))41 b(Command)28 b(names)h(without)
+150 1577 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 1713 y(In)25 b(the)h(follo)m(wing)i
 (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g
 (cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150
-1813 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g
+1822 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g
 Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f
-(p)s(oin)m(t)g(and)150 1922 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f
-Fr(region)p Fu(.)150 2117 y Fk(8.4.1)63 b(Commands)42
-b(F)-10 b(or)41 b(Mo)m(ving)150 2286 y Ft(beginning-of-line)26
-b(\(C-a\))630 2396 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f
-(curren)m(t)g(line.)150 2551 y Ft(end-of-line)d(\(C-e\))630
-2660 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
-2815 y Ft(forward-char)c(\(C-f\))630 2924 y Fu(Mo)m(v)m(e)32
-b(forw)m(ard)e(a)h(c)m(haracter.)150 3079 y Ft(backward-char)c(\(C-b\))
-630 3189 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
-3343 y Ft(forward-word)d(\(M-f\))630 3453 y Fu(Mo)m(v)m(e)32
+(p)s(oin)m(t)g(and)150 1932 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f
+Fr(region)p Fu(.)150 2132 y Fk(8.4.1)63 b(Commands)42
+b(F)-10 b(or)41 b(Mo)m(ving)150 2304 y Ft(beginning-of-line)26
+b(\(C-a\))630 2414 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f
+(curren)m(t)g(line.)150 2574 y Ft(end-of-line)d(\(C-e\))630
+2684 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
+2844 y Ft(forward-char)c(\(C-f\))630 2954 y Fu(Mo)m(v)m(e)32
+b(forw)m(ard)e(a)h(c)m(haracter.)150 3114 y Ft(backward-char)c(\(C-b\))
+630 3223 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
+3384 y Ft(forward-word)d(\(M-f\))630 3493 y Fu(Mo)m(v)m(e)32
 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41
 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
-3563 y(digits.)150 3717 y Ft(backward-word)27 b(\(M-b\))630
-3827 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
+3603 y(digits.)150 3763 y Ft(backward-word)27 b(\(M-b\))630
+3873 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
 (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
-b(are)g(comp)s(osed)630 3936 y(of)d(letters)g(and)f(digits.)150
-4091 y Ft(shell-forward-word)25 b(\(\))630 4201 y Fu(Mo)m(v)m(e)30
+b(are)g(comp)s(osed)630 3982 y(of)d(letters)g(and)f(digits.)150
+4143 y Ft(shell-forward-word)25 b(\(\))630 4252 y Fu(Mo)m(v)m(e)30
 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)m(ord.)40
 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630
-4310 y(shell)j(metac)m(haracters.)150 4465 y Ft(shell-backward-word)25
-b(\(\))630 4575 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g
+4362 y(shell)j(metac)m(haracters.)150 4522 y Ft(shell-backward-word)25
+b(\(\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g
 (the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 b(W)-8
-b(ords)35 b(are)g(delimited)630 4684 y(b)m(y)30 b(non-quoted)h(shell)f
-(metac)m(haracters.)150 4839 y Ft(clear-screen)d(\(C-l\))630
-4948 y Fu(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h(curren)m(t)f
-(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g(top)630
-5058 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25
-b(\(\))630 5322 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41
-b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)p eop
-end
-%%Page: 120 126
-TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(120)150 299 y Fk(8.4.2)63
-b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150
-473 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630
-582 y Fu(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 692 y(to)27 b(the)f(history)g(list)h(according)g
-(to)g(the)f(setting)i(of)e(the)g Ft(HISTCONTROL)d Fu(and)j
-Ft(HISTIGNORE)630 802 y Fu(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 911 y(its)g(original)g(state.)
-150 1075 y Ft(previous-history)26 b(\(C-p\))630 1184
-y Fu(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 1348 y Ft(next-history)d
-(\(C-n\))630 1457 y Fu(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
-1621 y Ft(beginning-of-history)25 b(\(M-<\))630 1730
-y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
-b(.)150 1894 y Ft(end-of-history)26 b(\(M->\))630 2004
-y Fu(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
-2167 y Ft(reverse-search-history)24 b(\(C-r\))630 2277
-y Fu(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
-2386 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 2550 y Ft(forward-search-history)24
-b(\(C-s\))630 2659 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
-(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 2769 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30
-b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2932 y Ft
-(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 3042 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30 b(non-quoted)h(shell)f
+(metac)m(haracters.)150 4902 y Ft(previous-screen-line)25
+b(\(\))630 5011 y Fu(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e
+(to)h(the)f(same)h(ph)m(ysical)g(screen)f(column)g(on)g(the)g(previous)
+630 5121 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24
+b(will)i(not)f(ha)m(v)m(e)h(the)f(desired)g(e\013ect)h(if)f(the)h
+(curren)m(t)e(Readline)630 5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d
+(more)i(than)f(one)g(ph)m(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f
+(not)h(greater)g(than)630 5340 y(the)j(length)f(of)h(the)f(prompt)g
+(plus)f(the)i(screen)f(width.)p eop end
+%%Page: 123 129
+TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft(next-screen-line)
+26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to)
+i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m
+(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m
+(e)h(the)e(desired)g(e\013ect)i(if)e(the)g(curren)m(t)h(Readline)g
+(line)f(do)s(es)630 628 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(the)h(length)f(of)h(the)f(curren)m(t)g
+(Readline)630 737 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g
+(of)f(the)h(prompt)e(plus)h(the)g(screen)h(width.)150
+893 y Ft(clear-screen)c(\(C-l\))630 1003 y Fu(Clear)g(the)g(screen)f
+(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f
+(curren)m(t)g(line)g(at)g(the)g(top)630 1112 y(of)k(the)f(screen.)150
+1268 y Ft(redraw-current-line)25 b(\(\))630 1378 y Fu(Refresh)30
+b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
+(ound.)150 1574 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41
+b(Manipulating)h(The)f(History)150 1744 y Ft(accept-line)27
+b(\(Newline)h(or)i(Return\))630 1854 y Fu(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
+1963 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i
+(of)e(the)g Ft(HISTCONTROL)d Fu(and)j Ft(HISTIGNORE)630
+2073 y Fu(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 2182 y(its)g(original)g(state.)150 2338 y Ft(previous-history)
+26 b(\(C-p\))630 2448 y Fu(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
+2604 y Ft(next-history)d(\(C-n\))630 2714 y Fu(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 2870 y Ft(beginning-of-history)25
+b(\(M-<\))630 2979 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)
+h(the)f(history)-8 b(.)150 3135 y Ft(end-of-history)26
+b(\(M->\))630 3245 y Fu(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 3401 y Ft(reverse-search-history)24
+b(\(C-r\))630 3510 y Fu(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 3152 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
-3261 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
-(ywhere)g(in)f(a)h(history)f(line.)150 3425 y Ft
-(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 3534 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(his-)630 3620 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 3776 y Ft
+(forward-search-history)24 b(\(C-s\))630 3886 y Fu(Searc)m(h)44
+b(forw)m(ard)f(starting)h(at)h(the)e(curren)m(t)h(line)g(and)f(mo)m
+(ving)h(`do)m(wn')g(through)f(the)630 3995 y(history)30
+b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g
+(searc)m(h.)150 4151 y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist)
+o(ory)24 b(\(M-p\))630 4261 y Fu(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 4370 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 4480 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m
+(h)g(an)m(ywhere)g(in)f(a)h(history)f(line.)150 4636
+y Ft(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-n\))630 4746 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
 (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 3644 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+630 4855 y(history)27 b(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
-3754 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
-m(ywhere)g(in)f(a)h(history)f(line.)150 3917 y Ft
-(history-search-forward)24 b(\(\))630 4027 y Fu(Searc)m(h)42
+4965 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
+m(ywhere)g(in)f(a)h(history)f(line.)150 5121 y Ft
+(history-search-forward)24 b(\(\))630 5230 y Fu(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 4136 y(start)36
+(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)36
 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
-b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-4246 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
-b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 4355 y(command)d(is)h(un)m(b)s(ound.)150
-4519 y Ft(history-search-backward)24 b(\(\))630 4629
-y Fu(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
-4738 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p
+eop end
+%%Page: 124 130
+TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(124)630 299 y(b)s(eginning)32
+b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i
+(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m
+(b)s(ound.)150 581 y Ft(history-search-backward)24 b(\(\))630
+690 y Fu(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
+800 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-4848 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
-b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 4957 y(command)d(is)h(un)m(b)s(ound.)150
-5121 y Ft(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630
-5230 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
+910 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32
+b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33
+b(default,)g(this)630 1019 y(command)d(is)h(un)m(b)s(ound.)150
+1192 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630
+1301 y Fu(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
-5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
 (t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-p eop end
-%%Page: 121 127
-TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(in)32
-b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h
-(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630
-408 y(is)e(un)m(b)s(ound.)150 573 y Ft(history-substr-search-ba)o(ckwa)
-o(rd)24 b(\(\))630 683 y Fu(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 793 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f
-(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m
-(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47
-b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47
-b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150
-1177 y Ft(yank-nth-arg)d(\(M-C-y\))630 1286 y Fu(Insert)37
-b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h
-(\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32
-b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32
-b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g Fr(n)p
-Fu(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w)
-m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630
-1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
-Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630
-1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fr(n)e
-Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630
-1834 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g(had)g(b)s
-(een)g(sp)s(eci\014ed.)150 1999 y Ft(yank-last-arg)d(\(M-.)i(or)h
-(M-_\))630 2109 y Fu(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
-2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
+(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
+(command)630 1630 y(is)e(un)m(b)s(ound.)150 1802 y Ft
+(history-substring-search)o(-bac)o(kwar)o(d)24 b(\(\))630
+1912 y Fu(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
+2021 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
+630 2131 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
+(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
+(command)630 2241 y(is)e(un)m(b)s(ound.)150 2413 y Ft(yank-nth-arg)d
+(\(M-C-y\))630 2523 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f
+(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630
+2632 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46
+b(With)32 b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g
+Fr(n)p Fu(th)f(w)m(ord)g(from)630 2742 y(the)k(previous)f(command)h
+(\(the)g(w)m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f
+(w)m(ord)630 2851 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f
+(inserts)g(the)f Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f
+(previous)630 2961 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h
+Fr(n)e Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e
+(if)630 3070 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g
+(had)g(b)s(een)g(sp)s(eci\014ed.)150 3243 y Ft(yank-last-arg)d(\(M-.)i
+(or)h(M-_\))630 3352 y Fu(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
+3462 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
 (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Ft(yank-nth-arg)p
-Fu(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c
+Fu(.)630 3572 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c
 Fu(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
-(inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 3681 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
 s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
-(of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 3791 y(in)36 b(turn.)58 b(An)m(y)36
 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
-(calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 3900 y(the)d(direction)g(to)h(mo)m(v)m(e)g
 (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
-(switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f
+(switc)m(hes)h(the)630 4010 y(direction)23 b(through)g(the)g(history)f
 (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
-(facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(facilities)630 4120 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
 (argumen)m(t,)h(as)e(if)h(the)g(`)p Ft(!$)p Fu(')f(history)g(expansion)
-h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y
+h(had)f(b)s(een)630 4229 y(sp)s(eci\014ed.)150 4441 y
 Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
-b(ext)150 3365 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
-3475 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+b(ext)150 4620 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
+4729 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
 (for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m
-(harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
 (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
-(eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
 (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p
-Fu(.)150 3859 y Ft(delete-char)e(\(C-d\))630 3968 y Fu(Delete)35
+Fu(.)150 5121 y Ft(delete-char)e(\(C-d\))630 5230 y Fu(Delete)35
 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
-(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340
 y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f
 Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
-(e\013ects.)150 4243 y Ft(backward-delete-char)25 b(\(Rubout\))630
-4353 y Fu(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
-4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-4627 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
-4737 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+(e\013ects.)p eop end
+%%Page: 125 131
+TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft
+(backward-delete-char)25 b(\(Rubout\))630 408 y Fu(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
+518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+682 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
+792 y Fu(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
-4846 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
-4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-5121 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230
+902 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
+1011 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+1176 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1285
 y Fu(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
-5340 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)p
-eop end
-%%Page: 122 128
-TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft(self-insert)27
-b(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 408 y Fu(Insert)g(y)m
-(ourself.)150 573 y Ft(bracketed-paste-begin)25 b(\(\))630
-683 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f
-(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p Ft(")f
-Fu(escap)s(e)h(sequence)630 793 y(sen)m(t)38 b(b)m(y)f(some)h
-(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i(assigned)f(b)m(y)h
-(default.)62 b(It)38 b(allo)m(ws)630 902 y(Readline)33
-b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g(single)g(unit)f(without)
-h(treating)h(eac)m(h)f(c)m(har-)630 1012 y(acter)40 b(as)f(if)g(it)g
-(had)f(b)s(een)g(read)h(from)f(the)h(k)m(eyb)s(oard.)66
-b(The)39 b(c)m(haracters)h(are)f(inserted)630 1121 y(as)i(if)g(eac)m(h)
-i(one)e(w)m(as)h(b)s(ound)d(to)i Ft(self-insert)p Fu(\))e(instead)i(of)
-h(executing)g(an)m(y)f(editing)630 1231 y(commands.)150
-1396 y Ft(transpose-chars)26 b(\(C-t\))630 1505 y Fu(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 1615
-y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57
+1395 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150
+1559 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
+1669 y Fu(Insert)g(y)m(ourself.)150 1833 y Ft(bracketed-paste-begin)25
+b(\(\))630 1943 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
+(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p
+Ft(")f Fu(escap)s(e)h(sequence)630 2052 y(sen)m(t)38
+b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i
+(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630
+2162 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
+(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
+2271 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
+2381 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630
+2491 y(commands.)150 2655 y Ft(transpose-chars)26 b(\(C-t\))630
+2765 y Fu(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
+2874 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 1724 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h
+(the)630 2984 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 1834 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150
-1999 y Ft(transpose-words)c(\(M-t\))630 2109 y Fu(Drag)33
+b(argumen)m(ts)630 3093 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150
+3258 y Ft(transpose-words)c(\(M-t\))630 3367 y Fu(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
-2218 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
+3477 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 2328 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150
-2493 y Ft(upcase-word)c(\(M-u\))630 2602 y Fu(Upp)s(ercase)32
+(the)630 3587 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150
+3751 y Ft(upcase-word)c(\(M-u\))630 3861 y Fu(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
-2712 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 2877 y Ft(downcase-word)d(\(M-l\))630
-2986 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+3970 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 4134 y Ft(downcase-word)d(\(M-l\))630
+4244 y Fu(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 3096 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 3261 y Ft(capitalize-word)26
-b(\(M-c\))630 3370 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(ercase)630 4354 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 4518 y Ft(capitalize-word)26
+b(\(M-c\))630 4628 y Fu(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 3480 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 3645 y Ft(overwrite-mode)26
-b(\(\))630 3754 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 4737 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 Ft(overwrite-mode)26
+b(\(\))630 5011 y Fu(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 3864 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+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 3973 y(insert)30 b(mo)s(de.)41
+(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 Ft(emacs)f Fu(mo)s(de;)i
-Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4083
+Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 5340
 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
-Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630
-4220 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
-(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630
-4330 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
-(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630
-4439 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)
-h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4577
-y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-4781 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-4956 y Ft(kill-line)28 b(\(C-k\))630 5066 y Fu(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
-5230 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-5340 y Fu(Kill)h(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.)p eop end
-%%Page: 123 129
-TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft
-(unix-line-discard)26 b(\(C-u\))630 408 y Fu(Kill)31
+Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)p
+eop end
+%%Page: 126 132
+TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(126)630 299 y(In)52
+b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)c(to)j
+Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 408
+y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)f
+(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 518
+y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)h(b)s
+(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 647 y(By)g(default,)f
+(this)h(command)f(is)g(un)m(b)s(ound.)150 835 y Fk(8.4.4)63
+b(Killing)42 b(And)e(Y)-10 b(anking)150 1001 y Ft(kill-line)28
+b(\(C-k\))630 1111 y Fu(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 1259 y Ft(backward-kill-line)25
+b(\(C-x)30 b(Rubout\))630 1369 y Fu(Kill)h(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
+1517 y Ft(unix-line-discard)c(\(C-u\))630 1627 y Fu(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 571 y Ft(kill-whole-line)c(\(\))630
-681 y Fu(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 791 y(this)30 b(is)h(un)m(b)s(ound.)150
-954 y Ft(kill-word)d(\(M-d\))630 1063 y Fu(Kill)i(from)f(p)s(oin)m(t)g
+(the)f(curren)m(t)g(line.)150 1775 y Ft(kill-whole-line)c(\(\))630
+1885 y Fu(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 1994 y(this)30 b(is)h(un)m(b)s(ound.)150
+2142 y Ft(kill-word)d(\(M-d\))630 2252 y Fu(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 1173 y(of)h(the)f(next)h(w)m
+(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 2362 y(of)h(the)f(next)h(w)m
 (ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f
-Ft(forward-word)p Fu(.)150 1336 y Ft(backward-kill-word)25
-b(\(M-DEL\))630 1445 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m
+Ft(forward-word)p Fu(.)150 2510 y Ft(backward-kill-word)25
+b(\(M-DEL\))630 2620 y Fu(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
-Ft(backward-word)p Fu(.)150 1608 y Ft(shell-kill-word)d(\(\))630
-1718 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+Ft(backward-word)p Fu(.)150 2768 y Ft(shell-kill-word)d(\(\))630
+2877 y Fu(Kill)k(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 1827 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+(the)g(end)630 2987 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft
-(shell-forward-word)p Fu(.)150 1990 y Ft(shell-backward-kill-word)24
-b(\(\))630 2100 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
+(shell-forward-word)p Fu(.)150 3135 y Ft(shell-backward-kill-word)24
+b(\(\))630 3245 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
 b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f
-Ft(shell-backward-)630 2209 y(word)p Fu(.)150 2372 y
-Ft(unix-word-rubout)k(\(C-w\))630 2482 y Fu(Kill)32 b(the)g(w)m(ord)f
+Ft(shell-backward-)630 3354 y(word)p Fu(.)150 3503 y
+Ft(unix-word-rubout)k(\(C-w\))630 3612 y Fu(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 2592 y(text)g(is)g(sa)m(v)
-m(ed)g(on)g(the)f(kill-ring.)150 2755 y Ft(unix-filename-rubout)25
-b(\(\))630 2864 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m
+(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 3722 y(text)g(is)g(sa)m(v)
+m(ed)g(on)g(the)f(kill-ring.)150 3870 y Ft(unix-filename-rubout)25
+b(\(\))630 3980 y Fu(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 2974 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30
+(the)630 4089 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
-3137 y Ft(delete-horizontal-space)24 b(\(\))630 3246
+4238 y Ft(delete-horizontal-space)24 b(\(\))630 4347
 y Fu(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 3409
-y Ft(kill-region)d(\(\))630 3519 y Fu(Kill)k(the)f(text)i(in)e(the)g
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 4495
+y Ft(kill-region)d(\(\))630 4605 y Fu(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 3682 y Ft(copy-region-as-kill)25 b(\(\))630
-3791 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+m(b)s(ound.)150 4753 y Ft(copy-region-as-kill)25 b(\(\))630
+4863 y Fu(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 3901 y(By)31 b(default,)f(this)h(command)f
-(is)g(un)m(b)s(ound.)150 4064 y Ft(copy-backward-word)25
-b(\(\))630 4173 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(a)m(w)m(a)m(y)-8 b(.)630 4973 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 5121 y Ft(copy-backward-word)25
+b(\(\))630 5230 y Fu(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 4283 y(same)31 b(as)f Ft(backward-word)p
-Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
-4446 y Ft(copy-forward-word)26 b(\(\))630 4556 y Fu(Cop)m(y)31
+f(are)i(the)630 5340 y(same)31 b(as)f Ft(backward-word)p
+Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)p
+eop end
+%%Page: 127 133
+TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft
+(copy-forward-word)26 b(\(\))630 408 y Fu(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
-4665 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30
-b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
-4828 y Ft(yank)f(\(C-y\))630 4938 y Fu(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 5101 y Ft(yank-pop)d(\(M-y\))630 5210
-y Fu(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
-5320 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
-Fu(.)p eop end
-%%Page: 124 130
-TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.4.5)63
-b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 477 y
-Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j Fj(M-1)p
-Ft(,)h(...)f Fj(M--)p Ft(\))630 586 y Fu(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 696 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i(argumen)
-m(t.)150 867 y Ft(universal-argument)25 b(\(\))630 977
-y Fu(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
-1087 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
-1196 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+518 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 b(default,)h(this)g
+(command)f(is)g(un)m(b)s(ound.)150 671 y Ft(yank)f(\(C-y\))630
+781 y Fu(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 934 y Ft(yank-pop)d(\(M-y\))630
+1044 y Fu(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
+1153 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
+Fu(.)150 1347 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 1515 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j
+Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 1625 y Fu(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 1735 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 1888 y Ft(universal-argument)25 b(\(\))630
+1998 y Fu(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 2107 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
+2217 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 Ft(universal-argument)630
-1306 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+2326 y Fu(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
-1415 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+2436 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
-1525 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+2545 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
 (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
-1635 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+2655 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
 (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
-1744 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+2765 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
 (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
-1854 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
-(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 2065 y Fk(8.4.6)63
+2874 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 3067 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 2243 y Ft(complete)28 b(\(TAB\))630
-2353 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+b(Y)-10 b(ou)150 3236 y Ft(complete)28 b(\(TAB\))630
+3346 y Fu(A)m(ttempt)c(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
-2462 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53
+3455 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
-2572 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e
+3565 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 Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e
-(with)630 2681 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h
+(with)630 3675 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h
 (b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h
-(aliases)i(and)630 2791 y(functions\))j(in)f(turn.)53
+(aliases)i(and)630 3784 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 2901 y(attempted.)150 3072 y Ft
-(possible-completions)25 b(\(M-?\))630 3182 y Fu(List)35
+e(completion)h(is)630 3894 y(attempted.)150 4047 y Ft
+(possible-completions)25 b(\(M-?\))630 4157 y Fu(List)35
 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s
-(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 3291
+(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 4266
 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f
 (used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33
-b(of)630 3401 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5
+b(of)630 4376 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5
 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38
-b Ft(COLUMNS)p Fu(,)630 3510 y(or)30 b(the)h(screen)f(width,)g(in)g
-(that)h(order.)150 3682 y Ft(insert-completions)25 b(\(M-*\))630
-3791 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f
+b Ft(COLUMNS)p Fu(,)630 4485 y(or)30 b(the)h(screen)f(width,)g(in)g
+(that)h(order.)150 4639 y Ft(insert-completions)25 b(\(M-*\))630
+4748 y Fu(Insert)30 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
-3901 y(b)m(y)g Ft(possible-completions)p Fu(.)150 4073
-y Ft(menu-complete)d(\(\))630 4182 y Fu(Similar)d(to)g
+4858 y(b)m(y)g Ft(possible-completions)p Fu(.)150 5011
+y Ft(menu-complete)d(\(\))630 5121 y Fu(Similar)d(to)g
 Ft(complete)p Fu(,)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 4292 y(from)37
+(completed)i(with)e(a)i(single)f(matc)m(h)630 5230 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 Ft(menu-complete)630 4401 y Fu(steps)i(through)g
+b(execution)g(of)f Ft(menu-complete)630 5340 y Fu(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 4511 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 4621 y(of)f Ft(bell-style)p
-Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57
-b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i
-Fr(n)630 4730 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+(matc)m(h)f(in)f(turn.)p eop end
+%%Page: 128 134
+TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(128)630 299 y(A)m(t)38
+b(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 408
+y(of)f Ft(bell-style)p Fu(\))e(and)h(the)h(original)i(text)f(is)f
+(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i
+Fr(n)630 518 y Fu(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 4840 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(used)g(to)630 628 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
 (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 4949 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 5121 y Ft(menu-complete-backward)24
-b(\(\))630 5230 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
+(ound)e(to)630 737 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 906 y Ft(menu-complete-backward)24
+b(\(\))630 1015 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
 Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
-(p)s(ossible)630 5340 y(completions,)d(as)e(if)h Ft(menu-complete)26
-b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)p
-eop end
-%%Page: 125 131
-TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft
-(delete-char-or-list)25 b(\(\))630 408 y Fu(Deletes)41
+(p)s(ossible)630 1125 y(completions,)d(as)e(if)h Ft(menu-complete)26
+b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
+1294 y Ft(delete-char-or-list)25 b(\(\))630 1403 y Fu(Deletes)41
 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
-(eginning)e(or)h(end)f(of)h(the)630 518 y(line)50 b(\(lik)m(e)h
+(eginning)e(or)h(end)f(of)h(the)630 1513 y(line)50 b(\(lik)m(e)h
 Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
-55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 628 y
-Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s
-(ound)e(b)m(y)i(default.)150 803 y Ft(complete-filename)c(\(M-/\))630
-913 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g(b)
-s(efore)f(p)s(oin)m(t.)150 1088 y Ft(possible-filename-comple)o(tion)o
-(s)24 b(\(C-x)30 b(/\))630 1197 y Fu(List)f(the)g(p)s(ossible)f
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 1622
+Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s
+(ound)e(b)m(y)i(default.)150 1791 y Ft(complete-filename)c(\(M-/\))630
+1901 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g
+(b)s(efore)f(p)s(oin)m(t.)150 2069 y Ft(possible-filename-comple)o
+(tion)o(s)24 b(\(C-x)30 b(/\))630 2179 y Fu(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 1373 y Ft(complete-username)e(\(M-~\))
-630 1482 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)
+(it)f(as)g(a)f(\014lename.)150 2347 y Ft(complete-username)e(\(M-~\))
+630 2457 y Fu(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
-1658 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
-b(~\))630 1767 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f
+2626 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
+b(~\))630 2735 y Fu(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 1942 y Ft(complete-variable)h(\(M-$\))630
-2052 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)
+(username.)150 2904 y Ft(complete-variable)h(\(M-$\))630
+3013 y Fu(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
-2227 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30
-b($\))630 2337 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f
+3182 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30
+b($\))630 3292 y Fu(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 2446 y(v)-5 b(ariable.)150 2622 y Ft(complete-hostname)26
-b(\(M-@\))630 2731 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
+(shell)630 3401 y(v)-5 b(ariable.)150 3570 y Ft(complete-hostname)26
+b(\(M-@\))630 3679 y Fu(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
-2907 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
-b(@\))630 3016 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
+3848 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
+b(@\))630 3957 y Fu(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 3191 y Ft(complete-command)h(\(M-!\))630
-3301 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
+(hostname.)150 4126 y Ft(complete-command)h(\(M-!\))630
+4236 y Fu(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
-3411 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 3520 y(w)m(ords,)36
+4345 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 4455 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 3630 y(order.)150
-3805 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
-b(!\))630 3915 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
+(executable)i(\014lenames,)g(in)e(that)630 4564 y(order.)150
+4733 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
+b(!\))630 4843 y Fu(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
-4024 y(name.)150 4200 y Ft(dynamic-complete-history)e(\(M-TAB\))630
-4309 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)
+4952 y(name.)150 5121 y Ft(dynamic-complete-history)e(\(M-TAB\))630
+5230 y Fu(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
-4419 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
-(matc)m(hes.)150 4594 y Ft(dabbrev-expand)26 b(\(\))630
-4704 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s
-(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630
-4813 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
-(completion)j(matc)m(hes.)150 4988 y Ft(complete-into-braces)25
-b(\(M-{\))630 5098 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f
+5340 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
+(matc)m(hes.)p eop end
+%%Page: 129 135
+TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft(dabbrev-expand)26
+b(\(\))630 408 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g
+(text)g(b)s(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630
+518 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
+(completion)j(matc)m(hes.)150 683 y Ft(complete-into-braces)25
+b(\(M-{\))630 793 y Fu(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
-5208 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5
+902 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 5317 y(pansion],)30 b(page)h(21\).)p eop end
-%%Page: 126 132
-TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(126)150 299 y Fk(8.4.7)63
-b(Keyb)s(oard)41 b(Macros)150 469 y Ft(start-kbd-macro)26
-b(\(C-x)j(\(\))630 579 y Fu(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.)150
-735 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 845 y Fu(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 954
-y(de\014nition.)150 1110 y Ft(call-last-kbd-macro)c(\(C-x)k(e\))630
-1220 y Fu(Re-execute)37 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
-1329 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 1486 y Ft(print-last-kbd-macro)25 b(\(\))630
-1595 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
+(Ex-)630 1012 y(pansion],)30 b(page)h(23\).)150 1217
+y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 1392 y Ft(start-kbd-macro)
+26 b(\(C-x)j(\(\))630 1501 y Fu(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.)150 1666 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630
+1776 y Fu(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 1886 y(de\014nition.)150 2051 y Ft(call-last-kbd-macro)c
+(\(C-x)k(e\))630 2160 y Fu(Re-execute)37 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 2270 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 2435 y Ft(print-last-kbd-macro)25 b(\(\))630
+2545 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
 e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k
-Fu(\014le.)150 1791 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)
-150 1962 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630
-2071 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fu(\014le.)150 2750 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)
+150 2924 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630
+3034 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
 Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
-(or)i(v)-5 b(ariable)630 2181 y(assignmen)m(ts)31 b(found)e(there.)150
-2337 y Ft(abort)g(\(C-g\))630 2447 y Fu(Ab)s(ort)d(the)h(curren)m(t)f
+(or)i(v)-5 b(ariable)630 3144 y(assignmen)m(ts)31 b(found)e(there.)150
+3309 y Ft(abort)g(\(C-g\))630 3418 y Fu(Ab)s(ort)d(the)h(curren)m(t)f
 (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 2556 y(setting)j(of)g Ft(bell-style)p
-Fu(\).)150 2712 y Ft(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p
-Fj(x)p Ft(,)g(...)o(\))630 2822 y Fu(If)e(the)h(meta\014ed)g(c)m
-(haracter)h Fr(x)34 b Fu(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 2932 y(corresp)s(onding)
-g(upp)s(ercase)h(c)m(haracter.)150 3088 y Ft(prefix-meta)d(\(ESC\))630
-3197 y Fu(Metafy)39 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 3307 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5
-b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 3463
-y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 3573 y Fu(Incremen)m(tal)h
-(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
-3729 y Ft(revert-line)27 b(\(M-r\))630 3838 y Fu(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 Ft(undo)f Fu(command)630
-3948 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
-150 4104 y Ft(tilde-expand)d(\(M-&\))630 4214 y Fu(P)m(erform)j(tilde)h
-(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 4370
-y Ft(set-mark)d(\(C-@\))630 4480 y Fu(Set)33 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 4589 y(to)f(that)g(p)s(osition.)
-150 4745 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
-4855 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
+b(ject)26 b(to)i(the)630 3528 y(setting)j(of)g Ft(bell-style)p
+Fu(\).)150 3693 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fj(x)p Ft(,)g(...)o(\))630 3803 y Fu(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 3912 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4022 y Fr(x)37
+b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 4187 y
+Ft(prefix-meta)27 b(\(ESC\))630 4297 y Fu(Metafy)39 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 4406 y(T)m(yping)30
+b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 4571 y Ft(undo)e(\(C-_)g(or)h(C-x)
+g(C-u\))630 4681 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s
+(ered)f(for)g(eac)m(h)i(line.)150 4846 y Ft(revert-line)27
+b(\(M-r\))630 4956 y Fu(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
+Ft(undo)f Fu(command)630 5065 y(enough)e(times)h(to)g(get)h(bac)m(k)f
+(to)g(the)f(b)s(eginning.)150 5230 y Ft(tilde-expand)d(\(M-&\))630
+5340 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
+(ord.)p eop end
+%%Page: 130 136
+TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y Ft(set-mark)28
+b(\(C-@\))630 408 y Fu(Set)33 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 518 y(to)f(that)g(p)s(osition.)150 696
+y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+806 y Fu(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 4965 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 5121
-y Ft(character-search)26 b(\(C-]\))630 5230 y Fu(A)f(c)m(haracter)h(is)
+(sa)m(v)m(ed)630 915 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 1093
+y Ft(character-search)26 b(\(C-]\))630 1203 y Fu(A)f(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)g(the)f(next)g(o)s
-(ccurrence)g(of)g(that)g(c)m(haracter.)630 5340 y(A)30
+(ccurrence)g(of)g(that)g(c)m(haracter.)630 1313 y(A)30
 b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)p eop end
-%%Page: 127 133
-TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft
-(character-search-backwar)o(d)24 b(\(M-C-]\))630 408
-y Fu(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
-518 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.)150 722 y Ft(skip-csi-sequence)d
-(\(\))630 831 y Fu(Read)i(enough)f(c)m(haracters)h(to)g(consume)f(a)h
-(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630
-941 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60
-b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence)
-630 1050 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+(ccurrences.)150 1491 y Ft(character-search-backwar)o(d)24
+b(\(M-C-]\))630 1600 y Fu(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 1710 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.)150
+1888 y Ft(skip-csi-sequence)d(\(\))630 1998 y Fu(Read)i(enough)f(c)m
+(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
+(as)g(those)h(de\014ned)630 2107 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
+(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
+(trol)g(Sequence)630 2217 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p
-Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 1160 y(ducing)31
+Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 2326 y(ducing)31
 b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
-(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 1270 y(command,)f
+(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 2436 y(command,)f
 (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
-(editing)h(bu\013er.)44 b(This)31 b(is)630 1379 y(un)m(b)s(ound)d(b)m
+(editing)h(bu\013er.)44 b(This)31 b(is)630 2545 y(un)m(b)s(ound)d(b)m
 (y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
-1583 y Ft(insert-comment)26 b(\(M-#\))630 1692 y Fu(Without)36
+2724 y Ft(insert-comment)26 b(\(M-#\))630 2833 y Fu(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 Ft(comment-begin)c Fu(v)-5 b(ariable)36
-b(is)g(in-)630 1802 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+b(is)g(in-)630 2943 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 1911 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+(supplied,)630 3052 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 2021 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+(line)630 3162 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
 b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5
-b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 2131
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 3271
 y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f
-(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 2240
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 3381
 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
-2350 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f
+3491 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f
 (command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630
-2459 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g
+3600 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
-2569 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.)
-150 2772 y Ft(dump-functions)26 b(\(\))630 2882 y Fu(Prin)m(t)g(all)i
+3710 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.)
+150 3888 y Ft(dump-functions)26 b(\(\))630 3998 y Fu(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 2992 y(If)31 b(a)h(n)m(umeric)g
+(Readline)h(output)f(stream.)630 4107 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 3101 y(it)f(can)g(b)s(e)e(made)i
+(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 4217 y(it)f(can)g(b)s(e)e(made)i
 (part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29
 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150
-3305 y Ft(dump-variables)26 b(\(\))630 3414 y Fu(Prin)m(t)21
+4395 y Ft(dump-variables)26 b(\(\))630 4504 y Fu(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
-3524 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+4614 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
-3634 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k
+4724 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k
 Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)150 3837 y Ft(dump-macros)c(\(\))630 3947 y
+(default.)150 4902 y Ft(dump-macros)c(\(\))630 5011 y
 Fu(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
-4056 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+5121 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
-4166 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
+5230 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
 Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
-d(b)m(y)630 4275 y(default.)150 4479 y Ft(glob-complete-word)e(\(M-g\))
-630 4589 y Fu(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
-4698 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
-4808 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150
-5011 y Ft(glob-expand-word)c(\(C-x)j(*\))630 5121 y Fu(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 5230 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 5340 y(argumen)m(t)31 b(is)f(supplied,)g
-(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g
-(expansion.)p eop end
-%%Page: 128 134
-TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft
-(glob-list-expansions)25 b(\(C-x)k(g\))630 408 y Fu(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 Ft(glob-expand-word)630 518 y Fu(is)h(displa)m(y)m(ed,)h(and)e
-(the)h(line)g(is)f(redra)m(wn.)50 b(If)33 b(a)h(n)m(umeric)g(argumen)m
-(t)g(is)f(supplied,)h(a)g(`)p Ft(*)p Fu(')630 628 y(is)c(app)s(ended)f
-(b)s(efore)h(pathname)g(expansion.)150 803 y Ft(display-shell-version)
-25 b(\(C-x)k(C-v\))630 912 y Fu(Displa)m(y)j(v)m(ersion)e(information)h
-(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f(Bash.)150
-1088 y Ft(shell-expand-line)c(\(M-C-e\))630 1197 y Fu(Expand)34
-b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 b(This)34
-b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630
-1307 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f
-(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630
-1416 y(page)e(21\).)150 1592 y Ft(history-expand-line)25
-b(\(M-^\))630 1701 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
-h(curren)m(t)f(line.)150 1876 y Ft(magic-space)d(\(\))630
-1986 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g
+d(b)m(y)630 5340 y(default.)p eop end
+%%Page: 131 137
+TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft
+(glob-complete-word)25 b(\(M-g\))630 408 y Fu(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 518 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 628 y(\014le)30 b(names)h(for)f(p)s
+(ossible)g(completions.)150 781 y Ft(glob-expand-word)c(\(C-x)j(*\))630
+891 y Fu(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
+1000 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
+1110 y(argumen)m(t)31 b(is)f(supplied,)g(a)g(`)p Ft(*)p
+Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g(expansion.)150
+1263 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 1373
+y Fu(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 Ft(glob-expand-word)630 1482
+y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)50
+b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p
+Ft(*)p Fu(')630 1592 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g
+(expansion.)150 1746 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630
+1855 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h
+(curren)m(t)f(instance)h(of)f(Bash.)150 2009 y Ft(shell-expand-line)c
+(\(M-C-e\))630 2118 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h
+(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g
+(expansion)630 2228 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
+2337 y(page)e(22\).)150 2491 y Ft(history-expand-line)25
+b(\(M-^\))630 2600 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
+h(curren)m(t)f(line.)150 2754 y Ft(magic-space)d(\(\))630
+2863 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g
 (line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630
-2096 y([History)31 b(In)m(teraction],)i(page)e(139\).)150
-2271 y Ft(alias-expand-line)26 b(\(\))630 2380 y Fu(P)m(erform)i(alias)
+2973 y([History)31 b(In)m(teraction],)i(page)e(143\).)150
+3126 y Ft(alias-expand-line)26 b(\(\))630 3236 y Fu(P)m(erform)i(alias)
 i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h
-([Aliases],)g(page)f(90\).)150 2556 y Ft(history-and-alias-expand)o
-(-lin)o(e)24 b(\(\))630 2665 y Fu(P)m(erform)30 b(history)h(and)e
+([Aliases],)g(page)f(93\).)150 3390 y Ft(history-and-alias-expand)o
+(-lin)o(e)24 b(\(\))630 3499 y Fu(P)m(erform)30 b(history)h(and)e
 (alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150
-2840 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
-2950 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
-3125 y Ft(operate-and-get-next)25 b(\(C-o\))630 3235
+3653 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
+3762 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
+3916 y Ft(operate-and-get-next)25 b(\(C-o\))630 4025
 y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f
 (fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630
-3344 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41
-b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3520 y
-Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3629
+4135 y(curren)m(t)h(line)h(from)g(the)f(history)h(for)f(editing.)79
+b(A)42 b(n)m(umeric)h(argumen)m(t,)j(if)d(supplied,)630
+4244 y(sp)s(eci\014es)30 b(the)h(history)f(en)m(try)h(to)g(use)f
+(instead)g(of)h(the)f(curren)m(t)h(line.)150 4398 y Ft
+(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 4507
 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f
 (command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630
-3739 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
+4617 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
 Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g
-Fu(as)h(the)630 3848 y(editor,)31 b(in)f(that)h(order.)150
-4113 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4272
+Fu(as)h(the)630 4727 y(editor,)31 b(in)f(that)h(order.)150
+4961 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 5121
 y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h
 (a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g
-(con)m(tain)150 4382 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f
+(con)m(tain)150 5230 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f
 (the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v)
-m(es)i(as)f(sp)s(eci\014ed)f(in)150 4491 y(the)e Fm(posix)e
-Fu(standard.)275 4642 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv)
-m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g
-Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150
-4751 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p
-Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j
-(page)e(60\).)83 b(The)150 4861 y(Readline)31 b(default)g(is)f
-Ft(emacs)f Fu(mo)s(de.)275 5011 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f
-(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g
-(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 5121 y(had)f(t)m(yp)s
-(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f
-Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m
-(ou)i(can)g(edit)g(the)150 5230 y(text)35 b(of)f(the)g(line)g(with)f
-(the)h(standard)f Ft(vi)g Fu(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 5340 y(`)p
-Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p
-Ft(j)p Fu(',)g(and)g(so)h(forth.)p eop end
-%%Page: 129 135
-TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Fs(8.6)68
-b(Programmable)47 b(Completion)150 458 y Fu(When)25 b(w)m(ord)g
-(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g(a)g
-(command)f(for)h(whic)m(h)f(a)h(completion)150 568 y(sp)s
-(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39
-b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d
-Fu(builtin)j(\(see)g(Section)h(8.7)150 677 y([Programmable)h
-(Completion)f(Builtins],)k(page)d(131\),)j(the)c(programmable)g
-(completion)i(facilities)150 787 y(are)31 b(in)m(v)m(ok)m(ed.)275
-936 y(First,)23 b(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 1046 y(the)44 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 1156 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h
-(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)
-h(empt)m(y)150 1265 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f
-(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d
-Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150
-1375 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g
-(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26
-b(no)h(compsp)s(ec)g(is)150 1484 y(found)22 b(for)g(the)h(full)g
-(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f
-(for)h(the)g(p)s(ortion)f(follo)m(wing)150 1594 y(the)34
-b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g
-(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f
-(with)150 1704 y(the)e Ft(-D)e Fu(option)i(to)g Ft(complete)d
-Fu(is)j(used)e(as)i(the)g(default.)275 1853 y(Once)j(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 1963 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
-2072 y([Commands)30 b(F)-8 b(or)31 b(Completion],)g(page)g(124\))h(is)f
-(p)s(erformed.)275 2222 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 2331 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f
-(completed)h(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f
-Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150
-2441 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5
+m(es)i(as)f(sp)s(eci\014ed)f(in)150 5340 y(the)e Fm(posix)e
+Fu(standard.)p eop end
+%%Page: 132 138
+TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(132)275 299 y(In)35
+b(order)g(to)i(switc)m(h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d
+Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p
+Ft(set)30 b(-o)150 408 y(emacs)p Fu(')43 b(and)h(`)p
+Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h
+([The)e(Set)h(Builtin],)j(page)e(61\).)83 b(The)150 518
+y(Readline)31 b(default)g(is)f Ft(emacs)f Fu(mo)s(de.)275
+650 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Ft(vi)f
+Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
+(de,)g(as)h(if)f(y)m(ou)150 759 y(had)f(t)m(yp)s(ed)g(an)g(`)p
+Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f Fu(switc)m(hes)i(y)m(ou)g(in)m
+(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
+869 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
+Ft(vi)g Fu(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 978 y(`)p Ft(k)p Fu(')d(and)e(subsequen)m
+(t)h(lines)h(with)f(`)p Ft(j)p Fu(',)g(and)g(so)h(forth.)150
+1213 y Fs(8.6)68 b(Programmable)47 b(Completion)150 1373
+y Fu(When)25 b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f
+(argumen)m(t)h(to)g(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150
+1482 y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6
+b Fu(\))39 b(has)h(b)s(een)f(de\014ned)f(using)h(the)h
+Ft(complete)d Fu(builtin)j(\(see)g(Section)h(8.7)150
+1592 y([Programmable)h(Completion)f(Builtins],)k(page)d(134\),)j(the)c
+(programmable)g(completion)i(facilities)150 1701 y(are)31
+b(in)m(v)m(ok)m(ed.)275 1833 y(First,)23 b(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 1943 y(the)44
+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 2052 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h(string)f
+(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)h(empt)m
+(y)150 2162 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h
+(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40
+b(If)29 b(the)g(command)g(w)m(ord)150 2271 y(is)e(a)h(full)e(pathname,)
+i(a)g(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h
+(for)f(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150
+2381 y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f
+(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo)
+m(wing)150 2490 y(the)34 b(\014nal)g(slash.)53 b(If)34
+b(those)g(searc)m(hes)i(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an)
+m(y)g(compsp)s(ec)f(de\014ned)f(with)150 2600 y(the)k
+Ft(-D)g Fu(option)g(to)h Ft(complete)d Fu(is)i(used)g(as)g(the)g
+(default.)61 b(If)37 b(there)g(is)h(no)f(default)g(compsp)s(ec,)i(Bash)
+150 2710 y(attempts)e(alias)h(expansion)e(on)g(the)h(command)f(w)m(ord)
+g(as)h(a)f(\014nal)g(resort,)j(and)c(attempts)j(to)f(\014nd)e(a)150
+2819 y(compsp)s(ec)30 b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h
+(successful)f(expansion)275 2951 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 3060 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 3170 y([Commands)30
+b(F)-8 b(or)31 b(Completion],)g(page)g(127\))h(is)f(p)s(erformed.)275
+3302 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 3411 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h
+(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f Fu(or)h
+Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150
+3521 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5
 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m
-(hes.)42 b(See)150 2550 y(Section)31 b(5.2)h([Bash)e(V)-8
-b(ariables],)33 b(page)e(71,)g(for)f(a)h(description)g(of)f
-Ft(FIGNORE)p Fu(.)275 2700 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f
+(hes.)42 b(See)150 3630 y(Section)31 b(5.2)h([Bash)e(V)-8
+b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f
+Ft(FIGNORE)p Fu(.)275 3762 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f
 (b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g
-Ft(-G)e Fu(option)i(are)g(generated)150 2809 y(next.)41
+Ft(-G)e Fu(option)i(are)g(generated)150 3871 y(next.)41
 b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f
 (matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41
-b(The)150 2919 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32
+b(The)150 3981 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32
 b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i
-Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 3029 y(is)30
-b(used.)275 3178 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the)
+Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 4091 y(is)30
+b(used.)275 4222 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the)
 g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60
-b(The)37 b(string)150 3288 y(is)c(\014rst)e(split)i(using)f(the)h(c)m
+b(The)37 b(string)150 4332 y(is)c(\014rst)e(split)i(using)f(the)h(c)m
 (haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5
 b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150
-3397 y(honored.)56 b(Eac)m(h)37 b(w)m(ord)e(is)h(then)f(expanded)g
-(using)h(brace)g(expansion,)h(tilde)f(expansion,)h(parameter)150
-3507 y(and)44 b(v)-5 b(ariable)46 b(expansion,)j(command)44
-b(substitution,)49 b(and)44 b(arithmetic)i(expansion,)j(as)c(describ)s
-(ed)150 3616 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e
-(Expansions],)i(page)f(21\).)61 b(The)36 b(results)h(are)g(split)f
-(using)h(the)f(rules)150 3726 y(describ)s(ed)29 b(ab)s(o)m(v)m(e)i
-(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(30\).)
-42 b(The)30 b(results)f(of)h(the)g(expansion)150 3836
-y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f
-(completed,)j(and)d(the)i(matc)m(hing)g(w)m(ords)e(b)s(ecome)i(the)150
-3945 y(p)s(ossible)g(completions.)275 4095 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 4204 y(the)36
-b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59
-b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i
-(the)e Ft(COMP_)150 4314 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p
-Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5
-b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed)
-150 4423 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8
-b(ariables],)36 b(page)d(71\).)50 b(If)33 b(a)g(shell)g(function)g(is)g
-(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 4533 y Ft(COMP_WORDS)j
-Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74
-b(When)41 b(the)h(function)f(or)h(command)f(is)150 4643
+4441 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide)
+f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150
+4551 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5
+b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g
+(expanded)f(using)h(brace)150 4660 y(expansion,)g(tilde)h(expansion,)f
+(parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f
+(substitution,)i(and)150 4770 y(arithmetic)c(expansion,)f(as)g(describ)
+s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g
+(page)g(22\).)40 b(The)150 4880 y(results)23 b(are)h(split)g(using)f
+(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7)
+h([W)-8 b(ord)24 b(Splitting],)i(page)e(31\).)150 4989
+y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g
+(against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150
+5099 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f
+(completions.)275 5230 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 5340 y(the)36 b Ft(-F)f Fu(and)g
+Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 b(When)35
+b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i(the)e
+Ft(COMP_)p eop end
+%%Page: 133 139
+TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(133)150 299 y Ft(LINE)p
+Fu(,)42 b Ft(COMP_POINT)p Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e
+Ft(COMP_TYPE)f Fu(v)-5 b(ariables)41 b(are)f(assigned)g(v)-5
+b(alues)41 b(as)f(describ)s(ed)150 408 y(ab)s(o)m(v)m(e)34
+b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 b(ariables],)36
+b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g(b)s(eing)f(in)m
+(v)m(ok)m(ed,)k(the)150 518 y Ft(COMP_WORDS)j Fu(and)i
+Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74
+b(When)41 b(the)h(function)f(or)h(command)f(is)150 628
 y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h
 (name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150
-4752 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g
+737 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g
 (w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150
-4862 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s
+847 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s
 (eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65
-b(No)150 4971 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g
+b(No)150 956 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g
 (against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f
-(the)150 5081 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
-(in)g(generating)h(the)g(matc)m(hes.)275 5230 y(An)m(y)j(function)h(sp)
+(the)150 1066 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
+(in)g(generating)h(the)g(matc)m(hes.)275 1200 y(An)m(y)j(function)h(sp)
 s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53
 b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150
-5340 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d
+1310 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d
 Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see)
-i(Section)f(8.7)p eop end
-%%Page: 130 136
-TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y([Programmable)31
-b(Completion)h(Builtins],)f(page)h(131\),)g(to)g(generate)g(the)f(matc)
-m(hes.)42 b(It)31 b(m)m(ust)g(put)f(the)150 408 y(p)s(ossible)g
-(completions)h(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5
-b(ariable,)31 b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275
-542 y(Next,)26 b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h
-Ft(-C)f Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m
-(t)h(equiv)-5 b(alen)m(t)150 652 y(to)26 b(command)e(substitution.)39
+i(Section)f(8.7)150 1419 y([Programmable)31 b(Completion)h(Builtins],)f
+(page)h(134\),)g(to)g(generate)g(the)f(matc)m(hes.)42
+b(It)31 b(m)m(ust)g(put)f(the)150 1529 y(p)s(ossible)g(completions)h
+(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31
+b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 1663 y(Next,)26
+b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f
+Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h
+(equiv)-5 b(alen)m(t)150 1772 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 762 y(output.)40
+(er)f(line,)j(to)f(the)f(standard)150 1882 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 896 y(After)24
+(newline,)h(if)f(necessary)-8 b(.)275 2016 y(After)24
 b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m
 (y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e
-Fu(option)150 1005 y(is)34 b(applied)g(to)g(the)h(list.)52
+Fu(option)150 2125 y(is)34 b(applied)g(to)g(the)h(list.)52
 b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g
-(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 1115
+(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 2235
 y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h
 (b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p
-Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 1224 y(with)38
+Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 2345 y(with)38
 b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s
 (efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150
-1334 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m
+2454 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m
 (ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p
-Fu(')f(negates)i(the)f(pattern;)150 1443 y(in)d(this)g(case)h(an)m(y)g
+Fu(')f(negates)i(the)f(pattern;)150 2564 y(in)d(this)g(case)h(an)m(y)g
 (completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m
-(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 1553 y
+(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 2673 y
 Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h
 Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(64\))h(is)150 1663 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e
+(65\))h(is)150 2783 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e
 (without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m
-(haracters.)275 1797 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f
+(haracters.)275 2917 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f
 (su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g
-Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1906
+Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 3026
 y(mem)m(b)s(er)31 b(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
-2016 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275
-2150 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h
+3136 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275
+3270 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h
 (an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d
-Fu(op-)150 2259 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d
+Fu(op-)150 3380 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d
 Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h
-(completion)150 2369 y(is)h(attempted.)275 2503 y(If)35
+(completion)150 3489 y(is)h(attempted.)275 3623 y(If)35
 b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i
 Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150
-2612 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
+3733 y(directory)g(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
-2722 y(other)31 b(actions.)275 2856 y(By)g(default,)i(if)e(a)h(compsp)s
+3842 y(other)31 b(actions.)275 3976 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 2966 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g
+(the)g(completion)150 4086 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 3075 y(and)30 b(the)g(Readline)h(default)f
+h(are)g(not)f(attempted,)150 4195 y(and)30 b(the)g(Readline)h(default)f
 (of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29
-b(the)i Ft(-o)e(bashdefault)e Fu(option)150 3185 y(w)m(as)d(supplied)e
+b(the)i Ft(-o)e(bashdefault)e Fu(option)150 4305 y(w)m(as)d(supplied)e
 (to)j Ft(complete)c Fu(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 3294 y(attempted)j(if)f
+(the)f(default)h(Bash)g(completions)h(are)150 4415 y(attempted)j(if)f
 (the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41
 b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f
-(to)150 3404 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i
+(to)150 4524 y Ft(complete)f Fu(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 3513 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,)
+(erformed)150 4634 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 3647 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g
+275 4768 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
-3757 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d
+4877 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
-3867 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5
+4987 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 Fr(mark-directories)
-45 b Fu(Readline)c(v)-5 b(ariable,)150 3976 y(regardless)31
+45 b Fu(Readline)c(v)-5 b(ariable,)150 5096 y(regardless)31
 b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36
-b Fu(Readline)31 b(v)-5 b(ariable.)275 4110 y(There)25
+b Fu(Readline)31 b(v)-5 b(ariable.)275 5230 y(There)25
 b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f
 (completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150
-4220 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion)
+5340 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion)
 g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f
-(for)g(shell)150 4329 y(functions)28 b(executed)h(as)f(completion)i
-(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h
-(retried)g(b)m(y)150 4439 y(returning)j(an)i(exit)g(status)f(of)h(124.)
-48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j
-(the)e(compsp)s(ec)150 4548 y(asso)s(ciated)43 b(with)e(the)g(command)g
-(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e
-(as)i(the)150 4658 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f
-(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the)
-150 4768 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)
-e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g
-(set)g(of)150 4877 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)
-i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g
-(loaded)150 4987 y(all)g(at)g(once.)275 5121 y(F)-8 b(or)38
-b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp)
-s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150
-5230 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e
-(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150
-5340 y(load)31 b(completions)g(dynamically:)p eop end
-%%Page: 131 137
-TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(131)390 299 y Ft
-(_completion_loader\(\))390 408 y({)581 518 y(.)47 b
-("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g
-(return)f(124)390 628 y(})390 737 y(complete)g(-D)h(-F)g
-(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150
-972 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150
-1131 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5
+(for)g(shell)p eop end
+%%Page: 134 140
+TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y(functions)28
+b(executed)h(as)f(completion)i(handlers)d(to)i(indicate)g(that)g
+(completion)g(should)e(b)s(e)h(retried)g(b)m(y)150 408
+y(returning)j(an)i(exit)g(status)f(of)h(124.)48 b(If)31
+b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j(the)e
+(compsp)s(ec)150 518 y(asso)s(ciated)43 b(with)e(the)g(command)g(on)g
+(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e(as)i
+(the)150 628 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f(is)g
+(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the)150
+737 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)e
+(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g
+(set)g(of)150 847 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)i
+(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g(loaded)
+150 956 y(all)g(at)g(once.)275 1088 y(F)-8 b(or)38 b(instance,)h
+(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp)s(ecs,)i(eac)
+m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 1198 y(sp)s(onding)g(to)j
+(the)f(name)f(of)h(the)g(command,)i(the)e(follo)m(wing)h(default)f
+(completion)h(function)e(w)m(ould)150 1307 y(load)31
+b(completions)g(dynamically:)390 1439 y Ft(_completion_loader\(\))390
+1548 y({)581 1658 y(.)47 b("/etc/bash_completion.d/$1)o(.sh)o(")42
+b(>/dev/null)j(2>&1)i(&&)g(return)f(124)390 1767 y(})390
+1877 y(complete)g(-D)h(-F)g(_completion_loader)c(-o)k(bashdefault)e(-o)
+i(default)150 2112 y Fs(8.7)68 b(Programmable)47 b(Completion)f
+(Builtins)150 2271 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5
 b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h
-(facilities:)150 1241 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f
+(facilities:)150 2381 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f
 (argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f
-(completed,)j(and)d(t)m(w)m(o)150 1351 y(to)e(mo)s(dify)f(the)g
-(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1504 y
-Ft(compgen)870 1636 y(compgen)46 b([)p Fj(option)p Ft(])f([)p
-Fj(word)p Ft(])630 1767 y Fu(Generate)27 b(p)s(ossible)e(completion)i
+(completed,)j(and)d(t)m(w)m(o)150 2490 y(to)e(mo)s(dify)f(the)g
+(completion)i(as)e(it)h(is)g(happ)s(ening.)150 2644 y
+Ft(compgen)870 2775 y(compgen)46 b([)p Fj(option)p Ft(])f([)p
+Fj(word)p Ft(])630 2907 y Fu(Generate)27 b(p)s(ossible)e(completion)i
 (matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g
-Fr(option)p Fu(s,)h(whic)m(h)630 1877 y(ma)m(y)32 b(b)s(e)f(an)m(y)h
+Fr(option)p Fu(s,)h(whic)m(h)630 3017 y(ma)m(y)32 b(b)s(e)f(an)m(y)h
 (option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g
-(the)g(exception)i(of)f Ft(-p)630 1986 y Fu(and)39 b
+(the)g(exception)i(of)f Ft(-p)630 3126 y Fu(and)39 b
 Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f
-(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2096
+(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 3236
 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33
 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g
-(completion)630 2206 y(facilities,)g(while)d(a)m(v)-5
+(completion)630 3345 y(facilities,)g(while)d(a)m(v)-5
 b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5
-b(alues.)630 2337 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h
+b(alues.)630 3477 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
-2447 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e
-(a)h(completion)h(sp)s(eci\014cation)f(with)630 2556
+3586 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 3696
 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s
 (eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g
-Fr(w)m(ord)j Fu(will)630 2666 y(b)s(e)d(displa)m(y)m(ed.)630
-2797 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in)
+Fr(w)m(ord)j Fu(will)630 3806 y(b)s(e)d(displa)m(y)m(ed.)630
+3937 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 2907 y(generated.)150 3060 y Ft(complete)870
-3192 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
-Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3302 y(G)h
-Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3411
-y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h
-Fj(filterpat)p Ft(])870 3521 y([-P)g Fj(prefix)p Ft(])f([-S)h
-Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870
-3630 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630
-3762 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g
-Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38
-b(the)f Ft(-p)g Fu(option)630 3871 y(is)30 b(supplied,)e(or)i(if)g(no)f
-(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s
-(eci\014cations)g(are)630 3981 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g
+(ere)630 4047 y(generated.)150 4200 y Ft(complete)870
+4332 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
+Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 4441
+y(G)i Fj(globpat)p Ft(])870 4551 y([-W)g Fj(wordlist)p
+Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p
+Ft(])f([-X)h Fj(filterpat)p Ft(])870 4660 y([-P)g Fj(prefix)p
+Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f
+Ft(...])870 4770 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f
+Ft(...)o(])630 4902 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i
+(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63
+b(If)38 b(the)f Ft(-p)g Fu(option)630 5011 y(is)30 b(supplied,)e(or)i
+(if)g(no)f(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s
+(eci\014cations)g(are)630 5121 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g
 (that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38
-b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4091
+b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 5230
 y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h
 Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27
-b(are)h(supplied,)g(all)g(com-)630 4200 y(pletion)k(sp)s
-(eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f
-(the)h(remaining)f(options)h(and)630 4310 y(actions)27
+b(are)h(supplied,)g(all)g(com-)630 5340 y(pletion)i(sp)s
+(eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f
+(other)g(supplied)e(options)j(and)p eop end
+%%Page: 135 141
+TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(135)630 299 y(actions)27
 b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k
-(that)e(is,)g(completion)630 4419 y(attempted)g(on)f(a)h(command)f(for)
-g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)
-630 4529 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g
-(remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630
-4639 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f
-(completion)i(attempted)f(on)g(a)f(blank)g(line.)630
-4770 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s
-(eci\014cations)h(when)d(w)m(ord)i(completion)630 4880
-y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f
-(Section)g(8.6)g([Programmable)g(Completion],)630 4989
-y(page)31 b(129\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h
-(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 5121 y(Other)d(options,)i
-(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40
-b(The)29 b(argumen)m(ts)g(to)h(the)630 5230 y Ft(-G)p
+(that)e(is,)g(completion)630 408 y(attempted)g(on)f(a)h(command)f(for)g
+(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)
+630 518 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g
+(supplied)e(options)h(and)g(actions)i(should)d(apply)h(to)630
+628 y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)
+h(attempted)f(on)g(a)f(blank)g(line.)630 737 y(The)24
+b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h
+(and)g(actions)i(should)d(apply)h(to)630 847 y(completion)32
+b(on)e(the)g(inital)i(non-assignmen)m(t)f(w)m(ord)f(on)g(the)g(line,)h
+(or)g(after)f(a)h(command)630 956 y(delimiter)41 b(suc)m(h)g(as)f(`)p
+Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h
+(command)f(name)h(completion.)72 b(If)630 1066 y(m)m(ultiple)26
+b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i
+(precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630
+1176 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p
+Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p
+Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g
+Fr(name)630 1285 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d
+(completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y)
+630 1395 y(the)31 b(option.)630 1541 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 1650 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
+1760 y(page)31 b(132\).)630 1906 y(Other)d(options,)i(if)f(sp)s
+(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40
+b(The)29 b(argumen)m(ts)g(to)h(the)630 2016 y Ft(-G)p
 Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f
 (necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h
-Fu(options\))h(should)f(b)s(e)630 5340 y(quoted)28 b(to)h(protect)g
+Fu(options\))h(should)f(b)s(e)630 2125 y(quoted)28 b(to)h(protect)g
 (them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e
-Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)p eop end
-%%Page: 132 138
-TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(132)630 299 y Ft(-o)30
-b Fj(comp-option)1110 408 y Fu(The)c Fr(comp-option)i
+Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 2308 y Ft(-o)i
+Fj(comp-option)1110 2418 y Fu(The)c Fr(comp-option)i
 Fu(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 518 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h
+(b)s(eha)m(v-)1110 2527 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h
 (generation)h(of)e(completions.)41 b Fr(comp-option)27
-b Fu(ma)m(y)1110 628 y(b)s(e)j(one)g(of:)1110 782 y Ft(bashdefault)1590
-892 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h
-(completions)g(if)g(the)1590 1002 y(compsp)s(ec)i(generates)i(no)e
-(matc)m(hes.)1110 1156 y Ft(default)144 b Fu(Use)22 b(Readline's)g
-(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590
-1266 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
-1421 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h
-(completion)g(if)f(the)g(compsp)s(ec)1590 1530 y(generates)32
-b(no)e(matc)m(hes.)1110 1685 y Ft(filenames)1590 1794
+b Fu(ma)m(y)1110 2637 y(b)s(e)j(one)g(of:)1110 2819 y
+Ft(bashdefault)1590 2929 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g
+(default)f(Bash)h(completions)g(if)g(the)1590 3039 y(compsp)s(ec)i
+(generates)i(no)e(matc)m(hes.)1110 3221 y Ft(default)144
+b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g
+(the)g(comp-)1590 3331 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
+3513 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h
+(completion)g(if)f(the)g(compsp)s(ec)1590 3623 y(generates)32
+b(no)e(matc)m(hes.)1110 3806 y Ft(filenames)1590 3915
 y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
-(\014lenames,)1590 1904 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
+(\014lenames,)1590 4025 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
-2014 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s
-(ecial)g(c)m(har-)1590 2123 y(acters,)39 b(or)d(suppressing)f(trailing)
-i(spaces\).)59 b(This)35 b(option)i(is)1590 2233 y(in)m(tended)30
+4134 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s
+(ecial)f(c)m(har-)1590 4244 y(acters,)39 b(or)d(suppressing)f(trailing)
+i(spaces\).)59 b(This)35 b(option)i(is)1590 4354 y(in)m(tended)30
 b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with)
-1590 2342 y Ft(-F)p Fu(.)1110 2497 y Ft(noquote)144 b
+1590 4463 y Ft(-F)p Fu(.)1110 4646 y Ft(noquote)144 b
 Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m
-(ords)f(if)h(they)1590 2607 y(are)j(\014lenames)f(\(quoting)h
-(\014lenames)g(is)f(the)h(default\).)1110 2761 y Ft(nosort)192
+(ords)f(if)h(they)1590 4756 y(are)j(\014lenames)f(\(quoting)h
+(\014lenames)g(is)f(the)h(default\).)1110 4938 y Ft(nosort)192
 b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s
-(ossible)g(completions)1590 2871 y(alphab)s(etically)-8
-b(.)1110 3026 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g
+(ossible)g(completions)1590 5048 y(alphab)s(etically)-8
+b(.)1110 5230 y Ft(nospace)144 b Fu(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
-3135 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110
-3290 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d
-(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3400 y(ated,)g
-(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590
-3509 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h
-(other)g(actions.)630 3664 y Ft(-A)f Fj(action)66 b Fu(The)25
-b Fr(action)h Fu(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 3773 y(completions:)1110
-3928 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
+5340 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)p
+eop end
+%%Page: 136 142
+TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(136)1110 299 y Ft(plusdirs)96
+b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d(b)m(y)i(the)g(compsp)
+s(ec)g(are)g(gener-)1590 408 y(ated,)g(directory)f(name)g(completion)i
+(is)d(attempted)i(and)f(an)m(y)1590 518 y(matc)m(hes)j(are)e(added)g
+(to)h(the)g(results)f(of)g(the)h(other)g(actions.)630
+677 y Ft(-A)f Fj(action)66 b Fu(The)25 b Fr(action)h
+Fu(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 787 y(completions:)1110
+946 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110
-4083 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
-b(names.)1110 4238 y Ft(binding)144 b Fu(Readline)30
+1106 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
+b(names.)1110 1265 y Ft(binding)144 b Fu(Readline)30
 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590
-4347 y(Readline)h(Commands],)f(page)h(119\).)1110 4502
+1375 y(Readline)h(Commands],)f(page)h(122\).)1110 1534
 y Ft(builtin)144 b Fu(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 4612
-y(as)31 b Ft(-b)p Fu(.)1110 4766 y Ft(command)144 b Fu(Command)29
+b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 1644
+y(as)31 b Ft(-b)p Fu(.)1110 1803 y Ft(command)144 b Fu(Command)29
 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i
-Ft(-c)p Fu(.)1110 4921 y Ft(directory)1590 5031 y Fu(Directory)h
+Ft(-c)p Fu(.)1110 1963 y Ft(directory)1590 2072 y Fu(Directory)h
 (names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g
-Ft(-d)p Fu(.)1110 5185 y Ft(disabled)96 b Fu(Names)31
-b(of)g(disabled)f(shell)g(builtins.)1110 5340 y Ft(enabled)144
-b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)p eop
-end
-%%Page: 133 139
-TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(133)1110 299 y Ft(export)192
-b Fu(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
-Ft(-e)p Fu(.)1110 567 y Ft(file)288 b Fu(File)32 b(names.)40
-b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-f)p
-Fu(.)1110 725 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f(functions.)
-1110 883 y Ft(group)240 b Fu(Group)30 b(names.)40 b(Ma)m(y)32
-b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-g)p Fu(.)1110
-1042 y Ft(helptopic)1590 1151 y Fu(Help)37 b(topics)g(as)g(accepted)h
-(b)m(y)e(the)h Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590
-1261 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(49\).)1110
-1419 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f
-(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1529 y(the)55
-b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h
-([Bash)1590 1638 y(V)-8 b(ariables],)32 b(page)f(71\).)1110
-1797 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
+Ft(-d)p Fu(.)1110 2232 y Ft(disabled)96 b Fu(Names)31
+b(of)g(disabled)f(shell)g(builtins.)1110 2391 y Ft(enabled)144
+b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110
+2550 y Ft(export)192 b Fu(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
+2660 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 2819 y Ft(file)288
+b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
+(as)i Ft(-f)p Fu(.)1110 2979 y Ft(function)96 b Fu(Names)31
+b(of)g(shell)f(functions.)1110 3138 y Ft(group)240 b
+Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g
+(as)g Ft(-g)p Fu(.)1110 3298 y Ft(helptopic)1590 3407
+y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h
+Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 3517 y(tion)31
+b(4.2)g([Bash)g(Builtins],)g(page)g(50\).)1110 3676 y
+Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g
+(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 3786 y(the)55 b
+Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h
+([Bash)1590 3895 y(V)-8 b(ariables],)32 b(page)f(73\).)1110
+4055 y Ft(job)336 b Fu(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
-1906 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2064 y Ft(keyword)144
+4164 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 4324 y Ft(keyword)144
 b Fu(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 Ft(-k)p Fu(.)1110
-2223 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
-(con)m(trol)h(is)g(activ)m(e.)1110 2381 y Ft(service)144
+4483 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
+(con)m(trol)h(is)g(activ)m(e.)1110 4643 y Ft(service)144
 b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s
-(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2539 y Ft(setopt)192
+(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 4802 y Ft(setopt)192
 b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e
-Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2649
-y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(60\).)
-1110 2807 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
+Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 4912
+y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(61\).)
+1110 5071 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
 (accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590
-2917 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(49\).)
-1110 3075 y Ft(signal)192 b Fu(Signal)31 b(names.)1110
-3233 y Ft(stopped)144 b Fu(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 3392 y Ft(user)288
-b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
-(as)i Ft(-u)p Fu(.)1110 3550 y Ft(variable)96 b Fu(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 3660 y Ft(-v)p
-Fu(.)630 3818 y Ft(-C)30 b Fj(command)1110 3927 y Fr(command)35
-b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f
-(its)g(output)g(is)1110 4037 y(used)e(as)g(the)h(p)s(ossible)f
-(completions.)630 4195 y Ft(-F)g Fj(function)1110 4305
-y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f
-(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 4415 y(ronmen)m(t.)72
+5181 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).)
+1110 5340 y Ft(signal)192 b Fu(Signal)31 b(names.)p eop
+end
+%%Page: 137 143
+TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(137)1110 299 y Ft(stopped)144
+b Fu(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 454 y Ft(user)288 b Fu(User)30 b(names.)41
+b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-u)p
+Fu(.)1110 609 y Ft(variable)96 b Fu(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
+719 y Ft(-v)p Fu(.)630 874 y Ft(-C)30 b Fj(command)1110
+984 y Fr(command)35 b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m
+(vironmen)m(t,)i(and)f(its)g(output)g(is)1110 1093 y(used)e(as)g(the)h
+(p)s(ossible)f(completions.)630 1249 y Ft(-F)g Fj(function)1110
+1358 y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h
+(in)f(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 1468 y(ronmen)m(t.)72
 b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g
-(command)1110 4524 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f
+(command)1110 1577 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f
 (completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110
-4634 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h
-(w)m(ord)f(b)s(eing)h(completed,)1110 4743 y(as)g(describ)s(ed)f(ab)s
+1687 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h
+(w)m(ord)f(b)s(eing)h(completed,)1110 1797 y(as)g(describ)s(ed)f(ab)s
 (o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110
-4853 y(page)30 b(129\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s
-(ossible)g(completions)h(are)g(retriev)m(ed)1110 4963
+1906 y(page)30 b(132\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s
+(ossible)g(completions)h(are)g(retriev)m(ed)1110 2016
 y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e
-Fu(arra)m(y)j(v)-5 b(ariable.)630 5121 y Ft(-G)30 b Fj(globpat)1110
-5230 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
-Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 5340
-y(the)31 b(p)s(ossible)e(completions.)p eop end
-%%Page: 134 140
-TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y Ft(-P)30
-b Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s
+Fu(arra)m(y)j(v)-5 b(ariable.)630 2171 y Ft(-G)30 b Fj(globpat)1110
+2281 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
+Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 2390
+y(the)31 b(p)s(ossible)e(completions.)630 2545 y Ft(-P)h
+Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s
 (eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110
-408 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
-567 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
+2655 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
+2810 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
 b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g
-(other)g(options)1110 677 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
-835 y Ft(-W)h Fj(wordlist)1110 945 y Fu(The)24 b Fr(w)m(ordlist)k
+(other)g(options)1110 2920 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
+3075 y Ft(-W)h Fj(wordlist)1110 3185 y Fu(The)24 b Fr(w)m(ordlist)k
 Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i
-Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1054 y(as)36
+Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 3294 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 1164 y(completions)c(are)e
+(expanded.)57 b(The)35 b(p)s(ossible)1110 3404 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 1274 y(w)m(ord)f(b)s(eing)g(completed.)630
-1432 y Ft(-X)g Fj(filterpat)1110 1542 y Fr(\014lterpat)d
+(matc)m(h)i(the)1110 3513 y(w)m(ord)f(b)s(eing)g(completed.)630
+3669 y Ft(-X)g Fj(filterpat)1110 3778 y Fr(\014lterpat)d
 Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38
-b(It)25 b(is)g(applied)f(to)1110 1651 y(the)30 b(list)f(of)h(p)s
+b(It)25 b(is)g(applied)f(to)1110 3888 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 1761 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m
-(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1871
+1110 3998 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m
+(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 4107
 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p
 Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this)
-1110 1980 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
-Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2139 y(The)35
+1110 4217 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
+Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 4372 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
-2248 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f
+4482 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f
 Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630
-2358 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)
+4591 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)
 h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)
-630 2468 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
-(eci\014cation.)150 2626 y Ft(compopt)870 2760 y(compopt)46
-b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p
-Ft(])f([)p Fj(name)p Ft(])630 2894 y Fu(Mo)s(dify)33
+630 4701 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
+(eci\014cation.)150 4856 y Ft(compopt)870 4988 y(compopt)46
+b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p
+Ft(])e([)p Fj(name)p Ft(])630 5121 y Fu(Mo)s(dify)33
 b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b
 Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630
-3004 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f
+5230 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f
 Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h
-Fr(option)p Fu(s)h(are)630 3114 y(giv)m(en,)30 b(displa)m(y)e(the)g
+Fr(option)p Fu(s)h(are)630 5340 y(giv)m(en,)30 b(displa)m(y)e(the)g
 (completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b
-Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3223 y(The)f(p)s(ossible)
-g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5
-b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630
-3333 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h
-(that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630
-3442 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g
-(attempted)g(on)f(a)g(command)630 3552 y(for)g(whic)m(h)g(no)g
+Fu(or)27 b(the)i(curren)m(t)e(completion.)p eop end
+%%Page: 138 144
+TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(138)630 299 y(The)26
+b(p)s(ossible)g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)
+-5 b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630
+408 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g
+(that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630
+518 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)g
+(attempted)g(on)f(a)g(command)630 628 y(for)g(whic)m(h)g(no)g
 (completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45
-b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3662 y(that)24
-b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g
-(command)e(completion;)k(that)630 3771 y(is,)k(completion)g(attempted)h
-(on)e(a)h(blank)f(line.)630 3905 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i
-(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4039 y(The)23
-b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h(in)m(v)-5
-b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f(made)630
-4149 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h
+b(The)32 b Ft(-E)f Fu(option)i(indicates)630 737 y(that)23
+b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g
+(command)f(completion;)k(that)630 847 y(is,)36 b(completion)g
+(attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g
+Fu(option)h(indicates)g(that)h(other)630 956 y(supplied)26
+b(options)h(should)g(apply)f(to)i(completion)h(on)e(the)g(inital)i
+(non-assignmen)m(t)e(w)m(ord)630 1066 y(on)37 b(the)f(line,)j(or)e
+(after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p
+Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630
+1176 y(command)30 b(name)h(completion.)630 1310 y(If)k(m)m(ultiple)i
+(options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h
+(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 1419
+y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630
+1554 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h
+(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f
+(made)630 1663 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h
 Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f
-(exists,)630 4259 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150
-4499 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150
-4658 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h
+(exists,)630 1773 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150
+2013 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150
+2173 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h
 (additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i
-(default)150 4768 y(actions)29 b Ft(complete)d Fu(and)i
+(default)150 2282 y(actions)29 b Ft(complete)d Fu(and)i
 Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g
-(and)g(bind)e(it)j(to)g(a)g(particular)150 4877 y(command)h(using)g
-Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro)
+(and)g(bind)e(it)j(to)g(a)g(particular)150 2392 y(command)h(using)g
+Ft(complete)e(-F)p Fu(.)275 2526 y(The)j(follo)m(wing)j(function)e(pro)
 m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46
-b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)e(of)f
-(what)g(shell)g(functions)g(m)m(ust)f(do)h(when)f(used)h(for)f
-(completion.)42 b(This)29 b(function)h(uses)g(the)150
-5230 y(w)m(ord)38 b(passsed)g(as)h Ft($2)g Fu(to)g(determine)g(the)g
-(directory)g(name)g(to)g(complete.)67 b(Y)-8 b(ou)40
-b(can)f(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)28
-b Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g
-(indexed)g(b)m(y)g(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p
-eop end
-%%Page: 135 141
-TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(135)275 299 y(The)42
+b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 2636 y(example)41
+b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g
+(completion.)73 b(This)39 b(function)h(uses)150 2745
+y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f
+(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32
+b(can)g(also)g(use)g(the)150 2855 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5
+b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g
+(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 2989 y(The)42
 b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j
 Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,)
-150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g
+150 3099 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g
 Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g
-(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
-([Tilde)g(Expansion],)g(page)g(22\),)i(searc)m(hing)e(directories)g(in)
-e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed)
-e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
-(Builtins],)j(page)e(42\),)j(and)c(basic)h(supp)s(ort)150
-737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
-(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(64\).)46
-b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
+(names:)38 b(tilde)150 3208 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
+([Tilde)g(Expansion],)g(page)g(23\),)i(searc)m(hing)e(directories)g(in)
+e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 3318 y(whic)m(h)21 b(is)h(describ)s
+(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
+(Builtins],)j(page)e(43\),)j(and)c(basic)h(supp)s(ort)150
+3428 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
+(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(65\).)46
+b Ft(_comp_)150 3537 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
 b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only)
 f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150
-956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e
+3647 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e
 Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f
-(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g
+(p)s(er)150 3756 y(line.)275 3891 y(P)m(ossible)24 b(completions)h(go)g
 (in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24
 b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150
-1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e
+4000 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e
 (retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150
-1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d
-(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g
+4110 y(the)h(function)f(returns.)390 4244 y Ft(#)47 b(A)h(completion)d
+(function)g(for)i(the)g(cd)g(builtin)390 4354 y(#)g(based)g(on)g(the)g
 (cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package)
-390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g
-(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h
-(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581
-2491 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f
-(tilde)g(to)h(full)g(pathname)581 2600 y(case)g("$2")f(in)581
-2710 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819
-y(*\))286 b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e
-(or)h(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581
-3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h
-(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths)
-h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772
-3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g
-("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h
+390 4463 y(_comp_cd\(\))390 4573 y({)581 4682 y(local)i(IFS=$')g
+(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 4792 y(local)g(cur)h
+(_skipdot)f(_cdpath)581 4902 y(local)g(i)i(j)f(k)581
+5121 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h
+(full)g(pathname)581 5230 y(case)g("$2")f(in)581 5340
+y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)p eop end
+%%Page: 139 145
+TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(139)581 299 y Ft(*\))286
+b(cur=$2)46 b(;;)581 408 y(esac)581 628 y(#)h(no)h(cdpath)e(or)h
+(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581
+737 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h
+(@\(./*|../*|/*\))d(]];)j(then)772 847 y(#)g(compgen)f(prints)g(paths)h
+(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772
+956 y(IFS=$'\\n')772 1066 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g
+("$cur"\))f(\))772 1176 y(IFS=$')g(\\t\\n')581 1285 y(#)h
 (CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i
-(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134
-y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
-(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:})
-772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y
-(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g
-(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f
-(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963
-5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do)
-1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory)
-963 5230 y(done)772 5340 y(done)p eop end
-%%Page: 136 142
-TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(136)772 299 y Ft($_skipdot)45
-b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772
-408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g
+(CDPATH)581 1395 y(else)772 1504 y(IFS=$'\\n')772 1614
+y(_skipdot=false)772 1724 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
+(null)i(directory)e(names)i(to)g(.)772 1833 y(_cdpath=${CDPATH/#:/.:})
+772 1943 y(_cdpath=${_cdpath//::/:.)o(:})772 2052 y
+(_cdpath=${_cdpath/\045:/:.})772 2162 y(for)g(i)g(in)g
+(${_cdpath//:/$'\\n'};)c(do)963 2271 y(if)k([[)g($i)g(-ef)g(.)h(]];)f
+(then)f(_skipdot=true;)e(fi)963 2381 y(k="${#COMPREPLY[@]}")963
+2491 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do)
+1154 2600 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory)
+963 2710 y(done)772 2819 y(done)772 2929 y($_skipdot)f(||)i
+(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772
+3039 y(IFS=$')g(\\t\\n')581 3148 y(fi)581 3367 y(#)h(variable)f(names)g
 (if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581
-847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq)
-k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g
-("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390
-1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h
+3477 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c
+(-eq)k(0)g(]];)g(then)772 3587 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g
+("$cur"\))f(\))581 3696 y(fi)581 3915 y(return)g(0)390
+4025 y(})275 4171 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h
 (function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p
-Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f
-(and)i(append)f(slashes)g(to)h(directories;)390 1773
+Fu(:)390 4317 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f
+(and)i(append)f(slashes)g(to)h(directories;)390 4427
 y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f
-(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h
-(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33
+(arguments)390 4536 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h
+(bashdefault)e(-F)i(_comp_cd)f(cd)150 4682 y Fu(Since)33
 b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of)
 f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150
-2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f
+4792 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f
 (Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39
-b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g
+b Fu(option)150 4902 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g
 (completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d
-(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34
+(quoted)150 5011 y(appropriately)-8 b(.)53 b(That)34
 b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash)
-g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories)
+g(to)h(\014lenames)g(it)g(can)150 5121 y(determine)i(are)g(directories)
 h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g
-(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565
+(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 5230
 y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i
 Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g
-(completions)h(are)150 2675 y(directories\).)45 b(The)31
+(completions)h(are)150 5340 y(directories\).)45 b(The)31
 b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s
-(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c
-(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41
+(end)f(a)i(space)g(c)m(haracter)h(to)f(the)p eop end
+%%Page: 140 146
+TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(140)150 299 y(directory)28
+b(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41
 b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150
-2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h
+408 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h
 Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g
-(to)h(the)g(default)150 3004 y(Readline)40 b(set.)68
-b(These)39 b(include)g(things)g(lik)m(e)i(command)e(name)g(completion,)
-44 b(v)-5 b(ariable)40 b(completion)150 3113 y(for)i(w)m(ords)g(b)s
+(to)h(the)g(default)150 518 y(Readline)40 b(set.)68 b(These)39
+b(include)g(things)g(lik)m(e)i(command)e(name)g(completion,)44
+b(v)-5 b(ariable)40 b(completion)150 628 y(for)i(w)m(ords)g(b)s
 (eginning)f(with)h(`)p Ft({)p Fu(',)k(completions)e(con)m(taining)f
-(pathname)g(expansion)f(patterns)g(\(see)150 3223 y(Section)31
-b(3.5.8)h([Filename)g(Expansion],)e(page)i(30\),)f(and)f(so)h(on.)275
-3357 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h
+(pathname)g(expansion)f(patterns)g(\(see)150 737 y(Section)31
+b(3.5.8)h([Filename)g(Expansion],)e(page)i(32\),)f(and)f(so)h(on.)275
+872 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h
 Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m(e)g
-(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h
-Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
+(attempt)h(w)m(ord)150 981 y(completion)32 b(for)e(a)h
+Ft(cd)e Fu(command.)275 1116 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
 (extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g
-(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g
+(common)150 1225 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g
 (a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p
-2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150
-3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h
+2943 1225 28 4 v 39 w(completion)i(pro)5 b(ject.)150
+1335 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h
 (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g
-(Ian)150 3930 y(Macdonald,)44 b(the)d(pro)5 b(ject)41
+(Ian)150 1445 y(Macdonald,)44 b(the)d(pro)5 b(ject)41
 b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 b(/)g(/)g(bash-completion)g(.)g
-(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 4040
+(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 1554
 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g(as)h
-(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 b(older)h(v)m(ersion)h
-(of)f(the)g(bash)p 1532 4174 V 40 w(completion)h(pac)m(k)-5
+(Solaris)g(and)f(Mac)h(OS)f(X.)275 1689 y(An)54 b(older)h(v)m(ersion)h
+(of)f(the)g(bash)p 1532 1689 V 40 w(completion)h(pac)m(k)-5
 b(age)57 b(is)e(distributed)f(with)h(bash)f(in)h(the)150
-4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8
+1798 y Ft(examples/complete)26 b Fu(sub)s(directory)-8
 b(.)p eop end
-%%Page: 137 143
-TeXDict begin 137 142 bop 3614 -116 a Fu(137)150 299
+%%Page: 141 147
+TeXDict begin 141 146 bop 3614 -116 a Fu(141)150 299
 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150
-498 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)
+554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)
 f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8
-b(,)50 b(from)42 b(a)h(user's)150 607 y(standp)s(oin)m(t.)76
+b(,)50 b(from)42 b(a)h(user's)150 664 y(standp)s(oin)m(t.)76
 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76
 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150
-717 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g
-Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 944 y
-Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150
-1103 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the)
+774 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g
+Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025
+Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150
+1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the)
 f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e
-(Set)150 1213 y(Builtin],)32 b(page)g(60\),)h(the)e(shell)h(pro)m
+(Set)150 1294 y(Builtin],)32 b(page)g(61\),)h(the)e(shell)h(pro)m
 (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h
-(of)f(commands)150 1322 y(previously)h(t)m(yp)s(ed.)47
+(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47
 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e
 Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e
-(of)i(com-)150 1432 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h
+(of)i(com-)150 1513 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h
 (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d
-Fu(commands)i(\(default)g(500\))150 1541 y(is)h(sa)m(v)m(ed.)61
+Fu(commands)i(\(default)g(500\))150 1623 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
-1651 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g
+1732 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 1760 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d
-Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1888 y(When)g(the)g(shell)h(starts)g
+b(of)g(the)g(shell)150 1842 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d
+Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1984 y(When)g(the)g(shell)h(starts)g
 (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g
-(b)m(y)h(the)f Ft(HISTFILE)150 1998 y Fu(v)-5 b(ariable)26
+(b)m(y)h(the)f Ft(HISTFILE)150 2093 y Fu(v)-5 b(ariable)26
 b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24
 b(\014le)i(named)e(b)m(y)h(the)h(v)-5 b(alue)25 b(of)h
-Ft(HISTFILE)c Fu(is)k(truncated,)150 2107 y(if)42 b(necessary)-8
+Ft(HISTFILE)c Fu(is)k(truncated,)150 2203 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 2217 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46
+b(of)g(the)150 2312 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46
 b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last)
-h Ft($HISTSIZE)c Fu(lines)150 2326 y(are)35 b(copied)g(from)g(the)g
+h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g
 (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h
 Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d
-Fu(shell)150 2436 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)g(49\),)h(the)e(lines)g(are)g(app)s(ended)e
-(to)i(the)g(history)150 2545 y(\014le,)36 b(otherwise)f(the)g(history)f
+Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h
+([Bash)f(Builtins],)h(page)g(50\),)h(the)e(lines)g(are)g(app)s(ended)e
+(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f
 (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e
 Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150
-2655 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49
+2751 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49
 b(After)34 b(sa)m(ving)g(the)f(history)-8 b(,)34 b(the)g(history)f
-(\014le)g(is)g(truncated)150 2765 y(to)g(con)m(tain)h(no)f(more)g(than)
+(\014le)g(is)g(truncated)150 2860 y(to)g(con)m(tain)h(no)f(more)g(than)
 f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c
-Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2874
+Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2970
 y(non-n)m(umeric)c(v)-5 b(alue,)31 b(or)f(a)h(n)m(umeric)f(v)-5
 b(alue)31 b(less)g(than)f(zero,)h(the)g(history)f(\014le)h(is)f(not)h
-(truncated.)275 3002 y(If)g(the)h Ft(HISTTIMEFORMAT)d
+(truncated.)275 3112 y(If)g(the)h Ft(HISTTIMEFORMAT)d
 Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with)
-e(eac)m(h)h(history)150 3111 y(en)m(try)d(is)h(written)f(to)h(the)f
+e(eac)m(h)h(history)150 3221 y(en)m(try)d(is)h(written)f(to)h(the)f
 (history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c)
-m(haracter.)43 b(When)30 b(the)150 3221 y(history)22
+m(haracter.)43 b(When)30 b(the)150 3331 y(history)22
 b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h
 (commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150
-3330 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h
+3440 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h
 (for)f(the)h(follo)m(wing)h(history)e(en)m(try)-8 b(.)275
-3458 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f
+3582 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f
 (to)i(list)g(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h
-(history)150 3567 y(list.)41 b(The)27 b Ft(history)f
+(history)150 3692 y(list.)41 b(The)27 b Ft(history)f
 Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f
-(the)h(history)g(list)h(and)f(manipulate)150 3677 y(the)j(history)g
+(the)h(history)g(list)h(and)f(manipulate)150 3801 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
-3787 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g
+3911 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 3896 y(History],)31 b(page)h(120\).)275 4024
+b(or)150 4020 y(History],)31 b(page)h(123\).)275 4162
 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 4133 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e
+b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e
 Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g
-(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4243
+(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4381
 y(of)e(the)g(commands)f(en)m(tered.)40 b(The)26 b Ft(cmdhist)f
 Fu(shell)i(option,)h(if)f(enabled,)g(causes)h(the)e(shell)h(to)h
-(attempt)150 4352 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m
+(attempt)150 4491 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 4462 y(necessary)37
+b(,)25 b(adding)d(semicolons)h(where)150 4600 y(necessary)37
 b(to)f(preserv)m(e)h(syn)m(tactic)h(correctness.)58 b(The)36
 b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150
-4572 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em)m(b)s(edded)f
-(newlines)h(instead)h(of)f(semicolons.)40 b(The)23 b
-Ft(shopt)e Fu(builtin)i(is)h(used)150 4681 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
-(49,)h(for)e(a)h(description)f(of)h Ft(shopt)p Fu(.)150
-4908 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 5067
-y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g(whic)m(h)
-g(manipulate)g(the)h(history)f(list)h(and)f(history)g(\014le.)150
-5213 y Ft(fc)870 5340 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p
-Fj(first)p Ft(])g([)p Fj(last)p Ft(])p eop end
-%%Page: 138 144
-TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(138)870
-299 y Ft(fc)47 b(-s)g([)p Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p
-Fj(command)p Ft(])630 429 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f
-(range)g(of)f(commands)g(from)g Fr(\014rst)i Fu(to)f
-Fr(last)i Fu(from)d(the)h(history)f(list)630 539 y(and)i(displa)m(ys)h
-(or)g(edits)h(and)e(re-executes)j(them.)39 b(Both)25
-b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s(eci\014ed)
-630 648 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d(most)h(recen)m
-(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g(or)630
-758 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f
+4710 y(sa)m(v)m(e)41 b(the)e(command)g(with)f(em)m(b)s(edded)g
+(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b
+Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g
+(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j
+(page)f(65,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p
+Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150
+5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g
+(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g
+(\014le.)p eop end
+%%Page: 142 148
+TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)150
+299 y Ft(fc)870 425 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p
+Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 535 y(fc)h(-s)g([)p
+Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630
+661 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f(range)g(of)f(commands)
+g(from)g Fr(\014rst)i Fu(to)f Fr(last)i Fu(from)d(the)h(history)f(list)
+630 771 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39
+b(Both)25 b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s
+(eci\014ed)630 881 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d
+(most)h(recen)m(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g
+(or)630 990 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f
 (history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)d(is)h
-(used)f(as)630 867 y(an)g(o\013set)i(from)e(the)h(curren)m(t)f(command)
-h(n)m(um)m(b)s(er\).)39 b(If)27 b Fr(last)j Fu(is)e(not)f(sp)s
-(eci\014ed)g(it)h(is)g(set)g(to)630 977 y Fr(\014rst)p
-Fu(.)47 b(If)32 b Fr(\014rst)i Fu(is)f(not)g(sp)s(eci\014ed)f(it)h(is)g
-(set)g(to)h(the)f(previous)f(command)h(for)f(editing)i(and)630
-1087 y Fq(\000)p Fu(16)j(for)g(listing.)61 b(If)36 b(the)h
-Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f(are)i(listed)f
-(on)g(standard)630 1196 y(output.)59 b(The)36 b Ft(-n)h
-Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e(when)h
-(listing.)60 b(The)37 b Ft(-r)630 1306 y Fu(\015ag)e(rev)m(erses)f(the)
-h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 b(the)f(editor)h(giv)m
-(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 1415 y(in)m(v)m(ok)m(ed)33
-b(on)f(a)g(\014le)g(con)m(taining)h(those)f(commands.)44
-b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)d(v)-5
-b(alue)630 1525 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29
-b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})p
-Fu(.)34 b(This)630 1634 y(sa)m(ys)g(to)g(use)f(the)h(v)-5
+(used)f(as)630 1100 y(an)f(o\013set)g(from)g(the)g(curren)m(t)f
+(command)h(n)m(um)m(b)s(er\).)38 b(If)25 b Fr(last)k
+Fu(is)d(not)g(sp)s(eci\014ed,)g(it)g(is)g(set)g(to)630
+1209 y Fr(\014rst)p Fu(.)43 b(If)30 b Fr(\014rst)j Fu(is)e(not)h(sp)s
+(eci\014ed,)f(it)g(is)h(set)f(to)h(the)g(previous)f(command)g(for)g
+(editing)h(and)630 1319 y Fq(\000)p Fu(16)37 b(for)g(listing.)61
+b(If)36 b(the)h Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f
+(are)i(listed)f(on)g(standard)630 1428 y(output.)59 b(The)36
+b Ft(-n)h Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e
+(when)h(listing.)60 b(The)37 b Ft(-r)630 1538 y Fu(\015ag)e(rev)m
+(erses)f(the)h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35
+b(the)f(editor)h(giv)m(en)g(b)m(y)f Fr(ename)40 b Fu(is)630
+1648 y(in)m(v)m(ok)m(ed)33 b(on)f(a)g(\014le)g(con)m(taining)h(those)f
+(commands.)44 b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)
+d(v)-5 b(alue)630 1757 y(of)29 b(the)g(follo)m(wing)i(v)-5
+b(ariable)29 b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})
+p Fu(.)34 b(This)630 1867 y(sa)m(ys)g(to)g(use)f(the)h(v)-5
 b(alue)34 b(of)f(the)h Ft(FCEDIT)e Fu(v)-5 b(ariable)34
 b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g
-Ft(EDITOR)630 1744 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or)
+Ft(EDITOR)630 1976 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or)
 e Ft(vi)f Fu(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g
-(complete,)k(the)630 1854 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h
-(and)f(executed.)630 1984 y(In)k(the)g(second)g(form,)h
+(complete,)k(the)630 2086 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h
+(and)f(executed.)630 2212 y(In)k(the)g(second)g(form,)h
 Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f
-Fr(pat)j Fu(in)d(the)630 2093 y(selected)e(command)e(is)h(replaced)g(b)
+Fr(pat)j Fu(in)d(the)630 2322 y(selected)e(command)e(is)h(replaced)g(b)
 m(y)f Fr(rep)p Fu(.)41 b Fr(command)34 b Fu(is)c(in)m(tepreted)h(the)g
-(same)g(as)g Fr(\014rst)630 2203 y Fu(ab)s(o)m(v)m(e.)630
-2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f
+(same)g(as)g Fr(\014rst)630 2432 y Fu(ab)s(o)m(v)m(e.)630
+2558 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f
 Fu(command)h(is)g Ft(r='fc)e(-s')p Fu(,)h(so)h(that)h(t)m(yping)f(`)p
-Ft(r)f(cc)p Fu(')630 2443 y(runs)35 b(the)h(last)h(command)f(b)s
+Ft(r)f(cc)p Fu(')630 2668 y(runs)35 b(the)h(last)h(command)f(b)s
 (eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p
-Fu(')h(re-executes)h(the)e(last)630 2552 y(command)30
-b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(90\).)150
-2703 y Ft(history)870 2833 y(history)46 b([)p Fj(n)p
-Ft(])870 2943 y(history)g(-c)870 3052 y(history)g(-d)h
-Fj(offset)870 3162 y Ft(history)f([-anrw])g([)p Fj(filename)p
-Ft(])870 3271 y(history)g(-ps)h Fj(arg)630 3402 y Fu(With)26
+Fu(')h(re-executes)h(the)e(last)630 2777 y(command)30
+b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(93\).)150
+2921 y Ft(history)870 3047 y(history)46 b([)p Fj(n)p
+Ft(])870 3157 y(history)g(-c)870 3266 y(history)g(-d)h
+Fj(offset)870 3376 y Ft(history)f(-d)h Fj(start)p Ft(-)p
+Fj(end)870 3485 y Ft(history)f([-anrw])g([)p Fj(filename)p
+Ft(])870 3595 y(history)g(-ps)h Fj(arg)630 3721 y Fu(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 Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.)
+3831 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.)
 53 b(An)34 b(argumen)m(t)h(of)g Fr(n)f Fu(lists)i(only)f(the)g(last)g
-Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3621 y(shell)30
+Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3941 y(shell)30
 b(v)-5 b(ariable)31 b Ft(HISTTIMEFORMAT)26 b Fu(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 Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h
+4050 y(for)36 b Fr(strftime)41 b Fu(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
+4160 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
+630 4269 y(the)e(history)f(line.)630 4396 y(Options,)g(if)h(supplied,)e
+(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4539
 y Ft(-c)384 b Fu(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 Ft(-d)30 b Fj(offset)66
-b Fu(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f
-Fr(o\013set)p Fu(.)39 b Fr(o\013set)27 b Fu(should)22
-b(b)s(e)h(sp)s(eci\014ed)1110 4600 y(as)31 b(it)g(app)s(ears)e(when)h
-(the)g(history)g(is)h(displa)m(y)m(ed.)630 4751 y Ft(-a)384
+(options)1110 4649 y(to)31 b(replace)g(the)g(history)f(list)h
+(completely)-8 b(.)630 4792 y Ft(-d)30 b Fj(offset)66
+b Fu(Delete)38 b(the)f(history)f(en)m(try)h(at)f(p)s(osition)h
+Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j
+(it)1110 4902 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s
+(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50
+b(If)1110 5011 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m
+(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110
+5121 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e
+(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 5230 y(of)h(the)g(history)
+-8 b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i
+(the)f(curren)m(t)f Ft(history)1110 5340 y(-d)30 b Fu(command.)p
+eop end
+%%Page: 143 149
+TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)630
+299 y Ft(-d)30 b Fj(start)p Ft(-)p Fj(end)1110 408 y
+Fu(Delete)23 b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s
+(ositions)g Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110
+518 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38
+b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110
+628 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 789 y Ft(-a)384
 b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h
-(\014le.)41 b(These)29 b(are)h(history)1110 4861 y(lines)36
+(\014le.)41 b(These)29 b(are)h(history)1110 899 y(lines)36
 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f
-(Bash)h(session,)h(but)1110 4970 y(not)31 b(already)g(app)s(ended)d(to)
-j(the)g(history)f(\014le.)630 5121 y Ft(-n)384 b Fu(App)s(end)32
+(Bash)h(session,)h(but)1110 1008 y(not)31 b(already)g(app)s(ended)d(to)
+j(the)g(history)f(\014le.)630 1170 y Ft(-n)384 b Fu(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
+(\014le)h(to)1110 1280 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: 139 145
-TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(139)630
-299 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h(and)f(app)s
-(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)630
-483 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f(history)
-g(list)h(to)h(the)e(history)g(\014le.)630 668 y Ft(-p)384
-b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h
-Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
-777 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
-(in)g(the)g(history)g(list.)630 962 y Ft(-s)384 b Fu(The)30
+1110 1389 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f
+(Bash)h(session.)630 1551 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g
+(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f
+(list.)630 1713 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m
+(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630
+1874 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f
+(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
+1984 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
+(in)g(the)g(history)g(list.)630 2146 y Ft(-s)384 b Fu(The)30
 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
 (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
-1146 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
+2307 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
 Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f
 Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630
-1256 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
+2417 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
 b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d
-Fu(v)-5 b(ariable)29 b(is)f(used.)150 1534 y Fs(9.3)68
-b(History)46 b(Expansion)150 1693 y Fu(The)f(History)h(library)e(pro)m
+Fu(v)-5 b(ariable)29 b(is)f(used.)150 2661 y Fs(9.3)68
+b(History)46 b(Expansion)150 2820 y Fu(The)f(History)h(library)e(pro)m
 (vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g
-(the)f(history)150 1803 y(expansion)g(pro)m(vided)f(b)m(y)h
+(the)f(history)150 2930 y(expansion)g(pro)m(vided)f(b)m(y)h
 Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
-(used)e(to)i(manipulate)f(the)150 1912 y(history)30 b(information.)275
-2072 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
+(used)e(to)i(manipulate)f(the)150 3040 y(history)30 b(information.)275
+3176 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
 (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
-2182 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
+3286 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
-2291 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
-(quic)m(kly)-8 b(.)275 2451 y(History)40 b(expansion)g(is)h(p)s
-(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b)
-s(efore)d(the)150 2560 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.)
-275 2720 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i
-(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h
-(from)f(the)150 2829 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 2939 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m
-(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h
-(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3048
-y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s
-(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21
-b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150
-3158 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 3268 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 3377 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
-3487 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38
-b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g
-(to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150
-3596 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h
-(treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150
-3706 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
-3865 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
-Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150
-3975 y(page)32 b(49\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s
-(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h
-Ft(histverify)d Fu(shell)150 4085 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 4194 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 4304 y(bu\013er)e(for)i(further)e(mo)s
-(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g
-(the)g Ft(histreedit)e Fu(shell)i(option)150 4413 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 4523 y(correction.)68
-b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e
-Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150
-4633 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63
-b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e
-Fu(builtin)h(ma)m(y)i(b)s(e)150 4742 y(used)21 b(to)i(add)f(commands)g
-(to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i
-(executing)f(them,)h(so)e(that)150 4852 y(they)31 b(are)f(a)m(v)-5
+3395 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 3532 y(History)24 b(expansion)f(is)h(p)s
+(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b)
+s(efore)e(the)h(shell)150 3642 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g
+(and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8
+b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 3751 y(the)d(history)f
+(expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i
+(from)e(previous)g(lines.)275 3888 y(History)37 b(expansion)f(tak)m(es)
+i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g
+(determine)g(whic)m(h)f(line)h(from)150 3998 y(the)42
+b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74
+b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150
+4107 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
+(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h
+(called)h(the)150 4217 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s
+(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j
+(called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b
+Fr(mo)s(di\014ers)150 4327 y Fu(are)33 b(a)m(v)-5 b(ailable)36
+b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32
+b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150
+4436 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
+(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
+(ord.)150 4546 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
+(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m
+(haracter,)150 4655 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g
+(default.)275 4792 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f
+(b)s(e)g(used)f(to)150 4902 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g
+(enclose)g(v)m(erbatim)g(sequences)150 5011 y(of)k(c)m(haracters,)i
+(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g
+(c)m(haracters)i(enclosed)e(within)150 5121 y(double)h(quotes)i(ma)m(y)
+f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m
+(kslash)g(can)h(escap)s(e)f(the)g(history)150 5230 y(expansion)e(c)m
+(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 5340
+y(double)g(quotes.)p eop end
+%%Page: 144 150
+TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)275
+299 y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p
+Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g
+(the)g(history)f(expansion)150 408 y(c)m(haracter,)e(but)34
+b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e
+(quoted)h(if)g(it)g(immediately)150 518 y(precedes)30
+b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
+658 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h
+Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150
+767 y(Builtin],)24 b(page)e(65\))h(ma)m(y)e(b)s(e)g(used)g(to)h(tailor)
+g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37
+b(If)21 b(the)h Ft(histverify)150 877 y Fu(shell)35 b(option)f(is)h
+(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h(history)g
+(substitutions)e(are)i(not)g(immedi-)150 987 y(ately)i(passed)d(to)i
+(the)g(shell)f(parser.)55 b(Instead,)37 b(the)e(expanded)g(line)g(is)h
+(reloaded)g(in)m(to)g(the)f(Readline)150 1096 y(editing)29
+b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 b(If)28
+b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h Ft(histreedit)d
+Fu(shell)150 1206 y(option)e(is)g(enabled,)h(a)g(failed)f(history)g
+(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h(the)f(Readline)g
+(editing)h(bu\013er)150 1315 y(for)31 b(correction.)43
+b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f Ft(history)e
+Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f(what)g(a)150
+1425 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g(using)f(it.)40
+b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f Ft(history)e
+Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1534 y(to)36 b(add)f(commands)g
+(to)h(the)g(end)f(of)g(the)h(history)f(list)i(without)e(actually)i
+(executing)g(them,)g(so)e(that)150 1644 y(they)c(are)f(a)m(v)-5
 b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29
 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275
-5011 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5
+1784 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5
 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion)
-g(mec)m(h-)150 5121 y(anism)h(with)g(the)g Ft(histchars)d
+g(mec)m(h-)150 1893 y(anism)h(with)g(the)g Ft(histchars)d
 Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f
-(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 5230 y(page)32
-b(71\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m
+(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 2003 y(page)32
+b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m
 (haracter)f(to)g(mark)f(history)g(timestamps)h(when)150
-5340 y(writing)e(the)h(history)f(\014le.)p eop end
-%%Page: 140 146
-TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(140)150
-299 y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150
-446 y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h
-(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
-b(Unless)33 b(the)150 555 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f
-(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
-(history)f(list.)150 712 y Ft(!)432 b Fu(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 822 y(the)i(line,)g(`)p Ft(=)p
-Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d
-Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630
-931 y Fu(builtin\).)150 1088 y Ft(!)p Fj(n)384 b Fu(Refer)30
-b(to)i(command)e(line)g Fr(n)p Fu(.)150 1245 y Ft(!-)p
-Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g
-Fu(lines)h(bac)m(k.)150 1401 y Ft(!!)384 b Fu(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 Ft(!-1)p Fu('.)150 1558 y Ft(!)p Fj(string)144
-b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
-(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
-1668 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
-1824 y Ft(!?)p Fj(string)p Ft([?])630 1934 y Fu(Refer)25
-b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
-g(p)s(osition)g(in)g(the)g(history)630 2044 y(list)32
-b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p
-Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39
-b Fu(is)32 b(follo)m(w)m(ed)630 2153 y(immediately)g(b)m(y)e(a)h
-(newline.)150 2310 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p
-Ft(^)630 2420 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32
-b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b
-Fu(with)31 b Fr(string2)p Fu(.)630 2529 y(Equiv)-5 b(alen)m(t)31
-b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p
-Fu(.)150 2686 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)
-m(yp)s(ed)f(so)h(far.)150 2882 y Fk(9.3.2)63 b(W)-10
-b(ord)41 b(Designators)150 3029 y Fu(W)-8 b(ord)27 b(designators)h(are)
-g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)
-41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
-3139 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
+2112 y(writing)e(the)h(history)f(\014le.)150 2317 y Fk(9.3.1)63
+b(Ev)m(en)m(t)39 b(Designators)150 2464 y Fu(An)32 b(ev)m(en)m(t)j
+(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g
+(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150
+2573 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i
+(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h(history)f(list.)150
+2741 y Ft(!)432 b Fu(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
+2850 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p
+Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f
+(using)g(the)g Ft(shopt)630 2960 y Fu(builtin\).)150
+3124 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g
+Fr(n)p Fu(.)150 3289 y Ft(!-)p Fj(n)336 b Fu(Refer)30
+b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150
+3454 y Ft(!!)384 b Fu(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 Ft(!-1)p
+Fu('.)150 3618 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h
+(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in)
+g(the)g(history)630 3728 y(list)31 b(starting)g(with)f
+Fr(string)p Fu(.)150 3892 y Ft(!?)p Fj(string)p Ft([?])630
+4002 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)
+g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
+4111 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45
+b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f
+(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 4221
+y(immediately)g(b)m(y)e(a)h(newline.)150 4386 y Ft(^)p
+Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 4495 y Fu(Quic)m(k)h
+(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
+Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 4605
+y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p
+Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 4769 y Ft(!#)384
+b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150
+4974 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
+5121 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
+(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
+b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
+5230 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
 b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
-(b)s(egins)150 3248 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
+(b)s(egins)150 5340 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
 Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p
 Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
-(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
-3358 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
-41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
-(line)g(separated)h(b)m(y)150 3468 y(single)h(spaces.)275
-3601 y(F)-8 b(or)31 b(example,)150 3758 y Ft(!!)384 b
-Fu(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
-3867 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4024
-y Ft(!!:$)288 b Fu(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
-4133 y(to)31 b Ft(!$)p Fu(.)150 4290 y Ft(!fi:2)240 b
-Fu(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 4400
-y(letters)j Ft(fi)p Fu(.)275 4556 y(Here)e(are)h(the)g(w)m(ord)f
-(designators:)150 4713 y Ft(0)g(\(zero\))114 b Fu(The)30
-b Ft(0)p Fu(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 4870 y Fj(n)432
-b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 5027 y Ft(^)432
-b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
-5183 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
-5340 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
-(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)p
+(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)p
 eop end
-%%Page: 141 147
-TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(141)150
-299 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
+%%Page: 145 151
+TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(145)150
+299 y(\014rst)29 b(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h
+(\(zero\).)41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g
+(curren)m(t)f(line)g(separated)h(b)m(y)150 408 y(single)h(spaces.)275
+552 y(F)-8 b(or)31 b(example,)150 725 y Ft(!!)384 b Fu(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 834 y(mand)30 b(is)g(rep)s(eated)g
+(in)g(toto.)150 1002 y Ft(!!:$)288 b Fu(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 1112 y(to)31
+b Ft(!$)p Fu(.)150 1280 y Ft(!fi:2)240 b Fu(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 1390 y(letters)j Ft(fi)p Fu(.)275
+1563 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
+1735 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(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 1904 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
+2072 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
+(ord)g(1.)150 2240 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
+2409 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
+(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150
+2577 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
 Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p
-Fu('.)150 458 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
+Fu('.)150 2745 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
 (the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
 Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630
-568 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
+2855 y(to)j(use)g(`)p Ft(*)p Fu(')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 677 y(that)j(case.)150 837 y Fj(x)p
+(returned)e(in)630 2964 y(that)j(case.)150 3133 y Fj(x)p
 Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150
-996 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
+3301 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
 Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f
-(last)h(w)m(ord.)275 1156 y(If)i(a)h(w)m(ord)g(designator)g(is)g
+(last)h(w)m(ord.)275 3474 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 1265 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
-1465 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 1611 y Fu(After)29
+(previous)f(command)150 3583 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
+3791 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 3938 y Fu(After)29
 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h
 (sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150
-1721 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
-Ft(:)p Fu('.)150 1880 y Ft(h)432 b Fu(Remo)m(v)m(e)32
+4048 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
+Ft(:)p Fu('.)150 4221 y Ft(h)432 b Fu(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 2040 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
+h(head.)150 4389 y Ft(t)432 b Fu(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
-2199 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
+4557 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
 (the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f
-(basename.)150 2359 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
-(trailing)g(su\016x.)150 2518 y Ft(p)432 b Fu(Prin)m(t)30
+(basename.)150 4726 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
+(trailing)g(su\016x.)150 4894 y Ft(p)432 b Fu(Prin)m(t)30
 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150
-2677 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
-(escaping)h(further)e(substitutions.)150 2837 y Ft(x)432
+5062 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
+(escaping)h(further)e(substitutions.)150 5230 y Ft(x)432
 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p
 Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,)
-630 2946 y(and)d(newlines.)150 3106 y Ft(s/)p Fj(old)p
-Ft(/)p Fj(new)p Ft(/)630 3215 y Fu(Substitute)i Fr(new)40
-b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37
-b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32
-b(delimiter)630 3325 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
-Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f
-Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630
-3435 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p
-Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g
-Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 3544
-y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)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 3654 y(the)31 b(input)e(line.)150
-3813 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
-3973 y Ft(g)150 4082 y(a)432 b Fu(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 4192 y(with)30 b(`)p
-Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p
-Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4351 y
-Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p
-Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m
-(en)m(t.)p eop end
-%%Page: 142 148
-TeXDict begin 142 147 bop 3614 -116 a Fu(142)150 299
-y Fp(10)80 b(Installing)52 b(Bash)150 554 y Fu(This)31
+630 5340 y(and)d(newlines.)p eop end
+%%Page: 146 152
+TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(146)150
+299 y Ft(s/)p Fj(old)p Ft(/)p Fj(new)p Ft(/)630 408 y
+Fu(Substitute)32 b Fr(new)40 b Fu(for)32 b(the)h(\014rst)f(o)s
+(ccurrence)h(of)f Fr(old)37 b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48
+b(An)m(y)32 b(delimiter)630 518 y(ma)m(y)25 b(b)s(e)g(used)f(in)g
+(place)i(of)f(`)p Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s
+(e)e(quoted)h(in)f Fr(old)29 b Fu(and)24 b Fr(new)32
+b Fu(with)25 b(a)630 628 y(single)k(bac)m(kslash.)40
+b(If)28 b(`)p Ft(&)p Fu(')g(app)s(ears)g(in)f Fr(new)p
+Fu(,)i(it)f(is)h(replaced)f(b)m(y)g Fr(old)p Fu(.)40
+b(A)28 b(single)h(bac)m(kslash)630 737 y(will)35 b(quote)g(the)g(`)p
+Ft(&)p Fu('.)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 847 y(the)31
+b(input)e(line.)150 1006 y Ft(&)432 b Fu(Rep)s(eat)31
+b(the)f(previous)g(substitution.)150 1166 y Ft(g)150
+1275 y(a)432 b Fu(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 1385 y(with)30 b(`)p Ft(s)p Fu(',)h(as)f(in)h
+Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p Ft(/)p Fu(,)c(or)j(with)h(`)p
+Ft(&)p Fu('.)150 1544 y Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i
+(`)p Ft(s)p Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g
+(the)g(ev)m(en)m(t.)p eop end
+%%Page: 147 153
+TeXDict begin 147 152 bop 3614 -116 a Fu(147)150 299
+y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31
 b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i
 (Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150
-664 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j
+643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j
 Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f
-(of)h(Unix,)150 773 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g
+(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g
 (as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s
-(orts)h(exist)i(for)150 883 y Fm(ms-dos)p Fu(,)h Fm(os/2)p
-Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1134 y Fs(10.1)68
-b(Basic)45 b(Installation)150 1294 y Fu(These)30 b(are)h(installation)h
-(instructions)e(for)h(Bash.)275 1435 y(The)e(simplest)i(w)m(a)m(y)g(to)
-g(compile)h(Bash)e(is:)199 1577 y(1.)61 b Ft(cd)38 b
+(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p
+Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68
+b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h
+(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to)
+g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b
 Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and)
 f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330
-1686 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f
+1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f
 Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g
-(migh)m(t)330 1796 y(need)21 b(to)g(t)m(yp)s(e)g(`)p
+(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p
 Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h
 Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330
-1906 y Fu(itself.)330 2044 y(Running)30 b Ft(configure)f
+1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f
 Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f
-(messages)h(telling)h(whic)m(h)330 2153 y(features)e(it)g(is)f(c)m(hec)
-m(king)i(for.)199 2291 y(2.)61 b(T)m(yp)s(e)30 b(`)p
+(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec)
+m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p
 Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g
-Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2429
+Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374
 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p
-Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2567
+Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509
 y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p
 Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p
 Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330
-2677 y(pages)31 b(and)f(Info)g(\014le.)275 2847 y(The)20
+2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20
 b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i
 (v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150
-2956 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42
+2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42
 b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e
-Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3066 y(tory)k(of)g(the)g
+Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g
 (pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38
 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e
-Fu(directories,)39 b(eac)m(h)150 3176 y(directory)29
+Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29
 b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40
 b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining)
-g(system-)150 3285 y(dep)s(enden)m(t)e(de\014nitions.)40
+g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40
 b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g
-Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3395 y(run)h(in)h(the)h
+Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h
 (future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f
 (\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150
-3504 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g
+3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g
 (recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e
-Fu(con)m(taining)j(compiler)150 3614 y(output)30 b(\(useful)h(mainly)g
+Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g
 (for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s
-(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3724
+(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655
 y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m
-(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3865 y(T)-8 b(o)37
+(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37
 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g
-(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3975
-y(stands,)30 b(t)m(yp)s(e)390 4116 y Ft(bash-2.04$)45
-b(./configure)g(--help)150 4258 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g
-(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4399
-y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g(things)g(to)i(compile)
-g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h(ho)m(w)150
-4509 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h
-(to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)
-150 4619 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30
-b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275
-4760 y(The)e(\014le)g Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g
-Ft(configure)c Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40
-b(Y)-8 b(ou)150 4870 y(only)34 b(need)g Ft(configure.ac)d
-Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i
-Ft(configure)31 b Fu(using)j(a)g(new)m(er)150 4979 y(v)m(ersion)25
-b(of)f(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f
-(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 Ft(make)d(clean)p
+(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899
+y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45
+b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g
+(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303
+y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory)
+g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150
+4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g
+(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41
+b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in)
+g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23
+b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4)
+o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390
+4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g
+(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096
+y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8
+b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(148,)j(for)c(more)i
+(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h
+(separate)h(from)e(the)g(source.)p eop end
+%%Page: 148 154
+TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(148)275 299 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 408 y Ft(configure)47 b
+Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55
+b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150
+518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e
+(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g
+Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c
+Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8
+b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m
+(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31
+b Fu(using)j(a)g(new)m(er)150 878 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
+1018 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 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p
 Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g
 Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150
-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 Ft(make)e(distclean)p Fu('.)p eop end
-%%Page: 143 149
-TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(143)150 299 y Fs(10.2)68
-b(Compilers)46 b(and)f(Options)150 458 y Fu(Some)28 b(systems)h
-(require)f(un)m(usual)f(options)i(for)f(compilation)i(or)f(linking)f
-(that)h(the)g Ft(configure)d Fu(script)150 568 y(do)s(es)32
-b(not)g(kno)m(w)g(ab)s(out.)44 b(Y)-8 b(ou)33 b(can)f(giv)m(e)h
-Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5
-b(ariables)32 b(b)m(y)g(setting)h(them)150 677 y(in)k(the)g(en)m
-(vironmen)m(t.)62 b(Using)38 b(a)f(Bourne-compatible)i(shell,)g(y)m(ou)
-f(can)g(do)f(that)h(on)f(the)g(command)150 787 y(line)31
-b(lik)m(e)g(this:)390 926 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g
-(./configure)275 1065 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f
+1237 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 Ft(make)e(distclean)p Fu('.)150 1487 y
+Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y
+Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f
+(compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d
+Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44
+b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5
+b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150
+1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f
+(Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g
+(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115
+y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275
+2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f
 Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390
-1204 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42
-b(LDFLAGS=-s)j(./configure)275 1343 y Fu(The)29 b(con\014guration)i
+2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42
+b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i
 (pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5
-b(ailable.)150 1590 y Fs(10.3)68 b(Compiling)46 b(F)-11
-b(or)45 b(Multiple)g(Arc)l(hitectures)150 1750 y Fu(Y)-8
+b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11
+b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8
 b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g
 (computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150
-1859 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in)
+3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in)
 f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31
 b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150
-1969 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h
-Ft(VPATH)e Fu(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h
-Ft(make)p Fu(.)37 b Ft(cd)25 b Fu(to)h(the)f(directory)g(where)g(y)m
-(ou)150 2078 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f
-(executables)i(to)g(go)g(and)e(run)g(the)h Ft(configure)d
-Fu(script)j(from)g(the)g(source)150 2188 y(directory)-8
-b(.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(need)f(to)h(supply)e(the)i
-Ft(--srcdir=PATH)27 b Fu(argumen)m(t)32 b(to)g(tell)h
-Ft(configure)28 b Fu(where)150 2297 y(the)36 b(source)g(\014les)f(are.)
-57 b Ft(configure)33 b Fu(automatically)39 b(c)m(hec)m(ks)e(for)e(the)h
-(source)g(co)s(de)f(in)h(the)f(directory)150 2407 y(that)c
-Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2546
+3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i
+Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g
+Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150
+3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f
+(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c
+Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g
+(Section)f(10.1)i([Basic)f(Installation],)i(page)e(147\).)47
+b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493
+y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g
+Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78
+b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e
+(the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h
+Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743
 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f
 Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e
 Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150
-2656 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h
+3853 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 2765 y(for)c(one)h(arc)m(hitecture,)h(use)e
+(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e
 (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g
-(another)g(arc)m(hitecture.)275 2904 y(Alternativ)m(ely)-8
+(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8
 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,)
-g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 3014
+g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212
 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m
 (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g
-(source)g(directory)-8 b(.)150 3123 y(Here's)41 b(an)f(example)i(that)f
+(source)g(directory)-8 b(.)150 4322 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 3233 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p
-Fu(:)390 3372 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o
+(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p
+Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o
 (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150
-3511 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m
+4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m
 (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least)
-h(one)150 3620 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f
+h(one)150 4821 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
-3868 y Fs(10.4)68 b(Installation)47 b(Names)150 4027
+5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230
 y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35
 b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d
-Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4137
+Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340
 y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e
-Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)150
-4246 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h
-(a)f(v)-5 b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p
-Ft(make)p Fu(')i(v)-5 b(ariable)42 b(when)f(running)150
-4356 y(`)p Ft(make)29 b(install)p Fu('.)275 4495 y(Y)-8
-b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d
-(for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150
-4604 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80
-b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g
-Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4714 y(`)p Ft(make)29
-b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75
-b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h
-(libraries.)150 4824 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g
-(\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)150
-5071 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150
-5230 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f
+Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p
+eop end
+%%Page: 149 155
+TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(149)150 299 y Ft(--prefix=)p
+Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5
+b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p
+Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p
+Ft(make)29 b(install)p Fu('.)275 566 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 676 y(arc)m(hitecture-indep)s(enden)m(t)
+44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c
+Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150
+785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f
+Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h
+(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32
+b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f
+(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)
+l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f
 Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8
-b(,)52 b(but)44 b(need)h(to)150 5340 y(determine)26 b(b)m(y)g(the)g(t)m
+b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m
 (yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26
-b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)p
-eop end
-%%Page: 144 150
-TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(144)150 299 y(if)28 b(it)g(prin)m(ts)f(a)
-h(message)g(sa)m(ying)h(it)f(can)g(not)f(guess)h(the)g(host)f(t)m(yp)s
-(e,)i(giv)m(e)g(it)f(the)g Ft(--host=TYPE)c Fu(option.)150
-408 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h
-(for)f(the)h(system)g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p
-Ft(sun4)p Fu(',)g(or)f(a)h(canonical)i(name)150 518 y(with)e(three)h
-(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32
-b(`)p Ft(i386-unknown-freebsd4.2)p Fu('\).)275 663 y(See)e(the)h
-(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5
-b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 919 y Fs(10.6)68
-b(Sharing)45 b(Defaults)150 1078 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f
+b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150
+1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f
+(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g
+Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p
+Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system)
+g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h
+(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40
+b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p
+Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f
+Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5
+b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68
+b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f
 (set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d
 Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150
-1188 y(shell)48 b(script)f(called)i Ft(config.site)44
+2471 y(shell)48 b(script)f(called)i Ft(config.site)44
 b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5
 b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150
-1298 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43
+2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43
 b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39
-b Fu(if)46 b(it)g(exists,)k(then)150 1407 y Ft(PREFIX/etc/config.site)
+b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site)
 24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g
 Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150
-1517 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67
+2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67
 b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c
-Fu(lo)s(oks)k(for)f(a)h(site)150 1626 y(script,)31 b(but)e(not)i(all)g
-Ft(configure)d Fu(scripts)i(do.)150 1883 y Fs(10.7)68
-b(Op)t(eration)46 b(Con)l(trols)150 2042 y Ft(configure)28
+Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g
+Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68
+b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28
 b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m
-(w)e(it)h(op)s(erates.)150 2217 y Ft(--cache-file=)p
-Fj(file)630 2326 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g
+(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p
+Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g
 (the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h
 Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630
-2436 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e
-(debugging)g Ft(configure)p Fu(.)150 2606 y Ft(--help)192
+3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e
+(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192
 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g
-Ft(configure)p Fu(,)d(and)i(exit.)150 2775 y Ft(--quiet)150
-2885 y(--silent)150 2995 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f
+Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150
+4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f
 (messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f
-(made.)150 3164 y Ft(--srcdir=)p Fj(dir)630 3274 y Fu(Lo)s(ok)i(for)g
+(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g
 (the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p
 Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630
-3383 y(mine)e(that)h(directory)g(automatically)-8 b(.)150
-3553 y Ft(--version)630 3663 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g
+4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150
+4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g
 (Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d
-Fu(script,)j(and)f(exit.)275 3838 y Ft(configure)34 b
+Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b
 Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s
-(oilerplate)g(options.)61 b(`)p Ft(configure)150 3947
-y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150
-4203 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150
-4363 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f
-(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g
-Fr(feature)35 b Fu(indicates)150 4472 y(an)e(optional)i(part)e(of)h
-(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p
-Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5
-b(age)150 4582 y Fu(is)32 b(something)h(lik)m(e)h(`)p
-Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45
-b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k)
--5 b(age,)35 b(use)150 4692 y Ft(--without-)p Fj(package)p
-Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f
-(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4801
-y Ft(--disable-)p Fj(feature)p Fu(.)275 4946 y(Here)28
-b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c
-Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g
-Ft(configure)150 5056 y Fu(recognizes.)150 5230 y Ft(--with-afs)630
-5340 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j
-(System)e(from)g(T)-8 b(ransarc.)p eop end
-%%Page: 145 151
-TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(145)150 299 y Ft(--with-bash-malloc)630
-408 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e
-Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34
-b(is)g(not)g(the)630 518 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e
-(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i
-(originally)g(deriv)m(ed)630 628 y(from)f(the)h(4.2)g
-Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g
-Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630
-737 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g
-(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)
-630 847 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s
-(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630
-956 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i
-(systems.)150 1120 y Ft(--with-curses)630 1230 y Fu(Use)h(the)h(curses)
+(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340
+y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p
+eop end
+%%Page: 150 156
+TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(150)150 299 y Fs(10.8)68
+b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h
+Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p
+Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35
+b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50
+b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29
+b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677
+y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p
+Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i
+(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35
+b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46
+b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is)
+g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p
+Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f
+(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f
+(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306
+y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g
+(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150
+1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m
+(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h
+Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630
+1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g
+Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g
+(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p
+Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m
+(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58
+b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56
+b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630
+2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e)
+i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630
+2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i
+(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses)
 e(library)h(instead)g(of)h(the)f(termcap)g(library)-8
-b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1339
+b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615
 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i
-(termcap)e(database.)150 1503 y Ft(--with-gnu-malloc)630
-1613 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p
-Fu(.)150 1776 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p
-Ft(])630 1886 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with)
+(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630
+2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p
+Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p
+Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with)
 g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630
-1996 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p
+3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p
 Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e
-(later)630 2105 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41
+(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41
 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f
-Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 2215 y(mak)m(e)28
+Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28
 b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p
 Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f
-Fu(b)m(y)630 2324 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m
+Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m
 (ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630
-2434 y(system)35 b(include)f(and)g(library)g(directories.)54
+3705 y(system)35 b(include)f(and)g(library)g(directories.)54
 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with)
-f(the)630 2544 y(v)m(ersion)42 b(in)e Ft(lib/readline)p
+f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p
 Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f
-(v)-5 b(alue,)44 b Ft(configure)630 2653 y Fu(treats)27
+(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27
 b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g
-(installed)h(v)m(ersion)g(of)f(Readline)630 2763 y(in)34
+(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34
 b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in)
 g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630
-2872 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150
-3036 y Ft(--with-purify)630 3146 y Fu(De\014ne)23 b(this)g(to)h(use)f
+4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150
+4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f
 (the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e
-(Rational)i(Soft)m(w)m(are.)150 3309 y Ft(--enable-minimal-config)630
-3419 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h
+(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630
+4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h
 (close)g(to)f(the)g(historical)h(Bourne)e(shell.)275
-3585 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h
+4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h
 (alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150
-3694 y(than)h(c)m(hanging)h(run-time)f(features.)150
-3860 y Ft(--enable-largefile)630 3970 y Fu(Enable)e(supp)s(ort)f(for)h
-(large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o
-(rge_)o(file)o(/)630 4079 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p
-Fu(\))31 b(if)36 b(the)g(op)s(erating)h(system)f(requires)g(sp)s(ecial)
-h(compiler)g(op-)630 4189 y(tions)27 b(to)h(build)e(programs)h(whic)m
-(h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m
-(y)f(default,)630 4299 y(if)k(the)h(op)s(erating)g(system)f(pro)m
-(vides)h(large)g(\014le)g(supp)s(ort.)150 4462 y Ft(--enable-profiling)
-630 4572 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e
-(pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630
-4682 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150
-4845 y Ft(--enable-static-link)630 4955 y Fu(This)37
-b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8
-b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61
-b(This)37 b(could)h(b)s(e)630 5064 y(used)30 b(to)h(build)e(a)i(v)m
-(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 5230
+4958 y(than)h(c)m(hanging)h(run-time)f(features.)150
+5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)36
+b(supp)s(ort)f(for)g(large)j(\014les)e(\()p Ft(http:)5
+b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats)
+o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s
+(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p
+eop end
+%%Page: 151 157
+TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(151)630 299 y(build)33
+b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51
+b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630
+408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s
+(ort.)150 570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i
+(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h
+(b)s(e)d(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f
+(it)g(is)f(executed.)150 951 y Ft(--enable-static-link)630
+1061 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h
+(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61
+b(This)37 b(could)h(b)s(e)630 1171 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 1334
 y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f
 (to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150
-5340 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m
+1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m
 (y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p
-Fu('.)p eop end
-%%Page: 146 152
-TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(146)275 299 y(All)26 b(of)f(the)h(follo)m
-(wing)h(options)f(except)g(for)g(`)p Ft(disabled-builtins)p
-Fu(',)c(`)p Ft(direxpand-default)p Fu(',)h(and)150 408
-y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g
-(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro)
-m(vide)150 518 y(the)e(necessary)f(supp)s(ort.)150 698
-y Ft(--enable-alias)630 807 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and)
-f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)
-g(Sec-)630 917 y(tion)31 b(6.6)g([Aliases],)i(page)e(90\).)150
-1090 y Ft(--enable-arith-for-comma)o(nd)630 1200 y Fu(Include)21
+Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g
+(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p
+Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28
+b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f
+(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp)
+s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41
+b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f
+Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630
+2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(93\).)150
+2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21
 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g
 Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630
-1309 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f
+2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f
 (3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150
-1482 y Ft(--enable-array-variables)630 1592 y Fu(Include)h(supp)s(ort)g
+2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g
 (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33
-b(\(see)h(Section)g(6.7)h([Ar-)630 1701 y(ra)m(ys],)c(page)g(91\).)150
-1874 y Ft(--enable-bang-history)630 1984 y Fu(Include)36
+b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(94\).)150
+3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36
 b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f
-(\(see)h(Section)g(9.3)h([History)f(In-)630 2093 y(teraction],)c(page)e
-(139\).)150 2266 y Ft(--enable-brace-expansion)630 2376
+(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e
+(143\).)150 3487 y Ft(--enable-brace-expansion)630 3597
 y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h
 Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40
-b(Section)h(3.5.1)630 2485 y([Brace)32 b(Expansion],)e(page)h(21,)h
-(for)e(a)g(complete)i(description.)150 2658 y Ft
-(--enable-casemod-attribu)o(tes)630 2768 y Fu(Include)37
+b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h
+(for)e(a)g(complete)i(description.)150 3868 y Ft
+(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37
 b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h
-Ft(declare)e Fu(builtin)i(and)f(as-)630 2878 y(signmen)m(t)29
+Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29
 b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g
 Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630
-2987 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f
-(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 3160 y Ft
-(--enable-casemod-expansi)o(on)630 3270 y Fu(Include)h(supp)s(ort)e
+4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f
+(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft
+(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e
 (for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150
-3443 y Ft(--enable-command-timing)630 3552 y Fu(Include)43
+4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43
 b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g
-(w)m(ord)f(and)g(for)h(displa)m(ying)630 3662 y(timing)37
+(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37
 b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i
 Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630
-3771 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w)
+4959 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 3944 y Ft(--enable-cond-command)630 4054 y Fu(Include)33
+150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33
 b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51
-b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 4164 y(tional)c
-(Constructs],)e(page)h(10\).)150 4337 y Ft(--enable-cond-regexp)630
-4446 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h
+b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 5340 y(tional)c
+(Constructs],)e(page)h(11\).)p eop end
+%%Page: 152 158
+TeXDict begin 152 157 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(152)150 299 y Ft(--enable-cond-regexp)630
+408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h
 Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p
-Ft(=~)p Fu(')g(binary)630 4556 y(op)s(erator)25 b(in)f(the)h
+Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h
 Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h
-([Conditional)e(Con-)630 4665 y(structs],)31 b(page)g(10\).)150
-4838 y Ft(--enable-coprocesses)630 4948 y Fu(Include)23
+([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150
+774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23
 b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e
 Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630
-5057 y([Pip)s(elines],)31 b(page)g(8\).)150 5230 y Ft
-(--enable-debugger)630 5340 y Fu(Include)f(supp)s(ort)e(for)i(the)h
-(bash)f(debugger)g(\(distributed)g(separately\).)p eop
-end
-%%Page: 147 153
-TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(147)150 299 y Ft
-(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53
+993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger)
+630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g
+(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o
+(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p
+Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j
+Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p
+Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5
+b(around.)39 b(This)27 b(has)g(implications)630 1724
+y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150
+1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53
 b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i
-([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(64\))g(to)f(b)s(e)f
+([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(65\))g(to)f(b)s(e)f
 (enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41
-b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150
-774 y Ft(--enable-directory-stack)630 883 y Fu(Include)j(supp)s(ort)g
+b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150
+2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g
 (for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i
 Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630
-993 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
-(k],)g(page)f(93\).)150 1139 y Ft(--enable-disabled-builti)o(ns)630
-1249 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m
+2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
+(k],)g(page)f(96\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630
+2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m
 (ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f
-Ft(xxx)e Fu(has)630 1358 y(b)s(een)31 b(disabled)g(using)g(`)p
+Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p
 Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e
-(Builtins],)i(page)f(49,)630 1468 y(for)e(details)i(of)e(the)h
+(Builtins],)i(page)f(50,)630 3039 y(for)e(details)i(of)e(the)h
 Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150
-1614 y Ft(--enable-dparen-arithmet)o(ic)630 1724 y Fu(Include)42
+3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42
 b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i
-(Section)f(3.2.4.2)i([Conditional)630 1833 y(Constructs],)30
-b(page)h(10\).)150 1979 y Ft(--enable-extended-glob)630
-2089 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h
+(Section)f(3.2.4.2)i([Conditional)630 3404 y(Constructs],)30
+b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630
+3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h
 (matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630
-2198 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i
-(page)e(31.)150 2345 y Ft(--enable-extended-glob-d)o(efau)o(lt)630
-2454 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g
+3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i
+(page)e(33.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630
+4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g
 Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)
-d(Sec-)630 2564 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(64,)h(to)f(b)s(e)f(enabled.)150 2710 y Ft(--enable-function-import)630
-2819 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g
+d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
+(65,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630
+4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g
 (de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630
-2929 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41
+4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41
 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150
-3075 y Ft(--enable-glob-asciirange)o(-def)o(ault)630
-3185 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g
+4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630
+4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g
 Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m
-(v)m(e)h(under)630 3294 y(Section)39 b(4.3.2)h([The)e(Shopt)g
-(Builtin],)j(page)e(64,)i(to)f(b)s(e)d(enabled.)65 b(This)37
-b(con)m(trols)j(the)630 3404 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h
+(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g
+(Builtin],)j(page)e(65,)i(to)f(b)s(e)d(enabled.)65 b(This)37
+b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h
 (ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g
-(expressions.)150 3550 y Ft(--enable-help-builtin)630
-3660 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m
+(expressions.)150 5121 y Ft(--enable-help-builtin)630
+5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m
 (ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25
-b(\(see)630 3769 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f
-(49\).)150 3915 y Ft(--enable-history)630 4025 y Fu(Include)e(command)g
-(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e
-Fu(builtin)j(commands)f(\(see)h(Sec-)630 4134 y(tion)h(9.1)g([Bash)g
-(History)g(F)-8 b(acilities],)34 b(page)d(137\).)150
-4281 y Ft(--enable-job-control)630 4390 y Fu(This)h(enables)i(the)f
-(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m
-(trol],)i(page)f(100\),)630 4500 y(if)c(the)h(op)s(erating)g(system)f
-(supp)s(orts)f(them.)150 4646 y Ft(--enable-multibyte)630
-4756 y Fu(This)g(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
-4865 y(the)h(necessary)f(supp)s(ort.)150 5011 y Ft
-(--enable-net-redirection)o(s)630 5121 y Fu(This)23 b(enables)h(the)g
-(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g
-Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 5230 y Fu(and)31
-b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31
-b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630
-5340 y(tions],)e(page)g(32\).)p eop end
-%%Page: 148 154
-TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(148)150 299 y Ft
-(--enable-process-substit)o(utio)o(n)630 408 y Fu(This)49
+b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f
+(50\).)p eop end
+%%Page: 153 159
+TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(153)150 299 y Ft(--enable-history)630
+408 y Fu(Include)29 b(command)g(history)h(and)f(the)h
+Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630
+518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34
+b(page)d(141\).)150 664 y Ft(--enable-job-control)630
+774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i
+(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(103\),)630
+883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150
+1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(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 1249 y(the)h(necessary)f(supp)s(ort.)150
+1395 y Ft(--enable-net-redirection)o(s)630 1504 y Fu(This)23
+b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g
+(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614
+y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26
+b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h
+([Redirec-)630 1724 y(tions],)e(page)g(34\).)150 1870
+y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49
 b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)
-s(cess)e(Substitution],)630 518 y(page)31 b(30\))h(if)e(the)h(op)s
+s(cess)e(Substitution],)630 2089 y(page)31 b(31\))h(if)e(the)h(op)s
 (erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150
-677 y Ft(--enable-progcomp)630 787 y Fu(Enable)d(the)g(programmable)g
+2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g
 (completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630
-897 y(Completion],)i(page)h(129\).)42 b(If)30 b(Readline)h(is)f(not)h
+2454 y(Completion],)i(page)h(132\).)42 b(If)30 b(Readline)h(is)f(not)h
 (enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150
-1056 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 1166
+2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710
 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m
 (b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630
-1275 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p
+2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p
 Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36
-b(Section)h(6.9)g([Con)m(trolling)g(the)630 1385 y(Prompt],)30
-b(page)h(94,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
-(escap)s(e)h(sequences.)150 1544 y Ft(--enable-readline)630
-1654 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f
-(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1763
+b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30
+b(page)h(97,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
+(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630
+3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f
+(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294
 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g
-(Editing],)h(page)g(104\).)150 1923 y Ft(--enable-restricted)630
-2032 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p
+(Editing],)h(page)g(107\).)150 3440 y Ft(--enable-restricted)630
+3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p
 Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630
-2142 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68
+3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68
 b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630
-2252 y(page)31 b(95,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s
-(de.)150 2411 y Ft(--enable-select)630 2521 y Fu(Include)25
+3769 y(page)31 b(99,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s
+(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25
 b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j
-(the)e(generation)h(of)f(simple)630 2630 y(men)m(us)k(\(see)h(Section)g
-(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150
-2790 y Ft(--enable-separate-helpfi)o(les)630 2899 y Fu(Use)h(external)h
+(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g
+(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(11\).)150
+4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h
 (\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g
-(the)g Ft(help)f Fu(builtin)h(instead)630 3009 y(of)f(storing)f(the)h
-(text)g(in)m(ternally)-8 b(.)150 3168 y Ft(--enable-single-help-str)o
-(ings)630 3278 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e
+(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h
+(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o
+(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e
 (the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h)
-i(help)630 3387 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g
+i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g
 (text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35
-b(ma)m(y)g(need)630 3497 y(to)c(disable)g(this)f(if)g(y)m(our)h
+b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h
 (compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150
-3656 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3766
+5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230
 y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h
 (\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630
-3875 y(page)31 b(96\).)150 4035 y Ft(--enable-usg-echo-defaul)o(t)630
-4144 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p
-Fu(.)150 4304 y Ft(--enable-xpg-echo-defaul)o(t)630 4413
-y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m
-(kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630
-4523 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23
-b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g
-Ft(xpg_echo)e Fu(shell)h(option)630 4633 y(to)28 b Ft(on)p
-Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e)
-i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s(eci\014ed)f(in)g(the)630
-4742 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53
-b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(49,)630
-4852 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g
-(that)g Ft(echo)e Fu(recognizes.)275 5011 y(The)f(\014le)i
-Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p
-Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150
-5121 y(are)35 b(not)g(settable)i(from)d Ft(configure)p
-Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c)
-m(hanged;)k(b)s(ew)m(are)d(of)150 5230 y(the)h(consequences)g(if)f(y)m
-(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e
-(eac)m(h)i(de\014nition)e(for)g(more)150 5340 y(information)c(ab)s(out)
-f(its)h(e\013ect.)p eop end
-%%Page: 149 155
-TeXDict begin 149 154 bop 3614 -116 a Fu(149)150 299
+5340 y(page)31 b(99\).)p eop end
+%%Page: 154 160
+TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(154)150 299 y Ft
+(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g
+Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft
+(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f
+Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m
+(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h
+Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5
+b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630
+897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f
+Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s
+(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s
+(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g
+(Builtins],)h(page)f(50,)630 1116 y(for)30 b(a)h(description)f(of)h
+(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275
+1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31
+b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f
+(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d
+Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g
+(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494
+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 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p
+eop end
+%%Page: 155 161
+TeXDict begin 155 160 bop 3614 -116 a Fu(155)150 299
 y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150
 533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i
 (Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e
@@ -18629,8 +19102,8 @@ s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f
 (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 Ft(bug-bash@gnu.org)p Fu(.)p eop end
-%%Page: 150 156
-TeXDict begin 150 155 bop 3614 -116 a Fu(150)150 141
+%%Page: 156 162
+TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 141
 y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13
 b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26
 b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f
@@ -18651,20 +19124,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g
 Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g
 Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330
 1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e
-(POSIX)g(Mo)s(de],)h(page)g(96\).)225 1565 y Fq(\017)60
+(POSIX)g(Mo)s(de],)h(page)g(99\).)225 1565 y Fq(\017)60
 b Fu(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
-(82\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h
+(85\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h
 (editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d
-(104\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225
+(107\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225
 1943 y Fq(\017)60 b Fu(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
-2052 y(grammable)39 b(Completion],)i(page)e(129\),)i(and)d(builtin)g
+2052 y(grammable)39 b(Completion],)i(page)e(132\),)i(and)d(builtin)g
 (commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330
 2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225
 2296 y Fq(\017)60 b Fu(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(137\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h
+b(page)c(141\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h
 Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30
 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330
 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31
@@ -18672,9 +19145,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32
 b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48
 b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h
 (Section)g(9.3)h([History)f(In)m(teraction],)330 2759
-y(page)31 b(139\).)225 2892 y Fq(\017)60 b Fu(Bash)33
+y(page)31 b(143\).)225 2892 y Fq(\017)60 b Fu(Bash)33
 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(91\),)h(and)e(the)330
+b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(94\),)h(and)e(the)330
 3002 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 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h
@@ -18715,30 +19188,30 @@ y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.4.1)i([Lo)s
 b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i
 (whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330
 5340 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i([Conditional)e
-(Constructs],)g(page)g(10\).)p eop end
-%%Page: 151 157
-TeXDict begin 151 156 bop 150 -116 a Fu(App)s(endix)29
+(Constructs],)g(page)g(11\).)p eop end
+%%Page: 157 163
+TeXDict begin 157 162 bop 150 -116 a Fu(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(151)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(157)225 299 y Fq(\017)60
 b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43
 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330
 408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.4.2)j([Conditional)
-d(Constructs],)i(page)f(10\),)i(including)330 518 y(optional)32
+d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32
 b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60
 b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m
 (hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225
 789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h
-(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(21\))h(and)d(tilde)330
+(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330
 898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f
-(page)h(22\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h
+(page)h(23\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h
 (command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i
 Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330
-1143 y([Aliases],)32 b(page)f(90\).)225 1279 y Fq(\017)60
+1143 y([Aliases],)32 b(page)f(93\).)225 1279 y Fq(\017)60
 b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e
 Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j([Con-)
-330 1388 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e(arithmetic)i
+330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i
 (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330
-1498 y(metic],)h(page)f(89\).)225 1633 y Fq(\017)60 b
+1498 y(metic],)h(page)f(92\).)225 1633 y Fq(\017)60 b
 Fu(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
 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g
@@ -18754,44 +19227,44 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p
 Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 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
-2452 y(Expansion],)30 b(page)h(23\).)225 2587 y Fq(\017)60
+2452 y(Expansion],)30 b(page)h(24\).)225 2587 y Fq(\017)60
 b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i
 (length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330
 2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i
-(23\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
+(24\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
 Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p
 Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i
 Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g
 Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p
 Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m
-(arameter)330 3051 y(Expansion],)30 b(page)h(23\).)225
+(arameter)330 3051 y(Expansion],)30 b(page)h(24\).)225
 3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p
 Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e
 (matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296
 y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5
 b(alue)29 b(of)f Ft(var)p Fu(,)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
-3406 y(Expansion],)h(page)h(23\).)225 3541 y Fq(\017)60
+3406 y(Expansion],)h(page)h(24\).)225 3541 y Fq(\017)60
 b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d
 Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h
 (shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g
 (with)g Fr(pre\014x)p Fu(,)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
-3761 y(Expansion],)30 b(page)h(23\).)225 3896 y Fq(\017)60
+3761 y(Expansion],)30 b(page)h(24\).)225 3896 y Fq(\017)60
 b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22
 b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i
-([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(23\).)225
+([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(24\).)225
 4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h
 (parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p
 Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27
 b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h
 (implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330
-4386 y(mand)38 b(Substitution],)k(page)e(29\),)j(and)38
+4386 y(mand)38 b(Substitution],)k(page)e(30\),)j(and)38
 b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is)
 f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h
 (compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31
 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(30\).)225 4766 y Fq(\017)60
+(cess)f(Substitution],)f(page)h(31\).)225 4766 y Fq(\017)60
 b Fu(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
 4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e
@@ -18800,17 +19273,17 @@ Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330
 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f
 (that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p
 Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31
-b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(71,)g(for)f
+b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f
 (details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f
 Fu(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 5340
-y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(30\).)41
+y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(31\).)41
 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p
 eop end
-%%Page: 152 158
-TeXDict begin 152 157 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 158 164
+TeXDict begin 158 163 bop 150 -116 a Fu(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(152)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(158)225 299 y Fq(\017)60
 b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co)
 s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h
 (the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f
@@ -18820,11 +19293,11 @@ Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g
 (erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p
 Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37
 b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h
-([Filename)330 756 y(Expansion],)30 b(page)h(30\).)225
+([Filename)330 756 y(Expansion],)30 b(page)h(32\).)225
 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g
 (matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option)
 330 993 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(31\).)225 1121 y Fq(\017)60 b
+(Matc)m(hing],)g(page)f(33\).)225 1121 y Fq(\017)60 b
 Fu(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
 Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31
@@ -18833,24 +19306,24 @@ Fu(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 Ft(local)f
 Fu(builtin,)i(and)e(th)m(us)330 1468 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(49\).)225 1596 y Fq(\017)60 b Fu(V)-8
+(Builtins],)g(page)h(50\).)225 1596 y Fq(\017)60 b Fu(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 1705
 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page)
-e(38\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37
+e(40\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37
 b(assignmen)m(ts)330 1815 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 1943 y Fq(\017)60 b Fu(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 2052 y(output)30 b(redirection)h(op)s(erators)g
-(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(32\).)225
+(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(34\).)225
 2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p
 Ft(<>)p Fu(')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 2290
 y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection)
 g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330
 2399 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(32\).)225 2527
+(Section)f(3.6)g([Redirections],)h(page)g(34\).)225 2527
 y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p
 Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s
 (e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e
@@ -18861,20 +19334,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330
 3002 y Fq(\017)60 b Fu(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 3112 y(\(see)31 b(Section)h(3.6)f
-([Redirections],)h(page)f(32\).)225 3240 y Fq(\017)60
+([Redirections],)h(page)f(34\).)225 3240 y Fq(\017)60
 b Fu(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
 3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h
-([Redirections],)g(page)f(32\).)225 3477 y Fq(\017)60
+([Redirections],)g(page)f(34\).)225 3477 y Fq(\017)60
 b Fu(The)29 b Ft(noclobber)e Fu(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 3587 y(rection)39
-b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(60\).)66
+b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(61\).)66
 b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330
 3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h
 Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34
 b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1)
-g([Bourne)g(Shell)f(Builtins],)h(page)g(42\))h(eac)m(h)330
+g([Bourne)g(Shell)f(Builtins],)h(page)g(43\))h(eac)m(h)330
 3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(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
 4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v)
@@ -18882,28 +19355,28 @@ 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 4171 y(that)34 b(builtin's)f(functionalit)m(y)h
 (within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g
 Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g
-(Builtins],)g(page)g(49\).)225 4408 y Fq(\017)60 b Fu(The)35
+(Builtins],)g(page)g(50\).)225 4408 y Fq(\017)60 b Fu(The)35
 b Ft(command)e Fu(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 4518
 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g
-(49\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i
+(50\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i
 (b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f
 Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31
-b(Builtins],)g(page)g(49\).)225 4883 y Fq(\017)60 b Fu(The)26
+b(Builtins],)g(page)g(50\).)225 4883 y Fq(\017)60 b Fu(The)26
 b(Bash)h Ft(exec)e Fu(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
 4993 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
 5103 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(42\).)225 5230
+([Bourne)f(Shell)h(Builtins],)g(page)g(43\).)225 5230
 y Fq(\017)60 b Fu(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
 Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8
 b(unctions],)32 b(page)f(17\).)p eop end
-%%Page: 153 159
-TeXDict begin 153 158 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 159 165
+TeXDict begin 159 164 bop 150 -116 a Fu(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(153)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(159)225 299 y Fq(\017)60
 b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p
 Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f
 Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30
@@ -18919,15 +19392,15 @@ Fu(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 874 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
 Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330
-984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(42\).)225
+984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).)225
 1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d
 Fu(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 1230 y(Builtins],)j(page)g(49\).)225
+(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(50\).)225
 1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(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 1477 y(Builtins],)31 b(page)g(49\).)225
+(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(50\).)225
 1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i
-(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(49\))g(will)f(read)g(a)g
+(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(50\))g(will)f(read)g(a)g
 (line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g
 Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e
 Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330
@@ -18950,23 +19423,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m
 b Fu(The)33 b Ft(return)e Fu(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
 Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f
-(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)225
+(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)225
 2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f
 Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g
 (capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f
-(Builtin],)k(page)d(64\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f
+(Builtin],)k(page)d(65\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f
 (b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s
 (cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h
-(82\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h
+(85\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h
 (optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f
 Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31
-b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 3477
+b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225 3477
 y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p
 Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f
 (commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace)
-f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225
+f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225
 3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section)
-f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(42\))g(is)f(sligh)m(tly)h
+f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(43\))g(is)f(sligh)m(tly)h
 (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h
 Fm(posix)f Fu(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 3943 y(of)31
@@ -18977,7 +19450,7 @@ b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h
 Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26
 b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225
 4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section)
-f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(42\))h(allo)m(ws)g(a)e
+f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(43\))h(allo)m(ws)g(a)e
 Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e
 (to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h
 Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h
@@ -18993,20 +19466,20 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330
 Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f
 (the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e
 Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j
-(page)e(42\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330
+(page)e(43\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330
 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g
 Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h
 (with)g(an)g Ft(ERR)g Fu(trap)p eop end
-%%Page: 154 160
-TeXDict begin 154 159 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 160 166
+TeXDict begin 160 165 bop 150 -116 a Fu(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(154)330 299 y(are)40 b(executed)g(after)g
+b(The)f(Bourne)g(Shell)1258 b(160)330 299 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 Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h
 (shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37
 b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330
 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h
-(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(42\))g(allo)m(ws)g(a)g
+(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(43\))g(allo)m(ws)g(a)g
 Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j
 (similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54
 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y
@@ -19021,30 +19494,30 @@ g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60
 b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i
 (and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330
 1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i
-(page)f(49\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
+(page)f(50\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
 Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h
 (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330
 1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f
 (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330
-1789 y(Builtins],)g(page)g(42\).)225 1921 y Fq(\017)60
+1789 y(Builtins],)g(page)g(43\).)225 1921 y Fq(\017)60
 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f
 (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g
 Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i
 (manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m
-(k],)i(page)d(93\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g
+(k],)i(page)d(96\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g
 (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31
 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225
 2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m
 (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h
 (when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h
-([Con)m(trolling)f(the)g(Prompt],)f(page)h(94\).)225
+([Con)m(trolling)f(the)g(Prompt],)f(page)h(97\).)225
 2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h
 (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],)
-330 2622 y(page)31 b(95\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s
+330 2622 y(page)31 b(99\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s
 (de)f(is)h(to)s(o)g(limited.)225 2754 y Fq(\017)60 b
 Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f
 (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h
-(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(101\))g(or)g
+(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(104\))g(or)g
 (suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f
 (the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f
 Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n)
@@ -19061,7 +19534,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g
 Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g
 Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m
 (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8
-b(eatures],)32 b(page)f(82.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
+b(eatures],)32 b(page)f(85.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150
 4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m
 (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f
@@ -19082,10 +19555,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f
 (with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330
 5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i
 (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end
-%%Page: 155 161
-TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 161 167
+TeXDict begin 161 166 bop 150 -116 a Fu(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(155)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(161)225 299 y Fq(\017)60
 b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8
 b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e
 (the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and)
@@ -19116,8 +19589,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60
 b Fu(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 Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g
 (con)m(trol\).)p eop end
-%%Page: 156 162
-TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 299
+%%Page: 162 168
+TeXDict begin 162 167 bop 3614 -116 a Fu(162)150 299
 y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53
 b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31
 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842
@@ -19198,10 +19671,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
 5340 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)p eop end
-%%Page: 157 163
-TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 163 169
+TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(157)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(163)330 299 y(under)26 b(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 408
 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
@@ -19292,10 +19765,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
 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
 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
-%%Page: 158 164
-TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 164 170
+TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(158)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(164)330 299 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 408 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
@@ -19385,10 +19858,10 @@ 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
 5340 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(,)p eop end
-%%Page: 159 165
-TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 165 171
+TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(159)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(165)510 299 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 408 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
@@ -19467,10 +19940,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
 (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)p
 eop end
-%%Page: 160 166
-TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 166 172
+TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(160)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(166)330 299 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 408
 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
@@ -19555,10 +20028,10 @@ 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
 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: 161 167
-TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 167 173
+TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(161)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(167)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
 (W)m(ORKS)330 441 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 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
@@ -19643,10 +20116,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
 (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
 (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
 (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
-%%Page: 162 168
-TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 168 174
+TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(162)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)
+b(168)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)
 330 433 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 543 y(Do)s(cumen)m(tation)34
@@ -19710,10 +20183,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
 g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
 (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
 330 4005 y(eligible)h(for)e(relicensing.)p eop end
-%%Page: 163 169
-TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 169 175
+TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29
 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(163)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(169)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
 (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35
 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
 i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
@@ -19748,199 +20221,199 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
 b(as)g(the)g(GNU)150 2331 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: 164 170
-TeXDict begin 164 169 bop 3614 -116 a Fu(164)150 299
+%%Page: 170 176
+TeXDict begin 170 175 bop 3614 -116 a Fu(170)150 299
 y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68
 b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806
 y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)33 b Fb(42)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
+(:)33 b Fb(43)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(42)146
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(43)146
 1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(46)146 1881 y Fs(A)150 1998 y Fe(alias)9
+(:)g(:)g(:)33 b Fb(47)146 1881 y Fs(A)150 1998 y Fe(alias)9
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)146 2239 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)146 2239 y
 Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29
-b Fb(101)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(104)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(49)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(50)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(43)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(44)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(50)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15
+b Fb(52)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(51)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)20 b Fb(52)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)31 b Fb(43)150 3151 y Fe(command)22
+g(:)g(:)g(:)g(:)g(:)31 b Fb(44)150 3151 y Fe(command)22
 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)35 b Fb(51)150 3238 y Fe(compgen)18
+h(:)f(:)g(:)g(:)g(:)35 b Fb(52)150 3238 y Fe(compgen)18
 b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)33 b Fb(131)150 3326 y Fe(complete)16
+(:)h(:)f(:)g(:)33 b Fb(134)150 3326 y Fe(complete)16
 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)31 b Fb(131)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:)
+(:)g(:)g(:)31 b Fb(134)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
-b Fb(134)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(137)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
-Fb(43)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
+Fb(44)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fb(51)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f
+g(:)g(:)g(:)35 b Fb(52)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)25 b Fb(93)150 4033 y Fe(disown)d Fc(:)13
+(:)g(:)h(:)25 b Fb(96)150 4033 y Fe(disown)d Fc(:)13
 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)36 b Fb(102)146 4274 y Fs(E)150 4391 y Fe(echo)11
+g(:)g(:)g(:)36 b Fb(105)146 4274 y Fs(E)150 4391 y Fe(echo)11
 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(53)150 4478
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(54)150 4478
 y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(55)150
 4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(43)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(44)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(44)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(45)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(44)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
+b Fb(45)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fb(44)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+b Fb(45)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)29 b Fb(137)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)29 b Fb(142)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)29 b Fb(101)2021 871 y Fs(G)2025 988 y Fe(getopts)22
+g(:)g(:)g(:)29 b Fb(104)2021 871 y Fs(G)2025 988 y Fe(getopts)22
 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(44)2021 1250 y Fs(H)2025
+g(:)g(:)h(:)f(:)g(:)35 b Fb(45)2021 1250 y Fs(H)2025
 1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(45)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(46)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(54)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(55)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b
-Fb(138)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14
+Fb(142)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(101)2021 2186 y Fs(K)2025
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(104)2021 2186 y Fs(K)2025
 2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
-b Fb(102)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:)
+b Fb(105)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)28 b Fb(54)2025 2760 y Fe(local)9 b Fc(:)14
+g(:)g(:)h(:)f(:)28 b Fb(55)2025 2760 y Fe(local)9 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(54)2025 2848 y Fe(logout)6
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(55)2025 2848 y Fe(logout)6
 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(55)2021 3110 y Fs(M)2025
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(56)2021 3110 y Fs(M)2025
 3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(55)2021
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(56)2021
 3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(93)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(96)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(55)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(56)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(93)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(97)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(45)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:)
+b Fb(46)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)26 b Fb(56)2025 4339 y Fe(readarray)15 b
+g(:)g(:)g(:)26 b Fb(57)2025 4339 y Fe(readarray)15 b
 Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)30 b Fb(57)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g
+g(:)g(:)30 b Fb(59)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(45)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(46)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(46)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g
+b Fb(47)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)28 b Fb(60)2025 4972 y Fe(shift)9 b Fc(:)14
+(:)g(:)h(:)f(:)28 b Fb(61)2025 4972 y Fe(shift)9 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(46)2025 5060 y Fe(shopt)9
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(47)2025 5060 y Fe(shopt)9
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(64)2025 5148
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(65)2025 5148
 y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(58)2025
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(59)2025
 5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(102)p eop end
-%%Page: 165 171
-TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(165)146 294 y Fs(T)150 410 y Fe(test)11
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(106)p eop end
+%%Page: 171 177
+TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(171)146 294 y Fs(T)150 410 y Fe(test)11
 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(46)150 497
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(47)150 497
 y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)150
 584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(48)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(49)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(58)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+b Fb(59)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(58)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
+b Fb(59)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(58)150 1206 y Fe(umask)9
+g(:)g(:)g(:)h(:)f(:)20 b Fb(59)150 1206 y Fe(umask)9
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 1293 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150 1293 y
 Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(60)150 1380 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(61)150 1380 y
 Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)2021
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)2021
 294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
-b Fb(102)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
+b Fb(105)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
 (W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13
 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
@@ -19955,11 +20428,11 @@ g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(12)146
 3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(14)146 4125 y Fa(})150 4241 y Fe(})19
+(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19
 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b
-Fb(14)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
+Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16
@@ -19972,16 +20445,16 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
 b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)25 b Fb(10)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
+(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)25 b Fb(10)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
+g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16
 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(10)2025
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025
 2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
@@ -19991,7 +20464,7 @@ g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
 Fb(17)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)31 b Fb(10)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025
@@ -20001,7 +20474,7 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b
 Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)26 b Fb(10)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h
+(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y
@@ -20012,452 +20485,462 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
 b Fb(10)p eop end
-%%Page: 166 172
-TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(166)150 299 y Fs(D.3)68 b(P)l(arameter)47
+%%Page: 172 178
+TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(172)150 299 y Fs(D.3)68 b(P)l(arameter)47
 b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073
 y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(20)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13
+b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)146
 1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(20)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)33 b Fb(22)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)31 b Fb(20)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2173 y Fe($*)16
+(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16
 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(21)150
 2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
-b Fb(20)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-31 b Fb(20)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+31 b Fb(21)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)31 b Fb(20)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)31 b Fb(21)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)31 b Fb(20)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h
+(:)g(:)31 b Fb(22)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)31 b Fb(20)146 2876 y Fs(*)150 2994 y Fe(*)19
+(:)g(:)g(:)31 b Fb(22)146 2876 y Fs(*)150 2994 y Fe(*)19
 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b
-Fb(20)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
+Fb(21)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 3620 y Fs(?)150 3738
+g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 3620 y Fs(?)150 3738
 y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(20)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13
+b Fb(21)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)p
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)p
 156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)33 b Fb(20)146 4736 y Fs(0)150 4854 y
+(:)f(:)g(:)g(:)33 b Fb(22)146 4736 y Fs(0)150 4854 y
 Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(20)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b
+b Fb(22)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b
 Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-23 b Fb(103)2021 954 y Fs(B)2025 1076 y Fe(BASH)11 b
+23 b Fb(106)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b
 Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(71)2025 1165
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(73)2025 1163
 y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1254 y Fe(BASH_ARGC)15
+g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15
 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)30 b Fb(72)2025 1343 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g
+(:)g(:)g(:)30 b Fb(74)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(72)2025 1432 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(72)2025
-1521 y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1611 y Fe(BASH_COMPAT)10
+b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025
+1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606
+y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 1695 y Fe(BASH_COMPAT)10
 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(73)2025 1700 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g
+g(:)25 b Fb(75)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(73)2025 1789 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13
+b Fb(75)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13
 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)34 b Fb(73)2025 1878 y Fe(BASH_LINENO)10
+(:)g(:)g(:)g(:)g(:)34 b Fb(75)2025 1960 y Fe(BASH_LINENO)10
 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(73)2025 1967 y Fe(BASH_LOADABLES_PATH)7 b
+g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b
 Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(73)2025
-2056 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(75)2025
+2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(73)2025 2145 y Fe(BASH_SOURCE)10
+(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 2226 y Fe(BASH_SOURCE)10
 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(73)2025 2235 y Fe(BASH_SUBSHELL)g Fc(:)13
+g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(73)2025 2324 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
+b Fb(76)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(73)2025 2413
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(76)2025 2492
 y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 2502 y Fe(BASH_XTRACEFD)j
+g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2581 y Fe(BASH_XTRACEFD)j
 Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(74)2025 2591 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
+b Fb(76)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(72)2025 2680 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(72)2025 2769 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f
+b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(108)2025
-2858 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(111)2025
+2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(108)2025 2946 y Fe(blink-matching-paren)24 b Fc(:)13
+b Fb(111)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13
 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)34 b Fb(108)2021 3231 y Fs(C)2025
-3353 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)g(:)g(:)g(:)h(:)34 b Fb(111)2021 3297 y Fs(C)2025
+3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b
-Fb(71)2025 3442 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
+Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025
-3531 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(76)2025
+3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13
 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(108)2025 3621 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(111)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(108)2025 3710 y Fe(COLUMNS)22
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(111)2025 3772 y Fe(COLUMNS)22
 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(74)2025 3799 y Fe(comment-begin)23
+g(:)g(:)h(:)f(:)g(:)35 b Fb(76)2025 3860 y Fe(comment-begin)23
 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(108)2025 3888 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+b Fb(111)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025
-3977 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025
+4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(75)2025 4066
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(77)2025 4126
 y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 4155 y Fe(COMP_POINT)13
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 4215 y Fe(COMP_POINT)13
 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(75)2025 4244 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g
+(:)h(:)27 b Fb(77)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(75)2025 4334 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g
+b Fb(77)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(75)2025 4423 y Fe(COMP_WORDS)13
+h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(77)2025 4481 y Fe(COMP_WORDS)13
 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(75)2025 4512 y Fe(completion-display-width)9
+(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9
 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)24 b Fb(108)2025 4601 y Fe(completion-ignore-case)14
+(:)h(:)f(:)g(:)24 b Fb(111)2025 4658 y Fe(completion-ignore-case)14
 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)29 b Fb(109)2025 4690 y Fe(completion-map-case)d
+(:)g(:)g(:)h(:)f(:)29 b Fb(112)2025 4747 y Fe(completion-map-case)d
 Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(109)2025 4779
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2025 4835
 y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(109)2025 4868
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(112)2025 4924
 y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(109)2025 4958 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
+b Fb(112)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b
-Fb(75)2025 5047 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
+Fb(77)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(109)2025 5134
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(112)2025 5188
 y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(75)p
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(77)p
 eop end
-%%Page: 167 173
-TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(167)146 294 y Fs(D)150 419 y Fe(DIRSTACK)18
+%%Page: 173 179
+TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(173)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18
 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)32 b Fb(75)150 506 y Fe(disable-completion)7
+(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7
 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(109)146
-810 y Fs(E)150 935 y Fe(echo-control-characters)12 b
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(112)146
+791 y Fs(E)150 913 y Fe(echo-control-characters)12 b
 Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)26 b Fb(109)150 1025 y Fe(editing-mode)f
+g(:)g(:)g(:)h(:)26 b Fb(112)150 1002 y Fe(editing-mode)f
 Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(109)150 1115 y Fe(emacs-mode-string)10 b Fc(:)17
+b Fb(112)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17
 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(109)150 1205
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(112)150 1181
 y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(75)150
-1295 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150
+1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fb(110)150 1385 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
+b Fb(113)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(110)150 1475 y Fe(ENV)14
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(113)150 1449 y Fe(ENV)14
 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(76)150
-1565 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150
+1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(76)150 1655 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)37 b Fb(78)150 1627 y Fe(EPOCHSECONDS)8
+b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+22 b Fb(78)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
+b Fb(78)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150
-1742 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150
+1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)37 b Fb(110)146 2046 y Fs(F)150 2171
+g(:)g(:)g(:)h(:)37 b Fb(113)146 2180 y Fs(F)150 2303
 y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(76)150
-2261 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(78)150
+2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(76)150
-2351 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(78)150
+2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)150 2438
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 2568
 y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)146 2731 y
-Fs(G)150 2855 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y
+Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150
-2942 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150
+3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b
-Fb(76)146 3235 y Fs(H)150 3360 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g
+Fb(79)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30
-b Fb(76)150 3450 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
+b Fb(79)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(77)150 3540 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)
+b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(77)150
-3630 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(79)150
+3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(77)150 3720
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809
 y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)22 b Fb(77)150 3810 y Fe(HISTIGNORE)13
+g(:)g(:)h(:)f(:)g(:)22 b Fb(80)150 3899 y Fe(HISTIGNORE)13
 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)27 b Fb(77)150 3900 y Fe(history-preserve-point)14
+(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14
 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(110)150 3990 y Fe(history-size)c
+h(:)f(:)g(:)g(:)29 b Fb(113)150 4077 y Fe(history-size)c
 Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(110)150 4080 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(113)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
-Fb(78)150 4170 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(78)150 4260 y Fe(HOME)11
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 4345 y Fe(HOME)11
 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(71)150 4350
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434
 y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(110)150
-4440 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(113)150
+4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4530
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4613
 y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4617 y
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4700 y
 Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)2021 294 y Fs(I)2025
-421 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025
+420 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(71)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(78)2025
-602 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025
+600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(110)2025 693 y Fe(INPUTRC)c
+h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(114)2025 691 y Fe(INPUTRC)c
 Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(78)2025 780 y Fe(isearch-terminators)26
-b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2021 1088
-y Fs(K)2025 1211 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(111)2021 1531 y Fs(L)2025 1658 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)26 b Fb(78)2025 1748 y Fe(LC_ALL)6 b Fc(:)14
-b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 1839 y Fe(LC_COLLATE)13
+g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8
+b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(114)2021 1167 y Fs(K)2025
+1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(114)2021
+1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
+b Fb(81)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
+b Fb(81)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(81)2025
+1998 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(81)2025 2088
+y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13
 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(78)2025 1930 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g
+(:)h(:)27 b Fb(81)2025 2269 y Fe(LC_TIME)22 b Fc(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(78)2025 2021 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(7,)26 b(79)2025
-2111 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(79)2025 2202 y
-Fe(LC_TIME)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(79)2025 2293
-y Fe(LINENO)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(79)2025
-2380 y Fe(LINES)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(79)2021 2688 y Fs(M)2025 2815 y Fe(MACHTYPE)18 b
-Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)33 b Fb(79)2025 2906 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)26 b Fb(71)2025 2996 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(79)2025 3087 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
+h(:)f(:)g(:)35 b Fb(81)2025 2359 y Fe(LINENO)6 b Fc(:)14
+b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)21 b Fb(81)2025 2446 y Fe(LINES)9
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(81)2021 2746
+y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(71)2025 3178 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(79)2025 3269 y Fe(mark-modified-lines)26 b Fc(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2025 3359 y Fe
-(mark-symlinked-directories)27 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(111)2025 3450
-y Fe(match-hidden-files)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fb(111)2025 3541 y Fe(menu-complete-display-prefix)17
-b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31
-b Fb(112)2025 3628 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g
+Fb(81)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(110)2021
-3947 y Fs(O)2025 4074 y Fe(OLDPWD)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(79)2025 4165 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(71)2025 4256 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(79)2025 4347 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(71)2025 4437 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(79)2025 4525 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(112)p
-eop end
-%%Page: 168 174
-TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(168)146 294 y Fs(P)150 410 y Fe(page-completions)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
+b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025
+3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233
+y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323
+y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(114)2025 3414 y Fe(mark-symlinked-directories)27
+b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+36 b Fb(114)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17
+b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(115)2025 3594
+y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(115)2025 3681 y Fe(meta-flag)13
+b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)28 b Fb(114)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4299 y Fe(OPTERR)6
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4389 y Fe(OPTIND)6
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4480 y Fe(OSTYPE)6
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8
+b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+23 b Fb(115)p eop end
+%%Page: 174 180
+TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(174)146 294 y Fs(P)150 410 y Fe(page-completions)
 13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(112)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(115)150
 497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(71)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(73)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(82)150
 671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)32 b Fb(79)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)32 b Fb(82)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)25 b Fb(79)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13
+(:)h(:)25 b Fb(82)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13
 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fb(79)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 1020 y Fe(PS0)14
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(82)150 1020 y Fe(PS0)14
 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(80)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(82)150
 1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(71)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(73)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(71)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(80)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(82)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(80)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(82)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(80)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
+b Fb(82)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(80)150 1892 y Fe(READLINE_LINE)25
+g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(80)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(83)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 2066 y Fe(REPLY)9
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 2066 y Fe(REPLY)9
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2153 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2153 y
 Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(112)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13
+b Fb(115)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13
 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fb(80)150 2589 y Fe(SHELL)9 b Fc(:)14
+g(:)g(:)g(:)35 b Fb(83)150 2589 y Fe(SHELL)9 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2676 y Fe(SHELLOPTS)15
+g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2676 y Fe(SHELLOPTS)15
 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)30 b Fb(80)150 2763 y Fe(SHLVL)9 b Fc(:)14
+(:)g(:)g(:)30 b Fb(83)150 2763 y Fe(SHLVL)9 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2851 y Fe(show-all-if-ambiguous)
+g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2851 y Fe(show-all-if-ambiguous)
 17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 2938 y Fe
+(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(115)150 2938 y Fe
 (show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(112)2025
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(115)2025
 260 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(112)2025 347 y Fe(skip-completed-text)26 b Fc(:)13
+b Fb(115)2025 347 y Fe(skip-completed-text)26 b Fc(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2021 675 y Fs(T)2025
+(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2021 675 y Fs(T)2025
 803 y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(7)2025 894 y
@@ -20466,334 +20949,338 @@ Fe(TEXTDOMAINDIR)7 b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 985 y Fe(TIMEFORMAT)13
 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(81)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
+(:)h(:)27 b Fb(83)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)23 b Fb(81)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
+g(:)23 b Fb(84)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(81)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g
+b Fb(84)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)28 b Fb(81)2021 1920 y Fs(V)2025 2049
+(:)g(:)h(:)f(:)28 b Fb(84)2021 1920 y Fs(V)2025 2049
 y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fb(113)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17
+b Fb(116)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17
 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(113)2025 2227
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(116)2025 2227
 y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)35 b Fb(113)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44
+f(:)g(:)35 b Fb(116)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44
 b(Index)146 4147 y(A)150 4273 y Fe(abort)27 b(\(C-g\))15
 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30
-b Fb(126)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12
+b Fb(129)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12
 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27
-b Fb(120)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14
+b Fb(123)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14
 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)146 4762 y Fs(B)150
+(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(131)146 4762 y Fs(B)150
 4888 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)26 b Fb(119)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22
+(:)26 b Fb(122)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fb(121)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e
+b Fb(125)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e
 Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fb(122)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11
+Fb(126)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11
 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-26 b Fb(123)150 5250 y Fe(backward-word)j(\(M-b\))12
+26 b Fb(126)150 5250 y Fe(backward-word)j(\(M-b\))12
 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(119)150 5340
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 5340
 y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(120)2025
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)2025
 4117 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(119)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16
+b Fb(122)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16
 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)31 b Fb(122)2021 4499 y Fs(C)2025 4623 y Fe
+g(:)g(:)31 b Fb(125)2021 4499 y Fs(C)2025 4623 y Fe
 (call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(126)2025 4713
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(129)2025 4713
 y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(122)2025 4802 y Fe(character-search)29 b(\(C-]\))22
+b Fb(125)2025 4802 y Fe(character-search)29 b(\(C-]\))22
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 4892 y Fe
+(:)h(:)f(:)g(:)g(:)36 b Fb(130)2025 4892 y Fe
 (character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15
-b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(127)2025 4981
+b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(130)2025 4981
 y Fe(clear-screen)j(\(C-l\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
-b Fb(119)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15
+b Fb(123)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
-b Fb(124)2025 5161 y Fe(complete-command)29 b(\(M-!\))22
+b Fb(127)2025 5161 y Fe(complete-command)29 b(\(M-!\))22
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)36 b Fb(125)2025 5250 y Fe(complete-filename)29
+(:)h(:)f(:)g(:)g(:)36 b Fb(128)2025 5250 y Fe(complete-filename)29
 b(\(M-/\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(125)2025 5340 y Fe
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(128)2025 5340 y Fe
 (complete-hostname)29 b(\(M-@\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(125)p eop end
-%%Page: 169 175
-TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(169)150 264 y Fe(complete-into-braces)30
+b Fb(128)p eop end
+%%Page: 175 181
+TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(175)150 264 y Fe(complete-into-braces)30
 b(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)26 b Fb(125)150 354 y Fe(complete-username)j(\(M-~\))20
+(:)g(:)g(:)g(:)26 b Fb(129)150 354 y Fe(complete-username)j(\(M-~\))20
 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)33 b Fb(125)150 444 y Fe(complete-variable)c(\(M-$\))20
+(:)g(:)h(:)f(:)33 b Fb(128)150 444 y Fe(complete-variable)c(\(M-$\))20
 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)33 b Fb(125)150 534 y Fe(copy-backward-word)d(\(\))7
+(:)g(:)h(:)f(:)33 b Fb(128)150 534 y Fe(copy-backward-word)d(\(\))7
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(123)150 624 y Fe(copy-forward-word)
+(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(126)150 624 y Fe(copy-forward-word)
 29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(127)150
 711 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(123)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29
+b Fb(126)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29
 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(125)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:)
+b Fb(129)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)32 b Fb(121)150 1322 y Fe(delete-char-or-list)e
+(:)g(:)g(:)g(:)g(:)32 b Fb(124)150 1322 y Fe(delete-char-or-list)e
 (\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)150 1412 y Fe
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1412 y Fe
 (delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(126)150
 1502 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p
 Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)
-26 b Fb(124)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c
+26 b Fb(127)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c
 Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fb(128)150 1673 y Fe(do-uppercase-version)30 b(\(M-a,)227
-1761 y(M-b,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
+Fb(131)150 1673 y Fe(do-lowercase-version)30 b(\(M-A,)227
+1761 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)25 b Fb(126)150 1851 y Fe(downcase-word)k(\(M-l\))
+g(:)g(:)g(:)g(:)g(:)25 b Fb(129)150 1851 y Fe(downcase-word)k(\(M-l\))
 12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 1941
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(125)150 1941
 y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-32 b Fb(127)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14
+32 b Fb(130)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14
 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(127)150 2121 y Fe(dump-variables)29 b(\(\))17 b
+b Fb(130)150 2121 y Fe(dump-variables)29 b(\(\))17 b
 Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(127)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(130)150
 2208 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(125)146 2514 y Fs(E)150
-2639 y Fe(edit-and-execute-command)k(\(C-xC-e\))10 b
-Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(128)150
-2729 y Fe(end-kbd-macro)k(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
-b Fb(126)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21
+(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(128)146 2514 y Fs(E)150
+2639 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14
+b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)150 2729
+y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
+b Fb(129)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)35 b Fb(121)150 2909 y Fe(end-of-history)29 b(\(M->\))9
+(:)g(:)35 b Fb(124)150 2909 y Fe(end-of-history)29 b(\(M->\))9
 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(120)150 2999 y
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150 2999 y
 Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(119)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26
+b Fb(122)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26
 b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(126)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g
+b Fb(130)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g
 (\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(121)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g
+b Fb(125)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(119)150 3697 y Fe(forward-search-history)i
+h(:)f(:)g(:)g(:)29 b Fb(122)150 3697 y Fe(forward-search-history)i
 (\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)38 b Fb(120)150 3784 y Fe(forward-word)28 b(\(M-f\))14
+(:)38 b Fb(123)150 3784 y Fe(forward-word)28 b(\(M-f\))14
 b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(119)146 4079
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(122)146 4079
 y Fs(G)150 4204 y Fe(glob-complete-word)h(\(M-g\))16
 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)31 b Fb(127)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c
+g(:)g(:)31 b Fb(131)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c
 Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)38 b Fb(127)150 4382 y Fe(glob-list-expansions)30
+(:)g(:)g(:)38 b Fb(131)150 4382 y Fe(glob-list-expansions)30
 b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)27 b Fb(128)2021 294 y Fs(H)2025 423 y Fe
+(:)g(:)h(:)27 b Fb(131)2021 294 y Fs(H)2025 422 y Fe
 (history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)28 b Fb(128)2025 514 y Fe(history-expand-line)i
+g(:)g(:)g(:)g(:)28 b Fb(131)2025 513 y Fe(history-expand-line)i
 (\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)28 b Fb(128)2025 606 y Fe(history-search-backward)j
+g(:)g(:)g(:)h(:)28 b Fb(131)2025 604 y Fe(history-search-backward)j
 (\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)26 b Fb(120)2025 697 y Fe(history-search-forward)k(\(\))13
+(:)g(:)g(:)26 b Fb(124)2025 695 y Fe(history-search-forward)k(\(\))13
 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(120)2025 789 y Fe(history-substr-search-backward)k(\(\))10
-b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(121)2025
-876 y Fe(history-substr-search-forward)32 b(\(\))13 b
-Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(120)2021
-1210 y Fs(I)2025 1339 y Fe(insert-comment)h(\(M-#\))9
-b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 1431
-y Fe(insert-completions)29 b(\(M-*\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b
-Fb(124)2025 1518 y Fe(insert-last-argument)f(\(M-.)c(or)g(M-_\))7
-b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(128)2021
-1852 y Fs(K)2025 1981 y Fe(kill-line)27 b(\(C-k\))c Fc(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025
-2073 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f
+h(:)28 b Fb(123)2025 786 y Fe(history-substring-search-backw)q(ard)k
+(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(124)2025 874
+y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b
+Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(124)2021 1200 y Fs(I)2025
+1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(123)2025 2164 y Fe(kill-whole-line)29
-b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025
-2251 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+24 b Fb(130)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16
+b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)31 b Fb(127)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g
+(M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
+b Fb(131)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27
+b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(126)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14
+b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
+b Fb(126)2025 2144 y Fe(kill-whole-line)29 b(\(\))14
+b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025
+2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)37 b Fb(123)2021 2575 y Fs(M)2025 2704 y
+g(:)g(:)g(:)37 b Fb(126)2021 2548 y Fs(M)2025 2676 y
 Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)22 b Fb(128)2025 2796 y Fe(menu-complete)28
+g(:)g(:)h(:)f(:)22 b Fb(131)2025 2767 y Fe(menu-complete)28
 b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
-b Fb(124)2025 2883 y Fe(menu-complete-backward)c(\(\))13
+b Fb(127)2025 2854 y Fe(menu-complete-backward)c(\(\))13
 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(124)2021 3217 y Fs(N)2025 3346 y Fe(next-history)g(\(C-n\))
+h(:)28 b Fb(128)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\))
 14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(120)2025
-3429 y Fe(non-incremental-forward-)2102 3516 y(search-history)f
-(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2025 3603
-y Fe(non-incremental-reverse-)2102 3690 y(search-history)28
-b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2021 4033
-y Fs(O)2025 4162 y Fe(operate-and-get-next)30 b(\(C-o\))11
-b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-26 b Fb(128)2025 4249 y Fe(overwrite-mode)j(\(\))17 b
-Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(122)p
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025
+3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+27 b Fb(123)2025 3472 y Fe(non-incremental-forward-)2102
+3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(123)2025 3647 y Fe(non-incremental-reverse-)2102
+3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(123)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30
+b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)26 b Fb(131)2025 4285 y Fe(overwrite-mode)j(\(\))17
+b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(125)p
 eop end
-%%Page: 170 176
-TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(170)146 294 y Fs(P)150 414 y Fe
+%%Page: 176 182
+TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(176)146 294 y Fs(P)150 414 y Fe
 (possible-command-completions)32 b(\(C-x)26 b(!\))9 b
-Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(125)150 502 y Fe
+Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(128)150 503 y Fe
 (possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(124)150
-591 y Fe(possible-filename-completions)32 b(\(C-x)27
-b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 679
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(127)150
+592 y Fe(possible-filename-completions)32 b(\(C-x)27
+b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 680
 y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 768 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 769 y Fe
 (possible-username-completions)32 b(\(C-x)27 b(~\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 857 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 858 y Fe
 (possible-variable-completions)32 b(\(C-x)27 b($\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 945 y Fe(prefix-meta)28
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 946 y Fe(prefix-meta)28
 b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(126)150 1034 y Fe(previous-history)d(\(C-p\))23
+b Fb(129)150 1035 y Fe(previous-history)d(\(C-p\))23
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(120)150 1121 y Fe(print-last-kbd-macro)30
+(:)f(:)g(:)g(:)g(:)36 b Fb(123)150 1124 y Fe(previous-screen-line)30
 b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(126)146 1393 y Fs(Q)150
-1512 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 b Fc(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(121)146 1785 y Fs(R)150 1905 y Fe(re-read-init-file)29
+(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(122)150 1211 y Fe
+(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(129)146
+1487 y Fs(Q)150 1606 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)22 b Fb(125)146 1881 y Fs(R)150 2002 y Fe(re-read-init-file)29
 b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)30 b Fb(126)150 1993 y Fe(redraw-current-line)g(\(\))22
+(:)g(:)g(:)g(:)30 b Fb(129)150 2091 y Fe(redraw-current-line)g(\(\))22
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2082 y Fe(reverse-search-history)31
+(:)f(:)g(:)g(:)g(:)36 b Fb(123)150 2179 y Fe(reverse-search-history)31
 b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)38 b Fb(120)150 2169 y Fe(revert-line)28 b(\(M-r\))17
+g(:)38 b Fb(123)150 2266 y Fe(revert-line)28 b(\(M-r\))17
 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)146
-2431 y Fs(S)150 2552 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(129)146
+2532 y Fs(S)150 2652 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f
 (...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
-b Fb(122)150 2640 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15
+b Fb(125)150 2741 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15
 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(126)150 2729 y Fe(shell-backward-kill-word)31 b(\(\))8
+b Fb(130)150 2830 y Fe(shell-backward-kill-word)31 b(\(\))8
 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-23 b Fb(123)150 2817 y Fe(shell-backward-word)30 b(\(\))22
+23 b Fb(126)150 2918 y Fe(shell-backward-word)30 b(\(\))22
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2906 y Fe(shell-expand-line)29
+(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 3007 y Fe(shell-expand-line)29
 b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)28 b Fb(128)150 2994 y Fe(shell-forward-word)i(\(\))
+(:)g(:)h(:)f(:)g(:)28 b Fb(131)150 3096 y Fe(shell-forward-word)i(\(\))
 7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(119)150 3083 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(122)150 3184 y
 Fe(shell-kill-word)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fb(123)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14
+b Fb(126)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14
 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 351 y Fe(start-kbd-macro)29
+(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(130)2025 351 y Fe(start-kbd-macro)29
 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(126)2021
-794 y Fs(T)2025 941 y Fe(tilde-expand)28 b(\(M-&\))14
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(129)2021
+821 y Fs(T)2025 972 y Fe(tilde-expand)28 b(\(M-&\))14
 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025
-1038 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(129)2025
+1070 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(122)2025 1125 y Fe(transpose-words)29 b(\(M-t\))7
+b Fb(125)2025 1157 y Fe(transpose-words)29 b(\(M-t\))7
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(122)2021 1578 y Fs(U)2025
-1725 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(125)2021 1638 y Fs(U)2025
+1788 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(126)2025 1822 y Fe(universal-argument)k(\(\))7
+g(:)25 b Fb(129)2025 1887 y Fe(universal-argument)k(\(\))7
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(124)2025 1920 y Fe
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(127)2025 1985 y Fe
 (unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(123)2025 2017 y Fe(unix-line-discard)29 b(\(C-u\))20
+b Fb(126)2025 2084 y Fe(unix-line-discard)29 b(\(C-u\))20
 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)34 b Fb(123)2025 2114 y Fe(unix-word-rubout)29
+(:)g(:)g(:)g(:)34 b Fb(126)2025 2182 y Fe(unix-word-rubout)29
 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(123)2025 2201
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 2269
 y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)32 b Fb(122)2021 2654 y Fs(Y)2025 2801 y Fe(yank)26
+g(:)32 b Fb(125)2021 2750 y Fs(Y)2025 2900 y Fe(yank)26
 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)33 b Fb(123)2025 2898 y Fe(yank-last-arg)28
+g(:)g(:)g(:)g(:)33 b Fb(127)2025 2999 y Fe(yank-last-arg)28
 b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(121)2025 2996
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(124)2025 3097
 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
-b Fb(121)2025 3083 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15
+b Fb(124)2025 3184 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
-b Fb(123)150 3832 y Fs(D.5)68 b(Concept)45 b(Index)146
-4425 y(A)150 4553 y Fb(alias)27 b(expansion)7 b Fc(:)14
+b Fb(127)150 3933 y Fs(D.5)68 b(Concept)45 b(Index)146
+4527 y(A)150 4652 y Fb(alias)27 b(expansion)7 b Fc(:)14
 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(90)150 4644 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
+b Fb(93)150 4742 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(89)150 4735 y(arithmetic)26
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(92)150 4832 y(arithmetic)26
 b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
-b Fb(29)150 4826 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
+b Fb(31)150 4923 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(89)150 4914
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(92)150 5010
 y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(91)2021
-4425 y Fs(B)2025 4551 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(94)2021
+4527 y Fs(B)2025 4650 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(100)2025
-4641 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(103)2025
+4739 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)26 b Fb(142)2025 4732 y(Bash)g(installation)9
+g(:)g(:)26 b Fb(147)2025 4829 y(Bash)g(installation)9
 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(142)2025 4822 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(147)2025 4918 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b
-Fb(5)2025 4913 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
+Fb(5)2025 5008 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(21)2025 5000 y(builtin)15
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5095 y(builtin)15
 b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end
-%%Page: 171 177
-TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(171)146 294 y Fs(C)150 418 y Fb(command)26
+%%Page: 177 183
+TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(177)146 294 y Fs(C)150 418 y Fb(command)26
 b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
-b Fb(105)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
+b Fb(108)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)26 b Fb(37)150 597 y(command)g(expansion)c
+g(:)h(:)f(:)g(:)g(:)26 b Fb(38)150 597 y(command)g(expansion)c
 Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(36)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(38)150
 687 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)33 b Fb(137)150 777 y(command)26 b(searc)n(h)16
+g(:)g(:)g(:)33 b Fb(141)150 777 y(command)26 b(searc)n(h)16
 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(37)150 866 y(command)c(substitution)21 b Fc(:)13
+b Fb(38)150 866 y(command)c(substitution)21 b Fc(:)13
 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(29)150 956 y(command)26
+(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(30)150 956 y(command)26
 b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)28 b Fb(8)150 1046 y(commands,)e(comp)r(ound)7 b Fc(:)14
@@ -20801,7 +21288,7 @@ b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(9)150 1135
 y(commands,)k(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
-b Fb(10)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
+b Fb(11)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)29 b Fb(14)150 1315 y(commands,)d(lists)12
 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
@@ -20821,10 +21308,10 @@ b Fb(8)150 1764 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150
 1853 y(completion)f(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)36 b Fb(131)150 1943 y(con\014guration)22 b Fc(:)13
+g(:)36 b Fb(134)150 1943 y(con\014guration)22 b Fc(:)13
 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(142)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
+b Fb(147)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
 b Fb(3)150 2120 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g
@@ -20833,44 +21320,44 @@ f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b
 Fb(15)146 2416 y Fs(D)150 2537 y Fb(directory)26 b(stac)n(k)11
 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(93)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17
+b Fb(96)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17
 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(105)150 3046 y(en)n(vironmen)n(t)18
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(108)150 3046 y(en)n(vironmen)n(t)18
 b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)32 b Fb(38)150 3136 y(ev)l(aluation,)26 b(arithmetic)12
+f(:)32 b Fb(40)150 3136 y(ev)l(aluation,)26 b(arithmetic)12
 b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(89)150 3226
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(92)150 3226
 y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)34 b Fb(140)150 3316 y(execution)26 b(en)n(vironmen)n(t)17
+g(:)h(:)34 b Fb(144)150 3316 y(execution)26 b(en)n(vironmen)n(t)17
 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(37)150 3405
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(39)150 3405
 y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(39)150 3495 y(expansion)9
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(40)150 3495 y(expansion)9
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)24 b Fb(21)150 3585 y(expansion,)i(arithmetic)18
+g(:)g(:)g(:)g(:)24 b Fb(22)150 3585 y(expansion,)i(arithmetic)18
 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(29)150 3674
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3674
 y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)30 b Fb(21)150 3764 y(expansion,)c(\014lename)18
+f(:)g(:)g(:)30 b Fb(23)150 3764 y(expansion,)c(\014lename)18
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(30)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(32)150
 3854 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)34 b Fb(23)150 3944 y(expansion,)26 b(pathname)7
+g(:)34 b Fb(24)150 3944 y(expansion,)26 b(pathname)7
 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(30)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(32)150
 4033 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)28 b Fb(22)150 4123 y(expressions,)f(arithmetic)13
+h(:)f(:)g(:)g(:)g(:)28 b Fb(23)150 4123 y(expressions,)f(arithmetic)13
 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(89)150 4210 y(expressions,)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(92)150 4210 y(expressions,)g
 (conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(87)2021
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(90)2021
 294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
@@ -20879,40 +21366,40 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36
 b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(30)2025 682 y(foreground)9
+g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(32)2025 682 y(foreground)9
 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)24 b Fb(100)2025 769 y(functions,)i(shell)9 b
+h(:)f(:)24 b Fb(103)2025 769 y(functions,)i(shell)9 b
 Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
 b Fb(17)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20
 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35
-b Fb(137)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13
+b Fb(141)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13
 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(140)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:)
+b Fb(144)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(139)2025 1436 y(history)c(list)9
+(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(143)2025 1436 y(history)c(list)9
 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)24 b Fb(137)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)
+g(:)g(:)24 b Fb(141)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)
 19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(136)2021
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(140)2021
 1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27
 b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17
 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)32 b Fb(107)2025 2102 y(installation)21
+f(:)g(:)g(:)g(:)32 b Fb(110)2025 2102 y(installation)21
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)34 b Fb(142)2025 2191 y(in)n(teraction,)26 b(readline)7
+g(:)34 b Fb(147)2025 2191 y(in)n(teraction,)26 b(readline)7
 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(104)2025
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(107)2025
 2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)34 b Fb(84,)27 b(85)2025 2367 y(in)n(ternationalization)22
+h(:)f(:)g(:)34 b Fb(87,)27 b(88)2025 2367 y(in)n(ternationalization)22
 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
 b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13
@@ -20921,29 +21408,29 @@ b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845
 y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(100)2021 3124 y Fs(K)2025
+g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(103)2021 3124 y Fs(K)2025
 3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(106)2025
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(109)2025
 3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(106)2021 3612
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(109)2021 3612
 y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
 b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fb(84)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26
+b Fb(87)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26
 b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
-b Fb(31)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
+b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p
 eop end
-%%Page: 172 178
-TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(172)146 294 y Fs(N)150 410 y Fb(name)19
+%%Page: 178 184
+TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(178)146 294 y Fs(N)150 410 y Fb(name)19
 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497
@@ -20952,26 +21439,26 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27
 b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
-b Fb(105)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c
+b Fb(108)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c
 Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26
 b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
-b Fb(23)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(24)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(18)150
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(19)150
 1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)21 b Fb(19)150 1562 y(parameters,)27 b(sp)r(ecial)7
+f(:)g(:)21 b Fb(21)150 1562 y(parameters,)27 b(sp)r(ecial)7
 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21
-b Fb(20)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g
+b Fb(21)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)32 b Fb(30)150 1736 y(pattern)25 b(matc)n(hing)c
+h(:)f(:)g(:)32 b Fb(32)150 1736 y(pattern)25 b(matc)n(hing)c
 Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fb(31)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(33)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27
 b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
@@ -20979,7 +21466,7 @@ b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
 b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(96)150
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(99)150
 2085 y(pro)r(cess)c(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d
@@ -20987,12 +21474,12 @@ g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)26 b Fb(3)150 2259 y(pro)r(cess)h(substitution)11
 b Fc(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(30)150
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(31)150
 2347 y(programmable)i(completion)8 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
-b Fb(129)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(132)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(94)146
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(97)146
 2676 y Fs(Q)150 2792 y Fb(quoting)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
@@ -21001,50 +21488,50 @@ b Fb(6)150 2879 y(quoting,)26 b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)146
 3121 y Fs(R)150 3237 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)11
 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(103)150 3325
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(106)150 3325
 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(32)150 3412 y(reserv)n(ed)f(w)n
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(34)150 3412 y(reserv)n(ed)f(w)n
 (ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
 (:)h(:)f(:)28 b Fb(3)150 3499 y(restricted)e(shell)14
 b Fc(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)29
-b Fb(95)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(99)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021
 294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(89)2025 520
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(92)2025 520
 y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(17)2025 613 y(shell)26
 b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(40)2025 706 y(shell)h(v)l(ariable)7
+(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(41)2025 706 y(shell)h(v)l(ariable)7
 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)22 b Fb(18)2025 799 y(shell,)k(in)n(teractiv)n(e)21
+g(:)22 b Fb(19)2025 799 y(shell,)k(in)n(teractiv)n(e)21
 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fb(85)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(88)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
 b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(39)2025 1077
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(41)2025 1077
 y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(70)2025 1170 y(startup)f(\014les)10
+g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(71)2025 1170 y(startup)f(\014les)10
 b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)25 b Fb(84)2025 1257 y(susp)r(ending)g(jobs)10
+(:)g(:)25 b Fb(87)2025 1257 y(susp)r(ending)g(jobs)10
 b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
-b Fb(100)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7
+b Fb(103)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7
 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
-b Fb(22)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(23)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
 f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
 b Fb(4)2025 1932 y(translation,)27 b(nativ)n(e)e(languages)c
@@ -21052,19 +21539,19 @@ Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)34 b Fb(7)2021 2294 y Fs(V)2025 2427 y
 Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(18)2025 2515 y(v)l(ariables,)f
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(19)2025 2515 y(v)l(ariables,)f
 (readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
-b Fb(108)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b
+b Fb(111)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b
 Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
 g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3097
 y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(30)2021 3458 y Fs(Y)2025
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(31)2021 3458 y Fs(Y)2025
 3586 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(106)p eop end
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(109)p eop end
 %%Trailer
 
 userdict /end-hook known{end-hook}if
index c0f4a2f8a462e504b9a1483c9f4102ba4308faaa..d33cd57104710da586f5167c3e0baf38f4be3548 100644 (file)
@@ -14,7 +14,7 @@ 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--2016 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2018 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -508,7 +508,7 @@ double quote
 question mark
 @item \@var{nnn}
 the eight-bit character whose value is the octal value @var{nnn}
-(one to three digits)
+(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)
@@ -659,8 +659,13 @@ the time information.
 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
+Each command in a pipeline is executed in its own subshell, which is a
+separate process (@pxref{Command Execution Environment}).
+If the @code{lastpipe} option is enabled using the @code{shopt} builtin
+(@pxref{The Shopt Builtin}),
+the last element of a pipeline may be run by the shell process.
+
+The exit
 status of a pipeline is the exit status of the last command in the
 pipeline, unless the @code{pipefail} option is enabled
 (@pxref{The Set Builtin}).
@@ -691,7 +696,8 @@ 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}.
+This is known as executing the command in the @var{background},
+and these are referred to as @var{asynchronous} commands.
 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}),
@@ -714,7 +720,7 @@ An @sc{and} list has the form
 
 @noindent
 @var{command2} is executed if, and only if, @var{command1}
-returns an exit status of zero.
+returns an exit status of zero (success).
 
 An @sc{or} list has the form
 @example
@@ -739,7 +745,7 @@ executed in the list.
 * Command Grouping::           Ways to group commands.
 @end menu
 
-Compound commands are the shell programming constructs.
+Compound commands are the shell programming language constructs.
 Each construct begins with a reserved word or control operator and is
 terminated by a corresponding reserved word or operator.
 Any redirections (@pxref{Redirections}) associated with a compound command
@@ -798,12 +804,14 @@ The syntax of the @code{for} command is:
 for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done
 @end example
 
-Expand @var{words}, and execute @var{commands} once for each member
+Expand @var{words} (@pxref{Shell Expansions}), 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.
@@ -869,11 +877,15 @@ zero if no condition tested true.
 The syntax of the @code{case} command is:
 
 @example
-case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} esac
+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 match is performed according
+to the rules described below in @ref{Pattern Matching}.
 If the @code{nocasematch} shell option
 (see the description of @code{shopt} in @ref{The Shopt Builtin})
 is enabled, the match is performed without regard to the case
@@ -885,7 +897,9 @@ as a @var{clause}.
 
 Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}.
 The @var{word} undergoes tilde expansion, parameter expansion, command
-substitution, arithmetic expansion, and quote removal before matching is
+substitution, arithmetic expansion, and quote removal
+(@pxref{Shell Parameter Expansion})
+before matching is
 attempted.  Each @var{pattern} undergoes tilde expansion, parameter
 expansion, command substitution, and arithmetic expansion.
 
@@ -1010,14 +1024,15 @@ If the @code{nocasematch} shell option
 is enabled, the match is performed without regard to the case
 of alphabetic characters.
 The return value is 0 if the string matches (@samp{==}) or does not
-match (@samp{!=})the pattern, and 1 otherwise.
+match (@samp{!=}) the pattern, and 1 otherwise.
 Any part of the pattern may be quoted to force the quoted portion
 to be matched as a string.
 
 An additional binary operator, @samp{=~}, is available, with the same
 precedence as @samp{==} and @samp{!=}.
 When it is used, the string to the right of the operator is considered
-an extended regular expression and matched accordingly (as in @i{regex}3)).
+a @sc{POSIX} extended regular expression and matched accordingly
+(as in @i{regex}3)).
 The return value is 0 if the string matches
 the pattern, and 1 otherwise.
 If the regular expression is syntactically incorrect, the conditional
@@ -1045,7 +1060,7 @@ if there is a sequence of characters in the value consisting of
 any number, including zero, of 
 space characters, zero or one instances of @samp{a}, then a @samp{b}:
 @example
-[[ $line =~ [[:space:]]*(a)?b ]]
+[[ $line =~ [[:space:]]*?(a)b ]]
 @end example
 
 @noindent
@@ -1061,7 +1076,7 @@ expressions while paying attention to the shell's quote removal.
 Using a shell variable to store the pattern decreases these problems.
 For example, the following is equivalent to the above:
 @example
-pattern='[[:space:]]*(a)?b'
+pattern='[[:space:]]*?(a)b'
 [[ $line =~ $pattern ]]
 @end example
 
@@ -1197,7 +1212,8 @@ This pipe is established before any redirections specified by the
 command (@pxref{Redirections}).
 The file descriptors can be utilized as arguments to shell commands
 and redirections using standard word expansions.
-The file descriptors are not available in subshells.
+Other than those created to execute command and process substitutions,
+the file descriptors are not available in subshells.
 
 The process ID of the shell spawned to execute the coprocess is
 available as the value of the variable @env{NAME}_PID.
@@ -1271,7 +1287,8 @@ from a file (in this case, filenames listed one per line):
 @noindent
 with a more compact syntax reminiscent of lambdas:
 @example
-cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | process-output
+cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" |
+           process-output
 @end example
 
 Parallel provides a built-in mechanism to remove filename extensions, which
@@ -1294,13 +1311,21 @@ parallel "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" ::: *.gz
 If a command generates output, you may want to preserve the input order in
 the output.  For instance, the following command
 @example
-@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel traceroute
+@{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+@} | parallel traceroute
 @end example
 @noindent
 will display as output the traceroute invocation that finishes first.
 Adding the @option{-k} option 
 @example
-@{ echo foss.org.my ; echo debian.org; echo freenetproject.org; @} | parallel -k traceroute
+@{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+@} | parallel -k traceroute
 @end example
 @noindent
 will ensure that the output of @code{traceroute foss.org.my} is displayed first.
@@ -1308,7 +1333,7 @@ will ensure that the output of @code{traceroute foss.org.my} is displayed first.
 Finally, Parallel can be used to run a sequence of shell commands in parallel,
 similar to @samp{cat file | bash}.
 It is not uncommon to take a list of filenames, create a series of shell
-commands to operate on them, and feed that list of commnds to a shell.
+commands to operate on them, and feed that list of commands to a shell.
 Parallel can speed this up.  Assuming that @file{file} contains a list of
 shell commands, one per line,
 
@@ -1424,7 +1449,66 @@ 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.
+the function and the commands it invokes.  This is particularly
+important when a shell function calls other functions.
+
+Local variables "shadow" variables with the same name declared at
+previous scopes.  For instance, a local variable declared in a function
+hides a global variable of the same name: references and assignments
+refer to the local variable, leaving the global variable unmodified.
+When the function returns, the global variable is once again visible.
+
+The shell uses @var{dynamic scoping} to control a variable's visibility
+within functions.
+With dynamic scoping, visible variables and their values
+are a result of the sequence of function calls that caused execution
+to reach the current function.
+The value of a variable that a function sees depends
+on its value within its caller, if any, whether that caller is
+the "global" scope or another shell function.
+This is also the value that a local variable
+declaration "shadows", and the value that is restored when the function
+returns.
+
+For example, if a variable @var{var} is declared as local in function
+@var{func1}, and @var{func1} calls another function @var{func2},
+references to @var{var} made from within @var{func2} will resolve to the
+local variable @var{var} from @var{func1}, shadowing any global variable
+named @var{var}.
+
+The following script demonstrates this behavior.
+When executed, the script displays
+
+@example
+In func2, var = func1 local
+@end example
+
+@example
+func1()
+@{
+    local var='func1 local'
+    func2
+@}
+
+func2()
+@{
+    echo "In func2, var = $var"
+@}
+
+var=global
+func1
+@end example
+
+The @code{unset} builtin also acts using the same dynamic scope: if a  
+variable is local to the current scope, @code{unset} will unset it;         
+otherwise the unset will refer to the variable found in any calling scope 
+as described above.
+If a variable at the current local scope is unset, it will remain so
+until it is reset in that scope or until the function returns.
+Once the function returns, any instance of the variable at a previous
+scope will become visible.
+If the unset acts on a variable at a previous scope, any instance of a   
+variable with that name that had been shadowed will become visible.
 
 Function names and definitions may be listed with the
 @option{-f} option to the @code{declare} (@code{typeset})
@@ -1437,10 +1521,6 @@ 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.
 The @code{FUNCNEST} variable may be used to limit the depth of the
@@ -1596,8 +1676,16 @@ separators.
 
 @item @@
 @vindex $@@
-($@@) Expands to the positional parameters, starting from one.  When the
-expansion occurs within double quotes, each parameter expands to a
+($@@) Expands to the positional parameters, starting from one.
+In contexts where word splitting is performed, this expands each
+positional parameter to a separate word; if not within double
+quotes, these words are subject to word splitting.
+In contexts where word splitting is not performed,
+this expands to a single word
+with each positional parameter separated by a space.
+When the
+expansion occurs within double quotes, and word splitting is performed,
+each parameter expands to a
 separate word.  That is, @code{"$@@"} is equivalent to
 @code{"$1" "$2" @dots{}}.
 If the double-quoted expansion occurs within a word, the expansion of
@@ -1651,8 +1739,8 @@ to the filename used to invoke Bash, as given by argument zero.
 At shell startup, set to the absolute pathname used to invoke the
 shell or shell script being executed as passed in the environment
 or argument list.
-Subsequently, expands to the last argument to the previous command,
-after expansion.   
+Subsequently, expands to the last argument to the previous simple
+command executed in the foreground, after expansion. 
 Also set to the full pathname used to invoke each command executed
 and placed in the environment exported to that command.
 When checking mail, this parameter holds the name of the mail file.
@@ -1708,10 +1796,11 @@ original word are removed unless they have been quoted themselves
 (@var{quote removal}).
 
 Only brace expansion, word splitting, and filename expansion
-can change the number of words of the expansion; other expansions
+can increase 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}[@@]@}"}
+@code{"$@@"} and @code{$*} (@pxref{Special Parameters}), and
+@code{"$@{@var{name}[@@]@}"} and @code{$@{@var{name}[*]@}}
 (@pxref{Arrays}).
 
 After all expansions, @code{quote removal} (@pxref{Quote Removal})
@@ -1765,8 +1854,6 @@ 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
@@ -1776,7 +1863,8 @@ 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.
+is not considered eligible for brace expansion,
+and inhibits brace expansion until the closing @samp{@}}..
 
 This construct is typically used as shorthand when the common
 prefix of the strings to be generated is longer than in the
@@ -1859,6 +1947,12 @@ The string that would be displayed by @samp{dirs +@var{N}}
 The string that would be displayed by @samp{dirs -@var{N}}
 @end table
 
+Bash also performs tilde expansion on words satisfying the conditions of
+variable assignments (@pxref{Shell Parameters})
+when they appear as arguments to simple commands.
+Bash does not do this, except for the @var{declaration} commands listed
+above, when in @sc{posix} mode.
+
 @node Shell Parameter Expansion
 @subsection Shell Parameter Expansion
 @cindex parameter expansion
@@ -1887,12 +1981,14 @@ interpreted as part of its name.
 
 If the first character of @var{parameter} is an exclamation point (!),
 and @var{parameter} is not a @var{nameref},
-it introduces a level of variable indirection.
-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.
+it introduces a level of indirection.
+Bash uses the value formed by expanding the rest of
+@var{parameter} as the new @var{parameter}; this is then
+expanded and that value is used in the rest of the expansion, rather
+than the expansion of the original @var{parameter}.
 This is known as @code{indirect expansion}.
+The value is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
 If @var{parameter} is a nameref, this expands to the name of the
 variable referenced by @var{parameter} instead of performing the
 complete indirect expansion.
@@ -2120,8 +2216,8 @@ array, and an index of -1 references the last element.
 @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
+is expanded to produce a pattern and matched according to the rules
+described below (@pxref{Pattern Matching}).  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
@@ -2136,8 +2232,9 @@ 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.
+The @var{word}
+is expanded to produce a pattern and matched according to the rules
+described below (@pxref{Pattern Matching}).  If the pattern matches
 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)
@@ -2156,6 +2253,8 @@ 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}.
+The match is performed according to the rules described below
+(@pxref{Pattern Matching}).
 If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are
 replaced with @var{string}.  Normally only the first match is replaced.
 If @var{pattern} begins with @samp{#}, it must match at the beginning
@@ -2213,7 +2312,7 @@ The expansion is a string that is the value of @var{parameter} quoted in a
 format that can be reused as input.
 @item E
 The expansion is a string that is the value of @var{parameter} with backslash
-escape sequences expanded as with the @code{$'@dots{}'} quoting mechansim.
+escape sequences expanded as with the @code{$'@dots{}'} quoting mechanism.
 @item P
 The expansion is a string that is the result of expanding the value of
 @var{parameter} as if it were a prompt string (@pxref{Controlling the Prompt}).
@@ -2410,18 +2509,23 @@ without regard to the case of alphabetic characters.
 When a pattern is used for filename expansion, 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 filename, the slash character must always be
-matched explicitly.
+The filenames @samp{.} and @samp{..} must always be matched explicitly,
+even if @code{dotglob} is set.
 In other cases, the @samp{.} character is not treated specially.
 
+When matching a filename, the slash character must always be
+matched explicitly by a slash in the pattern, but in other matching
+contexts it can be matched by a special pattern character as described
+below (@pxref{Pattern Matching}).
+
 See the description of @code{shopt} in @ref{The Shopt Builtin},
 for a description of the @code{nocaseglob}, @code{nullglob},
 @code{failglob}, and @code{dotglob} options.
 
 The @env{GLOBIGNORE}
-shell variable may be used to restrict the set of filenames matching a
+shell variable may be used to restrict the set of file names matching a
 pattern.  If @env{GLOBIGNORE}
-is set, each matching filename that also matches one of the patterns in
+is set, each matching file name that also matches one of the patterns in
 @env{GLOBIGNORE} is removed from the list of matches.
 If the @code{nocaseglob} option is set, the matching against the patterns in
 @env{GLOBIGNORE} is performed without regard to case.
@@ -2533,6 +2637,12 @@ Matches one of the given patterns.
 Matches anything except one of the given patterns.
 @end table
 
+Complicated extended pattern matching against long strings is slow,
+especially when the patterns contain alternations and the strings
+contain multiple matches.
+Using separate matches against shorter strings, or using arrays of
+strings instead of a single long string, may be faster.
+
 @node Quote Removal
 @subsection Quote Removal
 
@@ -2565,6 +2675,9 @@ In this case, for each redirection operator except
 than 10 and assign it to @{@var{varname}@}.  If >&- or <&- is preceded
 by @{@var{varname}@}, the value of @var{varname} defines the file
 descriptor to close.
+If @{@var{varname}@} is supplied, the redirection persists beyond
+the scope of the command, allowing the shell programmer to manage
+the file descriptor himself.
 
 In the following descriptions, if the file descriptor number is
 omitted, and the first character of the redirection operator is
@@ -2761,7 +2874,7 @@ A variant of here documents, the format is:
 @end example
 
 The @var{word} undergoes
-brace expansion, tilde expansion, parameter and variable expansion,
+tilde expansion, parameter and variable expansion,
 command substitution, arithmetic expansion, and quote removal.
 Pathname expansion and word splitting are not performed.
 The result is supplied as a single string,
@@ -2922,9 +3035,10 @@ 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 searches for a defined shell
 function named @code{command_not_found_handle}.
-If that function exists, it is invoked with the original command and
+If that function exists, it is invoked in a separate execution environment
+with the original command and
 the original command's arguments as its arguments, and the function's
-exit status becomes the exit status of thshell.
+exit status becomes the exit status of that subshell.
 If that function is not defined, the shell prints an error
 message and returns an exit status of 127.
 
@@ -3262,7 +3376,7 @@ Many of the builtins have been extended by @sc{posix} or Bash.
 Unless otherwise noted, each builtin command documented as accepting
 options preceded by @samp{-} accepts @samp{--}
 to signify the end of the options.
-The @code{:}, @code{true}, @code{false}, and @code{test}
+The @code{:}, @code{true}, @code{false}, and @code{test}/@code{[}
 builtins do not accept options and do not treat @samp{--} specially.
 The @code{exit}, @code{logout}, @code{return},
 @code{break}, @code{continue}, @code{let},
@@ -3417,6 +3531,7 @@ cannot be executed for some reason, a non-interactive shell exits,
 unless the @code{execfail} shell option
 is enabled.  In that case, it returns failure.
 An interactive shell returns failure if the file cannot be executed.
+A subshell exits unconditionally if @code{exec} fails.
 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.
@@ -3525,7 +3640,7 @@ 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
+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.
@@ -3587,7 +3702,7 @@ If @var{n} is not supplied, the return value is the exit status of the
 last command executed in the function.
 If @code{return} is executed by a trap handler, the last command used to
 determine the status is the last command executed before the trap handler.
-if @code{return} is executed during a @code{DEBUG} trap, the last command
+If @code{return} is executed during a @code{DEBUG} trap, the last command
 used to determine the status is the last command executed by the trap
 handler before @code{return} was invoked.
 @code{return} may also be used to terminate execution of a script
@@ -3668,7 +3783,7 @@ expressions using a set of rules based on the number of arguments.
 The expression is false.
 
 @item 1 argument
-The expression is true if and only if the argument is not null.
+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
@@ -3681,18 +3796,25 @@ false.
 
 @item 3 arguments
 The following conditions are applied in the order listed.
+
+@enumerate
+@item
 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.
 The @samp{-a} and @samp{-o} operators are considered binary operators
 when there are three arguments.
+@item
 If the first argument is @samp{!}, the value is the negation of
 the two-argument test using the second and third arguments.
+@item
 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.
+@item
 Otherwise, the expression is false.
+@end enumerate
 
 @item 4 arguments
 If the first argument is @samp{!}, the result is the negation of
@@ -4086,8 +4208,8 @@ the environment.
 @end table
 
 Using @samp{+} instead of @samp{-} turns off the attribute instead,
-with the exceptions that @samp{+a}
-may not be used to destroy an array variable and @samp{+r} will not
+with the exceptions that @samp{+a} and @samp{+A}
+may not be used to destroy array variables and @samp{+r} will not
 remove the readonly attribute.
 When used in a function, @code{declare} makes each @var{name} local,
 as with the @code{local} command, unless the @option{-g} option is used.
@@ -4265,8 +4387,8 @@ parent.
 @item mapfile
 @btindex mapfile
 @example
-mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}]
-    [-C @var{callback}] [-c @var{quantum}] [@var{array}]
+mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}]
+    [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}]
 @end example
 
 Read lines from the standard input into the indexed array variable @var{array},
@@ -4280,6 +4402,8 @@ Options, if supplied, have the following meanings:
 @item -d
 The first character of @var{delim} is used to terminate each input line,
 rather than newline.
+If @var{delim} is the empty string, @code{mapfile} will terminate a line
+when it reads a NUL character.
 @item -n
 Copy at most @var{count} lines.  If @var{count} is 0, all lines are copied.
 @item -O
@@ -4292,7 +4416,7 @@ Remove a trailing @var{delim} (default newline) from each line read.
 @item -u
 Read lines from file descriptor @var{fd} instead of the standard input.
 @item -C
-Evaluate @var{callback} each time @var{quantum}P lines are read.
+Evaluate @var{callback} each time @var{quantum} lines are read.
 The @option{-c} option specifies @var{quantum}.
 @item -c
 Specify the number of lines read between each call to @var{callback}.
@@ -4405,11 +4529,13 @@ 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.
+If @var{delim} is the empty string, @code{read} will terminate a line
+when it reads a NUL character.
 
 @item -e
 Readline (@pxref{Command Line Editing}) is used to obtain the line.
 Readline uses the current (or default, if line editing was not previously
-active) editing settings.
+active) editing settings, but uses Readline's default filename completion.
 
 @item -i @var{text}
 If Readline is being used to read the line, @var{text} is placed into
@@ -4439,7 +4565,7 @@ 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
+In particular, a backslash-newline pair may not then be used as a line
 continuation.
 
 @item -s
@@ -4469,8 +4595,8 @@ Read input from file descriptor @var{fd}.
 @item readarray
 @btindex readarray
 @example
-readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}]
-    [-C @var{callback}] [-c @var{quantum}] [@var{array}]
+readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}]
+    [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}]
 @end example
 
 Read lines from the standard input into the indexed array variable @var{array},
@@ -4972,7 +5098,8 @@ The settings can be either those listed below, or, if the
 @option{-o} option is used, those available with the @option{-o}
 option to the @code{set} builtin command (@pxref{The Set Builtin}).
 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.
+options is displayed, with an indication of whether or not each is set;
+if @var{optnames} are supplied, the output is restricted to those options.
 The @option{-p} option causes output to be displayed in a form that
 may be reused as input.
 Other options have the following meanings:
@@ -5012,6 +5139,12 @@ option.
 The list of @code{shopt} options is:
 @table @code
 
+@item assoc_expand_once
+If set, the shell suppresses multiple evaluation of associative array
+subscripts during arithmetic expression evaluation, while executing
+builtins that can perform variable assignments,
+and while executing builtins that perform array dereferencing.
+
 @item autocd
 If set, a command name that is the name of a directory is executed as if
 it were the argument to the @code{cd} command.
@@ -5044,15 +5177,18 @@ intervening command (@pxref{Job Control}).
 The shell always postpones exiting if any jobs are stopped.
 
 @item checkwinsize
-If set, Bash checks the window size after each command
- and, if necessary, updates the values of    
+If set, Bash checks the window size after each external (non-builtin)
+command and, if necessary, updates the values of    
 @env{LINES} and @env{COLUMNS}.
+This option is enabled by default.
 
 @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.
+This option is enabled by default, but only has an effect if command
+history is enabled (@pxref{Bash History Facilities}).
 
 @item compat31
 If set, Bash
@@ -5106,6 +5242,11 @@ and does not reset the
 loop state when a shell function is executed (this allows @code{break} or
 @code{continue} in a shell function to affect loops in the caller's context).
 
+@item compat44
+If set, Bash
+saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
+used, regardless of whether or not extended debugging mode is enabled.
+
 @item complete_fullquote
 If set, Bash
 quotes all shell metacharacters in filenames and directory names when
@@ -5138,6 +5279,8 @@ if the directory name initially supplied does not exist.
 @item dotglob
 If set, Bash includes filenames beginning with a `.' in
 the results of filename expansion.
+The filenames @samp{.} and @samp{..} must always be matched explicitly,
+even if @code{dotglob} is set.
 
 @item execfail
 If this is set, a non-interactive shell will not exit if
@@ -5271,6 +5414,17 @@ 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 localvar_inherit
+If set, local variables inherit the value and attributes of a variable of
+the same name that exists at a previous scope before any new value is
+assigned.  The @var{nameref} attribute is not inherited.
+
+@item localvar_unset
+If set, calling @code{unset} on local variables in previous function scopes
+marks them so subsequent lookups find them unset until that function
+returns. This is identical to the behavior of unsetting local variables
+at the current function scope.
+
 @item login_shell
 The shell sets this option if it is started as a login shell
 (@pxref{Invoking Bash}).
@@ -5306,6 +5460,12 @@ If set, the programmable completion facilities
 (@pxref{Programmable Completion}) are enabled.
 This option is enabled by default.
 
+@item progcomp_alias
+If set, and programmable completion is enabled, Bash treats a command
+name that doesn't have any completions as a possible alias and attempts
+alias expansion. If it has an alias, Bash attempts programmable
+completion using the command word resulting from the expanded alias.
+
 @item promptvars
 If set, prompt strings undergo
 parameter expansion, command substitution, arithmetic
@@ -5444,6 +5604,8 @@ sequences that are expanded before @env{PS1} is displayed.
 
 @item PS2
 The secondary prompt string.  The default value is @samp{> }.
+@env{PS2} is expanded in the same way as @env{PS1} before being
+displayed.
 
 @end vtable
 
@@ -5476,6 +5638,10 @@ reading any startup files.  This variable is readonly.
 Expands to the process ID of the current Bash process.
 This differs from @code{$$} under certain circumstances, such as subshells
 that do not require Bash to be re-initialized.
+Assignments to @env{BASHPID} have no effect.
+If @code{BASHPID}
+is unset, it loses its special properties, even if it is
+subsequently reset.
 
 @item BASH_ALIASES
 An associative array variable whose members correspond to the internal
@@ -5499,6 +5665,9 @@ The shell sets @code{BASH_ARGC} only when in extended debugging mode
 (see @ref{The Shopt Builtin}
 for a description of the @code{extdebug} option to the @code{shopt}
 builtin).
+Setting @code{extdebug} after the shell has started to execute a script,
+or referencing this variable when @code{extdebug} is not set,
+may result in inconsistent values.
 
 @item BASH_ARGV
 An array variable containing all of the parameters in the current bash
@@ -5510,6 +5679,19 @@ The shell sets @code{BASH_ARGV} only when in extended debugging mode
 (see @ref{The Shopt Builtin}
 for a description of the @code{extdebug} option to the @code{shopt}
 builtin).
+Setting @code{extdebug} after the shell has started to execute a script,
+or referencing this variable when @code{extdebug} is not set,
+may result in inconsistent values.
+
+@item BASH_ARGV0
+When referenced, this variable expands to the name of the shell or shell
+script (identical to @code{$0}; @xref{Special Parameters},
+for the description of special parameter 0).
+Assignment to @code{BASH_ARGV0}
+causes the value assigned to also be assigned to @code{$0}.
+If @code{BASH_ARGV0}
+is unset, it loses its special properties, even if it is
+subsequently reset.
 
 @item BASH_CMDS
 An associative array variable whose members correspond to the internal
@@ -5726,6 +5908,23 @@ Emacs shell buffer and disables line editing.
 Similar to @code{BASH_ENV}; used when the shell is invoked in
 @sc{posix} Mode (@pxref{Bash POSIX Mode}).
 
+@item EPOCHREALTIME
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch as a floating point value with micro-second granularity
+(see the documentation for the C library function @var{time} for the
+definition of Epoch).
+Assignments to @env{EPOCHREALTIME} are ignored.
+If @env{EPOCHREALTIME} is unset, it loses its special properties, even if
+it is subsequently reset.
+
+@item EPOCHSECONDS
+Each time this parameter is referenced, it expands to the number of seconds
+since the Unix Epoch (see the documentation for the C library function
+@var{time} for the definition of Epoch).
+Assignments to @env{EPOCHSECONDS} are ignored.
+If @env{EPOCHSECONDS} is unset, it loses its special properties, even if
+it is subsequently reset.
+
 @item EUID
 The numeric effective user id of the current user.  This variable
 is readonly.
@@ -5783,9 +5982,9 @@ nesting level.  Function invocations that exceed this nesting level
 will cause the current command to abort.
 
 @item GLOBIGNORE
-A colon-separated list of patterns defining the set of filenames to
+A colon-separated list of patterns defining the set of file names to
 be ignored by filename expansion.
-If a filename matched by a filename expansion pattern also matches one
+If a file name matched by a filename expansion pattern also matches one
 of the patterns in @env{GLOBIGNORE}, it is removed from the list
 of matches.
 The pattern matching honors the setting of the @code{extglob} shell
@@ -5916,7 +6115,7 @@ 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.
+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.
 
@@ -5924,6 +6123,11 @@ input to the shell.  This is only in effect for interactive shells.
 The name of the Readline initialization file, overriding the default
 of @file{~/.inputrc}.
 
+@item INSIDE_EMACS
+If Bash finds this variable in the environment when the shell
+starts, it assumes that the shell is running in an Emacs shell buffer
+and may disable line editing depending on the value of @env{TERM}.
+
 @item LANG  
 Used to determine the locale category for any category not specifically
 selected with a variable starting with @code{LC_}.
@@ -6007,7 +6211,9 @@ as if the command
 @code{set -o posix}
 @end example
 @noindent
-had been executed.  
+had been executed.
+When the shell enters @sc{posix} mode, it sets this variable if it was
+not already set.
 
 @item PPID
 The process @sc{id} of the shell's parent process.  This variable
@@ -6034,10 +6240,11 @@ The value of this variable is used as the prompt for 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 value of this parameter is expanded like @var{PS1}
+and the expanded 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 the expanded value is replicated multiple times,
+as necessary, to indicate multiple levels of indirection.
 The default is @samp{+ }.
 
 @item PWD
@@ -6180,9 +6387,12 @@ This chapter describes features unique to 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{}]
+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
 
 All of the single-character options used with the @code{set} builtin
@@ -6286,7 +6496,8 @@ Make the shell a restricted shell (@pxref{The Restricted Shell}).
 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.
+when invoking an interactive shell or when reading input
+through a pipe.
 
 @item -D
 A list of all double-quoted strings preceded by @samp{$}
@@ -6526,7 +6737,10 @@ signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
 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.
-Bash displays @env{PS0} after it reads a command but before executing it.
+Bash expands and displays @env{PS0} after it reads a command but before
+executing it.
+See @ref{Controlling the Prompt}, for a complete list of prompt
+string escape sequences.
 
 @item
 Bash executes the value of the @env{PROMPT_COMMAND} variable as a command
@@ -6558,7 +6772,7 @@ In the absence of any traps, Bash ignores @code{SIGTERM}
 
 @item
 In the absence of any traps, @code{SIGINT} is caught and handled
-((@pxref{Signals}).
+(@pxref{Signals}).
 @code{SIGINT} will interrupt some shell builtins.
 
 @item
@@ -6616,9 +6830,13 @@ printing @env{$PS1} (@pxref{Bash Variables}).
 @cindex expressions, conditional
 
 Conditional expressions are used by the @code{[[} compound command
-and the @code{test} and @code{[} builtin commands.
+and the @code{test} and @code{[} builtin commands. The @code{test}
+and @code{[} commands determine their behavior based on the number
+of arguments; see the descriptions of those commands for any other
+command-specific actions.
 
-Expressions may be unary or binary.
+Expressions may be unary or binary,
+and are formed from the following primaries.
 Unary expressions are often used to examine the status of a file.
 There are string operators and numeric comparison operators as well.
 Bash handles several filenames specially when they are used in
@@ -6758,6 +6976,8 @@ 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.
+When used with the @code{[[} command, @var{Arg1} and @var{Arg2}
+are evaluated as arithmetic expressions (@pxref{Shell Arithmetic}).
 @end table
 
 @node Shell Arithmetic
@@ -6907,10 +7127,11 @@ unless the @code{expand_aliases} shell option is set using
 @code{shopt} (@pxref{The Shopt Builtin}).
 
 The rules concerning the definition and use of aliases are
-somewhat confusing.  Bash
-always reads at least one complete line
-of input before executing any
-of the commands on that line.  Aliases are expanded when a
+somewhat confusing. Bash
+always reads at least one complete line of input,
+and all lines that make up a compound command,
+before executing any of the commands on that line or the compound command.
+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.
@@ -7047,12 +7268,16 @@ The @code{unset} builtin is used to destroy arrays.
 @code{unset @var{name}[@var{subscript}]}
 destroys the array element at index @var{subscript}.
 Negative subscripts to indexed arrays are interpreted as described above.
-Care must be taken to avoid unwanted side effects caused by filename
-expansion.
+Unsetting the last element of an array variable does not unset the variable.
 @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.
 
+When using a variable name with a subscript as an argument to a command,
+such as with @code{unset}, without using the word expansion syntax
+described above, the argument is subject to the shell's filename expansion.
+If filename expansion is not desired, the argument should be quoted.
+
 The @code{declare}, @code{local}, and @code{readonly}
 builtins each accept a @option{-a} option to specify an indexed
 array and a @option{-A} option to specify an associative array.
@@ -7186,7 +7411,8 @@ 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 @env{PS1} to @env{PS4}:
+can appear in the prompt variables @env{PS0}, @env{PS1}, @env{PS2}, and
+@env{PS4}:
 
 @table @code
 @item \a
@@ -7260,7 +7486,7 @@ 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}).
+@code{promptvars} shell option (@pxref{The Shopt Builtin}).
 
 @node The Restricted Shell
 @section The Restricted Shell
@@ -7331,6 +7557,9 @@ startup files.
 The following list is what's changed when `@sc{posix} mode' is in effect:
 
 @enumerate
+@item
+Bash ensures that the @env{POSIXLY_CORRECT} variable is set.
+
 @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
@@ -7530,6 +7759,12 @@ the @option{-e} option from the parent shell.
 When the @code{inherit_errexit} option is not enabled,
 Bash clears the @option{-e} option in such subshells.
 
+@item
+Enabling @sc{posix} mode has the effect of setting the
+@code{shift_verbose} option, so numeric arguments to @code{shift}
+that exceed the number of positional parameters will result in an
+error message.
+
 @item
 When the @code{alias} builtin displays alias definitions, it does not
 display them with a leading @samp{alias } unless the @option{-p} option
@@ -7550,6 +7785,13 @@ 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.
 
+@item
+When the @code{cd} builtin cannot change a directory because the
+length of the pathname 
+constructed from @code{$PWD} and the directory name supplied as an argument
+exceeds @var{PATH_MAX} when all symbolic links are expanded, @code{cd} will
+fail instead of attempting to use only the supplied directory name.
+
 @item
 The @code{pwd} builtin verifies that the value it prints is the same as the
 current directory, even if it is not asked to check the file system with the
@@ -7738,6 +7980,11 @@ 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 any stopped jobs are terminated.
 
+When the shell is waiting for a job or process using the @code{wait}
+builtin, and job control is enabled, @code{wait} will return when the
+job changes state. The @option{-f} option will force @code{wait} to wait
+until the job or process terminates before returning.
+
 @node Job Control Builtins
 @section Job Control Builtins
 
@@ -7834,7 +8081,7 @@ or non-zero if an error occurs or an invalid option is encountered.
 @item wait
 @btindex wait
 @example
-wait [-n] [@var{jobspec} or @var{pid} @dots{}]
+wait [-fn] [@var{jobspec} or @var{pid} @dots{}]
 @end example
 
 Wait until the child process specified by each process @sc{id} @var{pid}
@@ -7845,6 +8092,9 @@ If no arguments are given, all currently active child processes are
 waited for, and the return status is zero.
 If the @option{-n} option is supplied, @code{wait} waits for any job to
 terminate and returns its exit status.
+If the @option{-f} option is supplied, and job control is enabled,
+@code{wait} forces each @var{pid} or @var{jobspec} to terminate before
+returning its status, intead of returning when it changes status.
 If neither @var{jobspec} nor @var{pid} specifies an active child process
 of the shell, the return status is 127.
 
@@ -7997,12 +8247,28 @@ To find out more about the options and arguments that the
 @code{configure} script understands, type 
 
 @example
-bash-2.04$ ./configure --help
+bash-4.2$ ./configure --help
 @end example
 
 @noindent
 at the Bash prompt in your Bash source directory.
 
+If you want to build Bash in a directory separate from the source
+directory -- to build for multiple architectures, for example --
+just use the full path to the configure script. The following commands
+will build bash in a directory under @file{/usr/local/build} from
+the source code in @file{/usr/local/src/bash-4.4}:
+
+@example
+mkdir /usr/local/build/bash-4.4
+cd /usr/local/build/bash-4.4
+bash /usr/local/src/bash-4.4/configure
+make
+@end example
+
+See @ref{Compiling For Multiple Architectures} for more information
+about building in a directory separate from the source.
+
 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
@@ -8052,7 +8318,9 @@ 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
+the @code{configure} script from the source directory
+(@pxref{Basic Installation}).
+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 `..'.
@@ -8224,7 +8492,7 @@ 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,
+Enable support for @uref{http://www.unix.org/version2/whatsnew/lfs20mar.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.
@@ -8301,6 +8569,12 @@ Include support for coprocesses and the @code{coproc} reserved word
 @item --enable-debugger
 Include support for the bash debugger (distributed separately).
 
+@item --enable-dev-fd-stat-broken
+If calling @code{stat} on /dev/fd/@var{N} returns different results than
+calling @code{fstat} on file descriptor @var{N}, supply this option to
+enable a workaround.
+This has implications for conditional commands that test file attributes.
+
 @item --enable-direxpand-default
 Cause the @code{direxpand} shell option (@pxref{The Shopt Builtin})
 to be enabled by default when the shell starts.
@@ -8373,7 +8647,7 @@ If Readline is not enabled, this option has no effect.
 
 @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
+in the @env{$PS0}, @env{$PS1}, @env{$PS2}, and @env{$PS4} prompt
 strings.  See @ref{Controlling the Prompt}, for a complete list of prompt
 string escape sequences.
 
index 3706dad497fba54433b2aa96f60940ff8a18dc0c..76f08b774a53a2afb2cd7f1e4b74002115c0965a 100644 (file)
@@ -14,7 +14,7 @@ N\bNA\bAM\bME\bE
 B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        Unless otherwise noted, each builtin command documented in this section
        as accepting options preceded by -\b- accepts -\b--\b- to signify the end of the
-       options.   The  :\b:, t\btr\bru\bue\be, f\bfa\bal\bls\bse\be, and t\bte\bes\bst\bt builtins do not accept options
+       options.  The :\b:, t\btr\bru\bue\be, f\bfa\bal\bls\bse\be, and t\bte\bes\bst\bt/[\b[ builtins do not accept options
        and do not treat -\b--\b- specially.  The e\bex\bxi\bit\bt, l\blo\bog\bgo\bou\but\bt, r\bre\bet\btu\bur\brn\bn,  b\bbr\bre\bea\bak\bk,  c\bco\bon\bn-\b-
        t\bti\bin\bnu\bue\be,  l\ble\bet\bt,  and s\bsh\bhi\bif\bft\bt builtins accept and process arguments beginning
        with -\b- without requiring -\b--\b-.  Other builtins that accept arguments  but
@@ -210,71 +210,78 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               The return value is true unless an invalid option  is  supplied,
               or no matches were generated.
 
-       c\bco\bom\bmp\bpl\ble\bet\bte\be  [-\b-a\bab\bbc\bcd\bde\bef\bfg\bgj\bjk\bks\bsu\buv\bv]  [-\b-o\bo _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bE] [-\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn] [-\b-G\bG _\bg_\bl_\bo_\bb_\b-
+       c\bco\bom\bmp\bpl\ble\bet\bte\be  [-\b-a\bab\bbc\bcd\bde\bef\bfg\bgj\bjk\bks\bsu\buv\bv] [-\b-o\bo _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bEI\bI] [-\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn] [-\b-G\bG _\bg_\bl_\bo_\bb_\b-
        _\bp_\ba_\bt] [-\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt] [-\b-F\bF _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn] [-\b-C\bC _\bc_\bo_\bm_\bm_\ba_\bn_\bd]
               [-\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt] [-\b-P\bP _\bp_\br_\be_\bf_\bi_\bx] [-\b-S\bS _\bs_\bu_\bf_\bf_\bi_\bx] _\bn_\ba_\bm_\be [_\bn_\ba_\bm_\be _\b._\b._\b.]
-       c\bco\bom\bmp\bpl\ble\bet\bte\be -\b-p\bpr\br [-\b-D\bDE\bE] [_\bn_\ba_\bm_\be ...]
+       c\bco\bom\bmp\bpl\ble\bet\bte\be -\b-p\bpr\br [-\b-D\bDE\bEI\bI] [_\bn_\ba_\bm_\be ...]
               Specify how arguments to each _\bn_\ba_\bm_\be should be completed.  If  the
               -\b-p\bp  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 -\b-r\br option removes a completion spec-
               ification for each _\bn_\ba_\bm_\be, or, if no _\bn_\ba_\bm_\bes are supplied, all  com-
-              pletion  specifications.   The  -\b-D\bD  option  indicates  that  the
-              remaining options and actions should apply  to  the  ``default''
-              command  completion;  that is, completion attempted on a command
-              for which no completion has previously  been  defined.   The  -\b-E\bE
-              option  indicates  that the remaining options and actions should
-              apply to  ``empty''  command  completion;  that  is,  completion
-              attempted on a blank line.
-
-              The  process  of  applying  these completion specifications when
-              word completion is attempted is described above  under  P\bPr\bro\bog\bgr\bra\bam\bm-\b-
+              pletion specifications.  The -\b-D\bD option indicates that other sup-
+              plied options and actions should apply to the  ``default''  com-
+              mand  completion; that is, completion attempted on a command for
+              which no completion has previously been defined.  The -\b-E\bE  option
+              indicates  that  other supplied options and actions should apply
+              to ``empty'' command completion; that is,  completion  attempted
+              on  a  blank  line.  The -\b-I\bI option indicates that other supplied
+              options and actions should apply to  completion  on  the  inital
+              non-assignment  word  on  the line, or after a command delimiter
+              such as ;\b; or |\b|, which is usually command  name  completion.   If
+              multiple  options  are  supplied, the -\b-D\bD option takes precedence
+              over -\b-E\bE, and both take precedence over -\b-I\bI.  If any of -\b-D\bD, -\b-E\bE, or
+              -\b-I\bI  are  supplied,  any  other _\bn_\ba_\bm_\be arguments are ignored; these
+              completions only apply to the case specified by the option.
+
+              The process of applying  these  completion  specifications  when
+              word  completion  is attempted is described above under P\bPr\bro\bog\bgr\bra\bam\bm-\b-
               m\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn.
 
-              Other  options,  if specified, have the following meanings.  The
-              arguments to the -\b-G\bG, -\b-W\bW, and -\b-X\bX options (and, if necessary,  the
-              -\b-P\b and -\b-S\bS options) should be quoted to protect them from expan-
+              Other options, if specified, have the following  meanings.   The
+              arguments  to the -\b-G\bG, -\b-W\bW, and -\b-X\bX options (and, if necessary, the
+              -\b-P\band -\b-S\bS options) should be quoted to protect them from  expan-
               sion before the c\bco\bom\bmp\bpl\ble\bet\bte\be builtin is invoked.
               -\b-o\bo _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn
-                      The _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn controls several aspects  of  the  comp-
-                      spec's  behavior beyond the simple generation of comple-
+                      The  _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn  controls  several aspects of the comp-
+                      spec's behavior beyond the simple generation of  comple-
                       tions.  _\bc_\bo_\bm_\bp_\b-_\bo_\bp_\bt_\bi_\bo_\bn may be one of:
                       b\bba\bas\bsh\bhd\bde\bef\bfa\bau\bul\blt\bt
                               Perform the rest of the default b\bba\bas\bsh\bh completions
                               if the compspec generates no matches.
-                      d\bde\bef\bfa\bau\bul\blt\bt Use  readline's  default  filename completion if
+                      d\bde\bef\bfa\bau\bul\blt\bt Use readline's default  filename  completion  if
                               the compspec generates no matches.
                       d\bdi\bir\brn\bna\bam\bme\bes\bs
-                              Perform directory name completion if  the  comp-
+                              Perform  directory  name completion if the comp-
                               spec generates no matches.
                       f\bfi\bil\ble\ben\bna\bam\bme\bes\bs
-                              Tell  readline that the compspec generates file-
-                              names, so it can perform  any  filename-specific
-                              processing  (like  adding  a  slash to directory
-                              names, quoting special characters, or  suppress-
-                              ing  trailing spaces).  Intended to be used with
+                              Tell readline that the compspec generates  file-
+                              names,  so  it can perform any filename-specific
+                              processing (like adding  a  slash  to  directory
+                              names,  quoting special characters, or suppress-
+                              ing trailing spaces).  Intended to be used  with
                               shell functions.
-                      n\bno\boq\bqu\buo\bot\bte\be Tell readline not to quote the  completed  words
-                              if  they are filenames (quoting filenames is the
+                      n\bno\boq\bqu\buo\bot\bte\be Tell  readline  not to quote the completed words
+                              if they are filenames (quoting filenames is  the
                               default).
-                      n\bno\bos\bso\bor\brt\bt  Tell readline not to sort the list  of  possible
+                      n\bno\bos\bso\bor\brt\bt  Tell  readline  not to sort the list of possible
                               completions alphabetically.
-                      n\bno\bos\bsp\bpa\bac\bce\be Tell   readline  not  to  append  a  space  (the
-                              default) to words completed at the  end  of  the
+                      n\bno\bos\bsp\bpa\bac\bce\be Tell  readline  not  to  append  a  space   (the
+                              default)  to  words  completed at the end of the
                               line.
                       p\bpl\blu\bus\bsd\bdi\bir\brs\bs
-                              After  any  matches  defined by the compspec are
-                              generated,   directory   name   completion    is
-                              attempted  and  any  matches  are  added  to the
+                              After any matches defined by  the  compspec  are
+                              generated,    directory   name   completion   is
+                              attempted and  any  matches  are  added  to  the
                               results of the other actions.
               -\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn
-                      The _\ba_\bc_\bt_\bi_\bo_\bn may be one of the  following  to  generate  a
+                      The  _\ba_\bc_\bt_\bi_\bo_\bn  may  be  one of the following to generate a
                       list of possible completions:
                       a\bal\bli\bia\bas\bs   Alias names.  May also be specified as -\b-a\ba.
                       a\bar\brr\bra\bay\byv\bva\bar\br
                               Array variable names.
                       b\bbi\bin\bnd\bdi\bin\bng\bg R\bRe\bea\bad\bdl\bli\bin\bne\be key binding names.
-                      b\bbu\bui\bil\blt\bti\bin\bn Names  of  shell  builtin commands.  May also be
+                      b\bbu\bui\bil\blt\bti\bin\bn Names of shell builtin commands.   May  also  be
                               specified as -\b-b\bb.
                       c\bco\bom\bmm\bma\ban\bnd\bd Command names.  May also be specified as -\b-c\bc.
                       d\bdi\bir\bre\bec\bct\bto\bor\bry\by
@@ -282,7 +289,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       d\bdi\bis\bsa\bab\bbl\ble\bed\bd
                               Names of disabled shell builtins.
                       e\ben\bna\bab\bbl\ble\bed\bd Names of enabled shell builtins.
-                      e\bex\bxp\bpo\bor\brt\bt  Names of exported shell variables.  May also  be
+                      e\bex\bxp\bpo\bor\brt\bt  Names  of exported shell variables.  May also be
                               specified as -\b-e\be.
                       f\bfi\bil\ble\be    File names.  May also be specified as -\b-f\bf.
                       f\bfu\bun\bnc\bct\bti\bio\bon\bn
@@ -291,17 +298,17 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       h\bhe\bel\blp\bpt\bto\bop\bpi\bic\bc
                               Help topics as accepted by the h\bhe\bel\blp\bp builtin.
                       h\bho\bos\bst\btn\bna\bam\bme\be
-                              Hostnames,  as  taken from the file specified by
+                              Hostnames, as taken from the file  specified  by
                               the H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE shell variable.
-                      j\bjo\bob\bb     Job names, if job control is active.   May  also
+                      j\bjo\bob\bb     Job  names,  if job control is active.  May also
                               be specified as -\b-j\bj.
-                      k\bke\bey\byw\bwo\bor\brd\bd Shell  reserved words.  May also be specified as
+                      k\bke\bey\byw\bwo\bor\brd\bd Shell reserved words.  May also be specified  as
                               -\b-k\bk.
                       r\bru\bun\bnn\bni\bin\bng\bg Names of running jobs, if job control is active.
                       s\bse\ber\brv\bvi\bic\bce\be Service names.  May also be specified as -\b-s\bs.
-                      s\bse\bet\bto\bop\bpt\bt  Valid arguments for the -\b-o\bo  option  to  the  s\bse\bet\bt
+                      s\bse\bet\bto\bop\bpt\bt  Valid  arguments  for  the  -\b-o\bo option to the s\bse\bet\bt
                               builtin.
-                      s\bsh\bho\bop\bpt\bt   Shell  option  names  as  accepted  by the s\bsh\bho\bop\bpt\bt
+                      s\bsh\bho\bop\bpt\bt   Shell option names  as  accepted  by  the  s\bsh\bho\bop\bpt\bt
                               builtin.
                       s\bsi\big\bgn\bna\bal\bl  Signal names.
                       s\bst\bto\bop\bpp\bpe\bed\bd Names of stopped jobs, if job control is active.
@@ -310,188 +317,194 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Names of all shell variables.  May also be spec-
                               ified as -\b-v\bv.
               -\b-C\bC _\bc_\bo_\bm_\bm_\ba_\bn_\bd
-                      _\bc_\bo_\bm_\bm_\ba_\bn_\b is  executed in a subshell environment, and its
+                      _\bc_\bo_\bm_\bm_\ba_\bn_\bis executed in a subshell environment,  and  its
                       output is used as the possible completions.
               -\b-F\bF _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn
-                      The shell function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in  the  current
-                      shell  environment.   When the function is executed, the
-                      first argument ($\b$1\b1) is the name  of  the  command  whose
-                      arguments  are being completed, the second argument ($\b$2\b2)
+                      The  shell  function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in the current
+                      shell environment.  When the function is  executed,  the
+                      first  argument  ($\b$1\b1)  is  the name of the command whose
+                      arguments are being completed, the second argument  ($\b$2\b2)
                       is the word being completed, and the third argument ($\b$3\b3)
-                      is  the  word  preceding the word being completed on the
-                      current command line.  When it  finishes,  the  possible
-                      completions  are retrieved from the value of the C\bCO\bOM\bMP\bPR\bRE\bE-\b-
+                      is the word preceding the word being  completed  on  the
+                      current  command  line.   When it finishes, the possible
+                      completions are retrieved from the value of the  C\bCO\bOM\bMP\bPR\bRE\bE-\b-
                       P\bPL\bLY\bY array variable.
               -\b-G\bG _\bg_\bl_\bo_\bb_\bp_\ba_\bt
-                      The pathname expansion pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt  is  expanded  to
+                      The  pathname  expansion  pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt is expanded to
                       generate the possible completions.
               -\b-P\bP _\bp_\br_\be_\bf_\bi_\bx
-                      _\bp_\br_\be_\bf_\bi_\b is  added at the beginning of each possible com-
+                      _\bp_\br_\be_\bf_\bi_\bis added at the beginning of each  possible  com-
                       pletion after all other options have been applied.
               -\b-S\bS _\bs_\bu_\bf_\bf_\bi_\bx
                       _\bs_\bu_\bf_\bf_\bi_\bx is appended to each possible completion after all
                       other options have been applied.
               -\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt
-                      The  _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt  is  split using the characters in the I\bIF\bFS\bS
-                      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  com-
-                      pleted.
+                      The _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt is split using the characters  in  the  I\bIF\bFS\bS
+                      special  variable as delimiters, and each resultant word
+                      is expanded.  Shell quoting is honored within  _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt,
+                      in order to provide a mechanism for the words to contain
+                      shell metacharacters or characters in the value of  I\bIF\bFS\bS.
+                      The  possible  completions are the members of the resul-
+                      tant list which match the word being completed.
               -\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt
-                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\b is  a pattern as used for pathname expansion.
+                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bis a pattern as used for  pathname  expansion.
                       It is applied to the list of possible completions gener-
-                      ated  by  the  preceding options and arguments, and each
-                      completion matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the  list.
-                      A  leading  !\b!  in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the pattern; in this
+                      ated by the preceding options and  arguments,  and  each
+                      completion  matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the list.
+                      A leading !\b! in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the  pattern;  in  this
                       case, any completion not matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed.
 
-              The return value is true unless an invalid option  is  supplied,
-              an  option  other than -\b-p\bp or -\b-r\br is supplied without a _\bn_\ba_\bm_\be argu-
-              ment, an attempt is made to remove  a  completion  specification
+              The  return  value is true unless an invalid option is supplied,
+              an option other than -\b-p\bp or -\b-r\br is supplied without a  _\bn_\ba_\bm_\b argu-
+              ment,  an  attempt  is made to remove a completion specification
               for a _\bn_\ba_\bm_\be for which no specification exists, or an error occurs
               adding a completion specification.
 
-       c\bco\bom\bmp\bpo\bop\bpt\bt [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bE] [+\b+o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be]
+       c\bco\bom\bmp\bpo\bop\bpt\bt [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [-\b-D\bDE\bEI\bI] [+\b+o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be]
               Modify  completion  options  for  each  _\bn_\ba_\bm_\be  according  to  the
-              _\bo_\bp_\bt_\bi_\bo_\bns,  or  for the currently-executing completion if no _\bn_\ba_\bm_\bes
-              are supplied.  If no _\bo_\bp_\bt_\bi_\bo_\bns are given, display  the  completion
-              options  for  each _\bn_\ba_\bm_\be or the current completion.  The possible
-              values of _\bo_\bp_\bt_\bi_\bo_\bn  are  those  valid  for  the  c\bco\bom\bmp\bpl\ble\bet\bte\b builtin
-              described  above.   The  -\b-D\bD  option indicates that the remaining
+              _\bo_\bp_\bt_\bi_\bo_\bns, or for the currently-executing completion if  no  _\bn_\ba_\bm_\bes
+              are  supplied.   If no _\bo_\bp_\bt_\bi_\bo_\bns are given, display the completion
+              options for each _\bn_\ba_\bm_\be or the current completion.   The  possible
+              values  of  _\bo_\bp_\bt_\bi_\bo_\bn  are  those  valid  for  the c\bco\bom\bmp\bpl\ble\bet\bte\be builtin
+              described above.  The -\b-D\bD option indicates  that  other  supplied
               options should apply to the ``default'' command completion; that
-              is,  completion  attempted  on a command for which no completion
-              has previously been defined.  The -\b-E\bE option indicates  that  the
-              remaining  options should apply to ``empty'' command completion;
-              that is, completion attempted on a blank line.
-
-              The return value is true unless an invalid option  is  supplied,
+              is, completion attempted on a command for  which  no  completion
+              has previously been defined.  The -\b-E\bE option indicates that other
+              supplied options should apply to ``empty''  command  completion;
+              that  is,  completion  attempted on a blank line.  The -\b-I\bI option
+              indicates that other supplied options should apply to completion
+              on  the  inital non-assignment word on the line, or after a com-
+              mand delimiter such as ;\b; or |\b|, which  is  usually  command  name
+              completion.
+
+              The  return  value is true unless an invalid option is supplied,
               an attempt is made to modify the options for a _\bn_\ba_\bm_\be for which no
               completion specification exists, or an output error occurs.
 
        c\bco\bon\bnt\bti\bin\bnu\bue\be [_\bn]
               Resume the next iteration of the enclosing f\bfo\bor\br, w\bwh\bhi\bil\ble\be, u\bun\bnt\bti\bil\bl, or
-              s\bse\bel\ble\bec\bct\b loop.   If  _\bn  is specified, resume at the _\bnth enclosing
-              loop.  _\bn must be >= 1.  If _\bn  is  greater  than  the  number  of
-              enclosing  loops,  the  last  enclosing  loop (the ``top-level''
+              s\bse\bel\ble\bec\bct\bloop.  If _\bn is specified, resume  at  the  _\bnth  enclosing
+              loop.   _\bn  must  be  >=  1.   If _\bn is greater than the number of
+              enclosing loops, the  last  enclosing  loop  (the  ``top-level''
               loop) is resumed.  The return value is 0 unless _\bn is not greater
               than or equal to 1.
 
        d\bde\bec\bcl\bla\bar\bre\be [-\b-a\baA\bAf\bfF\bFg\bgi\bil\bln\bnr\brt\btu\bux\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
        t\bty\byp\bpe\bes\bse\bet\bt [-\b-a\baA\bAf\bfF\bFg\bgi\bil\bln\bnr\brt\btu\bux\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
-              Declare  variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes are
-              given then display the values of variables.  The -\b-p\bp option  will
+              Declare variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes  are
+              given  then display the values of variables.  The -\b-p\bp option will
               display the attributes and values of each _\bn_\ba_\bm_\be.  When -\b-p\bp is used
-              with _\bn_\ba_\bm_\be arguments, additional options, other than -\b-f\bf  and  -\b-F\bF,
-              are  ignored.   When  -\b-p\bp  is supplied without _\bn_\ba_\bm_\be arguments, it
-              will display the attributes and values of all  variables  having
+              with  _\bn_\ba_\bm_\be  arguments, additional options, other than -\b-f\bf and -\b-F\bF,
+              are ignored.  When -\b-p\bp is supplied  without  _\bn_\ba_\bm_\be  arguments,  it
+              will  display  the attributes and values of all variables having
               the attributes specified by the additional options.  If no other
-              options  are  supplied  with  -\b-p\bp,  d\bde\bec\bcl\bla\bar\bre\be  will   display   the
-              attributes  and  values  of  all shell variables.  The -\b-f\bf option
-              will restrict the display to shell  functions.   The  -\b-F\b option
-              inhibits  the display of function definitions; only the function
-              name and attributes are printed.  If the e\bex\bxt\btd\bde\beb\bbu\bug\bg  shell  option
-              is  enabled  using  s\bsh\bho\bop\bpt\bt,  the source file name and line number
+              options   are   supplied  with  -\b-p\bp,  d\bde\bec\bcl\bla\bar\bre\be  will  display  the
+              attributes and values of all shell  variables.   The  -\b-f\b option
+              will  restrict  the  display  to shell functions.  The -\b-F\bF option
+              inhibits the display of function definitions; only the  function
+              name  and  attributes are printed.  If the e\bex\bxt\btd\bde\beb\bbu\bug\bg shell option
+              is enabled using s\bsh\bho\bop\bpt\bt, the source file  name  and  line  number
               where each _\bn_\ba_\bm_\be is defined are displayed as well.  The -\b-F\bF option
-              implies  -\b-f\bf.   The  -\b-g\bg  option forces variables to be created or
+              implies -\b-f\bf.  The -\b-g\bg option forces variables  to  be  created  or
               modified at the global scope, even when d\bde\bec\bcl\bla\bar\bre\be is executed in a
-              shell  function.  It is ignored in all other cases.  The follow-
+              shell function.  It is ignored in all other cases.  The  follow-
               ing options can be used to restrict output to variables with the
               specified attribute or to give variables attributes:
-              -\b-a\ba     Each  _\bn_\ba_\bm_\be  is  an  indexed  array  variable  (see A\bAr\brr\bra\bay\bys\bs
+              -\b-a\ba     Each _\bn_\ba_\bm_\be  is  an  indexed  array  variable  (see  A\bAr\brr\bra\bay\bys\bs
                      above).
-              -\b-A\bA     Each _\bn_\ba_\bm_\be is an associative array  variable  (see  A\bAr\brr\bra\bay\bys\bs
+              -\b-A\bA     Each  _\bn_\ba_\bm_\be  is  an associative array variable (see A\bAr\brr\bra\bay\bys\bs
                      above).
               -\b-f\bf     Use function names only.
               -\b-i\bi     The variable is treated as an integer; arithmetic evalua-
-                     tion (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN above) is performed  when
+                     tion  (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN above) is performed when
                      the variable is assigned a value.
-              -\b-l\bl     When  the  variable  is  assigned a value, all upper-case
-                     characters are converted to lower-case.   The  upper-case
+              -\b-l\bl     When the variable is assigned  a  value,  all  upper-case
+                     characters  are  converted to lower-case.  The upper-case
                      attribute is disabled.
-              -\b-n\bn     Give  each  _\bn_\ba_\bm_\be  the _\bn_\ba_\bm_\be_\br_\be_\bf attribute, making it a name
-                     reference to another variable.  That  other  variable  is
-                     defined  by  the  value of _\bn_\ba_\bm_\be.  All references, assign-
-                     ments, and attribute modifications to _\bn_\ba_\bm_\be, except  those
-                     using  or changing the -\b-n\bn attribute itself, are performed
-                     on the variable referenced by _\bn_\ba_\bm_\be's value.  The  nameref
+              -\b-n\bn     Give each _\bn_\ba_\bm_\be the _\bn_\ba_\bm_\be_\br_\be_\bf attribute, making  it  a  name
+                     reference  to  another  variable.  That other variable is
+                     defined by the value of _\bn_\ba_\bm_\be.   All  references,  assign-
+                     ments,  and attribute modifications to _\bn_\ba_\bm_\be, except those
+                     using or changing the -\b-n\bn attribute itself, are  performed
+                     on  the variable referenced by _\bn_\ba_\bm_\be's value.  The nameref
                      attribute cannot be applied to array variables.
               -\b-r\br     Make _\bn_\ba_\bm_\bes readonly.  These names cannot then be assigned
                      values by subsequent assignment statements or unset.
-              -\b-t\bt     Give each _\bn_\ba_\bm_\be the  _\bt_\br_\ba_\bc_\be  attribute.   Traced  functions
-                     inherit  the  D\bDE\bEB\bBU\bUG\bG  and  R\bRE\bET\bTU\bUR\bRN\bN  traps  from the calling
-                     shell.  The trace attribute has no  special  meaning  for
+              -\b-t\bt     Give  each  _\bn_\ba_\bm_\be  the  _\bt_\br_\ba_\bc_\be attribute.  Traced functions
+                     inherit the D\bDE\bEB\bBU\bUG\bG  and  R\bRE\bET\bTU\bUR\bRN\bN  traps  from  the  calling
+                     shell.   The  trace  attribute has no special meaning for
                      variables.
-              -\b-u\bu     When  the  variable  is  assigned a value, all lower-case
-                     characters are converted to upper-case.   The  lower-case
+              -\b-u\bu     When the variable is assigned  a  value,  all  lower-case
+                     characters  are  converted to upper-case.  The lower-case
                      attribute is disabled.
-              -\b-x\bx     Mark  _\bn_\ba_\bm_\bes  for  export  to  subsequent commands via the
+              -\b-x\bx     Mark _\bn_\ba_\bm_\bes for export  to  subsequent  commands  via  the
                      environment.
 
-              Using `+' instead of `-' turns off the attribute  instead,  with
-              the exceptions that +\b+a\bmay not be used to destroy an array vari-
-              able and +\b+r\br will not remove the readonly attribute.   When  used
-              in a function, d\bde\bec\bcl\bla\bar\bre\be and t\bty\byp\bpe\bes\bse\bet\bt make each _\bn_\ba_\bm_\be local, as with
-              the l\blo\boc\bca\bal\bl command, unless the -\b-g\bg option is supplied.  If a vari-
-              able  name  is  followed by =_\bv_\ba_\bl_\bu_\be, the value of the variable is
-              set to _\bv_\ba_\bl_\bu_\be.  When using -\b-a\ba or -\b-A\bA and the  compound  assignment
-              syntax  to  create array variables, additional attributes do not
-              take effect until subsequent assignments.  The return value is 0
-              unless  an  invalid option is encountered, an attempt is made to
-              define a function using ``-f foo=bar'', an attempt  is  made  to
-              assign  a  value  to  a readonly variable, an attempt is made to
-              assign a value to an array variable without using  the  compound
-              assignment  syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not a
-              valid shell variable name, an attempt is made to turn off  read-
-              only  status for a readonly variable, an attempt is made to turn
+              Using  `+'  instead of `-' turns off the attribute instead, with
+              the exceptions that +\b+a\band +\b+A\bA may not be used to  destroy  array
+              variables  and  +\b+r\br will not remove the readonly attribute.  When
+              used in a function, d\bde\bec\bcl\bla\bar\bre\be and t\bty\byp\bpe\bes\bse\bet\bt make each _\bn_\ba_\bm_\be local, as
+              with  the l\blo\boc\bca\bal\bl command, unless the -\b-g\bg option is supplied.  If a
+              variable name is followed by =_\bv_\ba_\bl_\bu_\be, the value of  the  variable
+              is  set  to _\bv_\ba_\bl_\bu_\be.  When using -\b-a\ba or -\b-A\bA and the compound assign-
+              ment syntax to create array variables, additional attributes  do
+              not  take effect until subsequent assignments.  The return value
+              is 0 unless an invalid option is encountered, an attempt is made
+              to define a function using ``-f foo=bar'', an attempt is made to
+              assign a value to a readonly variable, an  attempt  is  made  to
+              assign  a  value to an array variable without using the compound
+              assignment syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not  a
+              valid  shell variable name, an attempt is made to turn off read-
+              only 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 -\b-f\bf.
 
        d\bdi\bir\brs\bs [\b[-\b-c\bcl\blp\bpv\bv]\b] [\b[+\b+_\bn]\b] [\b[-\b-_\bn]\b]
-              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  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd  command  removes
-              entries  from  the  list.   The  current directory is always the
+              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  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd command removes
+              entries from the list.  The  current  directory  is  always  the
               first directory in the stack.
               -\b-c\bc     Clears  the  directory  stack  by  deleting  all  of  the
                      entries.
-              -\b-l\bl     Produces  a  listing  using  full  pathnames; the default
+              -\b-l\bl     Produces a listing  using  full  pathnames;  the  default
                      listing format uses a tilde to denote the home directory.
               -\b-p\bp     Print the directory stack with one entry per line.
-              -\b-v\bv     Print the directory stack with one entry per  line,  pre-
+              -\b-v\bv     Print  the  directory stack with one entry per line, pre-
                      fixing each entry with its index in the stack.
               +\b+_\bn     Displays the _\bnth entry counting from the left of the list
                      shown by d\bdi\bir\brs\bs when invoked without options, starting with
                      zero.
-              -\b-_\bn     Displays  the  _\bnth  entry  counting from the right of the
+              -\b-_\bn     Displays the _\bnth entry counting from  the  right  of  the
                      list shown by d\bdi\bir\brs\bs when invoked without options, starting
                      with zero.
 
-              The  return value is 0 unless an invalid option is supplied or _\bn
+              The return value is 0 unless an invalid option is supplied or  _\bn
               indexes beyond the end of the directory stack.
 
        d\bdi\bis\bso\bow\bwn\bn [-\b-a\bar\br] [-\b-h\bh] [_\bj_\bo_\bb_\bs_\bp_\be_\bc ... | _\bp_\bi_\bd ... ]
-              Without options, remove each _\bj_\bo_\bb_\bs_\bp_\be_\bc from the  table  of  active
-              jobs.   If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, and neither the -\b-a\ba nor the -\b-r\br
-              option is supplied, the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb is used.  If the  -\b-h\b option
-              is  given,  each  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is not removed from the table, but is
-              marked so that S\bSI\bIG\bGH\bHU\bUP\bP is not  sent  to  the  job  if  the  shell
-              receives  a  S\bSI\bIG\bGH\bHU\bUP\bP.   If  no _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied, the -\b-a\ba option
-              means to remove or mark all jobs; the -\b-r\br option without  a  _\bj_\bo_\bb_\b-
-              _\bs_\bp_\be_\b argument  restricts operation to running jobs.  The return
+              Without  options,  remove  each _\bj_\bo_\bb_\bs_\bp_\be_\bc from the table of active
+              jobs.  If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, and neither the -\b-a\ba nor the  -\b-r\br
+              option  is  supplied, the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb is used.  If the -\b-h\bh option
+              is given, each _\bj_\bo_\bb_\bs_\bp_\be_\bc is not removed from  the  table,  but  is
+              marked  so  that  S\bSI\bIG\bGH\bHU\bUP\bP  is  not  sent  to the job if the shell
+              receives a S\bSI\bIG\bGH\bHU\bUP\bP.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is  supplied,  the  -\b-a\b option
+              means  to  remove or mark all jobs; the -\b-r\br option without a _\bj_\bo_\bb_\b-
+              _\bs_\bp_\be_\bargument restricts operation to running jobs.   The  return
               value is 0 unless a _\bj_\bo_\bb_\bs_\bp_\be_\bc does not specify a valid job.
 
        e\bec\bch\bho\bo [-\b-n\bne\beE\bE] [_\ba_\br_\bg ...]
-              Output the _\ba_\br_\bgs, separated by spaces,  followed  by  a  newline.
-              The  return  status  is 0 unless a write error occurs.  If -\b-n\bn is
+              Output  the  _\ba_\br_\bgs,  separated  by spaces, followed by a newline.
+              The return status is 0 unless a write error occurs.   If  -\b-n\b is
               specified, the trailing newline is suppressed.  If the -\b-e\be option
-              is  given,  interpretation  of  the  following backslash-escaped
-              characters is enabled.  The -\b-E\bE option disables  the  interpreta-
-              tion  of these escape characters, even on systems where they are
-              interpreted by default.  The x\bxp\bpg\bg_\b_e\bec\bch\bho\bo shell option may  be  used
-              to  dynamically  determine  whether  or  not  e\bec\bch\bho\bo expands these
-              escape characters by default.  e\bec\bch\bho\bo does  not  interpret  -\b--\b to
-              mean  the  end of options.  e\bec\bch\bho\bo interprets the following escape
+              is given,  interpretation  of  the  following  backslash-escaped
+              characters  is  enabled.  The -\b-E\bE option disables the interpreta-
+              tion of these escape characters, even on systems where they  are
+              interpreted  by  default.  The x\bxp\bpg\bg_\b_e\bec\bch\bho\bo shell option may be used
+              to dynamically determine  whether  or  not  e\bec\bch\bho\bo  expands  these
+              escape  characters  by  default.   e\bec\bch\bho\bo does not interpret -\b--\b- to
+              mean the end of options.  e\bec\bch\bho\bo interprets the  following  escape
               sequences:
               \\b\a\ba     alert (bell)
               \\b\b\bb     backspace
@@ -504,57 +517,58 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               \\b\t\bt     horizontal tab
               \\b\v\bv     vertical tab
               \\b\\\b\     backslash
-              \\b\0\b0_\bn_\bn_\bn  the eight-bit character whose value is  the  octal  value
+              \\b\0\b0_\bn_\bn_\bn  the  eight-bit  character  whose value is the octal value
                      _\bn_\bn_\bn (zero to three octal digits)
-              \\b\x\bx_\bH_\bH   the  eight-bit  character  whose value is the hexadecimal
+              \\b\x\bx_\bH_\bH   the eight-bit character whose value  is  the  hexadecimal
                      value _\bH_\bH (one or two hex digits)
-              \\b\u\bu_\bH_\bH_\bH_\bH the Unicode (ISO/IEC 10646) character whose value is  the
+              \\b\u\bu_\bH_\bH_\bH_\bH the  Unicode (ISO/IEC 10646) character whose value is the
                      hexadecimal value _\bH_\bH_\bH_\bH (one to four hex digits)
               \\b\U\bU_\bH_\bH_\bH_\bH_\bH_\bH_\bH_\bH
-                     the  Unicode (ISO/IEC 10646) character whose value is the
+                     the Unicode (ISO/IEC 10646) character whose value is  the
                      hexadecimal value _\bH_\bH_\bH_\bH_\bH_\bH_\bH_\bH (one to eight hex digits)
 
        e\ben\bna\bab\bbl\ble\be [-\b-a\ba] [-\b-d\bdn\bnp\bps\bs] [-\b-f\bf _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [_\bn_\ba_\bm_\be ...]
-              Enable and disable builtin shell commands.  Disabling a  builtin
+              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 -\b-n\bn is used, each  _\bn_\ba_\bm_\be  is  disabled;  otherwise,  _\bn_\ba_\bm_\be_\b are
+              to  be  executed without specifying a full pathname, even though
+              the shell normally searches for builtins before  disk  commands.
+              If  -\b-n\bn  is  used,  each  _\bn_\ba_\bm_\be  is disabled; otherwise, _\bn_\ba_\bm_\be_\bs are
               enabled.  For example, to use the t\bte\bes\bst\bt binary found via the P\bPA\bAT\bTH\bH
-              instead of the shell builtin version, run  ``enable  -n  test''.
-              The  -\b-f\bf  option  means to load the new builtin command _\bn_\ba_\bm_\be from
+              instead  of  the  shell builtin version, run ``enable -n test''.
+              The -\b-f\bf option means to load the new builtin  command  _\bn_\ba_\bm_\b from
               shared object _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, on systems that support dynamic loading.
-              The  -\b-d\bd  option will delete a builtin previously loaded with -\b-f\bf.
+              The -\b-d\bd option will delete a builtin previously loaded  with  -\b-f\bf.
               If no _\bn_\ba_\bm_\be arguments are given, or if the -\b-p\bp option is supplied,
               a list of shell builtins is printed.  With no other option argu-
-              ments, the list consists of all enabled shell builtins.   If  -\b-n\bn
-              is  supplied, only disabled builtins are printed.  If -\b-a\ba is sup-
-              plied, the list printed includes all builtins, with  an  indica-
-              tion  of whether or not each is enabled.  If -\b-s\bs is supplied, the
-              output is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The  return
-              value  is  0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there is an
+              ments,  the  list consists of all enabled shell builtins.  If -\b-n\bn
+              is supplied, only disabled builtins are printed.  If -\b-a\ba is  sup-
+              plied,  the  list printed includes all builtins, with an indica-
+              tion of whether or not each is enabled.  If -\b-s\bs is supplied,  the
+              output  is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The return
+              value is 0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there  is  an
               error loading a new builtin from a shared object.
 
        e\bev\bva\bal\bl [_\ba_\br_\bg ...]
-              The _\ba_\br_\bgs are read and concatenated together into a  single  com-
-              mand.   This command is then read and executed by the shell, and
-              its exit status is returned as the value of e\bev\bva\bal\bl.  If there  are
+              The  _\ba_\br_\bgs  are read and concatenated together into a single com-
+              mand.  This command is then read and executed by the shell,  and
+              its  exit status is returned as the value of e\bev\bva\bal\bl.  If there are
               no _\ba_\br_\bg_\bs, or only null arguments, e\bev\bva\bal\bl returns 0.
 
        e\bex\bxe\bec\bc [-\b-c\bcl\bl] [-\b-a\ba _\bn_\ba_\bm_\be] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]]
-              If  _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new process
-              is created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   If
+              If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new  process
+              is  created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  If
               the -\b-l\bl option is supplied, the shell places a dash at the begin-
-              ning of the zeroth argument passed to  _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   This  is  what
+              ning  of  the  zeroth  argument passed to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  This is what
               _\bl_\bo_\bg_\bi_\bn(1) does.  The -\b-c\bc option causes _\bc_\bo_\bm_\bm_\ba_\bn_\bd to be executed with
-              an empty environment.  If -\b-a\ba is supplied, the shell passes  _\bn_\ba_\bm_\be
+              an  empty environment.  If -\b-a\ba is supplied, the shell passes _\bn_\ba_\bm_\be
               as the zeroth argument to the executed command.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd can-
-              not be executed for some reason, a non-interactive shell  exits,
-              unless  the  e\bex\bxe\bec\bcf\bfa\bai\bil\bl shell option is enabled.  In that case, it
-              returns failure.  An interactive shell returns  failure  if  the
-              file cannot be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any redi-
-              rections take effect in the current shell, and the return status
-              is 0.  If there is a redirection error, the return status is 1.
+              not  be executed for some reason, a non-interactive shell exits,
+              unless the e\bex\bxe\bec\bcf\bfa\bai\bil\bl shell option is enabled.  In that  case,  it
+              returns  failure.   An  interactive shell returns failure if the
+              file cannot be executed.  A subshell  exits  unconditionally  if
+              e\bex\bxe\bec\bc  fails.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd 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.
 
        e\bex\bxi\bit\bt [_\bn]
               Cause  the  shell  to exit with a status of _\bn.  If _\bn is omitted,
@@ -582,9 +596,9 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               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 _\bl_\ba_\bs_\bt is not
-              specified it is set to the current command for listing (so  that
+              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 other-
-              wise.  If _\bf_\bi_\br_\bs_\bt is not specified it is set to the previous  com-
+              wise.  If _\bf_\bi_\br_\bs_\bt is not specified, it is set to the previous com-
               mand for editing and -16 for listing.
 
               The  -\b-n\bn option suppresses the command numbers when listing.  The
@@ -597,7 +611,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               plete, the edited commands are echoed and executed.
 
               In the second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after  each  instance
-              of  _\bp_\ba_\bt  is  replaced by _\br_\be_\bp.  _\bC_\bo_\bm_\bm_\ba_\bn_\bd is intepreted the same as
+              of  _\bp_\ba_\bt  is replaced by _\br_\be_\bp.  _\bC_\bo_\bm_\bm_\ba_\bn_\bd is interpreted the same as
               _\bf_\bi_\br_\bs_\bt above.  A useful alias to use with this is ``r="fc  -s"'',
               so  that  typing  ``r  cc'' runs the last command beginning with
               ``cc'' and typing ``r'' re-executes the last command.
@@ -698,6 +712,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        h\bhi\bis\bst\bto\bor\bry\by [\b[_\bn]\b]
        h\bhi\bis\bst\bto\bor\bry\by -\b-c\bc
        h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
+       h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd _\bs_\bt_\ba_\br_\bt-_\be_\bn_\bd
        h\bhi\bis\bst\bto\bor\bry\by -\b-a\ban\bnr\brw\bw [_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
        h\bhi\bis\bst\bto\bor\bry\by -\b-p\bp _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
        h\bhi\bis\bst\bto\bor\bry\by -\b-s\bs _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
@@ -713,7 +728,15 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               following meanings:
               -\b-c\bc     Clear the history list by deleting all the entries.
               -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
-                     Delete the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.
+                     Delete  the  history entry at position _\bo_\bf_\bf_\bs_\be_\bt.  If _\bo_\bf_\bf_\bs_\be_\bt
+                     is negative, it is interpreted as relative to one greater
+                     than the last history position, so negative indices count
+                     back from the end of the history,  and  an  index  of  -1
+                     refers to the current h\bhi\bis\bst\bto\bor\bry\by -\b-d\bd command.
+              -\b-d\bd _\bs_\bt_\ba_\br_\bt-_\be_\bn_\bd
+                     Delete  the  history  entries between positions _\bs_\bt_\ba_\br_\bt and
+                     _\be_\bn_\bd, inclusive.  Positive and negative values  for  _\bs_\bt_\ba_\br_\bt
+                     and _\be_\bn_\bd are interpreted as described above.
               -\b-a\ba     Append  the  ``new''  history  lines to the history file.
                      These are history lines entered since  the  beginning  of
                      the current b\bba\bas\bsh\bh session, but not already appended to the
@@ -812,7 +835,9 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               plied.  The variable M\bMA\bAP\bPF\bFI\bIL\bLE\bE is the default _\ba_\br_\br_\ba_\by.  Options,  if
               supplied, have the following meanings:
               -\b-d\bd     The  first  character  of _\bd_\be_\bl_\bi_\bm is used to terminate each
-                     input line, rather than newline.
+                     input line, rather than newline.  If _\bd_\be_\bl_\bi_\bm is  the  empty
+                     string, m\bma\bap\bpf\bfi\bil\ble\be will terminate a line when it reads a NUL
+                     character.
               -\b-n\bn     Copy at most _\bc_\bo_\bu_\bn_\bt lines.  If _\bc_\bo_\bu_\bn_\bt is 0, all  lines  are
                      copied.
               -\b-O\bO     Begin  assigning  to  _\ba_\br_\br_\ba_\by at index _\bo_\br_\bi_\bg_\bi_\bn.  The default
@@ -960,27 +985,30 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      ignored.
               -\b-d\bd _\bd_\be_\bl_\bi_\bm
                      The  first  character  of  _\bd_\be_\bl_\bi_\bm is used to terminate the
-                     input line, rather than newline.
+                     input line, rather than newline.  If _\bd_\be_\bl_\bi_\bm is  the  empty
+                     string,  r\bre\bea\bad\bd  will  terminate a line when it reads a NUL
+                     character.
               -\b-e\be     If the standard input is coming from a terminal, r\bre\bea\bad\bdl\bli\bin\bne\be
                      (see  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE  above) is used to obtain the line.  Read-
                      line uses the current (or default, if  line  editing  was
-                     not previously active) editing settings.
+                     not  previously  active) editing settings, but uses Read-
+                     line's default filename completion.
               -\b-i\bi _\bt_\be_\bx_\bt
-                     If  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used  to  read the line, _\bt_\be_\bx_\bt is
+                     If r\bre\bea\bad\bdl\bli\bin\bne\be is being used  to  read  the  line,  _\bt_\be_\bx_\b is
                      placed into the editing buffer before editing begins.
               -\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs
-                     r\bre\bea\bad\breturns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather  than
+                     r\bre\bea\bad\b returns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather than
                      waiting for a complete line of input, but honors a delim-
-                     iter if fewer than _\bn_\bc_\bh_\ba_\br_\bs characters are read before  the
+                     iter  if fewer than _\bn_\bc_\bh_\ba_\br_\bs characters are read before the
                      delimiter.
               -\b-N\bN _\bn_\bc_\bh_\ba_\br_\bs
-                     r\bre\bea\bad\b returns  after  reading  exactly  _\bn_\bc_\bh_\ba_\br_\bs characters
-                     rather than waiting for a complete line of input,  unless
-                     EOF  is encountered or r\bre\bea\bad\bd times out.  Delimiter charac-
-                     ters encountered in the input are not  treated  specially
-                     and  do  not cause r\bre\bea\bad\bd to return until _\bn_\bc_\bh_\ba_\br_\bs characters
-                     are read.  The result is not split on the  characters  in
-                     I\bIF\bFS\bS;  the intent is that the variable is assigned exactly
+                     r\bre\bea\bad\breturns  after  reading  exactly  _\bn_\bc_\bh_\ba_\br_\b characters
+                     rather  than waiting for a complete line of input, unless
+                     EOF is encountered or r\bre\bea\bad\bd times out.  Delimiter  charac-
+                     ters  encountered  in the input are not treated specially
+                     and do not cause r\bre\bea\bad\bd to return until  _\bn_\bc_\bh_\ba_\br_\b characters
+                     are  read.   The result is not split on the characters in
+                     I\bIF\bFS\bS; the intent is that the variable is assigned  exactly
                      the characters read (with the exception of backslash; see
                      the -\b-r\br option below).
               -\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt
@@ -988,131 +1016,131 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      line, before attempting to read any input.  The prompt is
                      displayed only if input is coming from a terminal.
               -\b-r\br     Backslash does not act as an escape character.  The back-
-                     slash is considered to be part of the line.  In  particu-
-                     lar,  a  backslash-newline pair may not be used as a line
-                     continuation.
+                     slash  is considered to be part of the line.  In particu-
+                     lar, a backslash-newline pair may not then be used  as  a
+                     line continuation.
               -\b-s\bs     Silent mode.  If input is coming from a terminal, charac-
                      ters are not echoed.
               -\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt
-                     Cause  r\bre\bea\bad\bd  to time out and return failure if a complete
-                     line of input (or a specified number  of  characters)  is
-                     not  read within _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds.  _\bt_\bi_\bm_\be_\bo_\bu_\bt may be a deci-
-                     mal number with a fractional portion following the  deci-
-                     mal  point.   This  option  is  only effective if r\bre\bea\bad\bd is
-                     reading input from a terminal,  pipe,  or  other  special
-                     file;  it  has no effect when reading from regular files.
+                     Cause r\bre\bea\bad\bd to time out and return failure if  a  complete
+                     line  of  input  (or a specified number of characters) is
+                     not read within _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds.  _\bt_\bi_\bm_\be_\bo_\bu_\bt may be a  deci-
+                     mal  number with a fractional portion following the deci-
+                     mal point.  This option is  only  effective  if  r\bre\bea\bad\b is
+                     reading  input  from  a  terminal, pipe, or other special
+                     file; it has no effect when reading from  regular  files.
                      If r\bre\bea\bad\bd times out, r\bre\bea\bad\bd saves any partial input read into
-                     the  specified  variable  _\bn_\ba_\bm_\be.   If  _\bt_\bi_\bm_\be_\bo_\bu_\bt  is 0, r\bre\bea\bad\bd
-                     returns immediately, without trying  to  read  any  data.
-                     The  exit status is 0 if input is available on the speci-
-                     fied file descriptor, non-zero otherwise.  The exit  sta-
+                     the specified variable  _\bn_\ba_\bm_\be.   If  _\bt_\bi_\bm_\be_\bo_\bu_\bt  is  0,  r\bre\bea\bad\bd
+                     returns  immediately,  without  trying  to read any data.
+                     The exit status is 0 if input is available on the  speci-
+                     fied  file descriptor, non-zero otherwise.  The exit sta-
                      tus is greater than 128 if the timeout is exceeded.
               -\b-u\bu _\bf_\bd  Read input from file descriptor _\bf_\bd.
 
               If no _\bn_\ba_\bm_\be_\bs are supplied, the line read is assigned to the vari-
-              able R\bRE\bEP\bPL\bLY\bY.  The exit status  is  zero,  unless  end-of-file  is
+              able  R\bRE\bEP\bPL\bLY\bY.   The  exit  status  is zero, unless end-of-file is
               encountered, r\bre\bea\bad\bd times out (in which case the status is greater
-              than 128), a variable assignment error (such as assigning  to  a
+              than  128),  a variable assignment error (such as assigning to a
               readonly variable) occurs, or an invalid file descriptor is sup-
               plied as the argument to -\b-u\bu.
 
        r\bre\bea\bad\bdo\bon\bnl\bly\by [-\b-a\baA\bAf\bf] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd] ...]
-              The given _\bn_\ba_\bm_\be_\bs are marked readonly; the values of  these  _\bn_\ba_\bm_\be_\bs
-              may  not  be changed by subsequent assignment.  If the -\b-f\bf option
-              is supplied, the functions corresponding to  the  _\bn_\ba_\bm_\be_\bs  are  so
-              marked.   The  -\b-a\ba  option  restricts  the  variables  to indexed
-              arrays; the -\b-A\bA option restricts  the  variables  to  associative
-              arrays.   If both options are supplied, -\b-A\bA takes precedence.  If
-              no _\bn_\ba_\bm_\be arguments are given, or if the -\b-p\bp option is supplied,  a
+              The  given  _\bn_\ba_\bm_\be_\bs are marked readonly; the values of these _\bn_\ba_\bm_\be_\bs
+              may not be changed by subsequent assignment.  If the  -\b-f\b option
+              is  supplied,  the  functions  corresponding to the _\bn_\ba_\bm_\be_\bs are so
+              marked.  The  -\b-a\ba  option  restricts  the  variables  to  indexed
+              arrays;  the  -\b-A\bA  option  restricts the variables to associative
+              arrays.  If both options are supplied, -\b-A\bA takes precedence.   If
+              no  _\bn_\ba_\bm_\be arguments are given, or if the -\b-p\bp option is supplied, a
               list of all readonly names is printed.  The other options may be
-              used to restrict the output to a subset of the set  of  readonly
-              names.   The -\b-p\bp option causes output to be displayed in a format
-              that may be reused as input.  If a variable name is followed  by
-              =_\bw_\bo_\br_\bd,  the  value  of  the variable is set to _\bw_\bo_\br_\bd.  The return
-              status is 0 unless an invalid option is encountered, one of  the
+              used  to  restrict the output to a subset of the set of readonly
+              names.  The -\b-p\bp option causes output to be displayed in a  format
+              that  may be reused as input.  If a variable name is followed by
+              =_\bw_\bo_\br_\bd, the value of the variable is set  to  _\bw_\bo_\br_\bd.   The  return
+              status  is 0 unless an invalid option is encountered, one of the
               _\bn_\ba_\bm_\be_\bs is not a valid shell variable name, or -\b-f\bf is supplied with
               a _\bn_\ba_\bm_\be that is not a function.
 
        r\bre\bet\btu\bur\brn\bn [_\bn]
-              Causes a function to stop executing and return the value  speci-
-              fied  by _\bn to its caller.  If _\bn is omitted, the return status is
-              that of the last command executed  in  the  function  body.   If
-              r\bre\bet\btu\bur\brn\b is  executed by a trap handler, the last command used to
-              determine the status is the last  command  executed  before  the
-              trap  handler.   if  r\bre\bet\btu\bur\brn\bn is executed during a D\bDE\bEB\bBU\bUG\bG trap, the
-              last command used to determine the status is  the  last  command
-              executed  by  the  trap  handler  before r\bre\bet\btu\bur\brn\bn was invoked.  If
-              r\bre\bet\btu\bur\brn\bis used outside a function, but  during  execution  of  a
-              script  by  the .\b.  (s\bso\bou\bur\brc\bce\be) command, it causes the shell to stop
-              executing that script and return either _\bn or the exit status  of
-              the  last  command executed within the script as the exit status
-              of the script.  If _\bn is supplied, the return value is its  least
-              significant  8 bits.  The return status is non-zero if r\bre\bet\btu\bur\brn\bn is
-              supplied a non-numeric argument, or is used outside  a  function
-              and  not  during execution of a script by .\b. or s\bso\bou\bur\brc\bce\be.  Any com-
-              mand associated with the R\bRE\bET\bTU\bUR\bRN\bN trap is executed  before  execu-
+              Causes  a function to stop executing and return the value speci-
+              fied by _\bn to its caller.  If _\bn is omitted, the return status  is
+              that  of  the  last  command  executed in the function body.  If
+              r\bre\bet\btu\bur\brn\bis executed by a trap handler, the last command  used  to
+              determine  the  status  is  the last command executed before the
+              trap handler.  If r\bre\bet\btu\bur\brn\bn is executed during a  D\bDE\bEB\bBU\bUG\bG  trap,  the
+              last  command  used  to determine the status is the last command
+              executed by the trap handler  before  r\bre\bet\btu\bur\brn\bn  was  invoked.   If
+              r\bre\bet\btu\bur\brn\b is  used  outside  a function, but during execution of a
+              script by the .\b.  (s\bso\bou\bur\brc\bce\be) command, it causes the shell  to  stop
+              executing  that script and return either _\bn or the exit status of
+              the last command executed within the script as the  exit  status
+              of  the script.  If _\bn is supplied, the return value is its least
+              significant 8 bits.  The return status is non-zero if r\bre\bet\btu\bur\brn\b is
+              supplied  a  non-numeric argument, or is used outside a function
+              and not during execution of a script by .\b. or s\bso\bou\bur\brc\bce\be.   Any  com-
+              mand  associated  with the R\bRE\bET\bTU\bUR\bRN\bN trap is executed before execu-
               tion resumes after the function or script.
 
        s\bse\bet\bt [-\b--\b-a\bab\bbe\bef\bfh\bhk\bkm\bmn\bnp\bpt\btu\buv\bvx\bxB\bBC\bCE\bEH\bHP\bPT\bT] [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be] [_\ba_\br_\bg ...]
        s\bse\bet\bt [+\b+a\bab\bbe\bef\bfh\bhk\bkm\bmn\bnp\bpt\btu\buv\bvx\bxB\bBC\bCE\bEH\bHP\bPT\bT] [+\b+o\bo _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be] [_\ba_\br_\bg ...]
-              Without  options,  the name and value of each shell variable are
+              Without options, the name and value of each shell  variable  are
               displayed in a format that can be reused as input for setting or
               resetting the currently-set variables.  Read-only variables can-
-              not be reset.  In _\bp_\bo_\bs_\bi_\bx mode, only shell variables  are  listed.
-              The  output  is  sorted  according  to the current locale.  When
-              options are specified, they set or unset shell attributes.   Any
-              arguments  remaining after option processing are treated as val-
+              not  be  reset.  In _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, only shell variables are listed.
+              The output is sorted according  to  the  current  locale.   When
+              options  are specified, they set or unset shell attributes.  Any
+              arguments remaining after option processing are treated as  val-
               ues for the positional parameters and are assigned, in order, to
-              $\b$1\b1,  $\b$2\b2,  .\b..\b..\b.   $\b$_\bn.   Options,  if specified, have the following
+              $\b$1\b1, $\b$2\b2, .\b..\b..\b.  $\b$_\bn.  Options,  if  specified,  have  the  following
               meanings:
               -\b-a\ba      Each variable or function that is created or modified is
-                      given  the export attribute and marked for export to the
+                      given the export attribute and marked for export to  the
                       environment of subsequent commands.
-              -\b-b\bb      Report the status of terminated background jobs  immedi-
+              -\b-b\bb      Report  the status of terminated background jobs immedi-
                       ately, rather than before the next primary prompt.  This
                       is effective only when job control is enabled.
-              -\b-e\be      Exit immediately if a _\bp_\bi_\bp_\be_\bl_\bi_\bn_\be (which may consist  of  a
-                      single  _\bs_\bi_\bm_\bp_\bl_\be  _\bc_\bo_\bm_\bm_\ba_\bn_\bd),  a _\bl_\bi_\bs_\bt, or a _\bc_\bo_\bm_\bp_\bo_\bu_\bn_\bd _\bc_\bo_\bm_\bm_\ba_\bn_\bd
+              -\b-e\be      Exit  immediately  if a _\bp_\bi_\bp_\be_\bl_\bi_\bn_\be (which may consist of a
+                      single _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd), a _\bl_\bi_\bs_\bt, or  a  _\bc_\bo_\bm_\bp_\bo_\bu_\bn_\b _\bc_\bo_\bm_\bm_\ba_\bn_\bd
                       (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR 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  w\bwh\bhi\bil\ble\be
-                      or  u\bun\bnt\bti\bil\bl  keyword, part of the test following the i\bif\bf or
-                      e\bel\bli\bif\breserved words, part of any command executed  in  a
-                      &\b&&\b or |\b||\b| list except the command following the final &\b&&\b&
+                      The shell does not exit if the  command  that  fails  is
+                      part  of  the command list immediately following a w\bwh\bhi\bil\ble\be
+                      or u\bun\bnt\bti\bil\bl keyword, part of the test following the  i\bif\b or
+                      e\bel\bli\bif\b reserved  words, part of any command executed in a
+                      &\b&&\bor |\b||\b| list except the command following the final  &\b&&\b&
                       or |\b||\b|, any command in a pipeline but the last, or if the
-                      command's  return  value is being inverted with !\b!.  If a
-                      compound command other than a subshell  returns  a  non-
-                      zero  status because a command failed while -\b-e\be was being
-                      ignored, the shell does not exit.  A  trap  on  E\bER\bRR\bR,  if
-                      set,  is  executed  before the shell exits.  This option
+                      command's return value is being inverted with !\b!.   If  a
+                      compound  command  other  than a subshell returns a non-
+                      zero status because a command failed while -\b-e\be was  being
+                      ignored,  the  shell  does  not exit.  A trap on E\bER\bRR\bR, if
+                      set, is executed before the shell  exits.   This  option
                       applies to the shell environment and each subshell envi-
-                      ronment  separately  (see  C\bCO\bOM\bMM\bMA\bAN\bND\bD E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
+                      ronment separately (see  C\bCO\bOM\bMM\bMA\bAN\bND\bD  E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\b E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
                       above), and may cause subshells to exit before executing
                       all the commands in the subshell.
 
-                      If  a  compound  command or shell function executes in a
-                      context where -\b-e\be is being ignored, none of the  commands
-                      executed  within  the  compound command or function body
-                      will be affected by the -\b-e\be setting, even if  -\b-e\be  is  set
-                      and  a  command returns a failure status.  If a compound
-                      command or shell function sets -\b-e\be while executing  in  a
-                      context  where -\b-e\be is ignored, that setting will not have
-                      any effect until the compound  command  or  the  command
+                      If a compound command or shell function  executes  in  a
+                      context  where -\b-e\be is being ignored, none of the commands
+                      executed within the compound command  or  function  body
+                      will  be  affected  by the -\b-e\be setting, even if -\b-e\be is set
+                      and a command returns a failure status.  If  a  compound
+                      command  or  shell function sets -\b-e\be while executing in a
+                      context where -\b-e\be is ignored, that setting will not  have
+                      any  effect  until  the  compound command or the command
                       containing the function call completes.
               -\b-f\bf      Disable pathname expansion.
-              -\b-h\bh      Remember  the location of commands as they are looked up
+              -\b-h\bh      Remember the location of commands as they are looked  up
                       for execution.  This is enabled by default.
-              -\b-k\bk      All arguments in the form of assignment  statements  are
-                      placed  in the environment for a command, not just those
+              -\b-k\bk      All  arguments  in the form of assignment statements are
+                      placed in the environment for a command, not just  those
                       that precede the command name.
-              -\b-m\bm      Monitor mode.  Job control is enabled.  This  option  is
-                      on  by  default  for  interactive shells on systems that
-                      support it (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL above).  All  processes  run
+              -\b-m\bm      Monitor  mode.   Job control is enabled.  This option is
+                      on by default for interactive  shells  on  systems  that
+                      support  it  (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL above).  All processes run
                       in a separate process group.  When a background job com-
                       pletes, the shell prints a line containing its exit sta-
                       tus.
               -\b-n\bn      Read commands but do not execute them.  This may be used
-                      to check a shell script  for  syntax  errors.   This  is
+                      to  check  a  shell  script  for syntax errors.  This is
                       ignored by interactive shells.
               -\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be
                       The _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be can be one of the following:
@@ -1120,10 +1148,10 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Same as -\b-a\ba.
                       b\bbr\bra\bac\bce\bee\bex\bxp\bpa\ban\bnd\bd
                               Same as -\b-B\bB.
-                      e\bem\bma\bac\bcs\bs   Use  an  emacs-style command line editing inter-
+                      e\bem\bma\bac\bcs\bs   Use an emacs-style command line  editing  inter-
                               face.  This is enabled by default when the shell
                               is interactive, unless the shell is started with
-                              the -\b--\b-n\bno\boe\bed\bdi\bit\bti\bin\bng\bg option.  This also  affects  the
+                              the  -\b--\b-n\bno\boe\bed\bdi\bit\bti\bin\bng\bg  option.  This also affects the
                               editing interface used for r\bre\bea\bad\bd -\b-e\be.
                       e\ber\brr\bre\bex\bxi\bit\bt Same as -\b-e\be.
                       e\ber\brr\brt\btr\bra\bac\bce\be
@@ -1137,8 +1165,8 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               H\bHI\bIS\bST\bTO\bOR\bRY\bY.  This option is on by default in inter-
                               active shells.
                       i\big\bgn\bno\bor\bre\bee\beo\bof\bf
-                              The   effect   is   as   if  the  shell  command
-                              ``IGNOREEOF=10'' had been  executed  (see  S\bSh\bhe\bel\bll\bl
+                              The  effect  is  as   if   the   shell   command
+                              ``IGNOREEOF=10''  had  been  executed (see S\bSh\bhe\bel\bll\bl
                               V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs above).
                       k\bke\bey\byw\bwo\bor\brd\bd Same as -\b-k\bk.
                       m\bmo\bon\bni\bit\bto\bor\br Same as -\b-m\bm.
@@ -1153,108 +1181,109 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       p\bph\bhy\bys\bsi\bic\bca\bal\bl
                               Same as -\b-P\bP.
                       p\bpi\bip\bpe\bef\bfa\bai\bil\bl
-                              If  set,  the  return value of a pipeline is the
-                              value of the last (rightmost)  command  to  exit
-                              with  a non-zero status, or zero if all commands
-                              in the pipeline exit successfully.  This  option
+                              If set, the return value of a  pipeline  is  the
+                              value  of  the  last (rightmost) command to exit
+                              with a non-zero status, or zero if all  commands
+                              in  the pipeline exit successfully.  This option
                               is disabled by default.
-                      p\bpo\bos\bsi\bix\bx   Change  the  behavior  of b\bba\bas\bsh\bh where the default
-                              operation differs from  the  POSIX  standard  to
-                              match  the  standard (_\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be).  See S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+                      p\bpo\bos\bsi\bix\bx   Change the behavior of b\bba\bas\bsh\bh  where  the  default
+                              operation  differs  from  the  POSIX standard to
+                              match the standard (_\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be).  See  S\bSE\bEE\b A\bAL\bLS\bSO\bO
                               below for a reference to a document that details
                               how posix mode affects bash's behavior.
                       p\bpr\bri\biv\bvi\bil\ble\beg\bge\bed\bd
                               Same as -\b-p\bp.
                       v\bve\ber\brb\bbo\bos\bse\be Same as -\b-v\bv.
-                      v\bvi\bi      Use  a  vi-style command line editing interface.
+                      v\bvi\bi      Use a vi-style command line  editing  interface.
                               This also affects the editing interface used for
                               r\bre\bea\bad\bd -\b-e\be.
                       x\bxt\btr\bra\bac\bce\be  Same as -\b-x\bx.
                       If -\b-o\bo is supplied with no _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, the values of the
-                      current options are printed.  If +\b+o\bo is supplied with  no
-                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be,  a  series  of s\bse\bet\bt commands to recreate the
-                      current option settings is  displayed  on  the  standard
+                      current  options are printed.  If +\b+o\bo is supplied with no
+                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, a series of s\bse\bet\bt commands  to  recreate  the
+                      current  option  settings  is  displayed on the standard
                       output.
-              -\b-p\bp      Turn  on  _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd  mode.   In this mode, the $\b$E\bEN\bNV\bV and
-                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bfiles are not processed, shell  functions  are
-                      not  inherited  from the environment, and the S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS,
-                      B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS, C\bCD\bDP\bPA\bAT\bTH\bH,  and  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE  variables,  if  they
+              -\b-p\bp      Turn on _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd mode.  In this  mode,  the  $\b$E\bEN\bNV\b and
+                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\b files  are not processed, shell functions are
+                      not inherited from the environment, and  the  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS,
+                      B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS,  C\bCD\bDP\bPA\bAT\bTH\bH,  and  G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE  variables,  if they
                       appear in the environment, are ignored.  If the shell is
-                      started with the effective user (group) id not equal  to
-                      the  real user (group) id, and the -\b-p\bp option is not sup-
+                      started  with the effective user (group) id not equal to
+                      the real user (group) id, and the -\b-p\bp option is not  sup-
                       plied, these actions are taken and the effective user id
-                      is  set  to  the real user id.  If the -\b-p\bp option is sup-
-                      plied at startup, the effective user id  is  not  reset.
-                      Turning  this  option  off causes the effective user and
+                      is set to the real user id.  If the -\b-p\bp  option  is  sup-
+                      plied  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.
               -\b-t\bt      Exit after reading and executing one command.
               -\b-u\bu      Treat unset variables and parameters other than the spe-
-                      cial  parameters "@" and "*" as an error when performing
-                      parameter expansion.  If expansion is  attempted  on  an
-                      unset  variable  or parameter, the shell prints an error
-                      message, and, if not interactive, exits with a  non-zero
+                      cial parameters "@" and "*" as an error when  performing
+                      parameter  expansion.   If  expansion is attempted on an
+                      unset variable or parameter, the shell prints  an  error
+                      message,  and, if not interactive, exits with a non-zero
                       status.
               -\b-v\bv      Print shell input lines as they are read.
-              -\b-x\bx      After  expanding  each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br command, c\bca\bas\bse\be
+              -\b-x\bx      After expanding each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br  command,  c\bca\bas\bse\be
                       command, s\bse\bel\ble\bec\bct\bt command, or arithmetic f\bfo\bor\br command, dis-
-                      play  the expanded value of P\bPS\bS4\b4, followed by the command
+                      play the expanded value of P\bPS\bS4\b4, followed by the  command
                       and its expanded arguments or associated word list.
-              -\b-B\bB      The shell performs brace expansion (see B\bBr\bra\bac\bce\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
+              -\b-B\bB      The  shell performs brace expansion (see B\bBr\bra\bac\bce\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
                       above).  This is on by default.
-              -\b-C\bC      If  set,  b\bba\bas\bsh\bh  does not overwrite an existing file with
-                      the >\b>, >\b>&\b&, and <\b<>\b> redirection operators.   This  may  be
+              -\b-C\bC      If set, b\bba\bas\bsh\bh does not overwrite an  existing  file  with
+                      the  >\b>,  >\b>&\b&,  and <\b<>\b> redirection operators.  This may be
                       overridden when creating output files by using the redi-
                       rection operator >\b>|\b| instead of >\b>.
               -\b-E\bE      If set, any trap on E\bER\bRR\bR is inherited by shell functions,
-                      command  substitutions,  and commands executed in a sub-
-                      shell environment.  The E\bER\bRR\bR trap is normally not  inher-
+                      command substitutions, and commands executed in  a  sub-
+                      shell  environment.  The E\bER\bRR\bR trap is normally not inher-
                       ited in such cases.
               -\b-H\bH      Enable !\b!  style history substitution.  This option is on
                       by default when the shell is interactive.
-              -\b-P\bP      If set, the shell does not resolve symbolic  links  when
-                      executing  commands  such  as c\bcd\bd that change the current
+              -\b-P\bP      If  set,  the shell does not resolve symbolic links when
+                      executing commands such as c\bcd\bd that  change  the  current
                       working  directory.   It  uses  the  physical  directory
                       structure instead.  By default, b\bba\bas\bsh\bh follows the logical
-                      chain of  directories  when  performing  commands  which
+                      chain  of  directories  when  performing  commands which
                       change the current directory.
-              -\b-T\bT      If  set,  any traps on D\bDE\bEB\bBU\bUG\bG and R\bRE\bET\bTU\bUR\bRN\bN are inherited by
-                      shell functions,  command  substitutions,  and  commands
-                      executed  in  a  subshell  environment.   The  D\bDE\bEB\bBU\bUG\bG and
+              -\b-T\bT      If set, any traps on D\bDE\bEB\bBU\bUG\bG and R\bRE\bET\bTU\bUR\bRN\bN are  inherited  by
+                      shell  functions,  command  substitutions,  and commands
+                      executed in  a  subshell  environment.   The  D\bDE\bEB\bBU\bUG\b and
                       R\bRE\bET\bTU\bUR\bRN\bN traps are normally not inherited in such cases.
-              -\b--\b-      If no arguments follow this option, then the  positional
+              -\b--\b-      If  no arguments follow this option, then the positional
                       parameters are unset.  Otherwise, the positional parame-
-                      ters are set to the _\ba_\br_\bgs, even if  some  of  them  begin
+                      ters  are  set  to  the _\ba_\br_\bgs, even if some of them begin
                       with a -\b-.
-              -\b-       Signal  the  end of options, cause all remaining _\ba_\br_\bgs to
+              -\b-       Signal the end of options, cause all remaining  _\ba_\br_\bgs  to
                       be assigned to the positional parameters.  The -\b-x\bx and -\b-v\bv
                       options are turned off.  If there are no _\ba_\br_\bgs, the posi-
                       tional parameters remain unchanged.
 
-              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 $\b$-\b-.  The
+              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 $\b$-\b-.   The
               return status is always true unless an invalid option is encoun-
               tered.
 
        s\bsh\bhi\bif\bft\bt [_\bn]
-              The  positional  parameters  from _\bn+1 ... are renamed to $\b$1\b1 .\b..\b..\b..\b.
-              Parameters represented by the numbers  $\b$#\b#  down  to  $\b$#\b#-_\bn+1  are
-              unset.   _\bn  must  be a non-negative number less than or equal to
-              $\b$#\b#.  If _\bn is 0, no parameters are changed.  If _\bn is  not  given,
-              it  is assumed to be 1.  If _\bn is greater than $\b$#\b#, the positional
-              parameters are not changed.  The return status is  greater  than
+              The positional parameters from _\bn+1 ... are renamed  to  $\b$1\b .\b..\b..\b..\b.
+              Parameters  represented  by  the  numbers  $\b$#\b# down to $\b$#\b#-_\bn+1 are
+              unset.  _\bn must be a non-negative number less than  or  equal  to
+              $\b$#\b#.   If  _\bn is 0, no parameters are changed.  If _\bn is not given,
+              it is assumed to be 1.  If _\bn is greater than $\b$#\b#, the  positional
+              parameters  are  not changed.  The return status is greater than
               zero if _\bn is greater than $\b$#\b# or less than zero; otherwise 0.
 
        s\bsh\bho\bop\bpt\bt [-\b-p\bpq\bqs\bsu\bu] [-\b-o\bo] [_\bo_\bp_\bt_\bn_\ba_\bm_\be ...]
-              Toggle  the values of settings controlling optional shell behav-
-              ior.  The settings can be either those listed below, or, if  the
+              Toggle the values of settings controlling optional shell  behav-
+              ior.   The settings can be either those listed below, or, if the
               -\b-o\bo option is used, those available with the -\b-o\bo option to the s\bse\bet\bt
               builtin command.  With no options, or with the -\b-p\bp option, a list
-              of  all  settable  options  is  displayed, with an indication of
-              whether or not each is set.  The -\b-p\bp option causes output  to  be
-              displayed  in a form that may be reused as input.  Other options
-              have the following meanings:
+              of all settable options is  displayed,  with  an  indication  of
+              whether or not each is set; if _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are supplied, the output
+              is restricted to those options.  The -\b-p\bp option causes output  to
+              be  displayed  in  a  form  that  may be reused as input.  Other
+              options have the following meanings:
               -\b-s\bs     Enable (set) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
               -\b-u\bu     Disable (unset) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
               -\b-q\bq     Suppresses normal output (quiet mode); the return  status
@@ -1277,6 +1306,12 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
 
               The list of s\bsh\bho\bop\bpt\bt options is:
 
+              a\bas\bss\bso\boc\bc_\b_e\bex\bxp\bpa\ban\bnd\bd_\b_o\bon\bnc\bce\be
+                      If  set,  the  shell  suppresses  multiple evaluation of
+                      associative array subscripts during  arithmetic  expres-
+                      sion  evaluation, while executing builtins that can per-
+                      form variable assignments, and while executing  builtins
+                      that perform array dereferencing.
               a\bau\but\bto\boc\bcd\bd  If  set,  a command name that is the name of a directory
                       is executed as if it were the argument to  the  c\bcd\bd  com-
                       mand.  This option is only used by interactive shells.
@@ -1304,188 +1339,208 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL above).   The  shell  always  postpones
                       exiting if any jobs are stopped.
               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.
-              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.
+                      If  set, b\bba\bas\bsh\bh checks the window size after each external
+                      (non-builtin) command and,  if  necessary,  updates  the
+                      values  of L\bLI\bIN\bNE\bES\bS and C\bCO\bOL\bLU\bUM\bMN\bNS\bS.  This option is enabled by
+                      default.
+              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.  This option  is
+                      enabled  by  default,  but only has an effect if command
+                      history is enabled, as described above under H\bHI\bIS\bST\bTO\bOR\bRY\bY.
               c\bco\bom\bmp\bpa\bat\bt3\b31\b1
                       If set, b\bba\bas\bsh\bh changes its behavior to that of version 3.1
-                      with respect to quoted arguments to the  [\b[[\b conditional
+                      with  respect  to quoted arguments to the [\b[[\b[ conditional
                       command's =\b=~\b~ operator and locale-specific string compar-
-                      ison when using the [\b[[\b[ conditional  command's  <\b<  and  >\b>
-                      operators.   Bash  versions  prior to bash-4.1 use ASCII
+                      ison  when  using  the  [\b[[\b[ conditional command's <\b< and >\b>
+                      operators.  Bash versions prior to  bash-4.1  use  ASCII
                       collation and _\bs_\bt_\br_\bc_\bm_\bp(3); bash-4.1 and later use the cur-
                       rent locale's collation sequence and _\bs_\bt_\br_\bc_\bo_\bl_\bl(3).
               c\bco\bom\bmp\bpa\bat\bt3\b32\b2
                       If set, b\bba\bas\bsh\bh changes its behavior to that of version 3.2
-                      with respect to locale-specific string  comparison  when
-                      using  the  [\b[[\b[  conditional  command's <\b< and >\b> operators
-                      (see previous item) and the  effect  of  interrupting  a
-                      command  list.   Bash  versions 3.2 and earlier continue
-                      with the next command in the list after  one  terminates
+                      with  respect  to locale-specific string comparison when
+                      using the [\b[[\b[ conditional command's  <\b<  and  >\b operators
+                      (see  previous  item)  and  the effect of interrupting a
+                      command list.  Bash versions 3.2  and  earlier  continue
+                      with  the  next command in the list after one terminates
                       due to an interrupt.
               c\bco\bom\bmp\bpa\bat\bt4\b40\b0
                       If set, b\bba\bas\bsh\bh changes its behavior to that of version 4.0
-                      with respect to locale-specific string  comparison  when
-                      using  the  [\b[[\b[  conditional  command's <\b< and >\b> operators
-                      (see description of c\bco\bom\bmp\bpa\bat\bt3\b31\b1) and the effect  of  inter-
-                      rupting  a  command  list.   Bash versions 4.0 and later
-                      interrupt the list as if the shell received  the  inter-
-                      rupt;  previous  versions continue with the next command
+                      with  respect  to locale-specific string comparison when
+                      using the [\b[[\b[ conditional command's  <\b<  and  >\b operators
+                      (see  description  of c\bco\bom\bmp\bpa\bat\bt3\b31\b1) and the effect of inter-
+                      rupting a command list.  Bash  versions  4.0  and  later
+                      interrupt  the  list as if the shell received the inter-
+                      rupt; previous versions continue with the  next  command
                       in the list.
               c\bco\bom\bmp\bpa\bat\bt4\b41\b1
-                      If set, b\bba\bas\bsh\bh, when in _\bp_\bo_\bs_\bi_\bx mode, treats a single  quote
-                      in  a  double-quoted  parameter  expansion  as a special
-                      character.  The single quotes must match (an  even  num-
-                      ber)  and  the  characters between the single quotes are
-                      considered quoted.  This is the behavior of  posix  mode
-                      through  version 4.1.  The default bash behavior remains
+                      If  set, b\bba\bas\bsh\bh, when in _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be, treats a single quote
+                      in a double-quoted  parameter  expansion  as  a  special
+                      character.   The  single quotes must match (an even num-
+                      ber) and the characters between the  single  quotes  are
+                      considered  quoted.   This is the behavior of posix mode
+                      through version 4.1.  The default bash behavior  remains
                       as in previous versions.
               c\bco\bom\bmp\bpa\bat\bt4\b42\b2
-                      If set, b\bba\bas\bsh\bh does not process the replacement string  in
-                      the  pattern  substitution  word  expansion  using quote
+                      If  set, b\bba\bas\bsh\bh does not process the replacement string in
+                      the pattern  substitution  word  expansion  using  quote
                       removal.
               c\bco\bom\bmp\bpa\bat\bt4\b43\b3
-                      If set, b\bba\bas\bsh\bh does not print  a  warning  message  if  an
-                      attempt  is  made to use a quoted compound array assign-
-                      ment as an argument to  d\bde\bec\bcl\bla\bar\bre\be,  makes  word  expansion
-                      errors  non-fatal  errors that cause the current command
-                      to fail (the default behavior  is  to  make  them  fatal
+                      If  set,  b\bba\bas\bsh\bh  does  not  print a warning message if an
+                      attempt is made to use a quoted compound  array  assign-
+                      ment  as  an  argument  to d\bde\bec\bcl\bla\bar\bre\be, makes word expansion
+                      errors non-fatal errors that cause the  current  command
+                      to  fail  (the  default  behavior  is to make them fatal
                       errors that cause the shell to exit), and does not reset
-                      the loop state when a shell function is  executed  (this
-                      allows  b\bbr\bre\bea\bak\bk  or c\bco\bon\bnt\bti\bin\bnu\bue\be in a shell function to affect
+                      the  loop  state when a shell function is executed (this
+                      allows b\bbr\bre\bea\bak\bk or c\bco\bon\bnt\bti\bin\bnu\bue\be in a shell function  to  affect
                       loops in the caller's context).
+              c\bco\bom\bmp\bpa\bat\bt4\b44\b4
+                      If   set,   b\bba\bas\bsh\bh  saves  the  positional  parameters  to
+                      BASH_ARGV and BASH_ARGC before they are used, regardless
+                      of whether or not extended debugging mode is enabled.
               c\bco\bom\bmp\bpl\ble\bet\bte\be_\b_f\bfu\bul\bll\blq\bqu\buo\bot\bte\be
-                      If set, b\bba\bas\bsh\bh quotes all shell  metacharacters  in  file-
-                      names  and  directory  names when performing completion.
+                      If  set,  b\bba\bas\bsh\bh  quotes all shell metacharacters in file-
+                      names and directory names  when  performing  completion.
                       If not set, b\bba\bas\bsh\bh removes metacharacters such as the dol-
-                      lar  sign from the set of characters that will be quoted
-                      in completed filenames when these metacharacters  appear
-                      in  shell  variable references in words to be completed.
-                      This means that dollar  signs  in  variable  names  that
-                      expand  to  directories will not be quoted; however, any
-                      dollar signs appearing in filenames will not be  quoted,
-                      either.   This  is  active only when bash is using back-
-                      slashes to quote completed filenames.  This variable  is
-                      set  by  default,  which is the default bash behavior in
+                      lar sign from the set of characters that will be  quoted
+                      in  completed filenames when these metacharacters appear
+                      in shell variable references in words to  be  completed.
+                      This  means  that  dollar  signs  in variable names that
+                      expand to directories will not be quoted;  however,  any
+                      dollar  signs appearing in filenames will not be quoted,
+                      either.  This is active only when bash  is  using  back-
+                      slashes  to quote completed filenames.  This variable is
+                      set by default, which is the default  bash  behavior  in
                       versions through 4.2.
               d\bdi\bir\bre\bex\bxp\bpa\ban\bnd\bd
-                      If set, b\bba\bas\bsh\bh replaces directory names with  the  results
-                      of  word  expansion when performing filename completion.
-                      This changes the contents of the readline  editing  buf-
-                      fer.   If  not  set,  b\bba\bas\bsh\bh attempts to preserve what the
+                      If  set,  b\bba\bas\bsh\bh replaces directory names with the results
+                      of word expansion when performing  filename  completion.
+                      This  changes  the contents of the readline editing buf-
+                      fer.  If not set, b\bba\bas\bsh\bh attempts  to  preserve  what  the
                       user typed.
               d\bdi\bir\brs\bsp\bpe\bel\bll\bl
-                      If set, b\bba\bas\bsh\bh attempts spelling correction  on  directory
-                      names  during word completion if the directory name ini-
+                      If  set,  b\bba\bas\bsh\bh attempts spelling correction on directory
+                      names during word completion if the directory name  ini-
                       tially supplied does not exist.
-              d\bdo\bot\btg\bgl\blo\bob\bb If set, b\bba\bas\bsh\bh includes filenames beginning with a `.'  in
-                      the results of pathname expansion.
+              d\bdo\bot\btg\bgl\blo\bob\bb If  set, b\bba\bas\bsh\bh includes filenames beginning with a `.' in
+                      the results of pathname expansion.  The filenames  `\b``\b`.\b.'\b''\b'
+                      and  `\b``\b`.\b..\b.'\b''\b'   must always be matched explicitly, even if
+                      d\bdo\bot\btg\bgl\blo\bob\bb is set.
               e\bex\bxe\bec\bcf\bfa\bai\bil\bl
                       If set, a non-interactive shell will not exit if it can-
-                      not execute the file specified as  an  argument  to  the
-                      e\bex\bxe\bec\b builtin  command.   An  interactive shell does not
+                      not  execute  the  file  specified as an argument to the
+                      e\bex\bxe\bec\bbuiltin command.  An  interactive  shell  does  not
                       exit if e\bex\bxe\bec\bc fails.
               e\bex\bxp\bpa\ban\bnd\bd_\b_a\bal\bli\bia\bas\bse\bes\bs
-                      If set, aliases are expanded as  described  above  under
+                      If  set,  aliases  are expanded as described above under
                       A\bAL\bLI\bIA\bAS\bSE\bES\bS.  This option is enabled by default for interac-
                       tive shells.
               e\bex\bxt\btd\bde\beb\bbu\bug\bg
-                      If set at  shell  invocation,  arrange  to  execute  the
-                      debugger  profile  before the shell starts, identical to
-                      the -\b--\b-d\bde\beb\bbu\bug\bgg\bge\ber\br option.  If set after invocation,  behav-
+                      If  set  at  shell  invocation,  arrange  to execute the
+                      debugger profile before the shell starts,  identical  to
+                      the  -\b--\b-d\bde\beb\bbu\bug\bgg\bge\ber\br option.  If set after invocation, behav-
                       ior intended for use by debuggers is enabled:
                       1\b1.\b.     The -\b-F\bF option to the d\bde\bec\bcl\bla\bar\bre\be builtin displays the
                              source file name and line number corresponding to
                              each function name supplied as an argument.
-                      2\b2.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
-                             non-zero value, the next command is  skipped  and
+                      2\b2.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
+                             non-zero  value,  the next command is skipped and
                              not executed.
-                      3\b3.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
-                             value of 2, and the shell is executing in a  sub-
-                             routine  (a shell function or a shell script exe-
-                             cuted by the .\b. or  s\bso\bou\bur\brc\bce\be  builtins),  the  shell
+                      3\b3.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
+                             value  of 2, and the shell is executing in a sub-
+                             routine (a shell function or a shell script  exe-
+                             cuted  by  the  .\b.  or s\bso\bou\bur\brc\bce\be builtins), the shell
                              simulates a call to r\bre\bet\btu\bur\brn\bn.
-                      4\b4.\b.     B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\b and B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV are updated as described
+                      4\b4.\b.     B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\band B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV are updated as  described
                              in their descriptions above.
-                      5\b5.\b.     Function tracing is  enabled:  command  substitu-
+                      5\b5.\b.     Function  tracing  is  enabled: command substitu-
                              tion, shell functions, and subshells invoked with
                              (\b( _\bc_\bo_\bm_\bm_\ba_\bn_\bd )\b) inherit the D\bDE\bEB\bBU\bUG\bG and R\bRE\bET\bTU\bUR\bRN\bN traps.
-                      6\b6.\b.     Error tracing is enabled:  command  substitution,
-                             shell  functions,  and  subshells  invoked with (\b(
+                      6\b6.\b.     Error  tracing  is enabled: command substitution,
+                             shell functions, and  subshells  invoked  with  (\b(
                              _\bc_\bo_\bm_\bm_\ba_\bn_\bd )\b) inherit the E\bER\bRR\bR trap.
               e\bex\bxt\btg\bgl\blo\bob\bb If set, the extended pattern matching features described
                       above under P\bPa\bat\bth\bhn\bna\bam\bme\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn are enabled.
               e\bex\bxt\btq\bqu\buo\bot\bte\be
-                      If  set,  $\b$'_\bs_\bt_\br_\bi_\bn_\bg'  and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg" quoting is performed
-                      within  $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}  expansions  enclosed   in   double
+                      If set, $\b$'_\bs_\bt_\br_\bi_\bn_\bg' and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg"  quoting  is  performed
+                      within   $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}   expansions  enclosed  in  double
                       quotes.  This option is enabled by default.
               f\bfa\bai\bil\blg\bgl\blo\bob\bb
-                      If  set,  patterns  which fail to match filenames during
+                      If set, patterns which fail to  match  filenames  during
                       pathname expansion result in an expansion error.
               f\bfo\bor\brc\bce\be_\b_f\bfi\big\bgn\bno\bor\bre\be
-                      If set, the suffixes  specified  by  the  F\bFI\bIG\bGN\bNO\bOR\bRE\b shell
-                      variable  cause words to be ignored when performing word
+                      If  set,  the  suffixes  specified  by the F\bFI\bIG\bGN\bNO\bOR\bRE\bE shell
+                      variable cause words to be ignored when performing  word
                       completion even if the ignored words are the only possi-
                       ble  completions.   See  S\bSH\bHE\bEL\bLL\bL  V\bVA\bAR\bRI\bIA\bAB\bBL\bLE\bES\bS  above  for  a
-                      description of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled  by
+                      description  of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled by
                       default.
               g\bgl\blo\bob\bba\bas\bsc\bci\bii\bir\bra\ban\bng\bge\bes\bs
-                      If  set,  range  expressions  used  in  pattern matching
-                      bracket expressions (see P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg above)  behave
-                      as  if  in the traditional C locale when performing com-
+                      If set,  range  expressions  used  in  pattern  matching
+                      bracket  expressions (see P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg above) behave
+                      as if in the traditional C locale when  performing  com-
                       parisons.   That  is,  the  current  locale's  collating
-                      sequence  is  not taken into account, so b\bb will not col-
-                      late between A\bA and  B\bB,  and  upper-case  and  lower-case
+                      sequence is not taken into account, so b\bb will  not  col-
+                      late  between  A\bA  and  B\bB,  and upper-case and lower-case
                       ASCII characters will collate together.
               g\bgl\blo\bob\bbs\bst\bta\bar\br
                       If set, the pattern *\b**\b* used in a pathname expansion con-
-                      text will match all files and zero or  more  directories
-                      and  subdirectories.  If the pattern is followed by a /\b/,
+                      text  will  match all files and zero or more directories
+                      and subdirectories.  If the pattern is followed by a  /\b/,
                       only directories and subdirectories match.
               g\bgn\bnu\bu_\b_e\ber\brr\brf\bfm\bmt\bt
                       If set, shell error messages are written in the standard
                       GNU error message format.
               h\bhi\bis\bst\bta\bap\bpp\bpe\ben\bnd\bd
-                      If  set,  the history list is appended to the file named
-                      by the value of the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE  variable  when  the  shell
+                      If set, the history list is appended to the  file  named
+                      by  the  value  of  the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE variable when the shell
                       exits, rather than overwriting the file.
               h\bhi\bis\bst\btr\bre\bee\bed\bdi\bit\bt
-                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given the
+                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given  the
                       opportunity to re-edit a failed history substitution.
               h\bhi\bis\bst\btv\bve\ber\bri\bif\bfy\by
-                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of  his-
-                      tory  substitution  are  not  immediately  passed to the
-                      shell parser.  Instead, the  resulting  line  is  loaded
+                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of his-
+                      tory substitution are  not  immediately  passed  to  the
+                      shell  parser.   Instead,  the  resulting line is loaded
                       into the r\bre\bea\bad\bdl\bli\bin\bne\be editing buffer, allowing further modi-
                       fication.
               h\bho\bos\bst\btc\bco\bom\bmp\bpl\ble\bet\bte\be
                       If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, b\bba\bas\bsh\bh will attempt to
-                      perform  hostname  completion when a word containing a @\b@
-                      is  being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under   R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
+                      perform hostname completion when a word containing  a  @\b@
+                      is   being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
                       above).  This is enabled by default.
               h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt
                       If set, b\bba\bas\bsh\bh will send S\bSI\bIG\bGH\bHU\bUP\bP to all jobs when an inter-
                       active login shell exits.
               i\bin\bnh\bhe\ber\bri\bit\bt_\b_e\ber\brr\bre\bex\bxi\bit\bt
-                      If set, command substitution inherits the value  of  the
-                      e\ber\brr\bre\bex\bxi\bit\b option, instead of unsetting it in the subshell
-                      environment.  This option is enabled when _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\b is
+                      If  set,  command substitution inherits the value of the
+                      e\ber\brr\bre\bex\bxi\bit\boption, instead of unsetting it in the  subshell
+                      environment.   This option is enabled when _\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be is
                       enabled.
               i\bin\bnt\bte\ber\bra\bac\bct\bti\biv\bve\be_\b_c\bco\bom\bmm\bme\ben\bnt\bts\bs
                       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  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS above).  This
+                      and  all remaining characters on that line to be ignored
+                      in an interactive  shell  (see  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS  above).   This
                       option is enabled by default.
               l\bla\bas\bst\btp\bpi\bip\bpe\be
-                      If set, and job control is not active,  the  shell  runs
+                      If  set,  and  job control is not active, the shell runs
                       the last command of a pipeline not executed in the back-
                       ground in the current shell environment.
-              l\bli\bit\bth\bhi\bis\bst\bt If set, and the c\bcm\bmd\bdh\bhi\bis\bst\bt option  is  enabled,  multi-line
+              l\bli\bit\bth\bhi\bis\bst\bt If  set,  and  the c\bcm\bmd\bdh\bhi\bis\bst\bt option is enabled, multi-line
                       commands are saved to the history with embedded newlines
                       rather than using semicolon separators where possible.
+              l\blo\boc\bca\bal\blv\bva\bar\br_\b_i\bin\bnh\bhe\ber\bri\bit\bt
+                      If set, local variables inherit the value and attributes
+                      of a variable of the same name that exists at a previous
+                      scope  before  any  new  value is assigned.  The nameref
+                      attribute is not inherited.
+              l\blo\boc\bca\bal\blv\bva\bar\br_\b_u\bun\bns\bse\bet\bt
+                      If set, calling u\bun\bns\bse\bet\bt on  local  variables  in  previous
+                      function  scopes  marks  them so subsequent lookups find
+                      them unset until that function returns. This is  identi-
+                      cal  to the behavior of unsetting local variables at the
+                      current function scope.
               l\blo\bog\bgi\bin\bn_\b_s\bsh\bhe\bel\bll\bl
                       The shell sets this option if it is started as  a  login
                       shell  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN  above).   The  value may not be
@@ -1517,52 +1572,59 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       If set, the programmable completion facilities (see P\bPr\bro\bo-\b-
                       g\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn above) are enabled.  This option is
                       enabled by default.
+              p\bpr\bro\bog\bgc\bco\bom\bmp\bp_\b_a\bal\bli\bia\bas\bs
+                      If  set,  and  programmable  completion is enabled, b\bba\bas\bsh\bh
+                      treats a command name that doesn't have any  completions
+                      as  a possible alias and attempts alias expansion. If it
+                      has an  alias,  b\bba\bas\bsh\bh  attempts  programmable  completion
+                      using  the  command  word  resulting  from  the expanded
+                      alias.
               p\bpr\bro\bom\bmp\bpt\btv\bva\bar\brs\bs
                       If set, prompt strings undergo parameter expansion, com-
-                      mand  substitution,  arithmetic  expansion,  and   quote
-                      removal  after  being expanded as described in P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
+                      mand   substitution,  arithmetic  expansion,  and  quote
+                      removal after being expanded as described  in  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
                       above.  This option is enabled by default.
               r\bre\bes\bst\btr\bri\bic\bct\bte\bed\bd_\b_s\bsh\bhe\bel\bll\bl
-                      The  shell  sets  this  option  if  it  is  started   in
+                      The   shell  sets  this  option  if  it  is  started  in
                       restricted mode (see R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL below).  The value
-                      may not be changed.  This is not reset when the  startup
-                      files  are  executed, allowing the startup files to dis-
+                      may  not be changed.  This is not reset when the startup
+                      files are executed, allowing the startup files  to  dis-
                       cover whether or not a shell is restricted.
               s\bsh\bhi\bif\bft\bt_\b_v\bve\ber\brb\bbo\bos\bse\be
-                      If set, the s\bsh\bhi\bif\bft\bt builtin prints an error  message  when
+                      If  set,  the s\bsh\bhi\bif\bft\bt builtin prints an error message when
                       the shift count exceeds the number of positional parame-
                       ters.
               s\bso\bou\bur\brc\bce\bep\bpa\bat\bth\bh
                       If set, the s\bso\bou\bur\brc\bce\be (.\b.) builtin uses the value of P\bPA\bAT\bTH\bH to
-                      find  the  directory  containing the file supplied as an
+                      find the directory containing the file  supplied  as  an
                       argument.  This option is enabled by default.
               x\bxp\bpg\bg_\b_e\bec\bch\bho\bo
-                      If  set,  the  e\bec\bch\bho\bo  builtin  expands   backslash-escape
+                      If   set,  the  e\bec\bch\bho\bo  builtin  expands  backslash-escape
                       sequences by default.
 
        s\bsu\bus\bsp\bpe\ben\bnd\bd [-\b-f\bf]
-              Suspend  the execution of this shell until it receives a S\bSI\bIG\bGC\bCO\bON\bNT\bT
+              Suspend the execution of this shell until it receives a  S\bSI\bIG\bGC\bCO\bON\bNT\bT
               signal.  A login shell cannot be suspended; the -\b-f\bf option can be
               used to override this and force the suspension.  The return sta-
-              tus is 0 unless the shell is a login shell and -\b-f\bf  is  not  sup-
+              tus  is  0  unless the shell is a login shell and -\b-f\bf is not sup-
               plied, or if job control is not enabled.
 
        t\bte\bes\bst\bt _\be_\bx_\bp_\br
        [\b[ _\be_\bx_\bp_\br ]\b]
               Return a status of 0 (true) or 1 (false) depending on the evalu-
               ation of the conditional expression _\be_\bx_\bp_\br.  Each operator and op-
-              erand  must be a separate argument.  Expressions are composed of
-              the primaries described  above  under  C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\b E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
-              t\bte\bes\bst\b does not accept any options, nor does it accept and ignore
+              erand must be a separate argument.  Expressions are composed  of
+              the  primaries  described  above  under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
+              t\bte\bes\bst\bdoes not accept any options, nor does it accept and  ignore
               an argument of -\b--\b- as signifying the end of options.
 
-              Expressions may  be  combined  using  the  following  operators,
+              Expressions  may  be  combined  using  the  following operators,
               listed  in  decreasing  order  of  precedence.   The  evaluation
-              depends on the number of arguments; see below.  Operator  prece-
+              depends  on the number of arguments; see below.  Operator prece-
               dence is used when there are five or more arguments.
               !\b! _\be_\bx_\bp_\br True if _\be_\bx_\bp_\br is false.
               (\b( _\be_\bx_\bp_\br )\b)
-                     Returns  the value of _\be_\bx_\bp_\br.  This may be used to override
+                     Returns the value of _\be_\bx_\bp_\br.  This may be used to  override
                      the normal precedence of operators.
               _\be_\bx_\bp_\br_\b1 -a\ba _\be_\bx_\bp_\br_\b2
                      True if both _\be_\bx_\bp_\br_\b1 and _\be_\bx_\bp_\br_\b2 are true.
@@ -1579,120 +1641,120 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      null.
               2 arguments
                      If the first argument is !\b!, the expression is true if and
-                     only  if the second argument is null.  If the first argu-
-                     ment is one of the  unary  conditional  operators  listed
-                     above  under  C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL  E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the expression is
+                     only if the second argument is null.  If the first  argu-
+                     ment  is  one  of  the unary conditional operators listed
+                     above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS,  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.
               3 arguments
                      The following conditions are applied in the order listed.
-                     If  the  second argument is one of the binary conditional
+                     If the second argument is one of the  binary  conditional
                      operators listed above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the
                      result of the expression is the result of the binary test
-                     using the first and third arguments as operands.  The  -\b-a\ba
-                     and  -\b-o\bo  operators  are  considered binary operators when
-                     there are three arguments.  If the first argument  is  !\b!,
-                     the  value is the negation of the two-argument test using
+                     using  the first and third arguments as operands.  The -\b-a\ba
+                     and -\b-o\bo operators are  considered  binary  operators  when
+                     there  are  three arguments.  If the first argument is !\b!,
+                     the value is the negation of the two-argument test  using
                      the second and third arguments.  If the first argument is
                      exactly (\b( and the third argument is exactly )\b), the result
-                     is the one-argument test of the second argument.   Other-
+                     is  the one-argument test of the second argument.  Other-
                      wise, the expression is false.
               4 arguments
                      If the first argument is !\b!, the result is the negation of
-                     the three-argument expression composed of  the  remaining
+                     the  three-argument  expression composed of the remaining
                      arguments.  Otherwise, the expression is parsed and eval-
-                     uated according to  precedence  using  the  rules  listed
+                     uated  according  to  precedence  using  the rules listed
                      above.
               5 or more arguments
-                     The  expression  is  parsed  and  evaluated  according to
+                     The expression  is  parsed  and  evaluated  according  to
                      precedence using the rules listed above.
 
-              When used with t\bte\bes\bst\bt or [\b[, the <\b< and  >\b>  operators  sort  lexico-
+              When  used  with  t\bte\bes\bst\bt  or [\b[, the <\b< and >\b> operators sort lexico-
               graphically using ASCII ordering.
 
-       t\bti\bim\bme\bes\bs  Print  the  accumulated  user and system times for the shell and
+       t\bti\bim\bme\bes\bs  Print the accumulated user and system times for  the  shell  and
               for processes run from the shell.  The return status is 0.
 
        t\btr\bra\bap\bp [-\b-l\blp\bp] [[_\ba_\br_\bg] _\bs_\bi_\bg_\bs_\bp_\be_\bc ...]
-              The command _\ba_\br_\bg is to  be  read  and  executed  when  the  shell
-              receives  signal(s)  _\bs_\bi_\bg_\bs_\bp_\be_\bc.   If _\ba_\br_\bg is absent (and there is a
-              single _\bs_\bi_\bg_\bs_\bp_\be_\bc) or -\b-, each specified  signal  is  reset  to  its
-              original  disposition  (the  value  it  had upon entrance to the
-              shell).  If _\ba_\br_\bg is the null string the signal specified by  each
-              _\bs_\bi_\bg_\bs_\bp_\be_\b is ignored by the shell and by the commands it invokes.
-              If _\ba_\br_\bg is not present and -\b-p\bp has been supplied,  then  the  trap
-              commands  associated  with  each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are displayed.  If no
-              arguments are supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp  prints  the
-              list  of  commands  associated  with each signal.  The -\b-l\bl option
-              causes the shell to print a list of signal names and their  cor-
-              responding  numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal name
-              defined in <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>, or a signal  number.   Signal  names  are
+              The  command  _\ba_\br_\bg  is  to  be  read  and executed when the shell
+              receives signal(s) _\bs_\bi_\bg_\bs_\bp_\be_\bc.  If _\ba_\br_\bg is absent (and  there  is  a
+              single  _\bs_\bi_\bg_\bs_\bp_\be_\bc)  or  -\b-,  each  specified signal is reset to its
+              original disposition (the value it  had  upon  entrance  to  the
+              shell).   If _\ba_\br_\bg is the null string the signal specified by each
+              _\bs_\bi_\bg_\bs_\bp_\be_\bis ignored by the shell and by the commands it  invokes.
+              If  _\ba_\br_\bg  is  not present and -\b-p\bp has been supplied, then the trap
+              commands associated with each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are  displayed.   If  no
+              arguments  are  supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp prints the
+              list of commands associated with each  signal.   The  -\b-l\b option
+              causes  the shell to print a list of signal names and their cor-
+              responding numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal  name
+              defined  in  <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>,  or  a signal number.  Signal names are
               case insensitive and the S\bSI\bIG\bG prefix is optional.
 
-              If  a  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg is executed on exit
-              from the shell.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is  exe-
-              cuted  before  every  _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, _\bf_\bo_\br command, _\bc_\ba_\bs_\be command,
-              _\bs_\be_\bl_\be_\bc_\bcommand, every arithmetic _\bf_\bo_\br  command,  and  before  the
-              first  command  executes  in a shell function (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
-              above).  Refer to the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option to  the
+              If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg  is  executed  on  exit
+              from  the shell.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is exe-
+              cuted before every _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, _\bf_\bo_\br  command,  _\bc_\ba_\bs_\b command,
+              _\bs_\be_\bl_\be_\bc_\b command,  every  arithmetic  _\bf_\bo_\br command, and before the
+              first command executes in a shell function  (see  S\bSH\bHE\bEL\bLL\b G\bGR\bRA\bAM\bMM\bMA\bAR\bR
+              above).   Refer to the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option to the
               s\bsh\bho\bop\bpt\bt builtin for details of its effect on the D\bDE\bEB\bBU\bUG\bG trap.  If a
               _\bs_\bi_\bg_\bs_\bp_\be_\bc is R\bRE\bET\bTU\bUR\bRN\bN, the command _\ba_\br_\bg is executed each time a shell
               function or a script executed with the .\b. or s\bso\bou\bur\brc\bce\be builtins fin-
               ishes executing.
 
-              If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is E\bER\bRR\bR, the command  _\ba_\br_\bg  is  executed  whenever  a
+              If  a  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  E\bER\bRR\bR,  the command _\ba_\br_\bg is executed whenever a
               pipeline (which may consist of a single simple command), a list,
               or a compound command returns a non-zero exit status, subject to
-              the  following  conditions.  The E\bER\bRR\bR trap is not executed if the
+              the following conditions.  The E\bER\bRR\bR trap is not executed  if  the
               failed command is part of the command list immediately following
-              a  w\bwh\bhi\bil\ble\be  or u\bun\bnt\bti\bil\bl keyword, part of the test in an _\bi_\bf statement,
+              a w\bwh\bhi\bil\ble\be or u\bun\bnt\bti\bil\bl keyword, part of the test in an  _\bi_\b statement,
               part of a command executed in a &\b&&\b& or |\b||\b| list except the command
-              following  the final &\b&&\b& or |\b||\b|, any command in a pipeline but the
-              last, or if the command's return value is being  inverted  using
-              !\b!.   These  are  the  same conditions obeyed by the e\ber\brr\bre\bex\bxi\bit\bt (-\b-e\be)
+              following the final &\b&&\b& or |\b||\b|, any command in a pipeline but  the
+              last,  or  if the command's return value is being inverted using
+              !\b!.  These are the same conditions obeyed  by  the  e\ber\brr\bre\bex\bxi\bit\b (-\b-e\be)
               option.
 
-              Signals ignored upon entry to the shell  cannot  be  trapped  or
-              reset.   Trapped signals that are not being ignored are reset to
+              Signals  ignored  upon  entry  to the shell cannot be trapped or
+              reset.  Trapped signals that are not being ignored are reset  to
               their original values in a subshell or subshell environment when
-              one  is  created.   The return status is false if any _\bs_\bi_\bg_\bs_\bp_\be_\bc is
+              one is created.  The return status is false if  any  _\bs_\bi_\bg_\bs_\bp_\be_\b is
               invalid; otherwise t\btr\bra\bap\bp returns true.
 
        t\bty\byp\bpe\be [-\b-a\baf\bft\btp\bpP\bP] _\bn_\ba_\bm_\be [_\bn_\ba_\bm_\be ...]
-              With no options, indicate how each _\bn_\ba_\bm_\be would be interpreted  if
+              With  no options, indicate how each _\bn_\ba_\bm_\be would be interpreted if
               used as a command name.  If the -\b-t\bt option is used, t\bty\byp\bpe\be prints a
-              string which is one of _\ba_\bl_\bi_\ba_\bs,  _\bk_\be_\by_\bw_\bo_\br_\bd,  _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn,  _\bb_\bu_\bi_\bl_\bt_\bi_\bn,  or
-              _\bf_\bi_\bl_\b if  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word, function,
-              builtin, or disk file, respectively.  If the _\bn_\ba_\bm_\be is not  found,
-              then  nothing  is  printed,  and  an  exit  status  of  false is
-              returned.  If the -\b-p\bp option is used,  t\bty\byp\bpe\be  either  returns  the
+              string  which  is  one  of _\ba_\bl_\bi_\ba_\bs, _\bk_\be_\by_\bw_\bo_\br_\bd, _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn, _\bb_\bu_\bi_\bl_\bt_\bi_\bn, or
+              _\bf_\bi_\bl_\bif  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word,  function,
+              builtin,  or disk file, respectively.  If the _\bn_\ba_\bm_\be is not found,
+              then nothing  is  printed,  and  an  exit  status  of  false  is
+              returned.   If  the  -\b-p\bp  option is used, t\bty\byp\bpe\be either returns the
               name of the disk file that would be executed if _\bn_\ba_\bm_\be were speci-
               fied as a command name, or nothing if ``type -t name'' would not
-              return  _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each _\bn_\ba_\bm_\be,
+              return _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each  _\bn_\ba_\bm_\be,
               even if ``type -t name'' would not return _\bf_\bi_\bl_\be.  If a command is
               hashed, -\b-p\bp and -\b-P\bP print the hashed value, which is not necessar-
-              ily the file that appears first in P\bPA\bAT\bTH\bH.  If the  -\b-a\ba  option  is
-              used,  t\bty\byp\bpe\be  prints all of the places that contain an executable
+              ily  the  file  that appears first in P\bPA\bAT\bTH\bH.  If the -\b-a\ba option is
+              used, t\bty\byp\bpe\be prints all of the places that contain  an  executable
               named _\bn_\ba_\bm_\be.  This includes aliases and functions, if and only if
               the -\b-p\bp option is not also used.  The table of hashed commands is
-              not consulted when using -\b-a\ba.  The  -\b-f\bf  option  suppresses  shell
+              not  consulted  when  using  -\b-a\ba.  The -\b-f\bf option suppresses shell
               function lookup, as with the c\bco\bom\bmm\bma\ban\bnd\bd builtin.  t\bty\byp\bpe\be returns true
               if all of the arguments are found, false if any are not found.
 
        u\bul\bli\bim\bmi\bit\bt [-\b-H\bHS\bSa\bab\bbc\bcd\bde\bef\bfi\bik\bkl\blm\bmn\bnp\bpq\bqr\brs\bst\btu\buv\bvx\bxP\bPT\bT [_\bl_\bi_\bm_\bi_\bt]]
-              Provides control over the resources available to the  shell  and
-              to  processes started by it, on systems that allow such control.
+              Provides  control  over the resources available to the shell and
+              to processes started by it, on systems that allow such  control.
               The -\b-H\bH and -\b-S\bS options specify that the hard or soft limit is set
-              for  the  given resource.  A hard limit cannot be increased by a
-              non-root user once it is set; a soft limit may be  increased  up
-              to  the value of the hard limit.  If neither -\b-H\bH nor -\b-S\bS is speci-
+              for the given resource.  A hard limit cannot be increased  by  a
+              non-root  user  once it is set; a soft limit may be increased up
+              to the value of the hard limit.  If neither -\b-H\bH nor -\b-S\bS is  speci-
               fied, both the soft and hard limits are set.  The value of _\bl_\bi_\bm_\bi_\bt
               can be a number in the unit specified for the resource or one of
               the special values h\bha\bar\brd\bd, s\bso\bof\bft\bt, or u\bun\bnl\bli\bim\bmi\bit\bte\bed\bd, which stand for the
-              current  hard  limit,  the  current  soft  limit,  and no limit,
-              respectively.  If _\bl_\bi_\bm_\bi_\bt is omitted, the  current  value  of  the
-              soft  limit  of the resource is printed, unless the -\b-H\bH option is
+              current hard limit,  the  current  soft  limit,  and  no  limit,
+              respectively.   If  _\bl_\bi_\bm_\bi_\bt  is  omitted, the current value of the
+              soft limit of the resource is printed, unless the -\b-H\bH  option  is
               given.  When more than one resource is specified, the limit name
               and unit are printed before the value.  Other options are inter-
               preted as follows:
@@ -1701,12 +1763,12 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-c\bc     The maximum size of core files created
               -\b-d\bd     The maximum size of a process's data segment
               -\b-e\be     The maximum scheduling priority ("nice")
-              -\b-f\bf     The maximum size of files written by the  shell  and  its
+              -\b-f\bf     The  maximum  size  of files written by the shell and its
                      children
               -\b-i\bi     The maximum number of pending signals
               -\b-k\bk     The maximum number of kqueues that may be allocated
               -\b-l\bl     The maximum size that may be locked into memory
-              -\b-m\bm     The  maximum resident set size (many systems do not honor
+              -\b-m\bm     The maximum resident set size (many systems do not  honor
                      this limit)
               -\b-n\bn     The maximum number of open file descriptors (most systems
                      do not allow this value to be set)
@@ -1715,72 +1777,75 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-r\br     The maximum real-time scheduling priority
               -\b-s\bs     The maximum stack size
               -\b-t\bt     The maximum amount of cpu time in seconds
-              -\b-u\bu     The  maximum  number  of  processes available to a single
+              -\b-u\bu     The maximum number of processes  available  to  a  single
                      user
-              -\b-v\bv     The maximum amount of virtual  memory  available  to  the
+              -\b-v\bv     The  maximum  amount  of  virtual memory available to the
                      shell and, on some systems, to its children
               -\b-x\bx     The maximum number of file locks
               -\b-P\bP     The maximum number of pseudoterminals
               -\b-T\bT     The maximum number of threads
 
-              If  _\bl_\bi_\bm_\bi_\bt  is given, and the -\b-a\ba option is not used, _\bl_\bi_\bm_\bi_\bt is the
-              new value of the specified resource.  If  no  option  is  given,
-              then  -\b-f\bf is assumed.  Values are in 1024-byte increments, except
-              for -\b-t\bt, which is in seconds; -\b-p\bp, which is in units  of  512-byte
-              blocks;  -\b-P\bP,  -\b-T\bT, -\b-b\bb, -\b-k\bk, -\b-n\bn, and -\b-u\bu, which are unscaled values;
-              and, when in Posix mode, -\b-c\bc and -\b-f\bf, which are in 512-byte incre-
+              If _\bl_\bi_\bm_\bi_\bt is given, and the -\b-a\ba option is not used, _\bl_\bi_\bm_\bi_\bt  is  the
+              new  value  of  the  specified resource.  If no option is given,
+              then -\b-f\bf is assumed.  Values are in 1024-byte increments,  except
+              for  -\b-t\bt,  which is in seconds; -\b-p\bp, which is in units of 512-byte
+              blocks; -\b-P\bP, -\b-T\bT, -\b-b\bb, -\b-k\bk, -\b-n\bn, and -\b-u\bu, which are  unscaled  values;
+              and, when in posix mode, -\b-c\bc and -\b-f\bf, which are in 512-byte incre-
               ments.  The return status is 0 unless an invalid option or argu-
               ment is supplied, or an error occurs while setting a new limit.
 
        u\bum\bma\bas\bsk\bk [-\b-p\bp] [-\b-S\bS] [_\bm_\bo_\bd_\be]
               The user file-creation mask is set to _\bm_\bo_\bd_\be.  If _\bm_\bo_\bd_\be 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
-              _\bc_\bh_\bm_\bo_\bd(1).   If _\bm_\bo_\bd_\be is omitted, the current value of the mask is
-              printed.  The -\b-S\bS option causes the mask to be  printed  in  sym-
-              bolic  form;  the  default output is an octal number.  If the -\b-p\bp
+              a digit, it is interpreted as an octal number; otherwise  it  is
+              interpreted  as a symbolic mode mask similar to that accepted by
+              _\bc_\bh_\bm_\bo_\bd(1).  If _\bm_\bo_\bd_\be is omitted, the current value of the mask  is
+              printed.   The  -\b-S\bS  option causes the mask to be printed in sym-
+              bolic form; the default output is an octal number.   If  the  -\b-p\bp
               option is supplied, and _\bm_\bo_\bd_\be 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 _\bm_\bo_\bd_\be  argument  was  supplied,
+              was  successfully  changed  or if no _\bm_\bo_\bd_\be argument was supplied,
               and false otherwise.
 
        u\bun\bna\bal\bli\bia\bas\bs [-a\ba] [_\bn_\ba_\bm_\be ...]
-              Remove  each  _\bn_\ba_\bm_\be  from  the list of defined aliases.  If -\b-a\ba is
-              supplied, all alias definitions are removed.  The  return  value
+              Remove each _\bn_\ba_\bm_\be from the list of defined  aliases.   If  -\b-a\b is
+              supplied,  all  alias definitions are removed.  The return value
               is true unless a supplied _\bn_\ba_\bm_\be is not a defined alias.
 
        u\bun\bns\bse\bet\bt [-f\bfv\bv] [-n\bn] [_\bn_\ba_\bm_\be ...]
-              For  each  _\bn_\ba_\bm_\be,  remove the corresponding variable or function.
+              For each _\bn_\ba_\bm_\be, remove the corresponding  variable  or  function.
               If the -\b-v\bv option is given, each _\bn_\ba_\bm_\be refers to a shell variable,
-              and  that  variable  is removed.  Read-only variables may not be
-              unset.  If -\b-f\bf is specified, each _\bn_\ba_\bm_\be refers to  a  shell  func-
-              tion,  and the function definition is removed.  If the -\b-n\bn option
-              is supplied, and _\bn_\ba_\bm_\be is a variable with the _\bn_\ba_\bm_\be_\br_\be_\b attribute,
-              _\bn_\ba_\bm_\b will  be unset rather than the variable it references.  -\b-n\bn
-              has no effect if the -\b-f\bf option is supplied.  If no  options  are
-              supplied,  each  _\bn_\ba_\bm_\be refers to a variable; if there is no vari-
-              able by that name, any function with that name is  unset.   Each
-              unset  variable  or  function  is  removed  from the environment
-              passed to subsequent commands.  If any of C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS,  R\bRA\bAN\bN-\b-
+              and that variable is removed.  Read-only variables  may  not  be
+              unset.   If  -\b-f\bf  is specified, each _\bn_\ba_\bm_\be refers to a shell func-
+              tion, and the function definition is removed.  If the -\b-n\b option
+              is  supplied, and _\bn_\ba_\bm_\be is a variable with the _\bn_\ba_\bm_\be_\br_\be_\bf attribute,
+              _\bn_\ba_\bm_\bwill be unset rather than the variable it  references.   -\b-n\bn
+              has  no  effect if the -\b-f\bf option is supplied.  If no options are
+              supplied, each _\bn_\ba_\bm_\be refers to a variable; if there is  no  vari-
+              able  by  that name, any function with that name is unset.  Each
+              unset variable or  function  is  removed  from  the  environment
+              passed  to subsequent commands.  If any of C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS, R\bRA\bAN\bN-\b-
               D\bDO\bOM\bM, S\bSE\bEC\bCO\bON\bND\bDS\bS, L\bLI\bIN\bNE\bEN\bNO\bO, H\bHI\bIS\bST\bTC\bCM\bMD\bD, F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE, G\bGR\bRO\bOU\bUP\bPS\bS, or D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK are
               unset, they lose their special properties, even if they are sub-
               sequently reset.  The exit status is true unless a _\bn_\ba_\bm_\be is read-
               only.
 
-       w\bwa\bai\bit\bt [-\b-n\bn] [_\bn _\b._\b._\b.]
+       w\bwa\bai\bit\bt [-\b-f\bfn\bn] [_\bi_\bd _\b._\b._\b.]
               Wait for each specified child process and return its termination
-              status.  Each _\bn 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 _\bn is not given, all currently active child pro-
+              status.  Each _\bi_\bd 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 _\bi_\bd is not given, all currently active child pro-
               cesses are waited for, and the return status is zero.  If the -\b-n\bn
-              option  is  supplied,  w\bwa\bai\bit\bt  waits  for any job to terminate and
-              returns its exit status.  If _\bn 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.
+              option is supplied, w\bwa\bai\bit\bt waits for  any  job  to  terminate  and
+              returns  its exit status.  If the -\b-f\bf option is supplied, and job
+              control is enabled, w\bwa\bai\bit\bt forces _\bi_\bd to terminate before returning
+              its  status, instead of returning when it changes status.  If _\bi_\bd
+              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.
 
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
        bash(1), sh(1)
 
 
 
-GNU Bash-4.2                      2004 Apr 20                 BASH_BUILTINS(1)
+GNU Bash 5.0                      2004 Apr 20                 BASH_BUILTINS(1)
index 829a49c2751652663ff37fdf8693a6285f6bfe9f..4413c76f019747dac80335d326c66c82c58db546 100644 (file)
@@ -7,7 +7,7 @@
 .de FN
 \fI\|\\$1\|\fP
 ..
-.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash-4.2"
+.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0"
 .SH NAME
 bash, :, ., [, alias, bg, bind, break, builtin, caller,
 cd, command, compgen, complete,
index f6aec86f532e6cea73480aa2985e60915b7194ff..c2f8de15d9eb6fff59b172a639976f9f16d76505 100644 (file)
@@ -1,13 +1,13 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.22.3
-%%CreationDate: Wed Aug 31 10:24:00 2016
+%%CreationDate: Wed Jan  2 09:14:38 2019
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
 %%+ font Symbol
 %%+ font Courier
 %%DocumentSuppliedResources: procset grops 1.22 3
-%%Pages: 23
+%%Pages: 25
 %%PageOrder: Ascend
 %%DocumentMedia: Default 612 792 0 () ()
 %%Orientation: Portrait
@@ -257,43 +257,44 @@ imes, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108
 .329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063
 (Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\
 ted in this section as accepting options preceded by)-.2 F F2<ad>108
-184.8 Q F0(accepts)2.533 E F2<adad>2.533 E F0 .034
-(to signify the end of the options.)2.533 F(The)5.034 E F2(:)2.534 E F0
-(,)A F2(true)2.534 E F0(,)A F2(false)2.534 E F0 2.534(,a)C(nd)-2.534 E
-F2(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and)
-.2 F 1.549(do not treat)108 196.8 R F2<adad>4.049 E F0(specially)4.049 E
-6.549(.T)-.65 G(he)-6.549 E F2(exit)4.049 E F0(,)A F2(logout)4.049 E F0
-(,)A F2 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F2(br)4.049 E(eak)-.18
-E F0(,)A F2(continue)4.049 E F0(,)A F2(let)4.049 E F0 4.049(,a)C(nd)
--4.049 E F2(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F
-.26(process ar)108 208.8 R .26(guments be)-.18 F .26(ginning with)-.15 F
-F2<ad>2.76 E F0 .261(without requiring)2.76 F F2<adad>2.761 E F0 5.261
-(.O)C .261(ther b)-5.261 F .261(uiltins that accept ar)-.2 F .261
-(guments b)-.18 F .261(ut are not)-.2 F 1.154
-(speci\214ed as accepting options interpret ar)108 220.8 R 1.154
-(guments be)-.18 F 1.154(ginning with)-.15 F F2<ad>3.654 E F0 1.154
-(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F2
-<adad>3.654 E F0(to)3.654 E(pre)108 232.8 Q -.15(ve)-.25 G
-(nt this interpretation.).15 E F2(:)108 250.8 Q F0([)2.5 E/F3 10
-/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 262.8 R
-.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F
-(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452(and performing an)
-3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144
-274.8 R(return status is zero.)2.5 E F2(.)110.5 291.6 Q F3(\214lename)
-6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A F2(sour)108 303.6 Q(ce)
--.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A 1.02
-(Read and e)144 315.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F3
-(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
-(vironment and return the e)-.4 F(xit)-.15 E 1.458
-(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.458
-(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F3
-(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F
-.608(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189
-E F0 .608(are used to \214nd the directory containing)2.858 F F3
-(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)
--5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6
-R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832
-(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833
+184.8 Q F0(accepts)3.077 E F2<adad>3.077 E F0 .577
+(to signify the end of the options.)3.077 F(The)5.577 E F2(:)3.077 E F0
+(,)A F2(true)3.077 E F0(,)A F2(false)3.077 E F0 3.077(,a)C(nd)-3.077 E
+F2(test)3.077 E F0(/)A F2([)A F0 -.2(bu)3.077 G .577
+(iltins do not accept options).2 F .462(and do not treat)108 196.8 R F2
+<adad>2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F2(exit)
+2.961 E F0(,)A F2(logout)2.961 E F0(,)A F2 -.18(re)2.961 G(tur).18 E(n)
+-.15 E F0(,)A F2(br)2.961 E(eak)-.18 E F0(,)A F2(continue)2.961 E F0(,)A
+F2(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F2(shift)2.961 E F0 -.2(bu)
+2.961 G .461(iltins accept and).2 F .26(process ar)108 208.8 R .26
+(guments be)-.18 F .26(ginning with)-.15 F F2<ad>2.76 E F0 .261
+(without requiring)2.76 F F2<adad>2.761 E F0 5.261(.O)C .261(ther b)
+-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261
+(ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar)
+108 220.8 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F2<ad>
+3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154
+(lid options and require).25 F F2<adad>3.654 E F0(to)3.654 E(pre)108
+232.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F2(:)108 250.8 Q F0
+([)2.5 E/F3 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)
+144 262.8 R .451(fect; the command does nothing be)-.25 F .452(yond e)
+-.15 F(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452
+(and performing an)3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5
+(redirections. The)144 274.8 R(return status is zero.)2.5 E F2(.)110.5
+291.6 Q F3(\214lename)6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A
+F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A
+(guments)-.37 E F0(])A 1.02(Read and e)144 315.6 R -.15(xe)-.15 G 1.02
+(cute commands from).15 F F3(\214lename)5.43 E F0 1.02
+(in the current shell en)3.7 F 1.02(vironment and return the e)-.4 F
+(xit)-.15 E 1.458(status of the last command e)144 327.6 R -.15(xe)-.15
+G 1.458(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)
+-6.458 E F3(\214lename)5.868 E F0 1.458
+(does not contain a slash, \214le-)4.138 F .608(names in)144 339.6 R/F4
+9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608
+(are used to \214nd the directory containing)2.858 F F3(\214lename)3.108
+E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 -.666(PA)
+3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 R -.15(xe)-.15 G
+3.332(cutable. When).15 F F2(bash)3.332 E F0 .832(is not in)3.332 F F3
+.832(posix mode)3.332 F F0 3.332(,t)C .833
 (he current directory is searched if no)-3.332 F .982
 (\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9
 /Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18
@@ -375,8 +376,8 @@ F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F
 (ut each binding or command must be passed as a separate ar)-3.183 F
 .484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
 (re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E
-.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash-4.2)72
-768 Q(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP
+.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72
+768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP
 %%Page: 2 2
 %%BeginPageSetup
 BP
@@ -499,7 +500,7 @@ G(H).855 E F0(de\214nes)3.286 E .85
 5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665
 (irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
 .665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665
-(ull directory name)-3.165 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E
+(ull directory name)-3.165 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E
 (2)203.725 E 0 Cg EP
 %%Page: 3 3
 %%BeginPageSetup
@@ -594,2044 +595,2148 @@ em directly from a completion speci\214cation with the same \215ags.)144
 (will be displayed.)2.5 E(The return v)144 489.6 Q
 (alue is true unless an in)-.25 E -.25(va)-.4 G
 (lid option is supplied, or no matches were generated.).25 E F2
-(complete)108 506.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C
-F2<ad6f>-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E
-F0 3.728(][)C F2<ad41>-3.728 E F3(action)3.728 E F0 3.728(][)C F2<ad47>
--3.728 E F3(globpat)3.728 E F0 3.729(][)C F2<ad57>-3.729 E F3(wor)3.729
-E(dlist)-.37 E F0 3.729(][)C F2<ad46>-3.729 E F3(func-)3.729 E(tion)108
-518.4 Q F0 2.5(][)C F2<ad43>-2.5 E F3(command)2.5 E F0(])A([)144 530.4 Q
-F2<ad58>A F3(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F3(pr)2.5 E
-(e\214x)-.37 E F0 2.5(][)C F2<ad53>-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(])
-A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108
-542.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E
-.634(Specify ho)144 554.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634
-(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134
-F .633(If the)5.634 F F2<ad70>3.133 E F0 .633
-(option is supplied, or if no)3.133 F .139(options are supplied, e)144
-566.4 R .139(xisting completion speci\214cations are printed in a w)-.15
-F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)
-144 578.4 R(The)5.31 E F2<ad72>2.81 E F0 .31(option remo)2.81 F -.15(ve)
--.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3
-(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E
-F3(name)2.81 E F0(s)A 1.346
-(are supplied, all completion speci\214cations.)144 590.4 R(The)6.347 E
-F2<ad44>3.847 E F0 1.347(option indicates that the remaining options)
-3.847 F .5(and actions should apply to the `)144 602.4 R(`def)-.74 E
+(complete)108 506.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C
+F2<ad6f>-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404
+E F0 3.404(][)C F2<ad41>-3.404 E F3(action)3.404 E F0 3.404(][)C F2
+<ad47>-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2<ad57>-3.404 E F3(wor)
+3.404 E(dlist)-.37 E F0 3.405(][)C F2<ad46>-3.405 E F3(func-)3.405 E
+(tion)108 518.4 Q F0 2.5(][)C F2<ad43>-2.5 E F3(command)2.5 E F0(])A([)
+144 530.4 Q F2<ad58>A F3(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F3
+(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2<ad53>-2.5 E F3(suf)2.5 E<8c78>
+-.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2
+(complete \255pr)108 542.4 Q F0([)2.5 E F2(\255DEI)A F0 2.5(][)C F3
+(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 554.4 R 3.134(wa)-.25 G
+-.18(rg)-3.134 G .634(uments to each).18 F F3(name)3.134 E F0 .634
+(should be completed.)3.134 F .633(If the)5.634 F F2<ad70>3.133 E F0
+.633(option is supplied, or if no)3.133 F .139(options are supplied, e)
+144 566.4 R .139(xisting completion speci\214cations are printed in a w)
+-.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31
+(reused as input.)144 578.4 R(The)5.31 E F2<ad72>2.81 E F0 .31
+(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31
+(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C
+1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207
+(are supplied, all completion speci\214cations.)144 590.4 R(The)6.207 E
+F2<ad44>3.707 E F0 1.208(option indicates that other supplied options)
+3.708 F .5(and actions should apply to the `)144 602.4 R(`def)-.74 E
 (ault')-.1 E 3('c)-.74 G .5
 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
 614.4 S .955(ommand for which no completion has pre)-3.455 F .955
 (viously been de\214ned.)-.25 F(The)5.955 E F2<ad45>3.455 E F0 .955
-(option indicates that)3.455 F .065
-(the remaining options and actions should apply to `)144 626.4 R
-(`empty')-.74 E 2.564('c)-.74 G .064
-(ommand completion; that is, comple-)-2.564 F
-(tion attempted on a blank line.)144 638.4 Q 1.437
+(option indicates that)3.455 F .876
+(other supplied options and actions should apply to `)144 626.4 R
+(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
+-3.376 F .447(pletion attempted on a blank line.)144 638.4 R(The)5.447 E
+F2<ad49>2.947 E F0 .448
+(option indicates that other supplied options and actions)2.947 F 1.335
+(should apply to completion on the inital non-assignment w)144 650.4 R
+1.334(ord on the line, or after a command)-.1 F .43(delimiter such as)
+144 662.4 R F2(;)2.93 E F0(or)2.93 E F2(|)2.93 E F0 2.93(,w)C .431
+(hich is usually command name completion.)-2.93 F .431
+(If multiple options are sup-)5.431 F .708(plied, the)144 674.4 R F2
+<ad44>3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15
+(ve)-.15 G(r).15 E F2<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
+F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2
+<ad49>3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H
+(f).15 E F2<ad44>3.207 E F0(,)A F2<ad45>144 686.4 Q F0 2.603(,o)C(r)
+-2.603 E F2<ad49>2.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
+G(ther)-2.603 E F3(name)2.603 E F0(ar)2.603 E .103
+(guments are ignored; these completions only apply to the)-.18 F
+(case speci\214ed by the option.)144 698.4 Q 1.438
 (The process of applying these completion speci\214cations when w)144
-662.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144
-674.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E
-(ogrammable Completion)-.18 E F0(.)A .556
-(Other options, if speci\214ed, ha)144 698.4 R .856 -.15(ve t)-.2 H .555
-(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555
-(guments to the)-.18 F F2<ad47>3.055 E F0(,)A F2<ad57>3.055 E F0 3.055
-(,a)C(nd)-3.055 E F2<ad58>3.055 E F0 .722(options \(and, if necessary)
-144 710.4 R 3.222(,t)-.65 G(he)-3.222 E F2<ad50>3.222 E F0(and)3.222 E
-F2<ad53>3.222 E F0 .723
-(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E
-(sion before the)144 722.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G
-(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash-4.2)72 768 Q
-(2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP
+722.4 R 1.437(ord completion is attempted is)-.1 F(GNU Bash 5.0)72 768 Q
+(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP
 %%Page: 4 4
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6f>144 84 Q/F2 10
-/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 96 Q F2(comp-option)
-2.791 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291
+E(UIL)-.1 E(TINS\(1\))-.92 E(described abo)144 84 Q .3 -.15(ve u)-.15 H
+(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E(ogrammable Completion)-.18 E
+F0(.)A .555(Other options, if speci\214ed, ha)144 108 R .855 -.15(ve t)
+-.2 H .555(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F
+.555(guments to the)-.18 F F1<ad47>3.056 E F0(,)A F1<ad57>3.056 E F0
+3.056(,a)C(nd)-3.056 E F1<ad58>3.056 E F0 .723
+(options \(and, if necessary)144 120 R 3.223(,t)-.65 G(he)-3.223 E F1
+<ad50>3.223 E F0(and)3.223 E F1<ad53>3.223 E F0 .722
+(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E
+(sion before the)144 132 Q F1(complete)2.5 E F0 -.2(bu)2.5 G
+(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 144 Q/F2
+10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 156 Q F2(comp-option)
+2.79 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291
 (ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291
 (vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.)
-184 108 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184
-120 Q F0 .281(Perform the rest of the def)224 132 R(ault)-.1 E F1(bash)
+184 168 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184
+180 Q F0 .281(Perform the rest of the def)224 192 R(ault)-.1 E F1(bash)
 2.781 E F0 .281(completions if the compspec generates no)2.781 F
-(matches.)224 144 Q F1(default)184 156 Q F0 2.876(Use readline')224 156
-R 5.376(sd)-.55 G(ef)-5.376 E 2.875
+(matches.)224 204 Q F1(default)184 216 Q F0 2.875(Use readline')224 216
+R 5.375(sd)-.55 G(ef)-5.375 E 2.876
 (ault \214lename completion if the compspec generates no)-.1 F(matches.)
-224 168 Q F1(dir)184 180 Q(names)-.15 E F0(Perform directory name compl\
-etion if the compspec generates no matches.)224 192 Q F1(\214lenames)184
-204 Q F0 -.7(Te)224 216 S .137(ll readline that the compspec generates \
-\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E
-.134(name\255speci\214c processing \(lik)224 228 R 2.634(ea)-.1 G .134
+224 228 Q F1(dir)184 240 Q(names)-.15 E F0(Perform directory name compl\
+etion if the compspec generates no matches.)224 252 Q F1(\214lenames)184
+264 Q F0 -.7(Te)224 276 S .137(ll readline that the compspec generates \
+\214lenames, so it can perform an).7 F 2.636<798c>-.15 G(le-)-2.636 E
+.134(name\255speci\214c processing \(lik)224 288 R 2.634(ea)-.1 G .134
 (dding a slash to directory names, quoting spe-)-2.634 F .45
-(cial characters, or suppressing trailing spaces\).)224 240 R .45
-(Intended to be used with shell)5.45 F(functions.)224 252 Q F1(noquote)
-184 264 Q F0 -.7(Te)224 264 S .814
+(cial characters, or suppressing trailing spaces\).)224 300 R .45
+(Intended to be used with shell)5.45 F(functions.)224 312 Q F1(noquote)
+184 324 Q F0 -.7(Te)224 324 S .814
 (ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
-3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F
-(\214lenames is the def)224 276 Q(ault\).)-.1 E F1(nosort)184 288 Q F0
--.7(Te)224 288 S(ll readline not to sort the list of possible completio\
-ns alphabetically).7 E(.)-.65 E F1(nospace)184 300 Q F0 -.7(Te)224 300 S
+3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F
+(\214lenames is the def)224 336 Q(ault\).)-.1 E F1(nosort)184 348 Q F0
+-.7(Te)224 348 S(ll readline not to sort the list of possible completio\
+ns alphabetically).7 E(.)-.65 E F1(nospace)184 360 Q F0 -.7(Te)224 360 S
 .22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1
-F .22(ords completed at the end)-.1 F(of the line.)224 312 Q F1
-(plusdirs)184 324 Q F0 1.985(After an)224 324 R 4.485(ym)-.15 G 1.985
+F .22(ords completed at the end)-.1 F(of the line.)224 372 Q F1
+(plusdirs)184 384 Q F0 1.985(After an)224 384 R 4.485(ym)-.15 G 1.985
 (atches de\214ned by the compspec are generated, directory name)-4.485 F
-.583(completion is attempted and an)224 336 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224 348
-Q F1<ad41>144 360 Q F2(action)2.5 E F0(The)184 372 Q F2(action)2.5 E F0
+.584(completion is attempted and an)224 396 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224 408
+Q F1<ad41>144 420 Q F2(action)2.5 E F0(The)184 432 Q F2(action)2.5 E F0
 (may be one of the follo)2.5 E
 (wing to generate a list of possible completions:)-.25 E F1(alias)184
-384 Q F0(Alias names.)224 384 Q(May also be speci\214ed as)5 E F1<ad61>
-2.5 E F0(.)A F1(arrayv)184 396 Q(ar)-.1 E F0(Array v)224 408 Q
-(ariable names.)-.25 E F1(binding)184 420 Q(Readline)224 420 Q F0 -.1
-(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 432 S(iltin)
-.2 E F0(Names of shell b)224 432 Q(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 444
-Q F0(Command names.)224 456 Q(May also be speci\214ed as)5 E F1<ad63>2.5
-E F0(.)A F1(dir)184 468 Q(ectory)-.18 E F0(Directory names.)224 480 Q
-(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 492
-Q F0(Names of disabled shell b)224 504 Q(uiltins.)-.2 E F1(enabled)184
-516 Q F0(Names of enabled shell b)224 516 Q(uiltins.)-.2 E F1(export)184
-528 Q F0(Names of e)224 528 Q(xported shell v)-.15 E 2.5(ariables. May)
+444 Q F0(Alias names.)224 444 Q(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 456 Q(ar)-.1 E F0(Array v)224 468 Q
+(ariable names.)-.25 E F1(binding)184 480 Q(Readline)224 480 Q F0 -.1
+(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 492 S(iltin)
+.2 E F0(Names of shell b)224 492 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 504
+Q F0(Command names.)224 516 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 528 Q(ectory)-.18 E F0(Directory names.)224 540 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 552
+Q F0(Names of disabled shell b)224 564 Q(uiltins.)-.2 E F1(enabled)184
+576 Q F0(Names of enabled shell b)224 576 Q(uiltins.)-.2 E F1(export)184
+588 Q F0(Names of e)224 588 Q(xported shell v)-.15 E 2.5(ariables. May)
 -.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-540 Q F0(File names.)224 540 Q(May also be speci\214ed as)5 E F1<ad66>
-2.5 E F0(.)A F1(function)184 552 Q F0(Names of shell functions.)224 564
-Q F1(gr)184 576 Q(oup)-.18 E F0(Group names.)224 576 Q
+600 Q F0(File names.)224 600 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 612 Q F0(Names of shell functions.)224 624
+Q F1(gr)184 636 Q(oup)-.18 E F0(Group names.)224 636 Q
 (May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
-588 Q F0(Help topics as accepted by the)224 600 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 612 Q F0(Hostnames, as tak)224 624
+648 Q F0(Help topics as accepted by the)224 660 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 672 Q F0(Hostnames, as tak)224 684
 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 636 Q F0
-(Job names, if job control is acti)224 636 Q -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 648 S
-(yw).1 E(ord)-.1 E F0(Shell reserv)224 660 Q(ed w)-.15 E 2.5(ords. May)
--.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-672 Q F0(Names of running jobs, if job control is acti)224 672 Q -.15
-(ve)-.25 G(.).15 E F1(ser)184 684 Q(vice)-.1 E F0(Service names.)224 684
-Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 696
-Q F0 -1.11(Va)224 696 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5
-E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
-(shopt)184 708 Q F0(Shell option names as accepted by the)224 708 Q F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E(GNU Bash-4.2)72 768 Q
-(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 696 Q F0
+(Job names, if job control is acti)224 696 Q -.15(ve)-.25 G 5(.M).15 G
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A(GNU Bash 5.0)72 768
+Q(2004 Apr 20)149.565 E(4)203.725 E 0 Cg EP
 %%Page: 5 5
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(signal)184 84 Q F0
-(Signal names.)224 84 Q F1(stopped)184 96 Q F0
-(Names of stopped jobs, if job control is acti)224 96 Q -.15(ve)-.25 G
-(.).15 E F1(user)184 108 Q F0(User names.)224 108 Q
-(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 120 S
-(riable).1 E F0(Names of all shell v)224 120 Q 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 132 Q/F2
-10/Times-Italic@0 SF(command)2.5 E(command)184 144 Q F0 1.056(is e)3.556
-F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF -.1(ke)184 84 S(yw).1
+E(ord)-.1 E F0(Shell reserv)224 96 Q(ed w)-.15 E 2.5(ords. May)-.1 F
+(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184 108 Q
+F0(Names of running jobs, if job control is acti)224 108 Q -.15(ve)-.25
+G(.).15 E F1(ser)184 120 Q(vice)-.1 E F0(Service names.)224 120 Q
+(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 132 Q
+F0 -1.11(Va)224 132 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5 E
+F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
+(shopt)184 144 Q F0(Shell option names as accepted by the)224 144 Q F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 156 Q F0
+(Signal names.)224 156 Q F1(stopped)184 168 Q F0
+(Names of stopped jobs, if job control is acti)224 168 Q -.15(ve)-.25 G
+(.).15 E F1(user)184 180 Q F0(User names.)224 180 Q
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 192 S
+(riable).1 E F0(Names of all shell v)224 192 Q 2.5(ariables. May)-.25 F
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 204 Q/F2
+10/Times-Italic@0 SF(command)2.5 E(command)184 216 Q F0 1.055(is e)3.555
+F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056
 (vironment, and its output is used as the possible)-.4 F(completions.)
-184 156 Q F1<ad46>144 168 Q F2(function)2.5 E F0 .113
-(The shell function)184 180 R F2(function)2.614 E F0 .114(is e)2.614 F
+184 228 Q F1<ad46>144 240 Q F2(function)2.5 E F0 .114
+(The shell function)184 252 R F2(function)2.614 E F0 .114(is e)2.614 F
 -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614
-(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 192 R
--.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1
-($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816
+(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 264 R
+-.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1
+($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817
 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
-(are being completed, the second ar)184 204 R 1.407(gument \()-.18 F F1
+(are being completed, the second ar)184 276 R 1.407(gument \()-.18 F F1
 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407
-(ord being completed, and the)-.1 F .104(third ar)184 216 R .104
-(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w)
--2.604 F .104(ord preceding the w)-.1 F .103
-(ord being completed on the current com-)-.1 F .101(mand line.)184 228 R
-.101(When it \214nishes, the possible completions are retrie)5.101 F
--.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the)
--.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 240 Q(Y)-.828 E F0(array v)2.25
-E(ariable.)-.25 E F1<ad47>144 252 Q F2(globpat)2.5 E F0 1.008
-(The pathname e)184 264 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507
-E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-)
--.15 F(tions.)184 276 Q F1<ad50>144 288 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
-184 300 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534
+(ord being completed, and the)-.1 F .103(third ar)184 288 R .103
+(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w)
+-2.603 F .104(ord preceding the w)-.1 F .104
+(ord being completed on the current com-)-.1 F .102(mand line.)184 300 R
+.102(When it \214nishes, the possible completions are retrie)5.102 F
+-.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the)
+-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 312 Q(Y)-.828 E F0(array v)2.25
+E(ariable.)-.25 E F1<ad47>144 324 Q F2(globpat)2.5 E F0 1.007
+(The pathname e)184 336 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507
+E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-)
+-.15 F(tions.)184 348 Q F1<ad50>144 360 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
+184 372 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
 (ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 312 Q F1<ad53>144 324 Q F2(suf)2.5 E
-<8c78>-.18 E(suf)184 324 Q<8c78>-.18 E F0
+-.15(ve)-.2 G(been applied.)184 384 Q F1<ad53>144 396 Q F2(suf)2.5 E
+<8c78>-.18 E(suf)184 396 Q<8c78>-.18 E F0
 (is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 336 Q F2(wor)2.5 E
-(dlist)-.37 E F0(The)184 348 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14
-(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139
-(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007
-(each resultant w)184 360 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15
-F 2.008(possible completions are the members of the)4.507 F
-(resultant list which match the w)184 372 Q(ord being completed.)-.1 E
-F1<ad58>144 384 Q F2(\214lterpat)2.5 E(\214lterpat)184 396 Q F0 .456
-(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F
-.455(is applied to the list of possible)2.956 F 1.596
-(completions generated by the preceding options and ar)184 408 R 1.596
-(guments, and each completion)-.18 F(matching)184 420 Q F2(\214lterpat)
-3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704
-(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
-(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704
-(tes the pattern;).05 F(in this case, an)184 432 Q 2.5(yc)-.15 G
+E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 408 Q F2(wor)2.5 E
+(dlist)-.37 E F0(The)184 420 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14
+(is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14
+(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F .981
+(each resultant w)184 432 R .981(ord is e)-.1 F 3.481(xpanded. Shell)
+-.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37
+E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 444 Q .765
+(vide a mechanism for the w)-.15 F .766
+(ords to contain shell metacharacters or characters in the)-.1 F -.25
+(va)184 456 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
+A F0 1.964
+(The possible completions are the members of the resultant list which)
+6.465 F(match the w)184 468 Q(ord being completed.)-.1 E F1<ad58>144 480
+Q F2(\214lterpat)2.5 E(\214lterpat)184 492 Q F0 .455
+(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F
+.456(is applied to the list of possible)2.956 F 1.596
+(completions generated by the preceding options and ar)184 504 R 1.596
+(guments, and each completion)-.18 F(matching)184 516 Q F2(\214lterpat)
+3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
+(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
+(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
+(tes the pattern;).05 F(in this case, an)184 528 Q 2.5(yc)-.15 G
 (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E .466(The return v)144 448.8 R .466
+-.15(ve)-.15 G(d.).15 E .467(The return v)144 544.8 R .467
 (alue is true unless an in)-.25 F -.25(va)-.4 G .466
-(lid option is supplied, an option other than).25 F F1<ad70>2.967 E F0
-(or)2.967 E F1<ad72>2.967 E F0 .467(is sup-)2.967 F 1.362
-(plied without a)144 460.8 R F2(name)3.862 E F0(ar)3.862 E 1.361
-(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H
-1.361(ompletion speci\214cation for a).15 F F2(name)144 472.8 Q F0
+(lid option is supplied, an option other than).25 F F1<ad70>2.966 E F0
+(or)2.966 E F1<ad72>2.966 E F0 .466(is sup-)2.966 F 1.361
+(plied without a)144 556.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
+(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H
+1.362(ompletion speci\214cation for a).15 F F2(name)144 568.8 Q F0
 (for which no speci\214cation e)2.5 E
 (xists, or an error occurs adding a completion speci\214cation.)-.15 E
-F1(compopt)108 489.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
-F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2
-(name)-2.5 E F0(])A .447(Modify completion options for each)144 501.6 R
-F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
-.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726
-(completion if no)144 513.6 R F2(name)3.226 E F0 3.226(sa)C .726
-(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
-C .725(re gi)-3.225 F -.15(ve)-.25 G .725
-(n, display the completion options for).15 F(each)144 525.6 Q F2(name)
-3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v)
+F1(compopt)108 585.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
+F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C
+F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 597.6
+F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
+.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725
+(completion if no)144 609.6 R F2(name)3.225 E F0 3.225(sa)C .725
+(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
+C .725(re gi)-3.225 F -.15(ve)-.25 G .726
+(n, display the completion options for).15 F(each)144 621.6 Q F2(name)
+3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v)
 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224
-F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 537.6 Q F0 -.2(bu)
-2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he)
--5.297 E F1<ad44>2.797 E F0 .297
-(option indicates that the remaining options should apply to)2.797 F
-1.227(the `)144 549.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\
+F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 633.6 Q F0 -.2(bu)
+2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
+-5.178 E F1<ad44>2.678 E F0 .178
+(option indicates that other supplied options should apply to)2.678 F
+1.228(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
 mmand completion; that is, completion attempted on a command for which \
-no)-3.727 F 2.178(completion has pre)144 561.6 R 2.178
-(viously been de\214ned.)-.25 F(The)7.178 E F1<ad45>4.678 E F0 2.177
-(option indicates that the remaining options)4.677 F(should apply to `)
-144 573.6 Q(`empty')-.74 E 2.5('c)-.74 G
-(ommand completion; that is, completion attempted on a blank line.)-2.5
-E 1.387(The return v)144 597.6 R 1.387(alue is true unless an in)-.25 F
--.25(va)-.4 G 1.388
+no)-3.728 F 2.038(completion has pre)144 657.6 R 2.038
+(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.039
+(option indicates that other supplied options)4.538 F 1.539
+(should apply to `)144 669.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
+(ommand completion; that is, completion attempted on a blank line.)
+-4.039 F(The)144 681.6 Q F1<ad49>3.205 E F0 .705(option indicates that \
+other supplied options should apply to completion on the inital non-)
+3.205 F .868(assignment w)144 693.6 R .868
+(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368
+E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-)
+-3.367 F(mand name completion.)144 705.6 Q 1.387(The return v)144 729.6
+R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388
 (lid option is supplied, an attempt is made to modify the).25 F
-(options for a)144 609.6 Q F2(name)2.5 E F0
-(for which no completion speci\214cation e)2.5 E
-(xists, or an output error occurs.)-.15 E F1(continue)108 626.4 Q F0([)
-2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 638.4 R 1.754
-(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A
-F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1
-(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753
-(is speci\214ed,)4.493 F 1.208(resume at the)144 650.4 R F2(n)3.709 E F0
-1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10
-/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209
-(is greater than the number of enclosing)3.949 F .514
-(loops, the last enclosing loop \(the `)144 662.4 R(`top-le)-.74 E -.15
-(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513
-(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is)
-3.013 E(not greater than or equal to 1.)144 674.4 Q F1(declar)108 691.2
-Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1<ad70>-2.5 E
-F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1
-(typeset)108 703.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1
-<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(..])-2.5 E 1.264(Declare v)144 715.2 R 1.264(ariables and/or gi)-.25 F
-1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no)
-3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25
-G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F
--.25(va)144 727.2 S 3.483(riables. The).25 F F1<ad70>3.483 E F0 .983
-(option will display the attrib)3.483 F .983(utes and v)-.2 F .982
-(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1
-<ad70>3.482 E F0 .982(is used)3.482 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)
-148.735 E(5)203.725 E 0 Cg EP
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP
 %%Page: 6 6
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(with)144 84 Q/F1 10/Times-Italic@0 SF(name)
-2.774 E F0(ar)2.774 E .274(guments, additional options, other than)-.18
-F/F2 10/Times-Bold@0 SF<ad66>2.775 E F0(and)2.775 E F2<ad46>2.775 E F0
-2.775(,a)C .275(re ignored.)-2.775 F(When)5.275 E F2<ad70>2.775 E F0
-.275(is supplied)2.775 F(without)144 96 Q F1(name)4.814 E F0(ar)4.814 E
-2.314(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F
-2.313(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2
-F(attrib)144 108 Q 1.181(utes speci\214ed by the additional options.)-.2
-F 1.182(If no other options are supplied with)6.181 F F2<ad70>3.682 E F0
-(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 120 R
-.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The)
--.25 F F2<ad66>3.12 E F0 .62(option will restrict the display)3.12 F
-1.29(to shell functions.)144 132 R(The)6.29 E F2<ad46>3.79 E F0 1.291(o\
-ption inhibits the display of function de\214nitions; only the function)
-3.791 F .948(name and attrib)144 144 R .948(utes are printed.)-.2 F .948
-(If the)5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948
+E(UIL)-.1 E(TINS\(1\))-.92 E(options for a)144 84 Q/F1 10/Times-Italic@0
+SF(name)2.5 E F0(for which no completion speci\214cation e)2.5 E
+(xists, or an output error occurs.)-.15 E/F2 10/Times-Bold@0 SF
+(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A 1.754(Resume the ne)144
+112.8 R 1.754(xt iteration of the enclosing)-.15 F F2 -.25(fo)4.254 G(r)
+.25 E F0(,)A F2(while)4.254 E F0(,)A F2(until)4.254 E F0 4.254(,o)C(r)
+-4.254 E F2(select)4.254 E F0 4.253(loop. If)4.254 F F1(n)4.613 E F0
+1.753(is speci\214ed,)4.493 F 1.208(resume at the)144 124.8 R F1(n)3.709
+E F0 1.209(th enclosing loop.)B F1(n)6.569 E F0 1.209(must be)3.949 F/F3
+10/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F1(n)4.069 E F0 1.209
+(is greater than the number of enclosing)3.949 F .514
+(loops, the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15
+(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513
+(The return v)5.513 F .513(alue is 0 unless)-.25 F F1(n)3.013 E F0(is)
+3.013 E(not greater than or equal to 1.)144 148.8 Q F2(declar)108 165.6
+Q(e)-.18 E F0([)2.5 E F2(\255aAfFgilnrtux)A F0 2.5(][)C F2<ad70>-2.5 E
+F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E F2
+(typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgilnrtux)A F0 2.5(][)C F2
+<ad70>-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C
+(..])-2.5 E 1.264(Declare v)144 189.6 R 1.264(ariables and/or gi)-.25 F
+1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no)
+3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25
+G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F
+-.25(va)144 201.6 S 3.483(riables. The).25 F F2<ad70>3.483 E F0 .983
+(option will display the attrib)3.483 F .983(utes and v)-.2 F .982
+(alues of each)-.25 F F1(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F2
+<ad70>3.482 E F0 .982(is used)3.482 F(with)144 213.6 Q F1(name)2.774 E
+F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F2
+<ad66>2.775 E F0(and)2.775 E F2<ad46>2.775 E F0 2.775(,a)C .275
+(re ignored.)-2.775 F(When)5.275 E F2<ad70>2.775 E F0 .275(is supplied)
+2.775 F(without)144 225.6 Q F1(name)4.814 E F0(ar)4.814 E 2.314
+(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313
+(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F
+(attrib)144 237.6 Q 1.181(utes speci\214ed by the additional options.)
+-.2 F 1.182(If no other options are supplied with)6.181 F F2<ad70>3.682
+E F0(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144
+249.6 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12
+(ariables. The)-.25 F F2<ad66>3.12 E F0 .62
+(option will restrict the display)3.12 F 1.29(to shell functions.)144
+261.6 R(The)6.29 E F2<ad46>3.79 E F0 1.291(option inhibits the display \
+of function de\214nitions; only the function)3.791 F .948
+(name and attrib)144 273.6 R .948(utes are printed.)-.2 F .948(If the)
+5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948
 (shell option is enabled using)3.448 F F2(shopt)3.448 E F0 3.448(,t)C
 .948(he source)-3.448 F 1.69(\214le name and line number where each)144
-156 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F
-(The)6.69 E F2<ad46>4.19 E F0(option)4.19 E(implies)144 168 Q F2<ad66>
-3.892 E F0 6.392(.T)C(he)-6.392 E F2<ad67>3.892 E F0 1.391
+285.6 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19
+F(The)6.69 E F2<ad46>4.19 E F0(option)4.19 E(implies)144 297.6 Q F2
+<ad66>3.892 E F0 6.392(.T)C(he)-6.392 E F2<ad67>3.892 E F0 1.391
 (option forces v)3.892 F 1.391
 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15
-(ve)-.25 G(n).15 E(when)144 180 Q F2(declar)4.382 E(e)-.18 E F0 1.882
+(ve)-.25 G(n).15 E(when)144 309.6 Q F2(declar)4.382 E(e)-.18 E F0 1.882
 (is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F
 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F
-(wing)-.25 E .794(options can be used to restrict output to v)144 192 R
-.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F
-1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 204 Q(utes:)-.2 E F2
-<ad61>144 216 Q F0(Each)180 216 Q F1(name)2.5 E F0(is an inde)2.5 E -.15
-(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5
-E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad41>144 228 Q F0(Each)180
-228 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v)
-.15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G
-(\).).15 E F2<ad66>144 240 Q F0(Use function names only)180 240 Q(.)-.65
-E F2<ad69>144 252 Q F0 .557(The v)180 252 R .558
+(wing)-.25 E .794(options can be used to restrict output to v)144 321.6
+R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2
+F 1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 333.6 Q(utes:)-.2 E
+F2<ad61>144 345.6 Q F0(Each)180 345.6 Q F1(name)2.5 E F0(is an inde)2.5
+E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2
+(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad41>144 357.6 Q
+F0(Each)180 357.6 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)
+-.25 H(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E
+-.15(ve)-.15 G(\).).15 E F2<ad66>144 369.6 Q F0(Use function names only)
+180 369.6 Q(.)-.65 E F2<ad69>144 381.6 Q F0 .557(The v)180 381.6 R .558
 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
-(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 264 Q F0(abo)2.25
-E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E
-(ariable is assigned a v)-.25 E(alue.)-.25 E F2<ad6c>144 276 Q F0 .91
-(When the v)180 276 R .909(ariable is assigned a v)-.25 F .909
+(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .558
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 393.6 Q F0(abo)
+2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)
+-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2<ad6c>144 405.6 Q
+F0 .91(When the v)180 405.6 R .909(ariable is assigned a v)-.25 F .909
 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
-G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 288 R
-(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad6e>144 300 Q
-F0(Gi)180 300 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the)
-3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
+G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 417.6 R
+(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad6e>144 429.6
+Q F0(Gi)180 429.6 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0
+(the)3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E
-1.519(That other v)180 312 R 1.519(ariable is de\214ned by the v)-.25 F
-1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518
-(ll references, assignments, and)-6.518 F(attrib)180 324 Q .226
+1.519(That other v)180 441.6 R 1.519(ariable is de\214ned by the v)-.25
+1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518
+(ll references, assignments, and)-6.518 F(attrib)180 453.6 Q .226
 (ute modi\214cations to)-.2 F F1(name)2.726 E F0 2.726(,e)C .226
 (xcept those using or changing the)-2.876 F F2<ad6e>2.726 E F0(attrib)
-2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 336 R
+2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 465.6 R
 .809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D
 3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2
-F(applied to array v)180 348 Q(ariables.)-.25 E F2<ad72>144 360 Q F0
-(Mak)180 360 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E
+F(applied to array v)180 477.6 Q(ariables.)-.25 E F2<ad72>144 489.6 Q F0
+(Mak)180 489.6 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E
 7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F
-2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 372
-Q F2<ad74>144 384 Q F0(Gi)180 384 Q .73 -.15(ve e)-.25 H(ach).15 E F1
-(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E
-2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929
-E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0
-(traps from the calling shell.)180 396 Q(The trace attrib)5 E
-(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144 408
-Q F0 .909(When the v)180 408 R .909(ariable is assigned a v)-.25 F .909
-(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15
-(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 420 R(lo)2.5
-E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>144 432 Q
-F0(Mark)180 432 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
-(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121
-(Using `+' instead of `\255' turns of)144 448.8 R 2.621(ft)-.25 G .121
-(he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12
-(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644
-(to destro)144 460.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v)
--3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo)
-3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145
-(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 472.8 Q F2
-(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835
-E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335
-(local, as with the)2.835 F F2(local)2.835 E F0 .335
-(command, unless the)2.835 F F2<ad67>2.835 E F0(option)2.835 E 1.282
-(is supplied.)144 484.8 R 1.282(If a v)6.282 F 1.283
-(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783
-(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283
-(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144
-496.8 R F2<ad61>3.427 E F0(or)3.427 E F2<ad41>3.427 E F0 .926
-(and the compound assignment syntax to create array v)3.427 F .926
-(ariables, additional)-.25 F(attrib)144 508.8 Q .592(utes do not tak)-.2
-F 3.092(ee)-.1 G -.25(ff)-3.092 G .592
-(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592
-(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429
-(option is encountered, an attempt is made to de\214ne a function using)
-144 520.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C
-2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144
-532.8 R .062(alue to a readonly v)-.25 F .063
-(ariable, an attempt is made to assign a v)-.25 F .063
-(alue to an array v)-.25 F(ari-)-.25 E .102
-(able without using the compound assignment syntax \(see)144 544.8 R F2
-(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F
-F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 556.8 S .171
-(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25
-F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172
-(ariable, an)-.25 F .96(attempt is made to turn of)144 568.8 R 3.46(fa)
--.25 G .96(rray status for an array v)-3.46 F .96
-(ariable, or an attempt is made to display a)-.25 F(non-e)144 580.8 Q
-(xistent function with)-.15 E F2<ad66>2.5 E F0(.)A F2
-(dirs [\255clpv] [+)108 597.6 Q F1(n)A F2 2.5(][)C<ad>-2.5 E F1(n)A F2
-(])A F0 -.4(Wi)144 609.6 S .328
-(thout options, displays the list of currently remembered directories.)
-.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 621.6 R 1.238
-(Directories are added to the list with the)6.238 F F2(pushd)144 633.6 Q
-F0 2.003(command; the)4.503 F F2(popd)4.503 E F0 2.003(command remo)
-4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
-F 2.003(The current directory is)7.003 F(al)144 645.6 Q -.1(wa)-.1 G
-(ys the \214rst directory in the stack.).1 E F2<ad63>144 657.6 Q F0
-(Clears the directory stack by deleting all of the entries.)180 657.6 Q
-F2<ad6c>144 669.6 Q F0 .882
-(Produces a listing using full pathnames; the def)180 669.6 R .881
-(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-681.6 Q(.)-.65 E F2<ad70>144 693.6 Q F0
-(Print the directory stack with one entry per line.)180 693.6 Q F2<ad76>
-144 705.6 Q F0 .272(Print the directory stack with one entry per line, \
-pre\214xing each entry with its inde)180 705.6 R 2.773(xi)-.15 G 2.773
-(nt)-2.773 G(he)-2.773 E(stack.)180 717.6 Q(GNU Bash-4.2)72 768 Q
-(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP
+2.547(alues by subsequent)-.25 F(assignment statements or unset.)180
+501.6 Q F2<ad74>144 513.6 Q F0(Gi)180 513.6 Q .73 -.15(ve e)-.25 H(ach)
+.15 E F1(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)
+2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2
+(DEB)2.929 E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0
+(traps from the calling shell.)180 525.6 Q(The trace attrib)5 E
+(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144
+537.6 Q F0 .909(When the v)180 537.6 R .909(ariable is assigned a v)-.25
+F .909(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2
+F -.15(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 549.6
+R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>
+144 561.6 Q F0(Mark)180 561.6 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144
+(Using `+' instead of `\255' turns of)144 578.4 R 2.643(ft)-.25 G .143
+(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143
+(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0
+.143(may not)2.643 F .578(be used to destro)144 590.4 R 3.079(ya)-.1 G
+.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579
+(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
+F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 602.4 Q F2
+(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544
+E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043
+(local, as with the)3.543 F F2(local)3.543 E F0 1.043
+(command, unless the)3.543 F F2<ad67>3.543 E F0 1.205
+(option is supplied.)144 614.4 R 1.205(If a v)6.205 F 1.205
+(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705
+(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
+(ariable is set to)-.25 F F1(value)144 626.4 Q F0 5.218(.W)C .218
+(hen using)-5.218 F F2<ad61>2.718 E F0(or)2.718 E F2<ad41>2.718 E F0
+.217(and the compound assignment syntax to create array v)2.717 F .217
+(ariables, addi-)-.25 F .882(tional attrib)144 638.4 R .882
+(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
+(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
+(alue is 0 unless an)-.25 F(in)144 650.4 Q -.25(va)-.4 G 1.26(lid optio\
+n is encountered, an attempt is made to de\214ne a function using).25 F
+/F5 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E
+.187(attempt is made to assign a v)144 662.4 R .187
+(alue to a readonly v)-.25 F .188
+(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F
+1.749(array v)144 674.4 R 1.749
+(ariable without using the compound assignment syntax \(see)-.25 F F2
+(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F
+F1(names)144 686.4 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
+.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
+.359(eadonly status for a read-)-2.859 F 1.213(only v)144 698.4 R 1.213
+(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
+(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is)
+-.25 F(made to display a non-e)144 710.4 Q(xistent function with)-.15 E
+F2<ad66>2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)
+203.725 E 0 Cg EP
 %%Page: 7 7
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(+)144 84 Q/F2 10
-/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 84 R F2(n)4.065 E F0
-1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25
-F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1
-E(without options, starting with zero.)180 96 Q F1<ad>144 108 Q F2(n)A
-F0 1.194(Displays the)180 108 R F2(n)3.694 E F0 1.194
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dirs [\255clpv] [+)
+108 84 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1(])A
+F0 -.4(Wi)144 96 S .328
+(thout options, displays the list of currently remembered directories.)
+.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
+(single line with directory names separated by spaces.)144 108 R 1.238
+(Directories are added to the list with the)6.238 F F1(pushd)144 120 Q
+F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo)
+4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
+F 2.003(The current directory is)7.003 F(al)144 132 Q -.1(wa)-.1 G
+(ys the \214rst directory in the stack.).1 E F1<ad63>144 144 Q F0
+(Clears the directory stack by deleting all of the entries.)180 144 Q F1
+<ad6c>144 156 Q F0 .882
+(Produces a listing using full pathnames; the def)180 156 R .881
+(ault listing format uses a tilde to denote)-.1 F(the home directory)180
+168 Q(.)-.65 E F1<ad70>144 180 Q F0
+(Print the directory stack with one entry per line.)180 180 Q F1<ad76>
+144 192 Q F0 .272(Print the directory stack with one entry per line, pr\
+e\214xing each entry with its inde)180 192 R 2.773(xi)-.15 G 2.773(nt)
+-2.773 G(he)-2.773 E(stack.)180 204 Q F1(+)144 216 Q F2(n)A F0 1.565
+(Displays the)180 216 R F2(n)4.065 E F0 1.565
+(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1
+(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 228 Q F1<ad>144 240 Q F2(n)A
+F0 1.194(Displays the)180 240 R F2(n)3.694 E F0 1.194
 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
 F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 120 Q .258(The return v)144
-136.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(without options, starting with zero.)180 252 Q .258(The return v)144
+268.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
 -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1
+.15 F(tory stack.)144 280.8 Q F1(diso)108 297.6 Q(wn)-.1 E F0([)2.5 E F1
 (\255ar)A F0 2.5(][)C F1<ad68>-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0
-(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121
+(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 309.6 S .121
 (thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)
 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H
 2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932
-F .096(neither the)144 189.6 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
+F .096(neither the)144 321.6 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
 F1<ad72>2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E
 .096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1
 <ad68>2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each)
-.15 F F2(jobspec)145.74 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15
+.15 F F2(jobspec)145.74 333.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15
 G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F
 .585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586
-(is not sent to the job if the)2.835 F .962(shell recei)144 213.6 R -.15
+(is not sent to the job if the)2.835 F .962(shell recei)144 345.6 R -.15
 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962
 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1
 <ad61>3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15
-H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 225.6 R F1
+H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 357.6 R F1
 <ad72>3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0
 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F
-1.359(The return)6.359 F -.25(va)144 237.6 S(lue is 0 unless a).25 E F2
+1.359(The return)6.359 F -.25(va)144 369.6 S(lue is 0 unless a).25 E F2
 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
-F1(echo)108 254.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
--.37 E F0(...])2.5 E .425(Output the)144 266.4 R F2(ar)2.925 E(g)-.37 E
+F1(echo)108 386.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .425(Output the)144 398.4 R F2(ar)2.925 E(g)-.37 E
 F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307
-(error occurs.)144 278.4 R(If)5.307 E F1<ad6e>2.807 E F0 .307
+(error occurs.)144 410.4 R(If)5.307 E F1<ad6e>2.807 E F0 .307
 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25
 F .308(If the)5.308 F F1<ad65>2.808 E F0 .308(option is gi)2.808 F -.15
 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144
-290.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
+422.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
 6.348 E F1<ad45>3.848 E F0 1.348(option disables the)3.848 F 1.054
-(interpretation of these escape characters, e)144 302.4 R -.15(ve)-.25 G
+(interpretation of these escape characters, e)144 434.4 R -.15(ve)-.25 G
 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555
 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144
-314.4 Q F1(xpg_echo)3.459 E F0 .959
+446.4 Q F1(xpg_echo)3.459 E F0 .959
 (shell option may be used to dynamically determine whether or not)3.459
 F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715
-(these escape characters by def)144 326.4 R(ault.)-.1 E F1(echo)5.715 E
+(these escape characters by def)144 458.4 R(ault.)-.1 E F1(echo)5.715 E
 F0 .716(does not interpret)3.215 F F1<adad>3.216 E F0 .716
 (to mean the end of options.)3.216 F F1(echo)5.716 E F0
-(interprets the follo)144 338.4 Q(wing escape sequences:)-.25 E F1(\\a)
-144 350.4 Q F0(alert \(bell\))180 350.4 Q F1(\\b)144 362.4 Q F0
-(backspace)180 362.4 Q F1(\\c)144 374.4 Q F0(suppress further output)180
-374.4 Q F1(\\e)144 386.4 Q(\\E)144 398.4 Q F0(an escape character)180
-398.4 Q F1(\\f)144 410.4 Q F0(form feed)180 410.4 Q F1(\\n)144 422.4 Q
-F0(ne)180 422.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 434.4 Q F0
-(carriage return)180 434.4 Q F1(\\t)144 446.4 Q F0(horizontal tab)180
-446.4 Q F1(\\v)144 458.4 Q F0 -.15(ve)180 458.4 S(rtical tab).15 E F1
-(\\\\)144 470.4 Q F0(backslash)180 470.4 Q F1(\\0)144 482.4 Q F2(nnn)A
-F0(the eight-bit character whose v)180 482.4 Q(alue is the octal v)-.25
+(interprets the follo)144 470.4 Q(wing escape sequences:)-.25 E F1(\\a)
+144 482.4 Q F0(alert \(bell\))180 482.4 Q F1(\\b)144 494.4 Q F0
+(backspace)180 494.4 Q F1(\\c)144 506.4 Q F0(suppress further output)180
+506.4 Q F1(\\e)144 518.4 Q(\\E)144 530.4 Q F0(an escape character)180
+530.4 Q F1(\\f)144 542.4 Q F0(form feed)180 542.4 Q F1(\\n)144 554.4 Q
+F0(ne)180 554.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 566.4 Q F0
+(carriage return)180 566.4 Q F1(\\t)144 578.4 Q F0(horizontal tab)180
+578.4 Q F1(\\v)144 590.4 Q F0 -.15(ve)180 590.4 S(rtical tab).15 E F1
+(\\\\)144 602.4 Q F0(backslash)180 602.4 Q F1(\\0)144 614.4 Q F2(nnn)A
+F0(the eight-bit character whose v)180 614.4 Q(alue is the octal v)-.25
 E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1
-(\\x)144 494.4 Q F2(HH)A F0(the eight-bit character whose v)180 494.4 Q
+(\\x)144 626.4 Q F2(HH)A F0(the eight-bit character whose v)180 626.4 Q
 (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
-(\\u)144 506.4 Q F2(HHHH)A F0 1.507
-(the Unicode \(ISO/IEC 10646\) character whose v)180 518.4 R 1.506
+(\\u)144 638.4 Q F2(HHHH)A F0 1.507
+(the Unicode \(ISO/IEC 10646\) character whose v)180 650.4 R 1.506
 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.006 E F0(\(one to four he)180 530.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 542.4 Q F2(HHHHHHHH)A F0 .547
-(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R .547
+4.006 E F0(\(one to four he)180 662.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 674.4 Q F2(HHHHHHHH)A F0 .547
+(the Unicode \(ISO/IEC 10646\) character whose v)180 686.4 R .547
 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.048 E(HHH)180 566.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E F1(enable)108 583.2 Q F0([)2.5 E F1<ad61>A F0 2.5(][)C
-F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5
-(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 595.2 R
-.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
+3.048 E(HHH)180 698.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
+(igits\))-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(7)203.725 E
+0 Cg EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([)
+2.5 E F1<ad61>A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5
+E/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][)C F2(name)-2.5 E F0
+(...])2.5 E .278(Enable and disable b)144 96 R .278
+(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833
-(the same name as a shell b)144 607.2 R .834(uiltin to be e)-.2 F -.15
-(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
-(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99
-(the shell normally searches for b)144 619.2 R .989
+(the same name as a shell b)144 108 R .834(uiltin to be e)-.2 F -.15(xe)
+-.15 G .834(cuted without specifying a full pathname, e).15 F -.15(ve)
+-.25 G 3.334(nt).15 G(hough)-3.334 E .99
+(the shell normally searches for b)144 120 R .989
 (uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .989
 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581
-(abled; otherwise,)144 631.2 R F2(names)4.082 E F0 1.582(are enabled.)
+(abled; otherwise,)144 132 R F2(names)4.082 E F0 1.582(are enabled.)
 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F
-F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082
-G(TH)-.189 E F0 .081(instead of the shell b)144 643.2 R .081(uiltin v)
--.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)
-2.581 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.58 E F0 .08
-(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 655.2 S 1.524
+F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0
+SF -.666(PA)4.082 G(TH)-.189 E F0 .081(instead of the shell b)144 144 R
+.081(uiltin v)-.2 F .081(ersion, run)-.15 F/F4 10/Courier@0 SF .081
+(enable -n test)2.581 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.58 E F0 .08
+(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 156 S 1.524
 (iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F
 F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
-(ystems that support dynamic loading.)-4.024 F(The)144 667.2 Q F1<ad64>
+(ystems that support dynamic loading.)-4.024 F(The)144 168 Q F1<ad64>
 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F
 .367(viously loaded with)-.25 F F1<ad66>2.866 E F0 5.366(.I)C 2.866(fn)
 -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi)
--.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 679.2 R F1<ad70>
+-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 180 R F1<ad70>
 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399
 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4
 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144
-691.2 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
+192 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F
 (If)5.098 E F1<ad61>2.598 E F0 1.916
-(is supplied, the list printed includes all b)144 703.2 R 1.916
+(is supplied, the list printed includes all b)144 204 R 1.916
 (uiltins, with an indication of whether or not each is)-.2 F 2.879
-(enabled. If)144 715.2 R F1<ad73>2.879 E F0 .379
+(enabled. If)144 216 R F1<ad73>2.879 E F0 .379
 (is supplied, the output is restricted to the POSIX)2.879 F F2(special)
 2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F
-(alue)-.25 E .994(is 0 unless a)144 727.2 R F2(name)3.854 E F0 .994
+(alue)-.25 E .994(is 0 unless a)144 228 R F2(name)3.854 E F0 .994
 (is not a shell b)3.674 F .994(uiltin or there is an error loading a ne)
--.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(GNU Bash-4.2)72
-768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(object.)144 84 Q/F1 10/Times-Bold@0 SF -2.3
--.15(ev a)108 100.8 T(l).15 E F0([)2.5 E/F2 10/Times-Italic@0 SF(ar)A(g)
--.37 E F0(...])2.5 E(The)144 112.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)
-C .671(re read and concatenated together into a single command.)-3.171 F
-.67(This command is then read)5.67 F .495(and e)144 124.8 R -.15(xe)-.15
-G .495(cuted by the shell, and its e).15 F .495
+-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 240
+Q F1 -2.3 -.15(ev a)108 256.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0
+(...])2.5 E(The)144 268.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671
+(re read and concatenated together into a single command.)-3.171 F .67
+(This command is then read)5.67 F .495(and e)144 280.8 R -.15(xe)-.15 G
+.495(cuted by the shell, and its e).15 F .495
 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15
 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no)
--2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 136.8 Q
+-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 292.8 Q
 (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
-(exec)108 153.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
+(exec)108 309.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)
--.37 E F0(]])A(If)144 165.6 Q F2(command)3.006 E F0 .306
+-.37 E F0(]])A(If)144 321.6 Q F2(command)3.006 E F0 .306
 (is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805
 (wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E
-(guments)-.37 E F0(become)3.075 E .176(the ar)144 177.6 R .176
+(guments)-.37 E F0(become)3.075 E .176(the ar)144 333.6 R .176
 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
 (he)-2.676 E F1<ad6c>2.676 E F0 .176
 (option is supplied, the shell places a dash at the be)2.676 F .177
-(ginning of)-.15 F .5(the zeroth ar)144 189.6 R .5(gument passed to)-.18
+(ginning of)-.15 F .5(the zeroth ar)144 345.6 R .5(gument passed to)-.18
 F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999
 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F1<ad63>2.999 E F0
-.499(option causes)2.999 F F2(com-)3.199 E(mand)144 201.6 Q F0 .638
+.499(option causes)2.999 F F2(com-)3.199 E(mand)144 357.6 Q F0 .638
 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
 (vironment. If)-.4 F F1<ad61>3.138 E F0 .638
 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the)
-3.319 F 1.078(zeroth ar)144 213.6 R 1.077(gument to the e)-.18 F -.15
+3.319 F 1.078(zeroth ar)144 369.6 R 1.077(gument to the e)-.18 F -.15
 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0
 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a)
-.15 F(non-interacti)144 225.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
+.15 F(non-interacti)144 381.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
 .576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577
 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577
-F(ail-)-.1 E 2.505(ure. An)144 237.6 R(interacti)2.505 E .305 -.15(ve s)
--.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e)
--.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005
-(is not speci\214ed,)3.275 F(an)144 249.6 Q 3.036(yr)-.15 G .536
-(edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536
-(ect in the current shell, and the return status is 0.).25 F .536
-(If there is a redirection)5.536 F(error)144 261.6 Q 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 278.4 Q F0([)2.5 E F2(n)A F0
-(])A .096(Cause the shell to e)144 278.4 R .096(xit with a status of)
+F(ail-)-.1 E 3.32(ure. An)144 393.6 R(interacti)3.32 E 1.12 -.15(ve s)
+-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
+F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
+(xits uncondi-)-.15 F .287(tionally if)144 405.6 R F1(exec)2.787 E F0
+-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
+(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
+-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
+.25 F(and the return status is 0.)144 417.6 Q
+(If there is a redirection error)5 E 2.5(,t)-.4 G
+(he return status is 1.)-2.5 E F1(exit)108 434.4 Q F0([)2.5 E F2(n)A F0
+(])A .096(Cause the shell to e)144 434.4 R .096(xit with a status of)
 -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095
 (is omitted, the e)2.835 F .095(xit status is that of the last command)
--.15 F -.15(exe)144 290.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9
-/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G
-(cuted before the shell terminates.).15 E F1(export)108 307.2 Q F0([)2.5
-E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E
-F0(]] ...)A F1(export \255p)108 319.2 Q F0 .256(The supplied)144 331.2 R
-F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F
-.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15
-(xe)-.15 G(cuted).15 E 2.627(commands. If)144 343.2 R(the)2.627 E F1
-<ad66>2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the)
-.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no)
-5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126
-(n, or if the).15 F F1<ad70>144 355.2 Q F0 .048
-(option is supplied, a list of names of all e)2.547 F .048(xported v)
--.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1<ad6e>2.548 E F0
-.048(option causes the)2.548 F -.15(ex)144 367.2 S 1.447
-(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
+-.15 F -.15(exe)144 446.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5
+E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E
+F1(export)108 463.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)
+-2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 475.2 Q
+F0 .256(The supplied)144 487.2 R F2(names)3.117 E F0 .257(are mark)3.027
+F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
+(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627
+(commands. If)144 499.2 R(the)2.627 E F1<ad66>2.627 E F0 .127
+(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E
+F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E
+F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1<ad70>
+144 511.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F
+.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1
+<ad6e>2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 523.2 S
+1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G
 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d)
--.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 379.2 S .741(lue of the v)
+-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 535.2 S .741(lue of the v)
 .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
 (export)5.741 E F0 .742(returns an e)3.242 F .742
 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is)
-.25 F .032(encountered, one of the)144 391.2 R F2(names)2.532 E F0 .032
+.25 F .032(encountered, one of the)144 547.2 R F2(names)2.532 E F0 .032
 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
 F F1<ad66>2.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0
-(that)2.711 E(is not a function.)144 403.2 Q F1(fc)108 420 Q F0([)2.5 E
+(that)2.711 E(is not a function.)144 559.2 Q F1(fc)108 576 Q F0([)2.5 E
 F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2
 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108
-432 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+588 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
 (cmd)-2.5 E F0(])A .431
-(The \214rst form selects a range of commands from)144 444 R F2<8c72>
+(The \214rst form selects a range of commands from)144 600 R F2<8c72>
 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432
 (from the history list and displays or)3.612 F .142(edits and re-e)144
-456 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
+612 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
 .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141
 (may be speci\214ed as a string \(to locate the last command)3.321 F(be)
-144 468 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
+144 624 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)
--.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of)
-144 480 R .315(fset from the current command number\).)-.25 F(If)5.315 E
-F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F
-(-)-.2 E .948(rent command for listing \(so that)144 492 R/F4 10
-/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948
-(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E
-F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 504 R F2<8c72>4.41 E(st)-.1 E
-F0(is not speci\214ed it is set to the pre)3.18 E
-(vious command for editing and \25516 for listing.)-.25 E(The)144 528 Q
+-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of)
+144 636 R .19(fset from the current command number\).)-.25 F(If)5.19 E
+F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F
+(-)-.2 E .948(rent command for listing \(so that)144 648 R F4 .948
+(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to)
+3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If)
+144 660 R F2<8c72>4.41 E(st)-.1 E F0
+(is not speci\214ed, it is set to the pre)3.18 E
+(vious command for editing and \25516 for listing.)-.25 E(The)144 684 Q
 F1<ad6e>2.522 E F0 .022
 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E
 F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022
-(rses the order of).15 F .438(the commands.)144 540 R .438(If the)5.438
+(rses the order of).15 F .438(the commands.)144 696 R .438(If the)5.438
 F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E
-.335(the editor gi)144 552 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
+.335(the editor gi)144 708 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
 (ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
 .1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
 (If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
-(n,).15 E .63(the v)144 564 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0
--.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F
-F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631
-(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 576 R .951
-(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95
-(When editing is complete, the edited commands are echoed and)5.951 F
--.15(exe)144 588 S(cuted.).15 E .788(In the second form,)144 612 R F2
-(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
-(cuted after each instance of).15 F F2(pat)3.288 E F0 .788
-(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789
-E(mand)144 624 Q F0 .347(is intepreted the same as)2.847 F F2<8c72>2.847
-E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347
-(useful alias to use with this is)-2.5 F F4 .346(r='fc \255s')2.847 F F0
-2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 636 Q F4 7.165(rc)
-3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166
-(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r)
-3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F
-(mand.)144 648 Q .142(If the \214rst form is used, the return v)144 672
-R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
-(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
-E F2(last)2.732 E F0 .454(specify history lines out of range.)144 684 R
-.454(If the)5.454 F F1<ad65>2.954 E F0 .454
-(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455
-(alue of the)-.25 F .788(last command e)144 696 R -.15(xe)-.15 G .788
-(cuted or f).15 F .787
-(ailure if an error occurs with the temporary \214le of commands.)-.1 F
-.787(If the)5.787 F 1.135
-(second form is used, the return status is that of the command re-e)144
-708 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
-(does not)4.406 F(specify a v)144 720 Q
-(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E
-(ailure.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(8)203.725 E 0
-Cg EP
+(n,).15 E 1.668(the v)144 720 R 1.668(alue of the)-.25 F F3(FCEDIT)4.168
+E F0 -.25(va)3.918 G 1.668(riable is used, and the v).25 F 1.669
+(alue of)-.25 F F3(EDIT)4.169 E(OR)-.162 E F0(if)3.919 E F3(FCEDIT)4.169
+E F0 1.669(is not set.)3.919 F(If)6.669 E(GNU Bash 5.0)72 768 Q
+(2004 Apr 20)149.565 E(8)203.725 E 0 Cg EP
 %%Page: 9 9
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(fg)108 84 Q F0([)2.5
-E/F2 10/Times-Italic@0 SF(jobspec)A F0(])A(Resume)144 96 Q F2(jobspec)
-5.654 E F0 1.413(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913
-(ei)-.1 G 3.913(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G
-(f)-6.413 E F2(jobspec)5.653 E F0 1.413(is not present, the)4.223 F
-(shell')144 108 Q 3.116(sn)-.55 G .616(otion of the)-3.116 F F2(curr)
-3.116 E .616(ent job)-.37 F F0 .617(is used.)3.116 F .617(The return v)
-5.617 F .617(alue is that of the command placed into the)-.25 F(fore)144
-120 Q .363(ground, or f)-.15 F .363
+E(UIL)-.1 E(TINS\(1\))-.92 E .187(neither v)144 84 R .187
+(ariable is set,)-.25 F/F1 10/Times-Italic@0 SF(vi)4.353 E F0 .187
+(is used.)4.353 F .187
+(When editing is complete, the edited commands are echoed and)5.187 F
+-.15(exe)144 96 S(cuted.).15 E .788(In the second form,)144 120 R F1
+(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
+(cuted after each instance of).15 F F1(pat)3.288 E F0 .788
+(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789
+E(mand)144 132 Q F0 .172(is interpreted the same as)2.672 F F1<8c72>
+2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
+(useful alias to use with this is)-2.5 F/F2 10/Courier@0 SF .171
+(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E
+(typing)144 144 Q F2 7.165(rc)3.665 G(c)-7.165 E F0 1.165
+(runs the last command be)3.665 F 1.166(ginning with)-.15 F F2(cc)3.666
+E F0 1.166(and typing)3.666 F F2(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15
+G 1.166(cutes the last com-).15 F(mand.)144 156 Q .142
+(If the \214rst form is used, the return v)144 180 R .142
+(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
+(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322
+E F1(last)2.732 E F0 .454(specify history lines out of range.)144 192 R
+.454(If the)5.454 F/F3 10/Times-Bold@0 SF<ad65>2.954 E F0 .454
+(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455
+(alue of the)-.25 F .788(last command e)144 204 R -.15(xe)-.15 G .788
+(cuted or f).15 F .787
+(ailure if an error occurs with the temporary \214le of commands.)-.1 F
+.787(If the)5.787 F 1.135
+(second form is used, the return status is that of the command re-e)144
+216 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136
+(does not)4.406 F(specify a v)144 228 Q
+(alid history line, in which case)-.25 E F3(fc)2.5 E F0(returns f)2.5 E
+(ailure.)-.1 E F3(fg)108 244.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume)
+144 256.8 Q F1(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
+(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
+(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0
+1.413(is not present, the)4.223 F(shell')144 268.8 Q 3.116(sn)-.55 G
+.616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)-.37 F F0 .617
+(is used.)3.116 F .617(The return v)5.617 F .617
+(alue is that of the command placed into the)-.25 F(fore)144 280.8 Q
+.363(ground, or f)-.15 F .363
 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
-(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 132 Q
-F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0
+(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 292.8 Q
+F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0
 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E
-F1(getopts)108 148.8 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)
--.37 E F0(])A F1(getopts)144 160.8 Q F0 .793
-(is used by shell procedures to parse positional parameters.)3.293 F F2
+F3(getopts)108 309.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)
+-.37 E F0(])A F3(getopts)144 321.6 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.293 F F1
 (optstring)6.023 E F0 .793(contains the option)3.513 F .15
-(characters to be recognized; if a character is follo)144 172.8 R .149
+(characters to be recognized; if a character is follo)144 333.6 R .149
 (wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
--.15(ve a)-.2 H(n).15 E(ar)144 184.8 Q .578
+-.15(ve a)-.2 H(n).15 E(ar)144 345.6 Q .578
 (gument, which should be separated from it by white space.)-.18 F .579
 (The colon and question mark char)5.579 F(-)-.2 E 1.665
-(acters may not be used as option characters.)144 196.8 R 1.665
-(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts)
+(acters may not be used as option characters.)144 357.6 R 1.665
+(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F3(getopts)
 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796
-(option in the shell v)144 208.8 R(ariable)-.25 E F2(name)3.296 E F0
-3.296(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797
+(option in the shell v)144 369.6 R(ariable)-.25 E F1(name)3.296 E F0
+3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797
 (if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G
-3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 220.8 Q .085
-(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND)
+3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 381.6 Q .085
+(gument to be processed into the v)-.18 F(ariable)-.25 E/F4 9
+/Times-Bold@0 SF(OPTIND)2.585 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)
 4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845
-(or a shell script is in)144 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345
-(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1
+(or a shell script is in)144 393.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345
+(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F3
 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804
-(into the v)144 244.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A
-F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803
+(into the v)144 405.6 R(ariable)-.25 E F4(OPT)3.304 E(ARG)-.81 E F5(.)A
+F0 .803(The shell does not reset)5.304 F F4(OPTIND)3.303 E F0 .803
 (automatically; it must be manually)3.053 F .293
-(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293
+(reset between multiple calls to)144 417.6 R F3(getopts)2.793 E F0 .293
 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F
-2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 268.8
-Q 2.044(When the end of options is encountered,)144 292.8 R F1(getopts)
+2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 429.6
+Q 2.044(When the end of options is encountered,)144 453.6 R F3(getopts)
 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043
-(alue greater than zero.)-.25 F F3(OPTIND)144 304.8 Q F0
+(alue greater than zero.)-.25 F F4(OPTIND)144 465.6 Q F0
 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
-(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0
-(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
+(is set to ?.)2.5 E F3(getopts)144 489.6 Q F0 2.392
 (normally parses the positional parameters, b)4.892 F 2.392
 (ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893
-(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144
-340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166
+(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F3(getopts)144
+501.6 Q F0(parses those instead.)2.5 E F3(getopts)144 525.6 Q F0 1.166
 (can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F
-1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165
-(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07
-(reporting is used.)144 376.8 R 1.071
+1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165
+(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07
+(reporting is used.)144 537.6 R 1.071
 (In normal operation, diagnostic messages are printed when in)6.07 F
 -.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144
-388.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
-(ariable)-.25 E F3(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 400.8 Q
+549.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
+(ariable)-.25 E F4(OPTERR)2.894 E F0 .394
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 561.6 Q
 -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 424.8 R
--.25(va)-.4 G .666(lid option is seen,).25 F F1(getopts)3.166 E F0 .667
-(places ? into)3.167 F F2(name)3.527 E F0 .667
+F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 585.6 R
+-.25(va)-.4 G .666(lid option is seen,).25 F F3(getopts)3.166 E F0 .667
+(places ? into)3.167 F F1(name)3.527 E F0 .667
 (and, if not silent, prints an error message)3.347 F .4(and unsets)144
-436.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1(getopts)2.899 E
-F0 .399(is silent, the option character found is placed in)2.899 F F3
+597.6 R F4(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F3(getopts)2.899 E
+F0 .399(is silent, the option character found is placed in)2.899 F F4
 (OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F
-(diagnostic message is printed.)144 448.8 Q 1.241(If a required ar)144
-472.8 R 1.241(gument is not found, and)-.18 F F1(getopts)3.741 E F0
-1.241(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742
-(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144 484.8
-Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234
-(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F1
-(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1(:).833 E
-F0(\)).833 E(is placed in)144 496.8 Q F2(name)2.86 E F0(and)2.68 E F3
-(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1
-(getopts)144 520.8 Q F0 .902
+(diagnostic message is printed.)144 609.6 Q 1.241(If a required ar)144
+633.6 R 1.241(gument is not found, and)-.18 F F3(getopts)3.741 E F0
+1.241(is not silent, a question mark \()3.741 F F3(?).833 E F0 3.742
+(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 645.6
+Q F0(,).18 E F4(OPT)2.735 E(ARG)-.81 E F0 .234
+(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F3
+(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F3(:).833 E
+F0(\)).833 E(is placed in)144 657.6 Q F1(name)2.86 E F0(and)2.68 E F4
+(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3
+(getopts)144 681.6 Q F0 .902
 (returns true if an option, speci\214ed or unspeci\214ed, is found.)
 3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 532.8 Q F1(hash)108
-549.6 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E F2(\214lename)
-2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A
-.858(Each time)144 561.6 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)
--.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name)
-3.718 E F0 .858(is determined by searching)3.538 F .956
-(the directories in)144 573.6 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
+(options is encountered or an error occurs.)144 693.6 Q(GNU Bash 5.0)72
+768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([)
+2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E/F2 10/Times-Italic@0 SF
+(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5
+E F0(])A .858(Each time)144 96 R F1(hash)3.358 E F0 .858(is in)3.358 F
+-.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F
+F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956
+(the directories in)144 108 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956
-(viously-remembered pathname is discarded.)-.25 F .243(If the)144 585.6
-F1<ad70>2.743 E F0 .243
+(viously-remembered pathname is discarded.)-.25 F .243(If the)144 120 R
+F1<ad70>2.743 E F0 .243
 (option is supplied, no path search is performed, and)2.743 F F2
 (\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711
-(of the command.)144 597.6 R(The)6.711 E F1<ad72>4.211 E F0 1.711
+(of the command.)144 132 R(The)6.711 E F1<ad72>4.211 E F0 1.711
 (option causes the shell to for)4.211 F 1.712
 (get all remembered locations.)-.18 F(The)6.712 E F1<ad64>4.212 E F0
-.833(option causes the shell to for)144 609.6 R .833
+.833(option causes the shell to for)144 144 R .833
 (get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I)
 C 3.333(ft)-5.833 G(he)-3.333 E F1<ad74>3.333 E F0 .833(option is sup-)
-3.333 F .703(plied, the full pathname to which each)144 621.6 R F2(name)
+3.333 F .703(plied, the full pathname to which each)144 156 R F2(name)
 3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F
 F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144
-633.6 R F1<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0
-.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1
+168 R F1<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 .795
+(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1
 <ad6c>3.295 E F0 .795(option causes)3.295 F .934
-(output to be displayed in a format that may be reused as input.)144
-645.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G
-.935(n, or if).15 F(only)144 657.6 Q F1<ad6c>2.822 E F0 .322
+(output to be displayed in a format that may be reused as input.)144 180
+R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G .935
+(n, or if).15 F(only)144 192 Q F1<ad6c>2.822 E F0 .322
 (is supplied, information about remembered commands is printed.)2.822 F
-.321(The return status is true)5.321 F(unless a)144 669.6 Q F2(name)2.86
-F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
-.25 E F1(help)108 686.4 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2
+.321(The return status is true)5.321 F(unless a)144 204 Q F2(name)2.86 E
+F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
+.25 E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2
 (pattern)-2.5 E F0(])A .866(Display helpful information about b)144
-698.4 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0
+232.8 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0
 .867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25
 G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144
-710.4 R F2(pattern)2.807 E F0 2.807(;o).24 G .307
+244.8 R F2(pattern)2.807 E F0 2.807(;o).24 G .307
 (therwise help for all the b)-2.807 F .306
-(uiltins and shell control struc-)-.2 F(tures is printed.)144 722.4 Q
-(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad64>144 84 Q F0
-(Display a short description of each)180 84 Q/F2 10/Times-Italic@0 SF
-(pattern)2.5 E F1<ad6d>144 96 Q F0(Display the description of each)180
-96 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5
-E F1<ad73>144 108 Q F0(Display only a short usage synopsis for each)180
-108 Q F2(pattern)2.5 E F0
-(The return status is 0 unless no command matches)144 124.8 Q F2
-(pattern)2.5 E F0(.).24 E F1(history [)108 141.6 Q F2(n)A F1(])A
-(history \255c)108 153.6 Q(history \255d)108 165.6 Q F2(of)2.5 E(fset)
--.18 E F1(history \255anrw)108 177.6 Q F0([)2.5 E F2(\214lename)A F0(])A
-F1(history \255p)108 189.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
-(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 201.6 Q F2(ar)2.5 E(g)
+(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1
+<ad64>144 268.8 Q F0(Display a short description of each)180 268.8 Q F2
+(pattern)2.5 E F1<ad6d>144 280.8 Q F0(Display the description of each)
+180 280.8 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
+(ormat)-2.5 E F1<ad73>144 292.8 Q F0
+(Display only a short usage synopsis for each)180 292.8 Q F2(pattern)2.5
+E F0(The return status is 0 unless no command matches)144 309.6 Q F2
+(pattern)2.5 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A
+(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset)
+-.18 E F1(history \255d)108 362.4 Q F2(start)2.5 E F0<ad>A F2(end)A F1
+(history \255anrw)108 374.4 Q F0([)2.5 E F2(\214lename)A F0(])A F1
+(history \255p)108 386.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 398.4 Q F2(ar)2.5 E(g)
 -.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144
-213.6 S .752
+410.4 S .752
 (th no options, display the command history list with line numbers.).4 F
 .752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2
-G .381(been modi\214ed.)144 225.6 R .38(An ar)5.38 F .38(gument of)-.18
+G .381(been modi\214ed.)144 422.4 R .38(An ar)5.38 F .38(gument of)-.18
 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 237.6 Q(T)-.855 E F0 .264
+/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 434.4 Q(T)-.855 E F0 .264
 (is set and not null, it is used as a format string for)2.514 F F2
 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02
-(ciated with each displayed history entry)144 249.6 R 6.019(.N)-.65 G
+(ciated with each displayed history entry)144 446.4 R 6.019(.N)-.65 G
 3.519(oi)-6.019 G(nterv)-3.519 E 1.019
 (ening blank is printed between the formatted)-.15 F .176
-(time stamp and the history line.)144 261.6 R(If)5.176 E F2(\214lename)
+(time stamp and the history line.)144 458.4 R(If)5.176 E F2(\214lename)
 2.676 E F0 .176
 (is supplied, it is used as the name of the history \214le; if)2.676 F
-(not, the v)144 273.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
+(not, the v)144 470.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad63>144 285.6 Q F0
-(Clear the history list by deleting all the entries.)180 285.6 Q F1
-<ad64>144 297.6 Q F2(of)2.5 E(fset)-.18 E F0
-(Delete the history entry at position)180 309.6 Q F2(of)2.5 E(fset)-.18
-E F0(.)A F1<ad61>144 321.6 Q F0 .565(Append the `)180 321.6 R(`ne)-.74 E
-(w')-.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.)
--3.065 F .564(These are history lines entered since)5.564 F(the be)180
-333.6 Q(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E
-(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 345.6
+(wing meanings:)-.25 E F1<ad63>144 482.4 Q F0
+(Clear the history list by deleting all the entries.)180 482.4 Q F1
+<ad64>144 494.4 Q F2(of)2.5 E(fset)-.18 E F0 .39
+(Delete the history entry at position)180 506.4 R F2(of)2.889 E(fset)
+-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)
+2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)
+-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)
+-.25 G .598(to one greater than the last history position, so ne)180
+518.4 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
+(ndices count back from the end).15 F(of the history)180 530.4 Q 2.5(,a)
+-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
+(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1
+<ad64>144 542.4 Q F2(start)2.5 E F0<ad>A F2(end)A F0 .758
+(Delete the history entries between positions)180 554.4 R F2(start)3.258
+E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)
+-.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne)
+.15 F -.05(ga)-.15 G(-).05 E(ti)180 566.4 Q .3 -.15(ve v)-.25 H
+(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
+(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1<ad61>
+144 578.4 Q F0 .564(Append the `)180 578.4 R(`ne)-.74 E(w')-.25 E 3.064
+('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565
+(These are history lines entered since)5.564 F(the be)180 590.4 Q
+(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E
+(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 602.4
 Q F0 .854(Read the history lines not already read from the history \214\
-le into the current history list.)180 345.6 R .773
-(These are lines appended to the history \214le since the be)180 357.6 R
-.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E
-(sion.)180 369.6 Q F1<ad72>144 381.6 Q F0(Read the contents of the hist\
-ory \214le and append them to the current history list.)180 381.6 Q F1
-<ad77>144 393.6 Q F0
-(Write the current history list to the history \214le, o)180 393.6 Q
+le into the current history list.)180 602.4 R .772
+(These are lines appended to the history \214le since the be)180 614.4 R
+.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
+(sion.)180 626.4 Q F1<ad72>144 638.4 Q F0(Read the contents of the hist\
+ory \214le and append them to the current history list.)180 638.4 Q F1
+<ad77>144 650.4 Q F0
+(Write the current history list to the history \214le, o)180 650.4 Q
 -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
-(ontents.)-2.5 E F1<ad70>144 405.6 Q F0 .625
-(Perform history substitution on the follo)180 405.6 R(wing)-.25 E F2
-(ar)3.125 E(gs)-.37 E F0 .626(and display the result on the standard)
-3.125 F 2.975(output. Does)180 417.6 R .475
+(ontents.)-2.5 E F1<ad70>144 662.4 Q F0 .626
+(Perform history substitution on the follo)180 662.4 R(wing)-.25 E F2
+(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard)
+3.125 F 2.975(output. Does)180 674.4 R .475
 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar)
 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 429.6 Q(xpansion.)-.15 E F1<ad73>144 441.6 Q F0
-.362(Store the)180 441.6 R F2(ar)3.192 E(gs)-.37 E F0 .363
-(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363
-(he last command in the history list is)-5.363 F(remo)180 453.6 Q -.15
+(normal history e)180 686.4 Q(xpansion.)-.15 E F1<ad73>144 698.4 Q F0
+.363(Store the)180 698.4 R F2(ar)3.193 E(gs)-.37 E F0 .363
+(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
+(he last command in the history list is)-5.363 F(remo)180 710.4 Q -.15
 (ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
-(are added.)2.77 E .146(If the)144 470.4 R F3(HISTTIMEFORMA)2.645 E(T)
+(are added.)2.77 E .145(If the)144 727.2 R F3(HISTTIMEFORMA)2.645 E(T)
 -.855 E F0 -.25(va)2.395 G .145
 (riable is set, the time stamp information associated with each history)
-.25 F .668(entry is written to the history \214le, mark)144 482.4 R .669
-(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669
-(hen the history)-5.669 F .956(\214le is read, lines be)144 494.4 R .956
-(ginning with the history comment character follo)-.15 F .955
-(wed immediately by a digit)-.25 F 1.795
-(are interpreted as timestamps for the follo)144 506.4 R 1.795
-(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F
-1.796(alue is 0 unless an)-.25 F(in)144 518.4 Q -.25(va)-.4 G .768(lid \
-option is encountered, an error occurs while reading or writing the his\
-tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 530.4 Q(fset)
--.18 E F0 1.031(is supplied as an ar)3.531 F 1.031(gument to)-.18 F F1
-<ad64>3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531
-F 1.031(xpansion supplied as an ar)-.15 F 1.032(gument to)-.18 F F1
-<ad70>3.532 E F0 -.1(fa)144 542.4 S(ils.).1 E F1(jobs)108 559.2 Q F0([)
-2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1
-(jobs \255x)108 571.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37
-E F0(... ])2.5 E(The \214rst form lists the acti)144 583.2 Q .3 -.15
-(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 595.2 Q F0
-(List process IDs in addition to the normal information.)180 595.2 Q F1
-<ad6e>144 607.2 Q F0 .194(Display information only about jobs that ha)
-180 607.2 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15
-F .193(as last noti-)-.1 F(\214ed of their status.)180 619.2 Q F1<ad70>
-144 631.2 Q F0(List only the process ID of the job')180 631.2 Q 2.5(sp)
--.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 643.2 Q F0
-(Display only running jobs.)180 643.2 Q F1<ad73>144 655.2 Q F0
-(Display only stopped jobs.)180 655.2 Q(If)144 672 Q F2(jobspec)4.553 E
-F0 .313(is gi)3.123 F -.15(ve)-.25 G .313
-(n, output is restricted to information about that job).15 F 5.314(.T)
--.4 G .314(he return status is 0 unless)-5.314 F(an in)144 684 Q -.25
-(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 700.8 R F1
-<ad78>2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0
-.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in)
-3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394
-(with the corre-)3.164 F(sponding process group ID, and e)144 712.8 Q
--.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar)
-2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E
-(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(10)198.725 E 0 Cg EP
+.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP
 %%Page: 11 11
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(kill)108 84 Q F0([)
-2.5 E F1<ad73>A/F2 10/Times-Italic@0 SF(sigspec)2.5 E F0(|)2.5 E F1
-<ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A F0 2.5
-(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1
-(kill \255l)108 96 Q F0(|)A F1<ad4c>A F0([)2.5 E F2(sigspec)A F0(|)2.5 E
-F2 -.2(ex)2.5 G(it_status).2 E F0(])A .119(Send the signal named by)144
-108 R F2(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119
-(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2
-(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319
-(either a case-insensiti)144 120 R .619 -.15(ve s)-.25 H .319
-(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318
-(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318
-(pre\214x\) or a signal)2.568 F(number;)144 132 Q F2(signum)4.188 E F0
-1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec)
+E(UIL)-.1 E(TINS\(1\))-.92 E .669
+(entry is written to the history \214le, mark)144 84 R .669
+(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
+(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956
+(ginning with the history comment character follo)-.15 F .956
+(wed immediately by a digit)-.25 F 1.796
+(are interpreted as timestamps for the follo)144 108 R 1.795
+(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F
+1.795(alue is 0 unless an)-.25 F(in)144 120 Q -.25(va)-.4 G .768(lid op\
+tion is encountered, an error occurs while reading or writing the histo\
+ry \214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF
+(of)144 132 Q(fset)-.18 E F0 1.032(is supplied as an ar)3.532 F 1.031
+(gument to)-.18 F/F2 10/Times-Bold@0 SF<ad64>3.531 E F0 3.531(,o)C 3.531
+(rt)-3.531 G 1.031(he history e)-3.531 F 1.031
+(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F2<ad70>3.531
+E F0 -.1(fa)144 144 S(ils.).1 E F2(jobs)108 160.8 Q F0([)2.5 E F2
+(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108
+172.8 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E
+(The \214rst form lists the acti)144 184.8 Q .3 -.15(ve j)-.25 H 2.5
+(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad6c>144 196.8 Q F0
+(List process IDs in addition to the normal information.)180 196.8 Q F2
+<ad6e>144 208.8 Q F0 .193(Display information only about jobs that ha)
+180 208.8 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15
+F .194(as last noti-)-.1 F(\214ed of their status.)180 220.8 Q F2<ad70>
+144 232.8 Q F0(List only the process ID of the job')180 232.8 Q 2.5(sp)
+-.55 G(rocess group leader)-2.5 E(.)-.55 E F2<ad72>144 244.8 Q F0
+(Display only running jobs.)180 244.8 Q F2<ad73>144 256.8 Q F0
+(Display only stopped jobs.)180 256.8 Q(If)144 273.6 Q F1(jobspec)4.554
+E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314
+(n, output is restricted to information about that job).15 F 5.313(.T)
+-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 285.6 Q -.25
+(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
+E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 302.4 R F2
+<ad78>2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0
+.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in)
+3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395
+(with the corre-)3.164 F(sponding process group ID, and e)144 314.4 Q
+-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar)
+2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E
+F2(kill)108 331.2 Q F0([)2.5 E F2<ad73>A F1(sigspec)2.5 E F0(|)2.5 E F2
+<ad6e>2.5 E F1(signum)2.5 E F0(|)2.5 E F2<ad>2.5 E F1(sigspec)A F0 2.5
+(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2
+(kill \255l)108 343.2 Q F0(|)A F2<ad4c>A F0([)2.5 E F1(sigspec)A F0(|)
+2.5 E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .12
+(Send the signal named by)144 355.2 R F1(sigspec)2.96 E F0(or)2.93 E F1
+(signum)2.96 E F0 .119(to the processes named by)2.939 F F1(pid)3.869 E
+F0(or)3.389 E F1(jobspec)2.619 E F0(.).31 E F1(sigspec)5.459 E F0(is)
+2.929 E .318(either a case-insensiti)144 367.2 R .618 -.15(ve s)-.25 H
+.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0
+.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
+(pre\214x\) or a signal)2.569 F(number;)144 379.2 Q F1(signum)4.189 E F0
+1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(sigspec)
 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0
-1.349(is assumed.)3.599 F(An)6.349 E(ar)144 144 Q .523(gument of)-.18 F
-F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523
-F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F
-F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names)
-.15 F .28(of the signals corresponding to the ar)144 156 R .28
-(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2
--.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .378(gument to)-.18 F F1
-<ad6c>2.878 E F0 .378
-(is a number specifying either a signal number or the e)2.878 F .377
-(xit status of a process termi-)-.15 F .962(nated by a signal.)144 180 R
-(The)5.962 E F1<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)-.25
-G .962(lent to).25 F F1<ad6c>3.462 E F0(.)A F1(kill)5.962 E F0 .962
+1.348(is assumed.)3.599 F(An)6.348 E(ar)144 391.2 Q .522(gument of)-.18
+F F2<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)
+5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when)
+.18 F F2<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523
+(n, the names).15 F .28(of the signals corresponding to the ar)144 403.2
+R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E
+F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 415.2 Q .377(gument to)-.18 F
+F2<ad6c>2.877 E F0 .378
+(is a number specifying either a signal number or the e)2.877 F .378
+(xit status of a process termi-)-.15 F .963(nated by a signal.)144 427.2
+R(The)5.962 E F2<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)
+-.25 G .962(lent to).25 F F2<ad6c>3.462 E F0(.)A F2(kill)5.962 E F0 .962
 (returns true if at least one signal w)3.462 F(as)-.1 E
-(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1
-E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2
-(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-220.8 Q F2(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197
-(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196
-(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 232.8 Q F2(ar)
-2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5
-E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F
-.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0
-.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he)
--5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.153(yo)
--.15 G 3.153(ft)-3.153 G .653(he options accepted by)-3.153 F F1(declar)
-3.153 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .652
+(successfully sent, or f)144 439.2 Q(alse if an error occurs or an in)
+-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 456 Q F1
+(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144
+468 Q F1(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
+(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197
+(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
+2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 480 Q F1(ar)2.83
+E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0
+(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 496.8 Q F0([)2.5
+E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C
+(.. | \255 ])-2.5 E -.15(Fo)144 508.8 S 2.56(re).15 G .06(ach ar)-2.56 F
+.06(gument, a local v)-.18 F .06(ariable named)-.25 F F1(name)2.92 E F0
+.06(is created, and assigned)2.74 F F1(value)2.56 E F0 5.06(.T).18 G(he)
+-5.06 E F1(option)2.56 E F0 .06(can be)2.56 F(an)144 520.8 Q 3.152(yo)
+-.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F2(declar)
+3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local)3.152 E F0 .653
 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-285.6 Q F2(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H
+532.8 Q F1(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
 .422(isible scope restricted to that function and its children.).15 F
-(If)5.422 E F2(name)2.922 E F0 .422(is \255, the set)2.922 F 1.461
-(of shell options is made local to the function in which)144 297.6 R F1
-(local)3.961 E F0 1.461(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.461
-(d: shell options changed).1 F 1.562(using the)144 309.6 R F1(set)4.062
-E F0 -.2(bu)4.062 G 1.563
-(iltin inside the function are restored to their original v).2 F 1.563
-(alues when the function)-.25 F 3.744(returns. W)144 321.6 R 1.244
-(ith no operands,)-.4 F F1(local)3.744 E F0 1.244
-(writes a list of local v)3.744 F 1.243
-(ariables to the standard output.)-.25 F 1.243(It is an)6.243 F .42
-(error to use)144 333.6 R F1(local)2.92 E F0 .42
+(If)5.421 E F1(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461
+(of shell options is made local to the function in which)144 544.8 R F2
+(local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462
+(d: shell options changed).1 F 1.563(using the)144 556.8 R F2(set)4.063
+E F0 -.2(bu)4.063 G 1.563
+(iltin inside the function are restored to their original v).2 F 1.562
+(alues when the function)-.25 F 3.743(returns. W)144 568.8 R 1.243
+(ith no operands,)-.4 F F2(local)3.743 E F0 1.243
+(writes a list of local v)3.743 F 1.244
+(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42
+(error to use)144 580.8 R F2(local)2.92 E F0 .42
 (when not within a function.)2.92 F .42(The return status is 0 unless)
-5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in)
-144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)
-2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)
-108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q
-F0([)2.5 E F1<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)
-2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>
--2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>
--2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E
-F0 2.5(][)C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E
-(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1
-<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)2.5 E F0 2.5
-(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>-2.5 E F2
-(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2
-(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)
-C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0
-(])A .351(Read lines from the standard input into the inde)144 403.2 R
--.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2
-(arr)2.85 E(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35
-(rom \214le descriptor)-2.85 F F2(fd)2.85 E F0 1.248(if the)144 415.2 R
-F1<ad75>3.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 F
+5.42 F F2(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in)
+144 592.8 Q -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)
+2.68 E F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)
+108 609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q
+F0([)2.5 E F2<ad64>A F1(delim)2.5 E F0 2.5(][)C F2<ad6e>-2.5 E F1(count)
+2.5 E F0 2.5(][)C F2<ad4f>-2.5 E F1(origin)2.5 E F0 2.5(][)C F2<ad73>
+-2.5 E F1(count)2.5 E F0 2.5(][)C F2<ad74>-2.5 E F0 2.5(][)C F2<ad75>
+-2.5 E F1(fd)2.5 E F0 2.5(][)C F2<ad43>-2.5 E F1(callbac)2.5 E(k)-.2 E
+F0 2.5(][)C F2<ad63>-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E
+(ay)-.15 E F0(])A F2 -.18(re)108 638.4 S(adarray).18 E F0([)2.5 E F2
+<ad64>A F1(delim)2.5 E F0 2.5(][)C F2<ad6e>-2.5 E F1(count)2.5 E F0 2.5
+(][)C F2<ad4f>-2.5 E F1(origin)2.5 E F0 2.5(][)C F2<ad73>-2.5 E F1
+(count)2.5 E F0 2.5(][)C F2<ad74>-2.5 E F0 2.5(][)C F2<ad75>-2.5 E F1
+(fd)2.5 E F0 2.5(][)C F2<ad43>-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)
+C F2<ad63>-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0
+(])A .179(Read lines from the standard input into the inde)144 650.4 R
+-.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F1
+(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18
+(rom \214le descriptor)-2.68 F F1(fd)4.65 E F0 1.249(if the)144 662.4 R
+F2<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F
 (ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
-E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)
--6.249 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad64>144 439.2 Q F0(The \214rst character of)
-180 439.2 Q F2(delim)2.5 E F0
-(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25
-E F1<ad6e>144 451.2 Q F0(Cop)180 451.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost)
--2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0
-(is 0, all lines are copied.)2.5 E F1<ad4f>144 463.2 Q F0(Be)180 463.2 Q
-(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x)
--.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi)
--.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 475.2 Q F0
-(Discard the \214rst)180 475.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1
-<ad74>144 487.2 Q F0(Remo)180 487.2 Q .3 -.15(ve a t)-.15 H(railing).15
-E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E
-(wline\) from each line read.)-.25 E F1<ad75>144 499.2 Q F0
-(Read lines from \214le descriptor)180 499.2 Q F2(fd)2.5 E F0
-(instead of the standard input.)2.5 E F1<ad43>144 511.2 Q F0(Ev)180
-511.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
-(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
-(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 523.2
-Q F0(Specify the number of lines read between each call to)180 523.2 Q
-F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 540 Q F1<ad43>2.968 E F0 .467
+E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,)
+-6.248 F(ha)144 674.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad64>144 686.4 Q F0 .91
+(The \214rst character of)180 686.4 R F1(delim)3.41 E F0 .911
+(is used to terminate each input line, rather than ne)3.41 F 3.411
+(wline. If)-.25 F F1(delim)180 698.4 Q F0(is the empty string,)2.5 E F2
+(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
+2.5 E(.)-.55 E F2<ad6e>144 710.4 Q F0(Cop)180 710.4 Q 2.5(ya)-.1 G 2.5
+(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1(count)
+2.5 E F0(is 0, all lines are copied.)2.5 E(GNU Bash 5.0)72 768 Q
+(2004 Apr 20)149.565 E(11)198.725 E 0 Cg EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad4f>144 84 Q F0(Be)
+180 84 Q(gin assigning to)-.15 E/F2 10/Times-Italic@0 SF(arr)2.83 E(ay)
+-.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)
+-5 E(ault inde)-.1 E 2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 96
+Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1
+<ad74>144 108 Q F0(Remo)180 108 Q .3 -.15(ve a t)-.15 H(railing).15 E F2
+(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E(wline\) from each line read.)
+-.25 E F1<ad75>144 120 Q F0(Read lines from \214le descriptor)180 120 Q
+F2(fd)2.5 E F0(instead of the standard input.)2.5 E F1<ad43>144 132 Q F0
+(Ev)180 132 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E
+F2(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
+(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 144 Q
+F0(Specify the number of lines read between each call to)180 144 Q F2
+(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 160.8 Q F1<ad43>2.968 E F0 .467
 (is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467
 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2
 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467
-(luated, it is sup-).25 F .261(plied the inde)144 552 R 2.761(xo)-.15 G
-2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\
-ned and the line to be assigned to that element)-.15 F .275
-(as additional ar)144 564 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E
+(luated, it is sup-).25 F .261(plied the inde)144 172.8 R 2.761(xo)-.15
+G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\
+igned and the line to be assigned to that element)-.15 F .275
+(as additional ar)144 184.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E
 F0 .275(is e)2.775 F -.25(va)-.25 G .274
 (luated after the line is read b).25 F .274
-(ut before the array element is)-.2 F(assigned.)144 576 Q
-(If not supplied with an e)144 592.8 Q(xplicit origin,)-.15 E F1
+(ut before the array element is)-.2 F(assigned.)144 196.8 Q
+(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1
 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0
-(before assigning to it.)2.5 E F1(map\214le)144 609.6 Q F0 1.905
+(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 1.905
 (returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905
 (lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr)
-4.406 E(ay)-.15 E F0(is)4.406 E(in)144 621.6 Q -.25(va)-.4 G
+4.406 E(ay)-.15 E F0(is)4.406 E(in)144 242.4 Q -.25(va)-.4 G
 (lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
-F1(popd)108 638.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
-2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 650.4 Q -.15(ve)-.15 G 2.8(se)
+F1(popd)108 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
+2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 271.2 Q -.15(ve)-.15 G 2.8(se)
 .15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299
 (th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G
 .299(he top directory from the)-2.799 F 1.478(stack, and performs a)144
-662.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479
+283.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479
 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479
 (uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15
-F(wing)-.25 E(meanings:)144 674.4 Q F1<ad6e>144 686.4 Q F0 .551
-(Suppresses the normal change of directory when remo)180 686.4 R .551
+F(wing)-.25 E(meanings:)144 295.2 Q F1<ad6e>144 307.2 Q F0 .551
+(Suppresses the normal change of directory when remo)180 307.2 R .551
 (ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 698.4 Q F1(+)144 710.4 Q F2(n)A
-F0(Remo)180 710.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
+(that only the stack is manipulated.)180 319.2 Q F1(+)144 331.2 Q F2(n)A
+F0(Remo)180 331.2 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
 F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25
 F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180
-722.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0
+343.2 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0
 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)
--.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-4.2)72 768 Q
-(2004 Apr 20)148.735 E(11)198.725 E 0 Cg EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad>144 84 Q/F2 10
-/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 G 3.76(st).15 G(he)
--3.76 E F2(n)3.76 E F0 1.259
-(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F
-F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F)
-180 96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0
+-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 355.2 Q F2(n)A F0
+(Remo)180 355.2 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0
+1.259(th entry counting from the right of the list sho)B 1.259(wn by)
+-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5
+(zero. F)180 367.2 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0
 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65
 E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144
-112.8 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1
-(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.)
-3.143 F F1(popd)5.644 E F0 .416(returns f)144 124.8 R .416
-(alse if an in)-.1 F -.25(va)-.4 G .415
+384 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs)
+3.143 E F0 .644(is performed as well, and the return status is 0.)3.143
+F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F
+-.25(va)-.4 G .415
 (lid option is encountered, the directory stack is empty).25 F 2.915
 (,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F
-(tory stack entry is speci\214ed, or the directory change f)144 136.8 Q
-(ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
+(tory stack entry is speci\214ed, or the directory change f)144 408 Q
+(ails.)-.1 E F1(printf)108 424.8 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
 (])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436
-(Write the formatted)144 165.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437
+(Write the formatted)144 436.8 R F2(ar)3.936 E(guments)-.37 E F0 1.437
 (to the standard output under the control of the)3.936 F F2(format)3.937
 E F0 6.437(.T)C(he)-6.437 E F1<ad76>3.937 E F0 .126
-(option causes the output to be assigned to the v)144 177.6 R(ariable)
+(option causes the output to be assigned to the v)144 448.8 R(ariable)
 -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard)
-2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.017 E F0 .517(i\
+2.626 F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(i\
 s a character string which contains three types of objects: plain chara\
 cters, which are)3.017 F .704(simply copied to standard output, charact\
-er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .703
+er escape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703
 (rted and copied to).15 F .036(the standard output, and format speci\
-\214cations, each of which causes printing of the ne)144 237.6 R .037
-(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0
+\214cations, each of which causes printing of the ne)144 508.8 R .037
+(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0
 5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2
 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031
-E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 261.6 Q
-(xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)180 273.6 Q F1(printf)
+E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 532.8 Q
+(xtensions:)-.15 E F1(%b)144 544.8 Q F0(causes)180 544.8 Q F1(printf)
 2.595 E F0 .096(to e)2.595 F .096
 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar)
-2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 285.6 Q(ay as)
--.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 297.6 Q F0(causes)180 297.6 Q
+2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 556.8 Q(ay as)
+-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 568.8 Q F0(causes)180 568.8 Q
 F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E
 (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F
-(input.)180 309.6 Q F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0(causes)
-180 333.6 Q F1(printf)4.403 E F0 1.904
+(input.)180 580.8 Q F1(%\()144 592.8 Q F2(datefmt)A F1(\)T)A F0(causes)
+180 604.8 Q F1(printf)4.403 E F0 1.904
 (to output the date-time string resulting from using)4.403 F F2(datefmt)
-4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2
+4.404 E F0 1.904(as a format)4.404 F .381(string for)180 616.8 R F2
 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar)
 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381
-(ger representing the number)-.15 F .457(of seconds since the epoch.)180
-357.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F
-.458(alues may be used: -1 represents the)-.25 F .848
-(current time, and -2 represents the time the shell w)180 369.6 R .847
-(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.347(d. If).1 F .847(no ar)3.347
-F .847(gument is speci-)-.18 F .354(\214ed, con)180 381.6 R -.15(ve)-.4
-G .354(rsion beha).15 F -.15(ve)-.2 G 2.854(sa).15 G 2.854(si)-2.854 G
-2.854(f-)-2.854 G 2.854(1h)-2.854 G .354(ad been gi)-2.854 F -.15(ve)
--.25 G 2.854(n. This).15 F .355(is an e)2.854 F .355
-(xception to the usual)-.15 F F1(printf)2.855 E F0(beha)180 393.6 Q
-(vior)-.2 E(.)-.55 E(Ar)144 410.4 Q .464(guments to non-string format s\
-peci\214ers are treated as C constants, e)-.18 F .463
-(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 422.4
-R 1.259
+(ger representing the number)-.15 F .292(of seconds since the epoch.)180
+628.8 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
+.293(alues may be used: \2551 represents the)-.25 F .694
+(current time, and \2552 represents the time the shell w)180 640.8 R
+.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)
+3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 652.8 R -.15
+(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
+G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
+G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
+F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E(Ar)144 681.6 Q
+.464(guments to non-string format speci\214ers are treated as C constan\
+ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258
+(minus sign is allo)144 693.6 R 1.259
 (wed, and if the leading character is a single or double quote, the v)
--.25 F 1.259(alue is the)-.25 F(ASCII v)144 434.4 Q(alue of the follo)
--.25 E(wing character)-.25 E(.)-.55 E(The)144 451.2 Q F2(format)3.424 E
+-.25 F 1.259(alue is the)-.25 F(ASCII v)144 705.6 Q(alue of the follo)
+-.25 E(wing character)-.25 E(.)-.55 E(The)144 722.4 Q F2(format)3.424 E
 F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423
 E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format)
-3.423 E F0 .923(requires more)3.423 F F2(ar)144 463.2 Q(guments)-.37 E
-F0 .033(than are supplied, the e)2.533 F .033
+3.423 E F0 .923(requires more)3.423 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(12)198.725 E 0 Cg EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Italic@0 SF(ar)144 84 Q
+(guments)-.37 E F0 .033(than are supplied, the e)2.533 F .033
 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si)
 .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 475.2 Q(The return v)5 E
-(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
-108 492 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C
-<ad>-2.5 E F2(n)A F0(])A F1(pushd)108 504 Q F0([)2.5 E F1<ad6e>A F0 2.5
-(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\
-tory stack, or rotates the stack, making the ne)144 516 R 3.139(wt)-.25
-G .639(op of the)-3.139 F .416(stack the current w)144 528 R .416
-(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F
-(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416
-(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625
-(and returns 0, unless the directory stack is empty)144 540 R 6.625(.A)
--.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15
-(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 552 Q F1
-<ad6e>144 564 Q F0 1.811(Suppresses the normal change of directory when\
- rotating or adding directories to the)180 564 R
-(stack, so that only the stack is manipulated.)180 576 Q F1(+)144 588 Q
-F2(n)A F0 1.268(Rotates the stack so that the)180 588 R F2(n)3.768 E F0
-1.267(th directory \(counting from the left of the list sho)B 1.267
-(wn by)-.25 F F1(dirs)180 600 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E F1<ad>144 612 Q F2(n)A F0 .92
-(Rotates the stack so that the)180 612 R F2(n)3.42 E F0 .92
+-.25 F(as appropriate, had been supplied.)144 96 Q(The return v)5 E
+(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E/F2 10
+/Times-Bold@0 SF(pushd)108 112.8 Q F0([)2.5 E F2<ad6e>A F0 2.5(][)C(+)
+-2.5 E F1(n)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0(])A F2(pushd)108 124.8 Q
+F0([)2.5 E F2<ad6e>A F0 2.5(][)C F1(dir)-2.5 E F0(])A .64(Adds a direct\
+ory to the top of the directory stack, or rotates the stack, making the\
+ ne)144 136.8 R 3.139(wt)-.25 G .639(op of the)-3.139 F .416
+(stack the current w)144 148.8 R .416(orking directory)-.1 F 5.416(.W)
+-.65 G .416(ith no ar)-5.816 F(guments,)-.18 E F2(pushd)2.916 E F0 -.15
+(ex)2.916 G .416(changes the top tw).15 F 2.917(od)-.1 G(irectories)
+-2.917 E 1.625(and returns 0, unless the directory stack is empty)144
+160.8 R 6.625(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha)
+.18 F 1.925 -.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)
+144 172.8 Q F2<ad6e>144 184.8 Q F0 1.811(Suppresses the normal change o\
+f directory when rotating or adding directories to the)180 184.8 R
+(stack, so that only the stack is manipulated.)180 196.8 Q F2(+)144
+208.8 Q F1(n)A F0 1.268(Rotates the stack so that the)180 208.8 R F1(n)
+3.768 E F0 1.267(th directory \(counting from the left of the list sho)B
+1.267(wn by)-.25 F F2(dirs)180 220.8 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F2<ad>144 232.8 Q F1(n)A F0
+.92(Rotates the stack so that the)180 232.8 R F1(n)3.42 E F0 .92
 (th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F1(dirs)180 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5
-E F2(dir)144.35 636 Q F0(Adds)180 636 Q F2(dir)3.138 E F0 .288
+F F2(dirs)180 244.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F1(dir)144.35 256.8 Q F0(Adds)180 256.8 Q F1(dir)3.138 E F0 .288
 (to the directory stack at the top, making it the ne)3.518 F 2.787(wc)
 -.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F
-(if it had been supplied as the ar)180 648 Q(gument to the)-.18 E F1(cd)
-2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 664.8 R F1(pushd)2.988
-E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488
+(if it had been supplied as the ar)180 268.8 Q(gument to the)-.18 E F2
+(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 285.6 R F2(pushd)
+2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488
 (is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F
-F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 676.8 R F2(dir)
+F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 297.6 R F1(dir)
 3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4
-F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
-(stack is empty)144 688.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
+F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
+(stack is empty)144 309.6 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
  directory stack element is speci\214ed, or the directory change to the)
--.15 F(speci\214ed ne)144 700.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5
-E(ails.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(12)198.725 E 0
-Cg EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pwd)108 84 Q F0([)2.5
-E F1(\255LP)A F0(])A .845(Print the absolute pathname of the current w)
-144 96 R .845(orking directory)-.1 F 5.844(.T)-.65 G .844
+-.15 F(speci\214ed ne)144 321.6 Q 2.5(wc)-.25 G(urrent directory f)-2.5
+E(ails.)-.1 E F2(pwd)108 338.4 Q F0([)2.5 E F2(\255LP)A F0(])A .845
+(Print the absolute pathname of the current w)144 350.4 R .845
+(orking directory)-.1 F 5.844(.T)-.65 G .844
 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144
-108 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1 .181
-(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set)
-2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If)
-144 120 R(the)3.264 E F1<ad4c>3.264 E F0 .763
+362.4 R F2<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F2
+.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2
+(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264
+(enabled. If)144 374.4 R(the)3.264 E F2<ad4c>3.264 E F0 .763
 (option is used, the pathname printed may contain symbolic links.)3.264
 F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\
- reading the name of the current directory or an in)144 132 R -.25(va)
--.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad)
-.18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1<ad61>-3.817 E/F2 10
-/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1<ad64>-3.817 E F2
-(delim)3.817 E F0 3.817(][)C F1<ad69>-3.817 E F2(te)3.817 E(xt)-.2 E F0
-3.817(][)C F1<ad6e>-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816
-(][)C F1<ad4e>-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1
-<ad70>-3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1<ad74>-3.816 E
-F2(timeout)3.816 E F0 3.816(][)C F1<ad75>-3.816 E F2(fd)3.816 E F0(])A
-([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\
-tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E
-F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 196.8 Q
-F1<ad75>3.848 E F0 1.348(option, split into w)3.848 F 1.348
-(ords as described abo)-.1 F 1.647 -.15(ve u)-.15 H(nder).15 E F1 -.75
-(Wo)3.847 G 1.347(rd Splitting).75 F F0 3.847(,a)C 1.347
-(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465
-(assigned to the \214rst)144 208.8 R F2(name)3.965 E F0 3.965(,t).18 G
-1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E
+ reading the name of the current directory or an in)144 386.4 R -.25(va)
+-.4 G(lid).25 E(option is supplied.)144 398.4 Q F2 -.18(re)108 415.2 S
+(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2<ad61>-3.817 E F1
+(aname)3.817 E F0 3.817(][)C F2<ad64>-3.817 E F1(delim)3.817 E F0 3.817
+(][)C F2<ad69>-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2<ad6e>
+-3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad4e>-3.816 E
+F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad70>-3.816 E F1(pr)
+3.816 E(ompt)-.45 E F0 3.816(][)C F2<ad74>-3.816 E F1(timeout)3.816 E F0
+3.816(][)C F2<ad75>-3.816 E F1(fd)3.816 E F0(])A([)108 427.2 Q F1(name)A
+F0(...])2.5 E .516(One line is read from the standard input, or from th\
+e \214le descriptor)144 439.2 R F1(fd)3.016 E F0 .516(supplied as an ar)
+3.016 F .517(gument to)-.18 F(the)144 451.2 Q F2<ad75>3.848 E F0 1.348
+(option, split into w)3.848 F 1.348(ords as described abo)-.1 F 1.647
+-.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)3.847 G 1.347(rd Splitting).75 F
+F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465
+(assigned to the \214rst)144 463.2 R F1(name)3.965 E F0 3.965(,t).18 G
+1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F1(name)3.965 E
 F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465
-F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112
+F -.1(wo)144 475.2 S 1.112(rds than names, the remaining w).1 F 1.112
 (ords and their interv)-.1 F 1.112
-(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0
+(ening delimiters are assigned to the last)-.15 F F1(name)144 487.2 Q F0
 5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w)
 -.25 F .723
 (ords read from the input stream than names, the remaining names are)-.1
-F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532
+F .532(assigned empty v)144 499.2 R 3.032(alues. The)-.25 F .532
 (characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531
 (are used to split the line into w)2.782 F .531(ords using the same)-.1
-F .197(rules the shell uses for e)144 256.8 R .197
-(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1
+F .197(rules the shell uses for e)144 511.2 R .197
+(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F2
 -.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197
-(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m)
+(backslash charac-)2.697 F .157(ter \()144 523.2 R F2(\\)A F0 2.657(\)m)
 C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s)
 .15 H .157(pecial meaning for the ne).15 F .156
 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144
-280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad61>144 292.8 Q F2(aname)2.5 E F0 1.049
-(The w)180 304.8 R 1.049
+535.2 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad61>144 547.2 Q F1(aname)2.5 E F0 1.049
+(The w)180 559.2 R 1.049
 (ords are assigned to sequential indices of the array v)-.1 F(ariable)
--.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2
-(aname)180.33 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
-(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5
-E(guments are ignored.)-.18 E F1<ad64>144 328.8 Q F2(delim)2.5 E F0
-(The \214rst character of)180 340.8 Q F2(delim)2.5 E F0
-(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E
-F1<ad65>144 352.8 Q F0 .373
-(If the standard input is coming from a terminal,)180 352.8 R F1 -.18
-(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo)
-2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E
-.218(to obtain the line.)180 364.8 R .218
+-.25 E F1(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F1
+(aname)180.33 571.2 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
+(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0(ar)2.5
+E(guments are ignored.)-.18 E F2<ad64>144 583.2 Q F1(delim)2.5 E F0
+1.318(The \214rst character of)180 595.2 R F1(delim)3.818 E F0 1.317
+(is used to terminate the input line, rather than ne)3.818 F 3.817
+(wline. If)-.25 F F1(delim)180 607.2 Q F0(is the empty string,)2.5 E F2
+-.18(re)2.5 G(ad).18 E F0
+(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2
+<ad65>144 619.2 Q F0 .372
+(If the standard input is coming from a terminal,)180 619.2 R F2 -.18
+(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)
+2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E
+.218(to obtain the line.)180 631.2 R .218
 (Readline uses the current \(or def)5.218 F .218
 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E
-(acti)180 376.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E
-F1<ad69>144 388.8 Q F2(te)2.5 E(xt)-.2 E F0(If)180 388.8 Q F1 -.18(re)
-2.716 G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2
-(te)2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2
-E .215(fer before edit-)-.25 F(ing be)180 400.8 Q(gins.)-.15 E F1<ad6e>
-144 412.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 424.8 S(ad).18
-E F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1
-E F0 1.395(characters rather than w)3.894 F 1.395
-(aiting for a complete line of)-.1 F(input, b)180 436.8 Q
-(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15
-E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1
-<ad4e>144 448.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 460.8 S
-(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc)
-3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F
-1.269(aiting for a complete)-.1 F .274
-(line of input, unless EOF is encountered or)180 472.8 R F1 -.18(re)
-2.775 G(ad).18 E F0 .275(times out.)2.775 F .275
-(Delimiter characters encoun-)5.275 F 1.003
-(tered in the input are not treated specially and do not cause)180 484.8
-R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc)
-3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 496.8 R .608
-(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0
-3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 508.8 S .67
+(acti)180 643.2 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
+(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
+(ault \214lename completion.)-.1 E F2<ad69>144 655.2 Q F1(te)2.5 E(xt)
+-.2 E F0(If)180 655.2 Q F2 -.18(re)2.715 G(adline).18 E F0 .216
+(is being used to read the line,)2.715 F F1(te)2.716 E(xt)-.2 E F0 .216
+(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-)
+-.25 F(ing be)180 667.2 Q(gins.)-.15 E F2<ad6e>144 679.2 Q F1(nc)2.5 E
+(har)-.15 E(s)-.1 E F2 -.18(re)180 691.2 S(ad).18 E F0 1.395
+(returns after reading)3.895 F F1(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395
+(characters rather than w)3.895 F 1.394(aiting for a complete line of)
+-.1 F(input, b)180 703.2 Q(ut honors a delimiter if fe)-.2 E(wer than)
+-.25 E F1(nc)2.5 E(har)-.15 E(s)-.1 E F0
+(characters are read before the delimiter)2.5 E(.)-.55 E(GNU Bash 5.0)72
+768 Q(2004 Apr 20)149.565 E(13)198.725 E 0 Cg EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad4e>144 84 Q/F2 10
+/Times-Italic@0 SF(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 96 S(ad)
+.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769
+E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27
+(aiting for a complete)-.1 F .275
+(line of input, unless EOF is encountered or)180 108 R F1 -.18(re)2.775
+G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-)
+5.274 F 1.002
+(tered in the input are not treated specially and do not cause)180 120 R
+F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503
+E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 132 R .608
+(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0
+3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 144 S .669
 (riable is assigned e).25 F .669
-(xactly the characters read \(with the e)-.15 F .669
-(xception of backslash; see the)-.15 F F1<ad72>180 520.8 Q F0
-(option belo)2.5 E(w\).)-.25 E F1<ad70>144 532.8 Q F2(pr)2.5 E(ompt)-.45
-E F0(Display)180 544.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161
-(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)
--3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 556.8 Q
-2.5(yi)-.15 G 2.5(nput. The)-2.5 F
+(xactly the characters read \(with the e)-.15 F .67
+(xception of backslash; see the)-.15 F F1<ad72>180 156 Q F0(option belo)
+2.5 E(w\).)-.25 E F1<ad70>144 168 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)
+180 180 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F
+3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161
+(wline, before attempting to read)-.25 F(an)180 192 Q 2.5(yi)-.15 G 2.5
+(nput. The)-2.5 F
 (prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<ad72>144 568.8 Q F0 .544(Backslash does not act as an escape character)
-180 568.8 R 5.543(.T)-.55 G .543
-(he backslash is considered to be part of)-5.543 F(the line.)180 580.8 Q
-(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E
-(wline pair may not be used as a line continuation.)-.25 E F1<ad73>144
-592.8 Q F0(Silent mode.)180 592.8 Q
+<ad72>144 204 Q F0 .543(Backslash does not act as an escape character)
+180 204 R 5.543(.T)-.55 G .544(he backslash is considered to be part of)
+-5.543 F .493(the line.)180 216 R .493(In particular)5.493 F 2.993(,ab)
+-.4 G(ackslash-ne)-2.993 E .493
+(wline pair may not then be used as a line continua-)-.25 F(tion.)180
+228 Q F1<ad73>144 240 Q F0(Silent mode.)180 240 Q
 (If input is coming from a terminal, characters are not echoed.)5 E F1
-<ad74>144 604.8 Q F2(timeout)2.5 E F0(Cause)180 616.8 Q F1 -.18(re)2.928
-G(ad).18 E F0 .428(to time out and return f)2.928 F .428
+<ad74>144 252 Q F2(timeout)2.5 E F0(Cause)180 264 Q F1 -.18(re)2.928 G
+(ad).18 E F0 .428(to time out and return f)2.928 F .428
 (ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561
-(ber of characters\) is not read within)180 628.8 R F2(timeout)3.061 E
-F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number)
-3.061 F(with a fractional portion follo)180 640.8 Q
+(ber of characters\) is not read within)180 276 R F2(timeout)3.061 E F0
+(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number)
+3.061 F(with a fractional portion follo)180 288 Q
 (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E
 .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
 g input from a terminal, pipe, or other special \214le; it has no ef)180
-652.8 R .505(fect when reading)-.25 F .589(from re)180 664.8 R .589
+300 R .505(fect when reading)-.25 F .589(from re)180 312 R .589
 (gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589
 (times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)
 -.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59
-(artial input read into the speci\214ed).15 F -.25(va)180 676.8 S
-(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0
-.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)
-2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15
-G(ata.)-2.77 E 1.12(The e)180 688.8 R 1.12
-(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12
-(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12
-(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 700.8 R -.15(ex)2.5 G
-(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E
-F1<ad75>144 712.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor)180
-712.8 Q F2(fd)2.5 E F0(.)A .477(If no)144 729.6 R F2(names)3.337 E F0
-.477(are supplied, the line read is assigned to the v)3.247 F(ariable)
--.25 E F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476
-(The e)4.976 F .476(xit status is zero,)-.15 F(GNU Bash-4.2)72 768 Q
-(2004 Apr 20)148.735 E(13)198.725 E 0 Cg EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .772(unless end-of-\214le is encountered,)
-144 84 R/F1 10/Times-Bold@0 SF -.18(re)3.272 G(ad).18 E F0 .773
+(artial input read into the speci\214ed).15 F -.25(va)180 324 S(riable)
+.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27
+(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77
+F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G
+(ata.)-2.77 E 1.12(The e)180 336 R 1.12(xit status is 0 if input is a)
+-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor)
+.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180
+348 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
+.15 E(xceeded.)-.15 E F1<ad75>144 360 Q F2(fd)2.5 E F0
+(Read input from \214le descriptor)180 360 Q F2(fd)2.5 E F0(.)A .477
+(If no)144 376.8 R F2(names)3.337 E F0 .477
+(are supplied, the line read is assigned to the v)3.247 F(ariable)-.25 E
+/F3 9/Times-Bold@0 SF(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A
+F0 .476(The e)4.976 F .476(xit status is zero,)-.15 F .772
+(unless end-of-\214le is encountered,)144 388.8 R F1 -.18(re)3.272 G(ad)
+.18 E F0 .773
 (times out \(in which case the status is greater than 128\), a)3.272 F
--.25(va)144 96 S 2.004
+-.25(va)144 400.8 S 2.004
 (riable assignment error \(such as assigning to a readonly v).25 F 2.004
 (ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F
-(descriptor is supplied as the ar)144 108 Q(gument to)-.18 E F1<ad75>2.5
-E F0(.)A F1 -.18(re)108 124.8 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0
-2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E
-F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 136.8 R
--.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77
-(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0
-.77(may not be changed by subse-)3.54 F 1.097(quent assignment.)144
-148.8 R 1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097
+(descriptor is supplied as the ar)144 412.8 Q(gument to)-.18 E F1<ad75>
+2.5 E F0(.)A F1 -.18(re)108 429.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A
+F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A
+(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 441.6 R -.15(ve)-.25 G
+(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v)
+-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77
+(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 453.6 R
+1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097
 (option is supplied, the functions corresponding to the)3.597 F F2
-(names)3.596 E F0 1.096(are so)3.596 F(mark)144 160.8 Q 3.334(ed. The)
+(names)3.596 E F0 1.096(are so)3.596 F(mark)144 465.6 Q 3.334(ed. The)
 -.1 F F1<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834
 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the)
 -3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
--.25 E .777(ables to associati)144 172.8 R 1.077 -.15(ve a)-.25 H 3.277
+-.25 E .777(ables to associati)144 477.6 R 1.077 -.15(ve a)-.25 H 3.277
 (rrays. If).15 F .777(both options are supplied,)3.277 F F1<ad41>3.277 E
 F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name)
-3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 184.8 R -.15(ve)
+3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 489.6 R -.15(ve)
 -.25 G .521(n, or if the).15 F F1<ad70>3.021 E F0 .521
 (option is supplied, a list of all readonly names is printed.)3.021 F
 .522(The other)5.521 F .295(options may be used to restrict the output \
-to a subset of the set of readonly names.)144 196.8 R(The)5.295 E F1
+to a subset of the set of readonly names.)144 501.6 R(The)5.295 E F1
 <ad70>2.795 E F0(option)2.795 E .786
 (causes output to be displayed in a format that may be reused as input.)
-144 208.8 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
-220.8 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
+144 513.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
+525.6 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
 -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor)
 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in)
 -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the)
-144 232.8 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
+144 537.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
 -.25 F .26(ariable name, or)-.25 F F1<ad66>2.76 E F0 .26
-(is supplied with a)2.76 F F2(name)144.36 244.8 Q F0
-(that is not a function.)2.68 E F1 -.18(re)108 261.6 S(tur).18 E(n)-.15
-E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 273.6 R
+(is supplied with a)2.76 F F2(name)144.36 549.6 Q F0
+(that is not a function.)2.68 E F1 -.18(re)108 566.4 S(tur).18 E(n)-.15
+E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 578.4 R
 -.15(xe)-.15 G .021(cuting and return the v).15 F .021
 (alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02
 (.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596
-(the return status is that of the last command e)144 285.6 R -.15(xe)
+(the return status is that of the last command e)144 590.4 R -.15(xe)
 -.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E
 F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15
-G(cuted).15 E 1.239(by a trap handler)144 297.6 R 3.738(,t)-.4 G 1.238
+G(cuted).15 E 1.239(by a trap handler)144 602.4 R 3.738(,t)-.4 G 1.238
 (he last command used to determine the status is the last command e)
--3.738 F -.15(xe)-.15 G(cuted).15 E 1.066(before the trap handler)144
-309.6 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E
-F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB)
-3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F .39
-(determine the status is the last command e)144 321.6 R -.15(xe)-.15 G
+-3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144
+614.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E
+F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB)
+3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39
+(determine the status is the last command e)144 626.4 R -.15(xe)-.15 G
 .389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E
 (n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke)
-.4 G(d.).1 E(If)144 333.6 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0
+.4 G(d.).1 E(If)144 638.4 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0
 .084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15
 (xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084
 E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589
-(causes the shell to stop e)144 345.6 R -.15(xe)-.15 G .589
+(causes the shell to stop e)144 650.4 R -.15(xe)-.15 G .589
 (cuting that script and return either).15 F F2(n)3.448 E F0 .588
 (or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e)
-144 357.6 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
+144 662.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
 .326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326
 (is supplied, the return v)2.826 F .326(alue is)-.25 F .445
-(its least signi\214cant 8 bits.)144 369.6 R .444
+(its least signi\214cant 8 bits.)144 674.4 R .444
 (The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E
 (n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381
-(ment, or is used outside a function and not during e)144 381.6 R -.15
+(ment, or is used outside a function and not during e)144 686.4 R -.15
 (xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
 F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
-E .75(mand associated with the)144 393.6 R F1(RETURN)3.249 E F0 .749
+E .75(mand associated with the)144 698.4 R F1(RETURN)3.249 E F0 .749
 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15
-G .749(cution resumes after the function).15 F(or script.)144 405.6 Q F1
-(set)108 422.4 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
-F1<ad6f>-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E
-F0(...])2.5 E F1(set)108 434.4 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0
+G .749(cution resumes after the function).15 F(or script.)144 710.4 Q
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(set)108 84 Q F0([)2.5
+E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1<ad6f>-2.5 E/F2 10
+/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37
+E F0(...])2.5 E F1(set)108 96 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0
 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E
-(g)-.37 E F0(...])2.5 E -.4(Wi)144 446.4 S .835
+(g)-.37 E F0(...])2.5 E -.4(Wi)144 108 S .835
 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F
 .836(ariable are displayed in a format that can be)-.25 F .784
-(reused as input for setting or resetting the currently-set v)144 458.4
-R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783
-(riables cannot be).25 F 2.911(reset. In)144 470.4 R F2(posix)2.911 E F0
-.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412
-(The output is sorted according to the current)5.412 F 3.531
-(locale. When)144 482.4 R 1.031(options are speci\214ed, the)3.531 F
-3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)
--.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623
-(after option processing are treated as v)144 494.4 R 1.624
+(reused as input for setting or resetting the currently-set v)144 120 R
+3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783(riables cannot be)
+.25 F 2.946(reset. In)144 132 R F2 .447(posix mode)2.946 F F0 2.947(,o)C
+.447(nly shell v)-2.947 F .447(ariables are listed.)-.25 F .447
+(The output is sorted according to the current)5.447 F 3.531
+(locale. When)144 144 R 1.031(options are speci\214ed, the)3.531 F 3.531
+(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)-.2 F
+3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623
+(after option processing are treated as v)144 156 R 1.624
 (alues for the positional parameters and are assigned, in)-.25 F(order)
-144 506.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A
-F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3
--.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 518.4 Q
-F0 1.378(Each v)184 518.4 R 1.377
+144 168 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1
+2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15
+(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 180 Q F0
+1.378(Each v)184 180 R 1.377
 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve)
 -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F
-1.377(ute and)-.2 F(mark)184 530.4 Q(ed for e)-.1 E(xport to the en)-.15
-E(vironment of subsequent commands.)-.4 E F1<ad62>144 542.4 Q F0 .131
-(Report the status of terminated background jobs immediately)184 542.4 R
+1.377(ute and)-.2 F(mark)184 192 Q(ed for e)-.1 E(xport to the en)-.15 E
+(vironment of subsequent commands.)-.4 E F1<ad62>144 204 Q F0 .131
+(Report the status of terminated background jobs immediately)184 204 R
 2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E
-(primary prompt.)184 554.4 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
--.25 H(nly when job control is enabled.).15 E F1<ad65>144 566.4 Q F0
-.088(Exit immediately if a)184 566.4 R F2(pipeline)2.588 E F0 .087
+(primary prompt.)184 216 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)-.25
+H(nly when job control is enabled.).15 E F1<ad65>144 228 Q F0 .088
+(Exit immediately if a)184 228 R F2(pipeline)2.588 E F0 .087
 (\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F
-F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 578.4 Q
-F2 1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF
-1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e)
-.15 F 1.521(xits with a non-zero status.)-.15 F .08
-(The shell does not e)184 590.4 R .079(xit if the command that f)-.15 F
-.079(ails is part of the command list immediately)-.1 F(follo)184 602.4
-1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0
+F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 240 Q F2
+1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF 1.521
+(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F
+1.521(xits with a non-zero status.)-.15 F .08(The shell does not e)184
+252 R .079(xit if the command that f)-.15 F .079
+(ails is part of the command list immediately)-.1 F(follo)184 264 Q
+1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0
 -.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655
 (wing the)-.25 F F1(if)4.155 E F0(or)4.155 E F1(elif)4.155 E F0(reserv)
-4.155 E(ed)-.15 E -.1(wo)184 614.4 S .582(rds, part of an).1 F 3.082(yc)
+4.155 E(ed)-.15 E -.1(wo)184 276 S .582(rds, part of an).1 F 3.082(yc)
 -.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F1
 (&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .581(list e)3.081 F .581
-(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 626.4 R
+(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 288 R
 F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c)
 -3.417 H .918(ommand in a pipeline b).15 F .918
 (ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E
--.25(va)184 638.4 S .661(lue is being in).25 F -.15(ve)-.4 G .661
+-.25(va)184 300 S .661(lue is being in).25 F -.15(ve)-.4 G .661
 (rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66
 (ompound command other than a subshell returns a)-3.161 F 1.112
-(non-zero status because a command f)184 650.4 R 1.112(ailed while)-.1 F
+(non-zero status because a command f)184 312 R 1.112(ailed while)-.1 F
 F1<ad65>3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113
-(eing ignored, the shell does)-3.612 F .178(not e)184 662.4 R 2.678
+(eing ignored, the shell does)-3.612 F .178(not e)184 324 R 2.678
 (xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678
 (fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178
 (cuted before the shell e).15 F 2.677(xits. This)-.15 F .177
-(option applies to)2.677 F .617(the shell en)184 674.4 R .617
+(option applies to)2.677 F .617(the shell en)184 336 R .617
 (vironment and each subshell en)-.4 F .617(vironment separately \(see)
--.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 686.4 R(ONMENT)
+-.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 348 R(ONMENT)
 -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 698.4
-Q 2.042(If a compound command or shell function e)184 716.4 R -.15(xe)
--.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542
-E F0 2.043(is being)4.543 F 1.436(ignored, none of the commands e)184
-728.4 R -.15(xe)-.15 G 1.435
-(cuted within the compound command or function).15 F(GNU Bash-4.2)72 768
-Q(2004 Apr 20)148.735 E(14)198.725 E 0 Cg EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .193(body will be af)184 84 R .193
-(fected by the)-.25 F/F1 10/Times-Bold@0 SF<ad65>2.693 E F0 .193
-(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1<ad65>
-2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)-.1 E
-3.39(status. If)184 96 R 3.39(ac)3.39 G .89
+(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 360 Q
+2.042(If a compound command or shell function e)184 378 R -.15(xe)-.15 G
+2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542 E F0
+2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 390 R
+-.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F
+.193(body will be af)184 402 R .193(fected by the)-.25 F F1<ad65>2.693 E
+F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1
+<ad65>2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)
+-.1 E 3.39(status. If)184 414 R 3.39(ac)3.39 G .89
 (ompound command or shell function sets)-3.39 F F1<ad65>3.39 E F0 .89
 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E
-(where)184 108 Q F1<ad65>3.153 E F0 .653
+(where)184 426 Q F1<ad65>3.153 E F0 .653
 (is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954
 -.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F
-(or the command containing the function call completes.)184 120 Q F1
-<ad66>144 132 Q F0(Disable pathname e)184 132 Q(xpansion.)-.15 E F1
-<ad68>144 144 Q F0 2.239(Remember the location of commands as the)184
-144 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F
+(or the command containing the function call completes.)184 438 Q F1
+<ad66>144 450 Q F0(Disable pathname e)184 450 Q(xpansion.)-.15 E F1
+<ad68>144 462 Q F0 2.239(Remember the location of commands as the)184
+462 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F
 -.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184
-156 Q(ault.)-.1 E F1<ad6b>144 168 Q F0 .513(All ar)184 168 R .514
+474 Q(ault.)-.1 E F1<ad6b>144 486 Q F0 .513(All ar)184 486 R .514
 (guments in the form of assignment statements are placed in the en)-.18
 F .514(vironment for a)-.4 F
-(command, not just those that precede the command name.)184 180 Q F1
-<ad6d>144 192 Q F0 .149(Monitor mode.)184 192 R .149
+(command, not just those that precede the command name.)184 498 Q F1
+<ad6d>144 510 Q F0 .149(Monitor mode.)184 510 R .149
 (Job control is enabled.)5.149 F .148(This option is on by def)5.149 F
 .148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65
-(on systems that support it \(see)184 204 R/F2 9/Times-Bold@0 SF .651
-(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151
-(\). All).15 F .651(processes run in a separate)3.151 F .679
-(process group.)184 216 R .678(When a background job completes, the she\
-ll prints a line containing its)5.679 F -.15(ex)184 228 S(it status.).15
-E F1<ad6e>144 240 Q F0 .652(Read commands b)184 240 R .652(ut do not e)
--.2 F -.15(xe)-.15 G .652(cute them.).15 F .653
-(This may be used to check a shell script for)5.652 F(syntax errors.)184
-252 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1<ad6f>144 264 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The)
-184 276 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E
-(wing:)-.25 E F1(allexport)184 288 Q F0(Same as)224 300 Q F1<ad61>2.5 E
-F0(.)A F1(braceexpand)184 312 Q F0(Same as)224 324 Q F1<ad42>2.5 E F0(.)
-A F1(emacs)184 336 Q F0 .089
-(Use an emacs-style command line editing interf)224 336 R 2.589
+(on systems that support it \(see)184 522 R F3 .651(JOB CONTR)3.151 F
+(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651
+(processes run in a separate)3.151 F .679(process group.)184 534 R .678
+(When a background job completes, the shell prints a line containing it\
+s)5.679 F -.15(ex)184 546 S(it status.).15 E F1<ad6e>144 558 Q F0 .652
+(Read commands b)184 558 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652
+(cute them.).15 F .653(This may be used to check a shell script for)
+5.652 F(syntax errors.)184 570 Q(This is ignored by interacti)5 E .3
+-.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 582 Q F2(option\255name)2.5 E
+F0(The)184 594 Q F2(option\255name)2.5 E F0(can be one of the follo)2.5
+E(wing:)-.25 E F1(allexport)184 606 Q F0(Same as)224 618 Q F1<ad61>2.5 E
+F0(.)A F1(braceexpand)184 630 Q F0(Same as)224 642 Q F1<ad42>2.5 E F0(.)
+A F1(emacs)184 654 Q F0 .089
+(Use an emacs-style command line editing interf)224 654 R 2.589
 (ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95
-(when the shell is interacti)224 348 R -.15(ve)-.25 G 3.45(,u).15 G .95
+(when the shell is interacti)224 666 R -.15(ve)-.25 G 3.45(,u).15 G .95
 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E
-F0 2.5(option. This)224 360 R(also af)2.5 E(fects the editing interf)
+F0 2.5(option. This)224 678 R(also af)2.5 E(fects the editing interf)
 -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err)
-184 372 Q(exit)-.18 E F0(Same as)224 372 Q F1<ad65>2.5 E F0(.)A F1
-(errtrace)184 384 Q F0(Same as)224 384 Q F1<ad45>2.5 E F0(.)A F1
-(functrace)184 396 Q F0(Same as)224 408 Q F1<ad54>2.5 E F0(.)A F1
-(hashall)184 420 Q F0(Same as)224 420 Q F1<ad68>2.5 E F0(.)A F1
-(histexpand)184 432 Q F0(Same as)224 444 Q F1<ad48>2.5 E F0(.)A F1
-(history)184 456 Q F0 .587(Enable command history)224 456 R 3.087(,a)
--.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15
-H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF
-(.)A F0 .587(This option is)5.087 F(on by def)224 468 Q
-(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-480 Q(eeof)-.18 E F0 1.656(The ef)224 492 R 1.656
-(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10)
-4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-504 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1 -.1(ke)184 516 S(yw).1 E(ord)-.1 E F0(Same as)224 528 Q F1
-<ad6b>2.5 E F0(.)A F1(monitor)184 540 Q F0(Same as)224 540 Q F1<ad6d>2.5
-E F0(.)A F1(noclob)184 552 Q(ber)-.1 E F0(Same as)224 564 Q F1<ad43>2.5
-E F0(.)A F1(noexec)184 576 Q F0(Same as)224 576 Q F1<ad6e>2.5 E F0(.)A
-F1(noglob)184 588 Q F0(Same as)224 588 Q F1<ad66>2.5 E F0(.)A F1(nolog)
-184 600 Q F0(Currently ignored.)224 600 Q F1(notify)184 612 Q F0
-(Same as)224 612 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 624 Q F0(Same as)
-224 624 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 636 Q F0(Same as)224 636 Q
-F1<ad74>2.5 E F0(.)A F1(ph)184 648 Q(ysical)-.15 E F0(Same as)224 648 Q
-F1<ad50>2.5 E F0(.)A F1(pipefail)184 660 Q F0 1.03(If set, the return v)
-224 660 R 1.029(alue of a pipeline is the v)-.25 F 1.029
-(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 672 R
-1.136
-(xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 684 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 696 Q F0
-2.091(Change the beha)224 696 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
-2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091
-(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224
-708 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F
-F0(belo)3.463 E(w)-.25 E 2.307
-(for a reference to a document that details ho)224 720 R 4.806(wp)-.25 G
-2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E
-(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP
+184 690 Q(exit)-.18 E F0(Same as)224 690 Q F1<ad65>2.5 E F0(.)A F1
+(errtrace)184 702 Q F0(Same as)224 702 Q F1<ad45>2.5 E F0(.)A
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15)198.725 E 0 Cg EP
 %%Page: 16 16
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(beha)224 84 Q(vior)-.2 E(.)-.55 E/F1 10
-/Times-Bold@0 SF(pri)184 96 Q(vileged)-.1 E F0(Same as)224 108 Q F1
-<ad70>2.5 E F0(.)A F1 -.1(ve)184 120 S(rbose).1 E F0(Same as)224 120 Q
-F1<ad76>2.5 E F0(.)A F1(vi)184 132 Q F0 1.465
-(Use a vi-style command line editing interf)224 132 R 3.966(ace. This)
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(functrace)184 84 Q F0
+(Same as)224 96 Q F1<ad54>2.5 E F0(.)A F1(hashall)184 108 Q F0(Same as)
+224 108 Q F1<ad68>2.5 E F0(.)A F1(histexpand)184 120 Q F0(Same as)224
+132 Q F1<ad48>2.5 E F0(.)A F1(history)184 144 Q F0 .587
+(Enable command history)224 144 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587
+(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9
+/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF
+(.)A F0 .587(This option is)5.087 F(on by def)224 156 Q
+(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
+168 Q(eeof)-.18 E F0 1.656(The ef)224 180 R 1.656
+(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10)
+4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
+192 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F1 -.1(ke)184 204 S(yw).1 E(ord)-.1 E F0(Same as)224 216 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 228 Q F0(Same as)224 228 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 240 Q(ber)-.1 E F0(Same as)224 252 Q F1<ad43>2.5
+E F0(.)A F1(noexec)184 264 Q F0(Same as)224 264 Q F1<ad6e>2.5 E F0(.)A
+F1(noglob)184 276 Q F0(Same as)224 276 Q F1<ad66>2.5 E F0(.)A F1(nolog)
+184 288 Q F0(Currently ignored.)224 288 Q F1(notify)184 300 Q F0
+(Same as)224 300 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 312 Q F0(Same as)
+224 312 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 324 Q F0(Same as)224 324 Q
+F1<ad74>2.5 E F0(.)A F1(ph)184 336 Q(ysical)-.15 E F0(Same as)224 336 Q
+F1<ad50>2.5 E F0(.)A F1(pipefail)184 348 Q F0 1.03(If set, the return v)
+224 348 R 1.029(alue of a pipeline is the v)-.25 F 1.029
+(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 360 R
+1.136
+(xit with a non-zero status, or zero if all commands in the pipeline)
+-.15 F -.15(ex)224 372 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 384 Q F0
+2.091(Change the beha)224 384 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091
+(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224
+396 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2
+1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307
+(for a reference to a document that details ho)224 408 R 4.806(wp)-.25 G
+2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224
+420 Q(vior)-.2 E(.)-.55 E F1(pri)184 432 Q(vileged)-.1 E F0(Same as)224
+444 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 456 S(rbose).1 E F0(Same as)224
+456 Q F1<ad76>2.5 E F0(.)A F1(vi)184 468 Q F0 1.465
+(Use a vi-style command line editing interf)224 468 R 3.966(ace. This)
 -.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224
-144 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
-(xtrace)184 156 Q F0(Same as)224 156 Q F1<ad78>2.5 E F0(.)A(If)184 174 Q
-F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F/F2 10/Times-Italic@0
-SF(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552
+480 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
+(xtrace)184 492 Q F0(Same as)224 492 Q F1<ad78>2.5 E F0(.)A(If)184 510 Q
+F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F5(option\255name)
+3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552
 (alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184
-186 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0
+522 Q F0 1.071(is supplied with no)3.571 F F5(option\255name)3.571 E F0
 3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072
 (commands to recreate the current)3.572 F
-(option settings is displayed on the standard output.)184 198 Q F1<ad70>
-144 210 Q F0 -.45(Tu)184 210 S 1.072(rn on).45 F F2(privile)4.822 E -.1
+(option settings is displayed on the standard output.)184 534 Q F1<ad70>
+144 546 Q F0 -.45(Tu)184 546 S 1.072(rn on).45 F F5(privile)4.822 E -.1
 (ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F
-/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)
--.27 E F0 1.071(\214les are not pro-)3.322 F 1.5
-(cessed, shell functions are not inherited from the en)184 222 R 1.501
-(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A
-F3 -.27(BA)184 234 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G
-(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G
-.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
-(vironment,)-.4 E .379(are ignored.)184 246 R .379
+F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.071
+(\214les are not pro-)3.322 F 1.5
+(cessed, shell functions are not inherited from the en)184 558 R 1.501
+(vironment, and the)-.4 F F2(SHELLOPTS)4.001 E F3(,)A F2 -.27(BA)184 570
+S(SHOPTS).27 E F3(,)A F2(CDP)2.775 E -.855(AT)-.666 G(H).855 E F3(,)A F0
+(and)2.775 E F2(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524
+(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
+(vironment,)-.4 E .379(are ignored.)184 582 R .379
 (If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15
 (ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462
-(user \(group\) id, and the)184 258 R F1<ad70>2.961 E F0 .461
+(user \(group\) id, and the)184 594 R F1<ad70>2.961 E F0 .461
 (option is not supplied, these actions are tak)2.961 F .461
-(en and the ef)-.1 F(fec-)-.25 E(ti)184 270 Q .694 -.15(ve u)-.25 H .394
+(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .694 -.15(ve u)-.25 H .394
 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1<ad70>
 2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25
-E -.15(ve)-.25 G .387(user id is not reset.)184 282 R -.45(Tu)5.387 G
+E -.15(ve)-.25 G .387(user id is not reset.)184 618 R -.45(Tu)5.387 G
 .387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886
 F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F
-(set to the real user and group ids.)184 294 Q F1<ad74>144 306 Q F0
-(Exit after reading and e)184 306 Q -.15(xe)-.15 G(cuting one command.)
-.15 E F1<ad75>144 318 Q F0 -.35(Tr)184 318 S .043(eat unset v).35 F .044
+(set to the real user and group ids.)184 630 Q F1<ad74>144 642 Q F0
+(Exit after reading and e)184 642 Q -.15(xe)-.15 G(cuting one command.)
+.15 E F1<ad75>144 654 Q F0 -.35(Tr)184 654 S .043(eat unset v).35 F .044
 (ariables and parameters other than the special parameters "@" and "*" \
-as an)-.25 F .183(error when performing parameter e)184 330 R 2.683
+as an)-.25 F .183(error when performing parameter e)184 666 R 2.683
 (xpansion. If)-.15 F -.15(ex)2.683 G .182
 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746
-(able or parameter)184 342 R 3.246(,t)-.4 G .746
+(able or parameter)184 678 R 3.246(,t)-.4 G .746
 (he shell prints an error message, and, if not interacti)-3.246 F -.15
 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-354 Q F1<ad76>144 366 Q F0(Print shell input lines as the)184 366 Q 2.5
-(ya)-.15 G(re read.)-2.5 E F1<ad78>144 378 Q F0 .315(After e)184 378 R
-.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25
+690 Q F1<ad76>144 702 Q F0(Print shell input lines as the)184 702 Q 2.5
+(ya)-.15 G(re read.)-2.5 E F1<ad78>144 714 Q F0 .315(After e)184 714 R
+.315(xpanding each)-.15 F F5 .315(simple command)2.815 F F0(,)A F1 -.25
 (fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)
-2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184
-390 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F
-1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0
-(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 402 Q
-(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1
-<ad42>144 414 Q F0 2.579(The shell performs brace e)184 414 R 2.578
+2.815 E F1(select)2.815 E F0(command,)2.815 E 3.259(or arithmetic)184
+726 R F1 -.25(fo)5.759 G(r).25 E F0 3.26(command, display the e)5.759 F
+3.26(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo)
+5.51 E 3.26(wed by the)-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565
+E(16)198.725 E 0 Cg EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E(command and its e)184 84 Q(xpanded ar)-.15
+E(guments or associated w)-.18 E(ord list.)-.1 E/F1 10/Times-Bold@0 SF
+<ad42>144 96 Q F0 2.579(The shell performs brace e)184 96 R 2.578
 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E
--.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 426 Q
-(ault.)-.1 E F1<ad43>144 438 Q F0 .213(If set,)184 438 R F1(bash)2.713 E
+-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 108 Q
+(ault.)-.1 E F1<ad43>144 120 Q F0 .213(If set,)184 120 R F1(bash)2.713 E
 F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
 2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F
-3.054(tors. This)184 450 R .553(may be o)3.053 F -.15(ve)-.15 G .553
+3.054(tors. This)184 132 R .553(may be o)3.053 F -.15(ve)-.15 G .553
 (rridden when creating output \214les by using the redirection opera-)
-.15 F(tor)184 462 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<ad45>144 474 Q F0 .103(If set, an)184 474 R 2.603(yt)-.15 G .103
+.15 F(tor)184 144 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 156 Q F0 .103(If set, an)184 156 R 2.603(yt)-.15 G .103
 (rap on)-2.603 F F1(ERR)2.603 E F0 .104
 (is inherited by shell functions, command substitutions, and com-)2.603
-F .839(mands e)184 486 R -.15(xe)-.15 G .839(cuted in a subshell en).15
+F .839(mands e)184 168 R -.15(xe)-.15 G .839(cuted in a subshell en).15
 F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838
-(trap is normally not inherited in)3.338 F(such cases.)184 498 Q F1
-<ad48>144 510 Q F0(Enable)184 510 Q F1(!)3.031 E F0 .531
+(trap is normally not inherited in)3.338 F(such cases.)184 180 Q F1
+<ad48>144 192 Q F0(Enable)184 192 Q F1(!)3.031 E F0 .531
 (style history substitution.)5.531 F .531(This option is on by def)5.531
-F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 522 Q -.15
-(ve)-.25 G(.).15 E F1<ad50>144 534 Q F0 .96
-(If set, the shell does not resolv)184 534 R 3.459(es)-.15 G .959
+F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 204 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 216 Q F0 .96
+(If set, the shell does not resolv)184 216 R 3.459(es)-.15 G .959
 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .959
 (cuting commands such as).15 F F1(cd)3.459 E F0 2.821
-(that change the current w)184 546 R 2.822(orking directory)-.1 F 7.822
+(that change the current w)184 228 R 2.822(orking directory)-.1 F 7.822
 (.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822
-(ysical directory structure)-.05 F 2.686(instead. By)184 558 R(def)2.686
+(ysical directory structure)-.05 F 2.686(instead. By)184 240 R(def)2.686
 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186
 (ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 570 Q(.)-.65 E F1<ad54>144
-582 Q F0 .89(If set, an)184 582 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
+(mands which change the current directory)184 252 Q(.)-.65 E F1<ad54>144
+264 Q F0 .89(If set, an)184 264 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
 (are inherited by shell functions, command)3.39 F 1.932
-(substitutions, and commands e)184 594 R -.15(xe)-.15 G 1.932
+(substitutions, and commands e)184 276 R -.15(xe)-.15 G 1.932
 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
-(UG)-.1 E F0(and)4.432 E F1(RETURN)184 606 Q F0
-(traps are normally not inherited in such cases.)2.5 E F1<adad>144 618 Q
-F0 .4(If no ar)184 618 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 288 Q F0
+(traps are normally not inherited in such cases.)2.5 E F1<adad>144 300 Q
+F0 .4(If no ar)184 300 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
 (his option, then the positional parameters are unset.)-2.901 F
-(Otherwise,)5.401 E(the positional parameters are set to the)184 630 Q
-F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G
-(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E F0(.)A F1<ad>144
-642 Q F0 1.945(Signal the end of options, cause all remaining)184 642 R
-F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G
-1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 654 R
-F1<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945
+(Otherwise,)5.401 E(the positional parameters are set to the)184 312 Q
+/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>
+2.5 E F0(.)A F1<ad>144 324 Q F0 1.945
+(Signal the end of options, cause all remaining)184 324 R F2(ar)4.444 E
+(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944
+(ssigned to the positional)-4.444 F 3.445(parameters. The)184 336 R F1
+<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945
 (options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no)
 3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B
-(parameters remain unchanged.)184 666 Q .425(The options are of)144
-682.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
+(parameters remain unchanged.)184 348 Q .425(The options are of)144
+364.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
 (ault unless otherwise noted.)-.1 F .425
 (Using + rather than \255 causes these options)5.425 F .177
-(to be turned of)144 694.8 R 2.677(f. The)-.25 F .178
+(to be turned of)144 376.8 R 2.677(f. The)-.25 F .178
 (options can also be speci\214ed as ar)2.678 F .178(guments to an in)
 -.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066
-(current set of options may be found in)144 706.8 R F1<24ad>2.566 E F0
+(current set of options may be found in)144 388.8 R F1<24ad>2.566 E F0
 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
 (ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F
-(is encountered.)144 718.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E
-(16)198.725 E 0 Cg EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shift)108 84 Q F0([)
-2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .428
-(The positional parameters from)144 96 R F2(n)2.928 E F0 .429
-(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G .429
-(rameters represented by the num-).15 F(bers)144 108 Q F1($#)2.583 E F0
-(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083
+(is encountered.)144 400.8 Q F1(shift)108 417.6 Q F0([)2.5 E F2(n)A F0
+(])A .428(The positional parameters from)144 429.6 R F2(n)2.928 E F0
+.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G
+.429(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.583
+E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083
 (+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga)
 -.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to)
 .15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06
-(is 0, no parameters are changed.)144 120 R(If)5.06 E F2(n)2.92 E F0 .06
-(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F(If)
-5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t)
-C(he)-2.56 E .144(positional parameters are not changed.)144 132 R .144
-(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 .143
-(is greater than)2.883 F F1($#)2.643 E F0
-(or less than zero; otherwise 0.)144 144 Q F1(shopt)108 160.8 Q F0([)2.5
-E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)-2.5 E
-F0(...])2.5 E -.8(To)144 172.8 S .639(ggle the v).8 F .639
+(is 0, no parameters are changed.)144 453.6 R(If)5.06 E F2(n)2.92 E F0
+.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
+(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
+(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 465.6 R
+.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0
+.143(is greater than)2.883 F F1($#)2.643 E F0
+(or less than zero; otherwise 0.)144 477.6 Q F1(shopt)108 494.4 Q F0([)
+2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
+-2.5 E F0(...])2.5 E -.8(To)144 506.4 S .639(ggle the v).8 F .639
 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E
 5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375
-(listed belo)144 184.8 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
+(listed belo)144 518.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
 2.875(ft).4 G(he)-2.875 E F1<ad6f>2.875 E F0 .375
 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25
 F F1<ad6f>2.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2
-(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 196.8 R .825
+(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 530.4 R .825
 (ith no options, or with the)-.4 F F1<ad70>3.325 E F0 .826
 (option, a list of all settable options is displayed, with an)3.325 F
-.945(indication of whether or not each is set.)144 208.8 R(The)5.945 E
-F1<ad70>3.445 E F0 .945(option causes output to be displayed in a form)
-3.445 F(that may be reused as input.)144 220.8 Q(Other options ha)5 E .3
--.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad73>144 232.8 Q
-F0(Enable \(set\) each)180 232.8 Q F2(optname)2.5 E F0(.)A F1<ad75>144
-244.8 Q F0(Disable \(unset\) each)180 244.8 Q F2(optname)2.5 E F0(.)A F1
-<ad71>144 256.8 Q F0 .003(Suppresses normal output \(quiet mode\); the \
-return status indicates whether the)180 256.8 R F2(optname)2.504 E F0
-(is)2.504 E .256(set or unset.)180 268.8 R .256(If multiple)5.256 F F2
-(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G
-2.756(nw).15 G(ith)-2.756 E F1<ad71>2.756 E F0 2.755(,t)C .255
-(he return status is zero if)-2.755 F(all)180 280.8 Q F2(optnames)2.5 E
-F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 292.8 Q F0
-(Restricts the v)180 292.8 Q(alues of)-.25 E F2(optname)2.5 E F0
+.552(indication of whether or not each is set; if)144 542.4 R F2
+(optnames)3.052 E F0 .551
+(are supplied, the output is restricted to those)3.052 F 2.549
+(options. The)144 554.4 R F1<ad70>2.549 E F0 .049(option causes output \
+to be displayed in a form that may be reused as input.)2.549 F(Other)
+5.05 E(options ha)144 566.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 578.4 Q F0(Enable \(set\) each)180
+578.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 590.4 Q F0
+(Disable \(unset\) each)180 590.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+602.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 602.4 R F2(optname)2.503 E F0(is)2.503 E
+.255(set or unset.)180 614.4 R .255(If multiple)5.255 F F2(optname)2.755
+E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
+(ith)-2.756 E F1<ad71>2.756 E F0 2.756(,t)C .256
+(he return status is zero if)-2.756 F(all)180 626.4 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 638.4 Q F0
+(Restricts the v)180 638.4 Q(alues of)-.25 E F2(optname)2.5 E F0
 (to be those de\214ned for the)2.5 E F1<ad6f>2.5 E F0(option to the)2.5
-E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 309.6 R F1
-<ad73>3.124 E F0(or)3.124 E F1<ad75>3.124 E F0 .624(is used with no)
+E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 655.2 R F1
+<ad73>3.125 E F0(or)3.124 E F1<ad75>3.124 E F0 .624(is used with no)
 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124
-E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234
-(set or unset, respecti)144 321.6 R -.15(ve)-.25 G(ly).15 E 7.234(.U)
+E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.233
+(set or unset, respecti)144 667.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U)
 -.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0
-2.234(options are disabled \(unset\) by)4.734 F(def)144 333.6 Q(ault.)
+2.234(options are disabled \(unset\) by)4.734 F(def)144 679.2 Q(ault.)
 -.1 E 1.544(The return status when listing options is zero if all)144
-350.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.)
-4.045 F .696
+696 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)
+4.044 F .696
 (When setting or unsetting options, the return status is zero unless an)
-144 362.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695
-(alid shell)-.25 F(option.)144 374.4 Q(The list of)144 391.2 Q F1(shopt)
-2.5 E F0(options is:)2.5 E F1(autocd)144 409.2 Q F0 .199
-(If set, a command name that is the name of a directory is e)184 409.2 R
--.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
+144 708 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
+-.25 F(option.)144 720 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)
+198.725 E 0 Cg EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E(The list of)144 84 Q/F1 10/Times-Bold@0 SF
+(shopt)2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 102 Q F0
+1.945(If set, the shell suppresses multiple e)184 114 R -.25(va)-.25 G
+1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944
+(rray subscripts during).15 F 2.556(arithmetic e)184 126 R 2.556
+(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe)
+-.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F
+(ariable)-.25 E(assignments, and while e)184 138 Q -.15(xe)-.15 G
+(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
+(autocd)144 150 Q F0 .2
+(If set, a command name that is the name of a directory is e)184 150 R
+-.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E
+(ment to the)184 162 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
 (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156
-(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155
+F1(cdable_v)144 174 Q(ars)-.1 E F0 .155(If set, an ar)184 186 R .155
+(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156
 (iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 457.2 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0
+(name of a v)184 198 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F1(cdspell)144 210 Q F0
 1.055
 (If set, minor errors in the spelling of a directory component in a)184
-469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988
-(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487
-(ed for are transposed characters, a missing character)-.1 F 3.987(,a)
--.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I)
+210 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
+(corrected. The)184 222 R 1.487(errors check)3.987 F 1.487
+(ed for are transposed characters, a missing character)-.1 F 3.988(,a)
+-.4 G(nd)-3.988 E .77(one character too man)184 234 R 4.57 -.65(y. I)
 -.15 H 3.27(fac).65 G .77
 (orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 505.2 Q
-(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237
-E F0 .736(checks that a command found in the hash table e)3.237 F .736
-(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
-541.2 Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2
-Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448
-(lists the status of an)2.948 F 2.949(ys)-.15 G .449
-(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15
-F -.15(ve)-.25 G 3.439(shell. If)184 577.2 R(an)3.439 E 3.439(yj)-.15 G
-.938(obs are running, this causes the e)-3.439 F .938
-(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203
-(attempted without an interv)184 589.2 R 2.203(ening command \(see)-.15
-F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
--.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 601.2 Q -.1(wa)
--.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
-(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 .797(If set,)184
-625.2 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G
-.796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G
-.796(pdates the)-3.296 F -.25(va)184 637.2 S(lues of).25 E F3(LINES)2.5
-E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist)
-144 649.2 Q F0 1.202(If set,)184 649.2 R F1(bash)3.702 E F0 1.202
+(the command proceeds.)184 246 Q(This option is only used by interacti)5
+E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 258 Q F0 .736
+(If set,)184 270 R F1(bash)3.236 E F0 .736
+(checks that a command found in the hash table e)3.236 F .737
+(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 282
+Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 294 Q
+F0 .449(If set,)184 306 R F1(bash)2.949 E F0 .449
+(lists the status of an)2.949 F 2.949(ys)-.15 G .448
+(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15
+F -.15(ve)-.25 G 3.438(shell. If)184 318 R(an)3.438 E 3.438(yj)-.15 G
+.938(obs are running, this causes the e)-3.438 F .938
+(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203
+(attempted without an interv)184 330 R 2.203(ening command \(see)-.15 F
+/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
+-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 342 Q -.1(wa)-.1
+G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
+(obs are stopped.)-2.5 E F1(checkwinsize)144 354 Q F0 1.09(If set,)184
+366 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
+(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
+(uiltin\) command and, if)-.2 F(necessary)184 378 Q 4.694(,u)-.65 G
+2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0
+(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193
+(This option is enabled by)6.693 F(def)184 390 Q(ault.)-.1 E F1(cmdhist)
+144 402 Q F0 1.202(If set,)184 402 R F1(bash)3.702 E F0 1.202
 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202
 (ll lines of a multiple-line command in the same history).15 F(entry)184
-661.2 Q 5(.T)-.65 G(his allo)-5 E
-(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 673.2
-Q F0 .42(If set,)184 685.2 R F1(bash)2.92 E F0 .42(changes its beha)2.92
-F .419(vior to that of v)-.2 F .419
+414 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133
+(ws easy re-editing of multi-line commands.)-.25 F 1.132
+(This option is enabled by)6.132 F(def)184 426 Q .613(ault, b)-.1 F .613
+(ut only has an ef)-.2 F .614
+(fect if command history is enabled, as described abo)-.25 F .914 -.15
+(ve u)-.15 H(nder).15 E F2(HIST)184 438 Q(OR)-.162 E(Y)-.315 E F3(.)A F1
+(compat31)144 450 Q F0 .42(If set,)184 462 R F1(bash)2.92 E F0 .42
+(changes its beha)2.92 F .419(vior to that of v)-.2 F .419
 (ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the)
-184 697.2 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E
-F1(=~)2.962 E F0 .462
+184 474 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1
+(=~)2.962 E F0 .462
 (operator and locale-speci\214c string comparison when)2.962 F .71
-(using the)184 709.2 R F1([[)3.21 E F0 .71(conditional command')3.21 F
-(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
+(using the)184 486 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s)
+-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
 3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82
-(use ASCII collation and)184 721.2 R F2(str)3.321 E(cmp)-.37 E F0 .821
-(\(3\); bash-4.1 and later use the current locale').19 F 3.321(sc)-.55 G
-(ollation)-3.321 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(17)
-198.725 E 0 Cg EP
-%%Page: 18 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(sequence and)184 84 Q/F1 10/Times-Italic@0
-SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10/Times-Bold@0 SF(compat32)
-144 96 Q F0 1.41(If set,)184 108 R F2(bash)3.91 E F0 1.41
-(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409
+(use ASCII collation and)184 498 R/F4 10/Times-Italic@0 SF(str)3.321 E
+(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale')
+.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 510 Q F4(str)
+2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 522 Q F0 1.41(If set,)
+184 534 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409
+(vior to that of v)-.2 F 1.409
 (ersion 3.2 with respect to locale-speci\214c)-.15 F .422
-(string comparison when using the)184 120 R F2([[)2.922 E F0 .422
-(conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>)
+(string comparison when using the)184 546 R F1([[)2.922 E F0 .422
+(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>)
 2.923 E F0 .423(operators \(see pre-)2.923 F .481
-(vious item\) and the ef)184 132 R .481
+(vious item\) and the ef)184 558 R .481
 (fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48
-(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q
+(ersions 3.2 and earlier)-.15 F(continue with the ne)184 570 Q
 (xt command in the list after one terminates due to an interrupt.)-.15 E
-F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0
+F1(compat40)144 582 Q F0 1.409(If set,)184 594 R F1(bash)3.909 E F0
 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41
 (ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008
-(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007
-(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>)
-4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R
-F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769
+(string comparison when using the)184 606 R F1([[)4.508 E F0 2.007
+(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>)
+4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 618 R
+F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769
 (fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions)
 -.15 E .087(4.0 and later interrupt the list as if the shell recei)184
-204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086
-(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q
-(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,)
-184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix)
-3.983 E F0 1.484
-(mode, treats a single quote in a double-quoted parameter)3.983 F -.15
-(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G
-.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458
-(nn).15 G .958(umber\) and)-3.458 F .59
-(the characters between the single quotes are considered quoted.)184 264
+630 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086
+(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 642 Q
+(xt command in the list.)-.15 E F1(compat41)144 654 Q F0 1.523(If set,)
+184 666 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523
+(posix mode)4.023 F F0 4.024(,t)C 1.524
+(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184
+678 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958
+(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458(nn).15
+G .958(umber\) and)-3.458 F .59
+(the characters between the single quotes are considered quoted.)184 690
 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59
-(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def)
+(posix mode through v)184 702 R .589(ersion 4.1.)-.15 F .589(The def)
 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589
-(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q
-F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796
+(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 714 Q(GNU Bash 5.0)72 768 Q
+(2004 Apr 20)149.565 E(18)198.725 E 0 Cg EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(compat42)144 84 Q F0
+1.796(If set,)184 96 R F1(bash)4.296 E F0 1.796
 (does not process the replacement string in the pattern substitution w)
-4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25
-(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2
+4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25
+(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .141(If set,)184 132 R F1
 (bash)2.641 E F0 .141(does not print a w)2.641 F .14
 (arning message if an attempt is made to use a quoted com-)-.1 F .912
-(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2
+(pound array assignment as an ar)184 144 R .912(gument to)-.18 F F1
 (declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913
-(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353
+(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 156 S .353
 (tal errors that cause the current command to f).1 F .353(ail \(the def)
 -.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem)
--2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1
+-2.852 E -.1(fa)184 168 S 1.057(tal errors that cause the shell to e).1
 F 1.058(xit\), and does not reset the loop state when a shell)-.15 F
-.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F
-(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0
+.375(function is e)184 180 R -.15(xe)-.15 G .375(cuted \(this allo).15 F
+(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0
 .374(in a shell function to af)2.875 F .374(fect loops in)-.25 F
-(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2
-(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E
-F0 .653(quotes all shell metacharacters in \214lenames and directory na\
-mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524
-(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G
-4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F
-2.667(from the set of characters that will be quoted in completed \214l\
-enames when these)184 456 R .029(metacharacters appear in shell v)184
-468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1
-F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073
+(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1
+(compat44)144 204 Q F0 .441(If set,)184 216 R F1(bash)2.941 E F0(sa)
+2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B)
+-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184
+228 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G
+(rdless of whether or not e).05 E(xtended deb)-.15 E
+(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 240 Q F0 .654
+(If set,)184 252 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\
+ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524
+(forming completion.)184 264 R 1.524(If not set,)6.524 F F1(bash)4.024 E
+F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524
+(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\
+haracters that will be quoted in completed \214lenames when these)184
+276 R .028(metacharacters appear in shell v)184 288 R .028
+(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029
+(This means)5.029 F 1.073(that dollar signs in v)184 300 R 1.073
 (ariable names that e)-.25 F 1.073
 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25
-(ev e)184 492 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123
+(ev e)184 312 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
 (ollar signs appearing in \214lenames will not be quoted, either).15 F
-6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59
+6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59
 (only when bash is using backslashes to quote completed \214lenames.)184
-504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 Q
+324 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 336 Q
 (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E
-(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487
-(If set,)184 540 R F2(bash)2.987 E F0 .486
+(ersions through 4.2.)-.15 E F1(dir)144 348 Q(expand)-.18 E F0 .486
+(If set,)184 360 R F1(bash)2.986 E F0 .486
 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F
-.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184
-552 R .179(This changes the contents of the readline editing b)5.179 F
-(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184
-564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
-(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184
-576 R F2(bash)3.359 E F0 .858
-(attempts spelling correction on directory names during w)3.359 F .858
+.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184
+372 R .179(This changes the contents of the readline editing b)5.18 F
+(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,)
+184 384 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F1(dirspell)144 396 Q F0 .858(If set,)184
+396 R F1(bash)3.358 E F0 .858
+(attempts spelling correction on directory names during w)3.358 F .859
 (ord completion if)-.1 F
-(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E
-F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0
-(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5
-(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail)
-144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s)
--.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15
-(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q
-(gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E
-(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15
-E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0
-.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15
-F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E
-/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F
-(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F2(extdeb)144 672 Q(ug)-.2 E F0 .671(If set at shell in)184 684 R
+(the directory name initially supplied does not e)184 408 Q(xist.)-.15 E
+F1(dotglob)144 420 Q F0 .165(If set,)184 420 R F1(bash)2.665 E F0 .165
+(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i)
+-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
+(xpansion.)-.15 E(The \214lenames)184 432 Q F1 -.63(``)2.5 G -.55(.').63
+G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
+(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
+(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
+(is set.)2.5 E F1(execfail)144 444 Q F0 1.386(If set, a non-interacti)
+184 444 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386
+(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387
+(cute the \214le speci\214ed as an).15 F(ar)184 456 Q(gument to the)-.18
+E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3
+-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0
+-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 468 Q F0 .717
+(If set, aliases are e)184 480 R .717(xpanded as described abo)-.15 F
+1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
+/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F
+(by def)184 492 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
+.15 E F1(extdeb)144 504 Q(ug)-.2 E F0 .671(If set at shell in)184 516 R
 -.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671
 (cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F
-.221(identical to the)184 696 R F2<adad646562>2.721 E(ugger)-.2 E F0
+.221(identical to the)184 528 R F1<adad646562>2.721 E(ugger)-.2 E F0
 2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221
-(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 708 Q
-(uggers is enabled:)-.2 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E
-(18)198.725 E 0 Cg EP
-%%Page: 19 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(1.)184 84 Q F0(The)
-220 84 Q F1<ad46>4.25 E F0 1.75(option to the)4.25 F F1(declar)4.251 E
-(e)-.18 E F0 -.2(bu)4.251 G 1.751
-(iltin displays the source \214le name and line).2 F
-(number corresponding to each function name supplied as an ar)220 96 Q
-(gument.)-.18 E F1(2.)184 108 Q F0 1.667(If the command run by the)220
-108 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F
-1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 120
-Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 132 Q F0 .84
-(If the command run by the)220 132 R F1(DEB)3.34 E(UG)-.1 E F0 .841
+(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 540 Q
+(uggers is enabled:)-.2 E F1(1.)184 552 Q F0(The)220 552 Q F1<ad46>4.25
+E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)
+4.251 G 1.751(iltin displays the source \214le name and line).2 F
+(number corresponding to each function name supplied as an ar)220 564 Q
+(gument.)-.18 E F1(2.)184 576 Q F0 1.667(If the command run by the)220
+576 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F
+1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 588
+Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 600 Q F0 .84
+(If the command run by the)220 600 R F1(DEB)3.34 E(UG)-.1 E F0 .841
 (trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15
-(exe)220 144 S .488
+(exe)220 612 S .488
 (cuting in a subroutine \(a shell function or a shell script e).15 F
 -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1
-(sour)220 156 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 624 Q(ce)-.18 E F0 -.2(bu)2.5 G
 (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E
-(n)-.15 E F0(.)A F1(4.)184 168 Q/F2 9/Times-Bold@0 SF -.27(BA)220 168 S
-(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904
-(are updated as described in their descriptions)3.154 F(abo)220 180 Q
--.15(ve)-.15 G(.).15 E F1(5.)184 192 Q F0 1.637(Function tracing is ena\
-bled: command substitution, shell functions, and sub-)220 192 R
-(shells in)220 204 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
-(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
+(n)-.15 E F0(.)A F1(4.)184 636 Q F2 -.27(BA)220 636 S(SH_ARGC).27 E F0
+(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904
+(are updated as described in their descriptions)3.154 F(abo)220 648 Q
+-.15(ve)-.15 G(.).15 E F1(5.)184 660 Q F0 1.637(Function tracing is ena\
+bled: command substitution, shell functions, and sub-)220 660 R
+(shells in)220 672 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
+(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0
-(traps.)2.5 E F1(6.)184 216 Q F0 1.082(Error tracing is enabled: comman\
-d substitution, shell functions, and subshells)220 216 R(in)220 228 Q
--.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command)
+(traps.)2.5 E F1(6.)184 684 Q F0 1.082(Error tracing is enabled: comman\
+d substitution, shell functions, and subshells)220 684 R(in)220 696 Q
+-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command)
 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1
-(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4
+(extglob)144 708 Q F0 .4(If set, the e)184 708 R .4
 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
--.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q
-F0(are enabled.)2.5 E F1(extquote)144 264 Q F0 2.473(If set,)184 276 R
-F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973
-E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within)
--4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G
-(pansions).15 E(enclosed in double quotes.)184 288 Q
-(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 300 Q F0
-1.425(If set, patterns which f)184 300 R 1.425
-(ail to match \214lenames during pathname e)-.1 F 1.424
-(xpansion result in an)-.15 F -.15(ex)184 312 S(pansion error).15 E(.)
--.55 E F1 -.25(fo)144 324 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.936(If set, the suf)184 336 R<8c78>-.25 E .936(es speci\214ed by the)
--.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
--.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 348 R .32
-(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32
-(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947
-(pletions. See)184 360 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0
-(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2
-(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948
-F(enabled by def)184 372 Q(ault.)-.1 E F1(globasciiranges)144 384 Q F0
-2.519(If set, range e)184 396 R 2.519
-(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
-(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
-(Matching)184 408 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha)
--3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
-(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
--3.214 F 1.02(That is, the current locale')184 420 R 3.52(sc)-.55 G 1.02
+-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 720 Q
+F0(are enabled.)2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)
+198.725 E 0 Cg EP
+%%Page: 20 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(extquote)144 84 Q F0
+2.473(If set,)184 96 R F1($)4.973 E F0<08>A/F2 10/Times-Italic@0 SF
+(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F2(string)A F0
+4.973("q)C 2.473(uoting is performed within)-4.973 F F1(${)4.973 E F2
+(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G(pansions).15 E
+(enclosed in double quotes.)184 108 Q(This option is enabled by def)5 E
+(ault.)-.1 E F1(failglob)144 120 Q F0 1.425(If set, patterns which f)184
+120 R 1.425(ail to match \214lenames during pathname e)-.1 F 1.424
+(xpansion result in an)-.15 F -.15(ex)184 132 S(pansion error).15 E(.)
+-.55 E F1 -.25(fo)144 144 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.936(If set, the suf)184 156 R<8c78>-.25 E .936(es speci\214ed by the)
+-.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936
+(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32
+(when performing w)184 168 R .32(ord completion e)-.1 F -.15(ve)-.25 G
+2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32
+(ords are the only possible com-)-.1 F 2.947(pletions. See)184 180 R F3
+.447(SHELL V)2.947 F(ARIABLES)-1.215 E F0(abo)2.697 E .747 -.15(ve f)
+-.15 H .448(or a description of).15 F F3(FIGNORE)2.948 E/F4 9
+/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 F(enabled by def)184
+192 Q(ault.)-.1 E F1(globasciiranges)144 204 Q F0 2.519(If set, range e)
+184 216 R 2.519(xpressions used in pattern matching brack)-.15 F 2.518
+(et e)-.1 F 2.518(xpressions \(see)-.15 F F3 -.09(Pa)5.018 G(tter).09 E
+(n)-.135 E(Matching)184 228 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b)
+.15 G(eha)-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214
+G 3.214(nt)-3.214 G .714
+(he traditional C locale when performing comparisons.)-3.214 F 1.02
+(That is, the current locale')184 240 R 3.52(sc)-.55 G 1.02
 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1
-(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 432 R F1(A)
+(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 252 R F1(A)
 3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F
 .957(-case and lo)-.2 F(wer)-.25 E .957
-(-case ASCII characters will collate)-.2 F(together)184 444 Q(.)-.55 E
-F1(globstar)144 456 Q F0 .519(If set, the pattern)184 456 R F1(**)3.019
+(-case ASCII characters will collate)-.2 F(together)184 264 Q(.)-.55 E
+F1(globstar)144 276 Q F0 .519(If set, the pattern)184 276 R F1(**)3.019
 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518
 (xt will match all \214les and zero)-.15 F .431
-(or more directories and subdirectories.)184 468 R .431
+(or more directories and subdirectories.)184 288 R .431
 (If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0
 2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184
-480 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are writt\
-en in the standard GNU error message format.)184 504 Q F1(histappend)144
-516 Q F0 .676
+300 Q F1(gnu_errfmt)144 312 Q F0(If set, shell error messages are writt\
+en in the standard GNU error message format.)184 324 Q F1(histappend)144
+336 Q F0 .676
 (If set, the history list is appended to the \214le named by the v)184
-528 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G
-(ri-).25 E(able when the shell e)184 540 Q(xits, rather than o)-.15 E
--.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 552 Q(eedit)-.18
-E F0 .575(If set, and)184 564 R F1 -.18(re)3.075 G(adline).18 E F0 .575
+348 R .676(alue of the)-.25 F F3(HISTFILE)3.176 E F0 -.25(va)2.926 G
+(ri-).25 E(able when the shell e)184 360 Q(xits, rather than o)-.15 E
+-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 372 Q(eedit)-.18
+E F0 .575(If set, and)184 384 R F1 -.18(re)3.075 G(adline).18 E F0 .575
 (is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576
 (he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F
-(tory substitution.)184 576 Q F1(histv)144 588 Q(erify)-.1 E F0 .403
-(If set, and)184 600 R F1 -.18(re)2.903 G(adline).18 E F0 .403
+(tory substitution.)184 396 Q F1(histv)144 408 Q(erify)-.1 E F0 .403
+(If set, and)184 420 R F1 -.18(re)2.903 G(adline).18 E F0 .403
 (is being used, the results of history substitution are not immediately)
-2.903 F .661(passed to the shell parser)184 612 R 5.661(.I)-.55 G .662
+2.903 F .661(passed to the shell parser)184 432 R 5.661(.I)-.55 G .662
 (nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162
-G(adline).18 E F0(editing)3.162 E -.2(bu)184 624 S -.25(ff).2 G(er).25 E
+G(adline).18 E F0(editing)3.162 E -.2(bu)184 444 S -.25(ff).2 G(er).25 E
 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
-(hostcomplete)144 636 Q F0 1.182(If set, and)184 648 R F1 -.18(re)3.682
+(hostcomplete)144 456 Q F0 1.182(If set, and)184 468 R F1 -.18(re)3.682
 G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181
 (will attempt to perform hostname completion)3.681 F 1.38(when a w)184
-660 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
+480 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
 (is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E
-F2(READLINE)3.881 E F0(abo)184 672 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 684 Q F0(If set,)
-184 696 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
+F3(READLINE)3.881 E F0(abo)184 492 Q -.15(ve)-.15 G 2.5(\). This).15 F
+(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 504 Q F0(If set,)
+184 516 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E F0
 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e)
-.15 E(xits.)-.15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19)
-198.725 E 0 Cg EP
-%%Page: 20 20
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(inherit_err)144 84 Q
-(exit)-.18 E F0 .22(If set, command substitution inherits the v)184 96 R
-.219(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219
-(option, instead of unsetting)2.719 F(it in the subshell en)184 108 Q
-2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F2 10
-/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti)
-144 120 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 132 R 2.83
-(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0
-.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F
-.967(that line to be ignored in an interacti)184 144 R 1.267 -.15(ve s)
--.25 H .967(hell \(see).15 F/F3 9/Times-Bold@0 SF(COMMENTS)3.467 E F0
-(abo)3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F
-(enabled by def)184 156 Q(ault.)-.1 E F1(lastpipe)144 168 Q F0 .066
-(If set, and job control is not acti)184 168 R -.15(ve)-.25 G 2.566(,t)
+.15 E(xits.)-.15 E F1(inherit_err)144 528 Q(exit)-.18 E F0 .22
+(If set, command substitution inherits the v)184 540 R .219(alue of the)
+-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting)
+2.719 F(it in the subshell en)184 552 Q 2.5(vironment. This)-.4 F
+(option is enabled when)2.5 E F2(posix mode)2.5 E F0(is enabled.)2.5 E
+F1(interacti)144 564 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)
+184 576 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1
+(#)2.83 E F0 .33(to cause that w)2.83 F .33
+(ord and all remaining characters on)-.1 F .967
+(that line to be ignored in an interacti)184 588 R 1.267 -.15(ve s)-.25
+H .967(hell \(see).15 F F3(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15
+G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 600 Q
+(ault.)-.1 E F1(lastpipe)144 612 Q F0 .066
+(If set, and job control is not acti)184 612 R -.15(ve)-.25 G 2.566(,t)
 .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F
 -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en)
-184 180 Q(vironment.)-.4 E F1(lithist)144 192 Q F0 .655(If set, and the)
-184 192 R F1(cmdhist)3.155 E F0 .654
+184 624 Q(vironment.)-.4 E F1(lithist)144 636 Q F0 .655(If set, and the)
+184 636 R F1(cmdhist)3.155 E F0 .654
 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G
 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F
-(with embedded ne)184 204 Q
+(with embedded ne)184 648 Q
 (wlines rather than using semicolon separators where possible.)-.25 E F1
-(login_shell)144 216 Q F0 .486
+(localv)144 660 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 672 R
+.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
+(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
+684 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
+(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173
+(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 696 Q
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(20)198.725 E 0 Cg EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(localv)144 84 Q
+(ar_unset)-.1 E F0 .328(If set, calling)184 96 R F1(unset)2.828 E F0
+.328(on local v)2.828 F .329(ariables in pre)-.25 F .329
+(vious function scopes marks them so subse-)-.25 F .543(quent lookups \
+\214nd them unset until that function returns. This is identical to the\
+ beha)184 108 R(v-)-.2 E(ior of unsetting local v)184 120 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 132 Q
+F0 .486
 (The shell sets this option if it is started as a login shell \(see)184
-228 R F3(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve)
--.15 G 2.987(\). The).15 F -.25(va)184 240 S(lue may not be changed.).25
-E F1(mailwar)144 252 Q(n)-.15 E F0 .815(If set, and a \214le that)184
-264 R F1(bash)3.315 E F0 .814
+144 R/F2 9/Times-Bold@0 SF(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)
+2.737 E -.15(ve)-.15 G 2.987(\). The).15 F -.25(va)184 156 S
+(lue may not be changed.).25 E F1(mailwar)144 168 Q(n)-.15 E F0 .815
+(If set, and a \214le that)184 180 R F1(bash)3.315 E F0 .814
 (is checking for mail has been accessed since the last time it)3.315 F
--.1(wa)184 276 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
-(`The mail in)-.74 E F2(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
--.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 288
-Q F0 .324(If set, and)184 300 R F1 -.18(re)2.824 G(adline).18 E F0 .324
-(is being used,)2.824 F F1(bash)2.824 E F0 .324
-(will not attempt to search the)2.824 F F3 -.666(PA)2.825 G(TH)-.189 E
-F0 .325(for possible)2.575 F
-(completions when completion is attempted on an empty line.)184 312 Q F1
-(nocaseglob)144 324 Q F0 .437(If set,)184 336 R F1(bash)2.937 E F0 .436
+-.1(wa)184 192 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0
+(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1
+(no_empty_cmd_completion)144 204 Q F0 .324(If set, and)184 216 R F1 -.18
+(re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E
+F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)
+-.189 E F0 .325(for possible)2.575 F
+(completions when completion is attempted on an empty line.)184 228 Q F1
+(nocaseglob)144 240 Q F0 .437(If set,)184 252 R F1(bash)2.937 E F0 .436
 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25
-H .436(ashion when performing pathname).05 F -.15(ex)184 348 S
+H .436(ashion when performing pathname).05 F -.15(ex)184 264 S
 (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1(nocasematch)144 360 Q F0 1.193(If set,)184
-372 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti)
+-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 276 Q F0 1.193(If set,)184
+288 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti)
 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05
-F .551(while e)184 384 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0
+F .551(while e)184 300 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0
 (or)3.051 E F1([[)3.051 E F0 .551
 (conditional commands, when performing pattern substitution)3.051 F -.1
-(wo)184 396 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\
-le completions as part of programmable com-)-.15 F(pletion.)184 408 Q F1
-(nullglob)144 420 Q F0 .855(If set,)184 432 R F1(bash)3.355 E F0(allo)
+(wo)184 312 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\
+le completions as part of programmable com-)-.15 F(pletion.)184 324 Q F1
+(nullglob)144 336 Q F0 .855(If set,)184 348 R F1(bash)3.355 E F0(allo)
 3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)
 3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354
-(\)t).15 G(o)-3.354 E -.15(ex)184 444 S
+(\)t).15 G(o)-3.354 E -.15(ex)184 360 S
 (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-456 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
-468 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
+372 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
+384 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
 (ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E
-(are enabled.)184 480 Q(This option is enabled by def)5 E(ault.)-.1 E F1
-(pr)144 492 Q(omptv)-.18 E(ars)-.1 E F0 1.448
-(If set, prompt strings under)184 504 R 1.448(go parameter e)-.18 F
-1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 516
-S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
-(fter being e)-2.67 F .17(xpanded as described in)-.15 F F3(PR)2.671 E
-(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E
-(This option is enabled by def)184 528 Q(ault.)-.1 E F1 -.18(re)144 540
+(are enabled.)184 396 Q(This option is enabled by def)5 E(ault.)-.1 E F1
+(pr)144 408 Q(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 420 R F1(bash)4.624
+E F0 2.124(treats a command name that)4.624 F(doesn')184 432 Q 3.288(th)
+-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
+(ompletions as a possible alias and attempts alias e)-3.288 F .789
+(xpansion. If it has)-.15 F 1.473(an alias,)184 444 R F1(bash)3.973 E F0
+1.473(attempts programmable completion using the command w)3.973 F 1.473
+(ord resulting)-.1 F(from the e)184 456 Q(xpanded alias.)-.15 E F1(pr)
+144 468 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)
+184 480 R 1.448(go parameter e)-.18 F 1.448
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 492 S
+.171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
+(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E
+(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E
+(This option is enabled by def)184 504 Q(ault.)-.1 E F1 -.18(re)144 516
 S(stricted_shell).18 E F0 1.069
 (The shell sets this option if it is started in restricted mode \(see)
-184 552 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 564 Q 2.86
+184 528 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 540 Q 2.86
 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36
 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G
-(-).15 E(cuted, allo)184 576 Q(wing the startup \214les to disco)-.25 E
+(-).15 E(cuted, allo)184 552 Q(wing the startup \214les to disco)-.25 E
 -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E
-F1(shift_v)144 588 Q(erbose)-.1 E F0 .502(If set, the)184 600 R F1
-(shift)3.002 E F0 -.2(bu)3.002 G .501
-(iltin prints an error message when the shift count e).2 F .501
-(xceeds the number)-.15 F(of positional parameters.)184 612 Q F1(sour)
-144 624 Q(cepath)-.18 E F0 .77(If set, the)184 636 R F1(sour)3.27 E(ce)
--.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F
-.771(alue of)-.25 F F3 -.666(PA)3.271 G(TH)-.189 E F0 .771
-(to \214nd the directory containing the)3.021 F
-(\214le supplied as an ar)184 648 Q 2.5(gument. This)-.18 F
-(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 660 Q F0
-(If set, the)184 672 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E
-(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend)
-108 688.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.002(Suspend the e)144 700.8 R
--.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve)
--.25 G 3.501(sa).15 G F3(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001
-(login shell cannot be)3.501 F .022(suspended; the)144 712.8 R F1<ad66>
-2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022
-(rride this and force the suspension.).15 F .023(The return status is)
-5.023 F 2.5(0u)144 724.8 S(nless the shell is a login shell and)-2.5 E
+F1(shift_v)144 564 Q(erbose)-.1 E F0 .501(If set, the)184 576 R F1
+(shift)3.001 E F0 -.2(bu)3.001 G .501
+(iltin prints an error message when the shift count e).2 F .502
+(xceeds the number)-.15 F(of positional parameters.)184 588 Q F1(sour)
+144 600 Q(cepath)-.18 E F0 .771(If set, the)184 612 R F1(sour)3.271 E
+(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
+-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77
+(to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
+184 624 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
+-.1 E F1(xpg_echo)144 636 Q F0(If set, the)184 648 Q F1(echo)2.5 E F0
+-.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15
+E(ault.)-.1 E F1(suspend)108 664.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
+(Suspend the e)144 676.8 R -.15(xe)-.15 G 1.001
+(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G
+F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be)
+3.502 F .023(suspended; the)144 688.8 R F1<ad66>2.523 E F0 .023
+(option can be used to o)2.523 F -.15(ve)-.15 G .022
+(rride this and force the suspension.).15 F .022(The return status is)
+5.022 F 2.5(0u)144 700.8 S(nless the shell is a login shell and)-2.5 E
 F1<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5
-E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP
-%%Page: 21 21
+E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP
+%%Page: 22 22
 %%BeginPageSetup
 BP
 %%EndPageSetup
@@ -2639,22 +2744,22 @@ BP
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(test)108 84 Q/F2 10
 /Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 96 Q F2 -.2(ex)2.5 G
-(pr).2 E F1(])2.5 E F0 .878(Return a status of 0 \(true\) or 1 \(f)144
-96 R .877(alse\) depending on the e)-.1 F -.25(va)-.25 G .877
+(pr).2 E F1(])2.5 E F0 .877(Return a status of 0 \(true\) or 1 \(f)144
+96 R .878(alse\) depending on the e)-.1 F -.25(va)-.25 G .878
 (luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)144 108 S
 (pr).2 E F0 5.53(.E).73 G .53
 (ach operator and operand must be a separate ar)-5.53 F 3.03
-(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08
-(primaries described abo)144 120 R 3.38 -.15(ve u)-.15 H(nder).15 E/F3 9
-/Times-Bold@0 SF(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9
-/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579
-F(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q
+(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079
+(primaries described abo)144 120 R 3.379 -.15(ve u)-.15 H(nder).15 E/F3
+9/Times-Bold@0 SF(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9
+/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F
+(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q
 (gument of)-.18 E F1<adad>2.5 E F0(as signifying the end of options.)2.5
-E .785(Expressions may be combined using the follo)144 150 R .786
-(wing operators, listed in decreasing order of prece-)-.25 F 3.412
-(dence. The)144 162 R -.25(eva)3.412 G .912
-(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F
-4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F
+E .786(Expressions may be combined using the follo)144 150 R .785
+(wing operators, listed in decreasing order of prece-)-.25 F 3.411
+(dence. The)144 162 R -.25(eva)3.411 G .911
+(luation depends on the number of ar).25 F .912(guments; see belo)-.18 F
+4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F
 (used when there are \214v)144 174 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar)
 -2.5 E(guments.)-.18 E F1(!)144 186 Q F2 -.2(ex)2.5 G(pr).2 E F0 -.35
 (Tr)180 186 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)
@@ -2677,9 +2782,9 @@ F0 -.25(eva)2.5 G(luate conditional e).25 E
 E 2.5(2a)144 340.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
 180 352.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
 F .37(xpression is true if and only if the second ar)-.15 F .37
-(gument is null.)-.18 F .379(If the \214rst ar)180 364.8 R .38
-(gument is one of the unary conditional operators listed abo)-.18 F .68
--.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.88 E(TION)180 376.8 Q .553
+(gument is null.)-.18 F .38(If the \214rst ar)180 364.8 R .38
+(gument is one of the unary conditional operators listed abo)-.18 F .679
+-.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.879 E(TION)180 376.8 Q .552
 (AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552
 (xpression is true if the unary test is true.)-.15 F .552
 (If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 388.8 Q
@@ -2690,27 +2795,27 @@ F .37(xpression is true if and only if the second ar)-.15 F .37
 (If the second ar)5.236 F .236(gument is one of)-.18 F .855
 (the binary conditional operators listed abo)180 424.8 R 1.155 -.15
 (ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
-F4(,)A F0(the)3.104 E .578(result of the e)180 436.8 R .578(xpression i\
+F4(,)A F0(the)3.105 E .579(result of the e)180 436.8 R .578(xpression i\
 s the result of the binary test using the \214rst and third ar)-.15 F
-(guments)-.18 E 1.333(as operands.)180 448.8 R(The)6.333 E F1<ad61>3.833
-E F0(and)3.833 E F1<ad6f>3.832 E F0 1.332
+(guments)-.18 E 1.332(as operands.)180 448.8 R(The)6.332 E F1<ad61>3.832
+E F0(and)3.832 E F1<ad6f>3.832 E F0 1.333
 (operators are considered binary operators when there are)3.832 F .558
 (three ar)180 460.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
 F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
 .558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F
-(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180
-472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52
-(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02
-F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0
-2.985(,t)C .485(he result is the one-ar)-2.985 F .485
+(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180
+472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521
+(gument is e)-.18 F(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)
+3.021 F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985
+E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485
 (gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E
 (wise, the e)180 496.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
-508.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 520.8 R
-.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385
-(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar)
-.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647
+508.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 520.8 R
+.384(gument is)-.18 F F1(!)2.884 E F0 2.885(,t)C .385
+(he result is the ne)-2.885 F -.05(ga)-.15 G .385(tion of the three-ar)
+.05 F .385(gument e)-.18 F .385(xpression com-)-.15 F 1.648
 (posed of the remaining ar)180 532.8 R 4.147(guments. Otherwise,)-.18 F
-1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25
+1.647(the e)4.147 F 1.647(xpression is parsed and e)-.15 F -.25(va)-.25
 G(luated).25 E(according to precedence using the rules listed abo)180
 544.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 556.8 S 2.5(rm)-2.5 G(ore ar)
 -2.5 E(guments)-.18 E 1.635(The e)180 568.8 R 1.635
@@ -2723,79 +2828,80 @@ F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1
 1.229(Print the accumulated user and system times for the shell and for\
  processes run from the shell.)144 615.6 R(The return status is 0.)144
 627.6 Q F1(trap)108 644.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
-F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command)
-144 656.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F
+F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .702(The command)
+144 656.4 R F2(ar)3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F
 -.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G
-3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G
-(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608
+3.203(ss).15 G(ignal\(s\))-3.203 E F2(sigspec)3.203 E F0 5.703(.I).31 G
+(f)-5.703 E F2(ar)3.533 E(g)-.37 E F0(is)3.423 E .609
 (absent \(and there is a single)144 668.4 R F2(sigspec)3.108 E F0 3.108
 (\)o)C(r)-3.108 E F1<ad>3.108 E F0 3.108(,e)C .608
 (ach speci\214ed signal is reset to its original disposition)-3.108 F
-.659(\(the v)144 680.4 R .659(alue it had upon entrance to the shell\).)
--.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658
+.658(\(the v)144 680.4 R .658(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659
 (is the null string the signal speci\214ed by each)3.378 F F2(sigspec)
-144.34 692.4 Q F0 .58(is ignored by the shell and by the commands it in)
-3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E
-F0 .581(is not present and)3.301 F F1<ad70>3.081 E F0(has)3.081 E 1.215
+144.34 692.4 Q F0 .581
+(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G
+-.1(ke).2 G 3.08(s. If).1 F F2(ar)3.41 E(g)-.37 E F0 .58
+(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214
 (been supplied, then the trap commands associated with each)144 704.4 R
-F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214
+F2(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
 F(gu-)-.18 E .86(ments are supplied or if only)144 716.4 R F1<ad70>3.36
 E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
-(prints the list of commands associated with each)3.36 F 4.327
-(signal. The)144 728.4 R F1<ad6c>4.327 E F0 1.826(option causes the she\
-ll to print a list of signal names and their corresponding)4.327 F
-(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP
-%%Page: 22 22
+(prints the list of commands associated with each)3.36 F 4.326
+(signal. The)144 728.4 R F1<ad6c>4.326 E F0 1.826(option causes the she\
+ll to print a list of signal names and their corresponding)4.326 F
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(22)198.725 E 0 Cg EP
+%%Page: 23 23
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E 3.125(numbers. Each)144 84 R/F1 10
-/Times-Italic@0 SF(sigspec)3.465 E F0 .625
-(is either a signal name de\214ned in <)3.435 F F1(signal.h)A F0 .626
-(>, or a signal number)B 5.626(.S)-.55 G(ignal)-5.626 E
+E(UIL)-.1 E(TINS\(1\))-.92 E 3.126(numbers. Each)144 84 R/F1 10
+/Times-Italic@0 SF(sigspec)3.466 E F0 .625
+(is either a signal name de\214ned in <)3.436 F F1(signal.h)A F0 .625
+(>, or a signal number)B 5.625(.S)-.55 G(ignal)-5.625 E
 (names are case insensiti)144 96 Q .3 -.15(ve a)-.25 H(nd the).15 E/F2 9
-/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)
-144 114 R F1(sigspec)4.489 E F0(is)4.459 E F2(EXIT)4.149 E F0 1.649
-(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F
--.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F
-1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F2(DEB)144 126 Q(UG)
--.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F F1(ar)
-3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167
-(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.168(simple command)
-3.667 F F0(,)A F1(for)3.668 E F0(command,)3.668 E F1(case)3.668 E F0
-(com-)3.668 E(mand,)144 138 Q F1(select)2.647 E F0 .147(command, e)2.647
-F -.15(ve)-.25 G .147(ry arithmetic).15 F F1(for)2.647 E F0 .146
-(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146
-(cutes in a).15 F .145(shell function \(see)144 150 R F2 .145
-(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15
+/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)
+144 114 R F1(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648
+(\(0\) the command)3.898 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F
+-.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F
+1.649(If a)6.649 F F1(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 126 Q(UG)
+-.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.168(the command)3.418 F F1(ar)
+3.998 E(g)-.37 E F0 1.168(is e)3.888 F -.15(xe)-.15 G 1.167
+(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.167(simple command)
+3.667 F F0(,)A F1(for)3.667 E F0(command,)3.667 E F1(case)3.667 E F0
+(com-)3.667 E(mand,)144 138 Q F1(select)2.646 E F0 .146(command, e)2.646
+F -.15(ve)-.25 G .146(ry arithmetic).15 F F1(for)2.646 E F0 .147
+(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147
+(cutes in a).15 F .146(shell function \(see)144 150 R F2 .146
+(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15
 F .146(to the description of the)2.646 F/F4 10/Times-Bold@0 SF(extdeb)
-2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the)144 162 Q F4(shopt)3.201
-E F0 -.2(bu)3.201 G .7(iltin for details of its ef).2 F .7(fect on the)
--.25 F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)
-3.54 E F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand)
-144 174 Q F1(ar)3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G
-.643(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
-.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce)
--.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15
-G(cuting.).15 E .961(If a)144 204 R F1(sigspec)3.801 E F0(is)3.771 E F2
-(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E
-F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25
-G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\
-gle simple command\), a list, or a compound command returns a non\255ze\
-ro e)144 216 R .185(xit status, subject to)-.15 F .452(the follo)144 228
-R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451
-(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451
-(ailed command is part of the com-)-.1 F .387
-(mand list immediately follo)144 240 R .387(wing a)-.25 F F4(while)2.887
-E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
-(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388
-(statement, part)4.848 F .778(of a command e)144 252 R -.15(xe)-.15 G
+2.645 E(ug)-.2 E F0 .145(option to)2.645 F(the)144 162 Q F4(shopt)3.2 E
+F0 -.2(bu)3.2 G .7(iltin for details of its ef).2 F .7(fect on the)-.25
+F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E
+F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144
+174 Q F1(ar)3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643
+(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
+.643(cuted with the).15 F F4(.)3.143 E F0(or)3.143 E F4(sour)3.143 E(ce)
+-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15
+G(cuting.).15 E .96(If a)144 204 R F1(sigspec)3.8 E F0(is)3.77 E F2(ERR)
+3.46 E F3(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961
+(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461
+(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(single s\
+imple command\), a list, or a compound command returns a non\255zero e)
+144 216 R .184(xit status, subject to)-.15 F .451(the follo)144 228 R
+.451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451
+(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452
+(ailed command is part of the com-)-.1 F .388
+(mand list immediately follo)144 240 R .388(wing a)-.25 F F4(while)2.888
+E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
+(ord, part of the test in an)-.1 F F1(if)2.897 E F0 .387
+(statement, part)4.847 F .777(of a command e)144 252 R -.15(xe)-.15 G
 .778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778
 (list e)3.278 F .778(xcept the command follo)-.15 F .778
-(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0
-3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 264 R 1.28
+(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0
+3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 264 R 1.28
 (ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78
 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!)
 3.78 E F0(.)A(These are the same conditions obe)144 276 Q(yed by the)
@@ -2804,76 +2910,75 @@ F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!)
 (Signals ignored upon entry to the shell cannot be trapped or reset.)144
 294 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662
 (being ignored are reset to their original v)144 306 R .662
-(alues in a subshell or subshell en)-.25 F .662(vironment when one is)
+(alues in a subshell or subshell en)-.25 F .661(vironment when one is)
 -.4 F 2.5(created. The)144 318 R(return status is f)2.5 E(alse if an)-.1
 E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G
 (lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108
 334.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1
-(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .174
-(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name)
-3.034 E F0 -.1(wo)2.854 G .173
-(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F
-F4<ad74>144 358.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0
+(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .173
+(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1(name)
+3.033 E F0 -.1(wo)2.853 G .174
+(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F
+F4<ad74>144 358.8 Q F0 .843(option is used,)3.343 F F4(type)3.343 E F0
 .843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E
 F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0
-(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1
-(\214le)5.253 E F0(if)3.523 E F1(name)144.36 370.8 Q F0 .087
-(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087
-(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15
-(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1
-(name)2.946 E F0 .086(is not)2.766 F .118
+(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1
+(\214le)5.252 E F0(if)3.522 E F1(name)144.36 370.8 Q F0 .086
+(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086
+(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15
+(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1
+(name)2.947 E F0 .087(is not)2.767 F .119
 (found, then nothing is printed, and an e)144 382.8 R .118
-(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F
-F4<ad70>2.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855
+(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
+F4<ad70>2.618 E F0 .118(option is used,)2.618 F F4(type)2.618 E F0 .855
 (either returns the name of the disk \214le that w)144 394.8 R .855
 (ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0
-.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144
-406.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641
-(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4
-<ad50>3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH)
--.189 E F0 .113(search for each)144 418.8 R F1(name)2.613 E F0 2.613(,e)
-C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613
-F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113
-(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4<ad70>
-2.612 E F0(and)144 430.8 Q F4<ad50>3.23 E F0 .73(print the hashed v)3.23
-F .731
-(alue, which is not necessarily the \214le that appears \214rst in)-.25
-F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4<ad61>
-144 442.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748
-(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748
-(cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744
-(includes aliases and functions, if and only if the)144 454.8 R F4<ad70>
-3.244 E F0 .744(option is not also used.)3.244 F .744
+.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if)
+144 406.8 R/F5 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141
+G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
+F4<ad50>3.14 E F0 .64(option forces a)3.14 F F2 -.666(PA)3.14 G(TH)-.189
+E F0 .112(search for each)144 418.8 R F1(name)2.612 E F0 2.612(,e)C -.15
+(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 F F0
+-.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I)
+.18 G 2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F4<ad70>2.613 E
+F0(and)144 430.8 Q F4<ad50>3.231 E F0 .731(print the hashed v)3.231 F
+.73(alue, which is not necessarily the \214le that appears \214rst in)
+-.25 F F2 -.666(PA)3.23 G(TH)-.189 E F3(.)A F0 .73(If the)5.23 F F4
+<ad61>144 442.8 Q F0 1.748(option is used,)4.248 F F4(type)4.248 E F0
+1.748(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G
+1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G(his)-6.749 E
+.744(includes aliases and functions, if and only if the)144 454.8 R F4
+<ad70>3.244 E F0 .744(option is not also used.)3.244 F .743
 (The table of hashed)5.744 F 1.223(commands is not consulted when using)
 144 466.8 R F4<ad61>3.723 E F0 6.223(.T)C(he)-6.223 E F4<ad66>3.723 E F0
-1.223(option suppresses shell function lookup, as)3.723 F .325(with the)
-144 478.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type)
-5.325 E F0 .325(returns true if all of the ar)2.825 F .326
-(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326
-(re not)-2.826 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4
+1.223(option suppresses shell function lookup, as)3.723 F .326(with the)
+144 478.8 R F4(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F4(type)
+5.326 E F0 .326(returns true if all of the ar)2.826 F .325
+(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325
+(re not)-2.825 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4
 (\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144
-519.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244
-(he resources a)-2.744 F -.25(va)-.2 G .244
+519.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243
+(he resources a)-2.743 F -.25(va)-.2 G .244
 (ilable to the shell and to processes started by it, on systems).25 F
-.943(that allo)144 531.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
-(The)5.943 E F4<ad48>3.443 E F0(and)3.443 E F4<ad53>3.444 E F0 .944
+.944(that allo)144 531.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
+(The)5.944 E F4<ad48>3.444 E F0(and)3.444 E F4<ad53>3.444 E F0 .943
 (options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 543.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
+144 543.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
 (hard limit cannot be increased by a non-root user once it is set; a so\
-ft limit may)2.709 F .425(be increased up to the v)144 555.6 R .425
-(alue of the hard limit.)-.25 F .426(If neither)5.425 F F4<ad48>2.926 E
-F0(nor)2.926 E F4<ad53>2.926 E F0 .426
-(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144
+ft limit may)2.708 F .426(be increased up to the v)144 555.6 R .426
+(alue of the hard limit.)-.25 F .425(If neither)5.426 F F4<ad48>2.925 E
+F0(nor)2.925 E F4<ad53>2.925 E F0 .425
+(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144
 567.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139
 (can be a number in the unit speci\214ed for the resource or one)3.319 F
-.741(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4
+.742(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.242 E F0(,)A F4
 (soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w)
 C .741(hich stand for the current hard limit, the current)-3.241 F .78
 (soft limit, and no limit, respecti)144 591.6 R -.15(ve)-.25 G(ly).15 E
 5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78
 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25
-F .498(resource is printed, unless the)144 603.6 R F4<ad48>2.999 E F0
-.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499
+F .499(resource is printed, unless the)144 603.6 R F4<ad48>2.999 E F0
+.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498
 (more than one resource is speci\214ed, the)2.999 F
 (limit name and unit are printed before the v)144 615.6 Q 2.5
 (alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4
@@ -2889,8 +2994,8 @@ Q F0(The maximum size of a process')180 663.6 Q 2.5(sd)-.55 G(ata se)
 687.6 Q F4<ad69>144 699.6 Q F0(The maximum number of pending signals)180
 699.6 Q F4<ad6b>144 711.6 Q F0
 (The maximum number of kqueues that may be allocated)180 711.6 Q
-(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22)198.725 E 0 Cg EP
-%%Page: 23 23
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP
+%%Page: 24 24
 %%BeginPageSetup
 BP
 %%EndPageSetup
@@ -2901,7 +3006,7 @@ E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6c>144 84 Q F0
 <ad6d>144 96 Q F0(The maximum resident set size \(man)180 96 Q 2.5(ys)
 -.15 G(ystems do not honor this limit\))-2.5 E F1<ad6e>144 108 Q F0 .791
 (The maximum number of open \214le descriptors \(most systems do not al\
-lo)180 108 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F
+lo)180 108 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
 (be set\))180 120 Q F1<ad70>144 132 Q F0
 (The pipe size in 512-byte blocks \(this may not be set\))180 132 Q F1
 <ad71>144 144 Q F0(The maximum number of bytes in POSIX message queues)
@@ -2920,18 +3025,18 @@ Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)
 -.25 G .468(n, and the).15 F F1<ad61>2.968 E F0 .468
 (option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F
 2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468
-E .044(no option is gi)144 280.8 R -.15(ve)-.25 G .044(n, then).15 F F1
-<ad66>2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
-(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1
-<ad74>2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144
-292.8 R F1<ad70>4.089 E F0 4.089(,w)C 1.589
+E .045(no option is gi)144 280.8 R -.15(ve)-.25 G .045(n, then).15 F F1
+<ad66>2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1
+<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144
+292.8 R F1<ad70>4.088 E F0 4.089(,w)C 1.589
 (hich is in units of 512-byte blocks;)-4.089 F F1<ad50>4.089 E F0(,)A F1
 <ad54>4.089 E F0(,)A F1<ad62>4.089 E F0(,)A F1<ad6b>4.089 E F0(,)A F1
-<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F1<ad75>4.089 E F0 4.088(,w)C
-1.588(hich are)-4.088 F 1.438(unscaled v)144 304.8 R 1.438
-(alues; and, when in Posix mode,)-.25 F F1<ad63>3.939 E F0(and)3.939 E
-F1<ad66>3.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.)
--3.939 F(The)6.439 E .404(return status is 0 unless an in)144 316.8 R
+<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F1<ad75>4.089 E F0 4.089(,w)C
+1.589(hich are)-4.089 F 1.476(unscaled v)144 304.8 R 1.476
+(alues; and, when in posix mode,)-.25 F F1<ad63>3.976 E F0(and)3.976 E
+F1<ad66>3.976 E F0 3.976(,w)C 1.476(hich are in 512-byte increments.)
+-3.976 F(The)6.476 E .404(return status is 0 unless an in)144 316.8 R
 -.25(va)-.4 G .404(lid option or ar).25 F .404
 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144
 328.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 345.6 Q F0([)2.5 E
@@ -2941,15 +3046,15 @@ F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A
 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
 therwise it is interpreted as a symbolic mode mask similar to that acce\
 pted by)144 369.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-381.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382
+381.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
 (alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
 (option causes the mask to be)2.882 F .547
 (printed in symbolic form; the def)144 393.6 R .547
 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G
 (he)-3.047 E F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 405.6 Q F0 .551
-(is omitted, the output is in a form that may be reused as input.)3.231
-F .552(The return status is 0 if the)5.552 F(mode w)144 417.6 Q
+(mode)144.38 405.6 Q F0 .552
+(is omitted, the output is in a form that may be reused as input.)3.232
+F .551(The return status is 0 if the)5.551 F(mode w)144 417.6 Q
 (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E
 (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1
 (unalias)108 434.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
@@ -2960,59 +3065,72 @@ F(remo)144 458.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
 (alue is true unless a supplied)-.25 E F2(name)2.86 E F0
 (is not a de\214ned alias.)2.68 E F1(unset)108 475.2 Q F0<5bad>2.5 E F1
 (fv)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...])
-2.5 E -.15(Fo)144 487.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0
-3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327
+2.5 E -.15(Fo)144 487.2 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0
+3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328
 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327
-(If the)6.327 F F1<ad76>3.828 E F0 1.328(option is gi)3.828 F -.15(ve)
--.25 G 1.328(n, each).15 F F2(name)144.36 499.2 Q F0 1.551
-(refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551
-(ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va)
-4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 511.2 R F1
-<ad66>4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0
+(If the)6.327 F F1<ad76>3.827 E F0 1.327(option is gi)3.827 F -.15(ve)
+-.25 G 1.327(n, each).15 F F2(name)144.36 499.2 Q F0 1.55
+(refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551
+(ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va)
+4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 511.2 R F1
+<ad66>4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0
 2.141(refers to a shell function, and the function de\214nition is)4.821
-F(remo)144 523.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1<ad6e>
+F(remo)144 523.2 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1<ad6e>
 2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037
 (is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E
-F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492
+F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.538 E .492
 (be unset rather than the v)144 535.2 R .492(ariable it references.)-.25
 F F1<ad6e>5.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1
-<ad66>2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F
-.221(options are supplied, each)144 547.2 R F2(name)2.721 E F0 .221
-(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22
-(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188
+<ad66>2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22
+(options are supplied, each)144 547.2 R F2(name)2.72 E F0 .22
+(refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221
+(ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189
 (tion with that name is unset.)144 559.2 R 1.189(Each unset v)6.189 F
-1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G
-1.189(rom the en)-3.689 F(vironment)-.4 E 3.206
+1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G
+1.188(rom the en)-3.688 F(vironment)-.4 E 3.205
 (passed to subsequent commands.)144 571.2 R 3.206(If an)8.206 F 5.706
 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09
-E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E
-F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN)
-4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E
+E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E
+F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN)
+4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E
 F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348
-F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144
+F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144
 595.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15
 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a)
 -.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 612 Q
-F0([)2.5 E F1<ad6e>A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8
-(Wa)144 624 S .027(it for each speci\214ed child process and return its\
- termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026
-(may be a process ID)2.766 F .256
-(or a job speci\214cation; if a job spec is gi)144 636 R -.15(ve)-.25 G
-.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256
-(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E
-F2(n)3.116 E F0 .318(is not gi)144 648 R -.15(ve)-.25 G .318
-(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318
-(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318
-(nd the return status is zero.)-2.818 F .317(If the)5.317 F F1<ad6e>144
-660 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa)
-2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362
-(ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If)
-5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 672 S(on-e)
--2.596 E .096(xistent process or job, the return status is 127.)-.15 F
-.095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15
-F(of the last process or job w)144 684 Q(aited for)-.1 E(.)-.55 E/F5
-10.95/Times-Bold@0 SF(SEE ALSO)72 700.8 Q F0(bash\(1\), sh\(1\))108
-712.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP
+F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144
+624 S .659(it for each speci\214ed child process and return its termina\
+tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process)
+3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 636 R
+-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G
+.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)
+-5.008 E F2(id)144.01 648 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G
+.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521
+(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521
+(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 660 Q F1
+<ad6e>3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1
+(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557
+(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556
+(If the)5.556 F F1<ad66>3.056 E F0 .586
+(option is supplied, and job control is enabled,)144 672 R F1(wait)3.086
+E F0(forces)3.086 E F2(id)3.086 E F0 .587
+(to terminate before returning its sta-)3.086 F .756
+(tus, instead of returning when it changes status.)144 684 R(If)5.756 E
+F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755
+(xistent process or job, the)-.15 F .365(return status is 127.)144 696 R
+.365(Otherwise, the return status is the e)5.365 F .365
+(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 708
+Q(.)-.55 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg
+EP
+%%Page: 25 25
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q
+F0(bash\(1\), sh\(1\))108 96 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565
+E(25)198.725 E 0 Cg EP
 %%Trailer
 end
 %%EOF
index 244a49904376440f55faf8c27125ec3c26cc4caf..885aef0424cd4c26f3c4b3e59373d1f121295ae6 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.22.3
-%%CreationDate: Wed Aug 31 10:24:00 2016
+%%CreationDate: Wed Jan  2 09:14:38 2019
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%DocumentSuppliedResources: procset grops 1.22 3
index 90bdb3e1fbda65a79485074155f785269fce0fdf..12462477f88d8114be28a83108046ef0b5d8f95e 100644 (file)
@@ -1,11 +1,11 @@
 @ignore
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2018 Free Software Foundation, Inc.
 @end ignore
 
-@set LASTCHANGE Wed Sep  7 17:12:22 EDT 2016
+@set LASTCHANGE Fri Dec  7 09:49:07 EST 2018
 
-@set EDITION 4.4
-@set VERSION 4.4
+@set EDITION 5.0
+@set VERSION 5.0
 
-@set UPDATED 7 September 2016
-@set UPDATED-MONTH September 2016
+@set UPDATED 7 December 2018
+@set UPDATED-MONTH December 2018
diff --git a/error.c b/error.c
index b05c39eb1e995a67c960b95855802d3496244235..417c902e9124777f6e46dc4c9b285452009d8850 100644 (file)
--- a/error.c
+++ b/error.c
@@ -44,6 +44,7 @@ extern int errno;
 #include "bashintl.h"
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "flags.h"
 #include "input.h"
 
@@ -53,8 +54,6 @@ extern int errno;
 
 extern int executing_line_number __P((void));
 
-extern int last_command_exit_value;
-extern char *shell_name;
 #if defined (JOB_CONTROL)
 extern pid_t shell_pgrp;
 extern int give_terminal_to __P((pid_t, int));
diff --git a/eval.c b/eval.c
index db863e72fc9bb38dd89826e641fa8f3f82aab566..f02d6e40e8812b7430b2b79179f20d31af8e5369 100644 (file)
--- a/eval.c
+++ b/eval.c
@@ -35,6 +35,7 @@
 #include "bashintl.h"
 
 #include "shell.h"
+#include "parser.h"
 #include "flags.h"
 #include "trap.h"
 
 #  include "bashhist.h"
 #endif
 
-extern int EOF_reached;
-extern int indirection_level;
-extern int posixly_correct;
-extern int subshell_environment, running_under_emacs;
-extern int last_command_exit_value, stdin_redir;
-extern int need_here_doc;
-extern int current_command_number, current_command_line_count, line_number;
-extern int expand_aliases;
-extern char *ps0_prompt;
-
 #if defined (HAVE_POSIX_SIGNALS)
 extern sigset_t top_level_mask;
 #endif
@@ -78,6 +69,9 @@ reader_loop ()
 
   our_indirection_level = ++indirection_level;
 
+  if (just_one_command)
+    reset_readahead_token ();
+
   while (EOF_Reached == 0)
     {
       int code;
@@ -90,7 +84,7 @@ reader_loop ()
 
       /* XXX - why do we set this every time through the loop?  And why do
         it if SIGINT is trapped in an interactive shell? */
-      if (interactive_shell && signal_is_ignored (SIGINT) == 0)
+      if (interactive_shell && signal_is_ignored (SIGINT) == 0 && signal_is_trapped (SIGINT) == 0)
        set_signal_handler (SIGINT, sigint_sighandler);
 
       if (code != NOT_JUMPED)
@@ -157,10 +151,6 @@ reader_loop ()
          else if (current_command = global_command)
            {
              global_command = (COMMAND *)NULL;
-             current_command_number++;
-
-             executing = 1;
-             stdin_redir = 0;
 
              /* If the shell is interactive, expand and display $PS0 after reading a
                 command (possibly a list or pipeline) and before executing it. */
@@ -177,6 +167,11 @@ reader_loop ()
                  free (ps0_string);
                }
 
+             current_command_number++;
+
+             executing = 1;
+             stdin_redir = 0;
+
              execute_command (current_command);
 
            exec_done:
@@ -202,6 +197,47 @@ reader_loop ()
   return (last_command_exit_value);
 }
 
+/* Pretty print shell scripts */
+int
+pretty_print_loop ()
+{
+  COMMAND *current_command;
+  char *command_to_print;
+  int code;
+  int global_posix_mode, last_was_newline;
+
+  global_posix_mode = posixly_correct;
+  last_was_newline = 0;
+  while (EOF_Reached == 0)
+    {
+      code = setjmp_nosigs (top_level);
+      if (code)
+        return (EXECUTION_FAILURE);
+      if (read_command() == 0)
+       {
+         current_command = global_command;
+         global_command = 0;
+         posixly_correct = 1;                  /* print posix-conformant */
+         if (current_command && (command_to_print = make_command_string (current_command)))
+           {
+             printf ("%s\n", command_to_print);        /* for now */
+             last_was_newline = 0;
+           }
+         else if (last_was_newline == 0)
+           {
+              printf ("\n");
+              last_was_newline = 1;
+           }
+         posixly_correct = global_posix_mode;
+         dispose_command (current_command);
+       }
+      else
+       return (EXECUTION_FAILURE);
+    }
+    
+  return (EXECUTION_SUCCESS);
+}
+
 static sighandler
 alrm_catcher(i)
      int i;
@@ -228,6 +264,15 @@ send_pwd_to_eterm ()
   free (f);
 }
 
+static void
+execute_prompt_command ()
+{
+  char *command_to_execute;
+
+  command_to_execute = get_string_value ("PROMPT_COMMAND");
+  if (command_to_execute)
+    execute_variable_command (command_to_execute, "PROMPT_COMMAND");
+}
 /* Call the YACC-generated parser and return the status of the parse.
    Input is read from the current input stream (bash_input).  yyparse
    leaves the parsed command in the global variable GLOBAL_COMMAND.
@@ -236,7 +281,6 @@ int
 parse_command ()
 {
   int r;
-  char *command_to_execute;
 
   need_here_doc = 0;
   run_pending_traps ();
@@ -249,9 +293,7 @@ parse_command ()
      actually printed. */
   if (interactive && bash_input.type != st_string && parser_expanding_alias() == 0)
     {
-      command_to_execute = get_string_value ("PROMPT_COMMAND");
-      if (command_to_execute)
-       execute_variable_command (command_to_execute, "PROMPT_COMMAND");
+      execute_prompt_command ();
 
       if (running_under_emacs == 2)
        send_pwd_to_eterm ();   /* Yuck */
index bd06b2566d3f74c23aee9cf6442893db86d9e350..bcca1f9e01fd188d439162264445d5f3cbf07a63 100644 (file)
     <td>A more ksh-compatible 'autoload' (with lazy load).</td>
     <td>ksh</td>
   </tr>
+  <tr>
+    <td>./functions/autoload.v3</td>
+    <td>An updated ksh-compatible 'autoload'.</td>
+    <td>ksh</td>
+  </tr>
   <tr>
     <td>./functions/basename</td>
     <td>A replacement for basename(1).</td>
     <td>basename</td>
   </tr>
-  <tr>
-    <td>./functions/basename2</td>
-    <td>Fast basename(1) and dirname(1) functions for BASH/SH.</td>
-    <td>basename, dirname</td>
-  </tr>
-  <tr>
-    <td>./functions/coproc.bash</td>
-    <td>Start, control, and end coprocesses.</td>
-  </tr>
-  <tr>
-    <td>./functions/coshell.bash</td>
-    <td>Control shell coprocesses (see coprocess.bash).</td>
-  </tr>
-  <tr>
-    <td>./functions/coshell.README</td>
-    <td>README for coshell and coproc.</td>
-  </tr>
   <tr>
     <td>./functions/csh-compat</td>
     <td>A C-shell compatibility package.</td>
     <td>csh</td>
   </tr>
-  <tr>
-    <td>./functions/dirfuncs</td>
-    <td>Directory manipulation functions from the book 'The Korn Shell'.</td>
-  </tr>
   <tr>
     <td>./functions/dirname</td>
     <td>A replacement for dirname(1).</td>
     <td>dirname</td>
   </tr>
   <tr>
-    <td>./functions/emptydir</td>
-    <td>Find out if a directory is empty.</td>
+    <td>./functions/dirstack</td>
+    <td>Directory stack functions.</td>
   </tr>
   <tr>
     <td>./functions/exitstat</td>
     <td>Front end to sync TERM changes to both stty(1) and readline 'bind'.</td>
     <td>stty.bash</td>
   </tr>
-  <tr>
-    <td>./functions/func</td>
-    <td>Print out definitions for functions named by arguments.</td>
-  </tr>
-  <tr>
-    <td>./functions/gethtml</td>
-    <td>Get a web page from a remote server (wget(1) in bash!).</td>
-  </tr>
-  <tr>
-    <td>./functions/getoptx.bash</td>
-    <td>getopt function that parses long-named options.</td>
-  </tr>
   <tr>
     <td>./functions/inetaddr</td>
     <td>Internet address conversion (inet2hex & hex2inet).</td>
     <td>Return zero if the argument is in the path and executable.</td>
     <td>inpath</td>
   </tr>
-  <tr>
-    <td>./functions/isnum.bash</td>
-    <td>Test user input on numeric or character value.</td>
-  </tr>
   <tr>
     <td>./functions/isnum2</td>
     <td>Test user input on numeric values, with floating point.</td>
     <td>./functions/isvalidip</td>
     <td>Test user input for valid IP Addresses.</td>
   </tr>
-  <tr>
-    <td>./functions/jdate.bash</td>
-    <td>Julian date conversion.</td>
-  </tr>
-  <tr>
-    <td>./functions/jj.bash</td>
-    <td>Look for running jobs.</td>
-  </tr>
-  <tr>
-    <td>./functions/keep</td>
-    <td>Try to keep some programs in the foreground and running.</td>
-  </tr>
   <tr>
     <td>./functions/ksh-cd</td>
     <td>ksh-like 'cd': cd [-LP] [dir [change]].</td>
     <td>./functions/login</td>
     <td>Replace the 'login' and 'newgrp' builtins in old Bourne shells.</td>
   </tr>
-  <tr>
-    <td>./functions/lowercase</td>
-    <td>Rename files to lower case.</td>
-    <td>rename lower</td>
-  </tr>
-  <tr>
-    <td>./functions/manpage</td>
-    <td>Find and print a manual page.</td>
-    <td>fman</td>
-  </tr>
-  <tr>
-    <td>./functions/mhfold</td>
-    <td>Print MH folders, useful only because folders(1) doesn't print mod date/times.</td>
-  </tr>
   <tr>
     <td>./functions/notify.bash</td>
     <td>Notify when jobs change status.</td>
   </tr>
-  <tr>
-    <td>./functions/pathfuncs</td>
-    <td>Path related functions (no_path, add_path, pre-path, del_path).</td>
-    <td>path</td>
-  </tr>
   <tr>
     <td>./functions/README</td>
     <td>README</td>
   </tr>
-  <tr>
-    <td>./functions/recurse</td>
-    <td>Recursive directory traverser.</td>
-  </tr>
-  <tr>
-    <td>./functions/repeat2</td>
-    <td>A clone of C shell builtin 'repeat'.</td>
-    <td>repeat, csh</td>
-  </tr>
-  <tr>
-    <td>./functions/repeat3</td>
-    <td>A clone of C shell builtin 'repeat'.</td>
-    <td>repeat, csh</td>
-  </tr>
   <tr>
     <td>./functions/seq</td>
     <td>Generate a sequence from m to n, m defaults to 1.</td>
     <td>A function to emulate the ancient ksh builtin.</td>
     <td>ksh</td>
   </tr>
-  <tr>
-    <td>./functions/term</td>
-    <td>A shell function to set the terminal type interactively or not.</td>
-  </tr>
   <tr>
     <td>./functions/whatis</td>
     <td>An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command.</td>
     <td>./functions/which</td>
     <td>An emulation of 'which(1)' as it appears in FreeBSD.</td>
   </tr>
-  <tr>
-    <td>./functions/xalias.bash</td>
-    <td>Convert csh alias commands to bash functions.</td>
-    <td>csh, aliasconv</td>
-  </tr>
-  <tr>
-    <td>./functions/xfind.bash</td>
-    <td>A 'find(1)' clone.</td>
-  </tr>
-  <tr>
-  </tr>
   <tr>
     <td>./loadables/</td>
     <td>Example loadable replacements</td>
     <td>cat(1) replacement with no options - the way cat was intended.</td>
     <td>cat, readline pager</td>
   </tr>
-  <tr>
-    <td>./loadables/cut.c</td>
-    <td>cut(1) replacement.</td>
-  </tr>
   <tr>
     <td>./loadables/dirname.c</td>
     <td>Return directory portion of pathname.</td>
     <td>dirname</td>
   </tr>
   <tr>
-    <td>./loadables/finfo.c</td>
-    <td>Print file info.</td>
+    <td>./loadables/fdflags.c</td>
+    <td>Display or modify file descriptor flags</td>
   </tr>
   <tr>
-    <td>./loadables/getconf.c</td>
-    <td>POSIX.2 getconf utility.</td>
-  </tr>
-  <tr>
-    <td>./loadables/getconf.h</td>
-    <td>Replacement definitions for ones the system doesn't provide.</td>
+    <td>./loadables/finfo.c</td>
+    <td>Print file info.</td>
   </tr>
   <tr>
     <td>./loadables/head.c</td>
     <td>./loadables/Makefile.in</td>
     <td>Simple makefile for the sample loadable builtins.</td>
   </tr>
+  <tr>
+    <td>./loadables/Makefile.inc.in</td>
+    <td>Sample makefile to use for loadable builtin development.</td>
+  </tr>
   <tr>
     <td>./loadables/mkdir.c</td>
     <td>Make directories.</td>
   </tr>
+  <tr>
+    <td>./loadables/mypid.c</td>
+    <td>Demonstrate how a loadable builtin can create and delete shell variables.</td>
+  </tr>
   <tr>
     <td>./loadables/necho.c</td>
     <td>echo without options or argument interpretation.</td>
     <td>./loadables/realpath.c</td>
     <td>Canonicalize pathnames, resolving symlinks.</td>
   </tr>
+  <tr>
+    <td>./loadables/rm.c</td>
+    <td>Remove file.</td>
+  </tr>
   <tr>
     <td>./loadables/rmdir.c</td>
     <td>Remove directory.</td>
   </tr>
+  <tr>
+    <td>./loadables/setpgid.c</td>
+    <td>Set a child process's process group.
+  </tr>
   <tr>
     <td>./loadables/sleep.c</td>
     <td>sleep for fractions of a second.</td>
   </tr>
+  <tr>
+    <td>./loadables/stat.c</td>
+    <td>Load an associative array with stat information about a file.</td>
+  </tr>
   <tr>
     <td>./loadables/strftime.c</td>
     <td>Loadable builtin interface to strftime(3).</td>
     <td>./misc/README</td>
     <td>README</td>
   </tr>
-  <tr>
-    <td>./misc/suncmd.termcap</td>
-    <td>SunView TERMCAP string.</td>
-  </tr>
-  <tr>
-  </tr>
-  <tr>
-    <td>./scripts.noah</td>
-    <td>Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey)</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/aref.bash</td>
-    <td>Pseudo-arrays and substring indexing examples.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/bash.sub.bash</td>
-    <td>Library functions used by require.bash.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/bash_version.bash</td>
-    <td>A function to slice up $BASH_VERSION.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/meta.bash</td>
-    <td>Enable and disable eight-bit readline input.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/mktmp.bash</td>
-    <td>Make a temporary file with a unique name.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/number.bash</td>
-    <td>A fun hack to translate numerals into English.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/PERMISSION</td>
-    <td>Permissions to use the scripts in this directory.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/prompt.bash</td>
-    <td>A way to set PS1 to some predefined strings.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/README</td>
-    <td>README</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/remap_keys.bash</td>
-    <td>A front end to 'bind' to redo readline bindings.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/require.bash</td>
-    <td>Lisp-like require/provide library functions for bash.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/send_mail.bash</td>
-    <td>Replacement SMTP client written in bash.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/shcat.bash</td>
-    <td>Bash replacement for 'cat(1)'.</td>
-    <td>cat</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/source.bash</td>
-    <td>Replacement for source that uses current directory.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/string.bash</td>
-    <td>The string(3) functions at the shell level.</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/stty.bash</td>
-    <td>Front-end to stty(1) that changes readline bindings too.</td>
-    <td>fstty</td>
-  </tr>
-  <tr>
-    <td>./scripts.noah/y_or_n_p.bash</td>
-    <td>Prompt for a yes/no/quit answer.</td>
-    <td>ask</td>
-  </tr>
-  <tr>
-  </tr>
-  <tr>
-    <td>./scripts.v2</td>
-    <td>John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey).</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/arc2tarz</td>
-    <td>Convert an "arc" archive to a compressed tar archive.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/bashrand</td>
-    <td>Random number generator with upper and lower bounds and optional seed.</td>
-    <td>random</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/cal2day.bash</td>
-    <td>Convert a day number to a name.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/cdhist.bash</td>
-    <td>cd replacement with a directory stack added.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/corename</td>
-    <td>Tell what produced a core file.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/fman</td>
-    <td>Fast man(1) replacement.</td>
-    <td>manpage</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/frcp</td>
-    <td>Copy files using ftp(1) but with rcp-type command line syntax.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/lowercase</td>
-    <td>Change filenames to lower case.</td>
-    <td>rename lower</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/ncp</td>
-    <td>A nicer front end for cp(1) (has -i, etc.).</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/newext</td>
-    <td>Change the extension of a group of files.</td>
-    <td>rename</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/nmv</td>
-    <td>A nicer front end for mv(1) (has -i, etc.).</td>
-    <td>rename</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/pages</td>
-    <td>Print specified pages from files.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/PERMISSION</td>
-    <td>Permissions to use the scripts in this directory.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/pf</td>
-    <td>A pager front end that handles compressed files.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/pmtop</td>
-    <td>Poor man's 'top(1)' for SunOS 4.x and BSD/OS.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/README</td>
-    <td>README</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/ren</td>
-    <td>Rename files by changing parts of filenames that match a pattern.</td>
-    <td>rename</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/rename</td>
-    <td>Change the names of files that match a pattern.</td>
-    <td>rename</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/repeat</td>
-    <td>Execute a command multiple times.</td>
-    <td>repeat</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/shprof</td>
-    <td>Line profiler for bash scripts.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/untar</td>
-    <td>Unarchive a (possibly compressed) tarfile into a directory.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/uudec</td>
-    <td>Carefully uudecode(1) multiple files.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/uuenc</td>
-    <td>uuencode(1) multiple files.</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/vtree</td>
-    <td>Print a visual display of a directory tree.</td>
-    <td>tree</td>
-  </tr>
-  <tr>
-    <td>./scripts.v2/where</td>
-    <td>Show where commands that match a pattern are.</td>
-  </tr>
   <tr>
   </tr>
   <tr>
     <td>./scripts</td>
     <td>Example scripts</td>
   </tr>
-  <tr>
-    <td>./scripts/adventure.sh</td>
-    <td>Text adventure game in bash!</td>
-  </tr>
-  <tr>
-    <td>./scripts/bcsh.sh</td>
-    <td>Bourne shell cshell-emulator.</td>
-    <td>csh</td>
-  </tr>
-  <tr>
-    <td>./scripts/bash-hexdump.sh</td>
-    <td>hexdump(1) in bash</td>
-    <td>hexdump -C, hd</td>
   <tr>
     <td>./scripts/cat.sh</td>
     <td>Readline-based pager.</td>
     <td>./scripts/center</td>
     <td>Center - center a group of lines.</td>
   </tr>
-  <tr>
-    <td>./scripts/dd-ex.sh</td>
-    <td>Line editor using only /bin/sh, /bin/dd and /bin/rm.</td>
-  </tr>
-  <tr>
-    <td>./scripts/fixfiles.bash</td>
-    <td>Recurse a tree and fix files containing various "bad" chars.</td>
-  </tr>
-  <tr>
-    <td>./scripts/hanoi.bash</td>
-    <td>The inevitable Towers of Hanoi in bash.</td>
-  </tr>
   <tr>
     <td>./scripts/inpath</td>
     <td>Search $PATH for a file the same name as $1; return TRUE if found.</td>
     <td>inpath</td>
   </tr>
-  <tr>
-    <td>./scripts/krand.bash</td>
-    <td>Produces a random number within integer limits.</td>
-    <td>random</td>
-  </tr>
-  <tr>
-    <td>./scripts/line-input.bash</td>
-    <td>Line input routine for GNU Bourne-Again Shell plus terminal-control primitives.</td>
-  </tr>
-  <tr>
-    <td>./scripts/nohup.bash</td>
-    <td>bash version of 'nohup' command.</td>
-  </tr>
-  <tr>
-    <td>./scripts/precedence</td>
-    <td>Test relative precedences for '&&' and '||' operators.</td>
-  </tr>
-  <tr>
-    <td>./scripts/randomcard.bash</td>
-    <td>Print a random card from a card deck.</td>
-    <td>random</td>
-  </tr>
   <tr>
     <td>./scripts/README</td>
     <td>README</td>
   </tr>
-  <tr>
-    <td>./scripts/scrollbar</td>
-    <td>Display scrolling text.</td>
-  </tr>
-  <tr>
-    <td>./scripts/scrollbar2</td>
-    <td>Display scrolling text.</td>
-  </tr>
-  <tr>
-    <td>./scripts/self-repro</td>
-    <td>A self-reproducing script (careful!)</td>
-  </tr>
-  <tr>
-    <td>./scripts/showperm.bash</td>
-    <td>Convert ls(1) symbolic permissions into octal mode.</td>
-  </tr>
   <tr>
     <td>./scripts/shprompt</td>
     <td>Display a prompt and get an answer satisfying certain criteria.</td>
     <td>./scripts/spin.bash</td>
     <td>Display a 'spinning wheel' to show progress.</td>
   </tr>
-  <tr>
-    <td>./scripts/timeout</td>
-    <td>Give rsh(1) a shorter timeout.</td>
-  </tr>
-  <tr>
-    <td>./scripts/timeout2</td>
-    <td>Execute a given command with a timeout.</td>
-  </tr>
-  <tr>
-    <td>./scripts/timeout3</td>
-    <td>Execute a given command with a timeout.</td>
-  </tr>
-  <tr>
-    <td>./scripts/vtree2</td>
-    <td>Display a tree printout of dir in 1k blocks.</td>
-    <td>tree</td>
-  </tr>
-  <tr>
-    <td>./scripts/vtree3</td>
-    <td>Display a graphical tree printout of dir.</td>
-    <td>tree</td>
-  </tr>
-  <tr>
-    <td>./scripts/vtree3a</td>
-    <td>Display a graphical tree printout of dir.</td>
-    <td>tree</td>
-  </tr>
-  <tr>
-    <td>./scripts/websrv.sh</td>
-    <td>A web server in bash!</td>
-  </tr>
   <tr>
     <td>./scripts/xterm_title</td>
     <td>Print the contents of the xterm title bar.</td>
   </tr>
   <tr>
   </tr>
-  <tr>
-    <td>./startup-files/apple</td>
-    <td>Example Start-up files for Mac OS X.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/aliases</td>
-    <td>Sample aliases for Mac OS X.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/bash.defaults</td>
-    <td>Sample User preferences file.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/environment</td>
-    <td>Sample Bourne Again Shell environment file.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/login</td>
-    <td>Sample login wrapper.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/logout</td>
-    <td>Sample logout wrapper.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/rc</td>
-    <td>Sample Bourne Again Shell config file.</td>
-  </tr>
-  <tr>
-    <td>./startup-files/apple/README</td>
-    <td>README</td>
-  </tr>
 </table>
index 4b5478eee446b69270a48accd1b7a413695cd6ea..b47e2113a313e2a1b6c1474cafa9a108e26cc578 100644 (file)
@@ -9,43 +9,25 @@ Path  Description     X-Ref
 ./functions/autoload   An almost ksh-compatible 'autoload' (no lazy load).     ksh
 ./functions/autoload.v2        An almost ksh-compatible 'autoload' (no lazy load).     ksh
 ./functions/autoload.v3        A more ksh-compatible 'autoload' (with lazy load).      ksh
+./functions/autoload.v4        An updated ksh-compatible 'autoload'.   ksh
 ./functions/basename   A replacement for basename(1).  basename
-./functions/basename2  Fast basename(1) and dirname(1) functions for BASH/SH.  basename, dirname
-./functions/coproc.bash        Start, control, and end coprocesses.    
-./functions/coshell.bash       Control shell coprocesses (see coprocess.bash). 
-./functions/coshell.README     README for coshell and coproc.  
 ./functions/csh-compat A C-shell compatibility package.        csh
-./functions/dirfuncs   Directory manipulation functions from the book 'The Korn Shell'.        
 ./functions/dirname    A replacement for dirname(1).   dirname
-./functions/emptydir   Find out if a directory is empty.       
+./functions/dirstack   Directory stack functions.
 ./functions/exitstat   Display the exit status of processes.   
 ./functions/external   Like 'command' but FORCES use of external command.      
 ./functions/fact       Recursive factorial function.   
 ./functions/fstty      Front end to sync TERM changes to both stty(1) and readline 'bind'.     stty.bash
-./functions/func       Print out definitions for functions named by arguments. 
-./functions/gethtml    Get a web page from a remote server (wget(1) in bash!). 
-./functions/getoptx.bash       getopt function that parses long-named options. 
 ./functions/inetaddr   Internet address conversion (inet2hex & hex2inet).      
 ./functions/inpath     Return zero if the argument is in the path and executable.      inpath
-./functions/isnum.bash Test user input on numeric or character value.  
 ./functions/isnum2     Test user input on numeric values, with floating point. 
 ./functions/isvalidip  Test user input for valid IP Addresses. 
-./functions/jdate.bash Julian date conversion. 
-./functions/jj.bash    Look for running jobs.  
-./functions/keep       Try to keep some programs in the foreground and running.        
 ./functions/ksh-cd     ksh-like 'cd': cd [-LP] [dir [change]]. ksh
 ./functions/ksh-compat-test    ksh-like arithmetic test replacements.  ksh
 ./functions/kshenv     Functions and aliases to provide the beginnings of a ksh environment for bash.  ksh
 ./functions/login      Replace the 'login' and 'newgrp' builtins in old Bourne shells. 
-./functions/lowercase  Rename files to lower case.     rename lower
-./functions/manpage    Find and print a manual page.   fman
-./functions/mhfold     Print MH folders, useful only because folders(1) doesn't print mod date/times.  
 ./functions/notify.bash        Notify when jobs change status. 
-./functions/pathfuncs  Path related functions (no_path, add_path, pre-path, del_path). path
 ./functions/README     README  
-./functions/recurse    Recursive directory traverser.  
-./functions/repeat2    A clone of C shell builtin 'repeat'.    repeat, csh
-./functions/repeat3    A clone of C shell builtin 'repeat'.    repeat, csh
 ./functions/seq        Generate a sequence from m to n, m defaults to 1.       
 ./functions/seq2       Generate a sequence from m to n, m defaults to 1.       
 ./functions/shcat      Readline-based pager.   cat, readline pager
@@ -53,28 +35,25 @@ Path        Description     X-Ref
 ./functions/sort-pos-params    Sort the positional parameters. 
 ./functions/substr     A function to emulate the ancient ksh builtin.  ksh
 ./functions/substr2    A function to emulate the ancient ksh builtin.  ksh
-./functions/term       A shell function to set the terminal type interactively or not. 
 ./functions/whatis     An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command.      
 ./functions/whence     An almost-ksh compatible 'whence(1)' command.   
 ./functions/which      An emulation of 'which(1)' as it appears in FreeBSD.    
-./functions/xalias.bash        Convert csh alias commands to bash functions.   csh, aliasconv
-./functions/xfind.bash A 'find(1)' clone.      
 
 ./loadables/   Example loadable replacements   
 ./loadables/basename.c Return non-directory portion of pathname.       basename
 ./loadables/cat.c      cat(1) replacement with no options - the way cat was intended.  cat, readline pager
-./loadables/cut.c      cut(1) replacement.     
 ./loadables/dirname.c  Return directory portion of pathname.   dirname
+./loadables/fdflags.c  Display or modify file descriptor flags
 ./loadables/finfo.c    Print file info.        
-./loadables/getconf.c  POSIX.2 getconf utility.        
-./loadables/getconf.h  Replacement definitions for ones the system doesn't provide.    
 ./loadables/head.c     Copy first part of files.       
 ./loadables/hello.c    Obligatory "Hello World" / sample loadable.     
 ./loadables/id.c       POSIX.2 user identity.  
 ./loadables/ln.c       Make links.     
 ./loadables/logname.c  Print login name of current user.       
 ./loadables/Makefile.in        Simple makefile for the sample loadable builtins.       
+./loadables/Makefile.inc.in    Sample makefile to use for loadable builtin development.
 ./loadables/mkdir.c    Make directories.       
+./loadables/mypid.c    Demonstrate how a loadable builtin can create and delete shell variables.
 ./loadables/necho.c    echo without options or argument interpretation.        
 ./loadables/pathchk.c  Check pathnames for validity and portability.   
 ./loadables/print.c    Loadable ksh-93 style print builtin.    
@@ -82,8 +61,11 @@ Path Description     X-Ref
 ./loadables/push.c     Anyone remember TOPS-20?
 ./loadables/README     README
 ./loadables/realpath.c Canonicalize pathnames, resolving symlinks.
+./loadables/rm.c       Remove file.
 ./loadables/rmdir.c    Remove directory.
+./loadables/setpgid.c  Set a child process's process group.
 ./loadables/sleep.c    sleep for fractions of a second.
+./loadables/stat.c     Load an associative array with stat information about a file.
 ./loadables/strftime.c Loadable builtin interface to strftime(3).
 ./loadables/sync.c     Sync the disks by forcing pending filesystem writes to complete.
 ./loadables/tee.c      Duplicate standard input.
@@ -101,83 +83,13 @@ Path       Description     X-Ref
 ./misc/aliasconv.sh    Convert csh aliases to bash aliases and functions.      csh, xalias
 ./misc/cshtobash       Convert csh aliases, environment variables, and variables to bash equivalents.  csh, xalias
 ./misc/README  README  
-./misc/suncmd.termcap  SunView TERMCAP string. 
-
-./scripts.noah Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey) 
-./scripts.noah/aref.bash       Pseudo-arrays and substring indexing examples.  
-./scripts.noah/bash.sub.bash   Library functions used by require.bash. 
-./scripts.noah/bash_version.bash       A function to slice up $BASH_VERSION.   
-./scripts.noah/meta.bash       Enable and disable eight-bit readline input.    
-./scripts.noah/mktmp.bash      Make a temporary file with a unique name.       
-./scripts.noah/number.bash     A fun hack to translate numerals into English.  
-./scripts.noah/PERMISSION      Permissions to use the scripts in this directory.       
-./scripts.noah/prompt.bash     A way to set PS1 to some predefined strings.    
-./scripts.noah/README  README  
-./scripts.noah/remap_keys.bash A front end to 'bind' to redo readline bindings.        
-./scripts.noah/require.bash    Lisp-like require/provide library functions for bash.   
-./scripts.noah/send_mail.bash  Replacement SMTP client written in bash.        
-./scripts.noah/shcat.bash      Bash replacement for 'cat(1)'.  cat
-./scripts.noah/source.bash     Replacement for source that uses current directory.     
-./scripts.noah/string.bash     The string(3) functions at the shell level.     
-./scripts.noah/stty.bash       Front-end to stty(1) that changes readline bindings too.        fstty
-./scripts.noah/y_or_n_p.bash   Prompt for a yes/no/quit answer.        ask
-
-./scripts.v2   John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey). 
-./scripts.v2/arc2tarz  Convert an "arc" archive to a compressed tar archive.   
-./scripts.v2/bashrand  Random number generator with upper and lower bounds and optional seed.  random
-./scripts.v2/cal2day.bash      Convert a day number to a name. 
-./scripts.v2/cdhist.bash       cd replacement with a directory stack added.    
-./scripts.v2/corename  Tell what produced a core file. 
-./scripts.v2/fman      Fast man(1) replacement.        manpage
-./scripts.v2/frcp      Copy files using ftp(1) but with rcp-type command line syntax.  
-./scripts.v2/lowercase Change filenames to lower case. rename lower
-./scripts.v2/ncp       A nicer front end for cp(1) (has -i, etc.).     
-./scripts.v2/newext    Change the extension of a group of files.       rename
-./scripts.v2/nmv       A nicer front end for mv(1) (has -i, etc.).     rename
-./scripts.v2/pages     Print specified pages from files.       
-./scripts.v2/PERMISSION        Permissions to use the scripts in this directory.       
-./scripts.v2/pf        A pager front end that handles compressed files.        
-./scripts.v2/pmtop     Poor man's 'top(1)' for SunOS 4.x and BSD/OS.   
-./scripts.v2/README    README  
-./scripts.v2/ren       Rename files by changing parts of filenames that match a pattern.       rename
-./scripts.v2/rename    Change the names of files that match a pattern. rename
-./scripts.v2/repeat    Execute a command multiple times.       repeat
-./scripts.v2/shprof    Line profiler for bash scripts. 
-./scripts.v2/untar     Unarchive a (possibly compressed) tarfile into a directory.     
-./scripts.v2/uudec     Carefully uudecode(1) multiple files.   
-./scripts.v2/uuenc     uuencode(1) multiple files.     
-./scripts.v2/vtree     Print a visual display of a directory tree.     tree
-./scripts.v2/where     Show where commands that match a pattern are.   
 
 ./scripts      Example scripts 
-./scripts/adventure.sh Text adventure game in bash!    
-./scripts/bash-hexdump.sh      hexdump(1) in bash
-./scripts/bcsh.sh      Bourne shell cshell-emulator.   csh
 ./scripts/cat.sh       Readline-based pager.   cat, readline pager
 ./scripts/center       Center - center a group of lines.       
-./scripts/dd-ex.sh     Line editor using only /bin/sh, /bin/dd and /bin/rm.    
-./scripts/fixfiles.bash        Recurse a tree and fix files containing various "bad" chars.    
-./scripts/hanoi.bash   The inevitable Towers of Hanoi in bash. 
 ./scripts/inpath       Search $PATH for a file the same name as $1; return TRUE if found.      inpath
-./scripts/krand.bash   Produces a random number within integer limits. random
-./scripts/line-input.bash      Line input routine for GNU Bourne-Again Shell plus terminal-control primitives. 
-./scripts/nohup.bash   bash version of 'nohup' command.        
-./scripts/precedence   Test relative precedences for '&&' and '||' operators.  
-./scripts/randomcard.bash      Print a random card from a card deck.   random
-./scripts/README       README  
-./scripts/scrollbar    Display scrolling text. 
-./scripts/scrollbar2   Display scrolling text. 
-./scripts/self-repro   A self-reproducing script (careful!)    
-./scripts/showperm.bash        Convert ls(1) symbolic permissions into octal mode.     
 ./scripts/shprompt     Display a prompt and get an answer satisfying certain criteria. ask
 ./scripts/spin.bash    Display a 'spinning wheel' to show progress.    
-./scripts/timeout      Give rsh(1) a shorter timeout.  
-./scripts/timeout2     Execute a given command with a timeout.
-./scripts/timeout3     Execute a given command with a timeout.
-./scripts/vtree2       Display a tree printout of dir in 1k blocks.    tree
-./scripts/vtree3       Display a graphical tree printout of dir.       tree
-./scripts/vtree3a      Display a graphical tree printout of dir.       tree
-./scripts/websrv.sh    A web server in bash!   
 ./scripts/xterm_title  Print the contents of the xterm title bar.      
 ./scripts/zprintf      Emulate printf (obsolete since it's now a bash builtin).        
 
@@ -189,11 +101,3 @@ Path       Description     X-Ref
 ./startup-files/Bashrc.bfox    Sample Bourne Again SHell init file (Fox).      
 ./startup-files/README README  
 
-./startup-files/apple  Example Start-up files for Mac OS X.    
-./startup-files/apple/aliases  Sample aliases for Mac OS X.    
-./startup-files/apple/bash.defaults    Sample User preferences file.
-./startup-files/apple/environment      Sample Bourne Again Shell environment file.
-./startup-files/apple/login    Sample login wrapper.
-./startup-files/apple/logout   Sample logout wrapper.
-./startup-files/apple/rc       Sample Bourne Again Shell config file.
-./startup-files/apple/README   README
diff --git a/examples/bash-completion/README b/examples/bash-completion/README
new file mode 100644 (file)
index 0000000..fb5e765
--- /dev/null
@@ -0,0 +1,7 @@
+Master source: https://github.com/scop/bash-completion
+
+This is the latest version of the bash-completion package, which provides
+programmable completion specifications for a large number of commands.
+
+If you are a vendor installing bash or preparing a package containing bash,
+please install the latest version of bash-completion when installing bash.
diff --git a/examples/bash-completion/bash-completion-2.5.tar.xz b/examples/bash-completion/bash-completion-2.5.tar.xz
new file mode 100644 (file)
index 0000000..f5b9079
Binary files /dev/null and b/examples/bash-completion/bash-completion-2.5.tar.xz differ
diff --git a/examples/functions/arrayops.bash b/examples/functions/arrayops.bash
new file mode 100644 (file)
index 0000000..d34353a
--- /dev/null
@@ -0,0 +1,146 @@
+# arrayops.bash --- hide some of the nasty syntax for manipulating bash arrays
+# Author: Noah Friedman <friedman@splode.com>
+# Created: 2016-07-08
+# Public domain
+
+# $Id: arrayops.bash,v 1.3 2016/07/28 15:38:55 friedman Exp $
+
+# Commentary:
+
+# These functions try to tame the syntactic nightmare that is bash array
+# syntax, which makes perl's almost look reasonable.
+#
+# For example the apush function below lets you write:
+#
+#      apush arrayvar newval
+#
+# instead of
+#
+#      ${arrayvar[${#arrayvar[@]}]}=newval
+#
+# Because seriously, you've got to be kidding me.
+
+# These functions avoid the use of local variables as much as possible
+# (especially wherever modification occurs) because those variable names
+# might shadow the array name passed in.  Dynamic scope!
+
+# Code:
+
+#:docstring apush:
+# Usage: apush arrayname val1 {val2 {...}}
+#
+# Appends VAL1 and any remaining arguments to the end of the array
+# ARRAYNAME as new elements.
+#:end docstring:
+apush()
+{
+    eval "$1=(\"\${$1[@]}\" \"\${@:2}\")"
+}
+
+#:docstring apop:
+# Usage: apop arrayname {n}
+#
+# Removes the last element from ARRAYNAME.
+# Optional argument N means remove the last N elements.
+#:end docstring:
+apop()
+{
+    eval "$1=(\"\${$1[@]:0:\${#$1[@]}-${2-1}}\")"
+}
+
+#:docstring aunshift:
+# Usage: aunshift arrayname val1 {val2 {...}}
+#
+# Prepends VAL1 and any remaining arguments to the beginning of the array
+# ARRAYNAME as new elements.  The new elements will appear in the same order
+# as given to this function, rather than inserting them one at a time.
+#
+# For example:
+#
+#      foo=(a b c)
+#      aunshift foo 1 2 3
+#       => foo is now (1 2 3 a b c)
+# but
+#
+#      foo=(a b c)
+#      aunshift foo 1
+#       aunshift foo 2
+#       aunshift foo 3
+#       => foo is now (3 2 1 a b c)
+#
+#:end docstring:
+aunshift()
+{
+    eval "$1=(\"\${@:2}\" \"\${$1[@]}\")"
+}
+
+#:docstring ashift:
+# Usage: ashift arrayname {n}
+#
+# Removes the first element from ARRAYNAME.
+# Optional argument N means remove the first N elements.
+#:end docstring:
+ashift()
+{
+    eval "$1=(\"\${$1[@]: -\${#$1[@]}+${2-1}}\")"
+}
+
+#:docstring aset:
+# Usage: aset arrayname idx newval
+#
+# Assigns ARRAYNAME[IDX]=NEWVAL
+#:end docstring:
+aset()
+{
+    eval "$1[\$2]=${@:3}"
+}
+
+#:docstring aref:
+# Usage: aref arrayname idx {idx2 {...}}
+#
+# Echoes the value of ARRAYNAME at index IDX to stdout.
+# If more than one IDX is specified, each one is echoed.
+#
+# Unfortunately bash functions cannot return arbitrary values in the usual way.
+#:end docstring:
+aref()
+{
+    eval local "v=(\"\${$1[@]}\")"
+    local x
+    for x in ${@:2} ; do echo "${v[$x]}"; done
+}
+
+#:docstring aref:
+# Usage: alen arrayname
+#
+# Echoes the length of the number of elements in ARRAYNAME.
+#
+# It also returns number as a numeric value, but return values are limited
+# by a maximum of 255 so don't rely on this unless you know your arrays are
+# relatively small.
+#:end docstring:
+alen()
+{
+    eval echo   "\${#$1[@]}"
+    eval return "\${#$1[@]}"
+}
+
+#:docstring anreverse:
+# Usage: anreverse arrayname
+#
+# Reverse the order of the elements in ARRAYNAME.
+# The array variable is altered by this operation.
+#:end docstring:
+anreverse()
+{
+    eval set $1 "\"\${$1[@]}\""
+    eval unset $1
+    while [ $# -gt 1 ]; do
+        eval "$1=(\"$2\" \"\${$1[@]}\")"
+        set $1 "${@:3}"
+    done
+}
+
+#provide arrayops
+
+# arrayops.bash ends here
index a563a77910e17b787ef1e1abe4e45bf95709074c..cb3a673ec03ea97d7544104b9ab88af5c88e389e 100644 (file)
@@ -22,7 +22,7 @@
 #
 # Declare a function ($1) to be autoloaded from a file ($2) when it is first
 # called.  This defines a `temporary' function that will `.' the file 
-# containg the real function definition, then execute that new definition with
+# containing the real function definition, then execute that new definition with
 # the arguments given to this `fake' function.  The autoload function defined
 # by the file and the file itself *must* be named identically.
 #
diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4
new file mode 100644 (file)
index 0000000..a172e61
--- /dev/null
@@ -0,0 +1,556 @@
+## -*- sh -*-
+
+# The psuedo-ksh autoloader.
+
+# How to use:
+# o One function per file.
+# o File and function name match exactly.
+# o File is located in a directory that is in FPATH.
+# o This script (autoload) must be sourced in as early as possible. This
+#   implies that any code in this script should NOT rely on any library of local
+#   or self-defined functions having already been loaded.
+# o autoload must be called for each function before the function can be used. If
+#   autoloads are in directories where there are nothing but autoloads, then
+#   'autoload /path/to/files/*' suffices (but see options -a and -f).
+# o The call must be made in the current environment, not a subshell.
+# o The command line suffices as "current environment". If you have autoload
+#   calls in a script, that script must be dotted into the process.
+
+# The first cut of this was by Bill Trost, trost@reed.bitnet.
+# The second cut came from Chet Ramey, chet@ins.CWRU.Edu
+# The third cut came from Mark Kennedy, mtk@ny.ubs.com.  1998/08/25
+# The fourth cut came from Matthew Persico, matthew.persico@gmail.com 2017/August
+
+autoload_calc_shimsize ()
+{
+    echo $((AUTOLOAD_SHIM_OVERHEAD + 3 * ${#1}))
+}
+
+_autoload_split_fpath ()
+{
+    (IFS=':'; set -- ${FPATH}; echo "$@")
+}
+
+_aload()
+{
+    local opt OPTIND
+    local doexport=0
+    local doreload=0
+    local doverbose=0
+    local doevalshim=0
+    local loadthese
+    local optimize=0
+    local loaded=0
+    local exported=0
+    local optimized=0
+    local summary=0
+    local dofpath=0
+    while getopts xrvla:oyf opt; do
+        case $opt in
+            x) doexport=1;;
+            r) doreload=1;;
+            v) doverbose=1;;
+            l) doevalshim=1;;
+            a) loadthese=$(find $OPTARG -maxdepth 1 -type f -printf '%f ');;
+            o) optimize=1;;
+            y) summary=1;;
+            f) loadthese=$(find $(_autoload_split_fpath) -maxdepth 1 -type f -printf '%f ');;
+            *) echo "_aload: usage: _aload [-xrvlyf] [-a dir] [function ...]" >&2; return;;
+        esac
+    done
+
+    shift $(($OPTIND-1))
+
+    [ -z "$loadthese" ] && loadthese="$@"
+
+    local func
+    for func in $loadthese; do
+        local exists_fn
+        exists_fn=$(declare -F $func)
+        if [ -n "$exists_fn" ] && ((doreload==0)) && ((doevalshim==0))
+        then
+            if ((doverbose))
+            then
+                echo "autoload: function '$func' already exists"
+            fi
+        else
+            local andevaled=''
+            local andexported=''
+            local evalstat=0
+            local doshim=1
+            local funcfile
+            funcfile=$(_autoload_resolve $func)
+            if [[ $funcfile ]] ; then
+                ## The file was found for $func. Process it.
+
+                if ((optimize)); then
+                    ## For the first function loaded, we will not know
+                    ## AUTOLOAD_SHIM_OVERHEAD. We can only calculate it after
+                    ## we have loaded one function.
+                    if [[ $AUTOLOAD_SHIM_OVERHEAD ]]; then
+                        local size=$(wc -c $funcfile| sed 's/ .*//')
+                        local shimsize=$(autoload_calc_shimsize $func)
+                        if (( size <= shimsize)); then
+                            doshim=0
+                            andevaled=', optimized'
+                            ((optimized+=1))
+                        fi
+                    fi
+                fi
+
+                if ((doevalshim)); then
+                    doshim=0
+                    andevaled=', evaled'
+                fi
+
+                ## 'brand' as in branding a cow with a mark. We add a local
+                ## variable to each function we autoload so that we can tell
+                ## later on it is an autoloaded function without having to
+                ## maintain some bash array or hash that cannot be passed to
+                ## and used by subshells.
+                local brandtext
+                brandtext="eval \"\$(type $func | sed -e 1d -e 4ilocal\\ AUTOLOADED=\'$func\')\""
+                if ((doshim)); then
+                    ## Don't bother trying to save space by shoving all the
+                    ## eval text below onto one unreadable line; new lines will
+                    ## be added at your semicolons and any indentation below
+                    ## seems to be ignored anyway if you export the function;
+                    ## look at its BASH_FUNCTION representation.
+                    eval $func '()
+                    {
+                    local IS_SHIM="$func"
+                    local file=$(_autoload_resolve '$func')
+                    if [[ $file ]]
+                    then
+                        . $file
+                        '$brandtext'
+                        '$func' "$@"
+                        return $?
+                    else
+                        return 1;
+                    fi
+                    }'
+                else
+                    . $funcfile
+                    eval "$brandtext"
+                fi
+                evalstat=$?
+                if((evalstat==0))
+                then
+                    ((loaded+=1))
+                    ((doexport)) && export -f $func && andexported=', exported' && ((exported+=1))
+                    ((doverbose)) && echo "$func autoloaded${andexported}${andevaled}"
+                    if [[ ! $AUTOLOAD_SHIM_OVERHEAD ]] && ((doshim)); then
+                        ## ...we have just loaded the first function shim into
+                        ## memory. Let's calc the AUTOLOAD_SHIM_OVERHEAD size
+                        ## to use going forward. In theory, we could check
+                        ## again here to see if we should optimize and source
+                        ## in this function, now that we now the
+                        ## AUTOLOAD_SHIM_OVERHEAD. In practice, it's not worth
+                        ## duping that code or creating a function to do so for
+                        ## one function.
+                        AUTOLOAD_SHIM_OVERHEAD=$(type $func | grep -v -E "^$1 is a function" | sed "s/$func//g"| wc -c)
+                        export AUTOLOAD_SHIM_OVERHEAD
+                    fi
+                else
+                    echo "$func failed to load" >&2
+                fi
+            fi
+        fi
+    done
+    ((summary)) && echo "autoload: loaded:$loaded exported:$exported optimized:$optimized overhead:$AUTOLOAD_SHIM_OVERHEAD bytes"
+}
+
+_autoload_dump()
+{
+    local opt OPTIND
+    local opt_p=''
+    local opt_s=''
+    while getopts ps opt
+    do
+        case $opt in
+            p ) opt_p=1;;
+            s ) opt_s=1;;
+        esac
+    done
+
+    shift $(($OPTIND-1))
+
+    local exported=''
+    local executed=''
+    local func
+    for func in $(declare | grep -E 'local\\{0,1} AUTOLOADED' | sed -e "s/.*AUTOLOADED=//" -e 's/\\//g' -e 's/[");]//g' -e "s/'//g")
+    do
+        if [ -n "$opt_p" ]; then echo -n "autoload "; fi
+        if [ -n "$opt_s" ]
+        then
+            exported=$(declare -F | grep -E "${func}$" | sed 's/declare -f\(x\{0,1\}\).*/\1/')
+            [ "$exported" = 'x' ] && exported=' exported' || exported=' not exported'
+            executed=$(type $func | grep 'local IS_SHIM')
+            [ -z "$executed" ] && executed=' executed' || executed=' not executed'
+        fi
+        echo "${func}${exported}${executed}"
+    done
+}
+
+_autoload_resolve()
+{
+    if [[ ! "$FPATH" ]]; then
+        echo "autoload: FPATH not set or null" >&2
+        return
+    fi
+
+    local p # for 'path'. The $() commands in the for loop split the FPATH
+            # string into its constituents so that each one may be processed.
+
+    for p in $( _autoload_split_fpath ); do
+        p=${p:-.}
+        if [ -f $p/$1 ]; then echo $p/$1; return; fi
+    done
+
+    echo "autoload: $1: function source file not found" >&2
+}
+
+_autoload_edit()
+{
+    [ -z "$EDITOR" ] && echo "Error: no EDITOR defined" && return 1
+    local toedit
+    local func
+    for func in "$@"
+    do
+        local file=$(_autoload_resolve $func)
+        if [[ $file ]]
+        then
+            toedit="$toedit $file"
+        else
+            echo "$funcname not found in FPATH funcfile. Skipping."
+        fi
+    done
+
+    [ -z "$toedit" ] && return 1
+
+    local timemarker=$(mktemp)
+
+    $EDITOR $toedit
+
+    local i
+    for i in $toedit
+    do
+        if [ $i -nt $timemarker ]
+        then
+            local f=$(basename $i)
+            echo Reloading $f
+            autoload -r $f
+        fi
+    done
+}
+
+_autoload_page()
+{
+    [ -z "$PAGER" ] && echo "Error: no PAGER defined" && return 1
+    local topage
+    local func
+    for func in "$@"
+    do
+        local file=$(_autoload_resolve $func)
+        if [[ $file ]]
+        then
+            topage="$topage $file"
+        else
+            echo "$funcname not found in FPATH funcfile. Skipping."
+        fi
+    done
+
+    [ -z "$topage" ] && return 1
+
+    $PAGER $topage
+}
+
+_autoload_remove()
+{
+    unset -f "$@"
+}
+
+_autoload_help()
+{
+    cat <<EOH
+NAME
+        autoload
+
+SYNOPSIS
+        autoload [-ps]
+        autoload [-xuremloyv] [function ...]
+        autoload -a directory [-oyv]
+        autoload -f [-oyv]
+        autoload [-h]
+
+        autoreload [function ...]
+
+DESCRIPTION
+
+        An implementation of the 'autoload' functionality built into other
+        shells, of which 'ksh' is the most prominent.  It allows for a keeping
+        the process environment small by loading small 'shim' functions into
+        memory that will, on first call, load the full text of the given
+        function and run it. Subsequent calls to the function just run the
+        function.
+
+        'autoreload' is a synonym for 'autoload -r'. See below.
+
+USAGE
+
+        o Each function to be autoloaded should be defined in a single file,
+          named exactly the same as the function.
+
+        o In order to avoid side effects, do NOT put code other than the
+          function definition in the file. Unless of course you want to do some
+          one-time initialization. But beware that if you reload the function
+          for any reason, you will rerun the initialization code. Make sure
+          your initialization is re-entrant. Or, better yet,
+
+          *** do NOT put code other than the function definition in the file ***
+
+        o These function definition files should be placed in a directory that
+          is in the FPATH environment variable. Subdirectories are NOT scanned.
+
+        o The autoload script should be sourced into the current process as
+          early as possible in process start up. See NOTES below for
+          suggestions.
+
+        o The calls to the autoload function must be made in the current
+          process. If your calls are in their own script, that script must be
+          sourced in. Command line invocations are also sufficient. (But see
+          '-l' below.)
+
+        o The first time the function is called, the shim function that was
+          created by the 'autoload' call is what is executed. This function
+          then goes and finds the appropriate file in FPATH, sources it in and
+          then calls the actual function with any arguments you just passed in
+          to the shim function. Subsequent calls just run the function.
+
+OPTIONS
+
+        -a Autoload (a)ll the functions found in the given directory.
+
+        -f Autoload all the functions found in all the directories on the
+           FPATH.
+
+        -p Print all the autoloaded functions.
+
+        -s Print all the autoloaded functions and add their export status.
+
+        -x Export the specified functions to the environment for use in
+           subshells.
+
+        -u Unset the function, so it can be reloaded.
+
+        -r Reload the shims of the specified functions, even if the functions
+           have been already been executed.  This will allow you to modify the
+           functions' source and have the new version executed next time the
+           function is called.
+
+           It would be very easy to modify a function's script, run the
+           function and scratch your head for a long time trying to figure out
+           why your changes are not being executed. That's why we provide the
+           '-e' flag described below for modifications.
+
+           Reloads, of course, only apply in the context of the current session
+           and any future subshell you start from the current session. Existing
+           sessions will need to have the same 'autoload -r' command run in
+           them.
+
+        -e Find the scripts in which the specified functions are defined and
+           start up \$EDITOR on those scripts. Reload the ones that were
+           modified when you exit \$EDITOR. (Note: If you use 'autoload -e foo'
+           to edit function 'foo', and then in your editor you separately load
+           up function 'bar', 'autoload' has no way of knowing that you edited
+           'bar' and will NOT reload 'bar' for you.)
+
+           Reloads, of course, only apply in the context of the current session
+           and any future subshell you start from the current session. Existing
+           sessions will need to have the same 'autoload -r' command run in
+           them.
+
+        -m Find the scripts in which the specified functions are defined and
+           run \$PAGER on them ('m' is for 'more', because 'p' (page) and 'l'
+           (load) are already used as options in 'autoload').
+
+        -l When autoloading a function, eval the shim immediately in order to
+           load the true function code. See "Using '-l'" in the NOTES below for
+           details.
+
+        -o Optimize. When autoloading, take the time to execute
+
+               'theCharCount=\$(wc -c \$theFuncFile)'
+
+           for each funcion and
+
+                if \$theCharCount < \$AUTOLOAD_SHIM_OVERHEAD
+
+           don't shim it, just eval directly.
+
+        -y Summar(y). Print the number of loaded, exported and optimized
+           functions.
+
+        -v Turns up the chattiness.
+
+NOTES
+
+        o Calling 'autoload' on a function that already exists (either shimmed
+          or expanded) silently ignores the request to load the shim unless it
+          has been previously removed (-u) or you force the reload (-r).
+
+        o Changing and reloading a function that has been exported does not
+          require it be re-exported; the modifications will appear in
+          subsequent subshells.
+
+        o Using '-1'
+
+          If you are running under set -x and/or set -v, you may see that the
+          shim does not appear to "work"; instead of seeing the shim first and
+          the real code subsequently, you may see the shim evaluated multiple
+          times.
+
+          This may not be an error; review your code. What is most likely
+          happening is that you are calling the function in subshells via
+          backticks or $(), or in a script that is not being sourced into the
+          current environment. If you have not previously called the function
+          in question at your command line or in a script that was sourced into
+          the current envirnoment, then the various subshells are going to
+          encounter the shim and replace with the real code before executing.
+
+          Remember, however, that environment modifications that occur in a
+          subshell are NOT propagated back to the calling shell or over to any
+          sibling shells. So, if you call an autoloaded function in a very
+          tight loop of very many subshells, you may want to make an 'autoload
+          -l' call before you start your loop. '-l' will instruct 'autoload' to
+          bypass the shim creation and just source in the function's file
+          directly. For a few calls, the overhead of repeatedly running the
+          shim is not expensive, but in a tight loop, it might be. Caveat
+          Programer.
+
+        o Although the number of functions in the environment does not change
+          by using 'autoload', the amount of memory they take up can be greatly
+          reduced, depending on the size of your functions. If you have a lot
+          of small functions, then it is possible that the shim text will be
+          larger than your actual functions, rendering the memory savings moot.
+
+          'small' in this case can be determined by calling the function
+          'autoload_calc_shimsize' with the name of the function to determine
+          its shim size.
+
+        o In order to support the -p and -s options, we need a way to determine
+          if a function 'func' has been autoloaded or if it was loaded
+          diredctly. In order to do that, we modify the function's code by
+          adding the text
+
+              local  AUTOLOADED='func';
+
+          to the shim and to the actual function text, just after the opening
+          brace. Then supporting -p and -s is just a matter of grepping through
+          all the function text in memory. Even though grepping through the
+          environment may not be the most efficient way to support this, it is
+          the simplest to implement for -p and -s operations that are not
+          heavily used.
+
+          As a consquence of this (and other reasons), the AUTOLOAD* namespace
+          is reserved for autoloading. Make sure you check any functions that
+          you bring under autoload for use of variables or functions that start
+          with AUTOLOAD and change them.
+
+        o The easiest way to load shims for all functions on the FPATH is to run
+
+               autoload -f -x
+
+          in the profile that gets run for login shells.
+
+          When called in the profile of a login shell where no definitions
+          exist, -f will load all functions it can find on FPATH and -x will
+          export all of those functions to be available in subshells when this
+          is called in a login shell. Using this option will relieve you of the
+          need to call 'autoload' after Every Single Function Definition, nor
+          will you need to call it in subshells.
+
+          The only thing left to do is to load up the autoload function itself
+          and its helper functions. That needs to happen in your profile:
+
+            export FPATH=~/functions       # or wherever you stash them
+            if [ -z $(declare -F autoload) ]
+            then
+              . ~/bin/autoload             # or wherever you've put it
+            fi
+
+          The 'if' statement is used to make sure we don't reload autoload
+          needlessly. Sourcing in the autoload script loads the 'autoload'
+          function and all of its support functions. Additionally, we export
+          all of these functions so that they are available in subshells; you
+          do not have to re-source the autoload file in '.bashrc'.
+
+        o Even with all of these shenanigans, you will find cases where no
+          matter how hard you try, your autoloaded functions will be
+          unavailable to you, even if you run 'autoload -x -f'. The typical
+          condition for this is starting up not a subshell, but a brand new
+          DIFFERENT shell. And the typical example of this is git extentions.
+
+          At the time of this writing, git extentions work by taking a command
+          'git foo' and looking for a file 'git-foo' on the path. 'git' then
+          executes 'git-foo' in a new shell - it executes your command in
+          /bin/sh. That's not a subshell of your process. It will not get your
+          exported shell functions. Ballgame over.
+
+          If you find that you want your functions to be available in such
+          circumstances, convert them back to plain old scripts, make sure they
+          are 'sh' compliant and take the read/parse hit every time they are
+          run.
+
+EOH
+}
+
+autoload()
+{
+    if (( $# == 0 )) ; then _autoload_dump; return; fi
+
+    local opt OPTIND OPTARG
+    local passthru
+    local dumpopt
+    while getopts psuema:yxrvlohf opt
+    do
+        case $opt in
+            p|s) dumpopt="$dumpopt -${opt}";;
+            u) shift $((OPTIND-1)); _autoload_remove "$@"; return;;
+            e) shift $((OPTIND-1)); _autoload_edit "$@"; return;;
+            m) shift $((OPTIND-1)); _autoload_page "$@"; return;;
+            x|r|v|l|y|f|o) passthru="$passthru -$opt";;
+            a) passthru="$passthru -$opt $OPTARG";;
+            h) _autoload_help; return;;
+            *) echo "autoload: usage: autoload [-puUx] [function ...]" >&2; return;;
+        esac
+    done
+
+    shift $(($OPTIND-1))
+    if [ -n "$dumpopt" ]
+    then
+        _autoload_dump $dumpopt
+    else
+        _aload $passthru "$@"
+    fi
+}
+
+autoreload ()
+{
+    autoload -r "$@"
+}
+
+## When we source in autoload, we export (but NOT autoload) the autoload
+## functions so that they are available in subshells and you don't have to
+## source in the autoload file in subshells.
+export -f _aload \
+       _autoload_dump \
+       _autoload_edit \
+       _autoload_help \
+       _autoload_page \
+       _autoload_resolve \
+       _autoload_split_fpath \
+       autoload \
+       autoload_calc_shimsize \
+       autoreload
diff --git a/examples/functions/autoload.v4.t b/examples/functions/autoload.v4.t
new file mode 100644 (file)
index 0000000..6d35d14
--- /dev/null
@@ -0,0 +1,184 @@
+#!/bin/bash
+
+workdir=$(mktemp -d)
+
+cp autoload $workdir
+
+cd $workdir
+pwd
+
+. ./autoload
+
+funclist='ALTEST_func1 ALTEST_funcexport ALTEST_funcu'
+for funcname in $funclist; do
+    cat <<EOFFUNC > $funcname
+$funcname ()
+{
+echo this is $funcname
+
+}
+EOFFUNC
+
+done
+
+export FPATH=$workdir
+
+autoload ALTEST_func1 ALTEST_funcu
+autoload -x ALTEST_funcexport
+
+ok=0
+failed=0
+
+for funcname in $funclist; do
+
+    testname="$funcname loaded"
+    got=$(type $funcname 2>&1)
+    if [[ $got =~ "$funcname: not found" ]]; then
+        echo "## Failed $testname"
+        ((failed+=1))
+    else
+        echo "ok - $testname"
+        ((ok+=1))
+
+        testname="$funcname is a shim"
+        if [[ ! $got =~ "IS_SHIM" ]]; then
+            echo "## Failed $testname"
+            ((failed+=1))
+        else
+            echo "ok - $testname"
+            ((ok+=1))
+
+            testname="$funcname shim executed"
+            $funcname > /dev/null
+            got=$(type $funcname 2>&1)
+            if [[ $got =~ "IS_SHIM" ]]; then
+                echo "## Failed $testname"
+                ((failed+=1))
+            else
+                echo "ok - $testname"
+                ((ok+=1))
+            fi
+        fi
+    fi
+done
+
+funcname=ALTEST_func1
+testname="$funcname shim reloaded"
+autoload -r $funcname
+got=$(type $funcname 2>&1)
+if [[ ! $got =~ "IS_SHIM" ]]; then
+    echo "## Failed $testname"
+    ((failed+=1))
+else
+    echo "ok - $testname"
+    ((ok+=1))
+fi
+
+funcname=ALTEST_funcu
+testname="$funcname shim unloaded"
+autoload -u $funcname
+got=$(type $funcname 2>&1)
+if [[ ! $got =~ "$funcname: not found" ]]; then
+    echo "## Failed $testname"
+    ((failed+=1))
+else
+    echo "ok - $testname"
+    ((ok+=1))
+fi
+
+testname="autoload -p"
+got=$(autoload -p | grep ALTEST)
+if [[ ! $got =~ "autoload ALTEST_func1" ]] || \
+       [[ ! $got =~ "autoload ALTEST_funcexport" ]] ; then
+echo "## Failed $testname"
+    ((failed+=1))
+else
+    echo "ok - $testname"
+    ((ok+=1))
+fi
+
+testname="autoload -s"
+echo "Executing $testname, could take a long time..."
+got=$(autoload -s | grep ALTEST)
+if [[ ! $got =~ "ALTEST_func1 not exported not executed" ]] || \
+       [[ ! $got =~ "ALTEST_funcexport exported executed" ]] ; then
+    echo "## Failed $testname"
+    echo "##    got: $got"
+    ((failed+=1))
+else
+    echo "ok - $testname"
+    ((ok+=1))
+fi
+
+testname="autoload -r -a $FPATH"
+autoload -r -a $FPATH
+localfailed=0
+localok=0
+for funcname in $funclist; do
+    got=$(type $funcname 2>&1)
+    if [[ $got =~ "$funcname: not found" ]]; then
+        echo "## Failed $testname - $funcname"
+        ((localfailed+=1))
+    else
+        ((localok+=1))
+        if [[ ! $got =~ "IS_SHIM" ]]; then
+            ((localfailed+=1))
+        else
+            ((localok+=1))
+        fi
+    fi
+done
+if ((localfailed==0)); then
+    echo "ok - $testname"
+    ((ok+=1))
+else
+    ((failed+=1))
+fi
+
+testname="autoload -u $funclist"
+autoload -u $funclist
+localfailed=0
+localok=0
+for funcname in $funclist; do
+    got=$(type $funcname 2>&1)
+    if [[ ! $got =~ "$funcname: not found" ]]; then
+        echo "## Failed $testname - $funcname"
+        ((localfailed+=1))
+    else
+        ((localok+=1))
+    fi
+done
+if ((localfailed==0)); then
+    echo "ok - $testname"
+    ((ok+=1))
+else
+    ((failed+=1))
+fi
+
+testname="autoload -r -f"
+autoload -r -f
+localfailed=0
+localok=0
+for funcname in $funclist; do
+    got=$(type $funcname 2>&1)
+    if [[ $got =~ "$funcname: not found" ]]; then
+        echo "## Failed $testname - $funcname"
+        ((localfailed+=1))
+    else
+        ((localok+=1))
+        if [[ ! $got =~ "IS_SHIM" ]]; then
+            ((localfailed+=1))
+        else
+            ((localok+=1))
+        fi
+    fi
+done
+if ((localfailed==0)); then
+    echo "ok - $testname"
+    ((ok+=1))
+else
+    ((failed+=1))
+fi
+
+echo $ok passed, $failed failed
+exit $failed
index ec305cdafba03b551d495387b8c5fbe5ce5326be..cc3d3a7f3b49757adf7afede72a9873d18a9e37d 100644 (file)
@@ -100,10 +100,10 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \
        $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $<
 
 
-ALLPROG = print truefalse sleep finfo logname basename dirname \
+ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \
          tty pathchk tee head mkdir rmdir printenv id whoami \
-         uname sync push ln unlink realpath strftime mypid setpgid
-OTHERPROG = necho hello cat pushd
+         uname sync push ln unlink realpath strftime mypid setpgid seq
+OTHERPROG = necho hello cat pushd stat rm
 
 all:   $(SHOBJ_STATUS)
 
@@ -142,6 +142,15 @@ finfo:     finfo.o
 cat:   cat.o
        $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cat.o $(SHOBJ_LIBS)
 
+rm:    rm.o
+       $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rm.o $(SHOBJ_LIBS)
+
+fdflags:       fdflags.o
+       $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ fdflags.o $(SHOBJ_LIBS)
+
+seq:   seq.o
+       $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ seq.o $(SHOBJ_LIBS)
+
 logname:       logname.o
        $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ logname.o $(SHOBJ_LIBS)
 
@@ -202,10 +211,12 @@ strftime: strftime.o
 mypid: mypid.o
        $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS)
 
-
 setpgid:       setpgid.o
        $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ setpgid.o $(SHOBJ_LIBS)
 
+stat:  stat.o
+       $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS)
+
 # pushd is a special case.  We use the same source that the builtin version
 # uses, with special compilation options.
 #
@@ -236,6 +247,7 @@ installdirs:
 
 install-dev:   installdirs
        @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc
+       @$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h
        @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers)
 
 install-supported:     all installdirs install-dev
@@ -246,7 +258,7 @@ install-supported:  all installdirs install-dev
        done
 
 uninstall-dev:
-       -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc
+       -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h
        -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers)
 
 uninstall-supported:   uninstall-dev
@@ -283,3 +295,6 @@ mkdir.o: mkdir.c
 realpath.o: realpath.c
 strftime.o: strftime.c
 setpgid.o: setpgid.c
+stat.o: stat.c
+fdflags.o: fdflags.c
+seq.o: seq.c
index 2eae9cc667a1f32c0014f122dd39b0fcdb296251..f9bcfac648773379fddb80fd74ce2b54101d94c6 100644 (file)
@@ -32,28 +32,39 @@ the canonical example.  There is no real `builtin writers' programming
 guide'.  The file template.c provides a template to use for creating
 new loadable builtins.
 
+The file "Makefile.inc" is created using the same values that configure
+writes into Makefile.in, and is installed in the same directory as the
+rest of the example builtins. It's intended to be a start at something
+that can be modified or included to help you build your own loadables
+without having to search for the right CFLAGS and LDFLAGS.
+
 basename.c     Return non-directory portion of pathname.
 cat.c          cat(1) replacement with no options - the way cat was intended.
 dirname.c      Return directory portion of pathname.
+fdflags.c      Change the flag associated with one of bash's open file desriptors.
 finfo.c                Print file info.
 head.c         Copy first part of files.
 hello.c                Obligatory "Hello World" / sample loadable.
 id.c           POSIX.2 user identity.
 ln.c           Make links.
-loadables.h    Start at a file loadable builtins can include for shell definitions
+loadables.h    File loadable builtins can include for shell definitions.
 logname.c      Print login name of current user.
 Makefile.in    Simple makefile for the sample loadable builtins.
+Makefile.inc.in        Sample makefile to use for loadable builtin development.
 mkdir.c                Make directories.
-mypid.c                Add $MYPID variable, demonstrate use of unload hook function
+mypid.c                Add $MYPID variable, demonstrate use of unload hook functio.n
 necho.c                echo without options or argument interpretation.
 pathchk.c      Check pathnames for validity and portability.
 print.c                Loadable ksh-93 style print builtin.
 printenv.c     Minimal builtin clone of BSD printenv(1).
 push.c         Anyone remember TOPS-20?
-README         README
 realpath.c     Canonicalize pathnames, resolving symlinks.
+rm.c           Remove files and directories.
 rmdir.c                Remove directory.
+seq.c          Print a sequence of decimal or floating point numbers.
+setpgid.c      Set a process's pgrp; example of how to wrap a system call.
 sleep.c                sleep for fractions of a second.
+stat.c         populate an associative array with information about a file
 strftime.c     Loadable builtin interface to strftime(3).
 sync.c         Sync the disks by forcing pending filesystem writes to complete.
 tee.c          Duplicate standard input.
index 3ca1844182be98e13964b28b6c37a19ef91e5eaa..0734322d135b7b1e094988a7e36db00b0408a950 100644 (file)
@@ -30,6 +30,7 @@
 #include "builtins.h"
 #include "shell.h"
 #include "common.h"
+#include "bashgetopt.h"
 
 int
 basename_builtin (list)
@@ -46,6 +47,7 @@ basename_builtin (list)
 
   if (no_options (list))
     return (EX_USAGE);
+  list = loptend;
 
   string = list->word->word;
   suffix = (char *)NULL;
index 1ce2e2dc48a8464d3d161afecd35971533ed2481..be99c4cd997ae09ac115da6b38cf49ed1da808ba 100644 (file)
@@ -56,6 +56,7 @@ int   fd;
        return 0;
 }
 
+int
 cat_main (argc, argv)
 int    argc;
 char   **argv;
@@ -88,6 +89,7 @@ char  **argv;
        return (r);
 }
 
+int
 cat_builtin(list)
 WORD_LIST *list;
 {
index 69019cbc37f6703d15211e6bb42790b5cac329ac..d802ca77c116464c71661a83e380e21bba1e7157 100644 (file)
@@ -30,6 +30,7 @@
 #include "builtins.h"
 #include "shell.h"
 #include "common.h"
+#include "bashgetopt.h"
 
 int
 dirname_builtin (list)
@@ -38,15 +39,16 @@ dirname_builtin (list)
   int slen;
   char *string;
 
+  if (no_options (list))
+    return (EX_USAGE);
+  list = loptend;
+
   if (list == 0 || list->next)
     {
       builtin_usage ();
       return (EX_USAGE);
     }
 
-  if (no_options (list))
-    return (EX_USAGE);
-
   string = list->word->word;
   slen = strlen (string);
 
diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c
new file mode 100644 (file)
index 0000000..f309466
--- /dev/null
@@ -0,0 +1,336 @@
+/* Loadable builtin to get and set file descriptor flags. */
+
+/* See Makefile for compilation details. */
+
+/*
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash.
+   Bash is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+#include <fcntl.h>
+#include <errno.h>
+#include "bashansi.h"
+#include <stdio.h>
+
+#include "loadables.h"
+
+static const struct
+{
+  const char *name;
+  int value;
+} file_flags[] =
+{
+#ifdef O_APPEND
+  { "append",  O_APPEND        },
+#endif
+#ifdef O_ASYNC
+  { "async",   O_ASYNC         },
+#endif
+#ifdef O_SYNC
+  { "sync",    O_SYNC          },
+#endif
+#ifdef O_NONBLOCK
+  { "nonblock",        O_NONBLOCK      },
+#endif
+#ifdef O_FSYNC
+  { "fsync",   O_FSYNC         },
+#endif
+#ifdef O_DSYNC
+  { "dsync",   O_DSYNC         },
+#endif
+#ifdef O_RSYNC
+  { "rsync",   O_RSYNC         },
+#endif
+#ifdef O_ALT_IO
+  { "altio",   O_ALT_IO        },
+#endif
+#ifdef O_DIRECT
+  { "direct",  O_DIRECT        },
+#endif
+#ifdef O_NOATIME
+  { "noatime", O_NOATIME       },
+#endif
+#ifdef O_NOSIGPIPE
+  { "nosigpipe",       O_NOSIGPIPE     },
+#endif
+#ifdef O_CLOEXEC
+  { "cloexec", O_CLOEXEC       },
+#endif
+};
+
+#define N_FLAGS                (sizeof (file_flags) / sizeof (file_flags[0]))
+
+#ifndef errno
+extern int errno;
+#endif
+
+/* FIX THIS */
+static int
+getallflags ()
+{
+  int i, allflags;
+  
+  for (i = allflags = 0; i < N_FLAGS; i++)
+    allflags |= file_flags[i].value;
+  return allflags;
+}
+
+static int
+getflags(int fd, int p)
+{
+  int c, f;
+  int allflags;
+
+  if ((c = fcntl(fd, F_GETFD)) == -1)
+    {
+      if (p)
+       builtin_error("can't get status for fd %d: %s", fd, strerror(errno));
+      return -1;
+    }
+    
+  if ((f = fcntl(fd, F_GETFL)) == -1)
+    {
+      if (p)
+       builtin_error("Can't get flags for fd %d: %s", fd, strerror(errno));
+      return -1;
+    }
+
+  if (c)
+    f |= O_CLOEXEC;
+
+  return f & getallflags();
+}
+
+static void
+printone(int fd, int p, int verbose)
+{
+  int f;
+  size_t i;
+
+  if ((f = getflags(fd, p)) == -1)
+    return;
+
+  printf ("%d:", fd);
+
+  for (i = 0; i < N_FLAGS; i++)
+    {
+      if (f & file_flags[i].value)
+       {
+         printf ("%s%s", verbose ? "+" : "", file_flags[i].name);
+         f &= ~file_flags[i].value;
+       }
+      else if (verbose)
+       printf ( "-%s", file_flags[i].name);
+      else
+       continue;
+
+      if (f || (verbose && i != N_FLAGS - 1))
+       putchar (',');
+    }
+  printf ("\n");
+}
+
+static int
+parseflags(char *s, int *p, int *n)
+{
+  int f, *v;
+  size_t i;
+
+  f = 0;
+  *p = *n = 0;
+
+  for (s = strtok(s, ","); s; s = strtok(NULL, ","))
+    {
+      switch (*s)
+        {
+       case '+':
+         v = p;
+         s++;
+         break;
+       case '-':
+         v = n;
+         s++;
+         break;
+       default:
+         v = &f;
+         break;
+       }
+                       
+      for (i = 0; i < N_FLAGS; i++)
+       if (strcmp(s, file_flags[i].name) == 0)
+         {
+           *v |= file_flags[i].value;
+           break;
+         }
+      if (i == N_FLAGS)
+       builtin_error("invalid flag `%s'", s);
+    }
+
+  return f;
+}
+
+static void
+setone(int fd, char *v, int verbose)
+{
+  int f, n, pos, neg, cloexec;
+
+  f = getflags(fd, 1);
+  if (f == -1)
+    return;
+
+  parseflags(v, &pos, &neg);
+
+  cloexec = -1;
+  if ((pos & O_CLOEXEC) && (f & O_CLOEXEC) == 0)
+    cloexec = FD_CLOEXEC;
+  if ((neg & O_CLOEXEC) && (f & O_CLOEXEC))
+    cloexec = 0;
+  if (cloexec != -1 && fcntl(fd, F_SETFD, cloexec) == -1)
+    builtin_error("can't set status for fd %d: %s", fd, strerror(errno));
+
+  pos &= ~O_CLOEXEC;
+  neg &= ~O_CLOEXEC;
+  f &= ~O_CLOEXEC;
+
+  n = f;
+  n |= pos;
+  n &= ~neg;
+
+  if (n != f && fcntl(fd, F_SETFL, n) == -1)
+    builtin_error("can't set flags for fd %d: %s", fd, strerror(errno));
+}
+
+static int
+getmaxfd ()
+{
+  int maxfd, ignore;
+
+#ifdef F_MAXFD
+  maxfd = fcntl (0, F_MAXFD);
+  if (maxfd > 0)
+    return maxfd;
+#endif
+
+  maxfd = getdtablesize ();
+  if (maxfd <= 0)
+    maxfd = HIGH_FD_MAX;
+  for (maxfd--; maxfd > 0; maxfd--)
+    if (fcntl (maxfd, F_GETFD, &ignore) != -1)
+      break;
+
+  return maxfd;
+}
+
+int
+fdflags_builtin (WORD_LIST *list)
+{
+  int opt, maxfd, i, num, verbose, setflag;
+  char *setspec;
+  WORD_LIST *l;
+  intmax_t inum;
+
+  setflag = verbose = 0;
+  reset_internal_getopt ();
+  while ((opt = internal_getopt (list, "s:v")) != -1)
+    {
+      switch (opt)
+       {
+       case 's':
+         setflag = 1;
+         setspec = list_optarg;
+         break;
+       case 'v':
+         verbose = 1;
+         break;
+       CASE_HELPOPT;
+       default:
+         builtin_usage ();
+         return (EX_USAGE);
+       }
+       
+    }
+  list = loptend;
+
+  /* Maybe we could provide some default here, but we don't yet. */
+  if (list == 0 && setflag)
+    return (EXECUTION_SUCCESS);
+
+  if (list == 0)
+    {
+      maxfd = getmaxfd ();
+      if (maxfd < 0)
+       {
+         builtin_error ("can't get max fd: %s", strerror (errno));
+         return (EXECUTION_FAILURE);
+       }
+      for (i = 0; i < maxfd; i++)
+       printone (i, 0, verbose);
+      return (EXECUTION_SUCCESS);
+    }
+
+  opt = EXECUTION_SUCCESS;
+  for (l = list; l; l = l->next)
+    {
+      if (legal_number (l->word->word, &inum) == 0 || inum < 0)
+       {
+         builtin_error ("%s: invalid file descriptor", l->word->word);
+         opt = EXECUTION_FAILURE;
+         continue;
+       }
+      num = inum;              /* truncate to int */
+      if (setflag)
+       setone (num, setspec, verbose);
+      else
+       printone (num, 1, verbose);
+    }
+
+  return (opt);
+}
+
+char *fdflags_doc[] =
+{
+  "Display and modify file descriptor flags.",
+  "",
+  "Display or, if the -s option is supplied, set flags for each file",
+  "descriptor supplied as an argument.  If the -v option is supplied,",
+  "the display is verbose, including each settable option name in the",
+  "form of a string such as that accepted by the -s option.",
+  "",
+  "The -s option accepts a string with a list of flag names, each preceded",
+  "by a `+' (set) or `-' (unset).  Those changes are applied to each file",
+  "descriptor supplied as an argument.",
+  "",
+  "If no file descriptor arguments are supplied, the displayed information",
+  "consists of the status of flags for each of the shell's open files.",
+  (char *)NULL
+};
+
+/* The standard structure describing a builtin command.  bash keeps an array
+   of these structures.  The flags must include BUILTIN_ENABLED so the
+   builtin can be used. */
+struct builtin fdflags_struct = {
+       "fdflags",              /* builtin name */
+       fdflags_builtin,                /* function implementing the builtin */
+       BUILTIN_ENABLED,        /* initial flags for builtin */
+       fdflags_doc,            /* array of long documentation strings. */
+       "fdflags [-v] [-s flags_string] [fd ...]",      /* usage synopsis; becomes short_doc */
+       0                       /* reserved for internal use */
+};
index 00833f680f72dd3c0d2c74a91485b80a76076cbc..4273aa595dfda067557d6f7fa0dee73aa9552566 100644 (file)
@@ -336,9 +336,9 @@ int flags;
        } else if (flags & OPT_DEV)
                printf("%d\n", st->st_dev);
        else if (flags & OPT_INO)
-               printf("%d\n", st->st_ino);
+               printf("%lu\n", (unsigned long)st->st_ino);
        else if (flags & OPT_FID)
-               printf("%d:%ld\n", st->st_dev, st->st_ino);
+               printf("%d:%lu\n", st->st_dev, (unsigned long)st->st_ino);
        else if (flags & OPT_NLINK)
                printf("%d\n", st->st_nlink);
        else if (flags & OPT_LNKNAM) {
index 748bb83ed34242e00a1714c3a2304e4ab76df320..1edca6c555b9a8d1265af66112f6a8acc743f0e3 100644 (file)
@@ -117,6 +117,7 @@ head_builtin (list)
              return (EX_USAGE);
            }
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 8773349413a451aad4d78402c5d2a0c6bea4ad0e..f857b54752a7e4c7516a0a891aad3c72bf23f9de 100644 (file)
@@ -91,6 +91,7 @@ id_builtin (list)
        case 'n': id_flags |= ID_USENAME; break;
        case 'r': id_flags |= ID_USEREAL; break;
        case 'u': id_flags |= ID_USERONLY; break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index a853bc99512278e47bb3c50b16235b3c9649eab1..93764a35e359f808797fd606ff276a49aad179f3 100644 (file)
@@ -76,6 +76,7 @@ ln_builtin (list)
        case 'n':
          flags |= LN_NOFOLLOW;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 39ae07f9ae94a90afe767c7b1b5adabf8378bde3..b38111994350ee6e311e158b2776e971f8632ec5 100644 (file)
@@ -52,12 +52,12 @@ int
 mkdir_builtin (list)
      WORD_LIST *list;
 {
-  int opt, pflag, omode, rval, nmode, parent_mode;
+  int opt, pflag, mflag, omode, rval, nmode, parent_mode;
   char *mode;
   WORD_LIST *l;
 
   reset_internal_getopt ();
-  pflag = 0;
+  pflag = mflag = 0;
   mode = (char *)NULL;
   while ((opt = internal_getopt(list, "m:p")) != -1)
     switch (opt)
@@ -66,8 +66,10 @@ mkdir_builtin (list)
          pflag = 1;
          break;
        case 'm':
+         mflag = 1;
          mode = list_optarg;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage();
          return (EX_USAGE);
@@ -114,7 +116,7 @@ mkdir_builtin (list)
 
   for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next)
     {
-      if (pflag && make_path (l->word->word, nmode, parent_mode))
+      if (pflag && make_path (l->word->word, mflag, nmode, parent_mode))
        {
          rval = EXECUTION_FAILURE;
          continue;
@@ -132,8 +134,9 @@ mkdir_builtin (list)
    this changes the process's umask; make sure that all paths leading to a
    return reset it to ORIGINAL_UMASK */
 static int
-make_path (path, nmode, parent_mode)
+make_path (path, user_mode, nmode, parent_mode)
      char *path;
+     int user_mode;
      int nmode, parent_mode;
 {
   int oumask;
@@ -148,7 +151,7 @@ make_path (path, nmode, parent_mode)
          return 1;
        }
        
-      if (chmod (path, nmode))
+      if (user_mode && chmod (path, nmode))
         {
           builtin_error ("%s: %s", path, strerror (errno));
           return 1;
@@ -172,13 +175,20 @@ make_path (path, nmode, parent_mode)
       *p = '\0';
       if (stat (npath, &sb) != 0)
        {
-         if (mkdir (npath, parent_mode))
+         if (mkdir (npath, 0))
            {
              builtin_error ("cannot create directory `%s': %s", npath, strerror (errno));
              umask (original_umask);
              free (npath);
              return 1;
            }
+         if (chmod (npath, parent_mode) != 0)
+           {
+             builtin_error ("cannot chmod directory `%s': %s", npath, strerror (errno));
+             umask (original_umask);
+             free (npath);
+             return 1;
+           }
        }
       else if (S_ISDIR (sb.st_mode) == 0)
         {
index ee65f184c7f00e289c6625df08e4ad6c00ccce5a..dd2092b07e0951e33052cad58c60429d78a0bf9b 100644 (file)
@@ -38,7 +38,7 @@ WORD_LIST *list;
 char *necho_doc[] = {
        "Display arguments.",
        "",
-       "Print the arguments to the standard ouput separated",
+       "Print the arguments to the standard output separated",
        "by space characters and terminated with a newline.",
        (char *)NULL
 };
index 85e8a04c70f98d905d633c656cb4ad26ac782e2a..c1151db4260a8347c76dbfbb0de28d939d3878c2 100644 (file)
@@ -112,6 +112,7 @@ pathchk_builtin (list)
        case 'p':
          pflag = 1;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
@@ -135,7 +136,7 @@ char *pathchk_doc[] = {
        "Check pathnames for validity.",
        "",
        "Check each pathname argument for validity (i.e., it may be used to",
-       "create or access a file without casuing syntax errors) and portability",
+       "create or access a file without causing syntax errors) and portability",
        "(i.e., no filename truncation will result).  If the `-p' option is",
        "supplied, more extensive portability checks are performed.",
        (char *)NULL
index e17597b3b16f36ad1013d2d6bce5a9854518c637..0120dbf41bccd7a37b8e2838ca4a6956a1f21f3e 100644 (file)
@@ -122,6 +122,7 @@ print_builtin (list)
        case 'f':
          pfmt = list_optarg;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 8d3a05df491bcd4dd9a7bbb393e358c3d58782c5..8c7f72019941aa268dd9dcc4da1f28ccd770aa72 100644 (file)
@@ -46,6 +46,7 @@ printenv_builtin (list)
     {
       switch (opt)
        {
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index b076073389a4b5180936ee906d034f6df2ab1258..9bcd5c3240961c58a51f65d8087e25c5fb27635e 100644 (file)
@@ -51,6 +51,7 @@ push_builtin (list)
     {
       switch (opt)
        {
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index b19b87fb6666f8a71619ba90636a165d4d75cb34..9892ddb8bf65e51c508e8822a161f5b9d2d7cd2f 100644 (file)
@@ -86,15 +86,19 @@ WORD_LIST   *list;
                case 'v':
                        vflag = 1;
                        break;
+               CASE_HELPOPT;
                default:
                        builtin_usage();
+                       return (EX_USAGE);
                }
        }
 
        list = loptend;
 
-       if (list == 0)
+       if (list == 0) {
                builtin_usage();
+               return (EX_USAGE);
+       }
 
        for (es = EXECUTION_SUCCESS; list; list = list->next) {
                p = list->word->word;
diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c
new file mode 100644 (file)
index 0000000..adfbffd
--- /dev/null
@@ -0,0 +1,177 @@
+/* rm - remove files and directories with -r */
+
+/* See Makefile for compilation details. */
+
+/*
+   Copyright (C) 2016 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash.
+   Bash is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <dirent.h>
+#include "builtins.h"
+#include "shell.h"
+#include "common.h"
+#include "bashgetopt.h"
+
+#if !defined (errno)
+extern int errno;
+#endif
+
+static int rm_file(const char *fname);
+
+static int force, recursive;
+
+static int
+_remove_directory(const char *dirname)
+{
+  DIR *dir;
+  struct dirent *dp;
+  size_t dirlen;
+  int err;
+
+  dirlen = strlen (dirname);
+  err = 0;
+
+  if ((dir = opendir(dirname)))
+    {
+      while ((dp = readdir(dir)))
+       {       
+#ifdef __GNUC__
+         char fname[dirlen + 1 + strlen (dp->d_name) + 1];
+#else
+         char *fname;
+         int fnsize;
+#endif
+         
+          if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0)))
+            continue;
+
+#ifdef __GNUC__
+         snprintf(fname, sizeof (fname), "%s/%s", dirname, dp->d_name);
+#else
+         fnsize = dirlen + 1 + strlen (dp->d_name) + 1;
+          fname = xmalloc (fnsize);
+         snprintf(fname, fnsize, "%s/%s", dirname, dp->d_name);
+#endif
+
+           if (rm_file (fname) && force == 0)
+             err = 1;
+#ifndef __GNUC__
+           free (fname);
+#endif
+        }
+
+      closedir(dir);
+               
+      if (err == 0 && rmdir (dirname) && force == 0)
+        err = 1;
+    }
+  else if (force == 0)
+    err = 1;
+
+  if (err)
+    builtin_error ("%s: %s", dirname, strerror (errno));
+
+  return err;
+}
+
+static int
+rm_file(const char *fname)
+{
+  if (unlink (fname) == 0)
+    return 0;
+
+  /* If FNAME is a directory glibc returns EISDIR but correct POSIX value
+     would be EPERM.  If we get that error and FNAME is a directory and -r
+     was supplied, recursively remove the directory and its contents */
+  if ((errno == EISDIR || errno == EPERM) && recursive && file_isdir (fname))
+    return _remove_directory(fname);
+  else if (force)
+    return 0;
+
+  builtin_error ("%s: %s", fname, strerror (errno));
+  return 1;
+}
+
+int
+rm_builtin (list)
+     WORD_LIST *list;
+{
+  const char *name;
+  WORD_LIST *l;
+  int rval, opt;
+
+  recursive = force = 0;
+  rval = EXECUTION_SUCCESS;
+
+  reset_internal_getopt ();
+  while ((opt = internal_getopt (list, "Rrfi")) != -1)
+    {
+      switch (opt)
+       {
+       case 'R':
+       case 'r':
+         recursive = 1;
+         break;
+       case 'f':
+         force = 1;
+         break;
+       case 'i':
+         return (EX_DISKFALLBACK);
+       CASE_HELPOPT;
+       default:
+         builtin_usage ();
+         return (EX_USAGE);
+       }
+    }
+  list = loptend;
+
+  if (list == 0)
+    {
+      builtin_usage ();
+      return (EXECUTION_FAILURE);
+    }
+
+  for (l = list; l; l = l->next)
+    {
+      if (rm_file(l->word->word) && force == 0)
+       rval = EXECUTION_FAILURE;
+    }
+
+  return rval;
+}
+
+char *rm_doc[] = {
+       "Remove files.",
+       "",
+       "rm removes the files specified as arguments.",
+       (char *)NULL
+};
+
+/* The standard structure describing a builtin command.  bash keeps an array
+   of these structures. */
+struct builtin rm_struct = {
+       "rm",                   /* builtin name */
+       rm_builtin,             /* function implementing the builtin */
+       BUILTIN_ENABLED,        /* initial flags for builtin */
+       rm_doc,                 /* array of long documentation strings. */
+       "rm [-rf] file ...",    /* usage synopsis; becomes short_doc */
+       0                       /* reserved for internal use */
+};
diff --git a/examples/loadables/seq.c b/examples/loadables/seq.c
new file mode 100644 (file)
index 0000000..d8f3e0a
--- /dev/null
@@ -0,0 +1,490 @@
+/* seq - print sequence of numbers to standard output.
+   Copyright (C) 2018 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 3 of the License, 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, see <https://www.gnu.org/licenses/>.  */
+
+/* Written as bash builtin by Chet Ramey. Portions from seq.c by Ulrich Drepper. */
+
+#include <config.h>
+
+#include <sys/types.h>
+
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+
+#include "bashansi.h"
+#include "loadables.h"
+#include "bashintl.h"
+
+#ifndef errno
+extern int errno;
+#endif
+
+#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
+typedef long double floatmax_t;
+#  define FLOATMAX_CONV "L"
+#  define strtofltmax   strtold
+#  define FLOATMAX_FMT "%Lg"
+#  define FLOATMAX_WFMT "%0.Lf"
+#  define USE_LONG_DOUBLE
+#else
+typedef double floatmax_t;
+#  define FLOATMAX_CONV ""
+#  define strtofltmax   strtod
+#  define FLOATMAX_FMT "%g"
+#  define FLOATMAX_WFMT "%0.f"
+#endif
+static floatmax_t getfloatmax __P((const char *));
+static char *genformat __P((floatmax_t, floatmax_t, floatmax_t));
+
+#define MAX(a, b) (((a) < (b))? (b) : (a))
+
+static int conversion_error = 0;
+
+/* If true print all number with equal width.  */
+static int equal_width;
+
+/* The string used to separate two numbers.  */
+static char const *separator;
+
+/* The string output after all numbers have been output. */
+static char const terminator[] = "\n";
+
+static char decimal_point;
+
+/* Pretty much the same as the version in builtins/printf.def */
+static floatmax_t
+getfloatmax (arg)
+     const char *arg;
+{
+  floatmax_t ret;
+  char *ep;
+
+  errno = 0;
+  ret = strtofltmax (arg, &ep);
+
+  if (*ep)
+    {
+      sh_invalidnum ((char *)arg);
+      conversion_error = 1;
+    }
+  else if (errno == ERANGE)
+    {
+      builtin_error ("warning: %s: %s", arg, strerror(ERANGE));
+      conversion_error = 1;
+    }
+
+  if (ret == -0.0)
+    ret = 0.0;
+
+  return (ret);
+}
+
+/* If FORMAT is a valid printf format for a double argument, return
+   its long double equivalent, allocated from dynamic storage. This
+   was written by Ulrich Drepper, taken from coreutils:seq.c */
+static char *
+long_double_format (char const *fmt)
+{
+  size_t i;
+  size_t length_modifier_offset;
+  int has_L;
+
+  for (i = 0; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i += (fmt[i] == '%') + 1)
+    {
+      if (!fmt[i])
+       {
+         builtin_error ("format %s has no %% directive", fmt);
+         return 0;
+       }
+    }
+
+  i++;
+  i += strspn (fmt + i, "-+#0 '");     /* zero or more flags */
+  i += strspn (fmt + i, "0123456789"); /* optional minimum field width */
+  if (fmt[i] == '.')                   /* optional precision */
+    {
+      i++;
+      i += strspn (fmt + i, "0123456789");
+    }
+
+  length_modifier_offset = i;          /* optional length modifier */
+  /* we could ignore an 'l' length modifier here */
+  has_L = (fmt[i] == 'L');
+  i += has_L;
+  switch (fmt[i])
+    {
+    case '\0':
+      builtin_error ("format %s ends in %%", fmt);
+      return 0;
+    case 'A':
+    case 'a':
+    case 'e':
+    case 'E':
+    case 'f':
+    case 'F':
+    case 'g':
+    case 'G':
+      break;
+    default:
+      builtin_error ("format %s has unknown `%%%c' directive", fmt, fmt[i]);
+      return 0;
+    }
+  for (i++; ; i += (fmt[i] == '%') + 1)
+    if (fmt[i] == '%' && fmt[i + 1] != '%')
+      {
+        builtin_error ("format %s has too many %% directives", fmt);
+        return 0;
+      }
+    else if (fmt[i] == 0)
+      {
+        size_t format_size = i + 1;
+        char *ldfmt = xmalloc (format_size + 1);
+        memcpy (ldfmt, fmt, length_modifier_offset);
+#ifdef USE_LONG_DOUBLE
+        ldfmt[length_modifier_offset] = 'L';
+        strcpy (ldfmt + length_modifier_offset + 1,
+                fmt + length_modifier_offset + has_L);
+#else
+        strcpy (ldfmt + length_modifier_offset, fmt + length_modifier_offset);
+#endif
+        return ldfmt;
+      }
+}
+
+/* Return the number of digits following the decimal point in NUMBUF */
+static int
+getprec (numbuf)
+     const char *numbuf;
+{
+  int p;
+  char *dp;
+
+  if (dp = strchr (numbuf, decimal_point))
+    dp++;              /* skip over decimal point */
+  for (p = 0; dp && *dp && ISDIGIT (*dp); dp++)
+    p++;
+  return p;
+}
+
+/* Return the default format given FIRST, INCR, and LAST.  */
+static char *
+genformat (first, incr, last)
+       floatmax_t first, incr, last;
+{
+  static char buf[6 + 2 * INT_STRLEN_BOUND (int)];
+  int wfirst, wlast, width;
+  int iprec, fprec, lprec, prec;
+
+  if (equal_width == 0)
+    return (FLOATMAX_FMT);
+
+  /* OK, we have to figure out the largest number of decimal places. This is
+     a little more expensive than using the original strings. */
+  snprintf (buf, sizeof (buf), FLOATMAX_FMT, incr);
+  iprec = getprec (buf);
+
+  wfirst = snprintf (buf, sizeof (buf), FLOATMAX_FMT, first);
+  fprec = getprec (buf);
+    
+  prec = MAX (fprec, iprec);
+
+  wlast = snprintf (buf, sizeof (buf), FLOATMAX_FMT, last);
+  lprec = getprec (buf);
+
+  /* increase first width by any increased precision in increment */
+  wfirst += (prec - fprec);
+
+  /* adjust last width to use precision from first/incr */
+  wlast += (prec - lprec);
+
+  if (lprec && prec == 0)
+    wlast--;           /* no decimal point */
+  if (lprec == 0 && prec)
+    wlast++;           /* include decimal point */
+  if (fprec == 0 && prec)
+    wfirst++;          /* include decimal point */
+
+  width = MAX (wfirst, wlast);
+  if (width)
+    sprintf (buf, "%%0%d.%d%sf", width, prec, FLOATMAX_CONV);
+  else
+    sprintf (buf, "%%.%d%sf", prec, FLOATMAX_CONV);
+
+  return buf;
+}
+
+int
+print_fltseq (fmt, first, last, incr)
+     const char *fmt;
+     floatmax_t first, last, incr;
+{
+  int n;
+  floatmax_t next;
+  const char *s;
+
+  n = 0;               /* interation counter */
+  s = "";
+  for (next = first; incr >= 0 ? (next <= last) : (next >= last); next = first + n * incr)
+    {
+      QUIT;
+      if (*s && fputs (s, stdout) == EOF)
+       return (sh_chkwrite (EXECUTION_FAILURE));
+      if (printf (fmt, next) < 0)
+       return (sh_chkwrite (EXECUTION_FAILURE));
+      s = separator;
+      n++;
+    }
+
+  if (n > 0 && fputs (terminator, stdout) == EOF)
+    return (sh_chkwrite (EXECUTION_FAILURE));
+  return (sh_chkwrite (EXECUTION_SUCCESS));
+}
+
+/* must be <= INT_STRLEN_BOUND(intmax_t) */
+int
+width_needed (num)
+     intmax_t num;
+{
+  int ret;
+
+  ret = num < 0;               /* sign */
+  if (ret)
+    num = -num;
+  do
+    ret++;
+  while (num /= 10);
+  return ret;
+}
+
+int
+print_intseq (ifirst, ilast, iincr)
+     intmax_t ifirst, ilast, iincr;
+{
+  char intwfmt[6 + INT_STRLEN_BOUND(int) + sizeof (PRIdMAX)];
+  const char *s;
+  intmax_t i, next;
+
+  /* compute integer format string */
+  if (equal_width)     /* -w supplied */
+    {
+      int wfirst, wlast, width;
+
+      wfirst = width_needed (ifirst);
+      wlast = width_needed (ilast);
+      width = MAX(wfirst, wlast);
+
+      /* The leading %s is for the separator */
+      snprintf (intwfmt, sizeof (intwfmt), "%%s%%0%u" PRIdMAX, width);
+    }
+
+  /* We could use braces.c:mkseq here but that allocates lots of memory */
+  s = "";
+  for (i = ifirst; (ifirst <= ilast) ? (i <= ilast) : (i >= ilast); i = next)
+    {
+      QUIT;
+      /* The leading %s is for the separator */
+      if (printf (equal_width ?  intwfmt : "%s%" PRIdMAX, s, i) < 0)
+       return (sh_chkwrite (EXECUTION_FAILURE));
+      s = separator;
+      next = i + iincr;
+    }
+
+  if (fputs (terminator, stdout) == EOF)
+    return (sh_chkwrite (EXECUTION_FAILURE));
+  return (sh_chkwrite (EXECUTION_SUCCESS));
+}
+
+int
+seq_builtin (list)
+     WORD_LIST *list;
+{
+  floatmax_t first, last, incr;
+  intmax_t ifirst, ilast, iincr;
+  WORD_LIST *l;
+  int opt, nargs, intseq, freefmt;
+  char *first_str, *incr_str, *last_str;
+  char const *fmtstr;          /* The printf(3) format used for output.  */
+
+  equal_width = 0;
+  separator = "\n";
+  fmtstr = NULL;
+
+  first = 1.0;
+  last = 0.0;
+  incr = 0.0;          /* set later */
+  ifirst = ilast = iincr = 0;
+  first_str = incr_str = last_str = 0;
+
+  intseq = freefmt = 0;
+  opt = 0;
+
+  reset_internal_getopt ();
+  while (opt != -1)
+    {
+      l = lcurrent ? lcurrent : list;
+      if (l && l->word && l->word->word && l->word->word[0] == '-' &&
+          (l->word->word[1] == '.' || DIGIT (l->word->word[1])))
+       {
+         loptend = l;
+         break;        /* negative number */
+       }
+      if ((opt = internal_getopt (list, "f:s:w")) == -1)
+        break;
+
+      switch (opt)
+       {
+       case 'f':
+         fmtstr = list_optarg;
+         break;
+       case 's':
+         separator = list_optarg;
+         break;
+       case 'w':
+         equal_width = 1;
+         break;
+       CASE_HELPOPT;
+       default:
+         builtin_usage ();
+         return (EX_USAGE);
+       }
+    }
+  list = loptend;
+
+  if (list == 0)
+    {
+      builtin_usage ();
+      return (EXECUTION_FAILURE);
+    }
+
+  for (nargs = 1, l = list; l->next; l = l->next)
+    nargs++;
+  if (nargs > 3)
+    {
+      builtin_usage ();
+      return (EXECUTION_FAILURE);
+    }
+
+  /* LAST */
+  conversion_error = 0;
+  last = getfloatmax (last_str = l->word->word);
+  if (conversion_error)
+    return (EXECUTION_FAILURE);
+
+  /* FIRST LAST */
+  if (nargs > 1)
+    {
+      conversion_error = 0;
+      first = getfloatmax (first_str = list->word->word);
+      if (conversion_error)
+       return (EXECUTION_FAILURE);
+    }
+
+  /* FIRST INCR LAST */
+  if (nargs > 2)
+    {
+      conversion_error = 0;
+      incr = getfloatmax (incr_str = list->next->word->word);
+      if (conversion_error)
+       return (EXECUTION_FAILURE);
+      if (incr == 0.0)
+       {
+         builtin_error ("zero %screment", (first < last) ?  "in" : "de");
+         return (EXECUTION_FAILURE);
+       }
+    }
+
+  /* Sanitize arguments */
+  if (incr == 0.0)
+    incr = (first <= last) ?  1.0 : -1.0;
+  if ((incr < 0.0 && first < last) || (incr > 0 && first > last))
+    {
+      builtin_error ("incorrect %screment", (first < last) ?  "in" : "de");
+      return (EXECUTION_FAILURE);
+    }
+
+  /* validate format here */
+  if (fmtstr)
+    {
+      fmtstr = long_double_format (fmtstr);
+      freefmt = 1;
+      if (fmtstr == 0)
+       return (EXECUTION_FAILURE);
+    }
+      
+  if (fmtstr != NULL && equal_width)
+    {
+      builtin_warning ("-w ignored when the format string is specified");
+      equal_width = 0;
+    }
+
+  /* Placeholder for later additional conditions */
+  if (last_str && all_digits (last_str) &&
+      (first_str == 0 || all_digits (first_str)) &&
+      (incr_str == 0 || all_digits (incr_str)) &&
+      fmtstr == NULL)
+    intseq = 1;
+
+  if (intseq)
+    {
+      ifirst = (intmax_t)first; /* truncation */
+      ilast = (intmax_t)last;
+      iincr = (intmax_t)incr;
+
+      return (print_intseq (ifirst, ilast, iincr));
+    }
+
+  decimal_point = locale_decpoint ();
+  if (fmtstr == NULL)
+    fmtstr = genformat (first, incr, last);
+
+  print_fltseq (fmtstr, first, last, incr);
+
+  if (freefmt)
+    free ((void *)fmtstr);
+  return sh_chkwrite (EXECUTION_SUCCESS);
+}
+
+/* Taken largely from GNU seq. */
+char *seq_doc[] = {
+       "Print numbers from FIRST to LAST, in steps of INCREMENT.",
+       "",
+       "-f FORMAT    use printf style floating-point FORMAT",
+       "-s STRING    use STRING to separate numbers (default: \\n)",
+       "-w           equalize width by padding with leading zeroes",
+       "",
+       "If FIRST or INCREMENT is omitted, it defaults to 1.  However, an",
+       "omitted INCREMENT defaults to -1 when LAST is smaller than FIRST.",
+       "The sequence of numbers ends when the sum of the current number and",
+       "INCREMENT would become greater than LAST.",
+       "FIRST, INCREMENT, and LAST are interpreted as floating point values.",
+       "",
+       "FORMAT must be suitable for printing one argument of type 'double';",
+       "it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point",
+       "decimal numbers with maximum precision PREC, and to %g otherwise.",
+       (char *)NULL
+};     
+
+struct builtin seq_struct = {
+       "seq",
+       seq_builtin,
+       BUILTIN_ENABLED,
+       seq_doc,
+       "seq [-f format] [-s separator] [-w] [FIRST [INCR]] LAST",
+       0
+};
index 736c8af1a7757629bbbf8b24406c553e378e8bf9..92b1a8fa1a655c78d3d60a976e87646e21b29417 100644 (file)
 #include "builtins.h"
 #include "common.h"
 
-#define RETURN(x) \
-       do { \
-               if (sp) *sp = sec; \
-               if (usp) *usp = usec; \
-               return (x); \
-       } while (0)
-
 int
 sleep_builtin (list)
 WORD_LIST      *list;
diff --git a/examples/loadables/stat.c b/examples/loadables/stat.c
new file mode 100644 (file)
index 0000000..52b9580
--- /dev/null
@@ -0,0 +1,430 @@
+/* stat - load up an associative array with stat information about a file */
+
+/* See Makefile for compilation details. */
+
+/*
+   Copyright (C) 2016 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash.
+   Bash is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
+#include <stdio.h>
+
+#include <sys/types.h>
+#include "posixstat.h"
+#include <stdio.h>
+#include <pwd.h>
+#include <grp.h>
+#include <errno.h>
+#include "posixtime.h"
+
+#include "bashansi.h"
+#include "shell.h"
+#include "builtins.h"
+#include "common.h"
+#include "bashgetopt.h"
+
+#ifndef errno
+extern int     errno;
+#endif
+
+#define ST_NAME                0
+#define ST_DEV         1
+#define ST_INO         2
+#define ST_MODE                3
+#define ST_NLINK       4
+#define ST_UID         5
+#define ST_GID         6
+#define ST_RDEV                7
+#define ST_SIZE                8
+#define ST_ATIME       9
+#define ST_MTIME       10
+#define ST_CTIME       11
+#define ST_BLKSIZE     12
+#define ST_BLOCKS      13
+#define ST_CHASELINK   14
+#define ST_PERMS       15
+
+#define ST_END         16
+
+static char *arraysubs[] =
+  {
+    "name", "device", "inode", "type", "nlink", "uid", "gid", "rdev",
+    "size", "atime", "mtime", "ctime", "blksize", "blocks", "link", "perms",
+    0
+  };
+
+static int
+getstat (fname, flags, sp)
+     const char *fname;
+     int flags;
+     struct stat *sp;
+{
+  intmax_t lfd;
+  int fd, r;
+
+  if (strncmp (fname, "/dev/fd/", 8) == 0)
+    {
+      if ((legal_number(fname + 8, &lfd) == 0) || (int)lfd != lfd)
+       {
+         errno = EINVAL;
+         return -1;
+       }
+      fd = lfd;
+      r = fstat(fd, sp);
+    }
+#ifdef HAVE_LSTAT
+  else if (flags & 1)
+    r = lstat(fname, sp);
+#endif
+  else
+    r = stat(fname, sp);
+
+  return r;
+}
+
+static char *
+statlink (fname, sp)
+     char *fname;
+     struct stat *sp;
+{
+#if defined (HAVE_READLINK)
+  char linkbuf[PATH_MAX];
+  int n;
+
+  if (fname && S_ISLNK (sp->st_mode) && (n = readlink (fname, linkbuf, PATH_MAX)) > 0)
+    {
+      linkbuf[n] = '\0';
+      return (savestring (linkbuf));
+    }
+  else
+#endif
+    return (savestring (fname));
+}
+
+static char *
+octalperms (m)
+     int m;
+{
+  int operms;
+  char *ret;
+
+  operms = 0;
+
+  if (m & S_IRUSR)
+    operms |= 0400;
+  if (m & S_IWUSR)
+    operms |= 0200;
+  if (m & S_IXUSR)
+    operms |= 0100;
+
+  if (m & S_IRGRP)
+    operms |= 0040;
+  if (m & S_IWGRP)
+    operms |= 0020;
+  if (m & S_IXGRP)
+    operms |= 0010;
+
+  if (m & S_IROTH)
+    operms |= 0004;
+  if (m & S_IWOTH)
+    operms |= 0002;
+  if (m & S_IXOTH)
+    operms |= 0001;
+
+  if (m & S_ISUID)
+    operms |= 04000;
+  if (m & S_ISGID)
+    operms |= 02000;
+  if (m & S_ISVTX)
+    operms |= 01000;
+
+  ret = (char *)xmalloc (16);
+  snprintf (ret, 16, "%04o", operms);
+  return ret;
+}
+
+static char *
+statperms (m)
+     int m;
+{
+  char ubits[4], gbits[4], obits[4];   /* u=rwx,g=rwx,o=rwx */
+  int i;
+  char *ret;
+
+  i = 0;
+  if (m & S_IRUSR)
+    ubits[i++] = 'r';
+  if (m & S_IWUSR)
+    ubits[i++] = 'w';
+  if (m & S_IXUSR)
+    ubits[i++] = 'x';
+  ubits[i] = '\0';
+
+  i = 0;
+  if (m & S_IRGRP)
+    gbits[i++] = 'r';
+  if (m & S_IWGRP)
+    gbits[i++] = 'w';
+  if (m & S_IXGRP)
+    gbits[i++] = 'x';
+  gbits[i] = '\0';
+
+  i = 0;
+  if (m & S_IROTH)
+    obits[i++] = 'r';
+  if (m & S_IWOTH)
+    obits[i++] = 'w';
+  if (m & S_IXOTH)
+    obits[i++] = 'x';
+  obits[i] = '\0';
+
+  if (m & S_ISUID)
+    ubits[2] = (m & S_IXUSR) ? 's' : 'S';
+  if (m & S_ISGID)
+    gbits[2] = (m & S_IXGRP) ? 's' : 'S';
+  if (m & S_ISVTX)
+    obits[2] = (m & S_IXOTH) ? 't' : 'T';
+
+  ret = (char *)xmalloc (32);
+  snprintf (ret, 32, "u=%s,g=%s,o=%s", ubits, gbits, obits);
+  return ret;
+}
+
+static char *
+statmode(mode)
+     int mode;
+{
+  char *modestr, *m;
+
+  modestr = m = (char *)xmalloc (8);
+  if (S_ISBLK (mode))
+    *m++ = 'b';
+  if (S_ISCHR (mode))
+    *m++ = 'c';
+  if (S_ISDIR (mode))
+    *m++ = 'd';
+  if (S_ISREG(mode))
+    *m++ = '-';
+  if (S_ISFIFO(mode))
+    *m++ = 'p';
+  if (S_ISLNK(mode))
+    *m++ = 'l';
+  if (S_ISSOCK(mode))
+    *m++ = 's';
+
+#ifdef S_ISDOOR
+  if (S_ISDOOR (mode))
+    *m++ = 'D';
+#endif
+#ifdef S_ISWHT
+  if (S_ISWHT(mode))
+    *m++ = 'W';
+#endif
+#ifdef S_ISNWK
+  if (S_ISNWK(mode))
+    *m++ = 'n';
+#endif
+#ifdef S_ISMPC
+  if (S_ISMPC (mode))
+    *m++ = 'm';
+#endif
+
+  *m = '\0';
+  return (modestr);
+}
+
+static char *
+stattime (t)
+     time_t t;
+{
+  char *tbuf, *ret;
+  size_t tlen;
+
+  tbuf = ctime (&t);
+  tlen = strlen (tbuf);
+  ret = savestring (tbuf);
+  ret[tlen-1] = '\0';
+  return ret;
+}
+
+static char *
+statval (which, fname, flags, sp)
+     int which;
+     char *fname;
+     int flags;
+     struct stat *sp;
+{
+  int temp;
+
+  switch (which)
+    {
+    case ST_NAME:
+      return savestring (fname);
+    case ST_DEV:
+      return itos (sp->st_dev);
+    case ST_INO:
+      return itos (sp->st_ino);
+    case ST_MODE:
+      return (statmode (sp->st_mode));
+    case ST_NLINK:
+      return itos (sp->st_nlink);
+    case ST_UID:
+      return itos (sp->st_uid);
+    case ST_GID:
+      return itos (sp->st_gid);
+    case ST_RDEV:
+      return itos (sp->st_rdev);
+    case ST_SIZE:
+      return itos (sp->st_size);
+    case ST_ATIME:
+      return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime));
+    case ST_MTIME:
+      return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime));
+    case ST_CTIME:
+      return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime));
+    case ST_BLKSIZE:
+      return itos (sp->st_blksize);
+    case ST_BLOCKS:
+      return itos (sp->st_blocks);
+    case ST_CHASELINK:
+      return (statlink (fname, sp));
+    case ST_PERMS:
+      temp = sp->st_mode & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID);
+      return (flags & 2) ? statperms (temp) : octalperms (temp);
+    default:
+      return savestring ("42");
+    }
+}
+
+static int
+loadstat (vname, var, fname, flags, sp)
+     char *vname;
+     SHELL_VAR *var;
+     char *fname;
+     int flags;
+     struct stat *sp;
+{
+  int i;
+  char *key, *value;
+  SHELL_VAR *v;
+
+  for (i = 0; arraysubs[i]; i++)
+    {
+      key = savestring (arraysubs[i]);
+      value = statval (i, fname, flags, sp);
+      v = bind_assoc_variable (var, vname, key, value, ASS_FORCE);
+    }
+  return 0;
+}
+
+int
+stat_builtin (list)
+     WORD_LIST *list;
+{
+  int opt, flags;
+  char *aname, *fname;
+  struct stat st;
+  SHELL_VAR *v;
+
+  aname = "STAT";
+  flags = 0;
+
+  reset_internal_getopt ();
+  while ((opt = internal_getopt (list, "A:Ll")) != -1)
+    {
+      switch (opt)
+       {
+       case 'A':
+         aname = list_optarg;
+         break;
+       case 'L':
+         flags |= 1;           /* operate on links rather than resolving them */
+         break;
+       case 'l':
+         flags |= 2;
+         break;
+       CASE_HELPOPT;
+       default:
+         builtin_usage ();
+         return (EX_USAGE);
+       }
+    }
+
+  list = loptend;
+  if (list == 0)
+    {
+      builtin_usage ();
+      return (EX_USAGE);
+    }
+
+  fname = list->word->word;
+
+  if (getstat (fname, flags, &st) < 0)
+    {
+      builtin_error ("%s: cannot stat: %s", fname, strerror (errno));
+      return (EXECUTION_FAILURE);
+    }
+
+  unbind_variable (aname);
+  v = make_new_assoc_variable (aname);
+  if (v == 0)
+    {
+      builtin_error ("%s: cannot create variable", aname);
+      return (EXECUTION_FAILURE);
+    }
+  if (loadstat (aname, v, fname, flags, &st) < 0)
+    {
+      builtin_error ("%s: cannot assign file status information", aname);
+      unbind_variable (aname);
+      return (EXECUTION_FAILURE);
+    }
+
+  return (EXECUTION_SUCCESS);
+}
+
+/* An array of strings forming the `long' documentation for a builtin xxx,
+   which is printed by `help xxx'.  It must end with a NULL.  By convention,
+   the first line is a short description. */
+char *stat_doc[] = {
+       "Load an associative array with file status information.",
+       "",
+       "Take a filename and load the status information returned by a",
+       "stat(2) call on that file into the associative array specified",
+       "by the -A option.  The default array name is STAT.  If the -L",
+       "option is supplied, stat does not resolve symbolic links and",
+       "reports information about the link itself.  The -l option results",
+       "in longer-form listings for some of the fields. The exit status is 0",
+       "unless the stat fails or assigning the array is unsuccessful.",
+       (char *)NULL
+};
+
+/* The standard structure describing a builtin command.  bash keeps an array
+   of these structures.  The flags must include BUILTIN_ENABLED so the
+   builtin can be used. */
+struct builtin stat_struct = {
+       "stat",                 /* builtin name */
+       stat_builtin,           /* function implementing the builtin */
+       BUILTIN_ENABLED,        /* initial flags for builtin */
+       stat_doc,               /* array of long documentation strings. */
+       "stat [-lL] [-A aname] file",   /* usage synopsis; becomes short_doc */
+       0                       /* reserved for internal use */
+};
index 9462cda047c547829c54751315e5e59b8b9355e4..819d83aef7c4aff85a7c6b443121b687724d3d84 100644 (file)
@@ -84,6 +84,7 @@ tee_builtin (list)
        case 'i':
          nointr = 1;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 8cfd571d7fefc0ee5ce269a97d2b4181c36d7541..094b80ce93ce9e79b06cdaad19dc9273774682b5 100644 (file)
@@ -31,6 +31,7 @@ template_builtin (list)
     {
       switch (opt)
        {
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 1adc5b599a04570a6365088e7fad66c10b5eddaa..febf518ba4ee5fb025e43d1dfd5f0619bbc49d39 100644 (file)
@@ -46,6 +46,7 @@ tty_builtin (list)
        case 's':
          sflag = 1;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 339ec3dde663d380d82468eb59d3327459fd3d41..106a1c8db5c1d59765a85b69aa2af301ea144808 100644 (file)
@@ -95,6 +95,7 @@ uname_builtin (list)
        case 'v':
          uname_flags |= FLAG_VERSION;
          break;
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 5aa73828dfdb0a4b2317534d17b53b0d302dcae4..3e7e36e4bad97093a040544240286968b67cb798 100644 (file)
@@ -39,6 +39,7 @@ whoami_builtin (list)
     {
       switch (opt)
        {
+       CASE_HELPOPT;
        default:
          builtin_usage ();
          return (EX_USAGE);
index 76a80766983b00506bc22ad879cc3f5ddb799c18..8b3c83aa8aedb92353fd3fb93b56143238ca584c 100644 (file)
@@ -1,6 +1,6 @@
 /* execute_cmd.c -- Execute a COMMAND structure. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -66,6 +66,7 @@ extern int errno;
 #include "memalloc.h"
 #include "shell.h"
 #include <y.tab.h>     /* use <...> so we pick it up from the build directory */
+#include "parser.h"
 #include "flags.h"
 #include "builtins.h"
 #include "hashlib.h"
@@ -105,28 +106,13 @@ extern int errno;
 #  include <mbstr.h>           /* mbschr */
 #endif
 
-extern int dollar_dollar_pid;
-extern int posixly_correct;
-extern int expand_aliases;
-extern int autocd;
-extern int breaking, continuing, loop_level;
-extern int parse_and_execute_level, running_trap, sourcelevel;
-extern int command_string_index, line_number;
-extern int dot_found_in_search;
-extern int already_making_children;
-extern int tempenv_assign_error;
-extern char *the_printed_command, *shell_name;
-extern pid_t last_command_subst_pid;
-extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-extern char **subshell_argv, **subshell_envp;
-extern int subshell_argc;
+extern int command_string_index;
+extern char *the_printed_command;
 extern time_t shell_start_time;
 #if 0
 extern char *glob_argv_flags;
 #endif
 
-extern int job_control;        /* XXX */
-
 extern int close __P((int));
 
 /* Static functions defined and used in this file. */
@@ -197,6 +183,7 @@ static char *getinterp __P((char *, int, int *));
 static void initialize_subshell __P((void));
 static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *));
 #if defined (COPROCESS_SUPPORT)
+static void coproc_setstatus __P((struct coproc *, int));
 static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *));
 #endif
 
@@ -285,6 +272,8 @@ static int function_line_number;
    report the correct line number.  Kind of a hack. */
 static int showing_function_line;
 
+static int connection_count;
+
 /* $LINENO ($BASH_LINENO) for use by an ERR trap.  Global so parse_and_execute
    can save and restore it. */
 int line_number_for_err_trap;
@@ -293,7 +282,7 @@ int line_number_for_err_trap;
 int funcnest = 0;
 int funcnest_max = 0;
 
-int evalnest = 0;              /* bash-4.4/bash-5.0 */
+int evalnest = 0;
 int evalnest_max = EVALNEST_MAX;
 
 int sourcenest = 0;
@@ -410,7 +399,7 @@ execute_command (command)
 #if defined (PROCESS_SUBSTITUTION)
   /* don't unlink fifos if we're in a shell function; wait until the function
      returns. */
-  if (variable_context == 0)
+  if (variable_context == 0 && executing_list == 0)
     unlink_fifo_list ();
 #endif /* PROCESS_SUBSTITUTION */
 
@@ -461,6 +450,16 @@ cleanup_redirects (list)
   dispose_redirects (list);
 }
 
+void
+undo_partial_redirects ()
+{
+  if (redirection_undo_list)
+    {
+      cleanup_redirects (redirection_undo_list);
+      redirection_undo_list = (REDIRECT *)NULL;
+    }
+}
+
 #if 0
 /* Function to unwind_protect the redirections for functions and builtins. */
 static void
@@ -481,6 +480,16 @@ dispose_exec_redirects ()
     }
 }
 
+void
+dispose_partial_redirects ()
+{
+  if (redirection_undo_list)
+    {
+      dispose_redirects (redirection_undo_list);
+      redirection_undo_list = (REDIRECT *)NULL;
+    }
+}
+
 #if defined (JOB_CONTROL)
 /* A function to restore the signal mask to its proper value when the shell
    is interrupted or errors occur while creating a pipeline. */
@@ -552,7 +561,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
   int exec_result, user_subshell, invert, ignore_return, was_error_trap;
   REDIRECT *my_undo_list, *exec_undo_list;
   char *tcmd;
-  volatile int last_pid;
   volatile int save_line_number;
 #if defined (PROCESS_SUBSTITUTION)
   volatile int ofifo, nfifo, osize, saved_fifo;
@@ -590,11 +598,21 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
 
 #if defined (COPROCESS_SUPPORT)
   if (command->type == cm_coproc)
-    return (execute_coproc (command, pipe_in, pipe_out, fds_to_close));
+    return (last_command_exit_value = execute_coproc (command, pipe_in, pipe_out, fds_to_close));
 #endif
 
   user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0);
 
+#if defined (TIME_BEFORE_SUBSHELL)
+  if ((command->flags & CMD_TIME_PIPELINE) && user_subshell && asynchronous == 0)
+    {
+      command->flags |= CMD_FORCE_SUBSHELL;
+      exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+      currently_executing_command = (COMMAND *)NULL;
+      return (exec_result);
+    }
+#endif
+
   if (command->type == cm_subshell ||
       (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) ||
       (shell_control_structure (command->type) &&
@@ -602,12 +620,15 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
     {
       pid_t paren_pid;
       int s;
+      char *p;
 
       /* Fork a subshell, turn off the subshell bit, turn off job
         control and call execute_command () on the command again. */
-      line_number_for_err_trap = line_number;  /* XXX - save value? */
+      if (command->type == cm_subshell)
+       line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */
+       /* Otherwise we defer setting line_number */
       tcmd = make_command_string (command);
-      paren_pid = make_child (savestring (tcmd), asynchronous);
+      paren_pid = make_child (p = savestring (tcmd), asynchronous);
 
       if (user_subshell && signal_is_trapped (ERROR_TRAP) && 
          signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
@@ -618,6 +639,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
 
       if (paren_pid == 0)
         {
+#if defined (JOB_CONTROL)
+         FREE (p);             /* child doesn't use pointer */
+#endif
          /* We want to run the exit trap for forced {} subshells, and we
             want to note this before execute_in_subshell modifies the
             COMMAND struct.  Need to keep in mind that execute_in_subshell
@@ -722,7 +746,11 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
     stdin_redir = stdin_redirects (command->redirects);
 
 #if defined (PROCESS_SUBSTITUTION)
-  if (variable_context != 0)
+#  if !defined (HAVE_DEV_FD)
+  reap_procsubs ();
+#  endif
+
+  if (variable_context != 0)   /* XXX - also if sourcelevel != 0? */
     {
       ofifo = num_fifos ();
       ofifo_list = copy_fifo_list ((int *)&osize);
@@ -738,38 +766,45 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
      redirection.)  */
   if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
     {
-      cleanup_redirects (redirection_undo_list);
-      redirection_undo_list = (REDIRECT *)NULL;
+      undo_partial_redirects ();
       dispose_exec_redirects ();
 #if defined (PROCESS_SUBSTITUTION)
       if (saved_fifo)
-        {
+       {
          free ((void *)ofifo_list);
-         discard_unwind_frame ("internal_fifos");
-        }
+          discard_unwind_frame ("internal_fifos");
+       }
 #endif
       return (last_command_exit_value = EXECUTION_FAILURE);
     }
 
+#if 0
   if (redirection_undo_list)
     {
       /* XXX - why copy here? */
       my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list);
-      dispose_redirects (redirection_undo_list);
-      redirection_undo_list = (REDIRECT *)NULL;
+      dispose_partial_redirects ();
     }
   else
     my_undo_list = (REDIRECT *)NULL;
+#else
+  my_undo_list = redirection_undo_list;
+  redirection_undo_list = (REDIRECT *)NULL;
+#endif
 
+#if 0
   if (exec_redirection_undo_list)
     {
       /* XXX - why copy here? */
       exec_undo_list = (REDIRECT *)copy_redirects (exec_redirection_undo_list);
-      dispose_redirects (exec_redirection_undo_list);
-      exec_redirection_undo_list = (REDIRECT *)NULL;
+      dispose_exec_redirects ();
     }
   else
     exec_undo_list = (REDIRECT *)NULL;
+#else
+  exec_undo_list = exec_redirection_undo_list;
+  exec_redirection_undo_list = (REDIRECT *)NULL;
+#endif
 
   if (my_undo_list || exec_undo_list)
     begin_unwind_frame ("loop_redirections");
@@ -795,7 +830,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
 #if defined (RECYCLES_PIDS)
        last_made_pid = NO_PID;
 #endif
-       last_pid = last_made_pid;
        was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
 
        if (ignore_return && command->value.Simple)
@@ -855,8 +889,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
       }
 
       /* 2009/02/13 -- pipeline failure is processed elsewhere.  This handles
-        only the failure of a simple command. */
-      if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)
+        only the failure of a simple command. We don't want to run the error
+        trap if the command run by the `command' builtin fails; we want to
+        defer that until the command builtin itself returns failure. */
+      if (was_error_trap && ignore_return == 0 && invert == 0 &&
+           pipe_in == NO_PIPE && pipe_out == NO_PIPE &&
+           (command->value.Simple->flags & CMD_COMMAND_BUILTIN) == 0 &&
+           exec_result != EXECUTION_SUCCESS)
        {
          last_command_exit_value = exec_result;
          line_number = line_number_for_err_trap;
@@ -1047,10 +1086,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
     }
 
   if (my_undo_list)
-    {
-      do_redirections (my_undo_list, RX_ACTIVE);
-      dispose_redirects (my_undo_list);
-    }
+    cleanup_redirects (my_undo_list);
 
   if (exec_undo_list)
     dispose_redirects (exec_undo_list);
@@ -1090,6 +1126,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
 #  endif
       set_pipestatus_from_exit (exec_result);
       break;
+    default:
+      break;
     }
 #endif
 
@@ -1116,19 +1154,6 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva
 
 static const int precs[] = { 0, 100, 10, 1 };
 
-#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV)
-static int
-decpoint ()
-{
-  struct lconv *lv;
-
-  lv = localeconv ();
-  return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.';
-}
-#else
-#  define decpoint() '.'
-#endif
-
 /* Expand one `%'-prefixed escape sequence from a time format string. */
 static int
 mkfmt (buf, prec, lng, sec, sec_fraction)
@@ -1173,7 +1198,7 @@ mkfmt (buf, prec, lng, sec, sec_fraction)
      and 999. */
   if (prec != 0)
     {
-      buf[ind++] = decpoint ();
+      buf[ind++] = locale_decpoint ();
       for (aind = 1; aind <= prec; aind++)
        {
          buf[ind++] = (sec_fraction / precs[aind]) + '0';
@@ -1357,8 +1382,10 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
   command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX);
   code = setjmp_nosigs (top_level);
   if (code == NOT_JUMPED)
-    rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close);
-  command->flags = old_flags;
+    {
+      rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+      command->flags = old_flags;
+    }
   COPY_PROCENV (save_top_level, top_level);
 
   rs = us = ss = 0;
@@ -1415,6 +1442,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
       else
        time_format = BASH_TIMEFORMAT;
     }
+
   if (time_format && *time_format)
     print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu);
 
@@ -1435,9 +1463,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
      int pipe_in, pipe_out;
      struct fd_bitmap *fds_to_close;
 {
-  int user_subshell, return_code, function_value, should_redir_stdin, invert;
-  int ois, user_coproc;
-  int result;
+  volatile int user_subshell, user_coproc, invert;
+  int return_code, function_value, should_redir_stdin, ois, result;
   volatile COMMAND *tcom;
 
   USE_VAR(user_subshell);
@@ -1497,8 +1524,17 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
   /* Subshells are neither login nor interactive. */
   login_shell = interactive = 0;
 
+  /* And we're no longer in a loop. See Posix interp 842 (we are not in the
+     "same execution environment"). */
+  if (shell_compatibility_level > 44)
+    loop_level = 0;
+
   if (user_subshell)
-    subshell_environment = SUBSHELL_PAREN;     /* XXX */
+    {
+      subshell_environment = SUBSHELL_PAREN;   /* XXX */
+      if (asynchronous)
+       subshell_environment |= SUBSHELL_ASYNC;
+    }
   else
     {
       subshell_environment = 0;                        /* XXX */
@@ -1517,6 +1553,15 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
      trap strings if we run trap to change a signal disposition. */
   reset_signal_handlers ();
   subshell_environment |= SUBSHELL_RESETTRAP;
+#if 0  /* TAG:bash-5.1 */
+  /* We are in a subshell, so forget that we are running a trap handler or
+     that the signal handler has changed (we haven't changed it!) */
+  if (running_trap > 0)
+    {
+      run_trap_cleanup (running_trap - 1);
+      running_trap = 0;
+    }
+#endif
 
   /* Make sure restore_original_signals doesn't undo the work done by
      make_child to ensure that asynchronous children are immune to SIGINT
@@ -1527,18 +1572,16 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
       setup_async_signals ();
       asynchronous = 0;
     }
+  else
+    set_sigint_handler ();
 
 #if defined (JOB_CONTROL)
   set_sigchld_handler ();
 #endif /* JOB_CONTROL */
 
-  set_sigint_handler ();
-
-#if defined (JOB_CONTROL)
   /* Delete all traces that there were any jobs running.  This is
      only for subshells. */
   without_job_control ();
-#endif /* JOB_CONTROL */
 
   if (fds_to_close)
     close_fd_bitmap (fds_to_close);
@@ -1572,6 +1615,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
   if (should_redir_stdin && stdin_redir == 0)
     async_redirect_stdin ();
 
+#if 0
+  /* XXX - TAG:bash-5.1 */
+  if (user_subshell && command->type == cm_subshell)
+    optimize_subshell_command (command->value.Subshell->command);
+#endif
+
   /* Do redirections, then dispose of them before recursive call. */
   if (command->redirects)
     {
@@ -1639,6 +1688,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
     return_code = (return_code == EXECUTION_SUCCESS) ? EXECUTION_FAILURE
                                                     : EXECUTION_SUCCESS;
 
+
   /* If we were explicitly placed in a subshell with (), we need
      to do the `shell cleanup' things, such as running traps[0]. */
   if (user_subshell && signal_is_trapped (0))
@@ -1880,6 +1930,17 @@ cpl_searchbyname (name)
   return (struct cpelement *)NULL;
 }
 
+static pid_t
+cpl_firstactive ()
+{
+  struct cpelement *cpe;
+
+  for (cpe = coproc_list.head ; cpe; cpe = cpe->next)
+    if ((cpe->coproc->c_flags & COPROC_DEAD) == 0)
+      return cpe->coproc->c_pid;
+  return (pid_t)NO_PID;
+}
+
 #if 0
 static void
 cpl_prune ()
@@ -2123,6 +2184,21 @@ coproc_fdrestore (cp)
   cp->c_wfd = cp->c_wsave;
 }
 
+static void
+coproc_setstatus (cp, status)
+     struct coproc *cp;
+     int status;
+{
+  cp->c_lock = 4;
+  cp->c_status = status;
+  cp->c_flags |= COPROC_DEAD;
+  cp->c_flags &= ~COPROC_RUNNING;
+  /* Don't dispose the coproc or unset the COPROC_XXX variables because
+     this is executed in a signal handler context.  Wait until coproc_reap
+     takes care of it. */
+  cp->c_lock = 0;
+}
+
 void
 coproc_pidchk (pid, status)
      pid_t pid;
@@ -2133,24 +2209,26 @@ coproc_pidchk (pid, status)
 #if MULTIPLE_COPROCS
   struct cpelement *cpe;
 
-  cpe = cpl_delete (pid);
+  /* We're not disposing the coproc because this is executed in a signal
+     handler context */
+  cpe = cpl_search (pid);
   cp = cpe ? cpe->coproc : 0;
 #else
   cp = getcoprocbypid (pid);
 #endif
   if (cp)
-    {
-      cp->c_lock = 4;
-      cp->c_status = status;
-      cp->c_flags |= COPROC_DEAD;
-      cp->c_flags &= ~COPROC_RUNNING;
-      /* Don't dispose the coproc or unset the COPROC_XXX variables because
-        this is executed in a signal handler context.  Wait until coproc_reap
-        takes care of it. */
-      cp->c_lock = 0;
-    }
+    coproc_setstatus (cp, status);
 }
 
+pid_t
+coproc_active ()
+{
+#if MULTIPLE_COPROCS
+  return (cpl_firstactive ());
+#else
+  return ((sh_coproc.c_flags & COPROC_DEAD) ? NO_PID : sh_coproc.c_pid);
+#endif
+}
 void
 coproc_setvars (cp)
      struct coproc *cp;
@@ -2185,7 +2263,10 @@ coproc_setvars (cp)
     {
       v = find_variable_nameref_for_create (cp->c_name, 1);
       if (v == INVALID_NAMEREF_VALUE)
-       return;
+       {
+         free (namevar);
+         return;
+       }
       if (v && nameref_p (v))
        {
          free (cp->c_name);
@@ -2198,6 +2279,7 @@ coproc_setvars (cp)
     {
       if (readonly_p (v))
        err_readonly (cp->c_name);
+      free (namevar);
       return;
     }
   if (v == 0)
@@ -2212,7 +2294,7 @@ coproc_setvars (cp)
 
   t = itos (cp->c_wfd);
   ind = 1;
-  bind_array_variable (cp->c_name, ind, t, 0);
+  v = bind_array_variable (cp->c_name, ind, t, 0);
   free (t);
 #else
   sprintf (namevar, "%s_READ", cp->c_name);
@@ -2227,7 +2309,7 @@ coproc_setvars (cp)
 
   sprintf (namevar, "%s_PID", cp->c_name);
   t = itos (cp->c_pid);
-  bind_variable (namevar, t, 0);
+  v = bind_variable (namevar, t, 0);
   free (t);
 
   free (namevar);
@@ -2270,17 +2352,32 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
   int rpipe[2], wpipe[2], estat, invert;
   pid_t coproc_pid;
   Coproc *cp;
-  char *tcmd;
+  char *tcmd, *p, *name;
   sigset_t set, oset;
 
   /* XXX -- can be removed after changes to handle multiple coprocs */
 #if !MULTIPLE_COPROCS
-  if (sh_coproc.c_pid != NO_PID)
+  if (sh_coproc.c_pid != NO_PID && (sh_coproc.c_rfd >= 0 || sh_coproc.c_wfd >= 0))
     internal_warning (_("execute_coproc: coproc [%d:%s] still exists"), sh_coproc.c_pid, sh_coproc.c_name);
   coproc_init (&sh_coproc);
 #endif
 
   invert = (command->flags & CMD_INVERT_RETURN) != 0;
+
+  /* expand name without splitting - could make this dependent on a shopt option */
+  name = expand_string_unsplit_to_string (command->value.Coproc->name, 0);
+  /* Optional check -- could be relaxed */
+  if (legal_identifier (name) == 0)
+    {
+      internal_error (_("`%s': not a valid identifier"), name);
+      return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+    }
+  else
+    {
+      free (command->value.Coproc->name);
+      command->value.Coproc->name = name;
+    }
+
   command_string_index = 0;
   tcmd = make_command_string (command);
 
@@ -2289,13 +2386,17 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
 
   BLOCK_SIGNAL (SIGCHLD, set, oset);
 
-  coproc_pid = make_child (savestring (tcmd), 1);
+  coproc_pid = make_child (p = savestring (tcmd), 1);
 
   if (coproc_pid == 0)
     {
       close (rpipe[0]);
       close (wpipe[1]);
 
+#if defined (JOB_CONTROL)
+      FREE (p);
+#endif
+
       UNBLOCK_SIGNAL (oset);
       estat = execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close);
 
@@ -2308,11 +2409,12 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
   close (rpipe[1]);
   close (wpipe[0]);
 
-  /* XXX - possibly run Coproc->name through word expansion? */
   cp = coproc_alloc (command->value.Coproc->name, coproc_pid);
   cp->c_rfd = rpipe[0];
   cp->c_wfd = wpipe[1];
 
+  cp->c_flags |= COPROC_RUNNING;
+
   SET_CLOSE_ON_EXEC (cp->c_rfd);
   SET_CLOSE_ON_EXEC (cp->c_wfd);
 
@@ -2321,7 +2423,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
   UNBLOCK_SIGNAL (oset);
 
 #if 0
-  itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command);
+  itrace ("execute_coproc (%s): [%d] %s", command->value.Coproc->name, coproc_pid, the_printed_command);
 #endif
 
   close_pipes (pipe_in, pipe_out);
@@ -2349,7 +2451,7 @@ static void
 lastpipe_cleanup (s)
      int s;
 {
-  unfreeze_jobs_list ();
+  set_jobs_list_frozen (s);
 }
 
 static int
@@ -2359,7 +2461,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
      struct fd_bitmap *fds_to_close;
 {
   int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result;
-  int lstdin, lastpipe_flag, lastpipe_jid;
+  int lstdin, lastpipe_flag, lastpipe_jid, old_frozen;
   COMMAND *cmd;
   struct fd_bitmap *fd_bitmap;
   pid_t lastpid;
@@ -2474,9 +2576,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
          prev = NO_PIPE;
          add_unwind_protect (restore_stdin, lstdin);
          lastpipe_flag = 1;
-         freeze_jobs_list ();
+         old_frozen = freeze_jobs_list ();
          lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL);    /* XXX */
-         add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
+         add_unwind_protect (lastpipe_cleanup, old_frozen);
        }
       if (cmd)
        cmd->flags |= CMD_LASTPIPE;
@@ -2522,9 +2624,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
       else if (pipefail_opt)
        exec_result = exec_result | lstdin;     /* XXX */
       /* otherwise we use exec_result */
-        
 #endif
-      unfreeze_jobs_list ();
+
+      set_jobs_list_frozen (old_frozen);
     }
 
   discard_unwind_frame ("lastpipe-exec");
@@ -2779,8 +2881,10 @@ execute_for_command (for_command)
              sh_invalidid (list->word->word);
              v = 0;
            }
+         else if (readonly_p (v))
+           err_readonly (name_cell (v));
          else
-           v = bind_variable_value (v, list->word->word, 0);
+           v = bind_variable_value (v, list->word->word, ASS_NAMEREF);
        }
       else
        v = bind_variable (identifier, list->word->word, 0);
@@ -2835,7 +2939,7 @@ execute_for_command (for_command)
        {
          SHELL_VAR *new_value;
 
-         new_value = bind_variable (identifier, value_cell(old_value), 0);
+         new_value = bind_variable (identifier, value_cell (old_value), 0);
          new_value->attributes = old_value->attributes;
          dispose_variable (old_value);
        }
@@ -2881,7 +2985,7 @@ eval_arith_for_expr (l, okp)
 
       command_string_index = 0;
       print_arith_command (new);
-      if (signal_in_progress (DEBUG_TRAP) == 0)
+      if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
        {
          FREE (the_printed_command_except_trap);
          the_printed_command_except_trap = savestring (the_printed_command);
@@ -2892,7 +2996,7 @@ eval_arith_for_expr (l, okp)
         skip the command. */
 #if defined (DEBUGGER)
       if (debugging_mode == 0 || r == EXECUTION_SUCCESS)
-       expresult = evalexp (new->word->word, okp);
+       expresult = evalexp (new->word->word, EXP_EXPANDED, okp);
       else
        {
          expresult = 0;
@@ -2900,7 +3004,7 @@ eval_arith_for_expr (l, okp)
            *okp = 1;
        }
 #else
-      expresult = evalexp (new->word->word, okp);
+      expresult = evalexp (new->word->word, EXP_EXPANDED, okp);
 #endif
       dispose_words (new);
     }
@@ -2933,11 +3037,12 @@ execute_arith_for_command (arith_for_command)
      line_number before executing each expression -- for $LINENO
      and the DEBUG trap. */
   line_number = arith_lineno = arith_for_command->line;
-  if (variable_context && interactive_shell)
+  if (variable_context && interactive_shell && sourcelevel == 0)
     {
-      line_number -= function_line_number;
-      if (line_number < 0)
-       line_number = 0;
+      /* line numbers in a function start at 1 */
+      line_number -= function_line_number - 1;
+      if (line_number <= 0)
+       line_number = 1;
     }
 
   /* Evaluate the initialization expression. */
@@ -3142,12 +3247,7 @@ select_query (list, list_len, prompt, print_menu)
   WORD_LIST *l;
   char *repl_string, *t;
 
-#if 0
-  t = get_string_value ("LINES");
-  LINES = (t && *t) ? atoi (t) : 24;
-#endif
-  t = get_string_value ("COLUMNS");
-  COLS =  (t && *t) ? atoi (t) : 80;
+  COLS = default_columns ();
 
 #if 0
   t = get_string_value ("TABSIZE");
@@ -3350,7 +3450,7 @@ execute_case_command (case_command)
   WORD_LIST *wlist, *es;
   PATTERN_LIST *clauses;
   char *word, *pattern;
-  int retval, match, ignore_return, save_line_number;
+  int retval, match, ignore_return, save_line_number, qflags;
 
   save_line_number = line_number;
   line_number = case_command->line;
@@ -3382,8 +3482,20 @@ execute_case_command (case_command)
     }
 #endif
 
-  wlist = expand_word_unsplit (case_command->word, 0);
-  word = wlist ? string_list (wlist) : savestring ("");
+  /* Use the same expansions (the ones POSIX specifies) as the patterns;
+     dequote the resulting string (as POSIX specifies) since the quotes in
+     patterns are handled specially below. We have to do it in this order
+     because we're not supposed to perform word splitting. */
+  wlist = expand_word_leave_quoted (case_command->word, 0);
+  if (wlist)
+    {
+      char *t;
+      t = string_list (wlist);
+      word = dequote_string (t);
+      free (t);
+    }
+  else
+    word = savestring ("");
   dispose_words (wlist);
 
   retval = EXECUTION_SUCCESS;
@@ -3402,7 +3514,18 @@ execute_case_command (case_command)
          es = expand_word_leave_quoted (list->word, 0);
 
          if (es && es->word && es->word->word && *(es->word->word))
-           pattern = quote_string_for_globbing (es->word->word, QGLOB_CVTNULL);
+           {
+             /* Convert quoted null strings into empty strings. */
+             qflags = QGLOB_CVTNULL;
+
+             /* We left CTLESC in place quoting CTLESC and CTLNUL after the
+                call to expand_word_leave_quoted; tell quote_string_for_globbing
+                to remove those here. This works for both unquoted portions of
+                the word (which call quote_escapes) and quoted portions
+                (which call quote_string). */
+             qflags |= QGLOB_CTLESC;
+             pattern = quote_string_for_globbing (es->word->word, qflags);
+           }
          else
            {
              pattern = (char *)xmalloc (1);
@@ -3581,19 +3704,20 @@ execute_arith_command (arith_command)
 
   save_line_number = line_number;
   this_command_name = "((";    /* )) */
-  line_number = arith_command->line;
+  line_number_for_err_trap = line_number = arith_command->line;
   /* If we're in a function, update the line number information. */
-  if (variable_context && interactive_shell)
+  if (variable_context && interactive_shell && sourcelevel == 0)
     {
-      line_number -= function_line_number;
-      if (line_number < 0)
-       line_number = 0;
+      /* line numbers in a function start at 1 */
+      line_number -= function_line_number - 1;
+      if (line_number <= 0)
+       line_number = 1;
     }      
 
   command_string_index = 0;
   print_arith_command (arith_command->exp);
 
-  if (signal_in_progress (DEBUG_TRAP) == 0)
+  if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
     {
       FREE (the_printed_command_except_trap);
       the_printed_command_except_trap = savestring (the_printed_command);
@@ -3623,7 +3747,7 @@ execute_arith_command (arith_command)
   if (new)
     {
       exp = new->next ? string_list (new) : new->word->word;
-      expresult = evalexp (exp, &expok);
+      expresult = evalexp (exp, EXP_EXPANDED, &expok);
       line_number = save_line_number;
       if (exp != new->word->word)
        free (exp);
@@ -3779,22 +3903,22 @@ execute_cond_command (cond_command)
 {
   int retval, save_line_number;
 
-  retval = EXECUTION_SUCCESS;
   save_line_number = line_number;
 
   this_command_name = "[[";
-  line_number = cond_command->line;
+  line_number_for_err_trap = line_number = cond_command->line;
   /* If we're in a function, update the line number information. */
-  if (variable_context && interactive_shell)
+  if (variable_context && interactive_shell && sourcelevel == 0)
     {
-      line_number -= function_line_number;
-      if (line_number < 0)
-       line_number = 0;
+      /* line numbers in a function start at 1 */
+      line_number -= function_line_number - 1;
+      if (line_number <= 0)
+       line_number = 1;
     }
   command_string_index = 0;
   print_cond_command (cond_command);
 
-  if (signal_in_progress (DEBUG_TRAP) == 0)
+  if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
     {
       FREE (the_printed_command_except_trap);
       the_printed_command_except_trap = savestring (the_printed_command);
@@ -3849,7 +3973,11 @@ execute_null_command (redirects, pipe_in, pipe_out, async)
   REDIRECT *rd;
 
   for (forcefork = 0, rd = redirects; rd; rd = rd->next)
-    forcefork += rd->rflags & REDIR_VARASSIGN;
+    {
+      forcefork += rd->rflags & REDIR_VARASSIGN;
+      /* Safety */
+      forcefork += (rd->redirector.dest == 0 || fd_is_bash_input (rd->redirector.dest)) && (INPUT_REDIRECT (rd->instruction) || TRANSLATE_REDIRECT (rd->instruction) || rd->instruction == r_close_this);
+    }
 
   if (forcefork || pipe_in != NO_PIPE || pipe_out != NO_PIPE || async)
     {
@@ -3866,6 +3994,8 @@ execute_null_command (redirects, pipe_in, pipe_out, async)
          coproc_closeall ();
 #endif
 
+         interactive = 0;                      /* XXX */
+
          subshell_environment = 0;
          if (async)
            subshell_environment |= SUBSHELL_ASYNC;
@@ -3962,9 +4092,14 @@ fix_assignment_words (words)
 
        /* If we have an assignment builtin that does not create local variables,
           make sure we create global variables even if we internally call
-          `declare' */
+          `declare'.  The CHKLOCAL flag means to set attributes or values on
+          an existing local variable, if there is one. */
        if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN))
-         w->word->flags |= W_ASSNGLOBAL;
+         w->word->flags |= W_ASSNGLOBAL|W_CHKLOCAL;
+#if 0
+       else if (b && (b->flags & ASSIGNMENT_BUILTIN) && (b->flags & LOCALVAR_BUILTIN))
+         w->word->flags |= W_CHKLOCAL;
+#endif
       }
 #if defined (ARRAY_VARS)
     /* Note that we saw an associative array option to a builtin that takes
@@ -4032,9 +4167,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
   /* If we're in a function, update the line number information. */
   if (variable_context && interactive_shell && sourcelevel == 0)
     {
-      line_number -= function_line_number;
-      if (line_number < 0)
-       line_number = 0;
+      /* line numbers in a function start at 1 */
+      line_number -= function_line_number - 1;
+      if (line_number <= 0)
+       line_number = 1;
     }
 
   /* Remember what this command line looks like at invocation. */
@@ -4067,7 +4203,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
   last_command_subst_pid = NO_PID;
   old_last_async_pid = last_asynchronous_pid;
 
-  already_forked = dofork = 0;
+  already_forked = 0;
 
   /* If we're in a pipeline or run in the background, set DOFORK so we
      make the child early, before word expansion.  This keeps assignment
@@ -4085,13 +4221,15 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
 
   if (dofork)
     {
+      char *p;
+
       /* Do this now, because execute_disk_command will do it anyway in the
         vast majority of cases. */
       maybe_make_export_env ();
 
       /* Don't let a DEBUG trap overwrite the command string to be saved with
         the process/job associated with this child. */
-      if (make_child (savestring (the_printed_command_except_trap), async) == 0)
+      if (make_child (p = savestring (the_printed_command_except_trap), async) == 0)
        {
          already_forked = 1;
          simple_command->flags |= CMD_NO_FORK;
@@ -4124,6 +4262,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
 
          if (async)
            subshell_level++;           /* not for pipes yet */
+
+#if defined (JOB_CONTROL)
+         FREE (p);                     /* child doesn't use pointer */
+#endif
        }
       else
        {
@@ -4133,14 +4275,18 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
            result = last_command_exit_value;
          close_pipes (pipe_in, pipe_out);
 #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+#if 0
          /* Close /dev/fd file descriptors in the parent after forking the
             last child in a (possibly one-element) pipeline.  Defer this
             until any running shell function completes. */
          if (pipe_out == NO_PIPE && variable_context == 0)     /* XXX */
            unlink_fifo_list ();                /* XXX */
+#endif
 #endif
          command_line = (char *)NULL;      /* don't free this. */
+#if 0
          bind_lastarg ((char *)NULL);
+#endif
          return (result);
        }
     }
@@ -4345,10 +4491,18 @@ run_builtin:
                          last_command_exit_value = EXECUTION_FAILURE;
                          jump_to_top_level (ERREXIT);
                        }
+                     break;
+                   case EX_DISKFALLBACK:
+                     /* XXX - experimental */
+                     executing_builtin = old_builtin;
+                     executing_command_builtin = old_command_builtin;
+                     builtin = 0;
+                     /* XXX - redirections will have to be performed again */
+                     goto execute_from_filesystem;
                    }
                  result = builtin_status (result);
                  if (builtin_is_special)
-                   special_builtin_failed = 1;
+                   special_builtin_failed = 1; /* XXX - take command builtin into account? */
                }
              /* In POSIX mode, if there are assignment statements preceding
                 a special builtin, they persist after the builtin
@@ -4379,6 +4533,7 @@ run_builtin:
       goto run_builtin;
     }
 
+execute_from_filesystem:
   if (command_line == 0)
     command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : "");
 
@@ -4439,11 +4594,12 @@ execute_builtin (builtin, words, flags, subshell)
      WORD_LIST *words;
      int flags, subshell;
 {
-  int result, eval_unwind, ignexit_flag, old_e_flag;
-  int isbltinenv;
+  int result, eval_unwind, ignexit_flag;
+  int isbltinenv, should_keep;
   char *error_trap;
 
   error_trap = 0;
+  should_keep = 0;
 
   /* The eval builtin calls parse_and_execute, which does not know about
      the setting of flags, and always calls the execution functions with
@@ -4479,7 +4635,18 @@ execute_builtin (builtin, words, flags, subshell)
      problem only with the `unset', `source' and `eval' builtins.
      `mapfile' is a special case because it uses evalstring (same as
      eval or source) to run its callbacks. */
+  /* SHOULD_KEEP is for the pop_scope call below; it only matters when
+     posixly_correct is set, but we should propagate the temporary environment
+     to the enclosing environment only for special builtins. */
   isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin || builtin == mapfile_builtin);
+  should_keep = isbltinenv && builtin != mapfile_builtin;
+#if defined (HISTORY) && defined (READLINE)
+  if (builtin == fc_builtin || builtin == read_builtin)
+    {
+      isbltinenv = 1;
+      should_keep = 0;
+    }
+#endif
 
   if (isbltinenv)
     {
@@ -4489,8 +4656,10 @@ execute_builtin (builtin, words, flags, subshell)
       if (temporary_env)
        {
          push_scope (VC_BLTNENV, temporary_env);
+         if (flags & CMD_COMMAND_BUILTIN)
+           should_keep = 0;
          if (subshell == 0)
-           add_unwind_protect (pop_scope, (flags & CMD_COMMAND_BUILTIN) ? 0 : "1");
+           add_unwind_protect (pop_scope, should_keep ? "1" : 0);
           temporary_env = (HASH_TABLE *)NULL;    
        }
     }
@@ -4523,8 +4692,10 @@ execute_builtin (builtin, words, flags, subshell)
   /* `return' does a longjmp() back to a saved environment in execute_function.
      If a variable assignment list preceded the command, and the shell is
      running in POSIX mode, we need to merge that into the shell_variables
-     table, since `return' is a POSIX special builtin. */
-  if (posixly_correct && subshell == 0 && builtin == return_builtin && temporary_env)
+     table, since `return' is a POSIX special builtin. We don't do this if
+     it's being run by the `command' builtin, since that's supposed to inhibit
+     the special builtin properties. */
+  if (posixly_correct && subshell == 0 && builtin == return_builtin && (flags & CMD_COMMAND_BUILTIN) == 0 && temporary_env)
     {
       begin_unwind_frame ("return_temp_env");
       add_unwind_protect (merge_temporary_env, (char *)NULL);
@@ -4549,7 +4720,7 @@ execute_builtin (builtin, words, flags, subshell)
       if (error_trap)
        {
          set_error_trap (error_trap);
-         xfree (error_trap);
+         free (error_trap);
        }
       discard_unwind_frame ("eval_builtin");
     }
@@ -4561,8 +4732,6 @@ static void
 maybe_restore_getopt_state (gs)
      sh_getopt_state_t *gs;
 {
-  SHELL_VAR *v;
-
   /* If we have a local copy of OPTIND and it's at the right (current)
      context, then we restore getopt's internal state.  If not, we just
      let it go.  We know there is a local OPTIND if gs->gs_flags & 1.
@@ -4638,6 +4807,12 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
   if (subshell == 0)
     {
       begin_unwind_frame ("function_calling");
+      /* If the shell is in posix mode, this will push the variables in
+        the temporary environment to the "current shell environment" (the
+        global scope), and dispose the temporary env before setting it to
+        NULL later. This behavior has disappeared from the latest edition
+        of the standard, so I will eventually remove it from variables.c:
+        push_var_context. */
       push_context (var->name, subshell, temporary_env);
       /* This has to be before the pop_context(), because the unwinding of
         local variables may cause the restore of a local declaration of
@@ -4698,11 +4873,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
 
   /* Shell functions inherit the RETURN trap if function tracing is on
      globally or on individually for this function. */
-#if 0
-  if (return_trap && ((trace_p (var) == 0) && function_trace_mode == 0))
-#else
   if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0)))
-#endif
     {
       if (subshell == 0)
        {
@@ -4741,6 +4912,11 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
   /* The temporary environment for a function is supposed to apply to
      all commands executed within the function body. */
 
+  /* Initialize BASH_ARGC and BASH_ARGV before we blow away the positional
+     parameters */
+  if (debugging_mode || shell_compatibility_level <= 44)
+    init_bash_argv ();
+
   remember_args (words->next, 1);
 
   /* Update BASH_ARGV and BASH_ARGC */
@@ -4911,6 +5087,8 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var,
     without_job_control ();
 
   set_sigchld_handler ();
+#else
+  without_job_control ();
 #endif /* JOB_CONTROL */
 
   set_sigint_handler ();
@@ -4947,6 +5125,15 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var,
          fflush (stdout);
          if (r == EX_USAGE)
            r = EX_BADUSAGE;
+         /* XXX - experimental */
+         else if (r == EX_DISKFALLBACK)
+           {
+             char *command_line;
+
+             command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : "");
+             r = execute_disk_command (words, (REDIRECT *)0, command_line,
+                 -1, -1, async, (struct fd_bitmap *)0, flags|CMD_NO_FORK);
+           }
          sh_exit (r);
        }
     }
@@ -4995,8 +5182,7 @@ execute_builtin_or_function (words, builtin, var, redirects,
 
   if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
     {
-      cleanup_redirects (redirection_undo_list);
-      redirection_undo_list = (REDIRECT *)NULL;
+      undo_partial_redirects ();
       dispose_exec_redirects ();
 #if defined (PROCESS_SUBSTITUTION)
       free (ofifo_list);
@@ -5063,11 +5249,7 @@ execute_builtin_or_function (words, builtin, var, redirects,
       discard_unwind_frame ("saved-redirects");
     }
 
-  if (redirection_undo_list)
-    {
-      cleanup_redirects (redirection_undo_list);
-      redirection_undo_list = (REDIRECT *)NULL;
-    }
+  undo_partial_redirects ();
 
 #if defined (PROCESS_SUBSTITUTION)
   /* Close any FIFOs created by this builtin or function. */
@@ -5139,7 +5321,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
      struct fd_bitmap *fds_to_close;
      int cmdflags;
 {
-  char *pathname, *command, **args;
+  char *pathname, *command, **args, *p;
   int nofork, stdpath, result;
   pid_t pid;
   SHELL_VAR *hookf;
@@ -5149,6 +5331,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
   nofork = (cmdflags & CMD_NO_FORK);   /* Don't fork, just exec, if no pipes */
   pathname = words->word->word;
 
+  p = 0;
   result = EXECUTION_SUCCESS;
 #if defined (RESTRICTED_SHELL)
   command = (char *)NULL;
@@ -5168,9 +5351,15 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
 #endif /* RESTRICTED_SHELL */
 
   command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0));
+  QUIT;
 
   if (command)
     {
+      /* If we're optimizing out the fork (implicit `exec'), decrement the
+        shell level like `exec' would do. */
+      if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+       adjust_shell_level (-1);
+
       maybe_make_export_env ();
       put_command_name_into_env (command);
     }
@@ -5182,7 +5371,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
   if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
     pid = 0;
   else
-    pid = make_child (savestring (command_line), async);
+    pid = make_child (p = savestring (command_line), async);
 
   if (pid == 0)
     {
@@ -5194,6 +5383,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
 
       CHECK_SIGTERM;
 
+#if defined (JOB_CONTROL)
+      FREE (p);
+#endif
+
       /* restore_original_signals may have undone the work done
         by make_child to ensure that SIGINT and SIGQUIT are ignored
         in asynchronous children. */
@@ -5246,9 +5439,13 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
              exit (EX_NOTFOUND);       /* Posix.2 says the exit status is 127 */
            }
 
+         /* We don't want to manage process groups for processes we start
+            from here, so we turn off job control and don't attempt to
+            manipulate the terminal's process group. */
+         without_job_control ();
+
 #if defined (JOB_CONTROL)
-         /* May need to reinitialize more of the job control state here. */
-         kill_current_pipeline ();
+         set_sigchld_handler ();
 #endif
 
          wl = make_word_list (make_word (NOTFOUND_HOOK), words);
@@ -5271,8 +5468,10 @@ parent_return:
       /* Make sure that the pipes are closed in the parent. */
       close_pipes (pipe_in, pipe_out);
 #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
+#if 0
       if (variable_context == 0)
         unlink_fifo_list ();
+#endif
 #endif
       FREE (command);
       return (result);
@@ -5619,6 +5818,7 @@ execute_intern_function (name, funcdef)
      FUNCTION_DEF *funcdef;
 {
   SHELL_VAR *var;
+  char *t;
 
   if (check_identifier (name, posixly_correct) == 0)
     {
@@ -5630,6 +5830,13 @@ execute_intern_function (name, funcdef)
       return (EXECUTION_FAILURE);
     }
 
+  if (strchr (name->word, CTLESC))     /* WHY? */
+    {
+      t = dequote_escapes (name->word);
+      free (name->word);
+      name->word = t;
+    }
+
   /* Posix interpretation 383 */
   if (posixly_correct && find_special_builtin (name->word))
     {
@@ -5647,7 +5854,7 @@ execute_intern_function (name, funcdef)
     }
 
 #if defined (DEBUGGER)
-  bind_function_def (name->word, funcdef);
+  bind_function_def (name->word, funcdef, 1);
 #endif
 
   bind_function (name->word, funcdef->command);
index 62bec829d86f0fb03be5e71e4c58624e5bca4070..dc2f15ec65d64c601d69ffbae2f4d7337c048bb1 100644 (file)
@@ -1,6 +1,6 @@
 /* execute_cmd.h - functions from execute_cmd.c. */
 
-/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -35,6 +35,40 @@ struct func_array_state
   };
 #endif
 
+/* Placeholder for later expansion to include more execution state */
+/* XXX - watch out for pid_t */
+struct execstate
+  {
+    pid_t pid;
+    int subshell_env;
+  };
+       
+
+/* Variables delared in execute_cmd.c, used by many other files */
+extern int return_catch_flag;
+extern int return_catch_value;
+extern volatile int last_command_exit_value;
+extern int last_command_exit_signal;
+extern int builtin_ignoring_errexit;
+extern int executing_builtin;
+extern int executing_list;
+extern int comsub_ignore_return;
+extern int subshell_level;
+extern int match_ignore_case;
+extern int executing_command_builtin;
+extern int funcnest, funcnest_max;
+extern int evalnest, evalnest_max;
+extern int sourcenest, sourcenest_max;
+extern int stdin_redir;
+extern int line_number_for_err_trap;
+
+extern char *the_printed_command_except_trap;
+
+extern char *this_command_name;
+extern SHELL_VAR *this_shell_function;
+
+/* Functions delared in execute_cmd.c, used by many other files */
+
 extern struct fd_bitmap *new_fd_bitmap __P((int));
 extern void dispose_fd_bitmap __P((struct fd_bitmap *));
 extern void close_fd_bitmap __P((struct fd_bitmap *));
@@ -43,7 +77,10 @@ extern int execute_command __P((COMMAND *));
 extern int execute_command_internal __P((COMMAND *, int, int, int, struct fd_bitmap *));
 extern int shell_execve __P((char *, char **, char **));
 extern void setup_async_signals __P((void));
-extern void dispose_exec_redirects __P ((void));
+
+extern void undo_partial_redirects __P((void));
+extern void dispose_partial_redirects __P((void));
+extern void dispose_exec_redirects __P((void));
 
 extern int execute_shell_function __P((SHELL_VAR *, WORD_LIST *));
 
@@ -57,6 +94,7 @@ extern void coproc_flush __P((void));
 extern void coproc_close __P((struct coproc *));
 extern void coproc_closeall __P((void));
 extern void coproc_reap __P((void));
+extern pid_t coproc_active __P((void));
 
 extern void coproc_rclose __P((struct coproc *, int));
 extern void coproc_wclose __P((struct coproc *, int));
diff --git a/expr.c b/expr.c
index 172964a24a48eb321d1a325559bc7eaf28121fff..9edc8d9cddbe9f39db2c1d79dfa11a23a9653ac5 100644 (file)
--- a/expr.c
+++ b/expr.c
@@ -26,8 +26,8 @@
  order of decreasing precedence.
 
        "id++", "id--"          [post-increment and post-decrement]
-       "++id", "--id"          [pre-increment and pre-decrement]
        "-", "+"                [(unary operators)]
+       "++id", "--id"          [pre-increment and pre-decrement]
        "!", "~"
        "**"                    [(exponentiation)]
        "*", "/", "%"
 #include "bashintl.h"
 
 #include "shell.h"
+#include "arrayfunc.h"
+#include "execute_cmd.h"
+#include "flags.h"
+#include "subst.h"
 #include "typemax.h"           /* INTMAX_MAX, INTMAX_MIN */
 
 /* Because of the $((...)) construct, expressions may include newlines.
@@ -171,6 +175,9 @@ static intmax_t     tokval;         /* current token value */
 static int     noeval;         /* set to 1 if no assignment to be done */
 static procenv_t evalbuf;
 
+/* set to 1 if the expression has already been run through word expansion */
+static int     already_expanded;
+
 static struct lvalue curlval = {0, 0, 0, -1};
 static struct lvalue lastlval = {0, 0, 0, -1};
 
@@ -207,7 +214,7 @@ static intmax_t exp5 __P((void));
 static intmax_t exp4 __P((void));
 static intmax_t expshift __P((void));
 static intmax_t exp3 __P((void));
-static intmax_t exp2 __P((void));
+static intmax_t expmuldiv __P((void));
 static intmax_t        exppower __P((void));
 static intmax_t exp1 __P((void));
 static intmax_t exp0 __P((void));
@@ -217,9 +224,6 @@ static EXPR_CONTEXT **expr_stack;
 static int expr_depth;            /* Location in the stack. */
 static int expr_stack_size;       /* Number of slots already allocated. */
 
-extern char *this_command_name;
-extern int unbound_vars_is_error, last_command_exit_value;
-
 #if defined (ARRAY_VARS)
 extern const char * const bash_badsub_errmsg;
 #endif
@@ -279,8 +283,13 @@ popexp ()
 {
   EXPR_CONTEXT *context;
 
-  if (expr_depth == 0)
-    evalerror (_("recursion stack underflow"));
+  if (expr_depth <= 0)
+    {
+      /* See the comment at the top of evalexp() for an explanation of why
+        this is done. */
+      expression = lasttp = 0;
+      evalerror (_("recursion stack underflow"));
+    }
 
   context = expr_stack[--expr_depth];
 
@@ -303,7 +312,8 @@ expr_unwind ()
 
       free (expr_stack[expr_depth]);
     }
-  free (expr_stack[expr_depth]);       /* free the allocated EXPR_CONTEXT */
+  if (expr_depth == 0)
+    free (expr_stack[expr_depth]);     /* free the allocated EXPR_CONTEXT */
 
   noeval = 0;  /* XXX */
 }
@@ -313,14 +323,44 @@ expr_bind_variable (lhs, rhs)
      char *lhs, *rhs;
 {
   SHELL_VAR *v;
+  int aflags;
 
-  v = bind_int_variable (lhs, rhs);
+  if (lhs == 0 || *lhs == 0)
+    return;            /* XXX */
+
+#if defined (ARRAY_VARS)
+  aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0;
+#else
+  aflags = 0;
+#endif
+  v = bind_int_variable (lhs, rhs, aflags);
   if (v && (readonly_p (v) || noassign_p (v)))
     sh_longjmp (evalbuf, 1);   /* variable assignment error */
   stupidly_hack_special_variables (lhs);
 }
 
 #if defined (ARRAY_VARS)
+/* This is similar to the logic in arrayfunc.c:valid_array_subscript when
+   you pass VA_NOEXPAND. */
+static int
+expr_skipsubscript (vp, cp)
+     char *vp, *cp;
+{
+  int flags, isassoc;
+  SHELL_VAR *entry;
+
+  isassoc = 0;
+  entry = 0;
+  if (assoc_expand_once & already_expanded)
+    {
+      *cp = '\0';
+      isassoc = legal_identifier (vp) && (entry = find_variable (vp)) && assoc_p (entry);
+      *cp = '[';       /* ] */
+    }
+  flags = (isassoc && assoc_expand_once && already_expanded) ? VA_NOEXPAND : 0;
+  return (skipsubscript (cp, 0, flags));
+}
+
 /* Rewrite tok, which is of the form vname[expression], to vname[ind], where
    IND is the already-calculated value of expression. */
 static void
@@ -334,7 +374,7 @@ expr_bind_array_element (tok, ind, rhs)
   char ibuf[INT_STRLEN_BOUND (arrayind_t) + 1], *istr;
 
   istr = fmtumax (ind, 10, ibuf, sizeof (ibuf), 0);
-  vname = array_variable_name (tok, (char **)NULL, (int *)NULL);
+  vname = array_variable_name (tok, 0, (char **)NULL, (int *)NULL);
 
   llen = strlen (vname) + sizeof (ibuf) + 3;
   lhs = xmalloc (llen);
@@ -362,8 +402,9 @@ expr_bind_array_element (tok, ind, rhs)
    safe to let the loop terminate when expr_depth == 0, without freeing up
    any of the expr_depth[0] stuff. */
 intmax_t
-evalexp (expr, validp)
+evalexp (expr, flags, validp)
      char *expr;
+     int flags;
      int *validp;
 {
   intmax_t val;
@@ -372,6 +413,7 @@ evalexp (expr, validp)
 
   val = 0;
   noeval = 0;
+  already_expanded = (flags&EXP_EXPANDED);
 
   FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf));
 
@@ -384,6 +426,10 @@ evalexp (expr, validp)
       tokstr = expression = (char *)NULL;
 
       expr_unwind ();
+      expr_depth = 0;  /* XXX - make sure */
+
+      /* We copy in case we've called evalexp recursively */
+      FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf));
 
       if (validp)
        *validp = 0;
@@ -480,6 +526,9 @@ expassign ()
          lvalue = value;
        }
 
+      if (tokstr == 0)
+       evalerror (_("syntax error in variable assignment"));
+
       /* XXX - watch out for pointer aliasing issues here */
       lhs = savestring (tokstr);
       /* save ind in case rhs is string var and evaluation overwrites it */
@@ -809,14 +858,14 @@ exp3 ()
 {
   register intmax_t val1, val2;
 
-  val1 = exp2 ();
+  val1 = expmuldiv ();
 
   while ((curtok == PLUS) || (curtok == MINUS))
     {
       int op = curtok;
 
       readtok ();
-      val2 = exp2 ();
+      val2 = expmuldiv ();
 
       if (op == PLUS)
        val1 += val2;
@@ -828,7 +877,7 @@ exp3 ()
 }
 
 static intmax_t
-exp2 ()
+expmuldiv ()
 {
   register intmax_t val1, val2;
 #if defined (HAVE_IMAXDIV)
@@ -987,7 +1036,8 @@ exp0 ()
            expr_bind_array_element (curlval.tokstr, curlval.ind, vincdec);
          else
 #endif
-           expr_bind_variable (tokstr, vincdec);
+           if (tokstr)
+             expr_bind_variable (tokstr, vincdec);
        }
       free (vincdec);
       val = v2;
@@ -1093,19 +1143,28 @@ expr_streval (tok, e, lvalue)
   SHELL_VAR *v;
   char *value;
   intmax_t tval;
+  int initial_depth;
 #if defined (ARRAY_VARS)
   arrayind_t ind;
+  int tflag, aflag;
 #endif
 
-/*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/
+/*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/
   /* If we are suppressing evaluation, just short-circuit here instead of
      going through the rest of the evaluator. */
   if (noeval)
     return (0);
 
+  initial_depth = expr_depth;
+
+#if defined (ARRAY_VARS)
+  tflag = assoc_expand_once && already_expanded;       /* for a start */
+#endif
+
   /* [[[[[ */
 #if defined (ARRAY_VARS)
-  v = (e == ']') ? array_variable_part (tok, (char **)0, (int *)0) : find_variable (tok);
+  aflag = (tflag) ? AV_NOEXPAND : 0;
+  v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok);
 #else
   v = find_variable (tok);
 #endif
@@ -1113,7 +1172,7 @@ expr_streval (tok, e, lvalue)
   if ((v == 0 || invisible_p (v)) && unbound_vars_is_error)
     {
 #if defined (ARRAY_VARS)
-      value = (e == ']') ? array_variable_name (tok, (char **)0, (int *)0) : tok;
+      value = (e == ']') ? array_variable_name (tok, tflag, (char **)0, (int *)0) : tok;
 #else
       value = tok;
 #endif
@@ -1141,15 +1200,23 @@ expr_streval (tok, e, lvalue)
 
 #if defined (ARRAY_VARS)
   ind = -1;
-  /* Second argument of 0 to get_array_value means that we don't allow
-     references like array[@].  In this case, get_array_value is just
-     like get_variable_value in that it does not return newly-allocated
-     memory or quote the results. */
-  value = (e == ']') ? get_array_value (tok, 0, (int *)NULL, &ind) : get_variable_value (v);
+  /* If the second argument to get_array_value doesn't include AV_ALLOWALL,
+     we don't allow references like array[@].  In this case, get_array_value
+     is just like get_variable_value in that it does not return newly-allocated
+     memory or quote the results.  AFLAG is set above and is either AV_NOEXPAND
+     or 0. */
+  value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v);
 #else
   value = get_variable_value (v);
 #endif
 
+  if (expr_depth < initial_depth)
+    {
+      if (no_longjmp_on_fatal_error && interactive_shell)
+       sh_longjmp (evalbuf, 1);
+      return (0);
+    }
+
   tval = (value && *value) ? subexpr (value) : 0;
 
   if (lvalue)
@@ -1270,7 +1337,7 @@ readtok ()
 #if defined (ARRAY_VARS)
       if (c == '[')
        {
-         e = skipsubscript (cp, 0, 0);
+         e = expr_skipsubscript (tp, cp);              /* XXX - was skipsubscript */
          if (cp[e] == ']')
            {
              cp += e + 1;
@@ -1371,6 +1438,14 @@ readtok ()
        c = POWER;
       else if ((c == '-' || c == '+') && c1 == c && curtok == STR)
        c = (c == '-') ? POSTDEC : POSTINC;
+      else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC))
+       {
+         /* This catches something like --FOO++ */
+         if (c == '-')
+           evalerror ("--: assignment requires lvalue");
+         else
+           evalerror ("++: assignment requires lvalue");
+       }
       else if ((c == '-' || c == '+') && c1 == c)
        {
          /* Quickly scan forward to see if this is followed by optional
@@ -1381,7 +1456,20 @@ readtok ()
          if (legal_variable_starter ((unsigned char)*xp))
            c = (c == '-') ? PREDEC : PREINC;
          else
+           /* Could force parsing as preinc or predec and throw an error */
+#if 0
+           {
+             /* Posix says unary plus and minus have higher priority than
+                preinc and predec. */
+             /* This catches something like --4++ */
+             if (c == '-')
+               evalerror ("--: assignment requires lvalue");
+             else
+               evalerror ("++: assignment requires lvalue");
+           }
+#else
            cp--;       /* not preinc or predec, so unget the character */
+#endif
        }
       else if (c1 == EQ && member (c, "*/%+-&^|"))
        {
@@ -1417,11 +1505,11 @@ evalerror (msg)
   char *name, *t;
 
   name = this_command_name;
-  for (t = expression; whitespace (*t); t++)
+  for (t = expression; t && whitespace (*t); t++)
     ;
   internal_error (_("%s%s%s: %s (error token is \"%s\")"),
-                  name ? name : "", name ? ": " : "", t,
-                  msg, (lasttp && *lasttp) ? lasttp : "");
+                  name ? name : "", name ? ": " : "",
+                  t ? t : "", msg, (lasttp && *lasttp) ? lasttp : "");
   sh_longjmp (evalbuf, 1);
 }
 
@@ -1544,7 +1632,7 @@ main (argc, argv)
 
   for (i = 1; i < argc; i++)
     {
-      v = evalexp (argv[i], &expok);
+      v = evalexp (argv[i], 0, &expok);
       if (expok == 0)
        fprintf (stderr, _("%s: expression error\n"), argv[i]);
       else
index fa0603d346578527f81b162cdf6a103e876d39a6..72df33d1627657ea6d45720fc394dcb68d5f375e 100644 (file)
--- a/externs.h
+++ b/externs.h
@@ -27,7 +27,9 @@
 #include "stdc.h"
 
 /* Functions from expr.c. */
-extern intmax_t evalexp __P((char *, int *));
+#define EXP_EXPANDED   0x01
+
+extern intmax_t evalexp __P((char *, int, int *));
 
 /* Functions from print_cmd.c. */
 #define FUNC_MULTILINE 0x01
@@ -92,6 +94,7 @@ extern void get_current_user_info __P((void));
 
 /* Functions from eval.c. */
 extern int reader_loop __P((void));
+extern int pretty_print_loop __P((void));
 extern int parse_command __P((void));
 extern int read_command __P((void));
 
@@ -106,6 +109,7 @@ extern int return_EOF __P((void));
 extern void push_token __P((int));
 extern char *xparse_dolparen __P((char *, char *, int *, int));
 extern void reset_parser __P((void));
+extern void reset_readahead_token __P((void));
 extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *));
 
 extern int parser_in_command_position __P((void));
@@ -137,6 +141,9 @@ extern char *get_locale_var __P((char *));
 extern char *localetrans __P((char *, int, int *));
 extern char *mk_msgstr __P((char *, int *));
 extern char *localeexpand __P((char *, int, int, int, int *));
+#ifndef locale_decpoint
+extern int locale_decpoint __P((void));
+#endif
 
 /* Declarations for functions defined in list.c. */
 extern void list_walk __P((GENERIC_LIST *, sh_glist_func_t *));
@@ -336,7 +343,7 @@ extern char *dirspell __P((char *));
 
 /* declarations for functions defined in lib/sh/strcasecmp.c */
 #if !defined (HAVE_STRCASECMP)
-extern int strncasecmp __P((const char *, const char *, int));
+extern int strncasecmp __P((const char *, const char *, size_t));
 extern int strcasecmp __P((const char *, const char *));
 #endif /* HAVE_STRCASECMP */
 
@@ -479,6 +486,14 @@ extern unsigned int fsleep __P((unsigned int, unsigned int));
 extern int u32cconv __P((unsigned long, char *));
 extern void u32reset __P((void));
 
+/* declarations for functions defined in lib/sh/utf8.c */
+extern char *utf8_mbschr __P((const char *, int));
+extern int utf8_mbscmp __P((const char *, const char *));
+extern char *utf8_mbsmbchar __P((const char *));
+extern int utf8_mbsnlen __P((const char *, size_t, int));
+extern int utf8_mblen __P((const char *, size_t));
+extern size_t utf8_mbstrlen __P((const char *));
+
 /* declarations for functions defined in lib/sh/wcsnwidth.c */
 #if defined (HANDLE_MULTIBYTE)
 extern int wcsnwidth __P((const wchar_t *, size_t, int));
index 7ff349ce844cdd68dc5256c369063f3ceab03089..c3f00a408f4a0c6e59d12f0b458e296f4f3e6c7c 100644 (file)
--- a/findcmd.c
+++ b/findcmd.c
@@ -1,6 +1,6 @@
 /* findcmd.c -- Functions to search for commands by name. */
 
-/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -38,6 +38,7 @@
 
 #include "memalloc.h"
 #include "shell.h"
+#include "execute_cmd.h"
 #include "flags.h"
 #include "hashlib.h"
 #include "pathexp.h"
@@ -50,9 +51,6 @@
 extern int errno;
 #endif
 
-extern int posixly_correct;
-extern int last_command_exit_value;
-
 /* Static functions defined and used in this file. */
 static char *_find_user_command_internal __P((const char *, int));
 static char *find_user_command_internal __P((const char *, int));
@@ -339,7 +337,7 @@ search_for_command (pathname, flags)
      const char *pathname;
      int flags;
 {
-  char *hashed_file, *command, *pathlist;
+  char *hashed_file, *command, *path_list;
   int temp_path, st;
   SHELL_VAR *path;
 
@@ -380,13 +378,13 @@ search_for_command (pathname, flags)
   else
     {
       if (flags & CMDSRCH_STDPATH)
-       pathlist = conf_standard_path ();
+       path_list = conf_standard_path ();
       else if (temp_path || path)
-       pathlist = value_cell (path);
+       path_list = value_cell (path);
       else
-       pathlist = 0;
+       path_list = 0;
 
-      command = find_user_command_in_path (pathname, pathlist, FS_EXEC_PREFERRED|FS_NODIRS);
+      command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS);
 
       if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH))
        {
@@ -404,7 +402,7 @@ search_for_command (pathname, flags)
        }
 
       if (flags & CMDSRCH_STDPATH)
-       free (pathlist);
+       free (path_list);
     }
 
   return (command);
index bc4a41afb6e36482c100af84a690c81cfacd7872..34b491495cec9b32c069cc09a835d736188c7792 100644 (file)
--- a/findcmd.h
+++ b/findcmd.h
@@ -39,4 +39,9 @@ extern char *search_for_command __P((const char *, int));
 extern char *user_command_matches __P((const char *, int, int));
 extern void setup_exec_ignore __P((char *));
 
+extern int dot_found_in_search;
+
+/* variables managed via shopt */
+extern int check_hashed_filenames;
+
 #endif /* _FINDCMD_H_ */
diff --git a/flags.c b/flags.c
index 4b94fb03031b23c55636a3a42aff2ec2a6adbe5c..6e208419f8885f9f60d6ff4e1ca9d2da7450d9bf 100644 (file)
--- a/flags.c
+++ b/flags.c
@@ -25,6 +25,7 @@
 #endif
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "flags.h"
 
 #if defined (BANG_HISTORY)
 extern int set_job_control __P((int));
 #endif
 
-#if defined (RESTRICTED_SHELL)
-extern char *shell_name;
-#endif
-
-extern int shell_initialized;
-extern int builtin_ignoring_errexit;
-
-/* -c, -s invocation options -- not really flags, but they show up in $- */
-extern int want_pending_command, read_from_stdin;
-
 /* **************************************************************** */
 /*                                                                 */
 /*                     The Standard sh Flags.                      */
@@ -130,11 +121,8 @@ int hashing_enabled = 1;
 #if defined (BANG_HISTORY)
 /* Non-zero means that we are doing history expansion.  The default.
    This means !22 gets the 22nd line of history. */
-#  if defined (STRICT_POSIX)
-int history_expansion = 0;
-#  else
-int history_expansion = 1;
-#  endif
+int history_expansion = HISTEXPAND_DEFAULT;
+int histexp_flag = 0;
 #endif /* BANG_HISTORY */
 
 /* Non-zero means that we allow comments to appear in interactive commands. */
@@ -211,7 +199,7 @@ const struct flags_alist shell_flags[] = {
   { 'C', &noclobber },
   { 'E', &error_trace_mode },
 #if defined (BANG_HISTORY)
-  { 'H', &history_expansion },
+  { 'H', &histexp_flag },
 #endif /* BANG_HISTORY */
   { 'I', &no_invisible_vars },
   { 'P', &no_symbolic_links },
@@ -265,6 +253,7 @@ change_flag (flag, on_or_off)
     {
 #if defined (BANG_HISTORY)
     case 'H':
+      history_expansion = histexp_flag;
       if (on_or_off == FLAG_ON)
        bash_initialize_history ();
       break;
diff --git a/flags.h b/flags.h
index d5ed334e14afe8973cac991f75df0c8be6db3433..fdbf7f9759ebe9eb8014fe1ebb7881c138cc2a2f 100644 (file)
--- a/flags.h
+++ b/flags.h
@@ -50,6 +50,9 @@ extern int
   asynchronous_notification, interactive_comments, no_symbolic_links,
   function_trace_mode, error_trace_mode, pipefail_opt;
 
+/* -c, -s invocation options -- not really flags, but they show up in $- */
+extern int want_pending_command, read_from_stdin;
+
 #if 0
 extern int lexical_scoping;
 #endif
@@ -60,6 +63,7 @@ extern int brace_expansion;
 
 #if defined (BANG_HISTORY)
 extern int history_expansion;
+extern int histexp_flag;
 #endif /* BANG_HISTORY */
 
 #if defined (RESTRICTED_SHELL)
index 2d327add634fecb438f419f62f4ffe1835045d7c..9542963aa2d04f9f2465da119c89e8dfb526c80e 100644 (file)
--- a/general.c
+++ b/general.c
 #include "bashintl.h"
 
 #include "shell.h"
+#include "parser.h"
+#include "flags.h"
+#include "findcmd.h"
 #include "test.h"
 #include "trap.h"
 
+#include "builtins/common.h"
+
 #if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR)
 #  include <mbstr.h>           /* mbschr */
 #endif
 extern int errno;
 #endif /* !errno */
 
-extern int expand_aliases;
-extern int interactive_comments;
-extern int check_hashed_filenames;
-extern int source_uses_path;
-extern int source_searches_cwd;
-extern int posixly_correct;
-extern int inherit_errexit;
+#ifdef __CYGWIN__
+#  include <sys/cygwin.h>
+#endif
 
 static char *bash_special_tilde_expansions __P((char *));
 static int unquoted_tilde_word __P((const char *));
@@ -67,7 +68,33 @@ static void initialize_group_array __P((void));
 /* A standard error message to use when getcwd() returns NULL. */
 const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories");
 
-/* Do whatever is necessary to initialize `Posix mode'. */
+/* Do whatever is necessary to initialize `Posix mode'.  This currently
+   modifies the following variables which are controlled via shopt:
+      interactive_comments
+      source_uses_path
+      expand_aliases
+      inherit_errexit
+      print_shift_error
+
+   and the following variables which cannot be user-modified:
+
+      source_searches_cwd
+
+  If we add to the first list, we need to change the table and functions
+  below */
+
+static struct {
+  int *posix_mode_var;
+} posix_vars[] = 
+{
+  &interactive_comments,
+  &source_uses_path,
+  &expand_aliases,
+  &inherit_errexit,
+  &print_shift_error,
+  0
+};
+
 void
 posix_initialize (on)
      int on;
@@ -78,6 +105,8 @@ posix_initialize (on)
       interactive_comments = source_uses_path = expand_aliases = 1;
       inherit_errexit = 1;
       source_searches_cwd = 0;
+      print_shift_error = 1;
+
     }
 
   /* Things that should be turned on when posix mode is disabled. */
@@ -85,9 +114,39 @@ posix_initialize (on)
     {
       source_searches_cwd = 1;
       expand_aliases = interactive_shell;
+      print_shift_error = 0;
     }
 }
 
+int
+num_posix_options ()
+{
+  return ((sizeof (posix_vars) / sizeof (posix_vars[0])) - 1);
+}
+
+char *
+get_posix_options (bitmap)
+     char *bitmap;
+{
+  register int i;
+
+  if (bitmap == 0)
+    bitmap = (char *)xmalloc (num_posix_options ());   /* no trailing NULL */
+  for (i = 0; posix_vars[i].posix_mode_var; i++)
+    bitmap[i] = *(posix_vars[i].posix_mode_var);
+  return bitmap;
+}
+
+void
+set_posix_options (bitmap)
+     const char *bitmap;
+{
+  register int i;
+
+  for (i = 0; posix_vars[i].posix_mode_var; i++)
+    *(posix_vars[i].posix_mode_var) = bitmap[i];
+}
+
 /* **************************************************************** */
 /*                                                                 */
 /*  Functions to convert to and from and display non-standard types */
@@ -265,7 +324,7 @@ check_selfref (name, value, flags)
 #if defined (ARRAY_VARS)
   if (valid_array_reference (value, 0))
     {
-      t = array_variable_name (value, (char **)NULL, (int *)NULL);
+      t = array_variable_name (value, 0, (char **)NULL, (int *)NULL);
       if (t && STREQ (name, t))
        {
          free (t);
@@ -349,7 +408,8 @@ legal_alias_name (string, flags)
 }
 
 /* Returns non-zero if STRING is an assignment statement.  The returned value
-   is the index of the `=' sign. */
+   is the index of the `=' sign.  If FLAGS&1 we are expecting a compound assignment
+   and don't want an array subscript before the `='. */
 int
 assignment (string, flags)
      const char *string;
@@ -361,7 +421,7 @@ assignment (string, flags)
   c = string[indx = 0];
 
 #if defined (ARRAY_VARS)
-  if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */
+  if ((legal_variable_starter (c) == 0) && ((flags&1) == 0 || c != '[')) /* ] */
 #else
   if (legal_variable_starter (c) == 0)
 #endif
@@ -377,7 +437,9 @@ assignment (string, flags)
 #if defined (ARRAY_VARS)
       if (c == '[')
        {
-         newi = skipsubscript (string, indx, 0);
+         newi = skipsubscript (string, indx, (flags & 2) ? 1 : 0);
+         /* XXX - why not check for blank subscripts here, if we do in
+            valid_array_reference? */
          if (string[newi++] != ']')
            return (0);
          if (string[newi] == '+' && string[newi+1] == '=')
@@ -400,6 +462,20 @@ assignment (string, flags)
   return (0);
 }
 
+int
+line_isblank (line)
+     const char *line;
+{
+  register int i;
+
+  if (line == 0)
+    return 0;          /* XXX */
+  for (i = 0; line[i]; i++)
+    if (isblank ((unsigned char)line[i]) == 0)
+      break;
+  return (line[i] == '\0');  
+}
+
 /* **************************************************************** */
 /*                                                                 */
 /*          Functions to manage files and file descriptors         */
@@ -447,6 +523,14 @@ sh_unset_nodelay_mode (fd)
   return 0;
 }
 
+/* Just a wrapper for the define in include/filecntl.h */
+int
+sh_setclexec (fd)
+     int fd;
+{
+  return (SET_CLOSE_ON_EXEC (fd));
+}
+
 /* Return 1 if file descriptor FD is valid; 0 otherwise. */
 int
 sh_validfd (fd)
@@ -718,7 +802,8 @@ make_absolute (string, dot_path)
     {
       char pathbuf[PATH_MAX + 1];
 
-      cygwin_conv_to_full_posix_path (string, pathbuf);
+      /* WAS cygwin_conv_to_full_posix_path (string, pathbuf); */
+      cygwin_conv_path (CCP_WIN_A_TO_POSIX, string, pathbuf, PATH_MAX);
       result = savestring (pathbuf);
     }
 #else
@@ -1321,3 +1406,26 @@ conf_standard_path ()
 #  endif /* !CS_PATH */
 #endif /* !_CS_PATH || !HAVE_CONFSTR */
 }
+
+int
+default_columns ()
+{
+  char *v;
+  int c;
+
+  c = -1;
+  v = get_string_value ("COLUMNS");
+  if (v && *v)
+    {
+      c = atoi (v);
+      if (c > 0)
+       return c;
+    }
+
+  if (check_window_size)
+    get_new_window_size (0, (int *)0, &c);
+
+  return (c > 0 ? c : 80);
+}
+
+  
index 819634ce2a8ae9a79f9495382748e6cb625e7d36..638d23727746a4c96ace58950aec092a346a4eda 100644 (file)
--- a/general.h
+++ b/general.h
@@ -92,15 +92,34 @@ extern char *strcpy __P((char *, const char *));
 /* Nonzero if the integer type T is signed.  */
 #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
 
+/* The width in bits of the integer type or expression T.
+   Padding bits are not supported; this is checked at compile-time below.  */
+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
+
+/* Bound on length of the string representing an unsigned integer
+   value representable in B bits.  log10 (2.0) < 146/485.  The
+      smallest value of B where this bound is not tight is 2621.  */
+#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
+
 /* Bound on length of the string representing an integer value of type T.
    Subtract one for the sign bit if T is signed;
    302 / 1000 is log10 (2) rounded up;
    add one for integer division truncation;
    add one more for a minus sign if t is signed.  */
 #define INT_STRLEN_BOUND(t) \
-  ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
+  ((TYPE_WIDTH (t) - TYPE_SIGNED (t)) * 302 / 1000 \
    + 1 + TYPE_SIGNED (t))
 
+/* Updated version adapted from gnulib/intprops.h, not used right now.
+   Changes the approximation of log10(2) from 302/1000 to 146/485. */
+#if 0
+#define INT_STRLEN_BOUND(t) \
+  (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - TYPE_SIGNED (t)) + TYPE_SIGNED(t))
+#endif
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+   including the terminating null.  */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
 
 /* Define exactly what a legal shell identifier consists of. */
 #define legal_variable_starter(c) (ISALPHA(c) || (c == '_'))
@@ -278,6 +297,10 @@ extern void xfree __P((void *));
 /* Declarations for functions defined in general.c */
 extern void posix_initialize __P((int));
 
+extern int num_posix_options __P((void));
+extern char *get_posix_options __P((char *));
+extern void set_posix_options __P((const char *));
+
 #if defined (RLIMTYPE)
 extern RLIMTYPE string_to_rlimtype __P((char *));
 extern void print_rlimtype __P((RLIMTYPE, int));
@@ -292,9 +315,11 @@ extern int check_identifier __P((WORD_DESC *, int));
 extern int valid_nameref_value __P((const char *, int));
 extern int check_selfref __P((const char *, char *, int));
 extern int legal_alias_name __P((const char *, int));
+extern int line_isblank __P((const char *));
 extern int assignment __P((const char *, int));
 
 extern int sh_unset_nodelay_mode __P((int));
+extern int sh_setclexec __P((int));
 extern int sh_validfd __P((int));
 extern int fd_ispipe __P((int));
 extern void check_dev_tty __P((void));
@@ -333,5 +358,6 @@ extern char **get_group_list __P((int *));
 extern int *get_group_array __P((int *));
 
 extern char *conf_standard_path __P((void));
+extern int default_columns __P((void));
 
 #endif /* _GENERAL_H_ */
index fc0bfbe27d7d8b120c7b94a5066cf9b9f23cbeb2..c53764f112872fc7c27f2d12925848594317cc3d 100644 (file)
--- a/hashcmd.c
+++ b/hashcmd.c
 #include "bashansi.h"
 
 #include "shell.h"
+#include "flags.h"
 #include "findcmd.h"
 #include "hashcmd.h"
 
-extern int hashing_enabled;
-
 HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL;
 
 static void phash_freedata __P((PTR_T));
index e23641c3236a536c78b94766833c25b25334a931..8adbe221b3412786acaee697ef812c1233491306 100644 (file)
--- a/hashlib.c
+++ b/hashlib.c
@@ -125,6 +125,20 @@ hash_copy (table, cpdata)
   return new_table;
 }
 
+/* This is the best 32-bit string hash function I found. It's one of the
+   Fowler-Noll-Vo family (FNV-1).
+
+   The magic is in the interesting relationship between the special prime
+   16777619 (2^24 + 403) and 2^32 and 2^8. */
+
+#define FNV_OFFSET 2166136261
+#define FNV_PRIME 16777619
+
+/* If you want to use 64 bits, use
+FNV_OFFSET     14695981039346656037
+FNV_PRIMT      1099511628211
+*/
+
 /* The `khash' check below requires that strings that compare equally with
    strcmp hash to the same value. */
 unsigned int
@@ -133,14 +147,9 @@ hash_string (s)
 {
   register unsigned int i;
 
-  /* This is the best string hash function I found.
-
-     The magic is in the interesting relationship between the special prime
-     16777619 (2^24 + 403) and 2^32 and 2^8. */
-  for (i = 0; *s; s++)
+  for (i = FNV_OFFSET; *s; s++)
     {
-      i *= 16777619;
+      i *= FNV_PRIME;
       i ^= *s;
     }
 
index dbaaba86f8aefe0274f2ae5a0195dfff3b811927..36902f16bc57b1981190c935a00ed7a9af497264 100644 (file)
@@ -37,6 +37,7 @@ extern size_t mbstrlen __P((const char *));
 extern char *xstrchr __P((const char *, int));
 
 extern int locale_mb_cur_max;  /* XXX */
+extern int locale_utf8locale;  /* XXX */
 
 #ifndef MB_INVALIDCH
 #define MB_INVALIDCH(x)                ((x) == (size_t)-1 || (x) == (size_t)-2)
@@ -49,6 +50,10 @@ extern int locale_mb_cur_max;        /* XXX */
 #define MBLEN(s, n)    ((MB_CUR_MAX > 1) ? mblen ((s), (n)) : 1)
 #define MBRLEN(s, n, p)        ((MB_CUR_MAX > 1) ? mbrlen ((s), (n), (p)) : 1)
 
+#define UTF8_SINGLEBYTE(c)     (((c) & 0x80) == 0)
+#define UTF8_MBFIRSTCHAR(c)    (((c) & 0xc0) == 0xc0)
+#define UTF8_MBCHAR(c)         (((c) & 0xc0) == 0x80)
+
 #else /* !HANDLE_MULTIBYTE */
 
 #undef MB_LEN_MAX
@@ -74,6 +79,9 @@ extern int locale_mb_cur_max; /* XXX */
 #  define wchar_t      int
 #endif
 
+#define UTF8_SINGLEBYTE(c)     (1)
+#define UTF8_MBFIRSTCHAR(c)    (0)
+
 #endif /* !HANDLE_MULTIBYTE */
 
 /* Declare and initialize a multibyte state.  Call must be terminated
@@ -109,6 +117,8 @@ extern int locale_mb_cur_max;       /* XXX */
            _f = is_basic ((_str)[_i]); \
            if (_f) \
              mblength = 1; \
+           else if (locale_utf8locale && (((_str)[_i] & 0x80) == 0)) \
+             mblength = (_str)[_i] != 0; \
            else \
              { \
                state_bak = state; \
@@ -149,6 +159,8 @@ extern int locale_mb_cur_max;       /* XXX */
            _f = is_basic (*(_str)); \
            if (_f) \
              mblength = 1; \
+           else if (locale_utf8locale && ((*(_str) & 0x80) == 0)) \
+             mblength = *(_str) != 0; \
            else \
              { \
                state_bak = state; \
@@ -267,6 +279,8 @@ extern int locale_mb_cur_max;       /* XXX */
            _k = is_basic (*(_src)); \
            if (_k) \
              mblength = 1; \
+           else if (locale_utf8locale && ((*(_src) & 0x80) == 0)) \
+             mblength = *(_src) != 0; \
            else \
              { \
                state_bak = state; \
@@ -440,6 +454,8 @@ extern int locale_mb_cur_max;       /* XXX */
            i = is_basic (*((_src) + (_si))); \
            if (i) \
              mblength = 1; \
+           else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \
+             mblength = (_src)[_si] != 0; \
            else \
              { \
                state_bak = state; \
@@ -478,6 +494,8 @@ extern int locale_mb_cur_max;       /* XXX */
            i = is_basic (*((_src) + (_si))); \
            if (i) \
              mblength = 1; \
+           else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \
+             mblength = (_src)[_si] != 0; \
            else \
              { \
                state_bak = state; \
index d2fd4b25803a3eb626e5cc43332724af1ab4be55..c66492f030453bf494ed8e648258e8587b72d288 100644 (file)
 #  endif
 #endif
 
+/* New definition to use, moving away from __P since it's part of a reserved
+   namespace */
+#if !defined (PARAMS)
+#  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES)
+#    define PARAMS(protos) protos
+#  else 
+#    define PARAMS(protos) ()
+#  endif
+#endif
+
 /* Fortify, at least, has trouble with this definition */
 #if defined (HAVE_STRINGIZE)
 #  define CPP_STRING(x) #x
index aa21c9c66186878e34bcaecc2bf3633be6a3a685..0f696388b821c8f832d45b614c94b1f4b8314b8e 100644 (file)
 #  define TYPE_SIGNED(t)       (! ((t) 0 < (t) -1))
 #endif
 
+#ifndef TYPE_SIGNED_MAGNITUDE
+#  define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+#endif
+
+#ifndef TYPE_WIDTH
+#  define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
+#endif
+
 #ifndef TYPE_MINIMUM
-#  define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
-                               ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \
-                               : (t) 0))
+#  define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
 #endif
 
 #ifndef TYPE_MAXIMUM
-#  define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
+#  define TYPE_MAXIMUM(t)  \
+  ((t) (! TYPE_SIGNED (t) \
+        ? (t) -1 \
+        : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
 #endif
 
 #ifdef HAVE_LONG_LONG
diff --git a/input.c b/input.c
index 308b87e42bb3a8a22e471e7a8ba1b4bf856043c1..8b3e4259b9afe4d801bfb78366fb0ca947e631e5 100644 (file)
--- a/input.c
+++ b/input.c
@@ -1,6 +1,6 @@
 /* input.c -- functions to perform buffered input with synchronization. */
 
-/* Copyright (C) 1992-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #include "bashansi.h"
 #include "bashintl.h"
 
-#include "command.h"
-#include "general.h"
+#include "shell.h"
 #include "input.h"
-#include "error.h"
 #include "externs.h"
-#include "quit.h"
 #include "trap.h"
 
 #if !defined (errno)
@@ -153,8 +150,6 @@ ungetc_with_restart (c, stream)
 #endif
 #define min(a, b)      ((a) > (b) ? (b) : (a))
 
-extern int interactive_shell;
-
 int bash_input_fd_changed;
 
 /* This provides a way to map from a file descriptor to the buffer
@@ -277,6 +272,8 @@ save_bash_input (fd, new_fd)
       /* What's this?  A stray buffer without an associated open file
         descriptor?  Free up the buffer and report the error. */
       internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd);
+      if (buffers[nfd]->b_flag & B_SHAREDBUF)
+       buffers[nfd]->b_buffer = (char *)NULL;
       free_buffered_stream (buffers[nfd]);
     }
 
@@ -356,6 +353,12 @@ duplicate_buffered_stream (fd1, fd2)
       /* If the two objects share the same b_buffer, don't free it. */
       if (buffers[fd1] && buffers[fd1]->b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer)
        buffers[fd2] = (BUFFERED_STREAM *)NULL;
+      /* If this buffer is shared with another fd, don't free the buffer */
+      else if (buffers[fd2]->b_flag & B_SHAREDBUF)
+       {
+         buffers[fd2]->b_buffer = (char *)NULL;
+         free_buffered_stream (buffers[fd2]);
+       }
       else
        free_buffered_stream (buffers[fd2]);
     }
@@ -370,6 +373,9 @@ duplicate_buffered_stream (fd1, fd2)
       buffers[fd2]->b_flag |= B_WASBASHINPUT;
     }
 
+  if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF)))
+    buffers[fd2]->b_flag |= B_SHAREDBUF;
+
   return (fd2);
 }
 
@@ -441,6 +447,8 @@ close_buffered_stream (bp)
   if (!bp)
     return (0);
   fd = bp->b_fd;
+  if (bp->b_flag & B_SHAREDBUF)
+    bp->b_buffer = (char *)NULL;
   free_buffered_stream (bp);
   return (close (fd));
 }
@@ -504,7 +512,7 @@ b_fill_buffer (bp)
     nr = zread (bp->b_fd, bp->b_buffer, bp->b_size);
   if (nr <= 0)
     {
-      bp->b_used = 0;
+      bp->b_used = bp->b_inputp = 0;
       bp->b_buffer[0] = 0;
       if (nr == 0)
        bp->b_flag |= B_EOF;
@@ -530,7 +538,7 @@ bufstream_ungetc(c, bp)
      int c;
      BUFFERED_STREAM *bp;
 {
-  if (c == EOF || bp->b_inputp == 0)
+  if (c == EOF || bp == 0 || bp->b_inputp == 0)
     return (EOF);
 
   bp->b_buffer[--bp->b_inputp] = c;
@@ -561,6 +569,9 @@ buffered_getchar ()
 {
   CHECK_TERMSIG;
 
+  if (bash_input.location.buffered_fd < 0 || buffers[bash_input.location.buffered_fd] == 0)
+    return EOF;
+
 #if !defined (DJGPP)
   return (bufstream_getc (buffers[bash_input.location.buffered_fd]));
 #else
diff --git a/input.h b/input.h
index 0cbfcbee7b7ea3052962d953e07f761a19f8d3d9..6aef12692cd86209c0f8550e51e6187880fd3c5c 100644 (file)
--- a/input.h
+++ b/input.h
@@ -1,6 +1,6 @@
 /* input.h -- Structures and unions used for reading input. */
 
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -49,6 +49,7 @@ enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};
 #define B_UNBUFF       0x04
 #define B_WASBASHINPUT 0x08
 #define B_TEXT         0x10
+#define B_SHAREDBUF    0x20    /* shared input buffer */
 
 /* A buffered stream.  Like a FILE *, but with our own buffering and
    synchronization.  Look in input.c for the implementation. */
@@ -67,6 +68,7 @@ extern BUFFERED_STREAM **buffers;
 #endif
 
 extern int default_buffered_input;
+extern int bash_input_fd_changed;
 
 #endif /* BUFFERED_INPUT */
 
diff --git a/jobs.c b/jobs.c
index 5ee21e1031e58cf464c2594ba727bc8fdc6ce133..ce2bdf248773c2610b0df05f3dac23abd6a10cf9 100644 (file)
--- a/jobs.c
+++ b/jobs.c
@@ -3,7 +3,7 @@
 /* This file works with both POSIX and BSD systems.  It implements job
    control. */
 
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #include "bashansi.h"
 #include "bashintl.h"
 #include "shell.h"
+#include "parser.h"
 #include "jobs.h"
 #include "execute_cmd.h"
 #include "flags.h"
 
+#include "typemax.h"
+
 #include "builtins/builtext.h"
 #include "builtins/common.h"
 
@@ -92,7 +95,7 @@ extern int killpg __P((pid_t, int));
 #endif
 
 #if !MAX_CHILD_MAX
-#  define MAX_CHILD_MAX 8192
+#  define MAX_CHILD_MAX 32768
 #endif
 
 #if !defined (DEBUG)
@@ -162,19 +165,7 @@ extern int killpg __P((pid_t, int));
 typedef int sh_job_map_func_t __P((JOB *, int, int, int));
 
 /* Variables used here but defined in other files. */
-extern int subshell_environment, line_number;
-extern int posixly_correct, shell_level;
-extern int last_command_exit_value, last_command_exit_signal;
-extern int loop_level, breaking;
-extern int executing_list;
-extern int sourcelevel;
-extern int running_trap;
-extern sh_builtin_func_t *this_shell_builtin;
-extern char *shell_name, *this_command_name;
 extern sigset_t top_level_mask;
-extern procenv_t wait_intr_buf;
-extern int wait_intr_flag;
-extern int wait_signal_received;
 extern WORD_LIST *subst_assign_varlist;
 
 extern SigHandler **original_signals;
@@ -217,14 +208,6 @@ pid_t pipeline_pgrp = (pid_t)0;
 int pgrp_pipe[2] = { -1, -1 };
 #endif
 
-#if 0
-/* The job which is current; i.e. the one that `%+' stands for. */
-int current_job = NO_JOB;
-
-/* The previous job; i.e. the one that `%-' stands for. */
-int previous_job = NO_JOB;
-#endif
-
 /* Last child made by the shell.  */
 volatile pid_t last_made_pid = NO_PID;
 
@@ -251,6 +234,8 @@ PROCESS *last_procsub_child = (PROCESS *)NULL;
 
 /* Functions local to this file. */
 
+void debug_print_pgrps (void);
+
 static sighandler wait_sigint_handler __P((int));
 static sighandler sigchld_handler __P((int));
 static sighandler sigcont_sighandler __P((int));
@@ -315,6 +300,8 @@ static int bgp_delete __P((pid_t));
 static void bgp_clear __P((void));
 static int bgp_search __P((pid_t));
 
+static struct pipeline_saver *alloc_pipeline_saver __P((void));
+
 static ps_index_t bgp_getindex __P((void));
 static void bgp_resize __P((void));    /* XXX */
 
@@ -468,7 +455,7 @@ discard_last_procsub_child ()
     discard_pipeline (disposer);
 }
 
-struct pipeline_saver *
+static struct pipeline_saver *
 alloc_pipeline_saver ()
 {
   struct pipeline_saver *ret;
@@ -645,6 +632,8 @@ stop_pipeline (async, deferred)
       pipeline_pgrp = 0;
 
       newjob->flags = 0;
+      if (pipefail_opt)
+       newjob->flags |= J_PIPEFAIL;
 
       /* Flag to see if in another pgrp. */
       if (job_control)
@@ -703,7 +692,7 @@ stop_pipeline (async, deferred)
        {
          newjob->flags |= J_FOREGROUND;
          /*
-          *            !!!!! NOTE !!!!!  (chet@ins.cwru.edu)
+          *            !!!!! NOTE !!!!!  (chet@po.cwru.edu)
           *
           * The currently-accepted job control wisdom says to set the
           * terminal's process group n+1 times in an n-step pipeline:
@@ -751,7 +740,7 @@ stop_pipeline (async, deferred)
 static void
 bgp_resize ()
 {
-  ps_index_t nsize;
+  ps_index_t nsize, nsize_cur, nsize_max;
   ps_index_t psi;
 
   if (bgpids.nalloc == 0)
@@ -765,10 +754,19 @@ bgp_resize ()
   else
     nsize = bgpids.nalloc;
 
-  while (nsize < js.c_childmax)
-    nsize *= 2;
+  nsize_max = TYPE_MAXIMUM (ps_index_t);
+  nsize_cur = (ps_index_t)js.c_childmax;
+  if (nsize_cur < 0)                           /* overflow */
+    nsize_cur = MAX_CHILD_MAX;
+
+  while (nsize > 0 && nsize < nsize_cur)       /* > 0 should catch overflow */
+    nsize <<= 1;
+  if (nsize > nsize_max || nsize <= 0)         /* overflow? */
+    nsize = nsize_max;
+  if (nsize > MAX_CHILD_MAX)
+    nsize = nsize_max = MAX_CHILD_MAX;         /* hard cap */
 
-  if (bgpids.nalloc < js.c_childmax)
+  if (bgpids.nalloc < nsize_cur && bgpids.nalloc < nsize_max)
     {
       bgpids.storage = (struct pidstat *)xrealloc (bgpids.storage, nsize * sizeof (struct pidstat));
 
@@ -785,9 +783,7 @@ bgp_resize ()
 static ps_index_t
 bgp_getindex ()
 {
-  ps_index_t psi;
-
-  if (bgpids.nalloc < js.c_childmax || bgpids.head >= bgpids.nalloc)
+  if (bgpids.nalloc < (ps_index_t)js.c_childmax || bgpids.head >= bgpids.nalloc)
     bgp_resize ();
 
   pshash_delindex (bgpids.head);               /* XXX - clear before reusing */
@@ -871,7 +867,7 @@ pshash_delindex (psi)
       *bucket = ps->bucket_next;       /* deleting chain head in hash table */
     }
 
-  /* clear out this cell, just in case */
+  /* clear out this cell, in case it gets reused. */
   ps->pid = NO_PID;
   ps->bucket_next = ps->bucket_prev = NO_PIDSTAT;
 }
@@ -1010,6 +1006,7 @@ cleanup_dead_jobs ()
 {
   register int i;
   int os;
+  PROCESS *discard;
 
   if (js.j_jobslots == 0 || jobs_list_frozen)
     return;
@@ -1034,8 +1031,9 @@ cleanup_dead_jobs ()
   if (last_procsub_child && last_procsub_child->running == PS_DONE)
     {
       bgp_add (last_procsub_child->pid, process_exit_status (last_procsub_child->status));     /* XXX */
-      discard_pipeline (last_procsub_child);
+      discard = last_procsub_child;
       last_procsub_child = (PROCESS *)NULL;
+      discard_pipeline (discard);
     }
 #endif
 
@@ -1997,6 +1995,9 @@ make_child (command, async_p)
         signals to the default state for a new process. */
       pid_t mypid;
 
+      /* If this ends up being changed to modify or use `command' in the
+        child process, go back and change callers who free `command' in
+        the child process when this returns. */
       mypid = getpid ();
 #if defined (BUFFERED_INPUT)
       /* Close default_buffered_input if it's > 0.  We don't close it if it's
@@ -2369,8 +2370,8 @@ find_last_pid (job, block)
    This low-level function prints an error message if PID is not
    a child of this shell.  It returns -1 if it fails, or whatever
    wait_for returns otherwise.  If the child is not found in the
-   jobs table, it returns 127.  If FLAGS doesn't include 1, we
-   suppress the error message if PID isn't found. */
+   jobs table, it returns 127.  If FLAGS doesn't include JWAIT_PERROR,
+   we suppress the error message if PID isn't found. */
 
 int
 wait_for_single_pid (pid, flags)
@@ -2379,7 +2380,7 @@ wait_for_single_pid (pid, flags)
 {
   register PROCESS *child;
   sigset_t set, oset;
-  int r, job;
+  int r, job, alive;
 
   BLOCK_CHILD (set, oset);
   child = find_pipeline (pid, 0, (int *)NULL);
@@ -2394,12 +2395,23 @@ wait_for_single_pid (pid, flags)
 
   if (child == 0)
     {
-      if (flags & 1)
+      if (flags & JWAIT_PERROR)
        internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid);
       return (127);
     }
 
-  r = wait_for (pid);
+  alive = 0;
+  do
+    {
+      r = wait_for (pid);
+      if ((flags & JWAIT_FORCE) == 0)
+       break;
+
+      BLOCK_CHILD (set, oset);
+      alive = PALIVE (child);
+      UNBLOCK_CHILD (oset);
+    }
+  while (alive);
 
   /* POSIX.2: if we just waited for a job, we can remove it from the jobs
      table. */
@@ -2423,11 +2435,12 @@ wait_for_single_pid (pid, flags)
 void
 wait_for_background_pids ()
 {
-  register int i, r, waited_for;
+  register int i, r;
+  int any_stopped, check_async;
   sigset_t set, oset;
   pid_t pid;
 
-  for (waited_for = 0;;)
+  for (any_stopped = 0, check_async = 1;;)
     {
       BLOCK_CHILD (set, oset);
 
@@ -2441,6 +2454,12 @@ wait_for_background_pids ()
          if (i > js.j_lastj && jobs[i])
            itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
 #endif
+         if (jobs[i] && STOPPED (i))
+           {
+             builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0));
+             any_stopped = 1;
+           }
+
          if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0)
            break;
        }
@@ -2455,17 +2474,36 @@ wait_for_background_pids ()
       UNBLOCK_CHILD (oset);
       QUIT;
       errno = 0;               /* XXX */
-      r = wait_for_single_pid (pid, 1);
-      if (r == -1)
+      r = wait_for_single_pid (pid, JWAIT_PERROR);
+      if (r == -1 && errno == ECHILD)
        {
          /* If we're mistaken about job state, compensate. */
-         if (errno == ECHILD)
-           mark_all_jobs_as_dead ();
+         check_async = 0;
+         mark_all_jobs_as_dead ();
        }
-      else
-       waited_for++;
     }
 
+#if defined (PROCESS_SUBSTITUTION)
+  if (last_procsub_child && last_procsub_child->pid != NO_PID)
+    r = wait_for (last_procsub_child->pid);
+  wait_procsubs ();
+  reap_procsubs ();
+#if 1
+  /* We don't want to wait indefinitely if we have stopped children. */
+  /* XXX - should add a loop that goes through the list of process
+     substitutions and waits for each proc in turn before this code. */
+  if (any_stopped == 0)
+    {
+      /* Check whether or not we have any unreaped children. */
+      while ((r = wait_for (ANY_PID)) >= 0)
+       {
+         QUIT;
+         CHECK_WAIT_INTR;
+       }
+    }
+#endif
+#endif
+      
   /* POSIX.2 says the shell can discard the statuses of all completed jobs if
      `wait' is called with no arguments. */
   mark_dead_jobs_as_notified (1);
@@ -2605,7 +2643,11 @@ raw_job_exit_status (job)
   int fail;
   WAIT ret;
 
+#if 0
   if (pipefail_opt)
+#else
+  if (jobs[job]->flags & J_PIPEFAIL)
+#endif
     {
       fail = 0;
       p = jobs[job]->pipe;
@@ -2728,7 +2770,7 @@ wait_for (pid)
         job to finish.  Otherwise, we are waiting for the child to finish.
         We check for JDEAD in case the job state has been set by waitchld
         after receipt of a SIGCHLD. */
-      if (job == NO_JOB)               /* XXX -- && pid != ANY_PID ? */
+      if (job == NO_JOB && pid != ANY_PID)     /* XXX -- && pid != ANY_PID ? */
        job = find_job (pid, 0, NULL);
 
       /* waitchld() takes care of setting the state of the job.  If the job
@@ -2774,7 +2816,8 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil
          if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin)
            {
              termination_state = -1;
-             /* XXX - restore sigint handler here? */
+             /* XXX - restore sigint handler here */
+             restore_sigint_handler ();
              goto wait_for_return;
            }
 
@@ -2818,9 +2861,12 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil
       CHECK_WAIT_INTR;
 
       if (pid == ANY_PID)
-        /* XXX - could set child but we don't have a handle on what waitchld
-          reaps.  Leave termination_state alone. */
-       goto wait_for_return;
+       {
+         /* XXX - could set child but we don't have a handle on what waitchld
+           reaps.  Leave termination_state alone. */
+         restore_sigint_handler ();
+         goto wait_for_return;
+       }
     }
   while (PRUNNING (child) || (job != NO_JOB && RUNNING (job)));
 
@@ -2927,6 +2973,10 @@ if (job == NO_JOB)
                 loop. */
              else if (signal_is_trapped (SIGINT) && loop_level)
                ADDINTERRUPT;
+             /* If an interactive shell with job control enabled is sourcing
+                a file, allow the interrupt to terminate the file sourcing. */
+             else if (interactive_shell && signal_is_trapped (SIGINT) == 0 && sourcelevel)
+               ADDINTERRUPT;
              else
                {
                  putchar ('\n');
@@ -2951,8 +3001,20 @@ if (job == NO_JOB)
                kill (getpid (), SIGINT);
            }
        }
-      else if (interactive_shell == 0 && IS_FOREGROUND (job) && check_window_size)
-       get_new_window_size (0, (int *)0, (int *)0);
+      else if (interactive_shell == 0 && subshell_environment == 0 && IS_FOREGROUND (job))
+       {
+         s = job_signal_status (job);
+
+         /* If we are non-interactive, but job control is enabled, and the job
+            died due to SIGINT, pretend we got the SIGINT */
+         if (job_control && IS_JOBCONTROL (job) && WIFSIGNALED (s) && WTERMSIG (s) == SIGINT)
+           {
+             ADDINTERRUPT;     /* For now */
+           }
+
+         if (check_window_size)
+           get_new_window_size (0, (int *)0, (int *)0);
+       }
 
       /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
          signal handler path */
@@ -2976,22 +3038,39 @@ wait_for_return:
 
 /* Wait for the last process in the pipeline for JOB.  Returns whatever
    wait_for returns: the last process's termination state or -1 if there
-   are no unwaited-for child processes or an error occurs. */
+   are no unwaited-for child processes or an error occurs.  If FLAGS
+   includes JWAIT_FORCE, we wait for the job to terminate, no just change
+   state */
 int
-wait_for_job (job)
-     int job;
+wait_for_job (job, flags)
+     int job, flags;
 {
   pid_t pid;
-  int r;
+  int r, state;
   sigset_t set, oset;
 
   BLOCK_CHILD(set, oset);
-  if (JOBSTATE (job) == JSTOPPED)
+  state = JOBSTATE (job);
+  if (state == JSTOPPED)
     internal_warning (_("wait_for_job: job %d is stopped"), job+1);
 
   pid = find_last_pid (job, 0);
   UNBLOCK_CHILD(oset);
-  r = wait_for (pid);
+
+  do
+    {
+      r = wait_for (pid);
+      if (r == -1 && errno == ECHILD)
+       mark_all_jobs_as_dead ();
+
+      if ((flags & JWAIT_FORCE) == 0)
+       break;
+
+      BLOCK_CHILD (set, oset);
+      state = (job != NO_JOB && jobs[job]) ? JOBSTATE (job) : JDEAD;
+      UNBLOCK_CHILD (oset);
+    }
+  while (state != JDEAD);
 
   /* POSIX.2: we can remove the job from the jobs table if we just waited
      for it. */
@@ -3008,10 +3087,11 @@ wait_for_job (job)
    the next exiting job, -1 if there are no background jobs.  The caller
    is responsible for translating -1 into the right return value. */
 int
-wait_for_any_job ()
+wait_for_any_job (flags)
+     int flags;
 {
   pid_t pid;
-  int i, r, waited_for;
+  int i, r;
   sigset_t set, oset;
 
   if (jobs_list_frozen)
@@ -3038,7 +3118,7 @@ return_job:
 
   /* At this point, we have no dead jobs in the jobs table.  Wait until we
      get one, even if it takes multiple pids exiting. */
-  for (waited_for = 0;;)
+  for (;;)
     {
       /* Make sure there is a background job to wait for */
       BLOCK_CHILD (set, oset);
@@ -3489,6 +3569,7 @@ waitchld (wpid, block)
   WAIT status;
   PROCESS *child;
   pid_t pid;
+  int ind;
 
   int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
   static int wcontinued = WCONTINUED;  /* run-time fix for glibc problem */
@@ -3595,6 +3676,14 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
       coproc_pidchk (pid, WSTATUS(status));
 #endif
 
+#if defined (PROCESS_SUBSTITUTION)
+      /* Only manipulate the list of process substitutions while SIGCHLD
+        is blocked. */
+      if ((ind = find_procsub_child (pid)) >= 0)
+       set_procsub_status (ind, pid, WSTATUS (status));
+       /* XXX - save in bgpids list? */
+#endif
+
       /* It is not an error to have a child terminate that we did
         not have a record of.  This child could have been part of
         a pipeline in backquote substitution.  Even so, I'm not
@@ -3640,7 +3729,7 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
     }
 
   /* Call a SIGCHLD trap handler for each child that exits, if one is set. */
-  if (job_control && children_exited &&
+  if (children_exited &&
       (signal_is_trapped (SIGCHLD) || trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) &&
       trap_list[SIGCHLD] != (char *)IGNORE_SIG)
     {
@@ -3986,20 +4075,20 @@ notify_of_job_status ()
                ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job)))
            continue;
          
-#if 0
-         /* If job control is disabled, don't print the status messages.
-            Mark dead jobs as notified so that they get cleaned up.  If
-            startup_state == 2, we were started to run `-c command', so
-            don't print anything. */
-         if ((job_control == 0 && interactive_shell) || startup_state == 2)
-#else
          /* If job control is disabled, don't print the status messages.
             Mark dead jobs as notified so that they get cleaned up.  If
             startup_state == 2 and subshell_environment has the
             SUBSHELL_COMSUB bit turned on, we were started to run a command
-            substitution, so don't print anything. */
+            substitution, so don't print anything.
+            Otherwise, if the shell is not interactive, POSIX says that `jobs'
+            is the only way to notify of job status. */
+#if 1
          if ((job_control == 0 && interactive_shell) ||
              (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)))
+#else  /* TAG:bash-5.1 */
+         if ((job_control == 0 && interactive_shell) ||
+             (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)) ||
+             (startup_state == 2 && posixly_correct && (subshell_environment & SUBSHELL_COMSUB) == 0))
 #endif
            {
              /* POSIX.2 compatibility:  if the shell is not interactive,
@@ -4092,7 +4181,7 @@ initialize_job_control (force)
      int force;
 {
   pid_t t;
-  int t_errno;
+  int t_errno, tty_sigs;
 
   t_errno = -1;
   shell_pgrp = getpgid (0);
@@ -4142,15 +4231,24 @@ initialize_job_control (force)
            tcsetpgrp (shell_tty, shell_pgrp);
        }
 
+      tty_sigs = 0;
       while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1)
        {
          if (shell_pgrp != terminal_pgrp)
            {
              SigHandler *ottin;
 
+             CHECK_TERMSIG;
              ottin = set_signal_handler (SIGTTIN, SIG_DFL);
              kill (0, SIGTTIN);
              set_signal_handler (SIGTTIN, ottin);
+             if (tty_sigs++ > 16)
+               {
+                 sys_error (_("initialize_job_control: no job control in background"));
+                 job_control = 0;
+                 original_pgrp = terminal_pgrp;        /* for eventual give_terminal_to */
+                 goto just_bail;
+               }
              continue;
            }
          break;
@@ -4210,6 +4308,7 @@ initialize_job_control (force)
        internal_error (_("no job control in this shell"));
     }
 
+just_bail:
   running_in_background = terminal_pgrp != shell_pgrp;
 
   if (shell_tty != fileno (stderr))
@@ -4678,6 +4777,13 @@ unfreeze_jobs_list ()
   jobs_list_frozen = 0;
 }
 
+void
+set_jobs_list_frozen (s)
+     int s;
+{
+  jobs_list_frozen = s;
+}
+
 /* Allow or disallow job control to take place.  Returns the old value
    of job_control. */
 int
@@ -4732,7 +4838,7 @@ without_job_control ()
 void
 end_job_control ()
 {
-  if (interactive_shell || job_control)                /* XXX - should it be just job_control? */
+  if (job_control)
     {
       terminate_stopped_jobs ();
 
diff --git a/jobs.h b/jobs.h
index 6df0607ed11f0cd79198148727c97aaecb380424..ddea88b1413cd20ed2bad4f1716a9494c528916d 100644 (file)
--- a/jobs.h
+++ b/jobs.h
@@ -1,6 +1,6 @@
 /* jobs.h -- structures and definitions used by the jobs.c file. */
 
-/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 /* I looked it up.  For pretty_print_job ().  The real answer is 24. */
 #define LONGEST_SIGNAL_DESC 24
 
+/* Defines for the wait_for functions and for the wait builtin to use */
+#define JWAIT_PERROR           0x01
+#define JWAIT_FORCE            0x02 
+
 /* The max time to sleep while retrying fork() on EAGAIN failure */
 #define FORKSLEEP_MAX  16
 
@@ -99,6 +103,7 @@ typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } J
 #define J_NOHUP      0x08 /* Don't send SIGHUP to job if shell gets SIGHUP. */
 #define J_STATSAVED  0x10 /* A process in this job had had status saved via $! */
 #define J_ASYNC             0x20 /* Job was started asynchronously */
+#define J_PIPEFAIL   0x40 /* pipefail set when job was started */
 
 #define IS_FOREGROUND(j)       ((jobs[j]->flags & J_FOREGROUND) != 0)
 #define IS_NOTIFIED(j)         ((jobs[j]->flags & J_NOTIFIED) != 0)
@@ -185,6 +190,11 @@ extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp;
 extern volatile pid_t last_made_pid, last_asynchronous_pid;
 extern int asynchronous_notification;
 
+extern int already_making_children;
+extern int running_in_background;
+
+extern PROCESS *last_procsub_child;
+
 extern JOB **jobs;
 
 extern void making_children __P((void));
@@ -234,8 +244,8 @@ extern int job_exit_signal __P((int));
 extern int wait_for_single_pid __P((pid_t, int));
 extern void wait_for_background_pids __P((void));
 extern int wait_for __P((pid_t));
-extern int wait_for_job __P((int));
-extern int wait_for_any_job __P((void));
+extern int wait_for_job __P((int, int));
+extern int wait_for_any_job __P((int));
 
 extern void wait_sigint_cleanup __P((void));
 
@@ -251,6 +261,7 @@ extern void run_sigchld_trap __P((int));
 
 extern int freeze_jobs_list __P((void));
 extern void unfreeze_jobs_list __P((void));
+extern void set_jobs_list_frozen __P((int));
 extern int set_job_control __P((int));
 extern void without_job_control __P((void));
 extern void end_job_control __P((void));
index 23bf8c8b0ec364dad4f615acb3266fc5337a63db..314622f13e54d65f0a13989ef4c7e384365a816f 100644 (file)
@@ -53,7 +53,7 @@ BASHINCDIR = ${topdir}/include
 INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib
 
 CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \
-         $(LOCAL_CFLAGS) $(CFLAGS)
+         $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
 
 # Here is a rule for making .o files from .c files that doesn't force
 # the type of the machine (like -sun3) into the flags.
@@ -164,4 +164,5 @@ xmbsrtowcs.o: xmbsrtowcs.c
 
 # dependencies for C files that include other C files
 glob.o: glob_loop.c
+gmisc.o: gm_loop.c
 smatch.o: sm_loop.c
index 7f6eafe7d2eb668c93a94be3a8e454110d3b8d0b..22d90a5cdf9c6c579ac2c8c1f7b111e8d932d58c 100644 (file)
@@ -1,6 +1,6 @@
 /* glob.c -- file-name wildcard pattern matching for Bash.
 
-   Copyright (C) 1985-2009 Free Software Foundation, Inc.
+   Copyright (C) 1985-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne-Again SHell.
    
@@ -123,10 +123,14 @@ static char **glob_dir_to_array __P((char *, char **, int));
 extern char *glob_patscan __P((char *, char *, int));
 extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
 
+/* And this from gmisc.c/gm_loop.c */
+extern int wextglob_pattern_p __P((wchar_t *));
+
 extern char *glob_dirscan __P((char *, int));
 
 /* Compile `glob_loop.c' for single-byte characters. */
-#define CHAR   unsigned char
+#define GCHAR  unsigned char
+#define CHAR   char
 #define INT    int
 #define L(CS)  CS
 #define INTERNAL_GLOB_PATTERN_P internal_glob_pattern_p
@@ -135,6 +139,7 @@ extern char *glob_dirscan __P((char *, int));
 /* Compile `glob_loop.c' again for multibyte characters. */
 #if HANDLE_MULTIBYTE
 
+#define GCHAR  wchar_t
 #define CHAR   wchar_t
 #define INT    wint_t
 #define L(CS)  L##CS
@@ -182,9 +187,10 @@ extglob_skipname (pat, dname, flags)
      int flags;
 {
   char *pp, *pe, *t, *se;
-  int n, r, negate;
+  int n, r, negate, wild;
 
   negate = *pat == '!';
+  wild = *pat == '*' || *pat == '?';
   pp = pat + 2;
   se = pp + strlen (pp) - 1;           /* end of string */
   pe = glob_patscan (pp, se, 0);       /* end of extglob pattern (( */
@@ -203,14 +209,19 @@ extglob_skipname (pat, dname, flags)
       r = skipname (pp, dname, flags); /*(*/
 #endif
       *pe = ')';
+      if (wild && pe[1])       /* if we can match zero instances, check further */
+        return (skipname (pe+1, dname, flags));
       return r;
     }
 
   /* check every subpattern */
   while (t = glob_patscan (pp, pe, '|'))
     {
-      n = t[-1];
-      t[-1] = '\0';
+      n = t[-1];       /* ( */
+      if (extglob_pattern_p (pp) && n == ')')
+       t[-1] = n;      /* no-op for now */
+      else
+       t[-1] = '\0';
 #if defined (HANDLE_MULTIBYTE)
       r = mbskipname (pp, dname, flags);
 #else
@@ -222,12 +233,14 @@ extglob_skipname (pat, dname, flags)
       pp = t;
     }  /*(*/
 
-  /* glob_patscan might find end of pattern */
+  /* glob_patscan might find end of string */
   if (pp == se)
     return r;
 
   /* but if it doesn't then we didn't match a leading dot */
-  return 0;
+  if (wild && *pe)     /* if we can match zero instances, check further */
+    return (skipname (pe, dname, flags));
+  return 1;
 }
 #endif
 
@@ -263,22 +276,23 @@ skipname (pat, dname, flags)
 #if HANDLE_MULTIBYTE
 
 static int
-wchkname (pat_wc, dn_wc)
-     wchar_t *pat_wc, *dn_wc;
+wskipname (pat, dname, flags)
+     wchar_t *pat, *dname;
+     int flags;
 {
   /* If a leading dot need not be explicitly matched, and the
      pattern doesn't start with a `.', don't match `.' or `..' */
-  if (noglob_dot_filenames == 0 && pat_wc[0] != L'.' &&
-       (pat_wc[0] != L'\\' || pat_wc[1] != L'.') &&
-       (dn_wc[0] == L'.' &&
-         (dn_wc[1] == L'\0' || (dn_wc[1] == L'.' && dn_wc[2] == L'\0'))))
+  if (noglob_dot_filenames == 0 && pat[0] != L'.' &&
+       (pat[0] != L'\\' || pat[1] != L'.') &&
+       (dname[0] == L'.' &&
+         (dname[1] == L'\0' || (dname[1] == L'.' && dname[2] == L'\0'))))
     return 1;
 
   /* If a leading dot must be explicitly matched, check to see if the
      pattern and dirname both have one. */
- else if (noglob_dot_filenames && dn_wc[0] == L'.' &&
-       pat_wc[0] != L'.' &&
-          (pat_wc[0] != L'\\' || pat_wc[1] != L'.'))
+ else if (noglob_dot_filenames && dname[0] == L'.' &&
+       pat[0] != L'.' &&
+          (pat[0] != L'\\' || pat[1] != L'.'))
     return 1;
 
   return 0;
@@ -291,9 +305,10 @@ wextglob_skipname (pat, dname, flags)
 {
 #if EXTENDED_GLOB
   wchar_t *pp, *pe, *t, n, *se;
-  int r, negate;
+  int r, negate, wild;
 
   negate = *pat == L'!';
+  wild = *pat == L'*' || *pat == L'?';
   pp = pat + 2;
   se = pp + wcslen (pp) - 1;   /*(*/
   pe = glob_patscan_wc (pp, se, 0);
@@ -301,17 +316,22 @@ wextglob_skipname (pat, dname, flags)
   if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
     {
       *pe = L'\0';
-      r = wchkname (pp, dname); /*(*/
+      r = wskipname (pp, dname, flags); /*(*/
       *pe = L')';
+      if (wild && pe[1] != L'\0')
+        return (wskipname (pe+1, dname, flags));
       return r;
     }
 
   /* check every subpattern */
   while (t = glob_patscan_wc (pp, pe, '|'))
     {
-      n = t[-1];
-      t[-1] = L'\0';
-      r = wchkname (pp, dname);
+      n = t[-1];       /* ( */
+      if (wextglob_pattern_p (pp) && n == L')')
+       t[-1] = n;      /* no-op for now */
+      else
+       t[-1] = L'\0';
+      r = wskipname (pp, dname, flags);
       t[-1] = n;
       if (r == 0)
        return 0;
@@ -322,9 +342,11 @@ wextglob_skipname (pat, dname, flags)
     return r;
 
   /* but if it doesn't then we didn't match a leading dot */
-  return 0;
+  if (wild && *pe != L'\0')
+    return (wskipname (pe, dname, flags));
+  return 1;
 #else
-  return (wchkname (pat, dname));
+  return (wskipname (pat, dname, flags));
 #endif
 }
 
@@ -355,7 +377,7 @@ mbskipname (pat, dname, flags)
 
   ret = 0;
   if (pat_n != (size_t)-1 && dn_n !=(size_t)-1)
-    ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wchkname (pat_wc, dn_wc);
+    ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wskipname (pat_wc, dn_wc, flags);
   else
     ret = skipname (pat, dname, flags);
 
@@ -455,7 +477,7 @@ dequote_pathname (pathname)
 #  endif /* AFS */
 #endif /* !HAVE_LSTAT */
 
-/* Return 0 if DIR is a directory, -1 otherwise. */
+/* Return 0 if DIR is a directory, -2 if DIR is a symlink,  -1 otherwise. */
 static int
 glob_testdir (dir, flags)
      char *dir;
@@ -473,6 +495,11 @@ glob_testdir (dir, flags)
   if (r < 0)
     return (-1);
 
+#if defined (S_ISLNK)
+  if (S_ISLNK (finfo.st_mode))
+    return (-2);
+#endif
+
   if (S_ISDIR (finfo.st_mode) == 0)
     return (-1);
 
@@ -590,6 +617,8 @@ glob_vector (pat, dir, flags)
   firstmalloc = 0;
   nalloca = 0;
 
+  name_vector = NULL;
+
 /*itrace("glob_vector: pat = `%s' dir = `%s' flags = 0x%x", pat, dir, flags);*/
   /* If PAT is empty, skip the loop, but return one (empty) filename. */
   if (pat == 0 || *pat == '\0')
@@ -778,6 +807,15 @@ glob_vector (pat, dir, flags)
                    }
                }
 
+             /* When FLAGS includes GX_ALLDIRS, we want to skip a symlink
+                to a directory, since we will pick the directory up later. */
+             if (isdir == -2 && glob_testdir (subdir, 0) == 0)
+               {
+                 free (subdir);
+                 continue;
+               }
+
+             /* XXX - should we even add this if it's not a directory? */
              nextlink = (struct globval *) malloc (sizeof (struct globval));
              if (firstmalloc == 0)
                firstmalloc = nextlink;
@@ -1018,7 +1056,7 @@ glob_filename (pathname, flags)
      char *pathname;
      int flags;
 {
-  char **result;
+  char **result, **new_result;
   unsigned int result_size;
   char *directory_name, *filename, *dname, *fn;
   unsigned int directory_len;
@@ -1248,16 +1286,16 @@ glob_filename (pathname, flags)
              while (array[l] != NULL)
                ++l;
 
-             result =
-               (char **)realloc (result, (result_size + l) * sizeof (char *));
+             new_result = (char **)realloc (result, (result_size + l) * sizeof (char *));
 
-             if (result == NULL)
+             if (new_result == NULL)
                {
                  for (l = 0; array[l]; ++l)
                    free (array[l]);
                  free ((char *)array);
                  goto memory_error;
                }
+             result = new_result;
 
              for (l = 0; array[l] != NULL; ++l)
                result[result_size++ - 1] = array[l];
index 89e86af57b60b74b567480b1a0e65b1aed2a529d..5f319cc2efa70986c3672b57022fd11a3b9a0492 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2005 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
    
    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-static int INTERNAL_GLOB_PATTERN_P __P((const CHAR *));
+static int INTERNAL_GLOB_PATTERN_P __P((const GCHAR *));
 
 /* Return nonzero if PATTERN has any special globbing chars in it.
    Compiled twice, once each for single-byte and multibyte characters. */
 static int
 INTERNAL_GLOB_PATTERN_P (pattern)
-     const CHAR *pattern;
+     const GCHAR *pattern;
 {
-  register const CHAR *p;
-  register CHAR c;
+  register const GCHAR *p;
+  register GCHAR c;
   int bopen;
 
   p = pattern;
@@ -54,8 +54,17 @@ INTERNAL_GLOB_PATTERN_P (pattern)
        continue;
 
       case L('\\'):
+#if 0
+       /* Don't let the pattern end in a backslash (GMATCH returns no match
+          if the pattern ends in a backslash anyway), but otherwise return 1,
+          since the matching engine uses backslash as an escape character
+          and it can be removed. */
+       return (*p != L('\0'));
+#else
+       /* The pattern may not end with a backslash. */
        if (*p++ == L('\0'))
          return 0;
+#endif
       }
 
   return 0;
@@ -65,3 +74,4 @@ INTERNAL_GLOB_PATTERN_P (pattern)
 #undef L
 #undef INT
 #undef CHAR
+#undef GCHAR
diff --git a/lib/glob/gm_loop.c b/lib/glob/gm_loop.c
new file mode 100644 (file)
index 0000000..ac516f8
--- /dev/null
@@ -0,0 +1,208 @@
+/* Copyright (C) 1991-2017 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 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#if EXTENDED_GLOB
+int
+EXTGLOB_PATTERN_P (pat)
+     const CHAR *pat;
+{
+  switch (pat[0])
+    {
+    case L('*'):
+    case L('+'):
+    case L('!'):
+    case L('@'):
+    case L('?'):
+      return (pat[1] == L('('));       /* ) */
+    default:
+      return 0;
+    }
+    
+  return 0;
+}
+#endif
+
+/* Return 1 of the first character of STRING could match the first
+   character of pattern PAT.  Compiled to both single and wiide character
+   versions.  FLAGS is a subset of strmatch flags; used to do case-insensitive
+   matching for now. */
+int
+MATCH_PATTERN_CHAR (pat, string, flags)
+     CHAR *pat, *string;
+     int flags;
+{
+  CHAR c;
+
+  if (*string == 0)
+    return (*pat == L('*'));   /* XXX  - allow only * to match empty string */
+
+  switch (c = *pat++)
+    {
+    default:
+      return (FOLD(*string) == FOLD(c));
+    case L('\\'):
+      return (FOLD(*string) == FOLD(*pat));
+    case L('?'):
+      return (*pat == L('(') ? 1 : (*string != L'\0'));
+    case L('*'):
+      return (1);
+    case L('+'):
+    case L('!'):
+    case L('@'):
+      return (*pat ==  L('(') ? 1 : (FOLD(*string) == FOLD(c)));
+    case L('['):
+      return (*string != L('\0'));
+    }
+}
+
+int
+MATCHLEN (pat, max)
+     CHAR *pat;
+     size_t max;
+{
+  CHAR c;
+  int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
+
+  if (*pat == 0)
+    return (0);
+
+  matlen = in_cclass = in_collsym = in_equiv = 0;
+  while (c = *pat++)
+    {
+      switch (c)
+       {
+       default:
+         matlen++;
+         break;
+       case L('\\'):
+         if (*pat == 0)
+           return ++matlen;
+         else
+           {
+             matlen++;
+             pat++;
+           }
+         break;
+       case L('?'):
+         if (*pat == LPAREN)
+           return (matlen = -1);               /* XXX for now */
+         else
+           matlen++;
+         break;
+       case L('*'):
+         return (matlen = -1);
+       case L('+'):
+       case L('!'):
+       case L('@'):
+         if (*pat == LPAREN)
+           return (matlen = -1);               /* XXX for now */
+         else
+           matlen++;
+         break;
+       case L('['):
+         /* scan for ending `]', skipping over embedded [:...:] */
+         bracklen = 1;
+         c = *pat++;
+         do
+           {
+             if (c == 0)
+               {
+                 pat--;                        /* back up to NUL */
+                 matlen += bracklen;
+                 goto bad_bracket;
+               }
+             else if (c == L('\\'))
+               {
+                 /* *pat == backslash-escaped character */
+                 bracklen++;
+                 /* If the backslash or backslash-escape ends the string,
+                    bail.  The ++pat skips over the backslash escape */
+                 if (*pat == 0 || *++pat == 0)
+                   {
+                     matlen += bracklen;
+                     goto bad_bracket;
+                   }
+               }
+             else if (c == L('[') && *pat == L(':'))   /* character class */
+               {
+                 pat++;
+                 bracklen++;
+                 in_cclass = 1;
+               }
+             else if (in_cclass && c == L(':') && *pat == L(']'))
+               {
+                 pat++;
+                 bracklen++;
+                 in_cclass = 0;
+               }
+             else if (c == L('[') && *pat == L('.'))   /* collating symbol */
+               {
+                 pat++;
+                 bracklen++;
+                 if (*pat == L(']'))   /* right bracket can appear as collating symbol */
+                   {
+                     pat++;
+                     bracklen++;
+                   }
+                 in_collsym = 1;
+               }
+             else if (in_collsym && c == L('.') && *pat == L(']'))
+               {
+                 pat++;
+                 bracklen++;
+                 in_collsym = 0;
+               }
+             else if (c == L('[') && *pat == L('='))   /* equivalence class */
+               {
+                 pat++;
+                 bracklen++;
+                 if (*pat == L(']'))   /* right bracket can appear as equivalence class */
+                   {
+                     pat++;
+                     bracklen++;
+                   }
+                 in_equiv = 1;
+               }
+             else if (in_equiv && c == L('=') && *pat == L(']'))
+               {
+                 pat++;
+                 bracklen++;
+                 in_equiv = 0;
+               }
+             else
+               bracklen++;
+           }
+         while ((c = *pat++) != L(']'));
+         matlen++;             /* bracket expression can only match one char */
+bad_bracket:
+         break;
+       }
+    }
+
+  return matlen;
+}
+
+#undef EXTGLOB_PATTERN_P
+#undef MATCH_PATTERN_CHAR
+#undef MATCHLEN
+#undef FOLD
+#undef L
+#undef LPAREN
+#undef RPAREN
+#undef INT
+#undef CHAR
index 31906a4f2c8baa70b2a3015a3bd56f942d774f1a..a2bca9659a1444d1d29d304390e8cac42f53c3bb 100644 (file)
@@ -1,6 +1,6 @@
 /* gmisc.c -- miscellaneous pattern matching utility functions for Bash.
 
-   Copyright (C) 2010 Free Software Foundation, Inc.
+   Copyright (C) 2010-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne-Again SHell.
    
 #ifndef FNM_CASEFOLD
 #  include "strmatch.h"
 #endif
-
-#ifndef LPAREN
-#  define LPAREN '('
-#endif
-#ifndef RPAREN
-#  define RPAREN ')'
-#endif
-
-#if defined (HANDLE_MULTIBYTE)
-#define WLPAREN         L'('
-#define WRPAREN         L')'
+#include "glob.h"
 
 /* Make sure these names continue to agree with what's in smatch.c */
 extern char *glob_patscan __P((char *, char *, int));
-extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
-
-#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c))
-
-/* Return 1 of the first character of WSTRING could match the first
-   character of pattern WPAT.  Wide character version.  FLAGS is a
-   subset of strmatch flags; used to do case-insensitive matching for now. */
-int
-match_pattern_wchar (wpat, wstring, flags)
-     wchar_t *wpat, *wstring;
-     int flags;
-{
-  wchar_t wc;
-
-  if (*wstring == 0)
-    return (*wpat == L'*');    /* XXX  - allow only * to match empty string */
-
-  switch (wc = *wpat++)
-    {
-    default:
-      return (FOLD(*wstring) == FOLD(wc));
-    case L'\\':
-      return (FOLD(*wstring) == FOLD(*wpat));
-    case L'?':
-      return (*wpat == WLPAREN ? 1 : (*wstring != L'\0'));
-    case L'*':
-      return (1);
-    case L'+':
-    case L'!':
-    case L'@':
-      return (*wpat == WLPAREN ? 1 : (FOLD(*wstring) == FOLD(wc)));
-    case L'[':
-      return (*wstring != L'\0');
-    }
-}
-
-int
-wmatchlen (wpat, wmax)
-     wchar_t *wpat;
-     size_t wmax;
-{
-  wchar_t wc;
-  int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
-
-  if (*wpat == 0)
-    return (0);
-
-  matlen = in_cclass = in_collsym = in_equiv = 0;
-  while (wc = *wpat++)
-    {
-      switch (wc)
-       {
-       default:
-         matlen++;
-         break;
-       case L'\\':
-         if (*wpat == 0)
-           return ++matlen;
-         else
-           {
-             matlen++;
-             wpat++;
-           }
-         break;
-       case L'?':
-         if (*wpat == WLPAREN)
-           return (matlen = -1);               /* XXX for now */
-         else
-           matlen++;
-         break;
-       case L'*':
-         return (matlen = -1);
-       case L'+':
-       case L'!':
-       case L'@':
-         if (*wpat == WLPAREN)
-           return (matlen = -1);               /* XXX for now */
-         else
-           matlen++;
-         break;
-       case L'[':
-         /* scan for ending `]', skipping over embedded [:...:] */
-         bracklen = 1;
-         wc = *wpat++;
-         do
-           {
-             if (wc == 0)
-               {
-                 wpat--;                       /* back up to NUL */
-                 matlen += bracklen;
-                 goto bad_bracket;
-               }
-             else if (wc == L'\\')
-               {
-                 /* *wpat == backslash-escaped character */
-                 bracklen++;
-                 /* If the backslash or backslash-escape ends the string,
-                    bail.  The ++wpat skips over the backslash escape */
-                 if (*wpat == 0 || *++wpat == 0)
-                   {
-                     matlen += bracklen;
-                     goto bad_bracket;
-                   }
-               }
-             else if (wc == L'[' && *wpat == L':')     /* character class */
-               {
-                 wpat++;
-                 bracklen++;
-                 in_cclass = 1;
-               }
-             else if (in_cclass && wc == L':' && *wpat == L']')
-               {
-                 wpat++;
-                 bracklen++;
-                 in_cclass = 0;
-               }
-             else if (wc == L'[' && *wpat == L'.')     /* collating symbol */
-               {
-                 wpat++;
-                 bracklen++;
-                 if (*wpat == L']')    /* right bracket can appear as collating symbol */
-                   {
-                     wpat++;
-                     bracklen++;
-                   }
-                 in_collsym = 1;
-               }
-             else if (in_collsym && wc == L'.' && *wpat == L']')
-               {
-                 wpat++;
-                 bracklen++;
-                 in_collsym = 0;
-               }
-             else if (wc == L'[' && *wpat == L'=')     /* equivalence class */
-               {
-                 wpat++;
-                 bracklen++;
-                 if (*wpat == L']')    /* right bracket can appear as equivalence class */
-                   {
-                     wpat++;
-                     bracklen++;
-                   }
-                 in_equiv = 1;
-               }
-             else if (in_equiv && wc == L'=' && *wpat == L']')
-               {
-                 wpat++;
-                 bracklen++;
-                 in_equiv = 0;
-               }
-             else
-               bracklen++;
-           }
-         while ((wc = *wpat++) != L']');
-         matlen++;             /* bracket expression can only match one char */
-bad_bracket:
-         break;
-       }
-    }
 
-  return matlen;
-}
-#endif
-
-int
-extglob_pattern_p (pat)
-     char *pat;
-{
-  switch (pat[0])
-    {
-    case '*':
-    case '+':
-    case '!':
-    case '@':
-    case '?':
-      return (pat[1] == LPAREN);
-    default:
-      return 0;
-    }
-    
-  return 0;
-}
-
-#undef FOLD
+/* Compile `gm_loop.c' for single-byte characters. */
+#define CHAR   char
+#define INT    int
+#define L(CS)  CS
+#define EXTGLOB_PATTERN_P extglob_pattern_p
+#define MATCH_PATTERN_CHAR match_pattern_char
+#define MATCHLEN umatchlen
 #define FOLD(c) ((flags & FNM_CASEFOLD) \
        ? TOLOWER ((unsigned char)c) \
        : ((unsigned char)c))
+#ifndef LPAREN
+#define LPAREN '('
+#define RPAREN ')'
+#endif
+#include "gm_loop.c"
 
-/* Return 1 of the first character of STRING could match the first
-   character of pattern PAT.  Used to avoid n2 calls to strmatch().
-   FLAGS is a subset of strmatch flags; used to do case-insensitive
-   matching for now. */
-int
-match_pattern_char (pat, string, flags)
-     char *pat, *string;
-     int flags;
-{
-  char c;
+/* Compile `gm_loop.c' again for multibyte characters. */
+#if HANDLE_MULTIBYTE
 
-  if (*string == 0)
-    return (*pat == '*');      /* XXX - allow only * to match empty string */
+#define CHAR   wchar_t
+#define INT    wint_t
+#define L(CS)  L##CS
+#define EXTGLOB_PATTERN_P wextglob_pattern_p
+#define MATCH_PATTERN_CHAR match_pattern_wchar
+#define MATCHLEN wmatchlen
 
-  switch (c = *pat++)
-    {
-    default:
-      return (FOLD(*string) == FOLD(c));
-    case '\\':
-      return (FOLD(*string) == FOLD(*pat));
-    case '?':
-      return (*pat == LPAREN ? 1 : (*string != '\0'));
-    case '*':
-      return (1);
-    case '+':
-    case '!':
-    case '@':
-      return (*pat == LPAREN ? 1 : (FOLD(*string) == FOLD(c)));
-    case '[':
-      return (*string != '\0');
-    }
-}
-
-int
-umatchlen (pat, max)
-     char *pat;
-     size_t max;
-{
-  char c;
-  int matlen, bracklen, t, in_cclass, in_collsym, in_equiv;
+#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c))
+#define LPAREN L'('
+#define RPAREN L')'
+#include "gm_loop.c"
 
-  if (*pat == 0)
-    return (0);
+#endif /* HANDLE_MULTIBYTE */
 
-  matlen = in_cclass = in_collsym = in_equiv = 0;
-  while (c = *pat++)
-    {
-      switch (c)
-       {
-       default:
-         matlen++;
-         break;
-       case '\\':
-         if (*pat == 0)
-           return ++matlen;
-         else
-           {
-             matlen++;
-             pat++;
-           }
-         break;
-       case '?':
-         if (*pat == LPAREN)
-           return (matlen = -1);               /* XXX for now */
-         else
-           matlen++;
-         break;
-       case '*':
-         return (matlen = -1);
-       case '+':
-       case '!':
-       case '@':
-         if (*pat == LPAREN)
-           return (matlen = -1);               /* XXX for now */
-         else
-           matlen++;
-         break;
-       case '[':
-         /* scan for ending `]', skipping over embedded [:...:] */
-         bracklen = 1;
-         c = *pat++;
-         do
-           {
-             if (c == 0)
-               {
-                 pat--;                        /* back up to NUL */
-                 matlen += bracklen;
-                 goto bad_bracket;
-               }
-             else if (c == '\\')
-               {
-                 /* *pat == backslash-escaped character */
-                 bracklen++;
-                 /* If the backslash or backslash-escape ends the string,
-                    bail.  The ++pat skips over the backslash escape */
-                 if (*pat == 0 || *++pat == 0)
-                   {
-                     matlen += bracklen;
-                     goto bad_bracket;
-                   }
-               }
-             else if (c == '[' && *pat == ':') /* character class */
-               {
-                 pat++;
-                 bracklen++;
-                 in_cclass = 1;
-               }
-             else if (in_cclass && c == ':' && *pat == ']')
-               {
-                 pat++;
-                 bracklen++;
-                 in_cclass = 0;
-               }
-             else if (c == '[' && *pat == '.') /* collating symbol */
-               {
-                 pat++;
-                 bracklen++;
-                 if (*pat == ']')      /* right bracket can appear as collating symbol */
-                   {
-                     pat++;
-                     bracklen++;
-                   }
-                 in_collsym = 1;
-               }
-             else if (in_collsym && c == '.' && *pat == ']')
-               {
-                 pat++;
-                 bracklen++;
-                 in_collsym = 0;
-               }
-             else if (c == '[' && *pat == '=') /* equivalence class */
-               {
-                 pat++;
-                 bracklen++;
-                 if (*pat == ']')      /* right bracket can appear as equivalence class */
-                   {
-                     pat++;
-                     bracklen++;
-                   }
-                 in_equiv = 1;
-               }
-             else if (in_equiv && c == '=' && *pat == ']')
-               {
-                 pat++;
-                 bracklen++;
-                 in_equiv = 0;
-               }
-             else
-               bracklen++;
-           }
-         while ((c = *pat++) != ']');
-         matlen++;             /* bracket expression can only match one char */
-bad_bracket:
-         break;
-       }
-    }
-
-  return matlen;
-}
 
 #if defined (EXTENDED_GLOB)
 /* Skip characters in PAT and return the final occurrence of DIRSEP.  This
index 65179e24486e4819796f79c9f8128a16c366dace..cc14fb16ce06f10ef1a94b762658cf3b749e676b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2011 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
    
    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+struct STRUCT
+{
+  CHAR *pattern;
+  CHAR *string;
+};
+
 int FCT __P((CHAR *, CHAR *, int));
 
-static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, int));
+static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int));
 static CHAR *PARSE_COLLSYM __P((CHAR *, INT *));
 static CHAR *BRACKMATCH __P((CHAR *, U_CHAR, int));
 static int EXTMATCH __P((INT, CHAR *, CHAR *, CHAR *, CHAR *, int));
@@ -39,15 +45,16 @@ FCT (pattern, string, flags)
   se = string + STRLEN ((XCHAR *)string);
   pe = pattern + STRLEN ((XCHAR *)pattern);
 
-  return (GMATCH (string, se, pattern, pe, flags));
+  return (GMATCH (string, se, pattern, pe, (struct  STRUCT *)NULL, flags));
 }
 
 /* Match STRING against the filename pattern PATTERN, returning zero if
    it matches, FNM_NOMATCH if not.  */
 static int
-GMATCH (string, se, pattern, pe, flags)
+GMATCH (string, se, pattern, pe, ends, flags)
      CHAR *string, *se;
      CHAR *pattern, *pe;
+     struct STRUCT *ends;
      int flags;
 {
   CHAR *p, *n;         /* pattern, string */
@@ -103,6 +110,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
          break;
 
        case L('\\'):           /* backslash escape removes special meaning */
+         if (p == pe && sc == '\\' && (n+1 == se))
+           break;
+
          if (p == pe)
            return FNM_NOMATCH;
 
@@ -118,7 +128,16 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
            return FNM_NOMATCH;
          break;
 
-       case '*':               /* Match zero or more characters */
+       case L('*'):            /* Match zero or more characters */
+         /* See below for the reason for using this. It avoids backtracking
+            back to a previous `*'.  Picked up from glibc. */
+         if (ends != NULL)
+           {
+             ends->pattern = p - 1;
+             ends->string = n;
+             return (0);
+           }
+
          if ((flags & FNM_PERIOD) && sc == L('.') &&
              (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/'))))
            /* `*' cannot match a `.' if it is the first character of the
@@ -141,17 +160,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
                {
                  CHAR *newn;
 
-#if 0
-                 for (newn = n; newn < se; ++newn)
-                   {
-                     if (EXTMATCH (c, newn, se, p, pe, flags) == 0)
-                       return (0);
-                   }
-#else
                  /* We can match 0 or 1 times.  If we match, return success */
                  if (EXTMATCH (c, n, se, p, pe, flags) == 0)
                    return (0);
-#endif
 
                  /* We didn't match the extended glob pattern, but
                     that's OK, since we can match 0 or 1 occurrences.
@@ -241,7 +252,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
            {
              while (n < se && *n != L('/'))
                ++n;
-             if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, flags) == 0))
+             if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, NULL, flags) == 0))
                return 0;
              return FNM_NOMATCH;       /* XXX */
            }
@@ -250,10 +261,13 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
          {
            U_CHAR c1;
            const CHAR *endp;
+           struct STRUCT end;
 
+           end.pattern = NULL;
            endp = MEMCHR (n, (flags & FNM_PATHNAME) ? L('/') : L('\0'), se - n);
            if (endp == 0)
              endp = se;
+
            c1 = ((flags & FNM_NOESCAPE) == 0 && c == L('\\')) ? *p : c;
            c1 = FOLD (c1);
            for (--p; n < endp; ++n)
@@ -272,9 +286,24 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
                  continue;
 
                /* Otherwise, we just recurse. */
-               if (GMATCH (n, se, p, pe, flags & ~FNM_PERIOD) == 0)
-                 return (0);
+               if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0)
+                 {
+                   if (end.pattern == NULL)
+                     return (0);
+                   break;
+                 }
              }
+           /* This is a clever idea from glibc, used to avoid backtracking
+              to a `*' that appears earlier in the pattern.  We get away
+              without saving se and pe because they are always the same,
+              even in the recursive calls to gmatch */ 
+           if (end.pattern != NULL)
+             {
+               p = end.pattern;
+               n = end.string;
+               continue;
+             }
+
            return FNM_NOMATCH;
          }
 
@@ -355,11 +384,13 @@ BRACKMATCH (p, test, flags)
 {
   register CHAR cstart, cend, c;
   register int not;    /* Nonzero if the sense of the character class is inverted.  */
-  int brcnt, forcecoll;
+  int brcnt, brchr, forcecoll, isrange;
   INT pc;
   CHAR *savep;
+  U_CHAR orig_test;
 
-  test = FOLD (test);
+  orig_test = test;
+  test = FOLD (orig_test);
 
   savep = p;
 
@@ -424,12 +455,23 @@ BRACKMATCH (p, test, flags)
                {
                  bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR));
                  *(ccname + (close - p - 1)) = L('\0');
-                 pc = IS_CCLASS (test, (XCHAR *)ccname);
+                 pc = IS_CCLASS (orig_test, (XCHAR *)ccname);
                }
              if (pc == -1)
-               pc = 0;
+               {
+                 /* CCNAME is not a valid character class in the current
+                    locale. In addition to noting no match (pc = 0), we have
+                    a choice about what to do with the invalid charclass.
+                    Posix leaves the behavior unspecified, but we're going
+                    to skip over the charclass and keep going instead of
+                    testing ORIG_TEST against each character in the class
+                    string. If we don't want to do that, take out the update
+                    of P. */
+                 pc = 0;
+                 p = close + 2;
+               }
              else
-               p = close + 2;
+               p = close + 2;          /* move past the closing `]' */
 
              free (ccname);
            }
@@ -477,6 +519,7 @@ BRACKMATCH (p, test, flags)
        }
 
       cstart = cend = FOLD (cstart);
+      isrange = 0;
 
       /* POSIX.2 2.8.3.1.2 says: `An expression containing a `[' that
         is not preceded by a backslash and is not part of a bracket
@@ -531,10 +574,18 @@ BRACKMATCH (p, test, flags)
              c = FOLD (c);
              continue;
            }
+         isrange = 1;
        }
 
+#if 0          /* TAG: bash-5.1 */
+      if (isrange == 0 && test == cstart)
+        goto matched;
+      if (isrange && RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0)
+       goto matched;
+#else
       if (RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0)
        goto matched;
+#endif
 
       if (c == L(']'))
        break;
@@ -546,16 +597,26 @@ matched:
   /* Skip the rest of the [...] that already matched.  */
   c = *--p;
   brcnt = 1;
+  brchr = 0;
   while (brcnt > 0)
     {
+      int oc;
+
       /* A `[' without a matching `]' is just another character to match. */
       if (c == L('\0'))
        return ((test == L('[')) ? savep : (CHAR *)0);
 
+      oc = c;
       c = *p++;
       if (c == L('[') && (*p == L('=') || *p == L(':') || *p == L('.')))
-       brcnt++;
-      else if (c == L(']'))
+       {
+         brcnt++;
+         brchr = *p;
+       }
+      /* we only want to check brchr if we set it above */
+      else if (c == L(']') && brcnt > 1 && brchr != 0 && oc == brchr)
+       brcnt--;
+      else if (c == L(']') && brcnt == 1)
        brcnt--;
       else if (!(flags & FNM_NOESCAPE) && c == L('\\'))
        {
@@ -748,7 +809,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
       /* If we can get away with no matches, don't even bother.  Just
         call GMATCH on the rest of the pattern and return success if
         it succeeds. */
-      if (xc == L('*') && (GMATCH (s, se, prest, pe, flags) == 0))
+      if (xc == L('*') && (GMATCH (s, se, prest, pe, NULL, flags) == 0))
        return 0;
 
       /* OK, we have to do this the hard way.  First, we make sure one of
@@ -761,7 +822,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
            {
              /* Match this substring (S -> SREST) against this
                 subpattern (psub -> pnext - 1) */
-             m1 = GMATCH (s, srest, psub, pnext - 1, flags) == 0;
+             m1 = GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0;
              /* OK, we matched a subpattern, so make sure the rest of the
                 string matches the rest of the pattern.  Also handle
                 multiple matches of the pattern. */
@@ -769,8 +830,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
                {
                  /* if srest > s, we are not at start of string */
                  xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-                 m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
-                       (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0);
+                 m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) ||
+                       (s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0);
                }
              if (m1 && m2)
                return (0);
@@ -785,7 +846,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
       /* If we can get away with no matches, don't even bother.  Just
         call gmatch on the rest of the pattern and return success if
         it succeeds. */
-      if (xc == L('?') && (GMATCH (s, se, prest, pe, flags) == 0))
+      if (xc == L('?') && (GMATCH (s, se, prest, pe, NULL, flags) == 0))
        return 0;
 
       /* OK, we have to do this the hard way.  First, we see if one of
@@ -799,8 +860,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
            {
              /* if srest > s, we are not at start of string */
              xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-             if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
-                 GMATCH (srest, se, prest, pe, xflags) == 0)
+             if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 &&
+                 GMATCH (srest, se, prest, pe, NULL, xflags) == 0)
                return (0);
            }
          if (pnext == prest)
@@ -816,14 +877,21 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
            {
              pnext = PATSCAN (psub, pe, L('|'));
              /* If one of the patterns matches, just bail immediately. */
-             if (m1 = (GMATCH (s, srest, psub, pnext - 1, flags) == 0))
+             if (m1 = (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0))
                break;
              if (pnext == prest)
                break;
            }
+
+         /* If nothing matched, but the string starts with a period and we
+            need to match periods explicitly, don't return this as a match,
+            even for negation. Might need to do this only if srest == s. */
+         if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD))
+           return (FNM_NOMATCH);
+
          /* if srest > s, we are not at start of string */
          xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
-         if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
+         if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0)
            return (0);
        }
       return (FNM_NOMATCH);
@@ -847,6 +915,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
 #undef PATSCAN
 #undef STRCOMPARE
 #undef EXTMATCH
+#undef STRUCT
 #undef BRACKMATCH
 #undef STRCHR
 #undef STRCOLL
index edc5b95d0c2880211f4026df512b4dd7a2c6e60e..64fdbbb7d96c174165c9fe40dcb5140fff398a85 100644 (file)
@@ -1,7 +1,7 @@
 /* strmatch.c -- ksh-like extended pattern matching for the shell and filename
                globbing. */
 
-/* Copyright (C) 1991-2011 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
    
 #include "shmbutil.h"
 #include "xmalloc.h"
 
+#include <errno.h>
+
+#if !defined (errno)
+extern int errno;
+#endif
+
 /* First, compile `sm_loop.c' for single-byte characters. */
 #define CHAR   unsigned char
 #define U_CHAR unsigned char
@@ -82,7 +88,7 @@ rangecmp (c1, c2, forcecoll)
 
   if ((ret = strcoll (s1, s2)) != 0)
     return ret;
-  return (c1 - c2);
+  return (c1 - c2);            /* impose total ordering */
 }
 #else /* !HAVE_STRCOLL */
 #  define rangecmp(c1, c2, f)  ((int)(c1) - (int)(c2))
@@ -144,25 +150,33 @@ static char const *const cclass_name[] =
 
 #define N_CHAR_CLASS (sizeof(cclass_name) / sizeof (cclass_name[0]))
 
-static int
-is_cclass (c, name)
-     int c;
+static enum char_class
+is_valid_cclass (name)
      const char *name;
 {
-  enum char_class char_class = CC_NO_CLASS;
-  int i, result;
+  enum char_class ret;
+  int i;
+
+  ret = CC_NO_CLASS;
 
   for (i = 1; i < N_CHAR_CLASS; i++)
     {
       if (STREQ (name, cclass_name[i]))
        {
-         char_class = (enum char_class)i;
+         ret = (enum char_class)i;
          break;
        }
     }
 
-  if (char_class == 0)
-    return -1;
+  return ret;
+}
+
+static int
+cclass_test (c, char_class)
+     int c;
+     enum char_class char_class;
+{
+  int result;
 
   switch (char_class)
     {
@@ -215,6 +229,22 @@ is_cclass (c, name)
 
   return result;  
 }
+       
+static int
+is_cclass (c, name)
+     int c;
+     const char *name;
+{
+  enum char_class char_class;
+  int result;
+
+  char_class = is_valid_cclass (name);
+  if (char_class == CC_NO_CLASS)
+    return -1;
+
+  result = cclass_test (c, char_class);
+  return (result);
+}
 
 /* Now include `sm_loop.c' for single-byte characters. */
 /* The result of FOLD is an `unsigned char' */
@@ -230,6 +260,7 @@ is_cclass (c, name)
 #define PATSCAN                        glob_patscan
 #define STRCOMPARE             strcompare
 #define EXTMATCH               extmatch
+#define STRUCT                 smat_struct
 #define STRCHR(S, C)           strchr((S), (C))
 #define MEMCHR(S, C, N)                memchr((S), (C), (N))
 #define STRCOLL(S1, S2)                strcoll((S1), (S2))
@@ -257,6 +288,41 @@ is_cclass (c, name)
 
 extern char *mbsmbchar __P((const char *));
 
+#if FNMATCH_EQUIV_FALLBACK
+/* We don't include <fnmatch.h> in order to avoid namespace collisions; the
+   internal strmatch still uses the FNM_ constants. */
+extern int fnmatch (const char *, const char *, int);
+
+/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them
+   to fnmatch to see if wide characters c1 and c2 collate as members of the
+   same equivalence class. We can't really do this portably any other way */
+static int
+_fnmatch_fallback_wc (c1, c2)
+     wchar_t c1, c2;                   /* string char, patchar */
+{
+  char w1[MB_LEN_MAX+1];               /* string */
+  char w2[MB_LEN_MAX+8];               /* constructed pattern */
+  int l1, l2;
+
+  l1 = wctomb (w1, c1);
+  if (l1 == -1)
+    return (2);
+  w1[l1] = '\0';
+
+  /* reconstruct the pattern */
+  w2[0] = w2[1] = '[';
+  w2[2] = '=';
+  l2 = wctomb (w2+3, c2);
+  if (l2 == -1)
+    return (2);
+  w2[l2+3] = '=';
+  w2[l2+4] = w2[l2+5] = ']';
+  w2[l2+6] = '\0';
+
+  return (fnmatch ((const char *)w2, (const char *)w1, 0));
+}
+#endif
+
 static int
 rangecmp_wc (c1, c2, forcecoll)
      wint_t c1, c2;
@@ -264,6 +330,7 @@ rangecmp_wc (c1, c2, forcecoll)
 {
   static wchar_t s1[2] = { L' ', L'\0' };
   static wchar_t s2[2] = { L' ', L'\0' };
+  int r, oerrno;
 
   if (c1 == c2)
     return 0;
@@ -274,14 +341,38 @@ rangecmp_wc (c1, c2, forcecoll)
   s1[0] = c1;
   s2[0] = c2;
 
+#if 0  /* TAG:bash-5.1 */
+  /* We impose a total ordering here by returning c1-c2 if wcscoll returns 0,
+     as we do above in the single-byte case.  If we do this, we can no longer
+     use this code in collequiv_wc */
+  if ((r = wcscoll (s1, s2)) != 0)
+    return r;
+  return ((int)(c1 - c2));             /* impose total ordering */
+#else
   return (wcscoll (s1, s2));
+#endif
 }
 
+/* Returns non-zero on success */
 static int
 collequiv_wc (c, equiv)
      wint_t c, equiv;
 {
-  return (c == equiv);
+  wchar_t s, p;
+
+  if (rangecmp_wc (c, equiv, 1) == 0)
+    return 1;
+#if FNMATCH_EQUIV_FALLBACK
+/* We check explicitly for success (fnmatch returns 0) to avoid problems if
+   our local definition of FNM_NOMATCH (strmatch.h) doesn't match the
+   system's (fnmatch.h). We don't care about error return values here. */
+
+  s = c;
+  p = equiv;
+  return (_fnmatch_fallback_wc (s, p) == 0);
+#else
+  return 0;
+#endif
 }
 
 /* Helper function for collating symbol. */
@@ -355,6 +446,50 @@ is_wcclass (wc, name)
     return (iswctype (wc, desc));
 }
 
+/* Return 1 if there are no char class [:class:] expressions (degenerate case)
+   or only posix-specified (C locale supported) char class expressions in
+   PATTERN.  These are the ones where it's safe to punt to the single-byte
+   code, since wide character support allows locale-defined char classes.
+   This only uses single-byte code, but is only needed to support multibyte
+   locales. */
+static int
+posix_cclass_only (pattern)
+     char *pattern;
+{
+  char *p, *p1;
+  char cc[16];         /* sufficient for all valid posix char class names */
+  enum char_class valid;
+
+  p = pattern;
+  while (p = strchr (p, '['))
+    {
+      if (p[1] != ':')
+       {
+         p++;
+         continue;
+        }
+      p += 2;          /* skip past "[:" */
+      /* Find end of char class expression */
+      for (p1 = p; *p1;  p1++)
+       if (*p1 == ':' && p1[1] == ']')
+         break;
+      if (*p1 == 0)    /* no char class expression found */
+       break;
+      /* Find char class name and validate it against posix char classes */
+      if ((p1 - p) >= sizeof (cc))
+       return 0;
+      bcopy (p, cc, p1 - p);
+      cc[p1 - p] = '\0';
+      valid = is_valid_cclass (cc);
+      if (valid == CC_NO_CLASS)
+       return 0;               /* found unrecognized char class name */
+
+      p = p1 + 2;              /* found posix char class name */
+    }
+    
+  return 1;                    /* no char class names or only posix */
+}      
+
 /* Now include `sm_loop.c' for multibyte characters. */
 #define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c))
 #define FCT                    internal_wstrmatch
@@ -365,6 +500,7 @@ is_wcclass (wc, name)
 #define PATSCAN                        glob_patscan_wc
 #define STRCOMPARE             wscompare
 #define EXTMATCH               extmatch_wc
+#define STRUCT                 wcsmat_struct
 #define STRCHR(S, C)           wcschr((S), (C))
 #define MEMCHR(S, C, N)                wmemchr((S), (C), (N))
 #define STRCOLL(S1, S2)                wcscoll((S1), (S2))
@@ -390,10 +526,10 @@ xstrmatch (pattern, string, flags)
   wchar_t *wpattern, *wstring;
   size_t plen, slen, mplen, mslen;
 
-  if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0)
+  if (MB_CUR_MAX == 1)
     return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
 
-  if (MB_CUR_MAX == 1)
+  if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern) )
     return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
 
   n = xdupmbstowcs (&wpattern, NULL, pattern);
index 5c99e0cae9938ab410fc68fd8e9a2a34105fc128..aee00cc8e08e06e284b71ed3d9aba021f3a1088b 100644 (file)
@@ -46,6 +46,8 @@
 #define FNM_CASEFOLD   (1 << 4) /* Compare without regard to case. */
 #define FNM_EXTMATCH   (1 << 5) /* Use ksh-like extended matching. */
 
+#define FNM_FIRSTCHAR  (1 << 6) /* Match only the first character */
+
 /* Value returned by `strmatch' if STRING does not match PATTERN.  */
 #undef FNM_NOMATCH
 
index 053305fcdc71af1a0b70cdd8c214c7dc55379179..5621adf418a69eb4a17ff52e856ad91384be07ab 100644 (file)
 #else
 #  include <strings.h>
 #endif
-
+#include <errno.h>
 #include <stdio.h>
 
+#if defined (HAVE_MMAP)
+#include <sys/mman.h>
+#endif
+
 /* Define getpagesize () if the system does not.  */
 #ifndef HAVE_GETPAGESIZE
 #  include "getpagesize.h"
 #  include "watch.h"
 #endif
 
+#ifdef powerof2
+#  undef powerof2
+#endif
+/* Could also use (((x) & -(x)) == (x)) */
+#define powerof2(x)    ((((x) - 1) & (x)) == 0)
+
 /* System-specific omissions. */
 #ifdef HPUX
 #  define NO_VALLOC
 #endif
 
+/* SIZEOF_LONG * 4 - 2, usable bins from 1..NBUCKETS-1 */
 #define NBUCKETS       30
 
 #define ISALLOC ((char) 0xf7)  /* magic byte that implies allocation */
@@ -191,6 +202,23 @@ typedef union _malloc_guard {
 
 #define STARTBUCK      1
 
+/* Should we use mmap for large allocations? */
+#if defined (HAVE_MMAP)
+#  if !defined (MAP_ANON) && defined (MAP_ANONYMOUS)
+#    define MAP_ANON MAP_ANONYMOUS
+#  endif
+#endif
+
+#if defined (HAVE_MMAP) && defined (MAP_ANON)
+#  define USE_MMAP
+#endif
+
+#if defined (USE_MMAP)
+#  define MMAP_THRESHOLD       14      /* must be >= SPLIT_MAX, COMBINE_MAX */
+#else
+#  define MMAP_THRESHOLD       (8 * SIZEOF_LONG)
+#endif
+
 /* Flags for the internal functions. */
 #define MALLOC_WRAPPER 0x01    /* wrapper function */
 #define MALLOC_INTERNAL        0x02    /* internal function calling another */
@@ -240,6 +268,10 @@ static const unsigned long binsizes[NBUCKETS] = {
 /* binsizes[x] == (1 << ((x) + 3)) */
 #define binsize(x)     binsizes[(x)]
 
+#if !defined (errno)
+extern int errno;
+#endif
+
 /* 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));
@@ -278,6 +310,9 @@ int malloc_flags = 0;       /* future use */
 int malloc_trace = 0;  /* trace allocations and frees to stderr */
 int malloc_register = 0;       /* future use */
 
+/* Use a variable in case we want to dynamically adapt it in the future */
+int malloc_mmap_threshold = MMAP_THRESHOLD;
+
 #ifdef MALLOC_TRACE
 char _malloc_trace_buckets[NBUCKETS];
 
@@ -584,7 +619,7 @@ morecore (nu)
 
   /* Try to split a larger block here, if we're within the range of sizes
      to split. */
-  if (nu >= SPLIT_MIN)
+  if (nu >= SPLIT_MIN && nu <= malloc_mmap_threshold)
     {
       bsplit (nu);
       if (nextf[nu] != 0)
@@ -593,7 +628,7 @@ morecore (nu)
 
   /* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1],
      if we can, and we're within the range of the block coalescing limits. */
-  if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1])
+  if (nu >= COMBINE_MIN && nu < COMBINE_MAX && nu <= malloc_mmap_threshold && busy[nu - 1] == 0 && nextf[nu - 1])
     {
       bcoalesce (nu);
       if (nextf[nu] != 0)
@@ -622,6 +657,25 @@ morecore (nu)
       nblks = 1;
     }
 
+#if defined (USE_MMAP)
+  if (nu > malloc_mmap_threshold)
+    {
+      mp = (union mhead *)mmap (0, sbrk_amt, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+      if ((void *)mp == MAP_FAILED)
+       goto morecore_done;
+      nextf[nu] = mp;
+      mp->mh_alloc = ISFREE;
+      mp->mh_index = nu;
+      CHAIN (mp) = 0;
+#ifdef MALLOC_STATS
+      _mstats.nmmap++;
+      _mstats.tmmap += sbrk_amt;
+#endif
+      goto morecore_done;
+    }
+#endif
+       
+
 #ifdef MALLOC_STATS
   _mstats.nsbrk++;
   _mstats.tsbrk += sbrk_amt;
@@ -905,6 +959,17 @@ internal_free (mem, file, line, flags)
   if (mg.i != p->mh_nbytes)
     xbotch (mem, ERR_ASSERT_FAILED, _("free: start and end chunk sizes differ"), file, line);
 
+#if defined (USE_MMAP)
+  if (nunits > malloc_mmap_threshold)
+    {
+      munmap (p, binsize (nunits));
+#if defined (MALLOC_STATS)
+      _mstats.nlesscore[nunits]++;
+#endif
+      goto free_return;
+    }
+#endif
+
 #if GLIBC21
   if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0)))
 #else
@@ -1033,18 +1098,19 @@ internal_realloc (mem, n, file, line, flags)
   _mstats.bytesreq += (n < tocopy) ? 0 : n - tocopy;
 #endif
 
+  /* If we're reallocating to the same size as previously, return now */
+  if (n == p->mh_nbytes)
+    return mem;
+
   /* 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))
+  if (RIGHT_BUCKET(nbytes, nunits) || RIGHT_BUCKET(nbytes, nunits-1))
     {
-#if 0
-      m = (char *)mem + p->mh_nbytes;
-#else
       /* Compensate for increment above. */
       m -= 4;
-#endif
+
       *m++ = 0;  *m++ = 0;  *m++ = 0;  *m++ = 0;
       m = (char *)mem + (p->mh_nbytes = n);
 
@@ -1062,6 +1128,8 @@ internal_realloc (mem, n, file, line, flags)
   _mstats.nrcopy++;
 #endif
 
+  /* If we are using mmap and have mremap, we could use it here. */
+
   if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0)
     return 0;
   FASTCOPY (mem, m, tocopy);
@@ -1106,11 +1174,7 @@ internal_memalign (alignment, size, file, line, flags)
   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.  */
@@ -1121,6 +1185,57 @@ internal_memalign (alignment, size, file, line, flags)
   return aligned;
 }
 
+int
+posix_memalign (memptr, alignment, size)
+     void **memptr;
+     size_t alignment, size;
+{
+  void *mem;
+
+  /* Perform posix-mandated error checking here */
+  if ((alignment % sizeof (void *) != 0) || alignment == 0)
+    return EINVAL;
+  else if (powerof2 (alignment) == 0)
+    return EINVAL;
+
+  mem = internal_memalign (alignment, size, (char *)0, 0, 0);
+  if (mem != 0)
+    {
+      *memptr = mem;
+      return 0;
+    }
+  return ENOMEM;
+}
+
+size_t
+malloc_usable_size (mem)
+     void *mem;
+{
+  register union mhead *p;
+  register char *ap;
+  register int maxbytes;
+
+
+  if ((ap = (char *)mem) == 0)
+    return 0;
+
+  /* Find the true start of the memory block to discover which bin */
+  p = (union mhead *) ap - 1;
+  if (p->mh_alloc == ISMEMALIGN)
+    {
+      ap -= p->mh_nbytes;
+      p = (union mhead *) ap - 1;
+    }
+
+  /* XXX - should we return 0 if ISFREE? */
+  maxbytes = binsize(p->mh_index);
+
+  /* So the usable size is the maximum number of bytes in the bin less the
+     malloc overhead */
+  maxbytes -= MOVERHEAD + MSLOP;
+  return (maxbytes);
+}
+
 #if !defined (NO_VALLOC)
 /* This runs into trouble with getpagesize on HPUX, and Multimax machines.
    Patching out seems cleaner than the ugly fix needed.  */
index 11389ffc04b873c135718fafc46e663b896b2514..dac0298071a25a44514904355d580acd96652709 100644 (file)
@@ -25,6 +25,7 @@
 
 #ifdef MALLOC_STATS
 
+/* This needs to change if the definition in malloc.c changes */
 #ifndef NBUCKETS
 #  define NBUCKETS 30
 #endif
@@ -77,6 +78,8 @@ struct _malstats {
   int nsplit[NBUCKETS];
   int tbcoalesce;
   int ncoalesce[NBUCKETS];
+  int nmmap;
+  bits32_t tmmap;
 };
 
 /* Return statistics describing allocation of blocks of size BLOCKSIZE.
@@ -98,6 +101,7 @@ struct bucket_stats {
   int nlesscore;
   int nsplit;
   int ncoalesce;
+  int nmmap;           /* currently unused */
 };
 
 extern struct bucket_stats malloc_bucket_stats __P((int));
index ae555a1da41a0749fb8a3189a08cb00ad20b4d12..05247970f36312ec005142254e09229700eba944 100644 (file)
@@ -36,6 +36,8 @@
 
 extern int malloc_free_blocks __P((int));
 
+extern int malloc_mmap_threshold;
+
 extern struct _malstats _mstats;
 
 extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t));
@@ -103,8 +105,12 @@ _print_malloc_stats (s, fp)
   for (i = totused = totfree = 0; i < NBUCKETS; i++)
     {
       v = malloc_bucket_stats (i);
+      /* Show where the mmap threshold is; sizes greater than this use mmap to
+        allocate and munmap to free (munmap shows up as lesscore). */
+      if (i == malloc_mmap_threshold+1)
+       fprintf (fp, "--------\n");
       if (v.nmal > 0)
-       fprintf (fp, "%8lu\t%4d\t%6d\t%5d\t%8d\t%d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce);
+       fprintf (fp, "%8lu\t%4d\t%6d\t%5d\t%8d\t%8d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce);
       totfree += v.nfree * v.blocksize;
       totused += v.nused * v.blocksize;
     }
@@ -115,6 +121,8 @@ _print_malloc_stats (s, fp)
           _mstats.nmal, _mstats.nfre, _mstats.nrealloc, _mstats.nrcopy);
   fprintf (fp, "Total sbrks: %d, total bytes via sbrk: %d\n",
           _mstats.nsbrk, _mstats.tsbrk);
+  fprintf (fp, "Total mmaps: %d, total bytes via mmap: %d\n",
+          _mstats.nmmap, _mstats.tmmap);
   fprintf (fp, "Total blocks split: %d, total block coalesces: %d\n",
           _mstats.tbsplit, _mstats.tbcoalesce);
 }
index 1291249d5b2b370be8ae4f2827954e6fc07e6f32..b2358c67ac2c18a1a5ef1dc0375994dfc64b0f7d 100644 (file)
@@ -64,7 +64,8 @@ LOCAL_DEFS = @LOCAL_DEFS@
 
 INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib
 
-CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS)
+CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \
+         $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
 
 .c.o:
        ${RM} $@
index f1098c48b17ef910b18edea72c4d36926bb362c4..57ae10f7318e521797fb4b8f7e426c7ab1324a49 100644 (file)
@@ -1,6 +1,6 @@
 /* bind.c -- key binding and startup file support for the readline library. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -80,6 +80,8 @@ static void _rl_init_file_error (const char *, ...)  __attribute__((__format__ (
 static void _rl_init_file_error ();
 #endif
 
+static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *));
+
 static char *_rl_read_file PARAMS((char *, size_t *));
 static int _rl_read_init_file PARAMS((const char *, int));
 static int glean_key_from_name PARAMS((char *));
@@ -87,14 +89,30 @@ static int glean_key_from_name PARAMS((char *));
 static int find_boolean_var PARAMS((const char *));
 static int find_string_var PARAMS((const char *));
 
+static const char *boolean_varname PARAMS((int));
+static const char *string_varname PARAMS((int));
+
 static char *_rl_get_string_variable_value PARAMS((const char *));
 static int substring_member_of_array PARAMS((const char *, const char * const *));
 
+static int _rl_get_keymap_by_name PARAMS((const char *));
+static int _rl_get_keymap_by_map PARAMS((Keymap));
+
 static int currently_reading_init_file;
 
 /* used only in this file */
 static int _rl_prefer_visible_bell = 1;
 
+#define OP_EQ  1
+#define OP_NE  2
+#define OP_GT  3
+#define OP_GE  4
+#define OP_LT  5
+#define OP_LE  6
+
+#define OPSTART(c)     ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>')
+#define CMPSTART(c)    ((c) == '=' || (c) == '!')
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Binding keys                                */
@@ -105,10 +123,7 @@ static int _rl_prefer_visible_bell = 1;
    Add NAME to the list of named functions.  Make FUNCTION be the function
    that gets called.  If KEY is not -1, then bind it. */
 int
-rl_add_defun (name, function, key)
-     const char *name;
-     rl_command_func_t *function;
-     int key;
+rl_add_defun (const char *name, rl_command_func_t *function, int key)
 {
   if (key != -1)
     rl_bind_key (key, function);
@@ -118,9 +133,7 @@ rl_add_defun (name, function, key)
 
 /* Bind KEY to FUNCTION.  Returns non-zero if KEY is out of range. */
 int
-rl_bind_key (key, function)
-     int key;
-     rl_command_func_t *function;
+rl_bind_key (int key, rl_command_func_t *function)
 {
   char keyseq[3];
   int l;
@@ -168,10 +181,7 @@ rl_bind_key (key, function)
 /* Bind KEY to FUNCTION in MAP.  Returns non-zero in case of invalid
    KEY. */
 int
-rl_bind_key_in_map (key, function, map)
-     int key;
-     rl_command_func_t *function;
-     Keymap map;
+rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
 {
   int result;
   Keymap oldmap;
@@ -184,57 +194,44 @@ rl_bind_key_in_map (key, function, map)
 }
 
 /* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound.  Right
-   now, this is always used to attempt to bind the arrow keys, hence the
-   check for rl_vi_movement_mode. */
+   now, this is always used to attempt to bind the arrow keys. */
 int
-rl_bind_key_if_unbound_in_map (key, default_func, kmap)
-     int key;
-     rl_command_func_t *default_func;
-     Keymap kmap;
+rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap)
 {
-  char keyseq[2];
+  char *keyseq;
 
-  keyseq[0] = (unsigned char)key;
-  keyseq[1] = '\0';
+  keyseq = rl_untranslate_keyseq ((unsigned char)key);
   return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap));
 }
 
 int
-rl_bind_key_if_unbound (key, default_func)
-     int key;
-     rl_command_func_t *default_func;
+rl_bind_key_if_unbound (int key, rl_command_func_t *default_func)
 {
-  char keyseq[2];
+  char *keyseq;
 
-  keyseq[0] = (unsigned char)key;
-  keyseq[1] = '\0';
+  keyseq = rl_untranslate_keyseq ((unsigned char)key);
   return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
 }
 
 /* Make KEY do nothing in the currently selected keymap.
-   Returns non-zero in case of error. */
+   Returns non-zero in case of error.  This is not the same as self-insert;
+   this makes it a dead key. */
 int
-rl_unbind_key (key)
-     int key;
+rl_unbind_key (int key)
 {
   return (rl_bind_key (key, (rl_command_func_t *)NULL));
 }
 
-/* Make KEY do nothing in MAP.
-   Returns non-zero in case of error. */
+/* Make KEY do nothing in MAP. Returns non-zero in case of error. */
 int
-rl_unbind_key_in_map (key, map)
-     int key;
-     Keymap map;
+rl_unbind_key_in_map (int key, Keymap map)
 {
   return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map));
 }
 
 /* Unbind all keys bound to FUNCTION in MAP. */
 int
-rl_unbind_function_in_map (func, map)
-     rl_command_func_t *func;
-     Keymap map;
+rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)
 {
   register int i, rval;
 
@@ -249,10 +246,9 @@ rl_unbind_function_in_map (func, map)
   return rval;
 }
 
+/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */
 int
-rl_unbind_command_in_map (command, map)
-     const char *command;
-     Keymap map;
+rl_unbind_command_in_map (const char *command, Keymap map)
 {
   rl_command_func_t *func;
 
@@ -266,9 +262,7 @@ rl_unbind_command_in_map (command, map)
    FUNCTION, starting in the current keymap.  This makes new
    keymaps as necessary. */
 int
-rl_bind_keyseq (keyseq, function)
-     const char *keyseq;
-     rl_command_func_t *function;
+rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)
 {
   return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap));
 }
@@ -277,20 +271,14 @@ rl_bind_keyseq (keyseq, function)
    FUNCTION.  This makes new keymaps as necessary.  The initial
    place to do bindings is in MAP. */
 int
-rl_bind_keyseq_in_map (keyseq, function, map)
-     const char *keyseq;
-     rl_command_func_t *function;
-     Keymap map;
+rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
 {
   return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
 }
 
 /* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */
 int
-rl_set_key (keyseq, function, map)
-     const char *keyseq;
-     rl_command_func_t *function;
-     Keymap map;
+rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
 {
   return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
 }
@@ -299,16 +287,24 @@ rl_set_key (keyseq, function, map)
    now, this is always used to attempt to bind the arrow keys, hence the
    check for rl_vi_movement_mode. */
 int
-rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)
-     const char *keyseq;
-     rl_command_func_t *default_func;
-     Keymap kmap;
+rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap)
 {
   rl_command_func_t *func;
+  char *keys;
+  int keys_len;
 
   if (keyseq)
     {
-      func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL);
+      /* Handle key sequences that require translations and `raw' ones that
+        don't. This might be a problem with backslashes. */
+      keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
+      if (rl_translate_keyseq (keyseq, keys, &keys_len))
+       {
+         xfree (keys);
+         return -1;
+       }
+      func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL);
+      xfree (keys);
 #if defined (VI_MODE)
       if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode)
 #else
@@ -322,9 +318,7 @@ rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)
 }
 
 int
-rl_bind_keyseq_if_unbound (keyseq, default_func)
-     const char *keyseq;
-     rl_command_func_t *default_func;
+rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func)
 {
   return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
 }
@@ -333,9 +327,7 @@ rl_bind_keyseq_if_unbound (keyseq, default_func)
    the string of characters MACRO.  This makes new keymaps as
    necessary.  The initial place to do bindings is in MAP. */
 int
-rl_macro_bind (keyseq, macro, map)
-     const char *keyseq, *macro;
-     Keymap map;
+rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
 {
   char *macro_keys;
   int macro_keys_len;
@@ -357,16 +349,13 @@ rl_macro_bind (keyseq, macro, map)
    a macro (ISMACR), or a keymap (ISKMAP).  This makes new keymaps
    as necessary.  The initial place to do bindings is in MAP. */
 int
-rl_generic_bind (type, keyseq, data, map)
-     int type;
-     const char *keyseq;
-     char *data;
-     Keymap map;
+rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
 {
   char *keys;
-  int keys_len;
+  int keys_len, prevkey;
   register int i;
   KEYMAP_ENTRY k;
+  Keymap prevmap;  
 
   k.function = 0;
 
@@ -389,12 +378,18 @@ rl_generic_bind (type, keyseq, data, map)
       return -1;
     }
 
+  prevmap = map;
+  prevkey = keys[0];
+
   /* Bind keys, making new keymaps as necessary. */
   for (i = 0; i < keys_len; i++)
     {
       unsigned char uc = keys[i];
       int ic;
 
+      if (i > 0)
+       prevkey = ic;
+
       ic = uc;
       if (ic < 0 || ic >= KEYMAP_SIZE)
         {
@@ -406,7 +401,10 @@ rl_generic_bind (type, keyseq, data, map)
        {
          ic = UNMETA (ic);
          if (map[ESC].type == ISKMAP)
-           map = FUNCTION_TO_KEYMAP (map, ESC);
+           {
+             prevmap = map;
+             map = FUNCTION_TO_KEYMAP (map, ESC);
+           }
        }
 
       if ((i + 1) < keys_len)
@@ -425,6 +423,7 @@ rl_generic_bind (type, keyseq, data, map)
              map[ic].type = ISKMAP;
              map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());
            }
+         prevmap = map;
          map = FUNCTION_TO_KEYMAP (map, ic);
          /* The dispatch code will return this function if no matching
             key sequence is found in the keymap.  This (with a little
@@ -444,6 +443,7 @@ rl_generic_bind (type, keyseq, data, map)
            xfree ((char *)map[ic].function);
          else if (map[ic].type == ISKMAP)
            {
+             prevmap = map;
              map = FUNCTION_TO_KEYMAP (map, ic);
              ic = ANYOTHERKEY;
              /* If we're trying to override a keymap with a null function
@@ -460,7 +460,28 @@ rl_generic_bind (type, keyseq, data, map)
        }
 
       rl_binding_keymap = map;
+
     }
+
+  /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap
+     points to the keymap where we unbound the key (sanity check), and the
+     current binding keymap is empty (rl_empty_keymap() returns non-zero),
+     and the binding keymap has ANYOTHERKEY set with type == ISFUNC
+     (overridden function), delete the now-empty keymap, take the previously-
+     overridden function and remove the override. */
+  /* Right now, this only works one level back. */
+  if (type == ISFUNC && data == 0 &&
+      prevmap[prevkey].type == ISKMAP &&
+      (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) &&
+      rl_binding_keymap[ANYOTHERKEY].type == ISFUNC &&
+      rl_empty_keymap (rl_binding_keymap))
+    {
+      prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type;
+      prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function;
+      rl_discard_keymap (rl_binding_keymap);
+      rl_binding_keymap = prevmap;
+    }
+
   xfree (keys);
   return 0;
 }
@@ -469,10 +490,7 @@ rl_generic_bind (type, keyseq, data, map)
    an array of characters.  LEN gets the final length of ARRAY.  Return
    non-zero if there was an error parsing SEQ. */
 int
-rl_translate_keyseq (seq, array, len)
-     const char *seq;
-     char *array;
-     int *len;
+rl_translate_keyseq (const char *seq, char *array, int *len)
 {
   register int i, c, l, temp;
 
@@ -483,7 +501,10 @@ rl_translate_keyseq (seq, array, len)
          c = seq[++i];
 
          if (c == 0)
-           break;
+           {
+             array[l++] = '\\';        /* preserve trailing backslash */
+             break;
+           }
 
          /* Handle \C- and \M- prefixes. */
          if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
@@ -494,8 +515,6 @@ rl_translate_keyseq (seq, array, len)
                  array[l++] = ESC;     /* ESC is meta-prefix */
                  i += 5;
                  array[l++] = CTRL (_rl_to_upper (seq[i]));
-                 if (seq[i] == '\0')
-                   i--;
                }
              else if (c == 'M')
                {
@@ -524,6 +543,8 @@ rl_translate_keyseq (seq, array, len)
                  /* Special hack for C-?... */
                  array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
                }
+             if (seq[i] == '\0')
+               break;
              continue;
            }         
 
@@ -596,8 +617,7 @@ rl_translate_keyseq (seq, array, len)
 }
 
 static int
-_rl_isescape (c)
-     int c;
+_rl_isescape (int c)
 {
   switch (c)
     {
@@ -613,8 +633,7 @@ _rl_isescape (c)
 }
 
 static int
-_rl_escchar (c)
-     int c;
+_rl_escchar (int c)
 {
   switch (c)
     {
@@ -630,8 +649,7 @@ _rl_escchar (c)
 }
 
 char *
-rl_untranslate_keyseq (seq)
-     int seq;
+rl_untranslate_keyseq (int seq)
 {
   static char kseq[16];
   int i, c;
@@ -681,9 +699,7 @@ rl_untranslate_keyseq (seq)
 }
 
 char *
-_rl_untranslate_macro_value (seq, use_escapes)
-     char *seq;
-     int use_escapes;
+_rl_untranslate_macro_value (char *seq, int use_escapes)
 {
   char *ret, *r, *s;
   int c;
@@ -742,8 +758,7 @@ _rl_untranslate_macro_value (seq, use_escapes)
    If STRING doesn't have a matching function, then a NULL pointer
    is returned. */
 rl_command_func_t *
-rl_named_function (string)
-     const char *string;
+rl_named_function (const char *string)
 {
   register int i;
 
@@ -760,18 +775,15 @@ rl_named_function (string)
    used.  TYPE, if non-NULL, is a pointer to an int which will receive the
    type of the object pointed to.  One of ISFUNC (function), ISKMAP (keymap),
    or ISMACR (macro). */
-rl_command_func_t *
-rl_function_of_keyseq (keyseq, map, type)
-     const char *keyseq;
-     Keymap map;
-     int *type;
+static rl_command_func_t *
+_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type)
 {
   register int i;
 
   if (map == 0)
     map = _rl_keymap;
 
-  for (i = 0; keyseq && keyseq[i]; i++)
+  for (i = 0; keyseq && i < len; i++)
     {
       unsigned char ic = keyseq[i];
 
@@ -823,6 +835,18 @@ rl_function_of_keyseq (keyseq, map, type)
   return ((rl_command_func_t *) NULL);
 }
 
+rl_command_func_t *
+rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
+{
+  return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type);
+}
+
+rl_command_func_t *
+rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+{
+  return _rl_function_of_keyseq_internal (keyseq, len, map, type);
+}
+
 /* The last key bindings file read. */
 static char *last_readline_init_file = (char *)NULL;
 
@@ -835,17 +859,20 @@ static int current_readline_init_lineno;
    The size of the buffer is returned in *SIZEP.  Returns NULL if any
    errors were encountered. */
 static char *
-_rl_read_file (filename, sizep)
-     char *filename;
-     size_t *sizep;
+_rl_read_file (char *filename, size_t *sizep)
 {
   struct stat finfo;
   size_t file_size;
   char *buffer;
   int i, file;
 
-  if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0)
-    return ((char *)NULL);
+  file = -1;
+  if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
+    {
+      if (file >= 0)
+       close (file);
+      return ((char *)NULL);
+    }
 
   file_size = (size_t)finfo.st_size;
 
@@ -882,8 +909,7 @@ _rl_read_file (filename, sizep)
 
 /* Re-read the current keybindings file. */
 int
-rl_re_read_init_file (count, ignore)
-     int count, ignore;
+rl_re_read_init_file (int count, int ignore)
 {
   int r;
   r = rl_read_init_file ((const char *)NULL);
@@ -900,8 +926,7 @@ rl_re_read_init_file (count, ignore)
    If the file existed and could be opened and read, 0 is returned,
    otherwise errno is returned. */
 int
-rl_read_init_file (filename)
-     const char *filename;
+rl_read_init_file (const char *filename)
 {
   /* Default the filename. */
   if (filename == 0)
@@ -926,9 +951,7 @@ rl_read_init_file (filename)
 }
 
 static int
-_rl_read_init_file (filename, include_level)
-     const char *filename;
-     int include_level;
+_rl_read_init_file (const char *filename, int include_level)
 {
   register int i;
   char *buffer, *openname, *line, *end;
@@ -1025,6 +1048,62 @@ _rl_init_file_error (va_alist)
   va_end (args);
 }
 
+/* **************************************************************** */
+/*                                                                 */
+/*                     Parser Helper Functions                     */
+/*                                                                 */
+/* **************************************************************** */
+
+static int
+parse_comparison_op (s, indp)
+     const char *s;
+     int *indp;
+{
+  int i, peekc, op;
+
+  if (OPSTART (s[*indp]) == 0)
+    return -1;
+  i = *indp;
+  peekc = s[i] ? s[i+1] : 0;
+  op = -1;
+
+  if (s[i] == '=')
+    {
+      op = OP_EQ;
+      if (peekc == '=')
+        i++;
+      i++;
+    }
+  else if (s[i] == '!' && peekc == '=')
+    {
+      op = OP_NE;
+      i += 2;
+    }
+  else if (s[i] == '<' && peekc == '=')
+    {
+      op = OP_LE;
+      i += 2;
+    }
+  else if (s[i] == '>' && peekc == '=')
+    {
+      op = OP_GE;
+      i += 2;
+    }
+  else if (s[i] == '<')
+    {
+      op = OP_LT;
+      i += 1;
+    }
+  else if (s[i] == '>')
+    {
+      op = OP_GT;
+      i += 1;
+    }
+
+  *indp = i;
+  return op;        
+}
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Parser Directives                           */
@@ -1055,10 +1134,11 @@ static int if_stack_size;
 /* Push _rl_parsing_conditionalized_out, and set parser state based
    on ARGS. */
 static int
-parser_if (args)
-     char *args;
+parser_if (char *args)
 {
-  register int i;
+  int i, llen, boolvar, strvar;
+
+  boolvar = strvar = -1;
 
   /* Push parser state. */
   if (if_stack_depth + 1 >= if_stack_size)
@@ -1075,6 +1155,8 @@ parser_if (args)
   if (_rl_parsing_conditionalized_out)
     return 0;
 
+  llen = strlen (args);
+
   /* Isolate first argument. */
   for (i = 0; args[i] && !whitespace (args[i]); i++);
 
@@ -1117,10 +1199,138 @@ parser_if (args)
       _rl_parsing_conditionalized_out = mode != rl_editing_mode;
     }
 #endif /* VI_MODE */
+  else if (_rl_strnicmp (args, "version", 7) == 0)
+    {
+      int rlversion, versionarg, op, previ, major, minor;
+
+      _rl_parsing_conditionalized_out = 1;
+      rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR;
+      /* if "version" is separated from the operator by whitespace, or the
+         operand is separated from the operator by whitespace, restore it.
+         We're more liberal with allowed whitespace for this variable. */
+      if (i > 0 && i <= llen && args[i-1] == '\0')
+        args[i-1] = ' ';
+      args[llen] = '\0';               /* just in case */
+      for (i = 7; whitespace (args[i]); i++)
+       ;
+      if (OPSTART(args[i]) == 0)
+       {
+         _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");
+         return 0;
+       }
+      previ = i;
+      op = parse_comparison_op (args, &i);
+      if (op <= 0)
+       {
+         _rl_init_file_error ("comparison operator expected, found `%s'", args+previ);
+         return 0;
+       }
+      for ( ; args[i] && whitespace (args[i]); i++)
+       ;
+      if (args[i] == 0 || _rl_digit_p (args[i]) == 0)
+       {
+         _rl_init_file_error ("numeric argument expected, found `%s'", args+i);
+         return 0;
+       }
+      major = minor = 0;
+      previ = i;
+      for ( ; args[i] && _rl_digit_p (args[i]); i++)
+       major = major*10 + _rl_digit_value (args[i]);
+      if (args[i] == '.')
+       {
+         if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0)
+           {
+             _rl_init_file_error ("numeric argument expected, found `%s'", args+previ);
+             return 0;
+           }
+         for (++i; args[i] && _rl_digit_p (args[i]); i++)
+           minor = minor*10 + _rl_digit_value (args[i]);
+       }
+      /* optional - check for trailing garbage on the line, allow whitespace
+        and a trailing comment */
+      previ = i;
+      for ( ; args[i] && whitespace (args[i]); i++)
+       ;
+      if (args[i] && args[i] != '#')
+       {
+         _rl_init_file_error ("trailing garbage on line: `%s'", args+previ);
+         return 0;
+       }
+      versionarg = major*10 + minor;
+
+      switch (op)
+       {
+       case OP_EQ:
+         _rl_parsing_conditionalized_out = rlversion == versionarg;
+         break;
+       case OP_NE:
+         _rl_parsing_conditionalized_out = rlversion != versionarg;
+         break;
+       case OP_GT:
+         _rl_parsing_conditionalized_out = rlversion > versionarg;
+         break;
+       case OP_GE:
+         _rl_parsing_conditionalized_out = rlversion >= versionarg;
+         break;
+       case OP_LT:
+         _rl_parsing_conditionalized_out = rlversion < versionarg;
+         break;
+       case OP_LE:
+         _rl_parsing_conditionalized_out = rlversion <= versionarg;
+         break;
+       }
+    }
   /* Check to see if the first word in ARGS is the same as the
      value stored in rl_readline_name. */
   else if (_rl_stricmp (args, rl_readline_name) == 0)
     _rl_parsing_conditionalized_out = 0;
+  else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0)
+    {
+      int op, previ;
+      size_t vlen;
+      const char *vname;
+      char *valuearg, *vval, prevc;
+
+      _rl_parsing_conditionalized_out = 1;
+      vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar);
+      vlen = strlen (vname);
+      if (i > 0 && i <= llen && args[i-1] == '\0')
+        args[i-1] = ' ';
+      args[llen] = '\0';               /* just in case */
+      for (i = vlen; whitespace (args[i]); i++)
+       ;
+      if (CMPSTART(args[i]) == 0)
+       {
+         _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");
+         return 0;
+       }
+      previ = i;
+      op = parse_comparison_op (args, &i);
+      if (op != OP_EQ && op != OP_NE)
+       {
+         _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ);
+         return 0;
+       }
+      for ( ; args[i] && whitespace (args[i]); i++)
+       ;
+      if (args[i] == 0)
+       {
+         _rl_init_file_error ("argument expected, found `%s'", args+i);
+         return 0;
+       }
+      previ = i;
+      valuearg = args + i;
+      for ( ; args[i] && whitespace (args[i]) == 0; i++)
+       ;
+      prevc = args[i];
+      args[i] = '\0';          /* null-terminate valuearg */
+      vval = rl_variable_value (vname);
+      if (op == OP_EQ)
+        _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0;
+      else if (op == OP_NE)
+        _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0;
+      args[i] = prevc;
+    }
   else
     _rl_parsing_conditionalized_out = 1;
   return 0;
@@ -1128,8 +1338,7 @@ parser_if (args)
 
 /* Invert the current parser state if there is anything on the stack. */
 static int
-parser_else (args)
-     char *args;
+parser_else (char *args)
 {
   register int i;
 
@@ -1159,8 +1368,7 @@ parser_else (args)
 /* Terminate a conditional, popping the value of
    _rl_parsing_conditionalized_out from the stack. */
 static int
-parser_endif (args)
-     char *args;
+parser_endif (char *args)
 {
   if (if_stack_depth)
     _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
@@ -1170,8 +1378,7 @@ parser_endif (args)
 }
 
 static int
-parser_include (args)
-     char *args;
+parser_include (char *args)
 {
   const char *old_init_file;
   char *e;
@@ -1211,8 +1418,7 @@ static const struct {
 /* Handle a parser directive.  STATEMENT is the line of the directive
    without any leading `$'. */
 static int
-handle_parser_directive (statement)
-     char *statement;
+handle_parser_directive (char *statement)
 {
   register int i;
   char *directive, *args;
@@ -1249,9 +1455,7 @@ handle_parser_directive (statement)
 /* Start at STRING[START] and look for DELIM.  Return I where STRING[I] ==
    DELIM or STRING[I] == 0.  DELIM is usually a double quote. */
 static int
-_rl_skip_to_delim (string, start, delim)
-     char *string;
-     int start, delim;
+_rl_skip_to_delim (char *string, int start, int delim)
 {
   int i, c, passc;
 
@@ -1283,8 +1487,7 @@ _rl_skip_to_delim (string, start, delim)
    a variable binding command looks like: set variable value.
    A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */
 int
-rl_parse_and_bind (string)
-     char *string;
+rl_parse_and_bind (char *string)
 {
   char *funname, *kname;
   register int c, i;
@@ -1328,6 +1531,12 @@ rl_parse_and_bind (string)
   /* Advance to the colon (:) or whitespace which separates the two objects. */
   for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ );
 
+  if (i == 0)
+    {
+      _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string);
+      return 1;
+    }
+
   equivalency = (c == ':' && string[i + 1] == '=');
 
   foundsep = c != 0;
@@ -1406,6 +1615,11 @@ remove_trailing:
       i = _rl_skip_to_delim (string, i+1, *funname);
       if (string[i])
        i++;
+      else
+       {
+         _rl_init_file_error ("`%s': missing closing quote for macro", funname);
+         return 1;
+       }
     }
 
   /* Advance to the end of the string.  */
@@ -1583,8 +1797,7 @@ static const struct {
 };
 
 static int
-find_boolean_var (name)
-     const char *name;
+find_boolean_var (const char *name)
 {
   register int i;
 
@@ -1594,12 +1807,17 @@ find_boolean_var (name)
   return -1;
 }
 
+static const char *
+boolean_varname (int i)
+{
+  return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL);
+}  
+
 /* Hooks for handling special boolean variables, where a
    function needs to be called or another variable needs
    to be changed when they're changed. */
 static void
-hack_special_boolean_var (i)
-     int i;
+hack_special_boolean_var (int i)
 {
   const char *name;
 
@@ -1668,8 +1886,7 @@ static const struct {
 };
 
 static int
-find_string_var (name)
-     const char *name;
+find_string_var (const char *name)
 {
   register int i;
 
@@ -1679,12 +1896,17 @@ find_string_var (name)
   return -1;
 }
 
+static const char *
+string_varname (int i)
+{
+  return ((i >= 0) ? string_varlist[i].name : (char *)NULL);
+}  
+
 /* A boolean value that can appear in a `set variable' command is true if
    the value is null or empty, `on' (case-insensitive), or "1".  Any other
    values result in 0 (false). */
 static int
-bool_to_int (value)
-     const char *value;
+bool_to_int (const char *value)
 {
   return (value == 0 || *value == '\0' ||
                (_rl_stricmp (value, "on") == 0) ||
@@ -1692,8 +1914,7 @@ bool_to_int (value)
 }
 
 char *
-rl_variable_value (name)
-     const char *name;
+rl_variable_value (const char *name)
 {
   register int i;
 
@@ -1711,8 +1932,7 @@ rl_variable_value (name)
 }
 
 int
-rl_variable_bind (name, value)
-     const char *name, *value;
+rl_variable_bind (const char *name, const char *value)
 {
   register int i;
   int  v;
@@ -1743,8 +1963,7 @@ rl_variable_bind (name, value)
 }
 
 static int
-sv_editmode (value)
-     const char *value;
+sv_editmode (const char *value)
 {
   if (_rl_strnicmp (value, "vi", 2) == 0)
     {
@@ -1764,8 +1983,7 @@ sv_editmode (value)
 }
 
 static int
-sv_combegin (value)
-     const char *value;
+sv_combegin (const char *value)
 {
   if (value && *value)
     {
@@ -1777,8 +1995,7 @@ sv_combegin (value)
 }
 
 static int
-sv_dispprefix (value)
-     const char *value;
+sv_dispprefix (const char *value)
 {
   int nval = 0;
 
@@ -1793,8 +2010,7 @@ sv_dispprefix (value)
 }
 
 static int
-sv_compquery (value)
-     const char *value;
+sv_compquery (const char *value)
 {
   int nval = 100;
 
@@ -1809,8 +2025,7 @@ sv_compquery (value)
 }
 
 static int
-sv_compwidth (value)
-     const char *value;
+sv_compwidth (const char *value)
 {
   int nval = -1;
 
@@ -1822,8 +2037,7 @@ sv_compwidth (value)
 }
 
 static int
-sv_histsize (value)
-     const char *value;
+sv_histsize (const char *value)
 {
   int nval;
 
@@ -1842,8 +2056,7 @@ sv_histsize (value)
 }
 
 static int
-sv_keymap (value)
-     const char *value;
+sv_keymap (const char *value)
 {
   Keymap kmap;
 
@@ -1857,8 +2070,7 @@ sv_keymap (value)
 }
 
 static int
-sv_seqtimeout (value)
-     const char *value;
+sv_seqtimeout (const char *value)
 {
   int nval;
 
@@ -1874,8 +2086,7 @@ sv_seqtimeout (value)
 }
 
 static int
-sv_bell_style (value)
-     const char *value;
+sv_bell_style (const char *value)
 {
   if (value == 0 || *value == '\0')
     _rl_bell_preference = AUDIBLE_BELL;
@@ -1891,8 +2102,7 @@ sv_bell_style (value)
 }
 
 static int
-sv_isrchterm (value)
-     const char *value;
+sv_isrchterm (const char *value)
 {
   int beg, end, delim;
   char *v;
@@ -1929,8 +2139,7 @@ sv_isrchterm (value)
 extern char *_rl_emacs_mode_str;
 
 static int
-sv_emacs_modestr (value)
-     const char *value;
+sv_emacs_modestr (const char *value)
 {
   if (value && *value)
     {
@@ -1958,8 +2167,7 @@ sv_emacs_modestr (value)
 }
 
 static int
-sv_viins_modestr (value)
-     const char *value;
+sv_viins_modestr (const char *value)
 {
   if (value && *value)
     {
@@ -1987,8 +2195,7 @@ sv_viins_modestr (value)
 }
 
 static int
-sv_vicmd_modestr (value)
-     const char *value;
+sv_vicmd_modestr (const char *value)
 {
   if (value && *value)
     {
@@ -2039,8 +2246,7 @@ static const assoc_list name_key_alist[] = {
 };
 
 static int
-glean_key_from_name (name)
-     char *name;
+glean_key_from_name (char *name)
 {
   register int i;
 
@@ -2052,10 +2258,12 @@ glean_key_from_name (name)
 }
 
 /* Auxiliary functions to manage keymaps. */
-static const struct {
-  const char * const name;
+struct name_and_keymap {
+  char *name;
   Keymap map;
-} keymap_names[] = {
+};
+
+static struct name_and_keymap builtin_keymap_names[] = {
   { "emacs", emacs_standard_keymap },
   { "emacs-standard", emacs_standard_keymap },
   { "emacs-meta", emacs_meta_keymap },
@@ -2069,45 +2277,116 @@ static const struct {
   { (char *)0x0, (Keymap)0x0 }
 };
 
-Keymap
-rl_get_keymap_by_name (name)
-     const char *name;
+/* -1 for NULL entry */
+#define NUM_BUILTIN_KEYMAPS (sizeof (builtin_keymap_names) / sizeof (builtin_keymap_names[0]) - 1)
+
+static struct name_and_keymap *keymap_names = builtin_keymap_names;
+
+static int
+_rl_get_keymap_by_name (const char *name)
 {
   register int i;
 
   for (i = 0; keymap_names[i].name; i++)
     if (_rl_stricmp (name, keymap_names[i].name) == 0)
-      return (keymap_names[i].map);
-  return ((Keymap) NULL);
+      return (i);
+  return -1;
 }
 
-char *
-rl_get_keymap_name (map)
-     Keymap map;
+Keymap
+rl_get_keymap_by_name (const char *name)
+{
+  int i;
+
+  i = _rl_get_keymap_by_name (name);
+  return ((i >= 0) ? keymap_names[i].map : (Keymap) NULL);
+}
+
+static int
+_rl_get_keymap_by_map (Keymap map)
 {
   register int i;
+
   for (i = 0; keymap_names[i].name; i++)
     if (map == keymap_names[i].map)
-      return ((char *)keymap_names[i].name);
-  return ((char *)NULL);
+      return (i);
+  return -1;
 }
-  
+
+char *
+rl_get_keymap_name (Keymap map)
+{
+  int i;
+
+  i = _rl_get_keymap_by_map (map);
+  return ((i >= 0) ? keymap_names[i].name : (char *)NULL);
+}
+
+int
+rl_set_keymap_name (const char *name, Keymap map)
+{
+  int i, ni, mi;
+
+  /* First check whether or not we're trying to rename a builtin keymap */
+  mi = _rl_get_keymap_by_map (map);
+  if (mi >= 0 && mi < NUM_BUILTIN_KEYMAPS)
+    return -1;
+
+  /* Then reject attempts to set one of the builtin names to a new map */
+  ni = _rl_get_keymap_by_name (name);
+  if (ni >= 0 && ni < NUM_BUILTIN_KEYMAPS)
+    return -1;
+
+  /* Renaming a keymap we already added */
+  if (mi >= 0) /* XXX - could be >= NUM_BUILTIN_KEYMAPS */
+    {
+      xfree (keymap_names[mi].name);
+      keymap_names[mi].name = savestring (name);
+      return mi;
+    }
+
+  /* Associating new keymap with existing name */
+  if (ni >= 0)
+    {
+      keymap_names[ni].map = map;
+      return ni;
+    }
+
+  for (i = 0; keymap_names[i].name; i++)
+    ;
+
+  if (keymap_names == builtin_keymap_names)
+    {
+      keymap_names = xmalloc ((i + 2) * sizeof (struct name_and_keymap));
+      memcpy (keymap_names, builtin_keymap_names, i * sizeof (struct name_and_keymap));
+    }
+  else
+    keymap_names = xrealloc (keymap_names, (i + 2) * sizeof (struct name_and_keymap));
+
+  keymap_names[i].name = savestring (name);
+  keymap_names[i].map = map;
+
+  keymap_names[i+1].name = NULL;
+  keymap_names[i+1].map = NULL;
+
+  return i;
+}
+
 void
-rl_set_keymap (map)
-     Keymap map;
+rl_set_keymap (Keymap map)
 {
   if (map)
     _rl_keymap = map;
 }
 
 Keymap
-rl_get_keymap ()
+rl_get_keymap (void)
 {
   return (_rl_keymap);
 }
 
 void
-rl_set_keymap_from_edit_mode ()
+rl_set_keymap_from_edit_mode (void)
 {
   if (rl_editing_mode == emacs_mode)
     _rl_keymap = emacs_standard_keymap;
@@ -2118,7 +2397,7 @@ rl_set_keymap_from_edit_mode ()
 }
 
 char *
-rl_get_keymap_name_from_edit_mode ()
+rl_get_keymap_name_from_edit_mode (void)
 {
   if (rl_editing_mode == emacs_mode)
     return "emacs";
@@ -2143,7 +2422,7 @@ rl_get_keymap_name_from_edit_mode ()
 
 /* Print the names of functions known to Readline. */
 void
-rl_list_funmap_names ()
+rl_list_funmap_names (void)
 {
   register int i;
   const char **funmap_names;
@@ -2160,8 +2439,7 @@ rl_list_funmap_names ()
 }
 
 static char *
-_rl_get_keyname (key)
-     int key;
+_rl_get_keyname (int key)
 {
   char *keyname;
   int i, c;
@@ -2236,9 +2514,7 @@ _rl_get_keyname (key)
 /* Return a NULL terminated array of strings which represent the key
    sequences that are used to invoke FUNCTION in MAP. */
 char **
-rl_invoking_keyseqs_in_map (function, map)
-     rl_command_func_t *function;
-     Keymap map;
+rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
 {
   register int key;
   char **result;
@@ -2345,8 +2621,7 @@ rl_invoking_keyseqs_in_map (function, map)
 /* Return a NULL terminated array of strings which represent the key
    sequences that can be used to invoke FUNCTION using the current keymap. */
 char **
-rl_invoking_keyseqs (function)
-     rl_command_func_t *function;
+rl_invoking_keyseqs (rl_command_func_t *function)
 {
   return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
 }
@@ -2355,8 +2630,7 @@ rl_invoking_keyseqs (function)
    PRINT_READABLY is non-zero, then print the output in such a way
    that it can be read back in. */
 void
-rl_function_dumper (print_readably)
-     int print_readably;
+rl_function_dumper (int print_readably)
 {
   register int i;
   const char **names;
@@ -2427,8 +2701,7 @@ rl_function_dumper (print_readably)
    rl_outstream.  If an explicit argument is given, then print
    the output in such a way that it can be read back in. */
 int
-rl_dump_functions (count, key)
-     int count, key;
+rl_dump_functions (int count, int key)
 {
   if (rl_dispatching)
     fprintf (rl_outstream, "\r\n");
@@ -2438,10 +2711,7 @@ rl_dump_functions (count, key)
 }
 
 static void
-_rl_macro_dumper_internal (print_readably, map, prefix)
-     int print_readably;
-     Keymap map;
-     char *prefix;
+_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)
 {
   register int key;
   char *keyname, *out;
@@ -2500,15 +2770,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
 }
 
 void
-rl_macro_dumper (print_readably)
-     int print_readably;
+rl_macro_dumper (int print_readably)
 {
   _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL);
 }
 
 int
-rl_dump_macros (count, key)
-     int count, key;
+rl_dump_macros (int count, int key)
 {
   if (rl_dispatching)
     fprintf (rl_outstream, "\r\n");
@@ -2518,8 +2786,7 @@ rl_dump_macros (count, key)
 }
 
 static char *
-_rl_get_string_variable_value (name)
-     const char *name;
+_rl_get_string_variable_value (const char *name)
 {
   static char numbuf[32];
   char *ret;
@@ -2599,8 +2866,7 @@ _rl_get_string_variable_value (name)
 }
 
 void
-rl_variable_dumper (print_readably)
-     int print_readably;
+rl_variable_dumper (int print_readably)
 {
   int i;
   char *v;
@@ -2631,8 +2897,7 @@ rl_variable_dumper (print_readably)
    rl_outstream.  If an explicit argument is given, then print
    the output in such a way that it can be read back in. */
 int
-rl_dump_variables (count, key)
-     int count, key;
+rl_dump_variables (int count, int key)
 {
   if (rl_dispatching)
     fprintf (rl_outstream, "\r\n");
@@ -2643,9 +2908,7 @@ rl_dump_variables (count, key)
 
 /* Return non-zero if any members of ARRAY are a substring in STRING. */
 static int
-substring_member_of_array (string, array)
-     const char *string;
-     const char * const *array;
+substring_member_of_array (const char *string, const char * const *array)
 {
   while (*array)
     {
index cc3ce11f19174dd79ea6dc1ad864fdd168665f49..a466cf9b6ef1a5712a00f8837e86c23c55165e34 100644 (file)
@@ -1,6 +1,6 @@
 /* callback.c -- functions to use readline as an X `callback' mechanism. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -60,7 +60,7 @@ int rl_persistent_signal_handlers = 0;
 
 /* **************************************************************** */
 /*                                                                 */
-/*                     Callback Readline Functions              */
+/*                     Callback Readline Functions                 */
 /*                                                                 */
 /* **************************************************************** */
 
@@ -80,7 +80,7 @@ static int in_handler;                /* terminal_prepped and signals set? */
 
 /* Make sure the terminal is set up, initialize readline, and prompt. */
 static void
-_rl_callback_newline ()
+_rl_callback_newline (void)
 {
   rl_initialize ();
 
@@ -103,9 +103,7 @@ _rl_callback_newline ()
 
 /* Install a readline handler, set up the terminal, and issue the prompt. */
 void
-rl_callback_handler_install (prompt, linefunc)
-     const char *prompt;
-     rl_vcpfunc_t *linefunc;
+rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc)
 {
   rl_set_prompt (prompt);
   RL_SETSTATE (RL_STATE_CALLBACK);
@@ -126,7 +124,7 @@ rl_callback_handler_install (prompt, linefunc)
 
 /* Read one character, and dispatch to the handler if it ends the line. */
 void
-rl_callback_read_char ()
+rl_callback_read_char (void)
 {
   char *line;
   int eof, jcode;
@@ -299,7 +297,7 @@ rl_callback_read_char ()
 
 /* Remove the handler, and make sure the terminal is in its normal state. */
 void
-rl_callback_handler_remove ()
+rl_callback_handler_remove (void)
 {
   rl_linefunc = NULL;
   RL_UNSETSTATE (RL_STATE_CALLBACK);
@@ -316,8 +314,7 @@ rl_callback_handler_remove ()
 }
 
 _rl_callback_generic_arg *
-_rl_callback_data_alloc (count)
-     int count;
+_rl_callback_data_alloc (int count)
 {
   _rl_callback_generic_arg *arg;
 
@@ -330,15 +327,14 @@ _rl_callback_data_alloc (count)
 }
 
 void
-_rl_callback_data_dispose (arg)
-     _rl_callback_generic_arg *arg;
+_rl_callback_data_dispose (_rl_callback_generic_arg *arg)
 {
   xfree (arg);
 }
 
 /* Make sure that this agrees with cases in rl_callback_read_char */
 void
-rl_callback_sigcleanup ()
+rl_callback_sigcleanup (void)
 {
   if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
     return;
index 7859f5d2bc7f4b21c62596d355e8d6692ab7ea6f..53758e0e7741401b3810d869af97e34b392be165 100644 (file)
@@ -2,7 +2,7 @@
 
    Modified by Chet Ramey for Readline.
 
-   Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015
+   Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017
    Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
 #include "posixstat.h" // stat related macros (S_ISREG, ...)
 #include <fcntl.h> // S_ISUID
 
+#ifndef S_ISDIR
+#  define      S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)
+#endif
+
 // strlen()
 #if defined (HAVE_STRING_H)
 #  include <string.h>
@@ -66,7 +70,8 @@ COLOR_EXT_TYPE *_rl_color_ext_list = 0;
 
 /* Output a color indicator (which may contain nulls).  */
 void
-_rl_put_indicator (const struct bin_str *ind) {
+_rl_put_indicator (const struct bin_str *ind)
+{
   fwrite (ind->string, ind->len, 1, rl_outstream);
 }
 
@@ -183,11 +188,17 @@ _rl_print_color_indicator (const char *f)
         {
           colored_filetype = C_FILE;
 
+#if defined (S_ISUID)
           if ((mode & S_ISUID) != 0 && is_colored (C_SETUID))
             colored_filetype = C_SETUID;
-          else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
+          else
+#endif
+#if defined (S_ISGID)
+          if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
             colored_filetype = C_SETGID;
-          else if (is_colored (C_CAP) && 0) //f->has_capability)
+          else
+#endif
+          if (is_colored (C_CAP) && 0) //f->has_capability)
             colored_filetype = C_CAP;
           else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC))
             colored_filetype = C_EXEC;
@@ -211,12 +222,16 @@ _rl_print_color_indicator (const char *f)
             colored_filetype = C_STICKY;
 #endif
         }
+#if defined (S_ISLNK)
       else if (S_ISLNK (mode))
         colored_filetype = C_LINK;
+#endif
       else if (S_ISFIFO (mode))
         colored_filetype = C_FIFO;
+#if defined (S_ISSOCK)
       else if (S_ISSOCK (mode))
         colored_filetype = C_SOCK;
+#endif
       else if (S_ISBLK (mode))
         colored_filetype = C_BLK;
       else if (S_ISCHR (mode))
index 2af51207a39327925335f9b5998475d3fd7272ba..3ade3629aef440a4d8bec22cc1419e49704c4eef 100644 (file)
@@ -1,6 +1,6 @@
 /* compat.c -- backwards compatibility functions. */
 
-/* Copyright (C) 2000-2009 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -46,68 +46,61 @@ extern char *rl_filename_completion_function PARAMS((const char *, int));
 /* Provide backwards-compatible entry points for old function names. */
 
 void
-free_undo_list ()
+free_undo_list (void)
 {
   rl_free_undo_list ();
 }
 
 int
-maybe_replace_line ()
+maybe_replace_line (void)
 {
   return rl_maybe_replace_line ();
 }
 
 int
-maybe_save_line ()
+maybe_save_line (void)
 {
   return rl_maybe_save_line ();
 }
 
 int
-maybe_unsave_line ()
+maybe_unsave_line (void)
 {
   return rl_maybe_unsave_line ();
 }
 
 int
-ding ()
+ding (void)
 {
   return rl_ding ();
 }
 
 int
-crlf ()
+crlf (void)
 {
   return rl_crlf ();
 }
 
 int
-alphabetic (c)
-     int c;
+alphabetic (int c)
 {
   return rl_alphabetic (c);
 }
 
 char **
-completion_matches (s, f)
-     const char *s;
-     rl_compentry_func_t *f;
+completion_matches (const char *s, rl_compentry_func_t *f)
 {
   return rl_completion_matches (s, f);
 }
 
 char *
-username_completion_function (s, i)
-     const char *s;
-     int i;
+username_completion_function (const char *s, int i)
 {
   return rl_username_completion_function (s, i);
 }
 
 char *
-filename_completion_function (s, i)
-     const char *s;
-     int i;
+filename_completion_function (const char *s, int i)
 {
   return rl_filename_completion_function (s, i);
 }
index 0a81129b877eabe68836dd4104c05d3826a3ca2a..adce0d69ac1d9bbf57a335c1fb0c6df36d9320c2 100644 (file)
@@ -1,6 +1,6 @@
 /* complete.c -- filename completion for readline. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -198,15 +198,6 @@ int _rl_completion_prefix_display_length = 0;
    matches.  If < 0 or > _rl_screenwidth, it is ignored. */
 int _rl_completion_columns = -1;
 
-/* Global variables available to applications using readline. */
-
-#if defined (VISIBLE_STATS)
-/* Non-zero means add an additional character to each filename displayed
-   during listing completion iff rl_filename_completion_desired which helps
-   to indicate the type of file being listed. */
-int rl_visible_stats = 0;
-#endif /* VISIBLE_STATS */
-
 #if defined (COLOR_SUPPORT)
 /* Non-zero means to use colors to indicate file type when listing possible
    completions.  The colors used are taken from $LS_COLORS, if set. */
@@ -227,6 +218,15 @@ int _rl_skip_completed_text = 0;
    cycle of possible completions instead of the last. */
 int _rl_menu_complete_prefix_first = 0;
 
+/* Global variables available to applications using readline. */
+
+#if defined (VISIBLE_STATS)
+/* Non-zero means add an additional character to each filename displayed
+   during listing completion iff rl_filename_completion_desired which helps
+   to indicate the type of file being listed. */
+int rl_visible_stats = 0;
+#endif /* VISIBLE_STATS */
+
 /* If non-zero, then this is the address of a function to call when
    completing on a directory name.  The function is called with
    the address of a string (the current directory name) as an arg. */
@@ -422,8 +422,7 @@ static int _rl_complete_display_matches_interrupt = 0;
    that does the initial simple matching selection algorithm (see
    rl_completion_matches ()).  The default is to do filename completion. */
 int
-rl_complete (ignore, invoking_key)
-     int ignore, invoking_key;
+rl_complete (int ignore, int invoking_key)
 {
   rl_completion_invoking_key = invoking_key;
 
@@ -441,16 +440,14 @@ rl_complete (ignore, invoking_key)
 
 /* List the possible completions.  See description of rl_complete (). */
 int
-rl_possible_completions (ignore, invoking_key)
-     int ignore, invoking_key;
+rl_possible_completions (int ignore, int invoking_key)
 {
   rl_completion_invoking_key = invoking_key;
   return (rl_complete_internal ('?'));
 }
 
 int
-rl_insert_completions (ignore, invoking_key)
-     int ignore, invoking_key;
+rl_insert_completions (int ignore, int invoking_key)
 {
   rl_completion_invoking_key = invoking_key;
   return (rl_complete_internal ('*'));
@@ -462,8 +459,7 @@ rl_insert_completions (ignore, invoking_key)
    an application-specific completion function to honor the
    show-all-if-ambiguous readline variable. */
 int
-rl_completion_mode (cfunc)
-     rl_command_func_t *cfunc;
+rl_completion_mode (rl_command_func_t *cfunc)
 {
   if (rl_last_func == cfunc && !completion_changed_buffer)
     return '?';
@@ -483,16 +479,14 @@ rl_completion_mode (cfunc)
 
 /* Reset readline state on a signal or other event. */
 void
-_rl_reset_completion_state ()
+_rl_reset_completion_state (void)
 {
   rl_completion_found_quote = 0;
   rl_completion_quote_character = 0;
 }
 
 static void
-_rl_complete_sigcleanup (sig, ptr)
-     int sig;
-     void *ptr;
+_rl_complete_sigcleanup (int sig, void *ptr)
 {
   if (sig == SIGINT)   /* XXX - for now */
     {
@@ -504,8 +498,7 @@ _rl_complete_sigcleanup (sig, ptr)
 /* Set default values for readline word completion.  These are the variables
    that application completion functions can change or inspect. */
 static void
-set_completion_defaults (what_to_do)
-     int what_to_do;
+set_completion_defaults (int what_to_do)
 {
   /* Only the completion entry function can change these. */
   rl_filename_completion_desired = 0;
@@ -523,8 +516,7 @@ set_completion_defaults (what_to_do)
 
 /* The user must press "y" or "n". Non-zero return means "y" pressed. */
 static int
-get_y_or_n (for_pager)
-     int for_pager;
+get_y_or_n (int for_pager)
 {
   int c;
 
@@ -557,8 +549,7 @@ get_y_or_n (for_pager)
 }
 
 static int
-_rl_internal_pager (lines)
-     int lines;
+_rl_internal_pager (int lines)
 {
   int i;
 
@@ -575,8 +566,7 @@ _rl_internal_pager (lines)
 }
 
 static int
-path_isdir (filename)
-     const char *filename;
+path_isdir (const char *filename)
 {
   struct stat finfo;
 
@@ -593,8 +583,7 @@ path_isdir (filename)
      `%' for character special devices
      `#' for block special devices */
 static int
-stat_char (filename)
-     char *filename;
+stat_char (char *filename)
 {
   struct stat finfo;
   int character, r;
@@ -625,7 +614,10 @@ stat_char (filename)
 #endif
 
   if (r == -1)
-    return (0);
+    {
+      xfree (f);
+      return (0);
+    }
 
   character = 0;
   if (S_ISDIR (finfo.st_mode))
@@ -675,29 +667,28 @@ stat_char (filename)
 
 #if defined (COLOR_SUPPORT)
 static int
-colored_stat_start (filename)
-     const char *filename;
+colored_stat_start (const char *filename)
 {
   _rl_set_normal_color ();
   return (_rl_print_color_indicator (filename));
 }
 
 static void
-colored_stat_end ()
+colored_stat_end (void)
 {
   _rl_prep_non_filename_text ();
   _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]);
 }
 
 static int
-colored_prefix_start ()
+colored_prefix_start (void)
 {
   _rl_set_normal_color ();
   return (_rl_print_prefix_color ());
 }
 
 static void
-colored_prefix_end ()
+colored_prefix_end (void)
 {
   colored_stat_end ();         /* for now */
 }
@@ -712,8 +703,7 @@ colored_prefix_end ()
    for the previous slash and return the portion following that.  If
    there's no previous slash, we just return what we were passed. */
 static char *
-printable_part (pathname)
-      char *pathname;
+printable_part (char *pathname)
 {
   char *temp, *x;
 
@@ -747,8 +737,7 @@ printable_part (pathname)
 
 /* Compute width of STRING when displayed on screen by print_filename */
 static int
-fnwidth (string)
-     const char *string;
+fnwidth (const char *string)
 {
   int width, pos;
 #if defined (HANDLE_MULTIBYTE)
@@ -800,10 +789,7 @@ fnwidth (string)
 #define ELLIPSIS_LEN   3
 
 static int
-fnprint (to_print, prefix_bytes, real_pathname)
-     const char *to_print;
-     int prefix_bytes;
-     const char *real_pathname;
+fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
 {
   int printed_len, w;
   const char *s;
@@ -818,6 +804,8 @@ fnprint (to_print, prefix_bytes, real_pathname)
   print_len = strlen (to_print);
   end = to_print + print_len + 1;
   memset (&ps, 0, sizeof (mbstate_t));
+#else
+  print_len = strlen (to_print);
 #endif
 
   printed_len = common_prefix_len = 0;
@@ -929,9 +917,7 @@ fnprint (to_print, prefix_bytes, real_pathname)
    filenames.  Return the number of characters we output. */
 
 static int
-print_filename (to_print, full_pathname, prefix_bytes)
-     char *to_print, *full_pathname;
-     int prefix_bytes;
+print_filename (char *to_print, char *full_pathname, int prefix_bytes)
 {
   int printed_len, extension_char, slen, tlen;
   char *s, c, *new_full_pathname, *dn;
@@ -988,7 +974,6 @@ print_filename (to_print, full_pathname, prefix_bytes)
            slen--;
          else
            new_full_pathname[slen] = '/';
-         new_full_pathname[slen] = '/';
          strcpy (new_full_pathname + slen + 1, to_print);
 
 #if defined (VISIBLE_STATS)
@@ -1049,10 +1034,7 @@ print_filename (to_print, full_pathname, prefix_bytes)
 }
 
 static char *
-rl_quote_filename (s, rtype, qcp)
-     char *s;
-     int rtype;
-     char *qcp;
+rl_quote_filename (char *s, int rtype, char *qcp)
 {
   char *r;
 
@@ -1080,8 +1062,7 @@ rl_quote_filename (s, rtype, qcp)
    the value of the delimiter character that caused a word break. */
 
 char
-_rl_find_completion_word (fp, dp)
-     int *fp, *dp;
+_rl_find_completion_word (int *fp, int *dp)
 {
   int scan, end, found_quote, delimiter, pass_next, isbrk;
   char quote_char, *brkchars;
@@ -1213,11 +1194,7 @@ _rl_find_completion_word (fp, dp)
 }
 
 static char **
-gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
-     char *text;
-     int start, end;
-     rl_compentry_func_t *our_func;
-     int found_quote, quote_char;
+gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char)
 {
   char **matches;
 
@@ -1261,8 +1238,7 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
 /* Filter out duplicates in MATCHES.  This frees up the strings in
    MATCHES. */
 static char **
-remove_duplicate_matches (matches)
-     char **matches;
+remove_duplicate_matches (char **matches)
 {
   char *lowest_common;
   int i, j, newlen;
@@ -1322,10 +1298,7 @@ remove_duplicate_matches (matches)
 /* Find the common prefix of the list of matches, and put it into
    matches[0]. */
 static int
-compute_lcd_of_matches (match_list, matches, text)
-     char **match_list;
-     int matches;
-     const char *text;
+compute_lcd_of_matches (char **match_list, int matches, const char *text)
 {
   register int i, c1, c2, si;
   int low;             /* Count of max-matched characters. */
@@ -1451,7 +1424,8 @@ compute_lcd_of_matches (match_list, matches, text)
            }
 
          /* sort the list to get consistent answers. */
-         qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
+         if (rl_sort_completion_matches)
+           qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
 
          si = strlen (text);
          lx = (si <= low) ? si : low;  /* check shorter of text and matches */
@@ -1481,9 +1455,7 @@ compute_lcd_of_matches (match_list, matches, text)
 }
 
 static int
-postprocess_matches (matchesp, matching_filenames)
-     char ***matchesp;
-     int matching_filenames;
+postprocess_matches (char ***matchesp, int matching_filenames)
 {
   char *t, **matches, **temp_matches;
   int nmatch, i;
@@ -1537,7 +1509,7 @@ postprocess_matches (matchesp, matching_filenames)
 }
 
 static int
-complete_get_screenwidth ()
+complete_get_screenwidth (void)
 {
   int cols;
   char *envcols;
@@ -1558,9 +1530,7 @@ complete_get_screenwidth ()
    of strings, in argv format, LEN is the number of strings in MATCHES,
    and MAX is the length of the longest string in MATCHES. */
 void
-rl_display_match_list (matches, len, max)
-     char **matches;
-     int len, max;
+rl_display_match_list (char **matches, int len, int max)
 {
   int count, limit, printed_len, lines, cols;
   int i, j, k, l, common_length, sind;
@@ -1717,8 +1687,7 @@ rl_display_match_list (matches, len, max)
    and ask the user if he wants to see the list if there are more matches
    than RL_COMPLETION_QUERY_ITEMS. */
 static void
-display_matches (matches)
-     char **matches;
+display_matches (char **matches)
 {
   int len, max, i;
   char *temp;
@@ -1784,11 +1753,9 @@ display_matches (matches)
   rl_display_fixed = 1;
 }
 
+/* qc == pointer to quoting character, if any */
 static char *
-make_quoted_replacement (match, mtype, qc)
-     char *match;
-     int mtype;
-     char *qc; /* Pointer to quoting character, if any */
+make_quoted_replacement (char *match, int mtype, char *qc)
 {
   int should_quote, do_replace;
   char *replacement;
@@ -1830,10 +1797,7 @@ make_quoted_replacement (match, mtype, qc)
 }
 
 static void
-insert_match (match, start, mtype, qc)
-     char *match;
-     int start, mtype;
-     char *qc;
+insert_match (char *match, int start, int mtype, char *qc)
 {
   char *replacement, *r;
   char oqc;
@@ -1890,9 +1854,7 @@ insert_match (match, start, mtype, qc)
    value of _rl_complete_mark_symlink_dirs, but may be modified by an
    application's completion function). */
 static int
-append_to_match (text, delimiter, quote_char, nontrivial_match)
-     char *text;
-     int delimiter, quote_char, nontrivial_match;
+append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match)
 {
   char temp_string[4], *filename, *fn;
   int temp_string_index, s;
@@ -1959,10 +1921,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match)
 }
 
 static void
-insert_all_matches (matches, point, qc)
-     char **matches;
-     int point;
-     char *qc;
+insert_all_matches (char **matches, int point, char *qc)
 {
   int i;
   char *rp;
@@ -1998,8 +1957,7 @@ insert_all_matches (matches, point, qc)
 }
 
 void
-_rl_free_match_list (matches)
-     char **matches;
+_rl_free_match_list (char **matches)
 {
   register int i;
 
@@ -2021,17 +1979,14 @@ _rl_free_match_list (matches)
    `@' means to do standard completion, and list all possible completions if
    there is more than one and partial completion is not possible. */
 int
-rl_complete_internal (what_to_do)
-     int what_to_do;
+rl_complete_internal (int what_to_do)
 {
   char **matches;
   rl_compentry_func_t *our_func;
   int start, end, delimiter, found_quote, i, nontrivial_lcd;
   char *text, *saved_line_buffer;
   char quote_char;
-#if 1
   int tlen, mlen;
-#endif
 
   RL_SETSTATE(RL_STATE_COMPLETING);
 
@@ -2206,9 +2161,7 @@ rl_complete_internal (what_to_do)
      when there are no more matches.
  */
 char **
-rl_completion_matches (text, entry_function)
-     const char *text;
-     rl_compentry_func_t *entry_function;
+rl_completion_matches (const char *text, rl_compentry_func_t *entry_function)
 {
   register int i;
 
@@ -2276,9 +2229,7 @@ rl_completion_matches (text, entry_function)
    TEXT contains a partial username preceded by a random
    character (usually `~').  */
 char *
-rl_username_completion_function (text, state)
-     const char *text;
-     int state;
+rl_username_completion_function (const char *text, int state)
 {
 #if defined (__WIN32__) || defined (__OPENNT)
   return (char *)NULL;
@@ -2340,11 +2291,7 @@ rl_username_completion_function (text, state)
    _rl_completion_case_map is set, make `-' and `_' equivalent.  CONVFN is
    the possibly-converted directory entry; FILENAME is what the user typed. */
 static int
-complete_fncmp (convfn, convlen, filename, filename_len)
-     const char *convfn;
-     int convlen;
-     const char *filename;
-     int filename_len;
+complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len)
 {
   register char *s1, *s2;
   int d, len;
@@ -2472,9 +2419,7 @@ complete_fncmp (convfn, convlen, filename, filename_len)
    because of all the pathnames that must be followed when looking up the
    completion for a command. */
 char *
-rl_filename_completion_function (text, state)
-     const char *text;
-     int state;
+rl_filename_completion_function (const char *text, int state)
 {
   static DIR *directory = (DIR *)NULL;
   static char *filename = (char *)NULL;
@@ -2702,8 +2647,7 @@ rl_filename_completion_function (text, state)
    hit the end of the match list, we restore the original unmatched text,
    ring the bell, and reset the counter to zero. */
 int
-rl_old_menu_complete (count, invoking_key)
-     int count, invoking_key;
+rl_old_menu_complete (int count, int invoking_key)
 {
   rl_compentry_func_t *our_func;
   int matching_filenames, found_quote;
@@ -2824,9 +2768,17 @@ rl_old_menu_complete (count, invoking_key)
   return (0);
 }
 
+/* The current version of menu completion.
+   The differences between this function and the original are:
+
+1. It honors the maximum number of completions variable (completion-query-items)
+2. It appends to the word as usual if there is only one match
+3. It displays the common prefix if there is one, and makes it the first menu
+   choice if the menu-complete-display-prefix option is enabled
+*/
 int
-rl_menu_complete (count, ignore)
-     int count, ignore;
+rl_menu_complete (int count, int ignore)
 {
   rl_compentry_func_t *our_func;
   int matching_filenames, found_quote;
@@ -2998,8 +2950,7 @@ rl_menu_complete (count, ignore)
 }
 
 int
-rl_backward_menu_complete (count, key)
-     int count, key;
+rl_backward_menu_complete (int count, int key)
 {
   /* Positive arguments to backward-menu-complete translate into negative
      arguments for menu-complete, and vice versa. */
index 2d2e768a93c30618f130fe091b54d12723369b52..4c6cc00ea4929ff5f799af2171418c67fe5a2a19 100644 (file)
@@ -1,6 +1,6 @@
 /* display.c -- readline redisplay facility. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library    
    for reading lines of text with interactive input and history editing.
@@ -124,7 +124,6 @@ static int _rl_col_width PARAMS((const char *, int, int, int));
 #define PROMPT_ENDING_INDEX \
   ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1)
   
-
 /* **************************************************************** */
 /*                                                                 */
 /*                     Display stuff                               */
@@ -159,9 +158,6 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
 /* What YOU turn on when you have handled all redisplay yourself. */
 int rl_display_fixed = 0;
 
-int _rl_suppress_redisplay = 0;
-int _rl_want_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;
@@ -178,6 +174,10 @@ int _rl_vi_cmd_modestr_len;
 
 /* Pseudo-global variables declared here. */
 
+/* Hints for other parts of readline to give to the display engine. */
+int _rl_suppress_redisplay = 0;
+int _rl_want_redisplay = 0;
+
 /* The visible cursor position.  If you print some text, adjust this. */
 /* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale
    supporting multibyte characters, and an absolute cursor position when
@@ -186,14 +186,24 @@ int _rl_vi_cmd_modestr_len;
 int _rl_last_c_pos = 0;
 int _rl_last_v_pos = 0;
 
+/* Number of physical lines consumed by the current line buffer currently
+  on screen minus 1. */
+int _rl_vis_botlin = 0;
+
+/* This is a hint update_line gives to rl_redisplay that it has adjusted the
+   value of _rl_last_c_pos *and* taken the presence of any invisible chars in
+   the prompt into account.  rl_redisplay notes this and does not do the
+   adjustment itself. */
 static int cpos_adjusted;
+
+/* The index into the line buffer corresponding to the cursor position */
 static int cpos_buffer_position;
+
+/* A flag to note when we're displaying the first line of the prompt */
 static int displaying_prompt_first_line;
+/* The number of multibyte characters in the prompt, if any */
 static int prompt_multibyte_chars;
 
-/* Number of lines currently on screen minus 1. */
-int _rl_vis_botlin = 0;
-
 static int _rl_inv_botlin = 0;
 
 /* Variables used only in this file. */
@@ -216,7 +226,11 @@ static int line_size = 1024;
 
 static char *local_prompt, *local_prompt_prefix;
 static int local_prompt_len;
-static int prompt_visible_length, prompt_prefix_length;
+static int prompt_prefix_length;
+/* Number of chars in the buffer that contribute to visible chars on the screen.
+   This might be different from the number of physical chars in the presence
+   of multibyte characters */
+static int prompt_visible_length;
 
 /* The number of invisible characters in the line currently being
    displayed on the screen. */
@@ -242,16 +256,26 @@ static int prompt_last_screen_line;
 
 static int prompt_physical_chars;
 
+/* An array of indexes into the prompt string where we will break physical
+   screen lines.  It's easier to compute in expand_prompt and use later in
+   rl_redisplay instead of having rl_redisplay try to guess about invisible
+   characters in the prompt or use heuristics about where they are. */
+static int *local_prompt_newlines;
+
 /* set to a non-zero value by rl_redisplay if we are marking modified history
    lines and the current line is so marked. */
 static int modmark;
 
+static int line_totbytes;
+
 /* Variables to save and restore prompt and display information. */
 
 /* 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_local_prompt_newlines;
+
 static int saved_last_invisible;
 static int saved_visible_length;
 static int saved_prefix_length;
@@ -262,8 +286,7 @@ static int saved_physical_chars;
 /* Return a string indicating the editing mode, for use in the prompt. */
 
 static char *
-prompt_modestr (lenp)
-     int *lenp;
+prompt_modestr (int *lenp)
 {
   if (rl_editing_mode == emacs_mode)
     {
@@ -291,7 +314,8 @@ prompt_modestr (lenp)
    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. */
+   into a character buffer.  *VLP gets the number of physical characters in
+   the expanded prompt (visible length) */
 
 /* Current implementation:
        \001 (^A) start non-visible characters
@@ -304,15 +328,16 @@ prompt_modestr (lenp)
        PMT_MULTILINE   caller indicates that this is part of a multiline prompt
 */
 
+/* This approximates the number of lines the prompt will take when displayed */
+#define APPROX_DIV(n, d)       (((n) < (d)) ? 1 : ((n) / (d)) + 1)
+
 static char *
-expand_prompt (pmt, flags, lp, lip, niflp, vlp)
-     char *pmt;
-     int flags;
-     int *lp, *lip, *niflp, *vlp;
+expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
 {
   char *r, *ret, *p, *igstart, *nprompt, *ms;
   int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
-  int mlen;
+  int mlen, newlines, newlines_guess, bound;
+  int mb_cur_max;
 
   /* We only expand the mode string for the last line of a multiline prompt
      (a prompt with embedded newlines). */
@@ -327,29 +352,54 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
   else
     nprompt = pmt;
 
-  /* Short-circuit if we can. */
-  if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0)
+  mb_cur_max = MB_CUR_MAX;
+
+  if (_rl_screenwidth == 0)
+    _rl_get_screen_size (0, 0);        /* avoid division by zero */
+
+  /* Short-circuit if we can.  We can do this if we are treating the prompt as
+     a sequence of bytes and there are no invisible characters in the prompt
+     to deal with. Since we populate local_prompt_newlines, we have to run
+     through the rest of the function if this prompt looks like it's going to
+     be longer than one screen line. */
+  if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0)
     {
-      r = (nprompt == pmt) ? savestring (pmt) : nprompt;
+      l = strlen (nprompt);
+      if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80))
+        {
+         r = (nprompt == pmt) ? savestring (pmt) : nprompt;
+         if (lp)
+           *lp = l;
+         if (lip)
+           *lip = 0;
+         if (niflp)
+           *niflp = 0;
+         if (vlp)
+           *vlp = l;
+
+         local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2);
+         local_prompt_newlines[0] = 0;
+         local_prompt_newlines[1] = -1;
 
-      if (lp)
-       *lp = strlen (r);
-      if (lip)
-       *lip = 0;
-      if (niflp)
-       *niflp = 0;
-      if (vlp)
-       *vlp = lp ? *lp : strlen (r);
-      return r;
+         return r;
+        }
     }
 
   l = strlen (nprompt);                        /* XXX */
   r = ret = (char *)xmalloc (l + 1);
 
+  /* Guess at how many screen lines the prompt will take to size the array that
+     keeps track of where the line wraps happen */
+  newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l,  _rl_screenwidth) : APPROX_DIV(l, 80);
+  local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1));
+  local_prompt_newlines[newlines = 0] = 0;
+  for (rl = 1; rl <= newlines_guess; rl++)
+    local_prompt_newlines[rl] = -1;
+
   rl = physchars = 0;  /* mode string now part of nprompt */
-  invfl = 0;   /* invisible chars in first line of prompt */
-  invflset = 0;        /* we only want to set invfl once */
-  igstart = 0;
+  invfl = 0;           /* invisible chars in first line of prompt */
+  invflset = 0;                /* we only want to set invfl once */
+  igstart = 0;         /* we're not ignoring any characters yet */
 
   for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++)
     {
@@ -371,7 +421,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
       else
        {
 #if defined (HANDLE_MULTIBYTE)
-         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+         if (mb_cur_max > 1 && rl_byte_oriented == 0)
            {
              pind = p - nprompt;
              ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO);
@@ -405,11 +455,29 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
                ninvis++;               /* invisible chars byte counter */
            }
 
-         if (invflset == 0 && rl >= _rl_screenwidth)
+         if (invflset == 0 && physchars >= _rl_screenwidth)
            {
              invfl = ninvis;
              invflset = 1;
            }
+
+         if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1)
+           {
+             int new;
+             if (physchars > bound)            /* should rarely happen */
+               {
+#if defined (HANDLE_MULTIBYTE)
+                 *r = '\0';    /* need null-termination for strlen */
+                 if (mb_cur_max > 1 && rl_byte_oriented == 0)
+                   new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY);
+                 else
+#endif
+                   new = r - ret - (physchars - bound);        /* XXX */
+               }
+             else
+               new = r - ret;
+             local_prompt_newlines[++newlines] = new;
+           }
        }
     }
 
@@ -435,8 +503,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
 /* 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;
+_rl_strip_prompt (char *pmt)
 {
   char *ret;
 
@@ -445,7 +512,7 @@ _rl_strip_prompt (pmt)
 }
 
 void
-_rl_reset_prompt ()
+_rl_reset_prompt (void)
 {
   rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
 }
@@ -461,15 +528,20 @@ _rl_reset_prompt ()
  * prompt_visible_length = number of visible characters in local_prompt
  * prompt_prefix_length = number of visible characters in local_prompt_prefix
  *
+ * It also tries to keep track of the number of invisible characters in the
+ * prompt string, and where they are.
+ *
  * 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.
+ * of the (possibly multi-line) prompt.  In this case, multi-line means
+ * there are embedded newlines in the prompt string itself, not that the
+ * number of physical characters exceeds the screen width and the prompt
+ * wraps.
  */
 int
-rl_expand_prompt (prompt)
-     char *prompt;
+rl_expand_prompt (char *prompt)
 {
   char *p, *t;
   int c;
@@ -527,8 +599,7 @@ rl_expand_prompt (prompt)
    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;
+init_line_structures (int minsize)
 {
   register int n;
 
@@ -575,9 +646,9 @@ init_line_structures (minsize)
   line_structures_initialized = 1;
 }
   
-/* Basic redisplay algorithm. */
+/* Basic redisplay algorithm.  See comments inline. */
 void
-rl_redisplay ()
+rl_redisplay (void)
 {
   register int in, out, c, linenum, cursor_linenum;
   register char *line;
@@ -638,6 +709,10 @@ rl_redisplay ()
      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. */
+  /* This is where we output the characters in the prompt before the last
+     newline, if any.  If there aren't any embedded newlines, we don't
+     write anything. Copy the last line of the prompt string into the line in
+     any case */
   if (rl_display_prompt == rl_prompt || local_prompt)
     {
       if (local_prompt_prefix && forced_display)
@@ -692,6 +767,7 @@ rl_redisplay ()
       wrap_offset = prompt_invis_chars_first_line = 0;
     }
 
+#if defined (HANDLE_MULTIBYTE)
 #define CHECK_INV_LBREAKS() \
       do { \
        if (newlines >= (inv_lbsize - 2)) \
@@ -699,7 +775,22 @@ rl_redisplay ()
            inv_lbsize *= 2; \
            inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
          } \
+       if (newlines >= (line_state_invisible->wbsize - 2)) \
+         { \
+           line_state_invisible->wbsize *= 2; \
+           line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
+         } \
       } while (0)
+#else
+#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)
+#endif /* !HANDLE_MULTIBYTE */
 
 #if defined (HANDLE_MULTIBYTE)   
 #define CHECK_LPOS() \
@@ -713,7 +804,7 @@ rl_redisplay ()
                inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
              } \
            inv_lbreaks[++newlines] = out; \
-           if (newlines >= (line_state_invisible->wbsize - 1)) \
+           if (newlines >= (line_state_invisible->wbsize - 2)) \
              { \
                line_state_invisible->wbsize *= 2; \
                line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
@@ -742,7 +833,10 @@ rl_redisplay ()
   /* inv_lbreaks[i] is where line i starts in the buffer. */
   inv_lbreaks[newlines = 0] = 0;
   /* lpos is a physical cursor position, so it needs to be adjusted by the
-     number of invisible characters in the prompt, per line */
+     number of invisible characters in the prompt, per line.  We compute
+     the line breaks in the prompt string in expand_prompt, taking invisible
+     characters into account, and if lpos exceeds the screen width, we copy
+     the data in the loop below. */
   lpos = prompt_physical_chars + modmark;
 
 #if defined (HANDLE_MULTIBYTE)
@@ -752,92 +846,38 @@ rl_redisplay ()
 
   /* 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 (or, more generally, last) line. */
+     wrap_offset - prompt_invis_chars_first_line is usually the number of
+     invis chars on the second (or, more generally, last) line. */
 
   /* This is zero-based, used to set the newlines */
   prompt_lines_estimate = lpos / _rl_screenwidth;
 
   /* what if lpos is already >= _rl_screenwidth before we start drawing the
      contents of the command line? */
-  while (lpos >= _rl_screenwidth)
-    {
-      int z, p;
-      int nocorrect, wadjust;
-
-      nocorrect = 0;
-      /* Adjust depending on the invisible characters in the line.  We use a
-        heuristic based on experience: invisible characters nearly always
-        appear in the first and last lines of the prompt */
-      wadjust = (newlines == 0)
-                 ? prompt_invis_chars_first_line
-                 : ((newlines == prompt_lines_estimate)
-                       ? (wrap_offset - prompt_invis_chars_first_line)
-                       : 0);
-
-      /* 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> */
-#if defined (HANDLE_MULTIBYTE)
-      if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
-       {
-         nocorrect = 1;
-         n0 = num;
-          temp = local_prompt_len;
-          while (num < temp)
-           {
-             /* This has to take invisible characters in the prompt into
-                account. */
-             z = _rl_col_width  (local_prompt, n0, num, 1) - wadjust;
-             if (z > _rl_screenwidth)
-               {
-                 num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
-                 break;
-               }
-             else if (z == _rl_screenwidth)
-               {
-                 /* If we are in the middle or at the end of a multibyte
-                    character, we want to move to the start, then find out
-                    where it ends so we know where to insert the newline.
-                    If this isn't a multibyte character, its the same as num++ */
-                 p = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
-                 num = _rl_find_next_mbchar (local_prompt, p, 1, MB_FIND_ANY);
-                 break;
-               }
-             num++;
-           }
-          temp = num;
-       }
-      else
-#endif /* !HANDLE_MULTIBYTE */
-       temp = ((newlines + 1) * _rl_screenwidth);
+  if (lpos >= _rl_screenwidth)
+    {
+      temp = 0;
 
-      /* Now account for invisible characters in the current line. */
-      /* XXX - this assumes that the invisible characters may be split, but only
-        between the first and the last lines. */
-      if (nocorrect == 0)
-       temp += wadjust;
+      /* first copy the linebreaks array we computed in expand_prompt */
+      while (local_prompt_newlines[newlines+1] != -1)
+       {
+         temp = local_prompt_newlines[newlines+1];
+         inv_lbreaks[++newlines] = temp;
+       }  
 
-      inv_lbreaks[++newlines] = temp;
-#if defined (HANDLE_MULTIBYTE)
-      /* lpos is a physical cursor position, so it needs to take the invisible
-        characters into account. */
+      /* Now set lpos from the last newline */
       if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
-       lpos -= _rl_col_width (local_prompt, n0, num, 1) - wadjust;
+        lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line);
       else
-#endif
-       lpos -= _rl_screenwidth;        /* all physical cursor positions */
+        lpos -= (_rl_screenwidth * newlines);
     }
 
   prompt_last_screen_line = newlines;
 
   /* Draw the rest of the line (after the prompt) into invisible_line, keeping
-     track of where the cursor is (cpos_buffer_position), the number of the line containing
-     the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin).
+     track of where the cursor is (cpos_buffer_position), 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;
@@ -846,8 +886,13 @@ rl_redisplay ()
   if (mb_cur_max > 1 && rl_byte_oriented == 0)
     {
       memset (&ps, 0, sizeof (mbstate_t));
-      /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */
-      wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0]))
+       {
+         wc = (wchar_t)rl_line_buffer[0];
+         wc_bytes = 1;
+       }
+      else
+       wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
     }
   else
     wc_bytes = 1;
@@ -909,6 +954,9 @@ rl_redisplay ()
                  temp = _rl_screenwidth - lpos;
                  CHECK_INV_LBREAKS ();
                  inv_lbreaks[++newlines] = out + temp;
+#if defined (HANDLE_MULTIBYTE)
+                 line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
                  lpos = 4 - temp;
                }
              else
@@ -939,6 +987,9 @@ rl_redisplay ()
              temp2 = _rl_screenwidth - lpos;
              CHECK_INV_LBREAKS ();
              inv_lbreaks[++newlines] = out + temp2;
+#if defined (HANDLE_MULTIBYTE)
+             line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
              lpos = temp - temp2;
              while (out < newout)
                line[out++] = ' ';
@@ -956,6 +1007,9 @@ rl_redisplay ()
          line[out++] = '\0';   /* XXX - sentinel */
          CHECK_INV_LBREAKS ();
          inv_lbreaks[++newlines] = out;
+#if defined (HANDLE_MULTIBYTE)
+         line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
          lpos = 0;
        }
       else if (CTRL_CHAR (c) || c == RUBOUT)
@@ -1007,15 +1061,21 @@ rl_redisplay ()
       if (mb_cur_max > 1 && rl_byte_oriented == 0)
        {
          in += wc_bytes;
-         /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */
-         wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
+         if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in]))
+           {
+             wc = (wchar_t)rl_line_buffer[in];
+             wc_bytes = 1;
+             memset (&ps, 0, sizeof (mbstate_t));      /* re-init state */
+           }
+         else
+           wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
        }
       else
         in++;
 #endif
-
     }
   line[out] = '\0';
+  line_totbytes = out;
   if (cpos_buffer_position < 0)
     {
       cpos_buffer_position = out;
@@ -1025,6 +1085,10 @@ rl_redisplay ()
   inv_botlin = lb_botlin = _rl_inv_botlin = newlines;
   CHECK_INV_LBREAKS ();
   inv_lbreaks[newlines+1] = out;
+#if defined (HANDLE_MULTIBYTE)
+  /* This should be 0 anyway */
+  line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn;
+#endif
   cursor_linenum = lb_linenum;
 
   /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed.
@@ -1092,8 +1156,8 @@ rl_redisplay ()
 
              /* update_line potentially changes _rl_last_c_pos, but doesn't
                 take invisible characters into account, since _rl_last_c_pos
-                is an absolute cursor position in a multibyte locale.  See
-                if compensating here is the right thing, or if we have to
+                is an absolute cursor position in a multibyte locale.  We
+                choose to (mostly) compensate for that here, rather than
                 change update_line itself.  There are several cases in which
                 update_line adjusts _rl_last_c_pos itself (so it can pass
                 _rl_move_cursor_relative accurate values); it communicates
@@ -1104,11 +1168,16 @@ rl_redisplay ()
                 wrap_offset. */
              if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT())
                _rl_last_c_pos -= prompt_invis_chars_first_line;        /* XXX - was wrap_offset */
-             else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
+             else if (cpos_adjusted == 0 &&
+                       linenum == prompt_last_screen_line &&
+                       prompt_physical_chars > _rl_screenwidth &&
                        (mb_cur_max > 1 && rl_byte_oriented == 0) &&
-                       cpos_adjusted == 0 &&
                        _rl_last_c_pos != o_cpos &&
-                       _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
+                       _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))     /* XXX - rethink this last one */
+               /* This assumes that all the invisible characters are split
+                  between the first and last lines of the prompt, if the 
+                  prompt consumes more than two lines. It's usually right */
+               /* XXX - not sure this is ever executed */
                _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
 
              /* If this is the line with the prompt, we might need to
@@ -1178,6 +1247,9 @@ rl_redisplay ()
                _rl_last_c_pos += wrap_offset;
            }
 
+         /* Now we move the cursor to where it needs to be.  First, make
+            sure we are on the correct line (cursor_linenum). */
+
          /* 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
@@ -1219,9 +1291,10 @@ rl_redisplay ()
             position that doesn't take invisible characters in the prompt
             into account.  We use a fudge factor to compensate. */
 
-         /* 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. */
+         /* 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
+            necessary */
          if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
            {
              /* TX == new physical cursor position in multibyte locale. */
@@ -1246,7 +1319,7 @@ rl_redisplay ()
            _rl_move_cursor_relative (nleft, &invisible_line[pos]);
        }
     }
-  else                         /* Do horizontal scrolling. */
+  else                         /* Do horizontal scrolling. Much simpler */
     {
 #define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)
       int lmargin, ndisp, nleft, phys_c_pos, t;
@@ -1306,7 +1379,7 @@ rl_redisplay ()
         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)
+      if (t > 0 && t < out)
        line[t - 1] = '>';
 
       if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin)
@@ -1384,9 +1457,7 @@ new:      eddie> Oh, my little buggy says to me, as lurgid as
 
    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;
+update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin)
 {
   register char *ofd, *ols, *oe, *nfd, *nls, *ne;
   int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
@@ -1411,52 +1482,145 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
   if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
        && _rl_last_v_pos == current_line - 1)
     {
+      /* We're going to wrap around by writing the first character of NEW to
+        the screen and dealing with changes to what's visible by modifying
+        OLD to match it.  Complicated by the presence of multi-width
+        characters at the end of the line or beginning of the new one. */
+      /* old is always somewhere in visible_line; new is always somewhere in
+         invisible_line.  These should always be null-terminated. */
 #if defined (HANDLE_MULTIBYTE)
       if (mb_cur_max > 1 && rl_byte_oriented == 0)
        {
          wchar_t wc;
          mbstate_t ps;
-         int tempwidth, bytes;
+         int oldwidth, newwidth;
+         int oldbytes, newbytes;
          size_t ret;
 
          /* This fixes only double-column characters, but if the wrapped
             character consumes more than three columns, spaces will be
             inserted in the string buffer. */
-         if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0)
-           _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]);
+         /* XXX remember that we are working on the invisible line right now;
+            we don't swap visible and invisible until just before rl_redisplay
+            returns */
+         /* This will remove the extra placeholder space we added with
+            _rl_wrapped_multicolumn */
+         if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0)
+           _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]);
+
+         /* 1. how many screen positions does first char in old consume? */
+         memset (&ps, 0, sizeof (mbstate_t));
+         ret = mbrtowc (&wc, old, mb_cur_max, &ps);
+         oldbytes = ret;
+         if (MB_INVALIDCH (ret))
+           {
+             oldwidth = 1;
+             oldbytes = 1;
+           }
+         else if (MB_NULLWCH (ret))
+           oldwidth = 0;
+         else
+           oldwidth = WCWIDTH (wc);
+         if (oldwidth < 0)
+           oldwidth = 1;
 
+         /* 2. how many screen positions does the first char in new consume? */
          memset (&ps, 0, sizeof (mbstate_t));
          ret = mbrtowc (&wc, new, mb_cur_max, &ps);
+         newbytes = ret;
          if (MB_INVALIDCH (ret))
            {
-             tempwidth = 1;
-             ret = 1;
+             newwidth = 1;
+             newbytes = 1;
            }
          else if (MB_NULLWCH (ret))
-           tempwidth = 0;
+           newwidth = 0;
          else
-           tempwidth = WCWIDTH (wc);
+           newwidth = WCWIDTH (wc);
+         if (newwidth < 0)
+           newwidth = 1;
+
+         /* 3. if the new width is less than the old width, we need to keep
+            going in new until we have consumed at least that many screen
+            positions, and figure out how many bytes that will take */
+         while (newbytes < nmax && newwidth < oldwidth)
+           {
+             int t;
 
-         if (tempwidth > 0)
+             ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps);
+             if (MB_INVALIDCH (ret))
+               {
+                 newwidth += 1;
+                 newbytes += 1;
+               }
+             else if (MB_NULLWCH (ret))
+               break;
+             else
+               {
+                 t = WCWIDTH (wc);
+                 newwidth += (t >= 0) ? t : 1;
+                 newbytes += ret;
+               }
+           }
+         /* 4. If the new width is more than the old width, keep going in old
+            until we have consumed exactly that many screen positions, and
+            figure out how many bytes that will take.  This is an optimization */
+         while (oldbytes < omax && oldwidth < newwidth)
            {
-             int count, i;
-             bytes = ret;
-             for (count = 0; count < bytes; count++)
-               putc (new[count], rl_outstream);
-             _rl_last_c_pos = tempwidth;
+             int t;
+
+             ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps);
+             if (MB_INVALIDCH (ret))
+               {
+                 oldwidth += 1;
+                 oldbytes += 1;
+               }
+             else if (MB_NULLWCH (ret))
+               break;
+             else
+               {
+                 t = WCWIDTH (wc);
+                 oldwidth += (t >= 0) ? t : 1;
+                 oldbytes += ret;
+               }
+           }
+         /* 5. write the first newbytes of new, which takes newwidth.  This is
+            where the screen wrapping takes place, and we are now writing
+            characters onto the new line. We need to fix up old so it
+            accurately reflects what is on the screen after the
+            _rl_output_some_chars below. */
+         if (newwidth > 0)
+           {
+             int count, i, j;
+             char *optr;
+
+             _rl_output_some_chars (new, newbytes);
+             _rl_last_c_pos = newwidth;
              _rl_last_v_pos++;
-             memset (&ps, 0, sizeof (mbstate_t));
-             ret = mbrtowc (&wc, old, mb_cur_max, &ps);
-             if (ret != 0 && bytes != 0)
+
+             /* 5a. If the number of screen positions doesn't match, punt
+                and do a dumb update. */
+             if (newwidth != oldwidth)
                {
-                 if (MB_INVALIDCH (ret))
-                   ret = 1;
-                 memmove (old+bytes, old+ret, strlen (old+ret));
-                 memcpy (old, new, bytes);
+                 ne = new + nmax;
+                 nd = newbytes;
+                 nfd = new + nd;
+                 goto dumb_update;
+               }
+             if (oldbytes != 0 && newbytes != 0)
+               {
+                 /* We have written as many bytes from new as we need to
+                    consume the first character of old. Fix up `old' so it
+                    reflects the new screen contents.  We use +1 in the
+                    memmove call to copy the trailing NUL. */
+                 memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1);
+                 memcpy (old, new, newbytes);
+                 j = newbytes - oldbytes;
+                     
+                 omax += j;
                  /* Fix up indices if we copy data from one line to another */
-                 omax += bytes - ret;
                  for (i = current_line+1; i <= inv_botlin+1; i++)
-                   vis_lbreaks[i] += bytes - ret;
+                   vis_lbreaks[i] += j;
                }
            }
          else
@@ -1482,7 +1646,6 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
        }
     }
 
-      
   /* Find first difference. */
 #if defined (HANDLE_MULTIBYTE)
   if (mb_cur_max > 1 && rl_byte_oriented == 0)
@@ -1501,6 +1664,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
          memset (&ps_new, 0, sizeof(mbstate_t));
          memset (&ps_old, 0, sizeof(mbstate_t));
 
+         /* Are the old and new lines the same? */
          if (omax == nmax && STREQN (new, old, omax))
            {
              old_offset = omax;
@@ -1510,6 +1674,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
            }
          else
            {
+             /* Go through the line from the beginning and find the first
+                difference. */
              new_offset = old_offset = 0;
              for (ofd = old, nfd = new;
                    (ofd - old < omax) && *ofd &&
@@ -1565,6 +1731,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
   wsatend = 1;                 /* flag for trailing whitespace */
 
 #if defined (HANDLE_MULTIBYTE)
+  /* Find the last character that is the same between the two lines.  This
+     bounds the region that needs to change. */
   if (mb_cur_max > 1 && rl_byte_oriented == 0)
     {
       ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
@@ -1724,12 +1892,29 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
          nd = lendiff;
 
          /* Do a dumb update and return */
+dumb_update:
          temp = ne - nfd;
          if (temp > 0)
            {
              _rl_output_some_chars (nfd, temp);
              if (mb_cur_max > 1 && rl_byte_oriented == 0)
-               _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1);
+               {
+                 _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1);
+                 /* Need to adjust here based on wrap_offset. Guess that if
+                    this is the line containing the last line of the prompt
+                    we need to adjust by
+                       wrap_offset-prompt_invis_chars_first_line
+                    on the assumption that this is the number of invisible
+                    characters in the last line of the prompt. */
+                 if (wrap_offset > prompt_invis_chars_first_line &&
+                     current_line == prompt_last_screen_line &&
+                     prompt_physical_chars > _rl_screenwidth &&
+                     _rl_horizontal_scroll_mode == 0)
+                   {
+                     _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line;
+                     cpos_adjusted = 1;
+                   }
+               }
              else
                _rl_last_c_pos += temp;
            }
@@ -1804,6 +1989,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
     {
       /* Non-zero if we're increasing the number of lines. */
       int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+
       /* If col_lendiff is > 0, implying that the new string takes up more
         screen real estate than the old, but lendiff is < 0, meaning that it
         takes fewer bytes, we need to just output the characters starting
@@ -1819,7 +2005,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
             cpos_adjusted to let the caller know. */
          if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
            {
-             _rl_last_c_pos -= wrap_offset;
+             _rl_last_c_pos -= wrap_offset;    /* XXX - prompt_invis_chars_first_line? */
              cpos_adjusted = 1;
            }
          return;
@@ -1872,7 +2058,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
                 and set cpos_adjusted to let the caller know. */
              if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
                {
-                 _rl_last_c_pos -= wrap_offset;
+                 _rl_last_c_pos -= wrap_offset;        /* XXX - prompt_invis_chars_first_line? */
                  cpos_adjusted = 1;
                }
              return;
@@ -1885,7 +2071,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
                 and set cpos_adjusted to let the caller know. */
              if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
                {
-                 _rl_last_c_pos -= wrap_offset;
+                 _rl_last_c_pos -= wrap_offset;        /* XXX - prompt_invis_chars_first_line? */
                  cpos_adjusted = 1;
                }
            }
@@ -1952,12 +2138,26 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
                  _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1);
                  if (current_line == 0 && wrap_offset &&
                        displaying_prompt_first_line &&
-                       _rl_last_c_pos > wrap_offset &&
+                       _rl_last_c_pos >= wrap_offset &&        /* XXX was > */
                        ((nfd - new) <= prompt_last_invisible))
                    {
-                     _rl_last_c_pos -= wrap_offset;
+                     _rl_last_c_pos -= wrap_offset;    /* XXX - prompt_invis_chars_first_line? */
                      cpos_adjusted = 1;
                    }
+
+#if 1
+#ifdef HANDLE_MULTIBYTE
+                 /* If we write a non-space into the last screen column,
+                    remove the note that we added a space to compensate for
+                    a multibyte double-width character that didn't fit, since
+                    it's only valid for what was previously there. */
+                 /* XXX - watch this */
+                 if (_rl_last_c_pos == _rl_screenwidth &&
+                       line_state_invisible->wrapped_line[current_line+1] &&
+                       nfd[bytes_to_insert-1] != ' ')
+                   line_state_invisible->wrapped_line[current_line+1] = 0;
+#endif
+#endif
                }
              else
                _rl_last_c_pos += bytes_to_insert;
@@ -1989,7 +2189,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
                        _rl_last_c_pos > wrap_offset &&
                        ((nfd - new) <= prompt_last_invisible))
                    {
-                     _rl_last_c_pos -= wrap_offset;
+                     _rl_last_c_pos -= wrap_offset;    /* XXX - prompt_invis_chars_first_line? */
                      cpos_adjusted = 1;
                    }
                }
@@ -2019,7 +2219,7 @@ clear_rest_of_line:
 
 /* Tell the update routines that we have moved onto a new (empty) line. */
 int
-rl_on_new_line ()
+rl_on_new_line (void)
 {
   if (visible_line)
     visible_line[0] = '\0';
@@ -2035,7 +2235,7 @@ rl_on_new_line ()
 /* Clear all screen lines occupied by the current readline line buffer
    (visible line) */
 int
-rl_clear_visible_line ()
+rl_clear_visible_line (void)
 {
   int curr_line;
 
@@ -2063,9 +2263,10 @@ rl_clear_visible_line ()
 /* 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. */
+   (explicitly or implicitly).  This still doesn't work exactly right; it
+   should use expand_prompt() */
 int
-rl_on_new_line_with_prompt ()
+rl_on_new_line_with_prompt (void)
 {
   int prompt_size, i, l, real_screenwidth, newlines;
   char *prompt_last_line, *lprompt;
@@ -2121,7 +2322,7 @@ rl_on_new_line_with_prompt ()
 
 /* Actually update the display, period. */
 int
-rl_forced_update_display ()
+rl_forced_update_display (void)
 {
   register char *temp;
 
@@ -2139,7 +2340,7 @@ rl_forced_update_display ()
 
 /* Redraw only the last line of a multi-line prompt. */
 void
-rl_redraw_prompt_last_line ()
+rl_redraw_prompt_last_line (void)
 {
   char *t;
 
@@ -2157,9 +2358,7 @@ rl_redraw_prompt_last_line ()
    the movement is being done.
    DATA is always the visible line or the invisible line */
 void
-_rl_move_cursor_relative (new, data)
-     int new;
-     const char *data;
+_rl_move_cursor_relative (int new, const char *data)
 {
   register int i;
   int woff;                    /* number of invisible chars on current line */
@@ -2316,8 +2515,7 @@ _rl_move_cursor_relative (new, data)
 
 /* PWP: move the cursor up or down. */
 void
-_rl_move_vert (to)
-     int to;
+_rl_move_vert (int to)
 {
   register int delta, i;
 
@@ -2357,8 +2555,7 @@ _rl_move_vert (to)
 /* 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;
+rl_show_char (int c)
 {
   int n = 1;
   if (META_CHAR (c) && (_rl_output_meta_chars == 0))
@@ -2385,8 +2582,7 @@ rl_show_char (c)
 }
 
 int
-rl_character_len (c, pos)
-     register int c, pos;
+rl_character_len (int c, int pos)
 {
   unsigned char uc;
 
@@ -2521,7 +2717,7 @@ rl_message (format, arg1, arg2)
 
 /* How to clear things from the "echo-area". */
 int
-rl_clear_message ()
+rl_clear_message (void)
 {
   rl_display_prompt = rl_prompt;
   if (msg_saved_prompt)
@@ -2534,7 +2730,7 @@ rl_clear_message ()
 }
 
 int
-rl_reset_line_state ()
+rl_reset_line_state (void)
 {
   rl_on_new_line ();
 
@@ -2543,8 +2739,12 @@ rl_reset_line_state ()
   return 0;
 }
 
+/* Save all of the variables associated with the prompt and its display. Most
+   of the complexity is dealing with the invisible characters in the prompt
+   string and where they are. There are enough of these that I should consider
+   a struct. */
 void
-rl_save_prompt ()
+rl_save_prompt (void)
 {
   saved_local_prompt = local_prompt;
   saved_local_prefix = local_prompt_prefix;
@@ -2554,22 +2754,28 @@ rl_save_prompt ()
   saved_visible_length = prompt_visible_length;
   saved_invis_chars_first_line = prompt_invis_chars_first_line;
   saved_physical_chars = prompt_physical_chars;
+  saved_local_prompt_newlines = local_prompt_newlines;
 
   local_prompt = local_prompt_prefix = (char *)0;
   local_prompt_len = 0;
+  local_prompt_newlines = (int *)0;
+
   prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0;
   prompt_invis_chars_first_line = prompt_physical_chars = 0;
 }
 
 void
-rl_restore_prompt ()
+rl_restore_prompt (void)
 {
   FREE (local_prompt);
   FREE (local_prompt_prefix);
+  FREE (local_prompt_newlines);
 
   local_prompt = saved_local_prompt;
   local_prompt_prefix = saved_local_prefix;
   local_prompt_len = saved_local_length;
+  local_prompt_newlines = saved_local_prompt_newlines;
+
   prompt_prefix_length = saved_prefix_length;
   prompt_last_invisible = saved_last_invisible;
   prompt_visible_length = saved_visible_length;
@@ -2581,11 +2787,11 @@ rl_restore_prompt ()
   saved_local_length = 0;
   saved_last_invisible = saved_visible_length = saved_prefix_length = 0;
   saved_invis_chars_first_line = saved_physical_chars = 0;
+  saved_local_prompt_newlines = 0;
 }
 
 char *
-_rl_make_prompt_for_search (pchar)
-     int pchar;
+_rl_make_prompt_for_search (int pchar)
 {
   int len;
   char *pmt, *p;
@@ -2623,8 +2829,7 @@ _rl_make_prompt_for_search (pchar)
 
 /* Quick redisplay hack when erasing characters at the end of the line. */
 void
-_rl_erase_at_end_of_line (l)
-     int l;
+_rl_erase_at_end_of_line (int l)
 {
   register int i;
 
@@ -2638,10 +2843,10 @@ _rl_erase_at_end_of_line (l)
 }
 
 /* Clear to the end of the line.  COUNT is the minimum
-   number of character spaces to clear, */
+   number of character spaces to clear, but we use a terminal escape
+   sequence if available. */
 void
-_rl_clear_to_eol (count)
-     int count;
+_rl_clear_to_eol (int count)
 {
 #ifndef __MSDOS__
   if (_rl_term_clreol)
@@ -2655,36 +2860,33 @@ _rl_clear_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;
+space_to_eol (int count)
 {
   register int i;
 
   for (i = 0; i < count; i++)
-   putc (' ', rl_outstream);
+    putc (' ', rl_outstream);
 
   _rl_last_c_pos += count;
 }
 
 void
-_rl_clear_screen ()
+_rl_clear_screen (void)
 {
-#ifndef __DJGPP__
+#if defined (__DJGPP__)
+  ScreenClear ();
+  ScreenSetCursor (0, 0);
+#else
   if (_rl_term_clrpag)
     tputs (_rl_term_clrpag, 1, _rl_output_character_function);
   else
     rl_crlf ();
-#else
-  ScreenClear ();
-  ScreenSetCursor (0, 0);
 #endif /* __DJGPP__ */
 }
 
 /* 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;
+insert_some_chars (char *string, int count, int col)
 {
   open_some_spaces (col);
   _rl_output_some_chars (string, count);
@@ -2694,8 +2896,7 @@ insert_some_chars (string, count, col)
    ncurses documentation and use either im/ei with explicit spaces, or IC/ic
    by itself.  We assume there will either be ei or we don't need to use it. */
 static void
-open_some_spaces (col)
-     int col;
+open_some_spaces (int col)
 {
 #if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION))
   char *buffer;
@@ -2731,8 +2932,7 @@ open_some_spaces (col)
 
 /* Delete COUNT characters from the display line. */
 static void
-delete_chars (count)
-     int count;
+delete_chars (int count)
 {
   if (count > _rl_screenwidth) /* XXX */
     return;
@@ -2754,9 +2954,9 @@ delete_chars (count)
 }
 
 void
-_rl_update_final ()
+_rl_update_final (void)
 {
-  int full_lines;
+  int full_lines, woff, botline_length;
 
   full_lines = 0;
   /* If the cursor is the only thing on an otherwise-blank last line,
@@ -2768,26 +2968,34 @@ _rl_update_final ()
       full_lines = 1;
     }
   _rl_move_vert (_rl_vis_botlin);
+  woff = W_OFFSET(_rl_vis_botlin, wrap_offset);
+  botline_length = VIS_LLEN(_rl_vis_botlin) - woff;
   /* 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))
+  if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth)
     {
       char *last_line;
 
-      last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]];
+      /* LAST_LINE includes invisible characters, so if you want to get the
+        last character of the first line, you have to take WOFF into account.
+        This needs to be done for both calls to _rl_move_cursor_relative,
+        which takes a buffer position as the first argument, and any direct
+        subscripts of LAST_LINE. */
+      last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */
       cpos_buffer_position = -1;       /* don't know where we are in buffer */
-      _rl_move_cursor_relative (_rl_screenwidth - 1, last_line);       /* XXX */
+      _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line);        /* XXX */
       _rl_clear_to_eol (0);
-      putc (last_line[_rl_screenwidth - 1], rl_outstream);
+      putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream);
     }
   _rl_vis_botlin = 0;
-  rl_crlf ();
+  if (botline_length > 0 || _rl_last_c_pos > 0)
+    rl_crlf ();
   fflush (rl_outstream);
   rl_display_fixed++;
 }
 
 /* Move to the start of the current line. */
 static void
-cr ()
+cr (void)
 {
   if (_rl_term_cr)
     {
@@ -2804,8 +3012,7 @@ cr ()
    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;
+redraw_prompt (char *t)
 {
   char *oldp;
 
@@ -2829,7 +3036,7 @@ redraw_prompt (t)
       
 /* Redisplay the current line after a SIGWINCH is received. */
 void
-_rl_redisplay_after_sigwinch ()
+_rl_redisplay_after_sigwinch (void)
 {
   char *t;
 
@@ -2874,7 +3081,7 @@ _rl_redisplay_after_sigwinch ()
 }
 
 void
-_rl_clean_up_for_exit ()
+_rl_clean_up_for_exit (void)
 {
   if (_rl_echoing_p)
     {
@@ -2887,7 +3094,7 @@ _rl_clean_up_for_exit ()
 }
 
 void
-_rl_erase_entire_line ()
+_rl_erase_entire_line (void)
 {
   cr ();
   _rl_clear_to_eol (0);
@@ -2896,7 +3103,7 @@ _rl_erase_entire_line ()
 }
 
 void
-_rl_ttyflush ()
+_rl_ttyflush (void)
 {
   fflush (rl_outstream);
 }
@@ -2904,7 +3111,7 @@ _rl_ttyflush ()
 /* 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 ()
+_rl_current_display_line (void)
 {
   int ret, nleft;
 
@@ -2928,9 +3135,7 @@ _rl_current_display_line ()
    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, flags)
-     const char *str;
-     int start, end, flags;
+_rl_col_width (const char *str, int start, int end, int flags)
 {
   wchar_t wc;
   mbstate_t ps;
@@ -2963,7 +3168,13 @@ _rl_col_width (str, start, end, flags)
 
   while (point < start)
     {
-      tmp = mbrlen (str + point, max, &ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point]))
+       {
+         memset (&ps, 0, sizeof (mbstate_t));
+         tmp = 1;
+       }
+      else
+       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
@@ -2992,7 +3203,13 @@ _rl_col_width (str, start, end, flags)
 
   while (point < end)
     {
-      tmp = mbrtowc (&wc, str + point, max, &ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point]))
+       {
+         tmp = 1;
+         wc = (wchar_t) str[point];
+       }
+      else
+       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
index bba7b590eddf5deb96172a5d40375bb81f6045ca..dbc21c14d9c870428828b4f9f9047e6ee93d690f 100644 (file)
@@ -166,6 +166,9 @@ parameters managing the list itself.
 @deftypefun void add_history (const char *string)
 Place @var{string} at the end of the history list.  The associated data
 field (if any) is set to @code{NULL}.
+If the maximum number of history entries has been set using
+@code{stifle_history()}, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
 @end deftypefun
 
 @deftypefun void add_history_time (const char *string)
@@ -198,6 +201,7 @@ Clear the history list by deleting all the entries.
 
 @deftypefun void stifle_history (int max)
 Stifle the history list, remembering only the last @var{max} entries.
+The history list will contain only @var{max} entries at a time.
 @end deftypefun
 
 @deftypefun int unstifle_history (void)
@@ -234,10 +238,12 @@ pointer.
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} history_get (int offset)
-Return the history entry at position @var{offset}, starting from
-@code{history_base} (@pxref{History Variables}).
-If there is no entry there, or if @var{offset}
-is greater than the history length, return a @code{NULL} pointer.
+Return the history entry at position @var{offset}.
+The range of valid
+values of @var{offset} starts at @code{history_base} and ends at
+@var{history_length} - 1 (@pxref{History Variables}).
+If there is no entry there, or if @var{offset} is outside the valid
+range, return a @code{NULL} pointer.
 @end deftypefun
 
 @deftypefun time_t history_get_time (HIST_ENTRY *entry)
@@ -397,7 +403,7 @@ to the ``normal'' terminating characters.
 Return an array of tokens parsed out of @var{string}, much as the
 shell might.  The tokens are split on the characters in the
 @var{history_word_delimiters} variable,
-and shell quoting conventions are obeyed.
+and shell quoting conventions are obeyed as described below.
 @end deftypefun
 
 @deftypefun {char *} history_arg_extract (int first, int last, const char *string)
@@ -470,8 +476,24 @@ carriage return, and @samp{=}.
 @end deftypevar
 
 @deftypevar int history_quotes_inhibit_expansion
-If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character.  The default value is 0.
+If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
+@end deftypevar
+
+@deftypevar int history_quoting_state
+An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting. If set to @samp{'}, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote; if set
+to @samp{"}, history expansion will assume the line is double quoted until
+it reads an unquoted closing double quote. If set to zero, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if @var{history_quotes_inhibit_expansion} is set.
 @end deftypevar
 
 @deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
index 04e192eb9b78543850d9aeef0473aca501f0c006..521ccc708ba812088ca9aa5345100b4594291a97 100644 (file)
@@ -1,7 +1,7 @@
 @ignore
 This file documents the user interface to the GNU History library.
 
-Copyright (C) 1988--2016 Free Software Foundation, Inc.
+Copyright (C) 1988--2018 Free Software Foundation, Inc.
 Authored by Brian Fox and Chet Ramey.
 
 Permission is granted to make and distribute verbatim copies of this manual
@@ -124,7 +124,7 @@ The @code{lithist}
 shell option causes the shell to save the command with embedded newlines
 instead of semicolons.
 The @code{shopt} builtin is used to set these options.
-@xref{Bash Builtins}, for a description of @code{shopt}.
+@xref{The Shopt Builtin}, for a description of @code{shopt}.
 
 @node Bash History Builtins
 @section Bash History Builtins
@@ -149,8 +149,8 @@ Both @var{first} and
 @var{last} may be specified as a string (to locate the most recent
 command beginning with that string) or as a number (an index into the
 history list, where a negative number is used as an offset from the
-current command number).  If @var{last} is not specified it is set to
-@var{first}.  If @var{first} is not specified it is set to the previous
+current command number).  If @var{last} is not specified, it is set to
+@var{first}.  If @var{first} is not specified, it is set to the previous
 command for editing and @minus{}16 for listing.  If the @option{-l} flag is
 given, the commands are listed on standard output.  The @option{-n} flag
 suppresses the command numbers when listing.  The @option{-r} flag
@@ -176,6 +176,7 @@ and typing @samp{r} re-executes the last command (@pxref{Aliases}).
 history [@var{n}]
 history -c
 history -d @var{offset}
+history -d @var{start}-@var{end}
 history [-anrw] [@var{filename}]
 history -ps @var{arg}
 @end example
@@ -198,8 +199,17 @@ with the other options to replace the history list completely.
 
 @item -d @var{offset}
 Delete the history entry at position @var{offset}.
-@var{offset} should be specified as it appears when the history is
-displayed.
+If @var{offset} is positive, it should be specified as it appears when
+the history is displayed.
+If @var{offset} is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of @samp{-1} refers to the current
+@code{history -d} command.
+
+@item -d @var{start}-@var{end}
+Delete the history entries between positions @var{start} and @var{end},
+inclusive.  Positive and negative values for @var{start} and @var{end}
+are interpreted as described above.
 
 @item -a
 Append the new history lines to the history file.
@@ -251,7 +261,9 @@ fix errors in previous commands quickly.
 
 @ifset BashFeatures
 History expansion is performed immediately after a complete line
-is read, before the shell breaks it into words.
+is read, before the shell breaks it into words, and is performed
+on each line individually.  Bash attempts to inform the history
+expansion functions about quoting still in effect from previous lines.
 @end ifset
 
 History expansion takes place in two parts.  The first is to determine
@@ -265,16 +277,26 @@ that Bash does, so that several words
 surrounded by quotes are considered one word.
 History expansions are introduced by the appearance of the
 history expansion character, which is @samp{!} by default.
+
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+
 @ifset BashFeatures
-Only @samp{\} and @samp{'} may be used to escape the history expansion
-character, but the history expansion character is
+When using the shell, only @samp{\} and @samp{'} may be used to escape the
+history expansion character, but the history expansion character is
 also treated as quoted if it immediately precedes the closing double quote
 in a double-quoted string. 
 @end ifset
 
 @ifset BashFeatures
 Several shell options settable with the @code{shopt}
-builtin (@pxref{Bash Builtins}) may be used to tailor
+builtin (@pxref{The Shopt Builtin}) may be used to tailor
 the behavior of history expansion.  If the
 @code{histverify} shell option is enabled, and Readline
 is being used, history substitutions are not immediately passed to
index b8ce90f95d5b64bbe10d0272ad4e680ab4016521..28a02d99607344761b34c53f2ebc8b1100a3fe9a 100644 (file)
@@ -90,6 +90,12 @@ If @code{readline} encounters an @code{EOF} while reading the line, and the
 line is empty at that point, then @code{(char *)NULL} is returned.
 Otherwise, the line is ended just as if a newline had been typed.
 
+Readline performs some expansion on the @var{prompt} before it is
+displayed on the screen.  See the description of @code{rl_expand_prompt}
+(@pxref{Redisplay}) for additional details, especially if @var{prompt}
+will contain characters that do not consume physical screen space when
+displayed.
+
 If you want the user to be able to get at the line later, (with
 @key{C-p} for example), you must call @code{add_history()} to save the
 line away in a @dfn{history} list of such lines.
@@ -688,6 +694,11 @@ Free all storage associated with @var{keymap}.  This calls
 @code{rl_discard_keymap} to free subordindate keymaps and macros.
 @end deftypefun
 
+@deftypefun int rl_empty_keymap (Keymap keymap)
+Return non-zero if there are no keys bound to functions in @var{keymap};
+zero if there are any keys bound.
+@end deftypefun
+
 Readline has several internal keymaps.  These functions allow you to
 change which keymap is active.
 
@@ -709,6 +720,24 @@ Return the name matching @var{keymap}.  @var{name} is one which would
 be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
 @end deftypefun
 
+@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap)
+Set the name of @var{keymap}.  This name will then be "registered" and
+available for use in a @code{set keymap} inputrc directive
+@pxref{Readline Init File}).
+The @var{name} may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same @var{keymap} argument.
+You may associate a registered @var{name} with a new keymap by calling this
+function more than once  with the same @var{name} argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of @var{name}.
+The return value is greater than zero unless @var{name} is one of
+Readline's builtin keymap names or @var{keymap} is one of Readline's
+builtin keymaps.
+@end deftypefun
+
 @node Binding Keys
 @subsection Binding Keys
 
@@ -835,6 +864,16 @@ Return the function invoked by @var{keyseq} in keymap @var{map}.
 If @var{map} is @code{NULL}, the current keymap is used.  If @var{type} is
 not @code{NULL}, the type of the object is returned in the @code{int} variable
 it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
+@end deftypefun
+
+@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+Return the function invoked by @var{keyseq} of length @var{len}
+in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the
+addition of the @var{len} parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
 @end deftypefun
 
 @deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
@@ -1679,6 +1718,19 @@ handlers, depending on the values of @code{rl_catch_signals} and
 @code{rl_catch_sigwinch}.
 @end deftypefun
 
+If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, @code{rl_check_signals()}
+will call Readline's internal signal handler if there are any pending
+signals.  This is primarily intended for those applications that use
+a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish
+to handle signals received while waiting for input.
+
+@deftypefun void rl_check_signals (void)
+If there are any pending signals, call Readline's internal signal handling
+functions to process them. @code{rl_pending_signal()} can be used independently
+to determine whether or not there are any pending signals.
+@end deftypefun
+
 If an application does not wish Readline to catch @code{SIGWINCH}, it may
 call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
 Readline to update its idea of the terminal size when a @code{SIGWINCH}
@@ -2094,6 +2146,8 @@ character (@samp{\0}) prevents anything being appended automatically.
 This can be changed in application-specific completion functions to
 provide the ``most sensible word separator character'' according to
 an application-specific command line syntax specification.
+It is set to the default before any application-specific completion function
+is called, and may only be changed within such a function.
 @end deftypevar
 
 @deftypevar int rl_completion_suppress_append
index 4c094c88c69bd19dfe9c5124d8331fa295413da0..a59bd144633f9707506b822828d070575607c719 100644 (file)
@@ -475,6 +475,7 @@ The default value is @samp{off}.
 If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline
 treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when
 performing case-insensitive filename matching and completion.
+The default value is @samp{off}.
 
 @item completion-prefix-display-length
 @vindex completion-prefix-display-length
@@ -524,7 +525,8 @@ set to either @samp{emacs} or @samp{vi}.
 
 @item emacs-mode-string
 @vindex emacs-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when emacs editing mode is active.  The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
 backslash escape sequences is available.
@@ -604,7 +606,7 @@ If this variable has not been given a value, the characters @key{ESC} and
 @item keymap
 @vindex keymap
 Sets Readline's idea of the current keymap for key binding commands.
-Acceptable @code{keymap} names are
+Built-in @code{keymap} names are
 @code{emacs},
 @code{emacs-standard},
 @code{emacs-meta},
@@ -615,6 +617,7 @@ Acceptable @code{keymap} names are
 @code{vi-insert}.
 @code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a
 synonym); @code{emacs} is equivalent to @code{emacs-standard}.
+Applications may add additional names.
 The default value is @code{emacs}.
 The value of the @code{editing-mode} variable also affects the
 default keymap.
@@ -714,9 +717,9 @@ The default value is @samp{off}.
 
 @item show-mode-in-prompt
 @vindex show-mode-in-prompt
-If set to @samp{on}, add a character to the beginning of the prompt
+If set to @samp{on}, add a string to the beginning of the prompt
 indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., @var{emacs-mode-string}).
 The default value is @samp{off}.
 
 @item skip-completed-text
@@ -735,7 +738,8 @@ The default value is @samp{off}.
 
 @item vi-cmd-mode-string
 @vindex vi-cmd-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in command mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -747,7 +751,8 @@ The default is @samp{(cmd)}.
 
 @item vi-ins-mode-string
 @vindex vi-ins-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
 prompt when vi editing mode is active and in insertion mode.
 The value is expanded like a
 key binding, so the standard set of meta- and control prefixes and
@@ -799,7 +804,7 @@ Meta-Rubout: backward-kill-word
 Control-o: "> output"
 @end example
 
-In the above example, @kbd{C-u} is bound to the function
+In the example above, @kbd{C-u} is bound to the function
 @code{universal-argument},
 @kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
 @kbd{C-o} is bound to run the macro
@@ -914,8 +919,9 @@ of tests.  There are four parser directives used.
 @item $if
 The @code{$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.
+Readline.  The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
 
 @table @code
 @item mode
@@ -935,6 +941,27 @@ the portion of the terminal name before the first @samp{-}.  This
 allows @code{sun} to match both @code{sun} and @code{sun-cmd},
 for instance.
 
+@item version
+The @code{version} test may be used to perform comparisons against
+specific Readline versions.
+The @code{version} expands to the current Readline version.
+The set of comparison operators includes
+@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<},
+and @samp{>}.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., @samp{7.1}). If the minor version is omitted, it
+is assumed to be @samp{0}.
+The operator may be separated from the string @code{version} and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+@example
+$if version >= 7.0
+set show-mode-in-prompt on
+$endif
+@end example
+
 @item application
 The @var{application} construct is used to include
 application-specific settings.  Each program using the Readline
@@ -949,6 +976,23 @@ $if Bash
 "\C-xq": "\eb\"\ef\""
 $endif
 @end example
+
+@item variable
+The @var{variable} construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values @var{on} and @var{off}.
+The following example is equivalent to the @code{mode=emacs} test described
+above:
+@example
+$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+@end example
 @end table
 
 @item $endif
@@ -1138,6 +1182,19 @@ Move back to the start of the current or previous word.
 Words are delimited by non-quoted shell metacharacters.
 @end ifset
 
+@item previous-screen-line ()
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+
+@item next-screen-line ()
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+
 @item clear-screen (C-l)
 Clear the screen and redraw the current line,
 leaving the current line at the top of the screen.
@@ -1216,14 +1273,14 @@ The search string must match at the beginning of a history line.
 This is a non-incremental search.
 By default, this command is unbound.
 
-@item history-substr-search-forward ()
+@item history-substring-search-forward ()
 Search forward through the history for the string of characters
 between the start of the current line and the point.
 The search string may match anywhere in a history line.
 This is a non-incremental search.
 By default, this command is unbound.
 
-@item history-substr-search-backward ()
+@item history-substring-search-backward ()
 Search backward through the history for the string of characters
 between the start of the current line and the point.
 The search string may match anywhere in a history line.
@@ -1297,7 +1354,7 @@ This function is intended to be bound to the "bracketed paste" escape
 sequence sent by some terminals, and such a binding is assigned by default.
 It allows Readline to insert the pasted text as a single unit without treating
 each character as if it had been read from the keyboard.  The characters
-are inserted as if each one was bound to @code{self-insert}) instead of
+are inserted as if each one was bound to @code{self-insert} instead of
 executing any editing commands.
 
 @item transpose-chars (C-t)
@@ -1590,9 +1647,10 @@ Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 @code{bell-style}).
 
-@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
-If the metafied character @var{x} is lowercase, run the command
-that is bound to the corresponding uppercase character.
+@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{})
+If the metafied character @var{x} is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if @var{x} is already lower case.
 
 @item prefix-meta (@key{ESC})
 Metafy the next character typed.  This is for keyboards
@@ -1718,10 +1776,11 @@ A synonym for @code{yank-last-arg}.
 
 @item 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.
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
 
-@item edit-and-execute-command (C-xC-e)
+@item edit-and-execute-command (C-x C-e)
 Invoke an editor on the current command line, and execute the result as shell
 commands.
 Bash attempts to invoke
@@ -1792,6 +1851,9 @@ If no compspec is found for the full pathname, an attempt is made to
 find a compspec for the portion following the final slash.
 If those searches do not result in a compspec, any compspec defined with
 the @option{-D} option to @code{complete} is used as the default.
+If there is no default compspec, Bash attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion 
 
 Once a compspec has been found, it is used to generate the list of
 matching words.
@@ -1816,7 +1878,9 @@ Next, the string specified as the argument to the @option{-W} option
 is considered.
 The string is first split using the characters in the @env{IFS}
 special variable as delimiters.
-Shell quoting is honored.
+Shell quoting is honored within the string, in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of @env{IFS}.
 Each word is then expanded using
 brace expansion, tilde expansion, parameter and variable expansion,
 command substitution, and arithmetic expansion,
@@ -1960,10 +2024,10 @@ matches were generated.
 @item complete
 @btindex complete
 @example
-@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
-[-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
+@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}]
+[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
 [-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]}
-@code{complete -pr [-DE] [@var{name} @dots{}]}
+@code{complete -pr [-DEI] [@var{name} @dots{}]}
 @end example
 
 Specify how arguments to each @var{name} should be completed.
@@ -1973,16 +2037,24 @@ reused as input.
 The @option{-r} option removes a completion specification for
 each @var{name}, or, if no @var{name}s are supplied, all
 completion specifications.
-The @option{-D} option indicates that the remaining options and actions should
+The @option{-D} option indicates that other supplied options and actions should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The @option{-E} option indicates that the remaining options and actions should
+The @option{-E} option indicates that other supplied options and actions should
 apply to ``empty'' command completion; that is, completion attempted on a 
 blank line.
+The @option{-I} option indicates that other supplied options and actions should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}.
+If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other
+@var{name} arguments are ignored; these completions only apply to the case
+specified by the option.
 
 The process of applying these completion specifications when word completion
-is attempted is described above (@pxref{Programmable Completion}).  The
-@option{-D} option takes precedence over @option{-E}.
+is attempted is described above (@pxref{Programmable Completion}).
 
 Other options, if specified, have the following meanings.
 The arguments to the @option{-G}, @option{-W}, and @option{-X} options
@@ -2012,7 +2084,7 @@ Perform directory name completion if the compspec generates no matches.
 
 @item filenames
 Tell Readline that the compspec generates filenames, so it can perform any
-filename-specific processing (like adding a slash to directory names
+filename-specific processing (like adding a slash to directory names,
 quoting special characters, or suppressing trailing spaces).
 This option is intended to be used with shell functions specified
 with @option{-F}.
@@ -2167,7 +2239,7 @@ an error occurs adding a completion specification.
 @item compopt
 @btindex compopt
 @example
-@code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}]
+@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}]
 @end example
 Modify completion options for each @var{name} according to the
 @var{option}s, or for the currently-executing completion if no @var{name}s
@@ -2176,14 +2248,19 @@ If no @var{option}s are given, display the completion options for each
 @var{name} or the current completion.
 The possible values of @var{option} are those valid for the @code{complete}
 builtin described above.
-The @option{-D} option indicates that the remaining options should
+The @option{-D} option indicates that other supplied options should
 apply to the ``default'' command completion; that is, completion attempted
 on a command for which no completion has previously been defined.
-The @option{-E} option indicates that the remaining options should
+The @option{-E} option indicates that other supplied options should
 apply to ``empty'' command completion; that is, completion attempted on a 
 blank line.
+The @option{-I} option indicates that other supplied options should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
 
-The @option{-D} option takes precedence over @option{-E}.
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}
 
 The return value is true unless an invalid option is supplied, an attempt
 is made to modify the options for a @var{name} for which no completion
@@ -2200,7 +2277,7 @@ a shell function and bind it to a particular command using @code{complete -F}.
 
 The following function provides completions for the @code{cd} builtin.
 It is a reasonably good example of what shell functions must do when
-used for completion.  This function uses the word passsed as @code{$2}
+used for completion.  This function uses the word passed as @code{$2}
 to determine the directory name to complete.  You can also use the
 @code{COMP_WORDS} array variable; the current word is indexed by the
 @code{COMP_CWORD} variable.
@@ -2230,7 +2307,7 @@ _comp_cd()
     local cur _skipdot _cdpath
     local i j k
 
-    # Tilde expansion, with side effect of expanding tilde to full pathname
+    # Tilde expansion, which also expands tilde to full pathname
     case "$2" in
     \~*)    eval cur="$2" ;;
     *)      cur=$2 ;;
index 9dc2998ab1390038396c65e0732f105df1cfb18c..576c35c839d724c4e419cbddd8fe3055ec91b3b4 100644 (file)
@@ -1,10 +1,10 @@
 @ignore
-Copyright (C) 1988-2016 Free Software Foundation, Inc. 
+Copyright (C) 1988-2018 Free Software Foundation, Inc. 
 @end ignore
 
-@set EDITION 7.0
-@set VERSION 7.0
-@set UPDATED 16 July 2016
-@set UPDATED-MONTH July 2016
+@set EDITION 8.0
+@set VERSION 8.0
+@set UPDATED 30 November 2018
+@set UPDATED-MONTH November 2018
 
-@set LASTCHANGE Sat Jul 16 13:43:15 EDT 2016
+@set LASTCHANGE Fri Nov 30 22:50:53 EST 2018
index cb6e140a2175ac38a14ed95b1ef4691294789163..b5e53f494a1a1b6115bb9dbe552d720fff1d9c50 100644 (file)
@@ -1,6 +1,6 @@
 /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
index fa9e06ff71e1e8410abdf7dfec8f3e5029b4b54c..b4942413f8bebb6d08b83e035ce7dde3a9c52bf7 100644 (file)
@@ -137,7 +137,7 @@ fcopy(fp)
       if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0)
        {
          x = rl_untranslate_keyseq (c);
-         if (fputs (x, stdout) != 0)
+         if (fputs (x, stdout) == EOF)
            return 1;
        }
       else if (putchar (c) == EOF)
index 34b1d6ba79fb827a0c2d20c475f764523ec15068..aaf144de99133b7c5fc656add927ada655951b25 100644 (file)
@@ -1,6 +1,6 @@
 /* funmap.c -- attach names to functions. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -110,6 +110,7 @@ static const FUNMAP default_funmap[] = {
   { "menu-complete", rl_menu_complete },
   { "menu-complete-backward", rl_backward_menu_complete },
   { "next-history", rl_get_next_history },
+  { "next-screen-line", rl_next_screen_line },
   { "non-incremental-forward-search-history", rl_noninc_forward_search },
   { "non-incremental-reverse-search-history", rl_noninc_reverse_search },
   { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
@@ -121,6 +122,7 @@ static const FUNMAP default_funmap[] = {
 #endif
   { "possible-completions", rl_possible_completions },
   { "previous-history", rl_get_previous_history },
+  { "previous-screen-line", rl_previous_screen_line },
   { "print-last-kbd-macro", rl_print_last_kbd_macro },
   { "quoted-insert", rl_quoted_insert },
   { "re-read-init-file", rl_re_read_init_file },
@@ -204,9 +206,7 @@ static const FUNMAP default_funmap[] = {
 };
 
 int
-rl_add_funmap_entry (name, function)
-     const char *name;
-     rl_command_func_t *function;
+rl_add_funmap_entry (const char *name, rl_command_func_t *function)
 {
   if (funmap_entry + 2 >= funmap_size)
     {
@@ -226,7 +226,7 @@ static int funmap_initialized;
 
 /* Make the funmap contain all of the default entries. */
 void
-rl_initialize_funmap ()
+rl_initialize_funmap (void)
 {
   register int i;
 
@@ -244,7 +244,7 @@ rl_initialize_funmap ()
    is sorted.  The array itself is allocated, but not the strings inside.
    You should free () the array when you done, but not the pointers. */
 const char **
-rl_funmap_names ()
+rl_funmap_names (void)
 {
   const char **result;
   int result_size, result_index;
index b84a6b8ac4b21e3c139a3e5eb66276e8b9f753bf..adcf5dcb4e3cbfdfb29a2904452795e83acdd9ab 100644 (file)
@@ -1,6 +1,6 @@
 /* histexpand.c -- history expansion. */
 
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -55,6 +55,8 @@
 
 #define slashify_in_quotes "\\`\"$"
 
+#define fielddelim(c)  (whitespace(c) || (c) == '\n')
+
 typedef int _hist_search_func_t PARAMS((const char *, int));
 
 static char error_pointer;
@@ -107,6 +109,8 @@ char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
    particular history expansion should be performed. */
 rl_linebuf_func_t *history_inhibit_expansion_function;
 
+int history_quoting_state = 0;
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     History Expansion                           */
@@ -132,10 +136,7 @@ static char *search_match;
    So you might call this function like:
    line = get_history_event ("!echo:p", &index, 0);  */
 char *
-get_history_event (string, caller_index, delimiting_quote)
-     const char *string;
-     int *caller_index;
-     int delimiting_quote;
+get_history_event (const char *string, int *caller_index, int delimiting_quote)
 {
   register int i;
   register char c;
@@ -316,9 +317,7 @@ get_history_event (string, caller_index, delimiting_quote)
    to the closing single quote.  FLAGS currently used to allow backslash
    to escape a single quote (e.g., for bash $'...'). */
 static void
-hist_string_extract_single_quoted (string, sindex, flags)
-     char *string;
-     int *sindex, flags;
+hist_string_extract_single_quoted (char *string, int *sindex, int flags)
 {
   register int i;
 
@@ -332,8 +331,7 @@ hist_string_extract_single_quoted (string, sindex, flags)
 }
 
 static char *
-quote_breaks (s)
-     char *s;
+quote_breaks (char *s)
 {
   register char *p, *r;
   char *ret;
@@ -374,9 +372,7 @@ quote_breaks (s)
 }
 
 static char *
-hist_error(s, start, current, errtype)
-      char *s;
-      int start, current, errtype;
+hist_error(char *s, int start, int current, int errtype)
 {
   char *temp;
   const char *emsg;
@@ -433,9 +429,7 @@ hist_error(s, start, current, errtype)
    subst_rhs is allowed to be set to the empty string. */
 
 static char *
-get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
-     char *str;
-     int *iptr, delimiter, is_rhs, *lenptr;
+get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr)
 {
   register int si, i, j, k;
   char *s;
@@ -490,7 +484,7 @@ get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
 }
 
 static void
-postproc_subst_rhs ()
+postproc_subst_rhs (void)
 {
   char *new;
   int i, j, new_size;
@@ -526,12 +520,9 @@ postproc_subst_rhs ()
    if the `p' modifier was supplied and the caller should just print
    the returned string.  Returns the new index into string in
    *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */
+/* need current line for !# */
 static int
-history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_line)
-     char *string;
-     int start, qc, *end_index_ptr;
-     char **ret_string;
-     char *current_line;       /* for !# */
+history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line)
 {
   int i, n, starting_index;
   int substitute_globally, subst_bywords, want_quotes, print_only;
@@ -780,7 +771,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l
                   the last time. */
                if (subst_bywords && si > we)
                  {
-                   for (; temp[si] && whitespace (temp[si]); si++)
+                   for (; temp[si] && fielddelim (temp[si]); si++)
                      ;
                    ws = si;
                    we = history_tokenize_word (temp, si);
@@ -908,9 +899,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l
        while (0)
 
 int
-history_expand (hstring, output)
-     char *hstring;
-     char **output;
+history_expand (char *hstring, char **output)
 {
   register int j;
   int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag;
@@ -976,7 +965,22 @@ history_expand (hstring, output)
 
       /* `!' followed by one of the characters in history_no_expand_chars
         is NOT an expansion. */
-      for (i = dquote = squote = 0; string[i]; i++)
+      dquote = history_quoting_state == '"';
+      squote = history_quoting_state == '\'';
+
+      /* If the calling application tells us we are already reading a
+        single-quoted string, consume the rest of the string right now
+        and then go on. */
+      i = 0;
+      if (squote && history_quotes_inhibit_expansion)
+       {
+         hist_string_extract_single_quoted (string, &i, 0);
+         squote = 0;
+         if (string[i])
+           i++;
+       }
+
+      for ( ; string[i]; i++)
        {
 #if defined (HANDLE_MULTIBYTE)
          if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -1064,7 +1068,29 @@ history_expand (hstring, output)
     }
 
   /* Extract and perform the substitution. */
-  for (passc = dquote = squote = i = j = 0; i < l; i++)
+  dquote = history_quoting_state == '"';
+  squote = history_quoting_state == '\'';
+
+  /* If the calling application tells us we are already reading a
+     single-quoted string, consume the rest of the string right now
+     and then go on. */
+  i = j = 0;
+  if (squote && history_quotes_inhibit_expansion)
+    {
+      int c;
+
+      hist_string_extract_single_quoted (string, &i, 0);
+      squote = 0;
+      for (c = 0; c < i; c++)
+       ADD_CHAR (string[c]);      
+      if (string[i])
+       {
+         ADD_CHAR (string[i]);
+         i++;
+       }
+    }
+
+  for (passc = 0; i < l; i++)
     {
       int qc, tchar = string[i];
 
@@ -1249,9 +1275,7 @@ history_expand (hstring, output)
    CALLER_INDEX is the offset in SPEC to start looking; it is updated
    to point to just after the last character parsed. */
 static char *
-get_history_word_specifier (spec, from, caller_index)
-     char *spec, *from;
-     int *caller_index;
+get_history_word_specifier (char *spec, char *from, int *caller_index)
 {
   register int i = *caller_index;
   int first, last;
@@ -1357,9 +1381,7 @@ get_history_word_specifier (spec, from, caller_index)
    tokens, so that FIRST = -1 means the next to last token on the line).
    If LAST is `$' the last arg from STRING is used. */
 char *
-history_arg_extract (first, last, string)
-     int first, last;
-     const char *string;
+history_arg_extract (int first, int last, const char *string)
 {
   register int i, len;
   char *result;
@@ -1418,9 +1440,7 @@ history_arg_extract (first, last, string)
 }
 
 static int
-history_tokenize_word (string, ind)
-     const char *string;
-     int ind;
+history_tokenize_word (const char *string, int ind)
 {
   register int i, j;
   int delimiter, nestdelim, delimopen;
@@ -1428,7 +1448,7 @@ history_tokenize_word (string, ind)
   i = ind;
   delimiter = nestdelim = 0;
 
-  if (member (string[i], "()\n"))
+  if (member (string[i], "()\n"))      /* XXX - included \n, but why? been here forever */
     {
       i++;
       return i;
@@ -1450,11 +1470,11 @@ history_tokenize_word (string, ind)
        }
     }
 
-  if (member (string[i], "<>;&|$"))
+  if (member (string[i], "<>;&|"))
     {
       int peek = string[i + 1];
 
-      if (peek == string[i] && peek != '$')
+      if (peek == string[i])
        {
          if (peek == '<' && string[i + 2] == '-')
            i++;
@@ -1477,9 +1497,8 @@ history_tokenize_word (string, ind)
          i += 2;
          return i;
        }
-      /* XXX - separated out for later -- bash-4.2 */
-      else if ((peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */
-              (peek == '(' && string[i] == '$')) /*)*/
+      /* XXX - process substitution -- separated out for later -- bash-4.2 */
+      else if (peek == '(' && (string[i] == '>' || string[i] == '<')) /*)*/
        {
          i += 2;
          delimopen = '(';
@@ -1487,34 +1506,9 @@ history_tokenize_word (string, ind)
          nestdelim = 1;
          goto get_word;
        }
-#if 0
-      else if (peek == '\'' && string[i] == '$')
-        {
-         i += 2;       /* XXX */
-         return i;
-        }
-#endif
 
-      if (string[i] != '$')
-       {
-         i++;
-         return i;
-       }
-    }
-
-  /* same code also used for $(...)/<(...)/>(...) above */
-  if (member (string[i], "!@?+*"))
-    {
-      int peek = string[i + 1];
-
-      if (peek == '(')         /*)*/
-       {
-         /* Shell extended globbing patterns */
-         i += 2;
-         delimopen = '(';
-         delimiter = ')';      /* XXX - not perfect */
-         nestdelim = 1;
-       }
+      i++;
+      return i;
     }
 
 get_word:
@@ -1559,6 +1553,16 @@ get_word:
          continue;
        }
 
+      /* Command and process substitution; shell extended globbing patterns */
+      if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/
+       {
+         i += 2;
+         delimopen = '(';
+         delimiter = ')';
+         nestdelim = 1;
+         continue;
+       }
+      
       if (delimiter == 0 && (member (string[i], history_word_delimiters)))
        break;
 
@@ -1570,9 +1574,7 @@ get_word:
 }
 
 static char *
-history_substring (string, start, end)
-     const char *string;
-     int start, end;
+history_substring (const char *string, int start, int end)
 {
   register int len;
   register char *result;
@@ -1589,9 +1591,7 @@ history_substring (string, start, end)
    WIND.  The position in the returned array of strings is returned in
    *INDP. */
 static char **
-history_tokenize_internal (string, wind, indp)
-     const char *string;
-     int wind, *indp;
+history_tokenize_internal (const char *string, int wind, int *indp)
 {
   char **result;
   register int i, start, result_index, size;
@@ -1606,7 +1606,7 @@ history_tokenize_internal (string, wind, indp)
   for (i = result_index = size = 0, result = (char **)NULL; string[i]; )
     {
       /* Skip leading whitespace. */
-      for (; string[i] && whitespace (string[i]); i++)
+      for (; string[i] && fielddelim (string[i]); i++)
        ;
       if (string[i] == 0 || string[i] == history_comment_char)
        return (result);
@@ -1644,17 +1644,14 @@ history_tokenize_internal (string, wind, indp)
 /* Return an array of tokens, much as the shell might.  The tokens are
    parsed out of STRING. */
 char **
-history_tokenize (string)
-     const char *string;
+history_tokenize (const char *string)
 {
   return (history_tokenize_internal (string, -1, (int *)NULL));
 }
 
 /* Free members of WORDS from START to an empty string */
 static void
-freewords (words, start)
-     char **words;
-     int start;
+freewords (char **words, int start)
 {
   register int i;
 
@@ -1666,9 +1663,7 @@ freewords (words, start)
    in the history line LINE.  Used to save the word matched by the
    last history !?string? search. */
 static char *
-history_find_word (line, ind)
-     char *line;
-     int ind;
+history_find_word (char *line, int ind)
 {
   char **words, *s;
   int i, wind;
index 5b057cdef4ea6b51a75e3eb1a00607712d6d6c71..dc64bde1c5acf8c117080eb7c783a2cd3181311d 100644 (file)
@@ -1,6 +1,6 @@
 /* histfile.c - functions to manipulate the history file. */
 
-/* Copyright (C) 1989-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -143,8 +143,7 @@ static int histfile_restore PARAMS((const char *, const char *));
    filename.  This only matters when you don't specify the
    filename to read_history (), or write_history (). */
 static char *
-history_filename (filename)
-     const char *filename;
+history_filename (const char *filename)
 {
   char *return_val;
   const char *home;
@@ -179,8 +178,7 @@ history_filename (filename)
 }
 
 static char *
-history_backupfile (filename)
-     const char *filename;
+history_backupfile (const char *filename)
 {
   const char *fn;
   char *ret, linkbuf[PATH_MAX+1];
@@ -208,8 +206,7 @@ history_backupfile (filename)
 }
   
 static char *
-history_tempfile (filename)
-     const char *filename;
+history_tempfile (const char *filename)
 {
   const char *fn;
   char *ret, linkbuf[PATH_MAX+1];
@@ -251,8 +248,7 @@ history_tempfile (filename)
    If FILENAME is NULL, then read from ~/.history.  Returns 0 if
    successful, or errno if not. */
 int
-read_history (filename)
-     const char *filename;
+read_history (const char *filename)
 {
   return (read_history_range (filename, 0, -1));
 }
@@ -263,9 +259,7 @@ read_history (filename)
    until the end of the file.  If FILENAME is NULL, then read from
    ~/.history.  Returns 0 if successful, or errno if not. */
 int
-read_history_range (filename, from, to)
-     const char *filename;
-     int from, to;
+read_history_range (const char *filename, int from, int to)
 {
   register char *line_start, *line_end, *p;
   char *input, *buffer, *bufend, *last_ts;
@@ -289,6 +283,16 @@ read_history_range (filename, from, to)
   if ((file < 0) || (fstat (file, &finfo) == -1))
     goto error_and_exit;
 
+  if (S_ISREG (finfo.st_mode) == 0)
+    {
+#ifdef EFTYPE
+      errno = EFTYPE;
+#else
+      errno = EINVAL;
+#endif
+      goto error_and_exit;
+    }
+
   file_size = (size_t)finfo.st_size;
 
   /* check for overflow on very large files */
@@ -298,6 +302,12 @@ read_history_range (filename, from, to)
       goto error_and_exit;
     }
 
+  if (file_size == 0)
+    {
+      free (input);
+      return 0;        /* don't waste time if we don't have to */
+    }
+
 #ifdef HISTORY_USE_MMAP
   /* We map read/write and private so we can change newlines to NULs without
      affecting the underlying object. */
@@ -344,6 +354,7 @@ read_history_range (filename, from, to)
 
   /* Start at beginning of file, work to end. */
   bufend = buffer + chars_read;
+  *bufend = '\0';              /* null-terminate buffer for timestamp checks */
   current_line = 0;
 
   /* Heuristic: the history comment character rarely changes, so assume we
@@ -385,7 +396,7 @@ read_history_range (filename, from, to)
          {
            if (HIST_TIMESTAMP_START(line_start) == 0)
              {
-               if (last_ts == NULL && history_multiline_entries)
+               if (last_ts == NULL && history_length > 0 && history_multiline_entries)
                  _hs_append_history_line (history_length - 1, line_start);
                else
                  add_history (line_start);
@@ -427,9 +438,7 @@ read_history_range (filename, from, to)
 /* Save FILENAME to BACK, handling case where FILENAME is a symlink
    (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
 static int
-histfile_backup (filename, back)
-     const char *filename;
-     const char *back;
+histfile_backup (const char *filename, const char *back)
 {
 #if defined (HAVE_READLINK)
   char linkbuf[PATH_MAX+1];
@@ -448,9 +457,7 @@ histfile_backup (filename, back)
 /* Restore ORIG from BACKUP handling case where ORIG is a symlink
    (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
 static int
-histfile_restore (backup, orig)
-     const char *backup;
-     const char *orig;
+histfile_restore (const char *backup, const char *orig)
 {
 #if defined (HAVE_READLINK)
   char linkbuf[PATH_MAX+1];
@@ -470,9 +477,7 @@ histfile_restore (backup, orig)
    If FNAME is NULL, then use ~/.history.  Writes a new file and renames
    it to the original name.  Returns 0 on success, errno on failure. */
 int
-history_truncate_file (fname, lines)
-     const char *fname;
-     int lines;
+history_truncate_file (const char *fname, int lines)
 {
   char *buffer, *filename, *tempname, *bp, *bp1;               /* bp1 == bp+1 */
   int file, chars_read, rv, orig_lines, exists, r;
@@ -606,12 +611,14 @@ history_truncate_file (fname, lines)
       history_lines_written_to_file = 0;
     }
 
+#if defined (HAVE_CHOWN)
   /* Make sure the new filename is owned by the same user as the old.  If one
      user is running this, it's a no-op.  If the shell is running after sudo
      with a shared history file, we don't want to leave the history file
      owned by root. */
   if (rv == 0 && exists)
     r = chown (filename, finfo.st_uid, finfo.st_gid);
+#endif
 
   xfree (filename);
   FREE (tempname);
@@ -623,9 +630,7 @@ history_truncate_file (fname, lines)
    from the history list to FILENAME.  OVERWRITE is non-zero if you
    wish to replace FILENAME with the entries. */
 static int
-history_do_write (filename, nelements, overwrite)
-     const char *filename;
-     int nelements, overwrite;
+history_do_write (const char *filename, int nelements, int overwrite)
 {
   register int i;
   char *output, *tempname, *histname;
@@ -753,12 +758,14 @@ mmap_error:
       history_lines_written_to_file = 0;
     }
 
+#if defined (HAVE_CHOWN)
   /* Make sure the new filename is owned by the same user as the old.  If one
      user is running this, it's a no-op.  If the shell is running after sudo
      with a shared history file, we don't want to leave the history file
      owned by root. */
   if (rv == 0 && exists)
     mode = chown (histname, finfo.st_uid, finfo.st_gid);
+#endif
 
   FREE (histname);
   FREE (tempname);
@@ -769,9 +776,7 @@ mmap_error:
 /* Append NELEMENT entries to FILENAME.  The entries appended are from
    the end of the list minus NELEMENTs up to the end of the list. */
 int
-append_history (nelements, filename)
-     int nelements;
-     const char *filename;
+append_history (int nelements, const char *filename)
 {
   return (history_do_write (filename, nelements, HISTORY_APPEND));
 }
@@ -780,8 +785,7 @@ append_history (nelements, filename)
    then write the history list to ~/.history.  Values returned
    are as in read_history ().*/
 int
-write_history (filename)
-     const char *filename;
+write_history (const char *filename)
 {
   return (history_do_write (filename, history_length, HISTORY_OVERWRITE));
 }
index 28cad14a58aa7df4879334705221ea856519cc1b..9627b24500012e03eefa8ad0e7dc056b756ed246 100644 (file)
@@ -51,9 +51,9 @@
 #endif
 
 #ifndef member
-#  ifndef strchr
+#  if !defined (strchr) && !defined (__STDC__)
 extern char *strchr ();
-#  endif
+#  endif /* !strchr && !__STDC__ */
 #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
 #endif
 
@@ -69,11 +69,17 @@ extern char *strchr ();
 #define NO_PREV_SUBST  4
 
 /* Possible definitions for history starting point specification. */
-#define ANCHORED_SEARCH 1
-#define NON_ANCHORED_SEARCH 0
+#define NON_ANCHORED_SEARCH    0
+#define ANCHORED_SEARCH                0x01
+#define PATTERN_SEARCH         0x02
 
 /* Possible definitions for what style of writing the history file we want. */
 #define HISTORY_APPEND 0
 #define HISTORY_OVERWRITE 1
 
+/* internal extern function declarations used by other parts of the library */
+
+/* histsearch.c */
+extern int _hs_history_patsearch PARAMS((const char *, int, int));
+
 #endif /* !_HISTLIB_H_ */
index 129c57a3080c545eb6ee5c79d74fac948241b623..67158b14bc711b73462dca023f69873bde271459 100644 (file)
@@ -1,6 +1,6 @@
 /* history.c -- standalone history library */
 
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -97,7 +97,7 @@ int history_base = 1;
 
 /* Return the current HISTORY_STATE of the history. */
 HISTORY_STATE *
-history_get_history_state ()
+history_get_history_state (void)
 {
   HISTORY_STATE *state;
 
@@ -115,8 +115,7 @@ history_get_history_state ()
 
 /* Set the state of the current history array to STATE. */
 void
-history_set_history_state (state)
-     HISTORY_STATE *state;
+history_set_history_state (HISTORY_STATE *state)
 {
   the_history = state->entries;
   history_offset = state->offset;
@@ -129,7 +128,7 @@ history_set_history_state (state)
 /* Begin a session in which the history functions might be used.  This
    initializes interactive variables. */
 void
-using_history ()
+using_history (void)
 {
   history_offset = history_length;
 }
@@ -138,7 +137,7 @@ using_history ()
    This just adds up the lengths of the_history->lines and the associated
    timestamps. */
 int
-history_total_bytes ()
+history_total_bytes (void)
 {
   register int i, result;
 
@@ -151,7 +150,7 @@ history_total_bytes ()
 /* Returns the magic number which says what history element we are
    looking at now.  In this implementation, it returns history_offset. */
 int
-where_history ()
+where_history (void)
 {
   return (history_offset);
 }
@@ -159,8 +158,7 @@ where_history ()
 /* Make the current history item be the one at POS, an absolute index.
    Returns zero if POS is out of range, else non-zero. */
 int
-history_set_pos (pos)
-     int pos;
+history_set_pos (int pos)
 {
   if (pos > history_length || pos < 0 || !the_history)
     return (0);
@@ -172,7 +170,7 @@ history_set_pos (pos)
    is the actual array of data, and could be bashed or made corrupt easily.
    The array is terminated with a NULL pointer. */
 HIST_ENTRY **
-history_list ()
+history_list (void)
 {
   return (the_history);
 }
@@ -180,7 +178,7 @@ history_list ()
 /* Return the history entry at the current position, as determined by
    history_offset.  If there is no entry there, return a NULL pointer. */
 HIST_ENTRY *
-current_history ()
+current_history (void)
 {
   return ((history_offset == history_length) || the_history == 0)
                ? (HIST_ENTRY *)NULL
@@ -191,7 +189,7 @@ current_history ()
    a pointer to that entry.  If there is no previous entry then return
    a NULL pointer. */
 HIST_ENTRY *
-previous_history ()
+previous_history (void)
 {
   return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL;
 }
@@ -200,7 +198,7 @@ previous_history ()
    a pointer to that entry.  If there is no next entry then return a
    NULL pointer. */
 HIST_ENTRY *
-next_history ()
+next_history (void)
 {
   return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset];
 }
@@ -208,8 +206,7 @@ next_history ()
 /* Return the history entry which is logically at OFFSET in the history array.
    OFFSET is relative to history_base. */
 HIST_ENTRY *
-history_get (offset)
-     int offset;
+history_get (int offset)
 {
   int local_index;
 
@@ -220,9 +217,7 @@ history_get (offset)
 }
 
 HIST_ENTRY *
-alloc_history_entry (string, ts)
-     char *string;
-     char *ts;
+alloc_history_entry (char *string, char *ts)
 {
   HIST_ENTRY *temp;
 
@@ -236,8 +231,7 @@ alloc_history_entry (string, ts)
 }
 
 time_t
-history_get_time (hist)
-     HIST_ENTRY *hist;
+history_get_time (HIST_ENTRY *hist)
 {
   char *ts;
   time_t t;
@@ -255,7 +249,7 @@ history_get_time (hist)
 }
 
 static char *
-hist_inittime ()
+hist_inittime (void)
 {
   time_t t;
   char ts[64], *ret;
@@ -275,8 +269,7 @@ hist_inittime ()
 /* Place STRING at the end of the history list.  The data field
    is  set to NULL. */
 void
-add_history (string)
-     const char *string;
+add_history (const char *string)
 {
   HIST_ENTRY *temp;
   int new_length;
@@ -335,8 +328,7 @@ add_history (string)
 
 /* Change the time stamp of the most recent history entry to STRING. */
 void
-add_history_time (string)
-     const char *string;
+add_history_time (const char *string)
 {
   HIST_ENTRY *hs;
 
@@ -350,8 +342,7 @@ add_history_time (string)
 /* Free HIST and return the data so the calling application can free it
    if necessary and desired. */
 histdata_t
-free_history_entry (hist)
-     HIST_ENTRY *hist;
+free_history_entry (HIST_ENTRY *hist)
 {
   histdata_t x;
 
@@ -365,8 +356,7 @@ free_history_entry (hist)
 }
 
 HIST_ENTRY *
-copy_history_entry (hist)
-     HIST_ENTRY *hist;
+copy_history_entry (HIST_ENTRY *hist)
 {
   HIST_ENTRY *ret;
   char *ts;
@@ -388,10 +378,7 @@ copy_history_entry (hist)
    the old entry so you can dispose of the data.  In the case of an
    invalid WHICH, a NULL pointer is returned. */
 HIST_ENTRY *
-replace_history_entry (which, line, data)
-     int which;
-     const char *line;
-     histdata_t data;
+replace_history_entry (int which, const char *line, histdata_t data)
 {
   HIST_ENTRY *temp, *old_value;
 
@@ -413,17 +400,26 @@ replace_history_entry (which, line, data)
    end of the current line first.  This can be used to construct multi-line
    history entries while reading lines from the history file. */
 void
-_hs_append_history_line (which, line)
-     int which;
-     const char *line;
+_hs_append_history_line (int which, const char *line)
 {
   HIST_ENTRY *hent;
-  size_t newlen, curlen;
+  size_t newlen, curlen, minlen;
   char *newline;
 
   hent = the_history[which];
   curlen = strlen (hent->line);
-  newlen = curlen + strlen (line) + 2;
+  minlen = curlen + strlen (line) + 2; /* min space needed */
+  if (curlen > 256)            /* XXX - for now */
+    {
+      newlen = 512;            /* now realloc in powers of 2 */
+      /* we recalcluate every time; the operations are cheap */
+      while (newlen < minlen)
+       newlen <<= 1;
+    }
+  else
+    newlen = minlen;
+  /* Assume that realloc returns the same pointer and doesn't try a new
+     alloc/copy if the new size is the same as the one last passed. */
   newline = realloc (hent->line, newlen);
   if (newline)
     {
@@ -440,9 +436,7 @@ _hs_append_history_line (which, line)
    WHICH >= 0 means to replace that particular history entry's data, as
    long as it matches OLD. */
 void
-_hs_replace_history_data (which, old, new)
-     int which;
-     histdata_t *old, *new;
+_hs_replace_history_data (int which, histdata_t *old, histdata_t *new)
 {
   HIST_ENTRY *entry;
   register int i, last;
@@ -482,29 +476,76 @@ _hs_replace_history_data (which, old, new)
    element is returned to you so you can free the line, data,
    and containing structure. */
 HIST_ENTRY *
-remove_history (which)
-     int which;
+remove_history (int which)
 {
   HIST_ENTRY *return_value;
   register int i;
+#if 1
+  int nentries;
+  HIST_ENTRY **start, **end;
+#endif
 
   if (which < 0 || which >= history_length || history_length ==  0 || the_history == 0)
     return ((HIST_ENTRY *)NULL);
 
   return_value = the_history[which];
 
+#if 1
+  /* Copy the rest of the entries, moving down one slot.  Copy includes
+     trailing NULL.  */
+  nentries = history_length - which;
+  start = the_history + which;
+  end = start + 1;
+  memmove (start, end, nentries * sizeof (HIST_ENTRY *));
+#else
   for (i = which; i < history_length; i++)
     the_history[i] = the_history[i + 1];
+#endif
 
   history_length--;
 
   return (return_value);
 }
 
+HIST_ENTRY **
+remove_history_range (int first, int last)
+{
+  HIST_ENTRY **return_value;
+  register int i;
+  int nentries;
+  HIST_ENTRY **start, **end;
+
+  if (the_history == 0 || history_length == 0)
+    return ((HIST_ENTRY **)NULL);
+  if (first < 0 || first >= history_length || last < 0 || last >= history_length)
+    return ((HIST_ENTRY **)NULL);
+  if (first > last)
+    return (HIST_ENTRY **)NULL;
+
+  nentries = last - first + 1;
+  return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *));
+  if (return_value == 0)
+    return return_value;
+
+  /* Return all the deleted entries in a list */
+  for (i = first ; i <= last; i++)
+    return_value[i - first] = the_history[i];
+  return_value[i - first] = (HIST_ENTRY *)NULL;
+
+  /* Copy the rest of the entries, moving down NENTRIES slots.  Copy includes
+     trailing NULL.  */
+  start = the_history + first;
+  end = the_history + last + 1;
+  memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *));
+
+  history_length -= nentries;
+
+  return (return_value);
+}
+
 /* Stifle the history list, remembering only MAX number of lines. */
 void
-stifle_history (max)
-     int max;
+stifle_history (int max)
 {
   register int i, j;
 
@@ -532,7 +573,7 @@ stifle_history (max)
    number of history entries.  The value is positive if the history
    was stifled, negative if it wasn't. */
 int
-unstifle_history ()
+unstifle_history (void)
 {
   if (history_stifled)
     {
@@ -544,13 +585,13 @@ unstifle_history ()
 }
 
 int
-history_is_stifled ()
+history_is_stifled (void)
 {
   return (history_stifled);
 }
 
 void
-clear_history ()
+clear_history (void)
 {
   register int i;
 
@@ -562,4 +603,5 @@ clear_history ()
     }
 
   history_offset = history_length = 0;
+  history_base = 1;            /* reset history base to default */
 }
index 8ce7c805d168f88e77e6d7be14aaea6ada69e981..cc3de29a64231d083d7b282e2eb247d692dbe521 100644 (file)
@@ -86,11 +86,13 @@ extern void add_history PARAMS((const char *));
    STRING. */
 extern void add_history_time PARAMS((const char *));
 
-/* A reasonably useless function, only here for completeness.  WHICH
-   is the magic number that tells us which element to delete.  The
-   elements are numbered from 0. */
+/* Remove an entry from the history list.  WHICH is the magic number that
+   tells us which element to delete.  The elements are numbered from 0. */
 extern HIST_ENTRY *remove_history PARAMS((int));
 
+/* Remove a set of entries from the history list: FIRST to LAST, inclusive */
+extern HIST_ENTRY **remove_history_range PARAMS((int, int));
+
 /* Allocate a history entry consisting of STRING and TIMESTAMP and return
    a pointer to it. */
 extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *));
@@ -259,7 +261,9 @@ extern char *history_word_delimiters;
 extern char history_comment_char;
 extern char *history_no_expand_chars;
 extern char *history_search_delimiter_chars;
+
 extern int history_quotes_inhibit_expansion;
+extern int history_quoting_state;
 
 extern int history_write_timestamps;
 
index 1ad55d22d3010d1a74c963addd46d5d9de0b0c78..7a426c96781429785f1b44ad3241da43e63df545 100644 (file)
@@ -1,6 +1,6 @@
 /* histsearch.c -- searching the history list. */
 
-/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
 #  include <unistd.h>
 #endif
 
+#if defined (HAVE_FNMATCH)
+#  include <fnmatch.h>
+#endif
+
 #include "history.h"
 #include "histlib.h"
+#include "xmalloc.h"
 
 /* The list of alternate characters that can delimit a history search
    string. */
@@ -59,18 +64,22 @@ static int history_search_internal PARAMS((const char *, int, int));
    returned. */
 
 static int
-history_search_internal (string, direction, anchored)
-     const char *string;
-     int direction, anchored;
+history_search_internal (const char *string, int direction, int flags)
 {
   register int i, reverse;
   register char *line;
   register int line_index;
-  int string_len;
+  int string_len, anchored, patsearch;
   HIST_ENTRY **the_history;    /* local */
 
   i = history_offset;
   reverse = (direction < 0);
+  anchored = (flags & ANCHORED_SEARCH);
+#if defined (HAVE_FNMATCH)
+  patsearch = (flags & PATTERN_SEARCH);
+#else
+  patsearch = 0;
+#endif
 
   /* Take care of trivial cases first. */
   if (string == 0 || *string == '\0')
@@ -98,7 +107,7 @@ history_search_internal (string, direction, anchored)
       line_index = strlen (line);
 
       /* If STRING is longer than line, no match. */
-      if (string_len > line_index)
+      if (patsearch == 0 && (string_len > line_index))
        {
          NEXT_LINE ();
          continue;
@@ -107,6 +116,17 @@ history_search_internal (string, direction, anchored)
       /* Handle anchored searches first. */
       if (anchored == ANCHORED_SEARCH)
        {
+#if defined (HAVE_FNMATCH)
+         if (patsearch)
+           {
+             if (fnmatch (string, line, 0) == 0)
+               {
+                 history_offset = i;
+                 return (0);
+               }
+           }
+         else
+#endif
          if (STREQN (string, line, string_len))
            {
              history_offset = i;
@@ -120,10 +140,21 @@ history_search_internal (string, direction, anchored)
       /* Do substring search. */
       if (reverse)
        {
-         line_index -= string_len;
+         line_index -= (patsearch == 0) ? string_len : 1;
 
          while (line_index >= 0)
            {
+#if defined (HAVE_FNMATCH)
+             if (patsearch)
+               {
+                 if (fnmatch (string, line + line_index, 0) == 0)
+                   {
+                     history_offset = i;
+                     return (line_index);
+                   }
+               }
+             else
+#endif
              if (STREQN (string, line + line_index, string_len))
                {
                  history_offset = i;
@@ -141,6 +172,17 @@ history_search_internal (string, direction, anchored)
 
          while (line_index < limit)
            {
+#if defined (HAVE_FNMATCH)
+             if (patsearch)
+               {
+                 if (fnmatch (string, line + line_index, 0) == 0)
+                   {
+                     history_offset = i;
+                     return (line_index);
+                   }
+               }
+             else
+#endif
              if (STREQN (string, line + line_index, string_len))
                {
                  history_offset = i;
@@ -153,20 +195,73 @@ history_search_internal (string, direction, anchored)
     }
 }
 
+int
+_hs_history_patsearch (const char *string, int direction, int flags)
+{
+  char *pat;
+  size_t len, start;
+  int ret, unescaped_backslash;
+
+#if defined (HAVE_FNMATCH)
+  /* Assume that the string passed does not have a leading `^' and any
+     anchored search request is captured in FLAGS */
+  len = strlen (string);
+  ret = len - 1;
+  /* fnmatch is required to reject a pattern that ends with an unescaped
+     backslash */
+  if (unescaped_backslash = (string[ret] == '\\'))
+    {
+      while (ret > 0 && string[--ret] == '\\')
+       unescaped_backslash = 1 - unescaped_backslash;
+    }
+  if (unescaped_backslash)
+    return -1;
+  pat = (char *)xmalloc (len + 3);
+  /* If the search string is not anchored, we'll be calling fnmatch (assuming
+     we have it). Prefix a `*' to the front of the search string so we search
+     anywhere in the line. */
+  if ((flags & ANCHORED_SEARCH) == 0 && string[0] != '*')
+    {
+      pat[0] = '*';
+      start = 1;
+      len++;
+    }
+  else
+    {
+      start = 0;
+    }
+
+  /* Attempt to reduce the number of searches by tacking a `*' onto the end
+     of a pattern that doesn't have one.  Assume a pattern that ends in a
+     backslash contains an even number of trailing backslashes; we check
+     above */
+  strcpy (pat + start, string);
+  if (pat[len - 1] != '*')
+    {
+      pat[len] = '*';          /* XXX */
+      pat[len+1] = '\0';
+    }
+#else
+  pat = string;
+#endif
+
+  ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH);
+
+  if (pat != string)
+    free (pat);
+  return ret;
+}
+       
 /* Do a non-anchored search for STRING through the history in DIRECTION. */
 int
-history_search (string, direction)
-     const char *string;
-     int direction;
+history_search (const char *string, int direction)
 {
   return (history_search_internal (string, direction, NON_ANCHORED_SEARCH));
 }
 
 /* Do an anchored search for string through the history in DIRECTION. */
 int
-history_search_prefix (string, direction)
-     const char *string;
-     int direction;
+history_search_prefix (const char *string, int direction)
 {
   return (history_search_internal (string, direction, ANCHORED_SEARCH));
 }
@@ -175,9 +270,7 @@ history_search_prefix (string, direction)
    backwards.  POS is an absolute index into the history list at
    which point to begin searching. */
 int
-history_search_pos (string, dir, pos)
-     const char *string;
-     int dir, pos;
+history_search_pos (const char *string, int dir, int pos)
 {
   int ret, old;
 
index 286897d7798feeca3f606ea7799d794a9bdb09af..d4d57a810a40b33e16bf42aa8e6953f64ccfd325 100644 (file)
@@ -1,6 +1,6 @@
 /* input.c -- character input functions for readline. */
 
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -76,6 +76,10 @@ extern int errno;
 #  define O_NDELAY O_NONBLOCK  /* Posix style */
 #endif
 
+#if defined (HAVE_PSELECT)
+extern sigset_t _rl_orig_sigset;
+#endif
+
 /* Non-null means it is a pointer to a function to run while waiting for
    character input. */
 rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;
@@ -99,13 +103,28 @@ static int rl_gather_tyi PARAMS((void));
    device, so we need to perform additional checks. */
 #if defined (_WIN32) && !defined (__CYGWIN__)
 #include <io.h>
+#include <conio.h>
 #define WIN32_LEAN_AND_MEAN 1
 #include <windows.h>
 
 int
 win32_isatty (int fd)
 {
-  return (_isatty (fd) ? ((((long) (HANDLE) _get_osfhandle (fd)) & 3) == 3) : 0);
+  if (_isatty(fd))
+    {
+      HANDLE h;
+      DWORD ignored;
+
+      if ((h = (HANDLE) _get_osfhandle (fd)) == INVALID_HANDLE_VALUE)
+       {
+         errno = EBADF;
+         return 0;
+       }
+      if (GetConsoleMode (h, &ignored) != 0)
+       return 1;
+    }
+  errno = ENOTTY;
+  return 0;
 }
 
 #define isatty(x)      win32_isatty(x)
@@ -124,13 +143,13 @@ static int ibuffer_len = sizeof (ibuffer) - 1;
 #define any_typein (push_index != pop_index)
 
 int
-_rl_any_typein ()
+_rl_any_typein (void)
 {
   return any_typein;
 }
 
 int
-_rl_pushed_input_available ()
+_rl_pushed_input_available (void)
 {
   return (push_index != pop_index);
 }
@@ -138,7 +157,7 @@ _rl_pushed_input_available ()
 /* Return the amount of space available in the buffer for stuffing
    characters. */
 static int
-ibuffer_space ()
+ibuffer_space (void)
 {
   if (pop_index > push_index)
     return (pop_index - push_index - 1);
@@ -150,8 +169,7 @@ ibuffer_space ()
    Return the key in KEY.
    Result is non-zero if there was a key, or 0 if there wasn't. */
 static int
-rl_get_char (key)
-     int *key;
+rl_get_char (int *key)
 {
   if (push_index == pop_index)
     return (0);
@@ -171,8 +189,7 @@ rl_get_char (key)
    Returns non-zero if successful, zero if there is
    no space left in the buffer. */
 int
-_rl_unget_char (key)
-     int key;
+_rl_unget_char (int key)
 {
   if (ibuffer_space ())
     {
@@ -189,7 +206,7 @@ _rl_unget_char (key)
    IBUFFER.  Otherwise, just return.  Returns number of characters read
    (0 if none available) and -1 on error (EIO). */
 static int
-rl_gather_tyi ()
+rl_gather_tyi (void)
 {
   int tty;
   register int tem, result;
@@ -292,8 +309,7 @@ rl_gather_tyi ()
 }
 
 int
-rl_set_keyboard_input_timeout (u)
-     int u;
+rl_set_keyboard_input_timeout (int u)
 {
   int o;
 
@@ -310,7 +326,7 @@ rl_set_keyboard_input_timeout (u)
    the user, it should use _rl_input_queued(timeout_value_in_microseconds)
    instead. */
 int
-_rl_input_available ()
+_rl_input_available (void)
 {
 #if defined(HAVE_SELECT)
   fd_set readfds, exceptfds;
@@ -352,8 +368,7 @@ _rl_input_available ()
 }
 
 int
-_rl_input_queued (t)
-     int t;
+_rl_input_queued (int t)
 {
   int old_timeout, r;
 
@@ -364,8 +379,7 @@ _rl_input_queued (t)
 }
 
 void
-_rl_insert_typein (c)
-     int c;     
+_rl_insert_typein (int c)
 {      
   int key, t, i;
   char *string;
@@ -390,8 +404,7 @@ _rl_insert_typein (c)
 /* Add KEY to the buffer of characters to be read.  Returns 1 if the
    character was stuffed correctly; 0 otherwise. */
 int
-rl_stuff_char (key)
-     int key;
+rl_stuff_char (int key)
 {
   if (ibuffer_space () == 0)
     return 0;
@@ -415,8 +428,7 @@ rl_stuff_char (key)
 
 /* Make C be the next command to be executed. */
 int
-rl_execute_next (c)
-     int c;
+rl_execute_next (int c)
 {
   rl_pending_input = c;
   RL_SETSTATE (RL_STATE_INPUTPENDING);
@@ -425,7 +437,7 @@ rl_execute_next (c)
 
 /* Clear any pending input pushed with rl_execute_next() */
 int
-rl_clear_pending_input ()
+rl_clear_pending_input (void)
 {
   rl_pending_input = 0;
   RL_UNSETSTATE (RL_STATE_INPUTPENDING);
@@ -440,20 +452,20 @@ rl_clear_pending_input ()
 
 /* Read a key, including pending input. */
 int
-rl_read_key ()
+rl_read_key (void)
 {
   int c, r;
 
   if (rl_pending_input)
     {
-      c = rl_pending_input;
+      c = rl_pending_input;    /* XXX - cast to unsigned char if > 0? */
       rl_clear_pending_input ();
     }
   else
     {
       /* If input is coming from a macro, then use that. */
       if (c = _rl_next_macro_key ())
-       return (c);
+       return ((unsigned char)c);
 
       /* If the user has an event function, then call it periodically. */
       if (rl_event_hook)
@@ -490,8 +502,7 @@ rl_read_key ()
 }
 
 int
-rl_getc (stream)
-     FILE *stream;
+rl_getc (FILE *stream)
 {
   int result;
   unsigned char c;
@@ -512,10 +523,15 @@ rl_getc (stream)
 #endif
       result = 0;
 #if defined (HAVE_PSELECT)
-      sigemptyset (&empty_set);
       FD_ZERO (&readfds);
       FD_SET (fileno (stream), &readfds);
+#  if defined (HANDLE_SIGNALS)
+      result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset);
+#  else
+      sigemptyset (&empty_set);
+      sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set);
       result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set);
+#  endif /* HANDLE_SIGNALS */
 #endif
       if (result >= 0)
        result = read (fileno (stream), &c, sizeof (unsigned char));
@@ -602,9 +618,7 @@ handle_error:
 #if defined (HANDLE_MULTIBYTE)
 /* read multibyte char */
 int
-_rl_read_mbchar (mbchar, size)
-     char *mbchar;
-     int size;
+_rl_read_mbchar (char *mbchar, int size)
 {
   int mb_len, c;
   size_t mbchar_bytes_length;
@@ -653,12 +667,9 @@ _rl_read_mbchar (mbchar, size)
    may be FIRST.  Used by the search functions, among others.  Very similar
    to _rl_read_mbchar. */
 int
-_rl_read_mbstring (first, mb, mlen)
-     int first;
-     char *mb;
-     int mlen;
+_rl_read_mbstring (int first, char *mb, int mlen)
 {
-  int i, c;
+  int i, c, n;
   mbstate_t ps;
 
   c = first;
@@ -667,7 +678,8 @@ _rl_read_mbstring (first, mb, mlen)
     {
       mb[i] = (char)c;
       memset (&ps, 0, sizeof (mbstate_t));
-      if (_rl_get_char_len (mb, &ps) == -2)
+      n = _rl_get_char_len (mb, &ps);
+      if (n == -2)
        {
          /* Read more for multibyte character */
          RL_SETSTATE (RL_STATE_MOREINPUT);
index 819fcbce45fc22bb37495604e762317cf133c2c3..d6c59041772cdb539db2076c7615328d47bbcc9b 100644 (file)
@@ -6,7 +6,7 @@
 /*                                                                 */
 /* **************************************************************** */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -78,8 +78,7 @@ static int last_isearch_string_len;
 static char * const default_isearch_terminators = "\033\012";
 
 _rl_search_cxt *
-_rl_scxt_alloc (type, flags)
-     int type, flags;
+_rl_scxt_alloc (int type, int flags)
 {
   _rl_search_cxt *cxt;
 
@@ -120,9 +119,7 @@ _rl_scxt_alloc (type, flags)
 }
 
 void
-_rl_scxt_dispose (cxt, flags)
-     _rl_search_cxt *cxt;
-     int flags;
+_rl_scxt_dispose (_rl_search_cxt *cxt, int flags)
 {
   FREE (cxt->search_string);
   FREE (cxt->allocated_line);
@@ -134,8 +131,7 @@ _rl_scxt_dispose (cxt, flags)
 /* Search backwards through the history looking for a string which is typed
    interactively.  Start with the current line. */
 int
-rl_reverse_search_history (sign, key)
-     int sign, key;
+rl_reverse_search_history (int sign, int key)
 {
   return (rl_search_history (-sign, key));
 }
@@ -143,8 +139,7 @@ rl_reverse_search_history (sign, key)
 /* Search forwards through the history looking for a string which is typed
    interactively.  Start with the current line. */
 int
-rl_forward_search_history (sign, key)
-     int sign, key;
+rl_forward_search_history (int sign, int key)
 {
   return (rl_search_history (sign, key));
 }
@@ -155,9 +150,7 @@ rl_forward_search_history (sign, key)
    WHERE is the history list number of the current line.  If it is
    -1, then this line is the starting one. */
 static void
-rl_display_search (search_string, flags, where)
-     char *search_string;
-     int flags, where;
+rl_display_search (char *search_string, int flags, int where)
 {
   char *message;
   int msglen, searchlen;
@@ -206,8 +199,7 @@ rl_display_search (search_string, flags, where)
 }
 
 static _rl_search_cxt *
-_rl_isearch_init (direction)
-     int direction;
+_rl_isearch_init (int direction)
 {
   _rl_search_cxt *cxt;
   register int i;
@@ -267,11 +259,10 @@ _rl_isearch_init (direction)
 }
 
 static void
-_rl_isearch_fini (cxt)
-     _rl_search_cxt *cxt;
+_rl_isearch_fini (_rl_search_cxt *cxt)
 {
   /* First put back the original state. */
-  strcpy (rl_line_buffer, cxt->lines[cxt->save_line]);
+  rl_replace_line (cxt->lines[cxt->save_line], 0);
 
   rl_restore_prompt ();
 
@@ -301,13 +292,13 @@ _rl_isearch_fini (cxt)
   rl_point = cxt->sline_index;
   /* Don't worry about where to put the mark here; rl_get_previous_history
      and rl_get_next_history take care of it. */
+  _rl_fix_point (0);
 
   rl_clear_message ();
 }
 
 int
-_rl_search_getchar (cxt)
-     _rl_search_cxt *cxt;
+_rl_search_getchar (_rl_search_cxt *cxt)
 {
   int c;
 
@@ -334,11 +325,12 @@ _rl_search_getchar (cxt)
    -1 if the caller should just free the context and return, 0 if we should
    break out of the loop, and 1 if we should continue to read characters. */
 int
-_rl_isearch_dispatch (cxt, c)
-     _rl_search_cxt *cxt;
-     int c;
+_rl_isearch_dispatch (_rl_search_cxt *cxt, int c)
 {
-  int n, wstart, wlen, limit, cval;
+  int n, wstart, wlen, limit, cval, incr;
+  char *paste;
+  size_t pastelen;
+  int j;
   rl_command_func_t *f;
 
   f = (rl_command_func_t *)NULL;
@@ -409,6 +401,8 @@ add_character:
        cxt->lastc = -5;
       else if (c == CTRL ('Y') || f == rl_yank)        /* XXX */
        cxt->lastc = -6;
+      else if (f == rl_bracketed_paste_begin)
+       cxt->lastc = -7;
     }
 
   /* If we changed the keymap earlier while translating a key sequence into
@@ -527,7 +521,7 @@ add_character:
            }
          return (1);
        }
-      else if (cxt->sflags & SF_REVERSE)
+      else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0)
        cxt->sline_index--;
       else if (cxt->sline_index != cxt->sline_len)
        cxt->sline_index++;
@@ -631,22 +625,44 @@ add_character:
       cxt->search_string[cxt->search_string_index] = '\0';
       break;
 
+    case -7:   /* bracketed paste */
+      paste = _rl_bracketed_text (&pastelen);
+      if (paste == 0 || *paste == 0)
+       {
+         free (paste);
+         break;
+       }
+      if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size)
+       {
+         cxt->search_string_size += pastelen + 2;
+         cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
+       }
+      strcpy (cxt->search_string + cxt->search_string_index, paste);
+      cxt->search_string_index += pastelen;
+      free (paste);
+      break;
+
     /* Add character to search string and continue search. */
     default:
-      if (cxt->search_string_index + 2 >= cxt->search_string_size)
+#if defined (HANDLE_MULTIBYTE)
+      wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb);
+#else
+      wlen = 1;
+#endif
+      if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size)
        {
-         cxt->search_string_size += 128;
+         cxt->search_string_size += 128;       /* 128 much greater than MB_CUR_MAX */
          cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
        }
 #if defined (HANDLE_MULTIBYTE)
       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
        {
-         int j, l;
+         int j;
 
          if (cxt->mb[0] == 0 || cxt->mb[1] == 0)
            cxt->search_string[cxt->search_string_index++] = cxt->mb[0];
          else
-           for (j = 0, l = RL_STRLEN (cxt->mb); j < l; )
+           for (j = 0; j < wlen; )
              cxt->search_string[cxt->search_string_index++] = cxt->mb[j++];
        }
       else
@@ -676,6 +692,12 @@ add_character:
            }
          else
            cxt->sline_index += cxt->direction;
+
+         if (cxt->sline_index < 0)
+           {
+             cxt->sline_index = 0;
+             break;
+           }
        }
       if (cxt->sflags & SF_FOUND)
        break;
@@ -703,7 +725,12 @@ add_character:
             (cxt->search_string_index > cxt->sline_len));
 
       if (cxt->sflags & SF_FAILED)
-       break;
+       {
+         /* XXX - reset sline_index if < 0 */
+         if (cxt->sline_index < 0)
+           cxt->sline_index = 0;
+         break;
+       }
 
       /* Now set up the line for searching... */
       cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0;
@@ -734,9 +761,7 @@ add_character:
 }
 
 int
-_rl_isearch_cleanup (cxt, r)
-     _rl_search_cxt *cxt;
-     int r;
+_rl_isearch_cleanup (_rl_search_cxt *cxt, int r)
 {
   if (r >= 0)
     _rl_isearch_fini (cxt);
@@ -753,8 +778,7 @@ _rl_isearch_cleanup (cxt, r)
    DIRECTION is which direction to search; >= 0 means forward, < 0 means
    backwards. */
 static int
-rl_search_history (direction, invoking_key)
-     int direction, invoking_key;
+rl_search_history (int direction, int invoking_key)
 {
   _rl_search_cxt *cxt;         /* local for now, but saved globally */
   int c, r;
@@ -792,8 +816,7 @@ rl_search_history (direction, invoking_key)
    If _rl_isearch_dispatch finishes searching, this function is responsible
    for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */
 int
-_rl_isearch_callback (cxt)
-     _rl_search_cxt *cxt;
+_rl_isearch_callback (_rl_search_cxt *cxt)
 {
   int c, r;
 
index 58661e298962fa457ee79b3908c0ec483bcd0a08..4ade30bcd0365771de5cfa92a3b45839fed989d1 100644 (file)
@@ -1,6 +1,6 @@
 /* keymaps.c -- Functions and keymaps for the GNU Readline library. */
 
-/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -54,7 +54,7 @@
 /* Return a new, empty keymap.
    Free it with free() when you are done. */
 Keymap
-rl_make_bare_keymap ()
+rl_make_bare_keymap (void)
 {
   register int i;
   Keymap keymap;
@@ -77,11 +77,25 @@ rl_make_bare_keymap ()
   return (keymap);
 }
 
+/* A convenience function that returns 1 if there are no keys bound to
+   functions in KEYMAP */
+int
+rl_empty_keymap (Keymap keymap)
+{
+  int i;
+
+  for (i = 0; i < ANYOTHERKEY; i++)
+    {
+      if (keymap[i].type != ISFUNC || keymap[i].function)
+       return 0;
+    }
+  return 1;
+}
+
 /* Return a new keymap which is a copy of MAP.  Just copies pointers, does
    not copy text of macros or descend into child keymaps. */
 Keymap
-rl_copy_keymap (map)
-     Keymap map;
+rl_copy_keymap (Keymap map)
 {
   register int i;
   Keymap temp;
@@ -99,7 +113,7 @@ rl_copy_keymap (map)
    the uppercase Meta characters bound to run their lowercase equivalents,
    and the Meta digits bound to produce numeric arguments. */
 Keymap
-rl_make_keymap ()
+rl_make_keymap (void)
 {
   register int i;
   Keymap newmap;
@@ -125,8 +139,7 @@ rl_make_keymap ()
 
 /* Free the storage associated with MAP. */
 void
-rl_discard_keymap (map)
-     Keymap map;
+rl_discard_keymap (Keymap map)
 {
   int i;
 
@@ -154,8 +167,7 @@ rl_discard_keymap (map)
 
 /* Convenience function that discards, then frees, MAP. */
 void
-rl_free_keymap (map)
-     Keymap map;
+rl_free_keymap (Keymap map)
 {
   rl_discard_keymap (map);
   xfree ((char *)map);
index af8d5d997d4b7de21ebc4f3bc13c3ea0169a6f31..1fa853d8c1e6a68a9e06d79c880e7d246759ced6 100644 (file)
@@ -90,6 +90,9 @@ extern Keymap rl_get_keymap PARAMS((void));
 /* Set the current keymap to MAP. */
 extern void rl_set_keymap PARAMS((Keymap));
 
+/* Set the name of MAP to NAME */
+extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+
 #ifdef __cplusplus
 }
 #endif
index 696f1938f8e81c10c418f384f26f85f922cbd0d1..cf8ca93243b8b282f70c2f0b3ea7657e34c1b49c 100644 (file)
@@ -1,6 +1,6 @@
 /* kill.c -- kill ring management. */
 
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -78,8 +78,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int));
 /* How to say that you only want to save a certain amount
    of kill material. */
 int
-rl_set_retained_kills (num)
-     int num;
+rl_set_retained_kills (int num)
 {
   return 0;
 }
@@ -89,9 +88,7 @@ rl_set_retained_kills (num)
    non-zero, and the last command was a kill, the text is appended to the
    current kill ring slot, otherwise prepended. */
 static int
-_rl_copy_to_kill_ring (text, append)
-     char *text;
-     int append;
+_rl_copy_to_kill_ring (char *text, int append)
 {
   char *old, *new;
   int slot;
@@ -122,7 +119,7 @@ _rl_copy_to_kill_ring (text, append)
          else
            {
              slot = rl_kill_ring_length += 1;
-             rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *));
+             rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *));
            }
          rl_kill_ring[--slot] = (char *)NULL;
        }
@@ -131,7 +128,7 @@ _rl_copy_to_kill_ring (text, append)
     slot = rl_kill_ring_length - 1;
 
   /* If the last command was a kill, prepend or append. */
-  if (_rl_last_command_was_kill && rl_editing_mode != vi_mode)
+  if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode)
     {
       old = rl_kill_ring[slot];
       new = (char *)xmalloc (1 + strlen (old) + strlen (text));
@@ -163,8 +160,7 @@ _rl_copy_to_kill_ring (text, append)
    last command was not a kill command, then a new slot is made for
    this kill. */
 int
-rl_kill_text (from, to)
-     int from, to;
+rl_kill_text (int from, int to)
 {
   char *text;
 
@@ -198,8 +194,7 @@ rl_kill_text (from, to)
 
 /* Delete the word at point, saving the text in the kill ring. */
 int
-rl_kill_word (count, key)
-     int count, key;
+rl_kill_word (int count, int key)
 {
   int orig_point;
 
@@ -222,17 +217,16 @@ rl_kill_word (count, key)
 
 /* Rubout the word before point, placing it on the kill ring. */
 int
-rl_backward_kill_word (count, ignore)
-     int count, ignore;
+rl_backward_kill_word (int count, int key)
 {
   int orig_point;
 
   if (count < 0)
-    return (rl_kill_word (-count, ignore));
+    return (rl_kill_word (-count, key));
   else
     {
       orig_point = rl_point;
-      rl_backward_word (count, ignore);
+      rl_backward_word (count, key);
 
       if (rl_point != orig_point)
        rl_kill_text (orig_point, rl_point);
@@ -246,17 +240,16 @@ rl_backward_kill_word (count, ignore)
 /* Kill from here to the end of the line.  If DIRECTION is negative, kill
    back to the line start instead. */
 int
-rl_kill_line (direction, ignore)
-     int direction, ignore;
+rl_kill_line (int direction, int key)
 {
   int orig_point;
 
   if (direction < 0)
-    return (rl_backward_kill_line (1, ignore));
+    return (rl_backward_kill_line (1, key));
   else
     {
       orig_point = rl_point;
-      rl_end_of_line (1, ignore);
+      rl_end_of_line (1, key);
       if (orig_point != rl_point)
        rl_kill_text (orig_point, rl_point);
       rl_point = orig_point;
@@ -269,13 +262,12 @@ rl_kill_line (direction, ignore)
 /* Kill backwards to the start of the line.  If DIRECTION is negative, kill
    forwards to the line end instead. */
 int
-rl_backward_kill_line (direction, ignore)
-     int direction, ignore;
+rl_backward_kill_line (int direction, int key)
 {
   int orig_point;
 
   if (direction < 0)
-    return (rl_kill_line (1, ignore));
+    return (rl_kill_line (1, key));
   else
     {
       if (rl_point == 0)
@@ -283,7 +275,7 @@ rl_backward_kill_line (direction, ignore)
       else
        {
          orig_point = rl_point;
-         rl_beg_of_line (1, ignore);
+         rl_beg_of_line (1, key);
          if (rl_point != orig_point)
            rl_kill_text (orig_point, rl_point);
          if (rl_editing_mode == emacs_mode)
@@ -295,8 +287,7 @@ rl_backward_kill_line (direction, ignore)
 
 /* Kill the whole line, no matter where point is. */
 int
-rl_kill_full_line (count, ignore)
-     int count, ignore;
+rl_kill_full_line (int count, int key)
 {
   rl_begin_undo_group ();
   rl_point = 0;
@@ -313,8 +304,7 @@ rl_kill_full_line (count, ignore)
 /* This does what C-w does in Unix.  We can't prevent people from
    using behaviour that they expect. */
 int
-rl_unix_word_rubout (count, key)
-     int count, key;
+rl_unix_word_rubout (int count, int key)
 {
   int orig_point;
 
@@ -332,7 +322,7 @@ rl_unix_word_rubout (count, key)
            rl_point--;
 
          while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0))
-           rl_point--;
+           rl_point--;         /* XXX - multibyte? */
        }
 
       rl_kill_text (orig_point, rl_point);
@@ -346,8 +336,7 @@ rl_unix_word_rubout (count, key)
 /* This deletes one filename component in a Unix pathname.  That is, it
    deletes backward to directory separator (`/') or whitespace.  */
 int
-rl_unix_filename_rubout (count, key)
-     int count, key;
+rl_unix_filename_rubout (int count, int key)
 {
   int orig_point, c;
 
@@ -370,7 +359,7 @@ rl_unix_filename_rubout (count, key)
 
          while (rl_point && (whitespace (c) == 0) && c != '/')
            {
-             rl_point--;
+             rl_point--;       /* XXX - multibyte? */
              c = rl_line_buffer[rl_point - 1];
            }
        }
@@ -390,8 +379,7 @@ rl_unix_filename_rubout (count, key)
    into the line at all, and if you aren't, then you know what you are
    doing. */
 int
-rl_unix_line_discard (count, key)
-     int count, key;
+rl_unix_line_discard (int count, int key)
 {
   if (rl_point == 0)
     rl_ding ();
@@ -408,8 +396,7 @@ rl_unix_line_discard (count, key)
 /* Copy the text in the `region' to the kill ring.  If DELETE is non-zero,
    delete the text from the line as well. */
 static int
-region_kill_internal (delete)
-     int delete;
+region_kill_internal (int delete)
 {
   char *text;
 
@@ -427,16 +414,14 @@ region_kill_internal (delete)
 
 /* Copy the text in the region to the kill ring. */
 int
-rl_copy_region_to_kill (count, ignore)
-     int count, ignore;
+rl_copy_region_to_kill (int count, int key)
 {
   return (region_kill_internal (0));
 }
 
 /* Kill the text between the point and mark. */
 int
-rl_kill_region (count, ignore)
-     int count, ignore;
+rl_kill_region (int count, int key)
 {
   int r, npoint;
 
@@ -450,8 +435,7 @@ rl_kill_region (count, ignore)
 /* Copy COUNT words to the kill ring.  DIR says which direction we look
    to find the words. */
 static int
-_rl_copy_word_as_kill (count, dir)
-     int count, dir;
+_rl_copy_word_as_kill (int count, int dir)
 {
   int om, op, r;
 
@@ -479,8 +463,7 @@ _rl_copy_word_as_kill (count, dir)
 }
 
 int
-rl_copy_forward_word (count, key)
-     int count, key;
+rl_copy_forward_word (int count, int key)
 {
   if (count < 0)
     return (rl_copy_backward_word (-count, key));
@@ -489,8 +472,7 @@ rl_copy_forward_word (count, key)
 }
 
 int
-rl_copy_backward_word (count, key)
-     int count, key;
+rl_copy_backward_word (int count, int key)
 {
   if (count < 0)
     return (rl_copy_forward_word (-count, key));
@@ -500,8 +482,7 @@ rl_copy_backward_word (count, key)
   
 /* Yank back the last killed text.  This ignores arguments. */
 int
-rl_yank (count, ignore)
-     int count, ignore;
+rl_yank (int count, int key)
 {
   if (rl_kill_ring == 0)
     {
@@ -519,8 +500,7 @@ rl_yank (count, ignore)
    delete that text from the line, rotate the index down, and
    yank back some other text. */
 int
-rl_yank_pop (count, key)
-     int count, key;
+rl_yank_pop (int count, int key)
 {
   int l, n;
 
@@ -552,8 +532,7 @@ rl_yank_pop (count, key)
 
 #if defined (VI_MODE)
 int
-rl_vi_yank_pop (count, key)
-     int count, key;
+rl_vi_yank_pop (int count, int key)
 {
   int l, n;
 
@@ -587,8 +566,7 @@ rl_vi_yank_pop (count, key)
 /* Yank the COUNTh argument from the previous history line, skipping
    HISTORY_SKIP lines before looking for the `previous line'. */
 static int
-rl_yank_nth_arg_internal (count, ignore, history_skip)
-     int count, ignore, history_skip;
+rl_yank_nth_arg_internal (int count, int key, int history_skip)
 {
   register HIST_ENTRY *entry;
   char *arg;
@@ -629,7 +607,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
      inserts it right *after* rl_point. */
   if (rl_editing_mode == vi_mode)
     {
-      rl_vi_append_mode (1, ignore);
+      rl_vi_append_mode (1, key);
       rl_insert_text (" ");
     }
 #endif /* VI_MODE */
@@ -643,18 +621,16 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
 
 /* Yank the COUNTth argument from the previous history line. */
 int
-rl_yank_nth_arg (count, ignore)
-     int count, ignore;
+rl_yank_nth_arg (int count, int key)
 {
-  return (rl_yank_nth_arg_internal (count, ignore, 0));
+  return (rl_yank_nth_arg_internal (count, key, 0));
 }
 
 /* Yank the last argument from the previous history line.  This `knows'
    how rl_yank_nth_arg treats a count of `$'.  With an argument, this
    behaves the same as rl_yank_nth_arg. */
 int
-rl_yank_last_arg (count, key)
-     int count, key;
+rl_yank_last_arg (int count, int key)
 {
   static int history_skip = 0;
   static int explicit_arg_p = 0;
@@ -694,17 +670,16 @@ rl_yank_last_arg (count, key)
    `bracketed paste' sequence, read the rest of the pasted input until the
    closing sequence and insert the pasted text as a single unit without
    interpretation. */
-int
-rl_bracketed_paste_begin (count, key)
-     int count, key;
+char *
+_rl_bracketed_text (size_t *lenp)
 {
-  int retval, c;
+  int c;
   size_t len, cap;
   char *buf;
 
-  retval = 1;
   len = 0;
   buf = xmalloc (cap = 64);
+  buf[0] = '\0';
 
   RL_SETSTATE (RL_STATE_MOREINPUT);
   while ((c = rl_read_key ()) >= 0)
@@ -733,20 +708,33 @@ rl_bracketed_paste_begin (count, key)
       if (len == cap)
        buf = xrealloc (buf, cap + 1);
       buf[len] = '\0';
-      retval = rl_insert_text (buf);
     }
 
+  if (lenp)
+    *lenp = len;
+  return (buf);
+}
+
+int
+rl_bracketed_paste_begin (int count, int key)
+{
+  int retval, c;
+  size_t len, cap;
+  char *buf;
+
+  buf = _rl_bracketed_text (&len);
+  retval = rl_insert_text (buf) == len ? 0 : 1;
+
   xfree (buf);
   return (retval);
 }
 
-/* A special paste command for Windows users.. */
+/* A special paste command for Windows users. */
 #if defined (_WIN32)
 #include <windows.h>
 
 int
-rl_paste_from_clipboard (count, key)
-     int count, key;
+rl_paste_from_clipboard (int count, int key)
 {
   char *data, *ptr;
   int len;
index c7017cc6b3dab6303d9278031b557bcfd0862f02..92cc55c36dc001e78ddddd1e488dee0b1d42ab8a 100644 (file)
@@ -1,6 +1,6 @@
 /* macro.c -- keyboard macros for readline. */
 
-/* Copyright (C) 1994-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -49,6 +49,8 @@
 #include "rlprivate.h"
 #include "xmalloc.h"
 
+#define MAX_MACRO_LEVEL 16
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Hacking Keyboard Macros                     */
@@ -83,13 +85,24 @@ struct saved_macro {
 /* The list of saved macros. */
 static struct saved_macro *macro_list = (struct saved_macro *)NULL;
 
+static int macro_level = 0;
+
 /* Set up to read subsequent input from STRING.
    STRING is free ()'ed when we are done with it. */
 void
-_rl_with_macro_input (string)
-     char *string;
+_rl_with_macro_input (char *string)
 {
-  _rl_push_executing_macro ();
+  if (macro_level > MAX_MACRO_LEVEL)
+    {
+      _rl_errmsg ("maximum macro execution nesting level exceeded");
+      _rl_abort_internal ();
+      return;
+    }
+
+#if 0
+  if (rl_executing_macro)              /* XXX - later */
+#endif
+    _rl_push_executing_macro ();
   rl_executing_macro = string;
   executing_macro_index = 0;
   RL_SETSTATE(RL_STATE_MACROINPUT);
@@ -98,7 +111,7 @@ _rl_with_macro_input (string)
 /* Return the next character available from a macro, or 0 if
    there are no macro characters. */
 int
-_rl_next_macro_key ()
+_rl_next_macro_key (void)
 {
   int c;
 
@@ -117,12 +130,26 @@ _rl_next_macro_key ()
       _rl_pop_executing_macro ();
   return c;
 #else
+  /* XXX - consider doing the same as the callback code, just not testing
+     whether we're running in callback mode */
   return (rl_executing_macro[executing_macro_index++]);
 #endif
 }
 
 int
-_rl_prev_macro_key ()
+_rl_peek_macro_key (void)
+{
+  if (rl_executing_macro == 0)
+    return (0);
+  if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0))
+    return (0);
+  if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string)
+    return (macro_list->string[0]);
+  return (rl_executing_macro[executing_macro_index]);
+}
+
+int
+_rl_prev_macro_key (void)
 {
   if (rl_executing_macro == 0)
     return (0);
@@ -136,7 +163,7 @@ _rl_prev_macro_key ()
 
 /* Save the currently executing macro on a stack of saved macros. */
 void
-_rl_push_executing_macro ()
+_rl_push_executing_macro (void)
 {
   struct saved_macro *saver;
 
@@ -146,12 +173,14 @@ _rl_push_executing_macro ()
   saver->string = rl_executing_macro;
 
   macro_list = saver;
+
+  macro_level++;
 }
 
 /* Discard the current macro, replacing it with the one
    on the top of the stack of saved macros. */
 void
-_rl_pop_executing_macro ()
+_rl_pop_executing_macro (void)
 {
   struct saved_macro *macro;
 
@@ -168,14 +197,15 @@ _rl_pop_executing_macro ()
       xfree (macro);
     }
 
+  macro_level--;
+
   if (rl_executing_macro == 0)
     RL_UNSETSTATE(RL_STATE_MACROINPUT);
 }
 
 /* Add a character to the macro being built. */
 void
-_rl_add_macro_char (c)
-     int c;
+_rl_add_macro_char (int c)
 {
   if (current_macro_index + 1 >= current_macro_size)
     {
@@ -190,7 +220,7 @@ _rl_add_macro_char (c)
 }
 
 void
-_rl_kill_kbd_macro ()
+_rl_kill_kbd_macro (void)
 {
   if (current_macro)
     {
@@ -213,8 +243,7 @@ _rl_kill_kbd_macro ()
    definition to the end of the existing macro, and start by
    re-executing the existing macro. */
 int
-rl_start_kbd_macro (ignore1, ignore2)
-     int ignore1, ignore2;
+rl_start_kbd_macro (int ignore1, int ignore2)
 {
   if (RL_ISSTATE (RL_STATE_MACRODEF))
     {
@@ -238,8 +267,7 @@ rl_start_kbd_macro (ignore1, ignore2)
    A numeric argument says to execute the macro right now,
    that many times, counting the definition as the first time. */
 int
-rl_end_kbd_macro (count, ignore)
-     int count, ignore;
+rl_end_kbd_macro (int count, int ignore)
 {
   if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
     {
@@ -258,8 +286,7 @@ rl_end_kbd_macro (count, ignore)
 /* Execute the most recently defined keyboard macro.
    COUNT says how many times to execute it. */
 int
-rl_call_last_kbd_macro (count, ignore)
-     int count, ignore;
+rl_call_last_kbd_macro (int count, int ignore)
 {
   if (current_macro == 0)
     _rl_abort_internal ();
@@ -277,8 +304,7 @@ rl_call_last_kbd_macro (count, ignore)
 }
 
 int
-rl_print_last_kbd_macro (count, ignore)
-     int count, ignore;
+rl_print_last_kbd_macro (int count, int ignore)
 {
   char *m;
 
@@ -300,8 +326,7 @@ rl_print_last_kbd_macro (count, ignore)
 }
 
 void
-rl_push_macro_input (macro)
-     char *macro;
+rl_push_macro_input (char *macro)
 {
   _rl_with_macro_input (macro);
 }
index 314a49b64bff04a4f0f1bc9450497577de48324f..17716357feb0c31b686636ccece7a1567426db35 100644 (file)
@@ -1,6 +1,6 @@
 /* mbutil.c -- readline multibyte character utility functions */
 
-/* Copyright (C) 2001-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -75,10 +75,59 @@ int _rl_utf8locale = 0;
 
 #if defined(HANDLE_MULTIBYTE)
 
+/* **************************************************************** */
+/*                                                                 */
+/*             UTF-8 specific Character Utility Functions          */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Return the length in bytes of the possibly-multibyte character beginning
+   at S. Encoding is UTF-8. */
+static int
+_rl_utf8_mblen (const char *s, size_t n)
+{
+  unsigned char c, c1;
+
+  if (s == 0)
+    return (0);        /* no shift states */
+  if (n <= 0)
+    return (-1);
+
+  c = (unsigned char)*s;
+  if (c < 0x80)
+    return (c != 0);
+  if (c >= 0xc2)
+    {
+      c1 = (unsigned char)s[1];
+      if (c < 0xe0)
+       {
+         if (n >= 2 && (s[1] ^ 0x80) < 0x40)
+           return 2;
+       }
+      else if (c < 0xf0)
+       {
+         if (n >= 3
+               && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+               && (c >= 0xe1 || c1 >= 0xa0)
+               && (c != 0xed || c1 < 0xa0))
+           return 3;
+       }
+      else if (c < 0xf8)
+       {
+         if (n >= 4
+               && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+               && (s[3] ^ 0x80) < 0x40
+               && (c >= 0xf1 || c1 >= 0x90)
+               && (c < 0xf4 || (c == 0xf4 && c1 < 0x90)))
+           return 4;
+       }
+    }
+  /* invalid or incomplete multibyte character */
+  return -1;
+}
+
 static int
-_rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
-     char *string;
-     int seed, count, find_non_zero;
+_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero)
 {
   size_t tmp, len;
   mbstate_t ps;
@@ -94,6 +143,11 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
     return seed;
 
   point = seed + _rl_adjust_point (string, seed, &ps);
+  /* if _rl_adjust_point returns -1, the character or string is invalid.
+     treat as a byte. */
+  if (point == seed - 1)       /* invalid */
+    return seed + 1;
+    
   /* if this is true, means that seed was not pointing to a byte indicating
      the beginning of a multibyte character.  Correct the point and consume
      one char. */
@@ -105,7 +159,14 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
       len = strlen (string + point);
       if (len == 0)
        break;
-      tmp = mbrtowc (&wc, string+point, len, &ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
+       {
+         tmp = 1;
+         wc = (wchar_t) string[point];
+         memset(&ps, 0, sizeof(mbstate_t));
+       }
+      else
+       tmp = mbrtowc (&wc, string+point, len, &ps);
       if (MB_INVALIDCH ((size_t)tmp))
        {
          /* invalid bytes. assume a byte represents a character */
@@ -146,9 +207,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
 }
 
 /*static*/ int
-_rl_find_prev_mbchar_internal (string, seed, find_non_zero)
-     char *string;
-     int seed, find_non_zero;
+_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
 {
   mbstate_t ps;
   int prev, non_zero_prev, point, length;
@@ -166,10 +225,17 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero)
   prev = non_zero_prev = point = 0;
   while (point < seed)
     {
-      tmp = mbrtowc (&wc, string + point, length - point, &ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
+       {
+         tmp = 1;
+         wc = (wchar_t) string[point];
+         memset(&ps, 0, sizeof(mbstate_t));
+       }
+      else
+       tmp = mbrtowc (&wc, string + point, length - point, &ps);
       if (MB_INVALIDCH ((size_t)tmp))
        {
-         /* in this case, bytes are invalid or shorted to compose
+         /* in this case, bytes are invalid or too short to compose
             multibyte char, so assume that the first byte represents
             a single character anyway. */
          tmp = 1;
@@ -206,16 +272,23 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero)
    if an invalid multibyte sequence was encountered. It returns (size_t)(-2) 
    if it couldn't parse a complete  multibyte character.  */
 int
-_rl_get_char_len (src, ps)
-     char *src;
-     mbstate_t *ps;
+_rl_get_char_len (char *src, mbstate_t *ps)
 {
-  size_t tmp;
+  size_t tmp, l;
+  int mb_cur_max;
 
-  tmp = mbrlen((const char *)src, (size_t)strlen (src), ps);
+  /* Look at no more than MB_CUR_MAX characters */
+  l = (size_t)strlen (src);
+  if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src))
+    tmp = (*src != 0) ? 1 : 0;
+  else
+    {
+      mb_cur_max = MB_CUR_MAX;
+      tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps);
+    }
   if (tmp == (size_t)(-2))
     {
-      /* shorted to compose multibyte char */
+      /* too short to compose multibyte char */
       if (ps)
        memset (ps, 0, sizeof(mbstate_t));
       return -2;
@@ -237,13 +310,7 @@ _rl_get_char_len (src, ps)
 /* compare the specified two characters. If the characters matched,
    return 1. Otherwise return 0. */
 int
-_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
-     char *buf1;
-     int pos1;
-     mbstate_t *ps1;
-     char *buf2;
-     int pos2;
-     mbstate_t *ps2;
+_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2)
 {
   int i, w1, w2;
 
@@ -263,18 +330,16 @@ _rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
 /* adjust pointed byte and find mbstate of the point of string.
    adjusted point will be point <= adjusted_point, and returns
    differences of the byte(adjusted_point - point).
-   if point is invalied (point < 0 || more than string length),
+   if point is invalid (point < 0 || more than string length),
    it returns -1 */
 int
-_rl_adjust_point (string, point, ps)
-     char *string;
-     int point;
-     mbstate_t *ps;
+_rl_adjust_point (char *string, int point, mbstate_t *ps)
 {
-  size_t tmp = 0;
-  int length;
-  int pos = 0;
+  size_t tmp;
+  int length, pos;
 
+  tmp = 0;
+  pos = 0;
   length = strlen(string);
   if (point < 0)
     return -1;
@@ -283,10 +348,13 @@ _rl_adjust_point (string, point, ps)
   
   while (pos < point)
     {
-      tmp = mbrlen (string + pos, length - pos, ps);
+      if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos]))
+       tmp = 1;
+      else
+       tmp = mbrlen (string + pos, length - pos, ps);
       if (MB_INVALIDCH ((size_t)tmp))
        {
-         /* in this case, bytes are invalid or shorted to compose
+         /* in this case, bytes are invalid or too short to compose
             multibyte char, so assume that the first byte represents
             a single character anyway. */
          pos++;
@@ -305,11 +373,7 @@ _rl_adjust_point (string, point, ps)
 }
 
 int
-_rl_is_mbchar_matched (string, seed, end, mbchar, length)
-     char *string;
-     int seed, end;
-     char *mbchar;
-     int length;
+_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length)
 {
   int i;
 
@@ -323,9 +387,7 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length)
 }
 
 wchar_t
-_rl_char_value (buf, ind)
-     char *buf;
-     int ind;
+_rl_char_value (char *buf, int ind)
 {
   size_t tmp;
   wchar_t wc;
@@ -334,9 +396,13 @@ _rl_char_value (buf, ind)
 
   if (MB_LEN_MAX == 1 || rl_byte_oriented)
     return ((wchar_t) buf[ind]);
+  if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind]))
+    return ((wchar_t) buf[ind]);
   l = strlen (buf);
   if (ind >= l - 1)
     return ((wchar_t) buf[ind]);
+  if (l < ind)                 /* Sanity check */
+    l = strlen (buf+ind);
   memset (&ps, 0, sizeof (mbstate_t));
   tmp = mbrtowc (&wc, buf + ind, l - ind, &ps);
   if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp))  
@@ -350,9 +416,7 @@ _rl_char_value (buf, ind)
    characters. */
 #undef _rl_find_next_mbchar
 int
-_rl_find_next_mbchar (string, seed, count, flags)
-     char *string;
-     int seed, count, flags;
+_rl_find_next_mbchar (char *string, int seed, int count, int flags)
 {
 #if defined (HANDLE_MULTIBYTE)
   return _rl_find_next_mbchar_internal (string, seed, count, flags);
@@ -366,9 +430,7 @@ _rl_find_next_mbchar (string, seed, count, flags)
    we look for non-zero-width multibyte characters. */
 #undef _rl_find_prev_mbchar
 int
-_rl_find_prev_mbchar (string, seed, flags)
-     char *string;
-     int seed, flags;
+_rl_find_prev_mbchar (char *string, int seed, int flags)
 {
 #if defined (HANDLE_MULTIBYTE)
   return _rl_find_prev_mbchar_internal (string, seed, flags);
index f7acdee06147895d61d8e43e57b971812f5f729f..64b1457d29e8af0bcefc6553ca97e93cf0cd6ad0 100644 (file)
@@ -1,6 +1,6 @@
 /* misc.c -- miscellaneous bindable readline functions. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -76,7 +76,7 @@ int _rl_history_saved_point = -1;
 /* **************************************************************** */
 
 int
-_rl_arg_overflow ()
+_rl_arg_overflow (void)
 {
   if (rl_numeric_arg > 1000000)
     {
@@ -92,7 +92,7 @@ _rl_arg_overflow ()
 }
 
 void
-_rl_arg_init ()
+_rl_arg_init (void)
 {
   rl_save_prompt ();
   _rl_argcxt = 0;
@@ -100,7 +100,7 @@ _rl_arg_init ()
 }
 
 int
-_rl_arg_getchar ()
+_rl_arg_getchar (void)
 {
   int c;
 
@@ -116,9 +116,7 @@ _rl_arg_getchar ()
    argument should be aborted, 0 if we should not read any more chars, and
    1 if we should continue to read chars. */
 int
-_rl_arg_dispatch (cxt, c)
-     _rl_arg_cxt cxt;
-     int c;
+_rl_arg_dispatch (_rl_arg_cxt cxt, int c)
 {
   int key, r;
 
@@ -193,7 +191,7 @@ _rl_arg_dispatch (cxt, c)
 
 /* Handle C-u style numeric args, as well as M--, and M-digits. */
 static int
-rl_digit_loop ()
+rl_digit_loop (void)
 {
   int c, r;
 
@@ -220,7 +218,7 @@ rl_digit_loop ()
 
 /* Create a default argument. */
 void
-_rl_reset_argument ()
+_rl_reset_argument (void)
 {
   rl_numeric_arg = rl_arg_sign = 1;
   rl_explicit_arg = 0;
@@ -229,8 +227,7 @@ _rl_reset_argument ()
 
 /* Start a numeric argument with initial value KEY */
 int
-rl_digit_argument (ignore, key)
-     int ignore, key;
+rl_digit_argument (int ignore, int key)
 {
   _rl_arg_init ();
   if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -250,8 +247,7 @@ rl_digit_argument (ignore, key)
    Read a key.  If the key has nothing to do with arguments, then
    dispatch on it.  If the key is the abort character then abort. */
 int
-rl_universal_argument (count, key)
-     int count, key;
+rl_universal_argument (int count, int key)
 {
   _rl_arg_init ();
   rl_numeric_arg *= 4;
@@ -260,8 +256,7 @@ rl_universal_argument (count, key)
 }
 
 int
-_rl_arg_callback (cxt)
-     _rl_arg_cxt cxt;
+_rl_arg_callback (_rl_arg_cxt cxt)
 {
   int c, r;
 
@@ -280,12 +275,14 @@ _rl_arg_callback (cxt)
     }
 
   r = _rl_arg_dispatch (cxt, c);
+  if (r > 0)
+    rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
   return (r != 1);
 }
 
 /* What to do when you abort reading an argument. */
 int
-rl_discard_argument ()
+rl_discard_argument (void)
 {
   rl_ding ();
   rl_clear_message ();
@@ -310,7 +307,7 @@ HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
 
 /* Set the history pointer back to the last entry in the history. */
 void
-_rl_start_using_history ()
+_rl_start_using_history (void)
 {
   using_history ();
   if (_rl_saved_line_for_history)
@@ -321,8 +318,7 @@ _rl_start_using_history ()
 
 /* Free the contents (and containing structure) of a HIST_ENTRY. */
 void
-_rl_free_history_entry (entry)
-     HIST_ENTRY *entry;
+_rl_free_history_entry (HIST_ENTRY *entry)
 {
   if (entry == 0)
     return;
@@ -335,7 +331,7 @@ _rl_free_history_entry (entry)
 
 /* Perhaps put back the current line if it has changed. */
 int
-rl_maybe_replace_line ()
+rl_maybe_replace_line (void)
 {
   HIST_ENTRY *temp;
 
@@ -353,7 +349,7 @@ rl_maybe_replace_line ()
 
 /* Restore the _rl_saved_line_for_history if there is one. */
 int
-rl_maybe_unsave_line ()
+rl_maybe_unsave_line (void)
 {
   if (_rl_saved_line_for_history)
     {
@@ -372,7 +368,7 @@ rl_maybe_unsave_line ()
 
 /* Save the current line in _rl_saved_line_for_history. */
 int
-rl_maybe_save_line ()
+rl_maybe_save_line (void)
 {
   if (_rl_saved_line_for_history == 0)
     {
@@ -386,7 +382,7 @@ rl_maybe_save_line ()
 }
 
 int
-_rl_free_saved_history_line ()
+_rl_free_saved_history_line (void)
 {
   if (_rl_saved_line_for_history)
     {
@@ -397,7 +393,7 @@ _rl_free_saved_history_line ()
 }
 
 static void
-_rl_history_set_point ()
+_rl_history_set_point (void)
 {
   rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
                ? _rl_history_saved_point
@@ -415,9 +411,7 @@ _rl_history_set_point ()
 }
 
 void
-rl_replace_from_history (entry, flags)
-     HIST_ENTRY *entry;
-     int flags;                        /* currently unused */
+rl_replace_from_history (HIST_ENTRY *entry, int flags)
 {
   /* Can't call with `1' because rl_undo_list might point to an undo list
      from a history entry, just like we're setting up here. */
@@ -441,7 +435,7 @@ rl_replace_from_history (entry, flags)
    intended to be called while actively editing, and the current line is
    not assumed to have been added to the history list. */
 void
-_rl_revert_all_lines ()
+_rl_revert_all_lines (void)
 {
   int hpos;
   HIST_ENTRY *entry;
@@ -490,7 +484,7 @@ _rl_revert_all_lines ()
    to an UNDO_LIST * saved as some history entry's data member.  This
    should not be called while editing is active. */
 void
-rl_clear_history ()
+rl_clear_history (void)
 {
   HIST_ENTRY **hlist, *hent;
   register int i;
@@ -524,16 +518,14 @@ rl_clear_history ()
 
 /* Meta-< goes to the start of the history. */
 int
-rl_beginning_of_history (count, key)
-     int count, key;
+rl_beginning_of_history (int count, int key)
 {
   return (rl_get_previous_history (1 + where_history (), key));
 }
 
 /* Meta-> goes to the end of the history.  (The current line). */
 int
-rl_end_of_history (count, key)
-     int count, key;
+rl_end_of_history (int count, int key)
 {
   rl_maybe_replace_line ();
   using_history ();
@@ -543,8 +535,7 @@ rl_end_of_history (count, key)
 
 /* Move down to the next history line. */
 int
-rl_get_next_history (count, key)
-     int count, key;
+rl_get_next_history (int count, int key)
 {
   HIST_ENTRY *temp;
 
@@ -582,15 +573,14 @@ rl_get_next_history (count, key)
 /* Get the previous item out of our interactive history, making it the current
    line.  If there is no previous history, just ding. */
 int
-rl_get_previous_history (count, key)
-     int count, key;
+rl_get_previous_history (int count, int key)
 {
   HIST_ENTRY *old_temp, *temp;
 
   if (count < 0)
     return (rl_get_next_history (-count, key));
 
-  if (count == 0)
+  if (count == 0 || history_list () == 0)
     return 0;
 
   /* either not saved by rl_newline or at end of line, so set appropriately. */
@@ -620,7 +610,10 @@ rl_get_previous_history (count, key)
     temp = old_temp;
 
   if (temp == 0)
-    rl_ding ();
+    {
+      rl_maybe_unsave_line ();
+      rl_ding ();
+    }
   else
     {
       rl_replace_from_history (temp, 0);
@@ -637,8 +630,7 @@ rl_get_previous_history (count, key)
 /* **************************************************************** */
 /* How to toggle back and forth between editing modes. */
 int
-rl_vi_editing_mode (count, key)
-     int count, key;
+rl_vi_editing_mode (int count, int key)
 {
 #if defined (VI_MODE)
   _rl_set_insert_mode (RL_IM_INSERT, 1);       /* vi mode ignores insert mode */
@@ -650,8 +642,7 @@ rl_vi_editing_mode (count, key)
 }
 
 int
-rl_emacs_editing_mode (count, key)
-     int count, key;
+rl_emacs_editing_mode (int count, int key)
 {
   rl_editing_mode = emacs_mode;
   _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
@@ -665,8 +656,7 @@ rl_emacs_editing_mode (count, key)
 
 /* Function for the rest of the library to use to set insert/overwrite mode. */
 void
-_rl_set_insert_mode (im, force)
-     int im, force;
+_rl_set_insert_mode (int im, int force)
 {
 #ifdef CURSOR_MODE
   _rl_set_cursor (im, force);
@@ -678,8 +668,7 @@ _rl_set_insert_mode (im, force)
 /* Toggle overwrite mode.  A positive explicit argument selects overwrite
    mode.  A negative or zero explicit argument selects insert mode. */
 int
-rl_overwrite_mode (count, key)
-     int count, key;
+rl_overwrite_mode (int count, int key)
 {
   if (rl_explicit_arg == 0)
     _rl_set_insert_mode (rl_insert_mode ^ 1, 0);
index d3b36344f103b20945158f2e8a3db7a8a993d5f7..d2f67e0d3e1ac1a9f085d3e10fbc7af0c129d8e0 100644 (file)
@@ -1,6 +1,6 @@
 /* nls.c -- skeletal internationalization code. */
 
-/* Copyright (C) 1996-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -74,6 +74,7 @@ static char *legal_lang_values[] =
  "iso88599",
  "iso885910",
  "koi8r",
+ "utf8",
   0
 };
 
@@ -85,8 +86,7 @@ static char *find_codeset PARAMS((char *, size_t *));
 static char *_rl_get_locale_var PARAMS((const char *));
 
 static char *
-_rl_get_locale_var (v)
-     const char *v;
+_rl_get_locale_var (const char *v)
 {
   char *lspec;
 
@@ -100,8 +100,7 @@ _rl_get_locale_var (v)
 }
 
 static int
-utf8locale (lspec)
-     char *lspec;
+utf8locale (char *lspec)
 {
   char *cp;
   size_t len;
@@ -118,16 +117,12 @@ utf8locale (lspec)
 #endif
 }
 
-/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
-   to decide the defaults for 8-bit character input and output.  Returns
-   1 if we set eight-bit mode. */
-int
-_rl_init_eightbit ()
+/* Query the right environment variables and call setlocale() to initialize
+   the C library locale settings. */
+char *
+_rl_init_locale (void)
 {
-/* If we have setlocale(3), just check the current LC_CTYPE category
-   value, and go into eight-bit mode if it's not C or POSIX. */
-#if defined (HAVE_SETLOCALE)
-  char *lspec, *t;
+  char *ret, *lspec;
 
   /* Set the LC_CTYPE locale category from environment variables. */
   lspec = _rl_get_locale_var ("LC_CTYPE");
@@ -140,10 +135,25 @@ _rl_init_eightbit ()
     lspec = setlocale (LC_CTYPE, (char *)NULL);
   if (lspec == 0)
     lspec = "";
-  t = setlocale (LC_CTYPE, lspec);
+  ret = setlocale (LC_CTYPE, lspec);   /* ok, since it does not change locale */
+
+  _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0;
+
+  return ret;
+}
+
+/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
+   to decide the defaults for 8-bit character input and output.  Returns
+   1 if we set eight-bit mode. */
+int
+_rl_init_eightbit (void)
+{
+/* If we have setlocale(3), just check the current LC_CTYPE category
+   value, and go into eight-bit mode if it's not C or POSIX. */
+#if defined (HAVE_SETLOCALE)
+  char *lspec, *t;
 
-  if (t && *t)
-    _rl_utf8locale = utf8locale (t);
+  t = _rl_init_locale ();      /* returns static pointer */
 
   if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
     {
@@ -174,16 +184,17 @@ _rl_init_eightbit ()
        _rl_output_meta_chars = 1;
        break;
       }
+
+  _rl_utf8locale = *t ? STREQ (t, "utf8") : 0;
+
   xfree (t);
   return (legal_lang_values[i] ? 1 : 0);
-
 #endif /* !HAVE_SETLOCALE */
 }
 
 #if !defined (HAVE_SETLOCALE)
 static char *
-normalize_codeset (codeset)
-     char *codeset;
+normalize_codeset (char *codeset)
 {
   size_t namelen, i;
   int len, all_digits;
@@ -230,9 +241,7 @@ normalize_codeset (codeset)
 
 /* Isolate codeset portion of locale specification. */
 static char *
-find_codeset (name, lenp)
-     char *name;
-     size_t *lenp;
+find_codeset (char *name, size_t *lenp)
 {
   char *cp, *language, *result;
 
index ecc465c00dfb1eaa0ab7a7cf35c4959beddc5882..af4797736293d4cefa2d9c57784a1c83a03b434c 100644 (file)
@@ -1,6 +1,6 @@
 /* parens.c -- implementation of matching parentheses feature. */
 
-/* Copyright (C) 1987, 1989, 1992-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -64,8 +64,7 @@ static int _paren_blink_usec = 500000;
 /* Change emacs_standard_keymap to have bindings for paren matching when
    ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */
 void
-_rl_enable_paren_matching (on_or_off)
-     int on_or_off;
+_rl_enable_paren_matching (int on_or_off)
 {
   if (on_or_off)
     {
@@ -98,8 +97,7 @@ _rl_enable_paren_matching (on_or_off)
 }
 
 int
-rl_set_paren_blink_timeout (u)
-     int u;
+rl_set_paren_blink_timeout (int u)
 {
   int o;
 
@@ -110,8 +108,7 @@ rl_set_paren_blink_timeout (u)
 }
 
 int
-rl_insert_close (count, invoking_key)
-     int count, invoking_key;
+rl_insert_close (int count, int invoking_key)
 {
   if (rl_explicit_arg || !rl_blink_matching_paren)
     _rl_insert_char (count, invoking_key);
@@ -148,9 +145,7 @@ rl_insert_close (count, invoking_key)
 }
 
 static int
-find_matching_open (string, from, closer)
-     char *string;
-     int from, closer;
+find_matching_open (char *string, int from, int closer)
 {
   register int i;
   int opener, level, delimiter;
index 98b2e9d10a1b487698fdbbd2e73d969a213412e5..05ec9bc36a40def55f2984ec6014b65117d9a74b 100644 (file)
@@ -2,8 +2,8 @@
 
    Modified by Chet Ramey for Readline.
 
-   Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation,
-   Inc.
+   Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017
+   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
@@ -297,7 +297,7 @@ get_funky_string (char **dest, const char **src, bool equals_end, size_t *output
 }
 #endif /* COLOR_SUPPORT */
 
-void _rl_parse_colors()
+void _rl_parse_colors(void)
 {
 #if defined (COLOR_SUPPORT)
   const char *p;               /* Pointer to character being parsed */
index a05b35e5d24983dbdcfbcffd6d7887eb9c54ea09..678f989c51aba1d522b366e67ed93968ced01cc1 100644 (file)
@@ -1,7 +1,7 @@
 /* readline.c -- a general facility for reading lines of input
    with emacs style editing and completion. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -214,6 +214,9 @@ int _rl_eof_char = CTRL ('D');
 /* Non-zero makes this the next keystroke to read. */
 int rl_pending_input = 0;
 
+/* If non-zero when readline_internal returns, it means we found EOF */
+int _rl_eof_found = 0;
+
 /* Pointer to a useful terminal name. */
 const char *rl_terminal_name = (const char *)NULL;
 
@@ -222,7 +225,7 @@ int _rl_horizontal_scroll_mode = 0;
 
 /* Non-zero means to display an asterisk at the starts of history lines
    which have been modified. */
-int _rl_mark_modified_lines = 0;  
+int _rl_mark_modified_lines = 0;
 
 /* The style of `bell' notification preferred.  This can be set to NO_BELL,
    AUDIBLE_BELL, or VISIBLE_BELL. */
@@ -242,7 +245,7 @@ int rl_erase_empty_line = 0;
 
 /* Non-zero means to read only this many characters rather than up to a
    character bound to accept-line. */
-int rl_num_chars_to_read;
+int rl_num_chars_to_read = 0;
 
 /* Line buffer and maintenance. */
 char *rl_line_buffer = (char *)NULL;
@@ -325,8 +328,7 @@ int _rl_meta_flag = 0;      /* Forward declaration */
 /* Set up the prompt and expand it.  Called from readline() and
    rl_callback_handler_install (). */
 int
-rl_set_prompt (prompt)
-     const char *prompt;
+rl_set_prompt (const char *prompt)
 {
   FREE (rl_prompt);
   rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
@@ -339,8 +341,7 @@ rl_set_prompt (prompt)
 /* Read a line of input.  Prompt with PROMPT.  An empty PROMPT means
    none.  A return value of NULL means that EOF was encountered. */
 char *
-readline (prompt)
-     const char *prompt;
+readline (const char *prompt)
 {
   char *value;
 #if 0
@@ -401,7 +402,7 @@ readline (prompt)
 #endif
 
 STATIC_CALLBACK void
-readline_internal_setup ()
+readline_internal_setup (void)
 {
   char *nprompt;
 
@@ -419,7 +420,10 @@ readline_internal_setup ()
 #if defined (VI_MODE)
   if (rl_editing_mode == vi_mode)
     rl_vi_insertion_mode (1, 'i');     /* don't want to reset last */
+  else
 #endif /* VI_MODE */
+    if (_rl_show_mode_in_prompt)
+      _rl_reset_prompt ();
 
   /* If we're not echoing, we still want to at least print a prompt, because
      rl_redisplay will not do it for us.  If the calling application has a
@@ -450,8 +454,7 @@ readline_internal_setup ()
 }
 
 STATIC_CALLBACK char *
-readline_internal_teardown (eof)
-     int eof;
+readline_internal_teardown (int eof)
 {
   char *temp;
   HIST_ENTRY *entry;
@@ -493,7 +496,7 @@ readline_internal_teardown (eof)
 }
 
 void
-_rl_internal_char_cleanup ()
+_rl_internal_char_cleanup (void)
 {
 #if defined (VI_MODE)
   /* In vi mode, when you exit insert mode, the cursor moves back
@@ -524,13 +527,13 @@ _rl_internal_char_cleanup ()
 
 STATIC_CALLBACK int
 #if defined (READLINE_CALLBACKS)
-readline_internal_char ()
+readline_internal_char (void)
 #else
-readline_internal_charloop ()
+readline_internal_charloop (void)
 #endif
 {
   static int lastc, eof_found;
-  int c, code, lk;
+  int c, code, lk, r;
 
   lastc = EOF;
 
@@ -626,7 +629,7 @@ readline_internal_charloop ()
        }
 
       lastc = c;
-      _rl_dispatch ((unsigned char)c, _rl_keymap);
+      r = _rl_dispatch ((unsigned char)c, _rl_keymap);
       RL_CHECK_SIGNALS ();
 
       /* If there was no change in _rl_last_command_was_kill, then no kill
@@ -648,7 +651,7 @@ readline_internal_charloop ()
 
 #if defined (READLINE_CALLBACKS)
 static int
-readline_internal_charloop ()
+readline_internal_charloop (void)
 {
   int eof = 1;
 
@@ -662,17 +665,15 @@ readline_internal_charloop ()
    the global rl_outstream.
    If rl_prompt is non-null, then that is our prompt. */
 static char *
-readline_internal ()
+readline_internal (void)
 {
-  int eof;
-
   readline_internal_setup ();
-  eof = readline_internal_charloop ();
-  return (readline_internal_teardown (eof));
+  _rl_eof_found = readline_internal_charloop ();
+  return (readline_internal_teardown (_rl_eof_found));
 }
 
 void
-_rl_init_line_state ()
+_rl_init_line_state (void)
 {
   rl_point = rl_end = rl_mark = 0;
   the_line = rl_line_buffer;
@@ -680,14 +681,14 @@ _rl_init_line_state ()
 }
 
 void
-_rl_set_the_line ()
+_rl_set_the_line (void)
 {
   the_line = rl_line_buffer;
 }
 
 #if defined (READLINE_CALLBACKS)
 _rl_keyseq_cxt *
-_rl_keyseq_cxt_alloc ()
+_rl_keyseq_cxt_alloc (void)
 {
   _rl_keyseq_cxt *cxt;
 
@@ -703,14 +704,13 @@ _rl_keyseq_cxt_alloc ()
 }
 
 void
-_rl_keyseq_cxt_dispose (cxt)
-    _rl_keyseq_cxt *cxt;
+_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt)
 {
   xfree (cxt);
 }
 
 void
-_rl_keyseq_chain_dispose ()
+_rl_keyseq_chain_dispose (void)
 {
   _rl_keyseq_cxt *cxt;
 
@@ -724,8 +724,7 @@ _rl_keyseq_chain_dispose ()
 #endif
 
 static int
-_rl_subseq_getchar (key)
-     int key;
+_rl_subseq_getchar (int key)
 {
   int k;
 
@@ -742,8 +741,7 @@ _rl_subseq_getchar (key)
 
 #if defined (READLINE_CALLBACKS)
 int
-_rl_dispatch_callback (cxt)
-     _rl_keyseq_cxt *cxt;
+_rl_dispatch_callback (_rl_keyseq_cxt *cxt)
 {
   int nkey, r;
 
@@ -794,19 +792,14 @@ _rl_dispatch_callback (cxt)
    If the associated command is really a keymap, then read
    another key, and dispatch into that map. */
 int
-_rl_dispatch (key, map)
-     register int key;
-     Keymap map;
+_rl_dispatch (register int key, Keymap map)
 {
   _rl_dispatching_keymap = map;
   return _rl_dispatch_subseq (key, map, 0);
 }
 
 int
-_rl_dispatch_subseq (key, map, got_subseq)
-     register int key;
-     Keymap map;
-     int got_subseq;
+_rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
 {
   int r, newkey;
   char *macro;
@@ -920,6 +913,15 @@ _rl_dispatch_subseq (key, map, got_subseq)
               _rl_pushed_input_available () == 0 &&
              _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0)
            return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
+         /* This is a very specific test.  It can possibly be generalized in
+            the future, but for now it handles a specific case of ESC being
+            the last character in a keyboard macro. */
+         if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap &&
+             (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) &&
+             (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) &&
+             _rl_pushed_input_available () == 0 &&
+             _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0)
+           return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));       
 #endif
 
          RESIZE_KEYSEQ_BUFFER ();
@@ -1014,10 +1016,7 @@ _rl_dispatch_subseq (key, map, got_subseq)
 }
 
 static int
-_rl_subseq_result (r, map, key, got_subseq)
-     int r;
-     Keymap map;
-     int key, got_subseq;
+_rl_subseq_result (int r, Keymap map, int key, int got_subseq)
 {
   Keymap m;
   int type, nt;
@@ -1091,11 +1090,11 @@ _rl_subseq_result (r, map, key, got_subseq)
 
 /* Initialize readline (and terminal if not already). */
 int
-rl_initialize ()
+rl_initialize (void)
 {
   /* If we have never been called before, initialize the
      terminal and data structures. */
-  if (!rl_initialized)
+  if (rl_initialized == 0)
     {
       RL_SETSTATE(RL_STATE_INITIALIZING);
       readline_initialize_everything ();
@@ -1103,6 +1102,8 @@ rl_initialize ()
       rl_initialized++;
       RL_SETSTATE(RL_STATE_INITIALIZED);
     }
+  else
+    (void)_rl_init_locale ();  /* check current locale */
 
   /* Initialize the current line information. */
   _rl_init_line_state ();
@@ -1137,7 +1138,7 @@ rl_initialize ()
 #if 0
 #if defined (__EMX__)
 static void
-_emx_build_environ ()
+_emx_build_environ (void)
 {
   TIB *tibp;
   PIB *pibp;
@@ -1162,7 +1163,7 @@ _emx_build_environ ()
 
 /* Initialize the entire state of the world. */
 static void
-readline_initialize_everything ()
+readline_initialize_everything (void)
 {
 #if 0
 #if defined (__EMX__)
@@ -1247,7 +1248,7 @@ readline_initialize_everything ()
    input editing characters, then bind them to their readline
    equivalents, iff the characters are not bound to keymaps. */
 static void
-readline_default_bindings ()
+readline_default_bindings (void)
 {
   if (_rl_bind_stty_chars)
     rl_tty_set_default_bindings (_rl_keymap);
@@ -1256,7 +1257,7 @@ readline_default_bindings ()
 /* Reset the default bindings for the terminal special characters we're
    interested in back to rl_insert and read the new ones. */
 static void
-reset_default_bindings ()
+reset_default_bindings (void)
 {
   if (_rl_bind_stty_chars)
     {
@@ -1267,8 +1268,7 @@ reset_default_bindings ()
 
 /* Bind some common arrow key sequences in MAP. */
 static void
-bind_arrow_keys_internal (map)
-     Keymap map;
+bind_arrow_keys_internal (Keymap map)
 {
   Keymap xkeymap;
 
@@ -1296,6 +1296,15 @@ bind_arrow_keys_internal (map)
   rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line);
   rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line);
 
+  /* Key bindings for control-arrow keys */
+  rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word);
+  rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word);
+  rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word);
+
+  /* Key bindings for alt-arrow keys */
+  rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word);
+  rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word);
+
 #if defined (__MINGW32__)
   rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history);
   rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history);
@@ -1324,7 +1333,7 @@ bind_arrow_keys_internal (map)
    the inputrc file a chance to bind them and create `real' keymaps
    for the arrow key prefix. */
 static void
-bind_arrow_keys ()
+bind_arrow_keys (void)
 {
   bind_arrow_keys_internal (emacs_standard_keymap);
 
@@ -1339,7 +1348,7 @@ bind_arrow_keys ()
 }
 
 static void
-bind_bracketed_paste_prefix ()
+bind_bracketed_paste_prefix (void)
 {
   Keymap xkeymap;
 
@@ -1361,8 +1370,7 @@ bind_bracketed_paste_prefix ()
 /* **************************************************************** */
 
 int
-rl_save_state (sp)
-     struct readline_state *sp;
+rl_save_state (struct readline_state *sp)
 {
   if (sp == 0)
     return -1;
@@ -1402,8 +1410,7 @@ rl_save_state (sp)
 }
 
 int
-rl_restore_state (sp)
-     struct readline_state *sp;
+rl_restore_state (struct readline_state *sp)
 {
   if (sp == 0)
     return -1;
index 924bbfb0f213168ff970fbed612b5ca1e9caafb7..da782716af2a52edf38c2e6252bddc54d2f7eb6e 100644 (file)
@@ -39,8 +39,8 @@ extern "C" {
 #endif
 
 /* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION    0x0700          /* Readline 7.0 */
-#define RL_VERSION_MAJOR       7
+#define RL_READLINE_VERSION    0x0800          /* Readline 8.0 */
+#define RL_VERSION_MAJOR       8
 #define RL_VERSION_MINOR       0
 
 /* Readline data structures. */
@@ -98,6 +98,9 @@ extern int rl_clear_screen PARAMS((int, int));
 extern int rl_skip_csi_sequence PARAMS((int, int));
 extern int rl_arrow_keys PARAMS((int, int));
 
+extern int rl_previous_screen_line PARAMS((int, int));
+extern int rl_next_screen_line PARAMS((int, int));
+
 /* Bindable commands for inserting and deleting text. */
 extern int rl_insert PARAMS((int, int));
 extern int rl_quoted_insert PARAMS((int, int));
@@ -329,6 +332,7 @@ extern char *rl_untranslate_keyseq PARAMS((int));
 
 extern rl_command_func_t *rl_named_function PARAMS((const char *));
 extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
+extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *));
 
 extern void rl_list_funmap_names PARAMS((void));
 extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
@@ -343,6 +347,7 @@ extern int rl_parse_and_bind PARAMS((char *));
 
 /* Functions for manipulating keymaps. */
 extern Keymap rl_make_bare_keymap PARAMS((void));
+extern int rl_empty_keymap PARAMS((Keymap));
 extern Keymap rl_copy_keymap PARAMS((Keymap));
 extern Keymap rl_make_keymap PARAMS((void));
 extern void rl_discard_keymap PARAMS((Keymap));
@@ -352,6 +357,9 @@ extern Keymap rl_get_keymap_by_name PARAMS((const char *));
 extern char *rl_get_keymap_name PARAMS((Keymap));
 extern void rl_set_keymap PARAMS((Keymap));
 extern Keymap rl_get_keymap PARAMS((void));
+
+extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+
 /* Undocumented; used internally only. */
 extern void rl_set_keymap_from_edit_mode PARAMS((void));
 extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
@@ -413,6 +421,7 @@ extern void rl_deprep_terminal PARAMS((void));
 extern void rl_tty_set_default_bindings PARAMS((Keymap));
 extern void rl_tty_unset_default_bindings PARAMS((Keymap));
 
+extern int rl_tty_set_echoing PARAMS((int));
 extern int rl_reset_terminal PARAMS((const char *));
 extern void rl_resize_terminal PARAMS((void));
 extern void rl_set_screen_size PARAMS((int, int));
@@ -443,6 +452,7 @@ extern void rl_reset_after_signal PARAMS((void));
 extern void rl_free_line_state PARAMS((void));
 
 extern int rl_pending_signal PARAMS((void));
+extern void rl_check_signals PARAMS((void));
 
 extern void rl_echo_signal_char PARAMS((int)); 
 
index 98c970aab409b4def05ec82ea452aad2054fe5cc..b6d6a2f12841ac5e3a6d096f6c321e56b61919ad 100644 (file)
@@ -42,7 +42,7 @@
 /* The next-to-last-ditch effort file name for a user-specific init file. */
 #define DEFAULT_INPUTRC "~/.inputrc"
 
-/* The ultimate last-ditch filenname for an init file -- system-wide. */
+/* The ultimate last-ditch filename for an init file -- system-wide. */
 #define SYS_INPUTRC "/etc/inputrc"
 
 /* If defined, expand tabs to spaces. */
index 4748a610b0b749e44606922bac4ad7bc7fb4e69a..6fd03f6a0c1e5819f47f74e25d93ddee5f14ff9e 100644 (file)
@@ -172,6 +172,10 @@ _rl_wcwidth (wc)
 #  define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0)
 #endif
 
+#define UTF8_SINGLEBYTE(c)     (((c) & 0x80) == 0)
+#define UTF8_MBFIRSTCHAR(c)    (((c) & 0xc0) == 0xc0)
+#define UTF8_MBCHAR(c)         (((c) & 0xc0) == 0x80)
+
 #else /* !HANDLE_MULTIBYTE */
 
 #undef MB_LEN_MAX
@@ -196,6 +200,12 @@ _rl_wcwidth (wc)
 #define MB_INVALIDCH(x)                (0)
 #define MB_NULLWCH(x)          (0)
 
+#define UTF8_SINGLEBYTE(c)     (1)
+
+#if !defined (HAVE_WCHAR_T) && !defined (wchar_t)
+#  define wchar_t int
+#endif
+
 #endif /* !HANDLE_MULTIBYTE */
 
 extern int rl_byte_oriented;
index fc3856a1b840c4d562d24f0e99e4df51e80271af..e85e4d8124da028bd27cb8794e6c41e3089b16b1 100644 (file)
@@ -26,6 +26,7 @@
 #include "rlconf.h"    /* for VISIBLE_STATS */
 #include "rlstdc.h"
 #include "posixjmp.h"  /* defines procenv_t */
+#include "rlmbutil.h"  /* for HANDLE_MULTIBYTE */
 
 /*************************************************************************
  *                                                                      *
@@ -64,6 +65,7 @@
 #define SF_FOUND               0x02
 #define SF_FAILED              0x04
 #define SF_CHGKMAP             0x08
+#define SF_PATTERN             0x10            /* unused so far */
 
 typedef struct  __rl_search_context
 {
@@ -305,10 +307,13 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
 #define BRACK_PASTE_SLEN       6
 
 #define BRACK_PASTE_INIT       "\033[?2004h"
-#define BRACK_PASTE_FINI       "\033[?2004l"
+#define BRACK_PASTE_FINI       "\033[?2004l\r"
+
+extern char *_rl_bracketed_text PARAMS((size_t *));
 
 /* macro.c */
 extern void _rl_with_macro_input PARAMS((char *));
+extern int _rl_peek_macro_key PARAMS((void));
 extern int _rl_next_macro_key PARAMS((void));
 extern int _rl_prev_macro_key PARAMS((void));
 extern void _rl_push_executing_macro PARAMS((void));
@@ -330,6 +335,7 @@ extern void _rl_set_insert_mode PARAMS((int, int));
 extern void _rl_revert_all_lines PARAMS((void));
 
 /* nls.c */
+extern char *_rl_init_locale PARAMS((void));
 extern int _rl_init_eightbit PARAMS((void));
 
 /* parens.c */
@@ -378,6 +384,7 @@ extern void _rl_set_cursor PARAMS((int, int));
 extern void _rl_fix_point PARAMS((int));
 extern int _rl_replace_text PARAMS((const char *, int, int));
 extern int _rl_forward_char_internal PARAMS((int));
+extern int _rl_backward_char_internal PARAMS((int));
 extern int _rl_insert_char PARAMS((int, int));
 extern int _rl_overwrite_char PARAMS((int, int));
 extern int _rl_overwrite_rubout PARAMS((int, int));
@@ -507,6 +514,7 @@ extern FILE *_rl_in_stream;
 extern FILE *_rl_out_stream;
 extern int _rl_last_command_was_kill;
 extern int _rl_eof_char;
+extern int _rl_eof_found;
 extern procenv_t _rl_top_level;
 extern _rl_keyseq_cxt *_rl_kscxt;
 extern int _rl_keyseq_timeout;
@@ -534,6 +542,7 @@ extern int _rl_enable_keypad;
 extern int _rl_enable_meta;
 extern char *_rl_term_clreol;
 extern char *_rl_term_clrpag;
+extern char *_rl_term_clrscroll;
 extern char *_rl_term_im;
 extern char *_rl_term_ic;
 extern char *_rl_term_ei;
index b1c79294186f55667fce393b46d54c5892d44743..d0cd572713a9bea108e0a8bd58fbb9e7582aa3a7 100644 (file)
@@ -1,7 +1,7 @@
 /* rltty.c -- functions to prepare and restore the terminal for readline's
    use. */
 
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -130,8 +130,7 @@ static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
 static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
 
 static void
-save_tty_chars (tiop)
-     TIOTYPE *tiop;
+save_tty_chars (TIOTYPE *tiop)
 {
   _rl_last_tty_chars = _rl_tty_chars;
 
@@ -168,9 +167,7 @@ save_tty_chars (tiop)
 }
 
 static int
-get_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+get_tty_settings (int tty, TIOTYPE *tiop)
 {
   set_winsize (tty);
 
@@ -200,9 +197,7 @@ get_tty_settings (tty, tiop)
 }
 
 static int
-set_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+set_tty_settings (int tty, TIOTYPE *tiop)
 {
   if (tiop->flags & SGTTY_SET)
     {
@@ -239,9 +234,7 @@ set_tty_settings (tty, tiop)
 }
 
 static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
-     int meta_flag;
-     TIOTYPE oldtio, *tiop;
+prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
 {
   _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
   _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL);
@@ -357,8 +350,7 @@ static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
 #endif
 
 static void
-save_tty_chars (tiop)
-     TIOTYPE *tiop;
+save_tty_chars (TIOTYPE *tiop)
 {
   _rl_last_tty_chars = _rl_tty_chars;
 
@@ -403,8 +395,7 @@ save_tty_chars (tiop)
 #if defined (_AIX) || defined (_AIX41)
 /* Currently this is only used on AIX */
 static void
-rltty_warning (msg)
-     char *msg;
+rltty_warning (char *msg)
 {
   _rl_errmsg ("warning: %s", msg);
 }
@@ -412,8 +403,7 @@ rltty_warning (msg)
 
 #if defined (_AIX)
 void
-setopost(tp)
-TIOTYPE *tp;
+setopost (TIOTYPE *tp)
 {
   if ((tp->c_oflag & OPOST) == 0)
     {
@@ -424,9 +414,7 @@ TIOTYPE *tp;
 #endif
 
 static int
-_get_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+_get_tty_settings (int tty, TIOTYPE *tiop)
 {
   int ioctl_ret;
 
@@ -457,9 +445,7 @@ _get_tty_settings (tty, tiop)
 }
 
 static int
-get_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+get_tty_settings (int tty, TIOTYPE *tiop)
 {
   set_winsize (tty);
 
@@ -475,9 +461,7 @@ get_tty_settings (tty, tiop)
 }
 
 static int
-_set_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+_set_tty_settings (int tty, TIOTYPE *tiop)
 {
   while (SETATTR (tty, tiop) < 0)
     {
@@ -489,9 +473,7 @@ _set_tty_settings (tty, tiop)
 }
 
 static int
-set_tty_settings (tty, tiop)
-     int tty;
-     TIOTYPE *tiop;
+set_tty_settings (int tty, TIOTYPE *tiop)
 {
   if (_set_tty_settings (tty, tiop) < 0)
     return -1;
@@ -518,10 +500,11 @@ set_tty_settings (tty, tiop)
 }
 
 static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
-     int meta_flag;
-     TIOTYPE oldtio, *tiop;
+prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
 {
+  int sc;
+  Keymap kmap;
+
   _rl_echoing_p = (oldtio.c_lflag & ECHO);
 #if defined (ECHOCTL)
   _rl_echoctl = (oldtio.c_lflag & ECHOCTL);
@@ -578,6 +561,20 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
   tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
 #endif
 
+  /* Conditionally disable some other tty special characters if there is a
+     key binding for them in the current keymap.  Readline ordinarily doesn't
+     bind these characters, but an application or user might. */
+#if defined (VI_MODE)
+      kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap;
+#else
+      kmap = _rl_keymap;
+#endif
+#if defined (VDISCARD)
+  sc = tiop->c_cc[VDISCARD];
+  if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC)
+    tiop->c_cc[VDISCARD] = _POSIX_VDISABLE;
+#endif /* VDISCARD */
+
 #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
 }
 #endif  /* !NEW_TTY_DRIVER */
@@ -585,21 +582,19 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
 /* Put the terminal in CBREAK mode so that we can detect key presses. */
 #if defined (NO_TTY_DRIVER)
 void
-rl_prep_terminal (meta_flag)
-     int meta_flag;
+rl_prep_terminal (int meta_flag)
 {
   _rl_echoing_p = 1;
 }
 
 void
-rl_deprep_terminal ()
+rl_deprep_terminal (void)
 {
 }
 
 #else /* ! NO_TTY_DRIVER */
 void
-rl_prep_terminal (meta_flag)
-     int meta_flag;
+rl_prep_terminal (int meta_flag)
 {
   int tty, nprep;
   TIOTYPE tio;
@@ -682,7 +677,7 @@ rl_prep_terminal (meta_flag)
 
 /* Restore the terminal's normal settings and modes. */
 void
-rl_deprep_terminal ()
+rl_deprep_terminal (void)
 {
   int tty;
 
@@ -695,7 +690,11 @@ rl_deprep_terminal ()
   tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
 
   if (terminal_prepped & TPX_BRACKPASTE)
-    fprintf (rl_outstream, BRACK_PASTE_FINI);
+    {
+      fprintf (rl_outstream, BRACK_PASTE_FINI);
+      if (_rl_eof_found)
+       fprintf (rl_outstream, "\n");
+    }
 
   if (_rl_enable_keypad)
     _rl_control_keypad (0);
@@ -718,8 +717,7 @@ rl_deprep_terminal ()
 /* Set readline's idea of whether or not it is echoing output to the terminal,
    returning the old value. */
 int
-rl_tty_set_echoing (u)
-     int u;
+rl_tty_set_echoing (int u)
 {
   int o;
 
@@ -735,8 +733,7 @@ rl_tty_set_echoing (u)
 /* **************************************************************** */
 
 int
-rl_restart_output (count, key)
-     int count, key;
+rl_restart_output (int count, int key)
 {
 #if defined (__MINGW32__)
   return 0;
@@ -773,8 +770,7 @@ rl_restart_output (count, key)
 }
 
 int
-rl_stop_output (count, key)
-     int count, key;
+rl_stop_output (int count, int key)
 {
 #if defined (__MINGW32__)
   return 0;
@@ -822,11 +818,7 @@ rl_stop_output (count, key)
 
 #elif defined (NEW_TTY_DRIVER)
 static void
-set_special_char (kmap, tiop, sc, func)
-     Keymap kmap;
-     TIOTYPE *tiop;
-     int sc;
-     rl_command_func_t *func;
+set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func)
 {
   if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC)
     kmap[(unsigned char)sc].function = func;
@@ -837,9 +829,7 @@ set_special_char (kmap, tiop, sc, func)
     kmap[(unsigned char)c].function = rl_insert;
 
 static void
-_rl_bind_tty_special_chars (kmap, ttybuff)
-     Keymap kmap;
-     TIOTYPE ttybuff;
+_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff)
 {
   if (ttybuff.flags & SGTTY_SET)
     {
@@ -858,11 +848,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff)
 
 #else /* !NEW_TTY_DRIVER */
 static void
-set_special_char (kmap, tiop, sc, func)
-     Keymap kmap;
-     TIOTYPE *tiop;
-     int sc;
-     rl_command_func_t *func;
+set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func)
 {
   unsigned char uc;
 
@@ -877,9 +863,7 @@ set_special_char (kmap, tiop, sc, func)
     kmap[uc].function = rl_insert;
 
 static void
-_rl_bind_tty_special_chars (kmap, ttybuff)
-     Keymap kmap;
-     TIOTYPE ttybuff;
+_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff)
 {
   SET_SPECIAL (VERASE, rl_rubout);
   SET_SPECIAL (VKILL, rl_unix_line_discard);
@@ -903,8 +887,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff)
 /* Set the system's default editing characters to their readline equivalents
    in KMAP.  Should be static, now that we have rl_tty_set_default_bindings. */
 void
-rltty_set_default_bindings (kmap)
-     Keymap kmap;
+rltty_set_default_bindings (Keymap kmap)
 {
 #if !defined (NO_TTY_DRIVER)
   TIOTYPE ttybuff;
@@ -920,8 +903,7 @@ rltty_set_default_bindings (kmap)
 /* New public way to set the system default editing chars to their readline
    equivalents. */
 void
-rl_tty_set_default_bindings (kmap)
-     Keymap kmap;
+rl_tty_set_default_bindings (Keymap kmap)
 {
   rltty_set_default_bindings (kmap);
 }
@@ -931,8 +913,7 @@ rl_tty_set_default_bindings (kmap)
    chars with save_tty_chars().  This only works on POSIX termios or termio
    systems. */
 void
-rl_tty_unset_default_bindings (kmap)
-     Keymap kmap;
+rl_tty_unset_default_bindings (Keymap kmap)
 {
   /* Don't bother before we've saved the tty special chars at least once. */
   if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0)
@@ -954,13 +935,13 @@ rl_tty_unset_default_bindings (kmap)
 
 #if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER)
 int
-_rl_disable_tty_signals ()
+_rl_disable_tty_signals (void)
 {
   return 0;
 }
 
 int
-_rl_restore_tty_signals ()
+_rl_restore_tty_signals (void)
 {
   return 0;
 }
@@ -970,7 +951,7 @@ static TIOTYPE sigstty, nosigstty;
 static int tty_sigs_disabled = 0;
 
 int
-_rl_disable_tty_signals ()
+_rl_disable_tty_signals (void)
 {
   if (tty_sigs_disabled)
     return 0;
@@ -991,7 +972,7 @@ _rl_disable_tty_signals ()
 }
 
 int
-_rl_restore_tty_signals ()
+_rl_restore_tty_signals (void)
 {
   int r;
 
index af9853801649a8f1f200a8492c625800edb6e408..f4bb6aa1a957832d65af73c43543ebba0ba3a157 100644 (file)
@@ -1,6 +1,6 @@
 /* savestring.c - function version of savestring for backwards compatibility */
 
-/* Copyright (C) 1998,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -30,8 +30,7 @@
 /* Backwards compatibility, now that savestring has been removed from
    all `public' readline header files. */
 char *
-savestring (s)
-     const char *s;
+savestring (const char *s)
 {
   char *ret;
 
index 45d95d2e71dc3d3a17e4bf25a555f6459b7911be..c9c1f5d1dd331cba431ec891300ba3693f6e1c14 100644 (file)
@@ -1,6 +1,6 @@
 /* search.c - code for non-incremental searching in emacs and vi modes. */
 
-/* Copyright (C) 1992-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -73,8 +73,8 @@ static char *history_search_string;
 static int history_string_size;
 
 static void make_history_line_current PARAMS((HIST_ENTRY *));
-static int noninc_search_from_pos PARAMS((char *, int, int));
-static int noninc_dosearch PARAMS((char *, int));
+static int noninc_search_from_pos PARAMS((char *, int, int, int, int *));
+static int noninc_dosearch PARAMS((char *, int, int));
 static int noninc_search PARAMS((int, int));
 static int rl_history_search_internal PARAMS((int, int));
 static void rl_history_search_reinit PARAMS((int));
@@ -87,8 +87,7 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int));
    current line.  This doesn't do anything with rl_point; the caller
    must set it. */
 static void
-make_history_line_current (entry)
-     HIST_ENTRY *entry;
+make_history_line_current (HIST_ENTRY *entry)
 {
   _rl_replace_text (entry->line, 0, rl_end);
   _rl_fix_point (1);
@@ -112,11 +111,10 @@ make_history_line_current (entry)
    for STRING.  DIR < 0 means to search backwards through the history list,
    DIR >= 0 means to search forward. */
 static int
-noninc_search_from_pos (string, pos, dir)
-     char *string;
-     int pos, dir;
+noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)
 {
-  int ret, old;
+  int ret, old, sflags;
+  char *s;
 
   if (pos < 0)
     return -1;
@@ -126,12 +124,28 @@ noninc_search_from_pos (string, pos, dir)
     return -1;
 
   RL_SETSTATE(RL_STATE_SEARCH);
-  if (*string == '^')
+  /* These functions return the match offset in the line; history_offset gives
+     the matching line in the history list */
+  if (flags & SF_PATTERN)
+    {
+      s = string;
+      sflags = 0;              /* Non-anchored search */
+      if (*s == '^')
+       {
+         sflags |= ANCHORED_SEARCH;
+         s++;
+       }
+      ret = _hs_history_patsearch (s, dir, sflags);
+    }
+  else if (*string == '^')
     ret = history_search_prefix (string + 1, dir);
   else
     ret = history_search (string, dir);
   RL_UNSETSTATE(RL_STATE_SEARCH);
 
+  if (ncp)
+    *ncp = ret;                /* caller will catch -1 to indicate no-op */
+
   if (ret != -1)
     ret = where_history ();
 
@@ -143,9 +157,7 @@ noninc_search_from_pos (string, pos, dir)
    search is backwards through previous entries, else through subsequent
    entries.  Returns 1 if the search was successful, 0 otherwise. */
 static int
-noninc_dosearch (string, dir)
-     char *string;
-     int dir;
+noninc_dosearch (char *string, int dir, int flags)
 {
   int oldpos, pos;
   HIST_ENTRY *entry;
@@ -156,7 +168,7 @@ noninc_dosearch (string, dir)
       return 0;
     }
 
-  pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir);
+  pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0);
   if (pos == -1)
     {
       /* Search failed, current history position unchanged. */
@@ -188,8 +200,7 @@ noninc_dosearch (string, dir)
 }
 
 static _rl_search_cxt *
-_rl_nsearch_init (dir, pchar)
-     int dir, pchar;
+_rl_nsearch_init (int dir, int pchar)
 {
   _rl_search_cxt *cxt;
   char *p;
@@ -197,6 +208,10 @@ _rl_nsearch_init (dir, pchar)
   cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0);
   if (dir < 0)
     cxt->sflags |= SF_REVERSE;         /* not strictly needed */
+#if defined (VI_MODE)
+  if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/'))
+    cxt->sflags |= SF_PATTERN;
+#endif
 
   cxt->direction = dir;
   cxt->history_pos = cxt->save_line;
@@ -224,9 +239,7 @@ _rl_nsearch_init (dir, pchar)
 }
 
 int
-_rl_nsearch_cleanup (cxt, r)
-     _rl_search_cxt *cxt;
-     int r;
+_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r)
 {
   _rl_scxt_dispose (cxt, 0);
   _rl_nscxt = 0;
@@ -237,8 +250,7 @@ _rl_nsearch_cleanup (cxt, r)
 }
 
 static void
-_rl_nsearch_abort (cxt)
-     _rl_search_cxt *cxt;
+_rl_nsearch_abort (_rl_search_cxt *cxt)
 {
   rl_maybe_unsave_line ();
   rl_clear_message ();
@@ -253,10 +265,11 @@ _rl_nsearch_abort (cxt)
    if the caller should abort the search, 0 if we should break out of the
    loop, and 1 if we should continue to read characters. */
 static int
-_rl_nsearch_dispatch (cxt, c)
-     _rl_search_cxt *cxt;
-     int c;
+_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
 {
+  if (c < 0)
+    c = CTRL ('C');  
+
   switch (c)
     {
     case CTRL('W'):
@@ -306,8 +319,7 @@ _rl_nsearch_dispatch (cxt, c)
    using _rl_nsearch_cleanup ().  Returns 1 if the search was successful,
    0 otherwise. */
 static int
-_rl_nsearch_dosearch (cxt)
-     _rl_search_cxt *cxt;
+_rl_nsearch_dosearch (_rl_search_cxt *cxt)
 {
   rl_mark = cxt->save_mark;
 
@@ -340,7 +352,7 @@ _rl_nsearch_dosearch (cxt)
     }
 
   rl_restore_prompt ();
-  return (noninc_dosearch (noninc_search_string, cxt->direction));
+  return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN));
 }
 
 /* Search non-interactively through the history list.  DIR < 0 means to
@@ -349,9 +361,7 @@ _rl_nsearch_dosearch (cxt)
    history list.  PCHAR is the character to use for prompting when reading
    the search string; if not specified (0), it defaults to `:'. */
 static int
-noninc_search (dir, pchar)
-     int dir;
-     int pchar;
+noninc_search (int dir, int pchar)
 {
   _rl_search_cxt *cxt;
   int c, r;
@@ -367,6 +377,12 @@ noninc_search (dir, pchar)
     {
       c = _rl_search_getchar (cxt);
 
+      if (c < 0)
+       {
+         _rl_nsearch_abort (cxt);
+         return 1;
+       }
+         
       if (c == 0)
        break;
 
@@ -384,8 +400,7 @@ noninc_search (dir, pchar)
 /* Search forward through the history list for a string.  If the vi-mode
    code calls this, KEY will be `?'. */
 int
-rl_noninc_forward_search (count, key)
-     int count, key;
+rl_noninc_forward_search (int count, int key)
 {
   return noninc_search (1, (key == '?') ? '?' : 0);
 }
@@ -393,17 +408,16 @@ rl_noninc_forward_search (count, key)
 /* Reverse search the history list for a string.  If the vi-mode code
    calls this, KEY will be `/'. */
 int
-rl_noninc_reverse_search (count, key)
-     int count, key;
+rl_noninc_reverse_search (int count, int key)
 {
   return noninc_search (-1, (key == '/') ? '/' : 0);
 }
 
 /* Search forward through the history list for the last string searched
-   for.  If there is no saved search string, abort. */
+   for.  If there is no saved search string, abort.  If the vi-mode code
+   calls this, KEY will be `N'. */
 int
-rl_noninc_forward_search_again (count, key)
-     int count, key;
+rl_noninc_forward_search_again (int count, int key)
 {
   int r;
 
@@ -412,15 +426,20 @@ rl_noninc_forward_search_again (count, key)
       rl_ding ();
       return (1);
     }
-  r = noninc_dosearch (noninc_search_string, 1);
+#if defined (VI_MODE)
+  if (VI_COMMAND_MODE() && key == 'N')
+    r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN);
+  else
+#endif
+    r = noninc_dosearch (noninc_search_string, 1, 0);
   return (r != 1);
 }
 
 /* Reverse search in the history list for the last string searched
-   for.  If there is no saved search string, abort. */
+   for.  If there is no saved search string, abort.  If the vi-mode code
+   calls this, KEY will be `n'. */
 int
-rl_noninc_reverse_search_again (count, key)
-     int count, key;
+rl_noninc_reverse_search_again (int count, int key)
 {
   int r;
 
@@ -429,18 +448,28 @@ rl_noninc_reverse_search_again (count, key)
       rl_ding ();
       return (1);
     }
-  r = noninc_dosearch (noninc_search_string, -1);
+#if defined (VI_MODE)
+  if (VI_COMMAND_MODE() && key == 'n')
+    r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN);
+  else
+#endif
+    r = noninc_dosearch (noninc_search_string, -1, 0);
   return (r != 1);
 }
 
 #if defined (READLINE_CALLBACKS)
 int
-_rl_nsearch_callback (cxt)
-     _rl_search_cxt *cxt;
+_rl_nsearch_callback (_rl_search_cxt *cxt)
 {
   int c, r;
 
   c = _rl_search_getchar (cxt);
+  if (c <= 0)
+    {
+      if (c < 0)
+        _rl_nsearch_abort (cxt);
+      return 1;
+    }
   r = _rl_nsearch_dispatch (cxt, c);
   if (r != 0)
     return 1;
@@ -451,11 +480,10 @@ _rl_nsearch_callback (cxt)
 #endif
   
 static int
-rl_history_search_internal (count, dir)
-     int count, dir;
+rl_history_search_internal (int count, int dir)
 {
   HIST_ENTRY *temp;
-  int ret, oldpos;
+  int ret, oldpos, newcol;
   char *t;
 
   rl_maybe_save_line ();
@@ -469,7 +497,7 @@ rl_history_search_internal (count, dir)
   while (count)
     {
       RL_CHECK_SIGNALS ();
-      ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir);
+      ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol);
       if (ret == -1)
        break;
 
@@ -512,12 +540,17 @@ rl_history_search_internal (count, dir)
   /* Copy the line we found into the current line buffer. */
   make_history_line_current (temp);
 
+  /* decide where to put rl_point -- need to change this for pattern search */
   if (rl_history_search_flags & ANCHORED_SEARCH)
     rl_point = rl_history_search_len;  /* easy case */
   else
     {
-      t = strstr (rl_line_buffer, history_search_string);
+#if 0
+      t = strstr (rl_line_buffer, history_search_string);      /* XXX */
       rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end;
+#else
+      rl_point = (newcol >= 0) ? newcol : rl_end;
+#endif
     }
   rl_mark = rl_end;
 
@@ -525,8 +558,7 @@ rl_history_search_internal (count, dir)
 }
 
 static void
-rl_history_search_reinit (flags)
-     int flags;
+rl_history_search_reinit (int flags)
 {
   int sind;
 
@@ -556,8 +588,7 @@ rl_history_search_reinit (flags)
    from the start of the line to rl_point.  This is a non-incremental
    search.  The search is anchored to the beginning of the history line. */
 int
-rl_history_search_forward (count, ignore)
-     int count, ignore;
+rl_history_search_forward (int count, int ignore)
 {
   if (count == 0)
     return (0);
@@ -575,8 +606,7 @@ rl_history_search_forward (count, ignore)
    from the start of the line to rl_point.  This is a non-incremental
    search. */
 int
-rl_history_search_backward (count, ignore)
-     int count, ignore;
+rl_history_search_backward (int count, int ignore)
 {
   if (count == 0)
     return (0);
@@ -595,8 +625,7 @@ rl_history_search_backward (count, ignore)
    search.  The search succeeds if the search string is present anywhere
    in the history line. */
 int
-rl_history_substr_search_forward (count, ignore)
-     int count, ignore;
+rl_history_substr_search_forward (int count, int ignore)
 {
   if (count == 0)
     return (0);
@@ -614,8 +643,7 @@ rl_history_substr_search_forward (count, ignore)
    from the start of the line to rl_point.  This is a non-incremental
    search. */
 int
-rl_history_substr_search_backward (count, ignore)
-     int count, ignore;
+rl_history_substr_search_backward (int count, int ignore)
 {
   if (count == 0)
     return (0);
index 6947295e50e8952f5a1af04b56a7707833932363..7fe2e97c983360641288ca4ecca254932c6bf053 100644 (file)
@@ -1,7 +1,7 @@
 /* shell.c -- readline utility functions that are normally provided by
              bash when readline is linked as part of the shell. */
 
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -92,8 +92,7 @@ extern struct passwd *getpwuid PARAMS((uid_t));
 
 /* Does shell-like quoting using single quotes. */
 char *
-sh_single_quote (string)
-     char *string;
+sh_single_quote (char *string)
 {
   register int c;
   char *result, *r, *s;
@@ -127,8 +126,7 @@ static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1];    /* sizeof("LINES=") ==
 static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1];       /* sizeof("COLUMNS=") == 8 */
 
 void
-sh_set_lines_and_columns (lines, cols)
-     int lines, cols;
+sh_set_lines_and_columns (int lines, int cols)
 {
 #if defined (HAVE_SETENV)
   sprintf (setenv_buf, "%d", lines);
@@ -148,14 +146,13 @@ sh_set_lines_and_columns (lines, cols)
 }
 
 char *
-sh_get_env_value (varname)
-     const char *varname;
+sh_get_env_value (const char *varname)
 {
   return ((char *)getenv (varname));
 }
 
 char *
-sh_get_home_dir ()
+sh_get_home_dir (void)
 {
   static char *home_dir = (char *)NULL;
   struct passwd *entry;
@@ -188,8 +185,7 @@ sh_get_home_dir ()
 #endif
 
 int
-sh_unset_nodelay_mode (fd)
-     int fd;
+sh_unset_nodelay_mode (int fd)
 {
 #if defined (HAVE_FCNTL)
   int flags, bflags;
index 927f532304efa51e99c9c87ca10056394d29079a..76c5c4733010b61e5a891ebcf0c3fd308274975e 100644 (file)
@@ -1,6 +1,6 @@
 /* signals.c -- signal handling support for readline. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -113,6 +113,10 @@ int _rl_susp_char = 0;
 static int signals_set_flag;
 static int sigwinch_set_flag;
 
+#if defined (HAVE_POSIX_SIGNALS)
+sigset_t _rl_orig_sigset;
+#endif /* !HAVE_POSIX_SIGNALS */
+
 /* **************************************************************** */
 /*                                                                 */
 /*                        Signal Handling                          */
@@ -134,8 +138,7 @@ void *_rl_sigcleanarg;
 
 /* Called from RL_CHECK_SIGNALS() macro */
 RETSIGTYPE
-_rl_signal_handler (sig)
-     int sig;
+_rl_signal_handler (int sig)
 {
   _rl_caught_signal = 0;       /* XXX */
 
@@ -158,8 +161,7 @@ _rl_signal_handler (sig)
 }
 
 static RETSIGTYPE
-rl_signal_handler (sig)
-     int sig;
+rl_signal_handler (int sig)
 {
   if (_rl_interrupt_immediately)
     {
@@ -173,8 +175,7 @@ rl_signal_handler (sig)
 }
 
 static RETSIGTYPE
-_rl_handle_signal (sig)
-     int sig;
+_rl_handle_signal (int sig)
 {
 #if defined (HAVE_POSIX_SIGNALS)
   sigset_t set;
@@ -248,9 +249,11 @@ _rl_handle_signal (sig)
       rl_cleanup_after_signal ();
 
 #if defined (HAVE_POSIX_SIGNALS)
+#  if defined (SIGTSTP)
       /* Unblock SIGTTOU blocked above */
       if (sig == SIGTTIN || sig == SIGTSTP)
        sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL);
+#  endif
 
       sigemptyset (&set);
       sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
@@ -289,8 +292,7 @@ _rl_handle_signal (sig)
 
 #if defined (SIGWINCH)
 static RETSIGTYPE
-rl_sigwinch_handler (sig)
-     int sig;
+rl_sigwinch_handler (int sig)
 {
   SigHandler *oh;
 
@@ -321,9 +323,7 @@ rl_sigwinch_handler (sig)
 
 #if !defined (HAVE_POSIX_SIGNALS)
 static int
-rl_sigaction (sig, nh, oh)
-     int sig;
-     sighandler_cxt *nh, *oh;
+rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh)
 {
   oh->sa_handler = signal (sig, nh->sa_handler);
   return 0;
@@ -334,10 +334,7 @@ rl_sigaction (sig, nh, oh)
    information in OHANDLER.  Return the old signal handler, like
    signal(). */
 static SigHandler *
-rl_set_sighandler (sig, handler, ohandler)
-     int sig;
-     SigHandler *handler;
-     sighandler_cxt *ohandler;
+rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
 {
   sighandler_cxt old_handler;
 #if defined (HAVE_POSIX_SIGNALS)
@@ -368,10 +365,7 @@ rl_set_sighandler (sig, handler, ohandler)
 /* Set disposition of SIG to HANDLER, returning old state in OHANDLER.  Don't
    change disposition if OHANDLER indicates the signal was ignored. */
 static void
-rl_maybe_set_sighandler (sig, handler, ohandler)
-     int sig;
-     SigHandler *handler;
-     sighandler_cxt *ohandler;
+rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
 {
   sighandler_cxt dummy;
   SigHandler *oh;
@@ -388,9 +382,7 @@ rl_maybe_set_sighandler (sig, handler, ohandler)
    disposition was changed using rl_maybe_set_sighandler or for which the
    SIG_IGN check was performed inline (e.g., SIGALRM below). */
 static void
-rl_maybe_restore_sighandler (sig, handler)
-     int sig;
-     sighandler_cxt *handler;
+rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler)
 {
   sighandler_cxt dummy;
 
@@ -401,7 +393,7 @@ rl_maybe_restore_sighandler (sig, handler)
 }
 
 int
-rl_set_signals ()
+rl_set_signals (void)
 {
   sighandler_cxt dummy;
   SigHandler *oh;
@@ -442,8 +434,8 @@ rl_set_signals ()
   if (rl_catch_signals && signals_set_flag == 0)
     {
 #if defined (HAVE_POSIX_SIGNALS)
-      sigemptyset (&oset);
-      sigprocmask (SIG_BLOCK, &bset, &oset);
+      sigemptyset (&_rl_orig_sigset);
+      sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset);
 #endif
 
       rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
@@ -484,7 +476,14 @@ rl_set_signals ()
       signals_set_flag = 1;
 
 #if defined (HAVE_POSIX_SIGNALS)
-      sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+      sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL);
+#endif
+    }
+  else if (rl_catch_signals == 0)
+    {
+#if defined (HAVE_POSIX_SIGNALS)
+      sigemptyset (&_rl_orig_sigset);
+      sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset);
 #endif
     }
 
@@ -500,14 +499,12 @@ rl_set_signals ()
 }
 
 int
-rl_clear_signals ()
+rl_clear_signals (void)
 {
   sighandler_cxt dummy;
 
   if (rl_catch_signals && signals_set_flag == 1)
     {
-      sigemptyset (&dummy.sa_mask);
-
       /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler,
         we should in theory not have to restore a handler where
         old_xxx.sa_handler == SIG_IGN.  That's what rl_maybe_restore_sighandler
@@ -555,7 +552,7 @@ rl_clear_signals ()
 /* Clean up the terminal and readline state after catching a signal, before
    resending it to the calling application. */
 void
-rl_cleanup_after_signal ()
+rl_cleanup_after_signal (void)
 {
   _rl_clean_up_for_exit ();
   if (rl_deprep_term_function)
@@ -566,7 +563,7 @@ rl_cleanup_after_signal ()
 
 /* Reset the terminal and readline state after a signal handler returns. */
 void
-rl_reset_after_signal ()
+rl_reset_after_signal (void)
 {
   if (rl_prep_term_function)
     (*rl_prep_term_function) (_rl_meta_flag);
@@ -578,7 +575,7 @@ rl_reset_after_signal ()
    numeric arguments in process) after catching a signal, before calling
    rl_cleanup_after_signal(). */ 
 void
-rl_free_line_state ()
+rl_free_line_state (void)
 {
   register HIST_ENTRY *entry;
 
@@ -594,10 +591,16 @@ rl_free_line_state ()
 }
 
 int
-rl_pending_signal ()
+rl_pending_signal (void)
 {
   return (_rl_caught_signal);
 }
+
+void
+rl_check_signals (void)
+{
+  RL_CHECK_SIGNALS ();
+}
 #endif  /* HANDLE_SIGNALS */
 
 /* **************************************************************** */
@@ -622,7 +625,7 @@ static int sigwinch_blocked;
 /* Cause SIGINT to not be delivered until the corresponding call to
    release_sigint(). */
 void
-_rl_block_sigint ()
+_rl_block_sigint (void)
 {
   if (sigint_blocked)
     return;
@@ -632,7 +635,7 @@ _rl_block_sigint ()
 
 /* Allow SIGINT to be delivered. */
 void
-_rl_release_sigint ()
+_rl_release_sigint (void)
 {
   if (sigint_blocked == 0)
     return;
@@ -644,7 +647,7 @@ _rl_release_sigint ()
 /* Cause SIGWINCH to not be delivered until the corresponding call to
    release_sigwinch(). */
 void
-_rl_block_sigwinch ()
+_rl_block_sigwinch (void)
 {
   if (sigwinch_blocked)
     return;
@@ -673,7 +676,7 @@ _rl_block_sigwinch ()
 
 /* Allow SIGWINCH to be delivered. */
 void
-_rl_release_sigwinch ()
+_rl_release_sigwinch (void)
 {
   if (sigwinch_blocked == 0)
     return;
@@ -703,8 +706,7 @@ _rl_release_sigwinch ()
 /*                                                                 */
 /* **************************************************************** */
 void
-rl_echo_signal_char (sig)
-     int sig;
+rl_echo_signal_char (int sig)
 {
   char cstr[3];
   int cslen, c;
index ef2884e0f987bc9a7741c1d01dfcaa8d7b6fb1f9..e5573897762ee8fc37840354a06ffe863ba2ad7d 100644 (file)
@@ -1,6 +1,6 @@
 /* terminal.c -- controlling the terminal with termcap. */
 
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -112,6 +112,7 @@ char PC, *BC, *UP;
 /* Some strings to control terminal actions.  These are output by tputs (). */
 char *_rl_term_clreol;
 char *_rl_term_clrpag;
+char *_rl_term_clrscroll;
 char *_rl_term_cr;
 char *_rl_term_backspace;
 char *_rl_term_goto;
@@ -131,6 +132,7 @@ char *_rl_term_IC;
 char *_rl_term_dc;
 char *_rl_term_DC;
 
+/* How to move forward a char, non-destructively */
 char *_rl_term_forward_char;
 
 /* How to go up a line. */
@@ -188,8 +190,7 @@ int _rl_enable_meta = 1;
 
 #if defined (__EMX__)
 static void
-_emx_get_screensize (swp, shp)
-     int *swp, *shp;
+_emx_get_screensize (int *swp, int *shp)
 {
   int sz[2];
 
@@ -204,8 +205,7 @@ _emx_get_screensize (swp, shp)
 
 #if defined (__MINGW32__)
 static void
-_win_get_screensize (swp, shp)
-     int *swp, *shp;
+_win_get_screensize (int *swp, int *shp)
 {
   HANDLE hConOut;
   CONSOLE_SCREEN_BUFFER_INFO scr;
@@ -227,8 +227,7 @@ _win_get_screensize (swp, shp)
    values of $LINES and $COLUMNS.  The tests for TERM_STRING_BUFFER being
    non-null serve to check whether or not we have initialized termcap. */
 void
-_rl_get_screen_size (tty, ignore_env)
-     int tty, ignore_env;
+_rl_get_screen_size (int tty, int ignore_env)
 {
   char *ss;
 #if defined (TIOCGWINSZ)
@@ -318,8 +317,7 @@ _rl_get_screen_size (tty, ignore_env)
 }
 
 void
-_rl_set_screen_size (rows, cols)
-     int rows, cols;
+_rl_set_screen_size (int rows, int cols)
 {
   if (_rl_term_autowrap == -1)
     _rl_init_terminal_io (rl_terminal_name);
@@ -338,15 +336,13 @@ _rl_set_screen_size (rows, cols)
 }
 
 void
-rl_set_screen_size (rows, cols)
-     int rows, cols;
+rl_set_screen_size (int rows, int cols)
 {
   _rl_set_screen_size (rows, cols);
 }
 
 void
-rl_get_screen_size (rows, cols)
-     int *rows, *cols;
+rl_get_screen_size (int *rows, int *cols)
 {
   if (rows)
     *rows = _rl_screenheight;
@@ -355,19 +351,19 @@ rl_get_screen_size (rows, cols)
 }
 
 void
-rl_reset_screen_size ()
+rl_reset_screen_size (void)
 {
   _rl_get_screen_size (fileno (rl_instream), 0);
 }
 
 void
-_rl_sigwinch_resize_terminal ()
+_rl_sigwinch_resize_terminal (void)
 {
   _rl_get_screen_size (fileno (rl_instream), 1);
 }
        
 void
-rl_resize_terminal ()
+rl_resize_terminal (void)
 {
   _rl_get_screen_size (fileno (rl_instream), 1);
   if (_rl_echoing_p)
@@ -390,6 +386,7 @@ static const struct _tc_string tc_strings[] =
 {
   { "@7", &_rl_term_at7 },
   { "DC", &_rl_term_DC },
+  { "E3", &_rl_term_clrscroll },
   { "IC", &_rl_term_IC },
   { "ce", &_rl_term_clreol },
   { "cl", &_rl_term_clrpag },
@@ -424,8 +421,7 @@ static const struct _tc_string tc_strings[] =
 /* Read the desired terminal capability strings into BP.  The capabilities
    are described in the TC_STRINGS table. */
 static void
-get_term_capabilities (bp)
-     char **bp;
+get_term_capabilities (char **bp)
 {
 #if !defined (__DJGPP__)       /* XXX - doesn't DJGPP have a termcap library? */
   register int i;
@@ -437,15 +433,14 @@ get_term_capabilities (bp)
 }
 
 int
-_rl_init_terminal_io (terminal_name)
-     const char *terminal_name;
+_rl_init_terminal_io (const char *terminal_name)
 {
   const char *term;
   char *buffer;
   int tty, tgetent_ret;
 
   term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
-  _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL;
+  _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL;
   tty = rl_instream ? fileno (rl_instream) : 0;
 
   if (term == 0)
@@ -458,7 +453,7 @@ _rl_init_terminal_io (terminal_name)
   _rl_term_mm = _rl_term_mo = (char *)NULL;
   _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0;
   _rl_term_cr = "\r";
-  _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL;
+  _rl_term_backspace = (char *)NULL;
   _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL;
   _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL;
   _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL;
@@ -584,8 +579,7 @@ _rl_init_terminal_io (terminal_name)
 
 /* Bind the arrow key sequences from the termcap description in MAP. */
 static void
-bind_termcap_arrow_keys (map)
-     Keymap map;
+bind_termcap_arrow_keys (Keymap map)
 {
   Keymap xkeymap;
 
@@ -601,13 +595,13 @@ bind_termcap_arrow_keys (map)
   rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line);    /* End */
 
   rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete);
+  rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode);  /* Insert */
 
   _rl_keymap = xkeymap;
 }
 
 char *
-rl_get_termcap (cap)
-     const char *cap;
+rl_get_termcap (const char *cap)
 {
   register int i;
 
@@ -624,8 +618,7 @@ rl_get_termcap (cap)
 /* Re-initialize the terminal considering that the TERM/TERMCAP variable
    has changed. */
 int
-rl_reset_terminal (terminal_name)
-     const char *terminal_name;
+rl_reset_terminal (const char *terminal_name)
 {
   _rl_screenwidth = _rl_screenheight = 0;
   _rl_init_terminal_io (terminal_name);
@@ -635,15 +628,13 @@ rl_reset_terminal (terminal_name)
 /* A function for the use of tputs () */
 #ifdef _MINIX
 void
-_rl_output_character_function (c)
-     int c;
+_rl_output_character_function (int c)
 {
   putc (c, _rl_out_stream);
 }
 #else /* !_MINIX */
 int
-_rl_output_character_function (c)
-     int c;
+_rl_output_character_function (int c)
 {
   return putc (c, _rl_out_stream);
 }
@@ -651,17 +642,14 @@ _rl_output_character_function (c)
 
 /* Write COUNT characters from STRING to the output stream. */
 void
-_rl_output_some_chars (string, count)
-     const char *string;
-     int count;
+_rl_output_some_chars (const char *string, int count)
 {
   fwrite (string, 1, count, _rl_out_stream);
 }
 
 /* Move the cursor back. */
 int
-_rl_backspace (count)
-     int count;
+_rl_backspace (int count)
 {
   register int i;
 
@@ -678,7 +666,7 @@ _rl_backspace (count)
 
 /* Move to the start of the next line. */
 int
-rl_crlf ()
+rl_crlf (void)
 {
 #if defined (NEW_TTY_DRIVER) || defined (__MINT__)
   if (_rl_term_cr)
@@ -690,7 +678,7 @@ rl_crlf ()
 
 /* Ring the terminal bell. */
 int
-rl_ding ()
+rl_ding (void)
 {
   if (_rl_echoing_p)
     {
@@ -729,7 +717,7 @@ rl_ding ()
 static int enabled_meta = 0;   /* flag indicating we enabled meta mode */
 
 void
-_rl_enable_meta_key ()
+_rl_enable_meta_key (void)
 {
 #if !defined (__DJGPP__)
   if (term_has_meta && _rl_term_mm)
@@ -741,7 +729,7 @@ _rl_enable_meta_key ()
 }
 
 void
-_rl_disable_meta_key ()
+_rl_disable_meta_key (void)
 {
 #if !defined (__DJGPP__)
   if (term_has_meta && _rl_term_mo && enabled_meta)
@@ -753,8 +741,7 @@ _rl_disable_meta_key ()
 }
 
 void
-_rl_control_keypad (on)
-     int on;
+_rl_control_keypad (int on)
 {
 #if !defined (__DJGPP__)
   if (on && _rl_term_ks)
@@ -775,8 +762,7 @@ _rl_control_keypad (on)
    cursor.  Overwrite mode gets a very visible cursor.  Only does
    anything if we have both capabilities. */
 void
-_rl_set_cursor (im, force)
-     int im, force;
+_rl_set_cursor (int im, int force)
 {
 #ifndef __MSDOS__
   if (_rl_term_ve && _rl_term_vs)
index c353252bc9fbe8adee0bf206a994c2d85d9eee73..cddaeebd2d7832d81c292146f26a751ea3aae518 100644 (file)
@@ -1,6 +1,6 @@
 /* text.c -- text handling commands for readline. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -83,8 +83,7 @@ int _rl_optimize_typeahead = 1;       /* rl_insert tries to read typeahead */
    way that you should do insertion.  _rl_insert_char () calls this
    function.  Returns the number of characters inserted. */
 int
-rl_insert_text (string)
-     const char *string;
+rl_insert_text (const char *string)
 {
   register int i, l;
 
@@ -121,8 +120,7 @@ rl_insert_text (string)
 /* Delete the string between FROM and TO.  FROM is inclusive, TO is not.
    Returns the number of characters deleted. */
 int
-rl_delete_text (from, to)
-     int from, to;
+rl_delete_text (int from, int to)
 {
   register char *text;
   register int diff, i;
@@ -172,8 +170,7 @@ rl_delete_text (from, to)
        } while (0)
 
 void
-_rl_fix_point (fix_mark_too)
-     int fix_mark_too;
+_rl_fix_point (int fix_mark_too)
 {
   _RL_FIX_POINT (rl_point);
   if (fix_mark_too)
@@ -185,9 +182,7 @@ _rl_fix_point (fix_mark_too)
    TEXT.  The operation is undoable.  To replace the entire line in an
    undoable mode, use _rl_replace_text(text, 0, rl_end); */
 int
-_rl_replace_text (text, start, end)
-     const char *text;
-     int start, end;
+_rl_replace_text (const char *text, int start, int end)
 {
   int n;
 
@@ -206,9 +201,7 @@ _rl_replace_text (text, start, end)
 /* Replace the current line buffer contents with TEXT.  If CLEAR_UNDO is
    non-zero, we free the current undo list. */
 void
-rl_replace_line (text, clear_undo)
-     const char *text;
-     int clear_undo;
+rl_replace_line (const char *text, int clear_undo)
 {
   int len;
 
@@ -259,8 +252,7 @@ rl_replace_line (text, clear_undo)
 
 /* Move forward COUNT bytes. */
 int
-rl_forward_byte (count, key)
-     int count, key;
+rl_forward_byte (int count, int key)
 {
   if (count < 0)
     return (rl_backward_byte (-count, key));
@@ -292,8 +284,7 @@ rl_forward_byte (count, key)
 }
 
 int
-_rl_forward_char_internal (count)
-     int count;
+_rl_forward_char_internal (int count)
 {
   int point;
 
@@ -306,21 +297,47 @@ _rl_forward_char_internal (count)
 #endif
 
     if (rl_end < 0)
-       rl_end = 0;
+      rl_end = 0;
 #else
   point = rl_point + count;
+#endif
+
   if (point > rl_end)
     point = rl_end;
+  return (point);
+}
+
+int
+_rl_backward_char_internal (int count)
+{
+  int point;
+
+  point = rl_point;
+#if defined (HANDLE_MULTIBYTE)
+  if (count > 0)
+    {
+      while (count > 0 && point > 0)
+       {
+         point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO);
+         count--;
+       }
+      if (count > 0)
+        return 0;      /* XXX - rl_ding() here? */
+    }
+#else
+  if (count > 0)
+    point -= count;
 #endif
 
+  if (point < 0)
+    point = 0;
   return (point);
 }
 
 #if defined (HANDLE_MULTIBYTE)
 /* Move forward COUNT characters. */
 int
-rl_forward_char (count, key)
-     int count, key;
+rl_forward_char (int count, int key)
 {
   int point;
 
@@ -350,8 +367,7 @@ rl_forward_char (count, key)
 }
 #else /* !HANDLE_MULTIBYTE */
 int
-rl_forward_char (count, key)
-     int count, key;
+rl_forward_char (int count, int key)
 {
   return (rl_forward_byte (count, key));
 }
@@ -359,16 +375,14 @@ rl_forward_char (count, key)
   
 /* Backwards compatibility. */
 int
-rl_forward (count, key)
-     int count, key;
+rl_forward (int count, int key)
 {
   return (rl_forward_char (count, key));
 }
 
 /* Move backward COUNT bytes. */
 int
-rl_backward_byte (count, key)
-     int count, key;
+rl_backward_byte (int count, int key)
 {
   if (count < 0)
     return (rl_forward_byte (-count, key));
@@ -393,8 +407,7 @@ rl_backward_byte (count, key)
 #if defined (HANDLE_MULTIBYTE)
 /* Move backward COUNT characters. */
 int
-rl_backward_char (count, key)
-     int count, key;
+rl_backward_char (int count, int key)
 {
   int point;
 
@@ -426,8 +439,7 @@ rl_backward_char (count, key)
 }
 #else
 int
-rl_backward_char (count, key)
-     int count, key;
+rl_backward_char (int count, int key)
 {
   return (rl_backward_byte (count, key));
 }
@@ -435,16 +447,14 @@ rl_backward_char (count, key)
 
 /* Backwards compatibility. */
 int
-rl_backward (count, key)
-     int count, key;
+rl_backward (int count, int key)
 {
   return (rl_backward_char (count, key));
 }
 
 /* Move to the beginning of the line. */
 int
-rl_beg_of_line (count, key)
-     int count, key;
+rl_beg_of_line (int count, int key)
 {
   rl_point = 0;
   return 0;
@@ -452,8 +462,7 @@ rl_beg_of_line (count, key)
 
 /* Move to the end of the line. */
 int
-rl_end_of_line (count, key)
-     int count, key;
+rl_end_of_line (int count, int key)
 {
   rl_point = rl_end;
   return 0;
@@ -461,8 +470,7 @@ rl_end_of_line (count, key)
 
 /* Move forward a word.  We do what Emacs does.  Handles multibyte chars. */
 int
-rl_forward_word (count, key)
-     int count, key;
+rl_forward_word (int count, int key)
 {
   int c;
 
@@ -510,8 +518,7 @@ rl_forward_word (count, key)
 
 /* Move backward a word.  We do what Emacs does.  Handles multibyte chars. */
 int
-rl_backward_word (count, key)
-     int count, key;
+rl_backward_word (int count, int key)
 {
   int c, p;
 
@@ -560,8 +567,7 @@ rl_backward_word (count, key)
 
 /* Clear the current line.  Numeric argument to C-l does this. */
 int
-rl_refresh_line (ignore1, ignore2)
-     int ignore1, ignore2;
+rl_refresh_line (int ignore1, int ignore2)
 {
   int curr_line;
 
@@ -582,8 +588,7 @@ rl_refresh_line (ignore1, ignore2)
    the prompt and the current input line.  Given a numeric arg, redraw only
    the current line. */
 int
-rl_clear_screen (count, key)
-     int count, key;
+rl_clear_screen (int count, int key)
 {
   if (rl_explicit_arg)
     {
@@ -599,8 +604,25 @@ rl_clear_screen (count, key)
 }
 
 int
-rl_skip_csi_sequence (count, key)
-     int count, key;
+rl_previous_screen_line (int count, int key)
+{
+  int c;
+
+  c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1);
+  return (rl_backward_char (c, key));
+}
+
+int
+rl_next_screen_line (int count, int key)
+{
+  int c;
+
+  c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1);
+  return (rl_forward_char (c, key));
+}
+
+int
+rl_skip_csi_sequence (int count, int key)
 {
   int ch;
 
@@ -614,8 +636,7 @@ rl_skip_csi_sequence (count, key)
 }
 
 int
-rl_arrow_keys (count, c)
-     int count, c;
+rl_arrow_keys (int count, int key)
 {
   int ch;
 
@@ -672,8 +693,7 @@ static mbstate_t ps = {0};
    If C introduces a multibyte sequence, we read the whole sequence and
    then insert the multibyte char into the line buffer. */
 int
-_rl_insert_char (count, c)
-     int count, c;
+_rl_insert_char (int count, int c)
 {
   register int i;
   char *string;
@@ -695,6 +715,12 @@ _rl_insert_char (count, c)
       incoming[1] = '\0';
       incoming_length = 1;
     }
+  else if (_rl_utf8locale && (c & 0x80) == 0)
+    {
+      incoming[0] = c;
+      incoming[1] = '\0';
+      incoming_length = 1;
+    }
   else
     {
       wchar_t wc;
@@ -739,6 +765,12 @@ _rl_insert_char (count, c)
             effect of mbstate is undefined. */
          memset (&ps, 0, sizeof (mbstate_t));
        }
+      else if (ret == 1)
+       {
+         incoming[0] = pending_bytes[0];
+         incoming[incoming_length = 1] = '\0';
+         pending_bytes_length = 0;
+       }
       else
        {
          /* We successfully read a single multibyte character. */
@@ -761,8 +793,13 @@ _rl_insert_char (count, c)
       i = 0;
       while (i < string_size)
        {
-         strncpy (string + i, incoming, incoming_length);
-         i += incoming_length;
+         if (incoming_length == 1)
+           string[i++] = *incoming;
+         else
+           {
+             strncpy (string + i, incoming, incoming_length);
+             i += incoming_length;
+           }
        }
       incoming_length = 0;
       stored_count = 0;
@@ -790,8 +827,13 @@ _rl_insert_char (count, c)
       i = 0;
       while (i < string_size)
        {
-         strncpy (string + i, incoming, incoming_length);
-         i += incoming_length;
+         if (incoming_length == 1)
+           string[i++] = *incoming;
+         else
+           {
+             strncpy (string + i, incoming, incoming_length);
+             i += incoming_length;
+           }
        }
 
       while (count)
@@ -857,8 +899,7 @@ _rl_insert_char (count, c)
    If C introduces a multibyte character sequence, read the entire sequence
    before starting the overwrite loop. */
 int
-_rl_overwrite_char (count, c)
-     int count, c;
+_rl_overwrite_char (int count, int c)
 {
   int i;
 #if defined (HANDLE_MULTIBYTE)
@@ -891,8 +932,7 @@ _rl_overwrite_char (count, c)
 }
 
 int
-rl_insert (count, c)
-     int count, c;
+rl_insert (int count, int c)
 {
   int r, n, x;
 
@@ -902,6 +942,7 @@ rl_insert (count, c)
   x = 0;
   n = (unsigned short)-2;
   while (_rl_optimize_typeahead &&
+        rl_num_chars_to_read == 0 &&
         (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) &&
         _rl_pushed_input_available () == 0 &&
         _rl_input_queued (0) &&
@@ -941,8 +982,7 @@ rl_insert (count, c)
 
 /* Insert the next typed character verbatim. */
 static int
-_rl_insert_next (count)
-     int count;
+_rl_insert_next (int count)
 {
   int c;
 
@@ -966,24 +1006,37 @@ _rl_insert_next (count)
 
 #if defined (READLINE_CALLBACKS)
 static int
-_rl_insert_next_callback (data)
-     _rl_callback_generic_arg *data;
+_rl_insert_next_callback (_rl_callback_generic_arg *data)
 {
-  int count;
+  int count, r;
 
   count = data->count;
+  r = 0;
+
+  if (count < 0)
+    {
+      data->count++;
+      r = _rl_insert_next (1);
+      _rl_want_redisplay = 1;
+      /* If we should keep going, leave the callback function installed */
+      if (data->count < 0 && r == 0)
+       return r;
+      count = 0;       /* data->count == 0 || r != 0; force break below */
+    }
 
   /* Deregister function, let rl_callback_read_char deallocate data */
   _rl_callback_func = 0;
   _rl_want_redisplay = 1;
+
+  if (count == 0)
+    return r;
+
   return _rl_insert_next (count);
 }
 #endif
   
 int
-rl_quoted_insert (count, key)
-     int count, key;
+rl_quoted_insert (int count, int key)
 {
   /* Let's see...should the callback interface futz with signal handling? */
 #if defined (HANDLE_SIGNALS)
@@ -999,14 +1052,24 @@ rl_quoted_insert (count, key)
       return (0);
     }
 #endif
-      
+
+  /* A negative count means to quote the next -COUNT characters. */
+  if (count < 0)
+    {
+      int r;
+
+      do
+       r = _rl_insert_next (1);
+      while (r == 0 && ++count < 0);
+      return r;
+    }
+
   return _rl_insert_next (count);
 }
 
 /* Insert a tab character. */
 int
-rl_tab_insert (count, key)
-     int count, key;
+rl_tab_insert (int count, int key)
 {
   return (_rl_insert_char (count, '\t'));
 }
@@ -1015,8 +1078,7 @@ rl_tab_insert (count, key)
    KEY is the key that invoked this command.  I guess it could have
    meaning in the future. */
 int
-rl_newline (count, key)
-     int count, key;
+rl_newline (int count, int key)
 {
   rl_done = 1;
 
@@ -1049,8 +1111,7 @@ rl_newline (count, key)
    is just a stub, you bind keys to it and the code in _rl_dispatch ()
    is special cased. */
 int
-rl_do_lowercase_version (ignore1, ignore2)
-     int ignore1, ignore2;
+rl_do_lowercase_version (int ignore1, int ignore2)
 {
   return 0;
 }
@@ -1059,8 +1120,7 @@ rl_do_lowercase_version (ignore1, ignore2)
    rubout in overwrite mode has one oddity:  it replaces a control
    character that's displayed as two characters (^X) with two spaces. */
 int
-_rl_overwrite_rubout (count, key)
-     int count, key;
+_rl_overwrite_rubout (int count, int key)
 {
   int opoint;
   int i, l;
@@ -1102,8 +1162,7 @@ _rl_overwrite_rubout (count, key)
   
 /* Rubout the character behind point. */
 int
-rl_rubout (count, key)
-     int count, key;
+rl_rubout (int count, int key)
 {
   if (count < 0)
     return (rl_delete (-count, key));
@@ -1121,8 +1180,7 @@ rl_rubout (count, key)
 }
 
 int
-_rl_rubout_char (count, key)
-     int count, key;
+_rl_rubout_char (int count, int key)
 {
   int orig_point;
   unsigned char c;
@@ -1167,8 +1225,7 @@ _rl_rubout_char (count, key)
 /* Delete the character under the cursor.  Given a numeric argument,
    kill that many characters instead. */
 int
-rl_delete (count, key)
-     int count, key;
+rl_delete (int count, int key)
 {
   int xpoint;
 
@@ -1205,8 +1262,7 @@ rl_delete (count, key)
    behind the cursor is deleted.  COUNT is obeyed and may be used
    to delete forward or backward that many characters. */      
 int
-rl_rubout_or_delete (count, key)
-     int count, key;
+rl_rubout_or_delete (int count, int key)
 {
   if (rl_end != 0 && rl_point == rl_end)
     return (_rl_rubout_char (count, key));
@@ -1216,8 +1272,7 @@ rl_rubout_or_delete (count, key)
 
 /* Delete all spaces and tabs around point. */
 int
-rl_delete_horizontal_space (count, ignore)
-     int count, ignore;
+rl_delete_horizontal_space (int count, int ignore)
 {
   int start;
 
@@ -1245,8 +1300,7 @@ rl_delete_horizontal_space (count, ignore)
    is caught before this is invoked, so this really does the same thing as
    delete-char-or-list-or-eof, as long as it's bound to the eof character. */
 int
-rl_delete_or_show_completions (count, key)
-     int count, key;
+rl_delete_or_show_completions (int count, int key)
 {
   if (rl_end != 0 && rl_point == rl_end)
     return (rl_possible_completions (count, key));
@@ -1261,8 +1315,7 @@ rl_delete_or_show_completions (count, key)
 /* Turn the current line into a comment in shell history.
    A K*rn shell style function. */
 int
-rl_insert_comment (count, key)
-     int count, key;
+rl_insert_comment (int count, int key)
 {
   char *rl_comment_text;
   int rl_comment_len;
@@ -1300,24 +1353,21 @@ rl_insert_comment (count, key)
 
 /* Uppercase the word at point. */
 int
-rl_upcase_word (count, key)
-     int count, key;
+rl_upcase_word (int count, int key)
 {
   return (rl_change_case (count, UpCase));
 }
 
 /* Lowercase the word at point. */
 int
-rl_downcase_word (count, key)
-     int count, key;
+rl_downcase_word (int count, int key)
 {
   return (rl_change_case (count, DownCase));
 }
 
 /* Upcase the first letter, downcase the rest. */
 int
-rl_capitalize_word (count, key)
-     int count, key;
+rl_capitalize_word (int count, int key)
 {
  return (rl_change_case (count, CapCase));
 }
@@ -1328,11 +1378,11 @@ rl_capitalize_word (count, key)
    If a negative argument is given, leave point where it started,
    otherwise, leave it where it moves to. */
 static int
-rl_change_case (count, op)
-     int count, op;
+rl_change_case (int count, int op)
 {
   int start, next, end;
-  int inword, c, nc, nop;
+  int inword, nc, nop;
+  wchar_t c;
 #if defined (HANDLE_MULTIBYTE)
   wchar_t wc, nwc;
   char mb[MB_LEN_MAX+1];
@@ -1382,7 +1432,10 @@ rl_change_case (count, op)
        }
       else
        nop = op;
-      if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii ((unsigned char)c))
+      /* Can't check isascii here; some languages (e.g, Turkish) have
+        multibyte upper and lower case equivalents of single-byte ascii
+        characters */
+      if (MB_CUR_MAX == 1 || rl_byte_oriented)
        {
          nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c);
          rl_line_buffer[start] = nc;
@@ -1398,11 +1451,35 @@ rl_change_case (count, op)
          nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc);
          if  (nwc != wc)       /*  just skip unchanged characters */
            {
+             char *s, *e;
              mlen = wcrtomb (mb, nwc, &mps);
              if (mlen > 0)
                mb[mlen] = '\0';
-             /* Assume the same width */
-             strncpy (rl_line_buffer + start, mb, mlen);
+             /* what to do if m != mlen? adjust below */
+             /* m == length of old char, mlen == length of new char */
+             s = rl_line_buffer + start;
+             e = rl_line_buffer + rl_end;
+             if (m == mlen)
+               memcpy (s, mb, mlen);
+             else if (m > mlen)
+               {
+                 memcpy (s, mb, mlen);
+                 memmove (s + mlen, s + m, (e - s) - m);
+                 next -= m - mlen;     /* next char changes */
+                 end -= m - mlen;      /* end of word changes */
+                 rl_end -= m - mlen;   /* end of line changes */
+                 rl_line_buffer[rl_end] = 0;
+               }
+             else if (m < mlen)
+               {
+                 rl_extend_line_buffer (mlen - m + 1);
+                 memmove (s + mlen, s + m, (e - s) - m);
+                 memcpy (s, mb, mlen);
+                 next += mlen - m;     /* next char changes */
+                 end += mlen - m;      /* end of word changes */
+                 rl_end += mlen - m;   /* end of line changes */
+                 rl_line_buffer[rl_end] = 0;
+               }
            }
        }
 #endif
@@ -1423,8 +1500,7 @@ rl_change_case (count, op)
 /* Transpose the words at point.  If point is at the end of the line,
    transpose the two words before point. */
 int
-rl_transpose_words (count, key)
-     int count, key;
+rl_transpose_words (int count, int key)
 {
   char *word1, *word2;
   int w1_beg, w1_end, w2_beg, w2_end;
@@ -1484,8 +1560,7 @@ rl_transpose_words (count, key)
 /* Transpose the characters at point.  If point is at the end of the line,
    then transpose the characters before point. */
 int
-rl_transpose_chars (count, key)
-     int count, key;
+rl_transpose_chars (int count, int key)
 {
 #if defined (HANDLE_MULTIBYTE)
   char *dummy;
@@ -1549,13 +1624,9 @@ rl_transpose_chars (count, key)
 
 int
 #if defined (HANDLE_MULTIBYTE)
-_rl_char_search_internal (count, dir, smbchar, len)
-     int count, dir;
-     char *smbchar;
-     int len;
+_rl_char_search_internal (int count, int dir, char *smbchar, int len)
 #else
-_rl_char_search_internal (count, dir, schar)
-     int count, dir, schar;
+_rl_char_search_internal (int count, int dir, int schar)
 #endif
 {
   int pos, inc;
@@ -1619,8 +1690,7 @@ _rl_char_search_internal (count, dir, schar)
    that there are two separate versions of this function. */
 #if defined (HANDLE_MULTIBYTE)
 static int
-_rl_char_search (count, fdir, bdir)
-     int count, fdir, bdir;
+_rl_char_search (int count, int fdir, int bdir)
 {
   char mbchar[MB_LEN_MAX];
   int mb_len;
@@ -1637,8 +1707,7 @@ _rl_char_search (count, fdir, bdir)
 }
 #else /* !HANDLE_MULTIBYTE */
 static int
-_rl_char_search (count, fdir, bdir)
-     int count, fdir, bdir;
+_rl_char_search (int count, int fdir, int bdir)
 {
   int c;
 
@@ -1669,8 +1738,7 @@ _rl_char_search_callback (data)
 #endif
 
 int
-rl_char_search (count, key)
-     int count, key;
+rl_char_search (int count, int key)
 {
 #if defined (READLINE_CALLBACKS)
   if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -1687,8 +1755,7 @@ rl_char_search (count, key)
 }
 
 int
-rl_backward_char_search (count, key)
-     int count, key;
+rl_backward_char_search (int count, int key)
 {
 #if defined (READLINE_CALLBACKS)
   if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -1712,10 +1779,9 @@ rl_backward_char_search (count, key)
 
 /* Set the mark at POSITION. */
 int
-_rl_set_mark_at_pos (position)
-     int position;
+_rl_set_mark_at_pos (int position)
 {
-  if (position > rl_end)
+  if (position < 0 || position > rl_end)
     return 1;
 
   rl_mark = position;
@@ -1724,23 +1790,22 @@ _rl_set_mark_at_pos (position)
 
 /* A bindable command to set the mark. */
 int
-rl_set_mark (count, key)
-     int count, key;
+rl_set_mark (int count, int key)
 {
   return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
 }
 
 /* Exchange the position of mark and point. */
 int
-rl_exchange_point_and_mark (count, key)
-     int count, key;
+rl_exchange_point_and_mark (int count, int key)
 {
   if (rl_mark > rl_end)
     rl_mark = -1;
 
-  if (rl_mark == -1)
+  if (rl_mark < 0)
     {
       rl_ding ();
+      rl_mark = 0;             /* like _RL_FIX_POINT */
       return 1;
     }
   else
index 95bc4215c525466f18acfecc1549693600fe4748..9d0f29614b65f28245a2d170f11a6167dfefad35 100644 (file)
@@ -1,6 +1,6 @@
 /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
 
-/* Copyright (C) 1988-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
    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;
+tilde_find_prefix (const char *string, int *len)
 {
   register int i, j, string_len;
   register char **prefixes;
@@ -160,8 +158,7 @@ tilde_find_prefix (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;
+tilde_find_suffix (const char *string)
 {
   register int i, j, string_len;
   register char **suffixes;
@@ -189,8 +186,7 @@ tilde_find_suffix (string)
 
 /* Return a new string which is the result of tilde expanding STRING. */
 char *
-tilde_expand (string)
-     const char *string;
+tilde_expand (const char *string)
 {
   char *result;
   int result_size, result_index;
@@ -267,9 +263,7 @@ tilde_expand (string)
    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;
+isolate_tilde_prefix (const char *fname, int *lenp)
 {
   char *ret;
   int i;
@@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp)
    function.  Right now, it just calls tilde_find_suffix and allocates new
    memory, but it can be expanded to do different things later. */
 char *
-tilde_find_word (fname, flags, lenp)
-     const char *fname;
-     int flags, *lenp;
+tilde_find_word (const char *fname, int flags, int *lenp)
 {
   int x;
   char *r;
@@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp)
 /* 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;
+glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)
 {
   char *ret;
   int plen, slen;
@@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind)
    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;
+tilde_expand_word (const char *filename)
 {
   char *dirname, *expansion, *username;
   int user_len;
@@ -434,9 +422,7 @@ tilde_expand_word (filename)
 #undef NULL
 #include <stdio.h>
 
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *result, line[512];
   int done = 0;
@@ -464,11 +450,10 @@ main (argc, argv)
   exit (0);
 }
 
-static void memory_error_and_abort ();
+static void memory_error_and_abort (void);
 
 static void *
-xmalloc (bytes)
-     size_t bytes;
+xmalloc (size_t bytes)
 {
   void *temp = (char *)malloc (bytes);
 
@@ -478,9 +463,7 @@ xmalloc (bytes)
 }
 
 static void *
-xrealloc (pointer, bytes)
-     void *pointer;
-     int bytes;
+xrealloc (void *pointer, int bytes)
 {
   void *temp;
 
@@ -496,7 +479,7 @@ xrealloc (pointer, bytes)
 }
 
 static void
-memory_error_and_abort ()
+memory_error_and_abort (void)
 {
   fprintf (stderr, "readline: out of virtual memory\n");
   abort ();
index 58363040ce0ddfa7f4265693fc33faeb76dd193c..ae65d38043a7acff72e94785aa669401696260dd 100644 (file)
@@ -1,6 +1,6 @@
 /* undo.c - manage list of changes to lines, offering opportunity to undo them */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -51,6 +51,8 @@
 
 extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *));
 
+extern HIST_ENTRY *_rl_saved_line_for_history;
+
 /* Non-zero tells rl_delete_text and rl_insert_text to not add to
    the undo list. */
 int _rl_doing_an_undo = 0;
@@ -68,10 +70,7 @@ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;
 /* **************************************************************** */
 
 static UNDO_LIST *
-alloc_undo_entry (what, start, end, text)
-     enum undo_code what;
-     int start, end;
-     char *text;
+alloc_undo_entry (enum undo_code what, int start, int end, char *text)
 {
   UNDO_LIST *temp;
 
@@ -88,10 +87,7 @@ alloc_undo_entry (what, start, end, text)
 /* Remember how to undo something.  Concatenate some undos if that
    seems right. */
 void
-rl_add_undo (what, start, end, text)
-     enum undo_code what;
-     int start, end;
-     char *text;
+rl_add_undo (enum undo_code what, int start, int end, char *text)
 {
   UNDO_LIST *temp;
 
@@ -102,8 +98,7 @@ rl_add_undo (what, start, end, text)
 
 /* Free an UNDO_LIST */
 void
-_rl_free_undo_list (ul)
-     UNDO_LIST *ul;
+_rl_free_undo_list (UNDO_LIST *ul)
 {
   UNDO_LIST *release;
 
@@ -121,7 +116,7 @@ _rl_free_undo_list (ul)
 
 /* Free the existing undo list. */
 void
-rl_free_undo_list ()
+rl_free_undo_list (void)
 {
   UNDO_LIST *release, *orig_list;
 
@@ -132,8 +127,7 @@ rl_free_undo_list ()
 }
 
 UNDO_LIST *
-_rl_copy_undo_entry (entry)
-     UNDO_LIST *entry;
+_rl_copy_undo_entry (UNDO_LIST *entry)
 {
   UNDO_LIST *new;
 
@@ -143,8 +137,7 @@ _rl_copy_undo_entry (entry)
 }
 
 UNDO_LIST *
-_rl_copy_undo_list (head)
-     UNDO_LIST *head;
+_rl_copy_undo_list (UNDO_LIST *head)
 {
   UNDO_LIST *list, *new, *roving, *c;
 
@@ -173,9 +166,9 @@ _rl_copy_undo_list (head)
 /* Undo the next thing in the list.  Return 0 if there
    is nothing to undo, or non-zero if there was. */
 int
-rl_do_undo ()
+rl_do_undo (void)
 {
-  UNDO_LIST *release;
+  UNDO_LIST *release, *search;
   int waiting_for_begin, start, end;
   HIST_ENTRY *cur, *temp;
 
@@ -232,6 +225,7 @@ rl_do_undo ()
 
       release = rl_undo_list;
       rl_undo_list = rl_undo_list->next;
+      release->next = 0;       /* XXX */
 
       /* If we are editing a history entry, make sure the change is replicated
         in the history entry's line */
@@ -244,8 +238,30 @@ rl_do_undo ()
          xfree (temp);
        }
 
+      /* Make sure there aren't any history entries with that undo list */
       _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list);
 
+      /* And make sure this list isn't anywhere in the saved line for history */
+      if (_rl_saved_line_for_history && _rl_saved_line_for_history->data)
+       {
+         /* Brute force; no finesse here */
+         search = (UNDO_LIST *)_rl_saved_line_for_history->data;
+         if (search == release)
+           _rl_saved_line_for_history->data = rl_undo_list;
+         else
+           {
+             while (search->next)
+               {
+                 if (search->next == release)
+                   {
+                     search->next = rl_undo_list;
+                     break;
+                   }
+                 search = search->next;
+               }
+           }
+       }
+
       xfree (release);
     }
   while (waiting_for_begin);
@@ -255,8 +271,7 @@ rl_do_undo ()
 #undef TRANS
 
 int
-_rl_fix_last_undo_of_type (type, start, end)
-     int type, start, end;
+_rl_fix_last_undo_of_type (int type, int start, int end)
 {
   UNDO_LIST *rl;
 
@@ -274,7 +289,7 @@ _rl_fix_last_undo_of_type (type, start, end)
 
 /* Begin a group.  Subsequent undos are undone as an atomic operation. */
 int
-rl_begin_undo_group ()
+rl_begin_undo_group (void)
 {
   rl_add_undo (UNDO_BEGIN, 0, 0, 0);
   _rl_undo_group_level++;
@@ -283,7 +298,7 @@ rl_begin_undo_group ()
 
 /* End an undo group started with rl_begin_undo_group (). */
 int
-rl_end_undo_group ()
+rl_end_undo_group (void)
 {
   rl_add_undo (UNDO_END, 0, 0, 0);
   _rl_undo_group_level--;
@@ -292,8 +307,7 @@ rl_end_undo_group ()
 
 /* Save an undo entry for the text from START to END. */
 int
-rl_modifying (start, end)
-     int start, end;
+rl_modifying (int start, int end)
 {
   if (start > end)
     {
@@ -313,8 +327,7 @@ rl_modifying (start, end)
 
 /* Revert the current line to its previous state. */
 int
-rl_revert_line (count, key)
-     int count, key;
+rl_revert_line (int count, int key)
 {
   if (rl_undo_list == 0)
     rl_ding ();
@@ -333,8 +346,7 @@ rl_revert_line (count, key)
 
 /* Do some undoing of things that were done. */
 int
-rl_undo_command (count, key)
-     int count, key;
+rl_undo_command (int count, int key)
 {
   if (count < 0)
     return 0;  /* Nothing to do. */
index 4589c61f94e490f60440a18ffa7fd1fccf9839fb..e009b2383828e5ed49628b2b04d6ff24b8b519bf 100644 (file)
@@ -1,6 +1,6 @@
 /* util.c -- readline utility functions */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -70,8 +70,7 @@ int _rl_allow_pathname_alphabetic_chars = 0;
 static const char * const pathname_alphabetic_chars = "/-_=~.#$";
 
 int
-rl_alphabetic (c)
-     int c;
+rl_alphabetic (int c)
 {
   if (ALPHABETIC (c))
     return (1);
@@ -97,7 +96,7 @@ _rl_walphabetic (wchar_t wc)
 
 /* How to abort things. */
 int
-_rl_abort_internal ()
+_rl_abort_internal (void)
 {
   rl_ding ();
   rl_clear_message ();
@@ -117,22 +116,19 @@ _rl_abort_internal ()
 }
 
 int
-rl_abort (count, key)
-     int count, key;
+rl_abort (int count, int key)
 {
   return (_rl_abort_internal ());
 }
 
 int
-_rl_null_function (count, key)
-     int count, key;
+_rl_null_function (int count, int key)
 {
   return 0;
 }
 
 int
-rl_tty_status (count, key)
-     int count, key;
+rl_tty_status (int count, int key)
 {
 #if defined (TIOCSTAT)
   ioctl (1, TIOCSTAT, (char *)0);
@@ -146,8 +142,7 @@ rl_tty_status (count, key)
 /* Return a copy of the string between FROM and TO.
    FROM is inclusive, TO is not. */
 char *
-rl_copy_text (from, to)
-     int from, to;
+rl_copy_text (int from, int to)
 {
   register int length;
   char *copy;
@@ -166,8 +161,7 @@ rl_copy_text (from, to)
 /* Increase the size of RL_LINE_BUFFER until it has enough space to hold
    LEN characters. */
 void
-rl_extend_line_buffer (len)
-     int len;
+rl_extend_line_buffer (int len)
 {
   while (len >= rl_line_buffer_len)
     {
@@ -181,8 +175,7 @@ rl_extend_line_buffer (len)
 
 /* A function for simple tilde expansion. */
 int
-rl_tilde_expand (ignore, key)
-     int ignore, key;
+rl_tilde_expand (int ignore, int key)
 {
   register int start, end;
   char *homedir, *temp;
@@ -200,7 +193,7 @@ rl_tilde_expand (ignore, key)
     }
   else if (start >= 0 && rl_line_buffer[start] != '~')
     {
-      for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
+      for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--)
         ;
       start++;
     }
@@ -324,8 +317,7 @@ _rl_errmsg (format, arg1, arg2)
 /* Determine if s2 occurs in s1.  If so, return a pointer to the
    match in s1.  The compare is case insensitive. */
 char *
-_rl_strindex (s1, s2)
-     register const char *s1, *s2;
+_rl_strindex (const char *s1, const char *s2)
 {
   register int i, l, len;
 
@@ -339,8 +331,7 @@ _rl_strindex (s1, s2)
 /* Find the first occurrence in STRING1 of any character from STRING2.
    Return a pointer to the character in STRING1. */
 char *
-_rl_strpbrk (string1, string2)
-     const char *string1, *string2;
+_rl_strpbrk (const char *string1, const char *string2)
 {
   register const char *scan;
 #if defined (HANDLE_MULTIBYTE)
@@ -374,10 +365,7 @@ _rl_strpbrk (string1, string2)
 /* Compare at most COUNT characters from string1 to string2.  Case
    doesn't matter (strncasecmp). */
 int
-_rl_strnicmp (string1, string2, count)
-     const char *string1;
-     const char *string2;
-     int count;
+_rl_strnicmp (const char *string1, const char *string2, int count)
 {
   register const char *s1;
   register const char *s2;
@@ -404,9 +392,7 @@ _rl_strnicmp (string1, string2, count)
 
 /* strcmp (), but caseless (strcasecmp). */
 int
-_rl_stricmp (string1, string2)
-     const char *string1;
-     const char *string2;
+_rl_stricmp (const char *string1, const char *string2)
 {
   register const char *s1;
   register const char *s2;
@@ -431,8 +417,7 @@ _rl_stricmp (string1, string2)
 
 /* Stupid comparison routine for qsort () ing strings. */
 int
-_rl_qsort_string_compare (s1, s2)
-  char **s1, **s2;
+_rl_qsort_string_compare (char **s1, char **s2)
 {
 #if defined (HAVE_STRCOLL)
   return (strcoll (*s1, *s2));
@@ -448,7 +433,7 @@ _rl_qsort_string_compare (s1, s2)
 }
 
 /* Function equivalents for the macros defined in chardefs.h. */
-#define FUNCTION_FOR_MACRO(f)  int (f) (c) int c; { return f (c); }
+#define FUNCTION_FOR_MACRO(f)  int (f) (int c) { return f (c); }
 
 FUNCTION_FOR_MACRO (_rl_digit_p)
 FUNCTION_FOR_MACRO (_rl_digit_value)
@@ -461,8 +446,7 @@ FUNCTION_FOR_MACRO (_rl_uppercase_p)
 /* A convenience function, to force memory deallocation to be performed
    by readline.  DLLs on Windows apparently require this. */
 void
-rl_free (mem)
-     void *mem;
+rl_free (void *mem)
 {
   if (mem)
     free (mem);
@@ -472,8 +456,7 @@ rl_free (mem)
    all `public' readline header files. */
 #undef _rl_savestring
 char *
-_rl_savestring (s)
-     const char *s;
+_rl_savestring (const char *s)
 {
   return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
 }
@@ -512,7 +495,7 @@ _rl_trace (va_alist)
 }
 
 int
-_rl_tropen ()
+_rl_tropen (void)
 {
   char fnbuf[128], *x;
 
@@ -525,14 +508,14 @@ _rl_tropen ()
 #else
   x = "/var/tmp";
 #endif
-  sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid());
+  snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid());
   unlink(fnbuf);
   _rl_tracefp = fopen (fnbuf, "w+");
   return _rl_tracefp != 0;
 }
 
 int
-_rl_trclose ()
+_rl_trclose (void)
 {
   int r;
 
@@ -542,8 +525,7 @@ _rl_trclose ()
 }
 
 void
-_rl_settracefp (fp)
-     FILE *fp;
+_rl_settracefp (FILE *fp)
 {
   _rl_tracefp = fp;
 }
@@ -559,8 +541,7 @@ _rl_settracefp (fp)
 
 /* Report STRING to the audit system. */
 void
-_rl_audit_tty (string)
-     char *string;
+_rl_audit_tty (char *string)
 {
   struct audit_message req;
   struct sockaddr_nl addr;
index e5da2e0fa0b572ce0e3aa938b6a1076e2ed787fc..045258bd83b6bdc42a68a322fd1b81c2b6086b99 100644 (file)
@@ -1,6 +1,6 @@
 /* vi_keymap.c -- the keymap for vi_mode in readline (). */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
index 56d2e72fb7f2da12747c93db67404777fd5fd1cd..836371c95fff755e5bb9fc2faf8998310ef286ae 100644 (file)
@@ -1,7 +1,7 @@
 /* vi_mode.c -- A vi emulation mode for Bash.
    Derived from code written by Jeff Sparkes (jsparkes@bnr.ca).  */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
 #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
 #endif
 
+/* Increment START to the next character in RL_LINE_BUFFER, handling multibyte chars */
+#if defined (HANDLE_MULTIBYTE)
+#define INCREMENT_POS(start) \
+  do { \
+       if (MB_CUR_MAX == 1 || rl_byte_oriented) \
+         start++; \
+       else \
+         start = _rl_find_next_mbchar (rl_line_buffer, start, 1, MB_FIND_ANY); \
+  } while (0)
+#else /* !HANDLE_MULTIBYTE */
+#define INCREMENT_POS(start)    (start)++
+#endif /* !HANDLE_MULTIBYTE */
+
+/* This is global so other parts of the code can check whether the last
+   command was a text modification command. */
 int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */
 
 _rl_vimotion_cxt *_rl_vimvcxt = 0;
@@ -99,7 +114,7 @@ static int _rl_vi_last_search_mblen;
 #else
 static int _rl_vi_last_search_char;
 #endif
-static int _rl_vi_last_replacement;
+static char _rl_vi_last_replacement[MB_LEN_MAX+1];     /* reserve for trailing NULL */
 
 static int _rl_vi_last_key_before_insert;
 
@@ -116,7 +131,7 @@ static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
 
 static void vi_save_insert_buffer PARAMS ((int, int));
 
-static void _rl_vi_backup PARAMS((void));
+static inline void _rl_vi_backup PARAMS((void));
 
 static int _rl_vi_arg_dispatch PARAMS((int));
 static int rl_digit_loop1 PARAMS((void));
@@ -124,6 +139,9 @@ static int rl_digit_loop1 PARAMS((void));
 static int _rl_vi_set_mark PARAMS((void));
 static int _rl_vi_goto_mark PARAMS((void));
 
+static inline int _rl_vi_advance_point PARAMS((void));
+static inline int _rl_vi_backup_point PARAMS((void));
+
 static void _rl_vi_append_forward PARAMS((int));
 
 static int _rl_vi_callback_getchar PARAMS((char *, int));
@@ -146,7 +164,7 @@ static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *));
 static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *));
 
 void
-_rl_vi_initialize_line ()
+_rl_vi_initialize_line (void)
 {
   register int i, n;
 
@@ -158,7 +176,7 @@ _rl_vi_initialize_line ()
 }
 
 void
-_rl_vi_reset_last ()
+_rl_vi_reset_last (void)
 {
   _rl_vi_last_command = 'i';
   _rl_vi_last_repeat = 1;
@@ -167,8 +185,7 @@ _rl_vi_reset_last ()
 }
 
 void
-_rl_vi_set_last (key, repeat, sign)
-     int key, repeat, sign;
+_rl_vi_set_last (int key, int repeat, int sign)
 {
   _rl_vi_last_command = key;
   _rl_vi_last_repeat = repeat;
@@ -178,31 +195,28 @@ _rl_vi_set_last (key, repeat, sign)
 /* A convenience function that calls _rl_vi_set_last to save the last command
    information and enters insertion mode. */
 void
-rl_vi_start_inserting (key, repeat, sign)
-     int key, repeat, sign;
+rl_vi_start_inserting (int key, int repeat, int sign)
 {
   _rl_vi_set_last (key, repeat, sign);
+  rl_begin_undo_group ();              /* ensure inserts aren't concatenated */
   rl_vi_insertion_mode (1, key);
 }
 
 /* Is the command C a VI mode text modification command? */
 int
-_rl_vi_textmod_command (c)
-     int c;
+_rl_vi_textmod_command (int c)
 {
   return (member (c, vi_textmod));
 }
 
 int
-_rl_vi_motion_command (c)
-     int c;
+_rl_vi_motion_command (int c)
 {
   return (member (c, vi_motion));
 }
 
 static void
-_rl_vi_replace_insert (count)
-     int count;
+_rl_vi_replace_insert (int count)
 {
   int nchars;
 
@@ -217,8 +231,7 @@ _rl_vi_replace_insert (count)
 }
 
 static void
-_rl_vi_stuff_insert (count)
-     int count;
+_rl_vi_stuff_insert (int count)
 {
   rl_begin_undo_group ();
   while (count--)
@@ -230,8 +243,7 @@ _rl_vi_stuff_insert (count)
    redo a text modification command.  The default for _rl_vi_last_command
    puts you back into insert mode. */
 int
-rl_vi_redo (count, c)
-     int count, c;
+rl_vi_redo (int count, int c)
 {
   int r;
 
@@ -296,16 +308,14 @@ rl_vi_redo (count, c)
 
 /* A placeholder for further expansion. */
 int
-rl_vi_undo (count, key)
-     int count, key;
+rl_vi_undo (int count, int key)
 {
   return (rl_undo_command (count, key));
 }
     
 /* Yank the nth arg from the previous line into this line at point. */
 int
-rl_vi_yank_arg (count, key)
-     int count, key;
+rl_vi_yank_arg (int count, int key)
 {
   /* Readline thinks that the first word on a line is the 0th, while vi
      thinks the first word on a line is the 1st.  Compensate. */
@@ -320,8 +330,7 @@ rl_vi_yank_arg (count, key)
 /* With an argument, move back that many history lines, else move to the
    beginning of history. */
 int
-rl_vi_fetch_history (count, c)
-     int count, c;
+rl_vi_fetch_history (int count, int c)
 {
   int wanted;
 
@@ -345,8 +354,7 @@ rl_vi_fetch_history (count, c)
 
 /* Search again for the last thing searched for. */
 int
-rl_vi_search_again (count, key)
-     int count, key;
+rl_vi_search_again (int count, int key)
 {
   switch (key)
     {
@@ -363,8 +371,7 @@ rl_vi_search_again (count, key)
 
 /* Do a vi style search. */
 int
-rl_vi_search (count, key)
-     int count, key;
+rl_vi_search (int count, int key)
 {
   switch (key)
     {
@@ -387,14 +394,13 @@ rl_vi_search (count, key)
 
 /* Completion, from vi's point of view. */
 int
-rl_vi_complete (ignore, key)
-     int ignore, key;
+rl_vi_complete (int ignore, int key)
 {
   if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
     {
       if (!whitespace (rl_line_buffer[rl_point + 1]))
        rl_vi_end_word (1, 'E');
-      rl_point++;
+      _rl_vi_advance_point ();
     }
 
   if (key == '*')
@@ -414,8 +420,7 @@ rl_vi_complete (ignore, key)
 
 /* Tilde expansion for vi mode. */
 int
-rl_vi_tilde_expand (ignore, key)
-     int ignore, key;
+rl_vi_tilde_expand (int ignore, int key)
 {
   rl_tilde_expand (0, key);
   rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -424,8 +429,7 @@ rl_vi_tilde_expand (ignore, key)
 
 /* Previous word in vi mode. */
 int
-rl_vi_prev_word (count, key)
-     int count, key;
+rl_vi_prev_word (int count, int key)
 {
   if (count < 0)
     return (rl_vi_next_word (-count, key));
@@ -446,8 +450,7 @@ rl_vi_prev_word (count, key)
 
 /* Next word in vi mode. */
 int
-rl_vi_next_word (count, key)
-     int count, key;
+rl_vi_next_word (int count, int key)
 {
   if (count < 0)
     return (rl_vi_prev_word (-count, key));
@@ -465,10 +468,72 @@ rl_vi_next_word (count, key)
   return (0);
 }
 
+static inline int
+_rl_vi_advance_point (void)
+{
+  int point;
+
+  point = rl_point;
+  if (rl_point < rl_end)
+#if defined (HANDLE_MULTIBYTE)
+    {
+      if (MB_CUR_MAX == 1 || rl_byte_oriented)
+       rl_point++;
+      else
+       {
+         point = rl_point;
+         rl_point = _rl_forward_char_internal (1);
+         if (point == rl_point || rl_point > rl_end)
+           rl_point = rl_end;
+       }
+    }
+#else
+    rl_point++;
+#endif
+
+  return point;
+}
+
+/* Move the cursor back one character. */
+static inline void
+_rl_vi_backup (void)
+{
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
+  else
+    rl_point--;
+}
+
+/* Move the point back one character, returning the starting value and not
+   doing anything at the beginning of the line */
+static inline int
+_rl_vi_backup_point (void)
+{
+  int point;
+
+  point = rl_point;
+  if (rl_point > 0)
+#if defined (HANDLE_MULTIBYTE)
+    {
+      if (MB_CUR_MAX == 1 || rl_byte_oriented)
+       rl_point--;
+      else
+       {
+         point = rl_point;
+         rl_point = _rl_backward_char_internal (1);
+         if (rl_point < 0)
+           rl_point = 0;               /* XXX - not really necessary */
+       }
+    }
+#else
+    rl_point--;
+#endif
+  return point;
+}
+
 /* Move to the end of the ?next? word. */
 int
-rl_vi_end_word (count, key)
-     int count, key;
+rl_vi_end_word (int count, int key)
 {
   if (count < 0)
     {
@@ -485,25 +550,23 @@ rl_vi_end_word (count, key)
 
 /* Move forward a word the way that 'W' does. */
 int
-rl_vi_fWord (count, ignore)
-     int count, ignore;
+rl_vi_fWord (int count, int ignore)
 {
   while (count-- && rl_point < (rl_end - 1))
     {
       /* Skip until whitespace. */
       while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
-       rl_point++;
+       _rl_vi_advance_point ();
 
       /* Now skip whitespace. */
       while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
-       rl_point++;
+       _rl_vi_advance_point ();
     }
   return (0);
 }
 
 int
-rl_vi_bWord (count, ignore)
-     int count, ignore;
+rl_vi_bWord (int count, int ignore)
 {
   while (count-- && rl_point > 0)
     {
@@ -514,141 +577,177 @@ rl_vi_bWord (count, ignore)
        rl_point--;
 
       while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
-       rl_point--;
+       _rl_vi_backup_point ();
 
       if (rl_point > 0)
        {
-         while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point]));
-         rl_point++;
+         do
+           _rl_vi_backup_point ();
+         while (rl_point > 0 && !whitespace (rl_line_buffer[rl_point]));
+         if (rl_point > 0)     /* hit whitespace */
+           rl_point++;         
+
+         if (rl_point < 0)
+           rl_point = 0;
        }
     }
   return (0);
 }
 
 int
-rl_vi_eWord (count, ignore)
-     int count, ignore;
+rl_vi_eWord (int count, int ignore)
 {
+  int opoint;
+
   while (count-- && rl_point < (rl_end - 1))
     {
-      if (!whitespace (rl_line_buffer[rl_point]))
-       rl_point++;
+      if (whitespace (rl_line_buffer[rl_point]) == 0)
+       _rl_vi_advance_point ();
 
       /* Move to the next non-whitespace character (to the start of the
         next word). */
       while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
-       rl_point++;
+       _rl_vi_advance_point ();
 
       if (rl_point && rl_point < rl_end)
        {
+         opoint = rl_point;
+
          /* Skip whitespace. */
          while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
-           rl_point++;
+           opoint = _rl_vi_advance_point ();   /* XXX - why? */
 
          /* Skip until whitespace. */
          while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point]))
-           rl_point++;
+           opoint = _rl_vi_advance_point ();
 
          /* Move back to the last character of the word. */
-         rl_point--;
+         rl_point = opoint;
        }
     }
   return (0);
 }
 
 int
-rl_vi_fword (count, ignore)
-     int count, ignore;
+rl_vi_fword (int count, int ignore)
 {
+  int opoint;
+
   while (count-- && rl_point < (rl_end - 1))
     {
       /* Move to white space (really non-identifer). */
       if (_rl_isident (rl_line_buffer[rl_point]))
        {
          while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
-           rl_point++;
+           _rl_vi_advance_point ();
        }
       else /* if (!whitespace (rl_line_buffer[rl_point])) */
        {
          while (!_rl_isident (rl_line_buffer[rl_point]) &&
                 !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
-           rl_point++;
+           _rl_vi_advance_point ();
        }
 
+      opoint = rl_point;
+
       /* Move past whitespace. */
       while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
-       rl_point++;
+       opoint = _rl_vi_advance_point ();
     }
   return (0);
 }
 
 int
-rl_vi_bword (count, ignore)
-     int count, ignore;
+rl_vi_bword (int count, int ignore)
 {
+  int opoint;
+
   while (count-- && rl_point > 0)
     {
-      int last_is_ident;
+      int prev_is_ident, cur_is_ident;
 
       /* If we are at the start of a word, move back to whitespace
         so we will go back to the start of the previous word. */
       if (!whitespace (rl_line_buffer[rl_point]) &&
          whitespace (rl_line_buffer[rl_point - 1]))
-       rl_point--;
+       if (--rl_point == 0)
+         break;
 
       /* If this character and the previous character are `opposite', move
         back so we don't get messed up by the rl_point++ down there in
         the while loop.  Without this code, words like `l;' screw up the
         function. */
-      last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]);
-      if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
-         (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident))
-       rl_point--;
+      cur_is_ident = _rl_isident (rl_line_buffer[rl_point]);
+      opoint = _rl_vi_backup_point ();
+      prev_is_ident = _rl_isident (rl_line_buffer[rl_point]);
+      if ((cur_is_ident && !prev_is_ident) || (!cur_is_ident && prev_is_ident))
+       ;       /* leave point alone, we backed it up one character */
+      else
+       rl_point = opoint;
 
       while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
-       rl_point--;
+       _rl_vi_backup_point ();
 
       if (rl_point > 0)
        {
+         opoint = rl_point;
          if (_rl_isident (rl_line_buffer[rl_point]))
-           while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
+           do
+             opoint = _rl_vi_backup_point ();
+           while (rl_point > 0 && _rl_isident (rl_line_buffer[rl_point]));
          else
-           while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
+           do
+             opoint = _rl_vi_backup_point ();
+           while (rl_point > 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
                   !whitespace (rl_line_buffer[rl_point]));
-         rl_point++;
+
+         if (rl_point > 0)
+           rl_point = opoint;
+
+         if (rl_point < 0)
+           rl_point = 0;
        }
     }
   return (0);
 }
 
 int
-rl_vi_eword (count, ignore)
-     int count, ignore;
+rl_vi_eword (int count, int ignore)
 {
-  while (count-- && rl_point < rl_end - 1)
+  int opoint;
+
+  while (count-- && rl_point < (rl_end - 1))
     {
-      if (!whitespace (rl_line_buffer[rl_point]))
-       rl_point++;
+      if (whitespace (rl_line_buffer[rl_point]) == 0)
+       _rl_vi_advance_point ();
 
       while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
-       rl_point++;
+       _rl_vi_advance_point ();
 
+      opoint = rl_point;
       if (rl_point < rl_end)
        {
          if (_rl_isident (rl_line_buffer[rl_point]))
-           while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
+           do
+             {
+               opoint = _rl_vi_advance_point ();
+             }
+           while (rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
          else
-           while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
+           do
+             {
+               opoint = _rl_vi_advance_point ();
+             }
+           while (rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
                   && !whitespace (rl_line_buffer[rl_point]));
        }
-      rl_point--;
+      rl_point = opoint;
     }
   return (0);
 }
 
 int
-rl_vi_insert_beg (count, key)
-     int count, key;
+rl_vi_insert_beg (int count, int key)
 {
   rl_beg_of_line (1, key);
   rl_vi_insert_mode (1, key);
@@ -656,32 +755,13 @@ rl_vi_insert_beg (count, key)
 }
 
 static void
-_rl_vi_append_forward (key)
-     int key;
+_rl_vi_append_forward (int key)
 {
-  int point;
-
-  if (rl_point < rl_end)
-    {
-      if (MB_CUR_MAX == 1 || rl_byte_oriented)
-       rl_point++;
-      else
-       {
-         point = rl_point;
-#if 0
-         rl_forward_char (1, key);
-#else
-         rl_point = _rl_forward_char_internal (1);
-#endif
-         if (point == rl_point)
-           rl_point = rl_end;
-       }
-    }
+  _rl_vi_advance_point ();
 }
 
 int
-rl_vi_append_mode (count, key)
-     int count, key;
+rl_vi_append_mode (int count, int key)
 {
   _rl_vi_append_forward (key);
   rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -689,8 +769,7 @@ rl_vi_append_mode (count, key)
 }
 
 int
-rl_vi_append_eol (count, key)
-     int count, key;
+rl_vi_append_eol (int count, int key)
 {
   rl_end_of_line (1, key);
   rl_vi_append_mode (1, key);
@@ -699,8 +778,7 @@ rl_vi_append_eol (count, key)
 
 /* What to do in the case of C-d. */
 int
-rl_vi_eof_maybe (count, c)
-     int count, c;
+rl_vi_eof_maybe (int count, int c)
 {
   return (rl_newline (1, '\n'));
 }
@@ -710,8 +788,7 @@ rl_vi_eof_maybe (count, c)
 /* Switching from one mode to the other really just involves
    switching keymaps. */
 int
-rl_vi_insertion_mode (count, key)
-     int count, key;
+rl_vi_insertion_mode (int count, int key)
 {
   _rl_keymap = vi_insertion_keymap;
   _rl_vi_last_key_before_insert = key;
@@ -721,16 +798,14 @@ rl_vi_insertion_mode (count, key)
 }
 
 int
-rl_vi_insert_mode (count, key)
-     int count, key;
+rl_vi_insert_mode (int count, int key)
 {
   rl_vi_start_inserting (key, 1, rl_arg_sign);
   return (0);
 }
 
 static void
-vi_save_insert_buffer (start, len)
-     int start, len;
+vi_save_insert_buffer (int start, int len)
 {
   /* Same code as _rl_vi_save_insert below */
   if (len >= vi_insert_buffer_size)
@@ -743,7 +818,7 @@ vi_save_insert_buffer (start, len)
 }
 
 static void
-_rl_vi_save_replace ()
+_rl_vi_save_replace (void)
 {
   int len, start, end;
   UNDO_LIST *up;
@@ -766,8 +841,7 @@ _rl_vi_save_replace ()
 }
 
 static void
-_rl_vi_save_insert (up)
-      UNDO_LIST *up;
+_rl_vi_save_insert (UNDO_LIST *up)
 {
   int len, start, end;
 
@@ -786,7 +860,7 @@ _rl_vi_save_insert (up)
 }
     
 void
-_rl_vi_done_inserting ()
+_rl_vi_done_inserting (void)
 {
   if (_rl_vi_doing_insert)
     {
@@ -821,8 +895,7 @@ _rl_vi_done_inserting ()
 }
 
 int
-rl_vi_movement_mode (count, key)
-     int count, key;
+rl_vi_movement_mode (int count, int key)
 {
   if (rl_point > 0)
     rl_backward_char (1, key);
@@ -843,8 +916,7 @@ rl_vi_movement_mode (count, key)
 }
 
 int
-rl_vi_arg_digit (count, c)
-     int count, c;
+rl_vi_arg_digit (int count, int c)
 {
   if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg)
     return (rl_beg_of_line (1, c));
@@ -855,8 +927,7 @@ rl_vi_arg_digit (count, c)
 /* Change the case of the next COUNT characters. */
 #if defined (HANDLE_MULTIBYTE)
 static int
-_rl_vi_change_mbchar_case (count)
-     int count;
+_rl_vi_change_mbchar_case (int count)
 {
   wchar_t wc;
   char mb[MB_LEN_MAX+1];
@@ -895,7 +966,7 @@ _rl_vi_change_mbchar_case (count)
          rl_begin_undo_group ();
          rl_vi_delete (1, 0);
          if (rl_point < p)     /* Did we retreat at EOL? */
-           rl_point++; /* XXX - should we advance more than 1 for mbchar? */
+           _rl_vi_advance_point ();
          rl_insert_text (mb);
          rl_end_undo_group ();
          rl_vi_check ();
@@ -909,8 +980,7 @@ _rl_vi_change_mbchar_case (count)
 #endif
 
 int
-rl_vi_change_case (count, ignore)
-     int count, ignore;
+rl_vi_change_case (int count, int ignore)
 {
   int c, p;
 
@@ -956,8 +1026,7 @@ rl_vi_change_case (count, ignore)
 }
 
 int
-rl_vi_put (count, key)
-     int count, key;
+rl_vi_put (int count, int key)
 {
   if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end))
     rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
@@ -969,36 +1038,26 @@ rl_vi_put (count, key)
   return (0);
 }
 
-static void
-_rl_vi_backup ()
-{
-  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-    rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
-  else
-    rl_point--;
-}
-
+/* Move the cursor back one character if you're at the end of the line */
 int
-rl_vi_check ()
+rl_vi_check (void)
 {
   if (rl_point && rl_point == rl_end)
-    {
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-       rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
-      else
-       rl_point--;
-    }
+    _rl_vi_backup ();
   return (0);
 }
 
+/* Move to the character position specified by COUNT */
 int
-rl_vi_column (count, key)
-     int count, key;
+rl_vi_column (int count, int key)
 {
   if (count > rl_end)
     rl_end_of_line (1, key);
   else
-    rl_point = count - 1;
+    {
+      rl_point = 0;
+      rl_point = _rl_forward_char_internal (count - 1);
+    }
   return (0);
 }
 
@@ -1006,8 +1065,7 @@ rl_vi_column (count, key)
    argument should be aborted, 0 if we should not read any more chars, and
    1 if we should continue to read chars. */
 static int
-_rl_vi_arg_dispatch (c)
-     int c;
+_rl_vi_arg_dispatch (int c)
 {
   int key;
 
@@ -1041,7 +1099,7 @@ _rl_vi_arg_dispatch (c)
    Don't recognize minus sign?
    Should this do rl_save_prompt/rl_restore_prompt? */
 static int
-rl_digit_loop1 ()
+rl_digit_loop1 (void)
 {
   int c, r;
 
@@ -1061,10 +1119,12 @@ rl_digit_loop1 ()
   return (0);
 }
 
+/* This set of functions is basically to handle the commands that take a
+   motion argument while in callback mode: read the command, read the motion
+   command modifier, find the extent of the text to affect, and dispatch the
+   command for execution. */
 static void
-_rl_mvcxt_init (m, op, key)
-     _rl_vimotion_cxt *m;
-     int op, key;
+_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key)
 {
   m->op = op;
   m->state = m->flags = 0;
@@ -1077,8 +1137,7 @@ _rl_mvcxt_init (m, op, key)
 }
 
 static _rl_vimotion_cxt *
-_rl_mvcxt_alloc (op, key)
-     int op, key;
+_rl_mvcxt_alloc (int op, int key)
 {
   _rl_vimotion_cxt *m;
 
@@ -1088,15 +1147,13 @@ _rl_mvcxt_alloc (op, key)
 }
 
 static void
-_rl_mvcxt_dispose (m)
-     _rl_vimotion_cxt *m;
+_rl_mvcxt_dispose (_rl_vimotion_cxt *m)
 {
   xfree (m);
 }
 
 static int
-rl_domove_motion_callback (m)
-     _rl_vimotion_cxt *m;
+rl_domove_motion_callback (_rl_vimotion_cxt *m)
 {
   int c;
 
@@ -1129,9 +1186,7 @@ rl_domove_motion_callback (m)
 }
 
 int
-_rl_vi_domove_motion_cleanup (c, m)
-     int c;
-     _rl_vimotion_cxt *m;
+_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m)
 {
   int r;
 
@@ -1153,7 +1208,7 @@ _rl_vi_domove_motion_cleanup (c, m)
      non-whitespace character, move back one (presumably to whitespace). */
   if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark &&
       !whitespace (rl_line_buffer[rl_point]))
-    rl_point--;
+    rl_point--;                /* XXX */
 
   /* If cw or cW, back up to the end of a word, so the behaviour of ce
      or cE is the actual result.  Brute-force, no subtlety. */
@@ -1166,14 +1221,14 @@ _rl_vi_domove_motion_cleanup (c, m)
       /* Posix.2 says that if cw or cW moves the cursor towards the end of
         the line, the character under the cursor should be deleted. */
       if (rl_point == rl_mark)
-       rl_point++;
+       _rl_vi_advance_point ();
       else
        {
          /* Move past the end of the word so that the kill doesn't
             remove the last letter of the previous word.  Only do this
             if we are not at the end of the line. */
          if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point]))
-           rl_point++;
+           _rl_vi_advance_point ();
        }
     }
 
@@ -1193,8 +1248,7 @@ _rl_vi_domove_motion_cleanup (c, m)
 #define RL_VIMOVENUMARG()      (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG))
 
 static int
-rl_domove_read_callback (m)
-     _rl_vimotion_cxt *m;
+rl_domove_read_callback (_rl_vimotion_cxt *m)
 {
   int c, save;
 
@@ -1260,8 +1314,7 @@ rl_domove_read_callback (m)
 }
 
 static int
-rl_vi_domove_getchar (m)
-     _rl_vimotion_cxt *m;
+rl_vi_domove_getchar (_rl_vimotion_cxt *m)
 {
   int c;
 
@@ -1274,8 +1327,7 @@ rl_vi_domove_getchar (m)
 
 #if defined (READLINE_CALLBACKS)
 int
-_rl_vi_domove_callback (m)
-     _rl_vimotion_cxt *m;
+_rl_vi_domove_callback (_rl_vimotion_cxt *m)
 {
   int c, r;
 
@@ -1288,10 +1340,9 @@ _rl_vi_domove_callback (m)
 }
 #endif
 
-/* This code path taken when not in callback mode. */
+/* This code path is taken when not in callback mode. */
 int
-rl_vi_domove (x, ignore)
-     int x, *ignore;
+rl_vi_domove (int x, int *ignore)
 {
   int r;
   _rl_vimotion_cxt *m;
@@ -1309,22 +1360,20 @@ rl_vi_domove (x, ignore)
 }
 
 static int
-vi_delete_dispatch (m)
-     _rl_vimotion_cxt *m;
+vi_delete_dispatch (_rl_vimotion_cxt *m)
 {
   /* These are the motion commands that do not require adjusting the
      mark. */
   if (((strchr (" l|h^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
       (rl_mark < rl_end))
-    rl_mark++;
+    INCREMENT_POS (rl_mark);
 
   rl_kill_text (rl_point, rl_mark);
   return (0);
 }
 
 int
-rl_vi_delete_to (count, key)
-     int count, key;
+rl_vi_delete_to (int count, int key)
 {
   int c, r;
 
@@ -1373,15 +1422,14 @@ rl_vi_delete_to (count, key)
 }
 
 static int
-vi_change_dispatch (m)
-     _rl_vimotion_cxt *m;
+vi_change_dispatch (_rl_vimotion_cxt *m)
 {
   /* These are the motion commands that do not require adjusting the
      mark.  c[wW] are handled by special-case code in rl_vi_domove(),
      and already leave the mark at the correct location. */
   if (((strchr (" l|hwW^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
       (rl_mark < rl_end))
-    rl_mark++;
+    INCREMENT_POS (rl_mark);
 
   /* The cursor never moves with c[wW]. */
   if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start)
@@ -1413,8 +1461,7 @@ vi_change_dispatch (m)
 }
 
 int
-rl_vi_change_to (count, key)
-     int count, key;
+rl_vi_change_to (int count, int key)
 {
   int c, r;
 
@@ -1463,14 +1510,13 @@ rl_vi_change_to (count, key)
 }
 
 static int
-vi_yank_dispatch (m)
-     _rl_vimotion_cxt *m;
+vi_yank_dispatch (_rl_vimotion_cxt *m)
 {
   /* These are the motion commands that do not require adjusting the
      mark. */
   if (((strchr (" l|h^0%bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
       (rl_mark < rl_end))
-    rl_mark++;
+    INCREMENT_POS (rl_mark);
 
   rl_begin_undo_group ();
   rl_kill_text (rl_point, rl_mark);
@@ -1482,8 +1528,7 @@ vi_yank_dispatch (m)
 }
 
 int
-rl_vi_yank_to (count, key)
-     int count, key;
+rl_vi_yank_to (int count, int key)
 {
   int c, r;
 
@@ -1532,8 +1577,7 @@ rl_vi_yank_to (count, key)
 }
 
 static int
-vidomove_dispatch (m)
-     _rl_vimotion_cxt *m;
+vidomove_dispatch (_rl_vimotion_cxt *m)
 {
   int r;
 
@@ -1559,8 +1603,7 @@ vidomove_dispatch (m)
 }
 
 int
-rl_vi_rubout (count, key)
-     int count, key;
+rl_vi_rubout (int count, int key)
 {
   int opoint;
 
@@ -1590,8 +1633,7 @@ rl_vi_rubout (count, key)
 }
 
 int
-rl_vi_delete (count, key)
-     int count, key;
+rl_vi_delete (int count, int key)
 {
   int end;
 
@@ -1626,8 +1668,7 @@ rl_vi_delete (count, key)
 #define vi_unix_word_boundary(c)       (whitespace(c) || ispunct(c))
 
 int
-rl_vi_unix_word_rubout (count, key)
-     int count, key;
+rl_vi_unix_word_rubout (int count, int key)
 {
   int orig_point;
 
@@ -1665,8 +1706,8 @@ rl_vi_unix_word_rubout (count, key)
            while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1]))
              rl_point--;
          else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0)
-           while (rl_point && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0))
-             rl_point--;
+           while (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0))
+             _rl_vi_backup_point ();
        }
 
       rl_kill_text (orig_point, rl_point);
@@ -1677,8 +1718,7 @@ rl_vi_unix_word_rubout (count, key)
 
 
 int
-rl_vi_back_to_indent (count, key)
-     int count, key;
+rl_vi_back_to_indent (int count, int key)
 {
   rl_beg_of_line (1, key);
   while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
@@ -1687,8 +1727,7 @@ rl_vi_back_to_indent (count, key)
 }
 
 int
-rl_vi_first_print (count, key)
-     int count, key;
+rl_vi_first_print (int count, int key)
 {
   return (rl_vi_back_to_indent (1, key));
 }
@@ -1697,8 +1736,7 @@ static int _rl_cs_dir, _rl_cs_orig_dir;
 
 #if defined (READLINE_CALLBACKS)
 static int
-_rl_vi_callback_char_search (data)
-     _rl_callback_generic_arg *data;
+_rl_vi_callback_char_search (_rl_callback_generic_arg *data)
 {
   int c;
 #if defined (HANDLE_MULTIBYTE)
@@ -1732,8 +1770,7 @@ _rl_vi_callback_char_search (data)
 #endif
 
 int
-rl_vi_char_search (count, key)
-     int count, key;
+rl_vi_char_search (int count, int key)
 {
   int c;
 #if defined (HANDLE_MULTIBYTE)
@@ -1826,8 +1863,7 @@ rl_vi_char_search (count, key)
 
 /* Match brackets */
 int
-rl_vi_match (ignore, key)
-     int ignore, key;
+rl_vi_match (int ignore, int key)
 {
   int count = 1, brack, pos, tmp, pre;
 
@@ -1916,8 +1952,7 @@ rl_vi_match (ignore, key)
 }
 
 int
-rl_vi_bracktype (c)
-     int c;
+rl_vi_bracktype (int c)
 {
   switch (c)
     {
@@ -1932,9 +1967,7 @@ rl_vi_bracktype (c)
 }
 
 static int
-_rl_vi_change_char (count, c, mb)
-     int count, c;
-     char *mb;
+_rl_vi_change_char (int count, int c, char *mb)
 {
   int p;
 
@@ -1947,7 +1980,7 @@ _rl_vi_change_char (count, c, mb)
       p = rl_point;
       rl_vi_delete (1, c);
       if (rl_point < p)                /* Did we retreat at EOL? */
-       rl_point++;
+       _rl_vi_append_forward (c);
 #if defined (HANDLE_MULTIBYTE)
       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
        rl_insert_text (mb);
@@ -1965,9 +1998,7 @@ _rl_vi_change_char (count, c, mb)
 }
 
 static int
-_rl_vi_callback_getchar (mb, mlen)
-     char *mb;
-     int mlen;
+_rl_vi_callback_getchar (char *mb, int mlen)
 {
   int c;
 
@@ -1988,13 +2019,18 @@ _rl_vi_callback_getchar (mb, mlen)
 
 #if defined (READLINE_CALLBACKS)
 static int
-_rl_vi_callback_change_char (data)
-     _rl_callback_generic_arg *data;
+_rl_vi_callback_change_char (_rl_callback_generic_arg *data)
 {
   int c;
-  char mb[MB_LEN_MAX];
+  char mb[MB_LEN_MAX+1];
 
-  _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+  c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+#if defined (HANDLE_MULTIBYTE)
+  strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+#else
+  _rl_vi_last_replacement[0] = c;
+#endif
+  _rl_vi_last_replacement[MB_LEN_MAX] = '\0';  /* XXX */
 
   if (c < 0)
     return -1;
@@ -2007,17 +2043,16 @@ _rl_vi_callback_change_char (data)
 #endif
 
 int
-rl_vi_change_char (count, key)
-     int count, key;
+rl_vi_change_char (int count, int key)
 {
   int c;
-  char mb[MB_LEN_MAX];
+  char mb[MB_LEN_MAX+1];
 
   if (_rl_vi_redoing)
     {
-      c = _rl_vi_last_replacement;
-      mb[0] = c;
-      mb[1] = '\0';
+      strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX);
+      c = (unsigned char)_rl_vi_last_replacement[0];   /* XXX */
+      mb[MB_LEN_MAX] = '\0';
     }
 #if defined (READLINE_CALLBACKS)
   else if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -2028,7 +2063,15 @@ rl_vi_change_char (count, key)
     }
 #endif
   else
-    _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+    {
+      c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+#ifdef HANDLE_MULTIBYTE
+      strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+#else
+      _rl_vi_last_replacement[0] = c;
+#endif
+      _rl_vi_last_replacement[MB_LEN_MAX] = '\0';      /* just in case */      
+    }
 
   if (c < 0)
     return -1;
@@ -2037,8 +2080,7 @@ rl_vi_change_char (count, key)
 }
 
 int
-rl_vi_subst (count, key)
-     int count, key;
+rl_vi_subst (int count, int key)
 {
   /* If we are redoing, rl_vi_change_to will stuff the last motion char */
   if (_rl_vi_redoing == 0)
@@ -2048,8 +2090,7 @@ rl_vi_subst (count, key)
 }
 
 int
-rl_vi_overstrike (count, key)
-     int count, key;
+rl_vi_overstrike (int count, int key)
 {
   if (_rl_vi_doing_insert == 0)
     {
@@ -2067,8 +2108,7 @@ rl_vi_overstrike (count, key)
 }
 
 int
-rl_vi_overstrike_delete (count, key)
-     int count, key;
+rl_vi_overstrike_delete (int count, int key)
 {
   int i, s;
 
@@ -2098,8 +2138,7 @@ rl_vi_overstrike_delete (count, key)
 }
 
 int
-rl_vi_replace (count, key)
-     int count, key;
+rl_vi_replace (int count, int key)
 {
   int i;
 
@@ -2130,6 +2169,9 @@ rl_vi_replace (count, key)
          vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
        vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
 
+      /* Make sure this is the value we need. */
+      vi_replace_map[ANYOTHERKEY].type = ISFUNC;
+      vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL;
     }
 
   rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -2145,7 +2187,7 @@ rl_vi_replace (count, key)
    the previous character.  A space matches everything.  Word delimiters are
    space and ;. */
 int
-rl_vi_possible_completions()
+rl_vi_possible_completions (void)
 {
   int save_pos = rl_point;
 
@@ -2153,7 +2195,7 @@ rl_vi_possible_completions()
     {
       while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' &&
             rl_line_buffer[rl_point] != ';')
-       rl_point++;
+       _rl_vi_advance_point ();
     }
   else if (rl_line_buffer[rl_point - 1] == ';')
     {
@@ -2170,7 +2212,7 @@ rl_vi_possible_completions()
 
 /* Functions to save and restore marks. */
 static int
-_rl_vi_set_mark ()
+_rl_vi_set_mark (void)
 {
   int ch;
 
@@ -2190,8 +2232,7 @@ _rl_vi_set_mark ()
 
 #if defined (READLINE_CALLBACKS)
 static int
-_rl_vi_callback_set_mark (data)
-     _rl_callback_generic_arg *data;
+_rl_vi_callback_set_mark (_rl_callback_generic_arg *data)
 {
   _rl_callback_func = 0;
   _rl_want_redisplay = 1;
@@ -2201,8 +2242,7 @@ _rl_vi_callback_set_mark (data)
 #endif
 
 int
-rl_vi_set_mark (count, key)
-     int count, key;
+rl_vi_set_mark (int count, int key)
 {
 #if defined (READLINE_CALLBACKS)
   if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -2217,7 +2257,7 @@ rl_vi_set_mark (count, key)
 }
 
 static int
-_rl_vi_goto_mark ()
+_rl_vi_goto_mark (void)
 {
   int ch;
 
@@ -2248,8 +2288,7 @@ _rl_vi_goto_mark ()
 
 #if defined (READLINE_CALLBACKS)
 static int
-_rl_vi_callback_goto_mark (data)
-     _rl_callback_generic_arg *data;
+_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data)
 {
   _rl_callback_func = 0;
   _rl_want_redisplay = 1;
@@ -2259,8 +2298,7 @@ _rl_vi_callback_goto_mark (data)
 #endif
 
 int
-rl_vi_goto_mark (count, key)
-     int count, key;
+rl_vi_goto_mark (int count, int key)
 {
 #if defined (READLINE_CALLBACKS)
   if (RL_ISSTATE (RL_STATE_CALLBACK))
index 37a81e6c236cbd2d4e8f12951cf32ef8b1942410..c199b29bdfd769987494d6faa90270cea8625adf 100644 (file)
@@ -1,6 +1,6 @@
 /* xfree.c -- safe version of free that ignores attempts to free NUL */
 
-/* Copyright (C) 1991-2010 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -42,8 +42,7 @@
 /* Use this as the function to call when adding unwind protects so we
    don't need to know what free() returns. */
 void
-xfree (string)
-     PTR_T string;
+xfree (PTR_T string)
 {
   if (string)
     free (string);
index c77d7634d6a062cfe12bee494b35fbccc1653c85..5d01d75eaeff07805e10fb512dc70949a59c6040 100644 (file)
@@ -1,6 +1,6 @@
 /* xmalloc.c -- safe versions of malloc and realloc */
 
-/* Copyright (C) 1991-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.      
@@ -42,8 +42,7 @@
 /* **************************************************************** */
 
 static void
-memory_error_and_abort (fname)
-     char *fname;
+memory_error_and_abort (char *fname)
 {
   fprintf (stderr, "%s: out of virtual memory\n", fname);
   exit (2);
@@ -53,8 +52,7 @@ memory_error_and_abort (fname)
    to hold BYTES number of bytes.  If the memory cannot be allocated,
    print an error message and abort. */
 PTR_T
-xmalloc (bytes)
-     size_t bytes;
+xmalloc (size_t bytes)
 {
   PTR_T temp;
 
@@ -65,9 +63,7 @@ xmalloc (bytes)
 }
 
 PTR_T
-xrealloc (pointer, bytes)
-     PTR_T pointer;
-     size_t bytes;
+xrealloc (PTR_T pointer, size_t bytes)
 {
   PTR_T temp;
 
index 2ca921b33a43686013d16575c9063cef6bc1f7fc..06917ba4e28c8e3172018acd86517f80f766dc9f 100644 (file)
@@ -67,8 +67,8 @@ LOCAL_DEFS = @LOCAL_DEFS@
 
 INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC)
 
-CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \
-         $(CFLAGS) $(CPPFLAGS) 
+CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \
+         $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS) 
 
 GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \
                 -Wcast-align -Wstrict-prototypes -Wconversion \
@@ -92,7 +92,8 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \
           mktime.c strftime.c mbschr.c zcatfd.c zmapfd.c winsize.c eaccess.c \
           wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \
           casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \
-          strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c
+          strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \
+          utf8.c
 
 # The header files for this library.
 HSOURCES = 
@@ -107,7 +108,7 @@ OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \
          fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \
          fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \
          input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \
-         wcsnwidth.o ${LIBOBJS}
+         utf8.o wcsnwidth.o ${LIBOBJS}
 
 SUPPORT = Makefile
 
@@ -200,6 +201,7 @@ tmpfile.o: tmpfile.c
 uconvert.o: uconvert.c
 ufuncs.o: ufuncs.c
 unicode.o: unicode.c
+utf8.o: utf8.c
 vprint.o: vprint.c
 wcsdup.o: wcsdup.c
 wcsnwidth.o: wcsnwidth.c
@@ -277,6 +279,7 @@ tmpfile.o: ${BUILD_DIR}/config.h
 uconvert.o: ${BUILD_DIR}/config.h
 ufuncs.o: ${BUILD_DIR}/config.h
 unicode.o: ${BUILD_DIR}/config.h
+utf8.o: ${BUILD_DIR}/config.h
 vprint.o: ${BUILD_DIR}/config.h
 wcsdup.o: ${BUILD_DIR}/config.h
 wcsnwidth.o: ${BUILD_DIR}/config.h
@@ -612,6 +615,10 @@ unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h
 unicode.o: ${BASHINCDIR}/stdc.h
 unicode.o: ${topdir}/xmalloc.h
 
+utf8.o: ${topdir}/bashansi.h
+utf8.o: ${BASHINCDIR}/ansi_stdlib.h
+utf8.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
+
 winsize.o: ${BASHINCDIR}/stdc.h
 winsize.o: ${topdir}/xmalloc.h
 winsize.o: ${topdir}/bashtypes.h
index f68303bc44d8f692964383ae5843f48a846e967a..7cdd4178b6b3f03185e9d1934a82379e6961229c 100644 (file)
@@ -229,7 +229,10 @@ singlebyte:
       else
        {
          m = mbrtowc (&wc, string + start, end - start, &state);
-         if (MB_INVALIDCH (m) || m == 1)
+         /* Have to go through wide case conversion even for single-byte
+            chars, to accommodate single-byte characters where the
+            corresponding upper or lower case equivalent is multibyte. */
+         if (MB_INVALIDCH (m))
            {
              wc = (unsigned char)string[start];
              goto singlebyte;
index 84cdbc5422cd4dc50c5bfa9eca3c30d1de79cebf..c6c52bf89f7bdb3de365664fabe316c7be237d8d 100644 (file)
 #include <stdio.h>
 #include <stdc.h>
 
-extern long get_clk_tck __P((void));
+#include <bashintl.h>
+
+#ifndef locale_decpoint
+extern int locale_decpoint PARAMS((void));
+#endif
+
+extern long get_clk_tck PARAMS((void));
 
 void
 clock_t_to_secs (t, sp, sfp)
@@ -76,6 +82,6 @@ print_clock_t (fp, t)
   minutes = timestamp / 60;
   seconds = timestamp % 60;
 
-  fprintf (fp, "%ldm%d.%03ds",  minutes, seconds, seconds_fraction);
+  fprintf (fp, "%ldm%d%c%03ds",  minutes, seconds, locale_decpoint(), seconds_fraction);
 }
 #endif /* HAVE_TIMES */
index 8fd8a43e780d4130b74fbf17a19efd1a879c5bfd..3d8ae4e85762a74cdf3455667da0ab0f65afe181 100644 (file)
@@ -91,7 +91,9 @@ sh_stat (path, finfo)
     }
   if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0)
     {
-#if !defined (HAVE_DEV_FD)
+      /* If stating /dev/fd/n doesn't produce the same results as fstat of
+        FD N, then define DEV_FD_STAT_BROKEN */
+#if !defined (HAVE_DEV_FD) || defined (DEV_FD_STAT_BROKEN)
       intmax_t fd;
       int r;
 
index 8b5e34060accd1ba5fc6fdd5fd30aaa424139cb8..1e682aefb0a2be11a7f8a1467944d1904a9ad4a8 100644 (file)
@@ -69,7 +69,7 @@ getenv (name)
       if (var && exported_p (var))
        return (value_cell (var));
     }
-  else
+  else if (environ)
     {
       register int i, len;
 
index 7730e46eea2a441e04fbb60dc385630f7fa26a68..639962d46317785baabae86bac6623b101ad2cc6 100644 (file)
 #include "shmbutil.h"
 
 extern int locale_mb_cur_max;
+extern int locale_utf8locale;
 
 #undef mbschr
 
+extern char *utf8_mbschr (const char *, int);  /* XXX */
+
 /* In some locales, the non-first byte of some multibyte characters have
    the same value as some ascii character.  Faced with these strings, a
    legacy strchr() might return the wrong value. */
@@ -49,6 +52,9 @@ mbschr (s, c)
   mbstate_t state;
   size_t strlength, mblength;
 
+  if (locale_utf8locale && c < 0x80)
+    return (utf8_mbschr (s, c));               /* XXX */
+
   /* The locale encodings with said weird property are BIG5, BIG5-HKSCS,
      GBK, GB18030, SHIFT_JIS, and JOHAB.  They exhibit the problem only
      when c >= 0x30.  We can therefore use the faster bytewise search if
index aaf81f5e5afe8df734ec15f835f4d28e138c1203..c7c8443578f1ea28232590460a5ef99e386bd7d6 100644 (file)
@@ -1,6 +1,6 @@
 /* mbscmp - multibyte string comparison. */
 
-/* Copyright (C) 1995-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #include <stddef.h>
 #include <string.h>
 
+extern int locale_utf8locale;
+
+extern int utf8_mbscmp (const char *, const char *);
+
 /* Compare MBS1 and MBS2.  */
 int
 mbscmp (mbs1, mbs2)
index f19bd55fde65ead1ccc367aa890e5f2d030c9c95..f9506dffd5b94fc234665a92ca0e3f40a53eb32c 100644 (file)
@@ -227,7 +227,7 @@ sh_canonpath (path, flags)
       if (result[2] == '\0')   /* short-circuit for bare `//' */
        result[1] = '\0';
       else
-       strcpy (result, result + 1);
+       memmove (result, result + 1, strlen (result + 1) + 1);
     }
 
   return (result);
index 26016b76b3787c84cc7d148745672b28cebb7657..99390cefb20dc3f0e9fffbbdad4661ca2743182d 100644 (file)
@@ -245,7 +245,7 @@ error:
       if (result[2] == '\0')   /* short-circuit for bare `//' */
        result[1] = '\0';
       else
-       strcpy (result, result + 1);
+       memmove (result, result + 1, strlen (result + 1) + 1);
     }
 
   return (result);
index 7f14208e6954d004d7c51282d3dec8af9a5319b1..f2f2582b442d5ca45b49933d3e4a9dfba3ff6df5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2006, 2009, 2010, 2012, 2015 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2006, 2009, 2010, 2012, 2015-2018 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
 #include <stdlib.h>
 #include <limits.h>
 
+#include <errno.h>
+
 #include <shmbutil.h>
 #include <shmbchar.h>
 
+#ifndef errno
+extern int errno;
+#endif
+
 #if IS_BASIC_ASCII
 
 /* Bit table of characters in the ISO C "basic character set".  */
@@ -37,6 +43,13 @@ const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] =
 
 #endif /* IS_BASIC_ASCII */
 
+extern int locale_utf8locale;
+
+extern char *utf8_mbsmbchar (const char *);
+extern int utf8_mblen (const char *, size_t);
+
+/* Count the number of characters in S, counting multi-byte characters as a
+   single character. */
 size_t
 mbstrlen (s)
      const char *s;
@@ -65,6 +78,8 @@ mbstrlen (s)
 }
 
 /* Return pointer to first multibyte char in S, or NULL if none. */
+/* XXX - if we know that the locale is UTF-8, we can just check whether or
+   not any byte has the eighth bit turned on */
 char *
 mbsmbchar (s)
      const char *s;
@@ -74,13 +89,19 @@ mbsmbchar (s)
   mbstate_t mbs = { 0 };
   int mb_cur_max;
 
+  if (locale_utf8locale)
+    return (utf8_mbsmbchar (s));       /* XXX */
+
   mb_cur_max = MB_CUR_MAX;
   for (t = (char *)s; *t; t++)
     {
       if (is_basic (*t))
        continue;
 
-      clen = mbrlen (t, mb_cur_max, &mbs);
+      if (locale_utf8locale)           /* not used if above code active */
+       clen = utf8_mblen (t, mb_cur_max);
+      else
+       clen = mbrlen (t, mb_cur_max, &mbs);
 
       if (clen == 0)
         return 0;
index ecec5971f7d412bcea25554820e3c1c1b1d155f8..97e2bc533104440989409f6cce86ea4eef643ce1 100644 (file)
@@ -228,7 +228,8 @@ sh_un_double_quote (string)
    going through the shell parser, which will protect the internal
    quoting characters.  TABLE, if set, points to a map of the ascii code
    set with char needing to be backslash-quoted if table[char]==1.  FLAGS,
-   if 1, causes tildes to be quoted as well. */
+   if 1, causes tildes to be quoted as well.  If FLAGS&2, backslash-quote
+   other shell blank characters. */
    
 char *
 sh_backslash_quote (string, table, flags)
@@ -273,6 +274,8 @@ sh_backslash_quote (string, table, flags)
         /* Tildes are special at the start of a word or after a `:' or `='
           (technically unquoted, but it doesn't make a difference in practice) */
        *r++ = '\\';
+      else if ((flags&2) && shellblank((unsigned char)c))
+       *r++ = '\\';
       *r++ = c;
     }
 
index 87ca2173c946e65065bebac5e805f886283afacb..6e5892ee701f41ed92a445b63bb389781e56824e 100644 (file)
@@ -142,9 +142,11 @@ extern char *fmtullong __P((unsigned long long int, int, char *, size_t, int));
    302 / 1000 is log10 (2) rounded up;
    add one for integer division truncation;
    add one more for a minus sign if t is signed.  */
+#ifndef INT_STRLEN_BOUND
 #define INT_STRLEN_BOUND(t) \
   ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
      + 1 + TYPE_SIGNED (t))
+#endif
 
 /* conversion flags */
 #define PF_ALTFORM     0x00001         /* # */
index 5542f7155891371f651fff57fcf1e322f2ff452e..70d0551a11dcc5a7f7b371bd97ec07e9fd89e5df 100644 (file)
@@ -32,7 +32,7 @@ int
 strncasecmp (string1, string2, count)
      const char *string1;
      const char *string2;
-     int count;
+     size_t count;
 {
   register const char *s1;
   register const char *s2;
index 798314765918c70b48a7c00484e24ea491c8d80d..48f255f5d39baa0197a2034b415c3a1758f62f04 100644 (file)
@@ -230,8 +230,6 @@ ansic_quote (str, flags, rlen)
   *r++ = '$';
   *r++ = '\'';
 
-  s = str;
-
   for (s = str; c = *s; s++)
     {
       b = l = 1;               /* 1 == add backslash; 0 == no backslash */
@@ -305,11 +303,9 @@ ansic_wshouldquote (string)
 {
   const wchar_t *wcs;
   wchar_t wcc;
-
   wchar_t *wcstr = NULL;
   size_t slen;
 
-
   slen = mbstowcs (wcstr, string, 0);
 
   if (slen == (size_t)-1)
index 7bd9df8f6d652b7bdac83fb5fea85b352200d0aa..c4b61dc8a9bc070634fce2b422f0e6e47d8e4f2f 100644 (file)
 #include <sys/types.h>
 #include <posixtime.h>
 
+#include <bashintl.h>
+#include <stdc.h>
+
+#ifndef locale_decpoint
+extern int locale_decpoint PARAMS((void));
+#endif
+
 #include <stdio.h>
 
 struct timeval *
@@ -140,6 +147,6 @@ print_timeval (fp, tvp)
   minutes = timestamp / 60;
   seconds = timestamp % 60;
 
-  fprintf (fp, "%ldm%d.%03ds",  minutes, seconds, seconds_fraction);
+  fprintf (fp, "%ldm%d%c%03ds",  minutes, seconds, locale_decpoint (), seconds_fraction);
 }
 #endif /* HAVE_TIMEVAL */
index fcd4c044455238d085bb1435f51dbf76f9dde49c..ad9284ccbfca3f14e50854994a03ae40d0648590 100644 (file)
 #include <unistd.h>
 #endif
 
+#include <errno.h>
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
 #if defined (HAVE_SELECT)
 #  include "posixselect.h"
+#  include "quit.h"
+#  include "trap.h"
+#  include "stat-time.h"
 #endif
 
 /* A version of `alarm' using setitimer if it's available. */
@@ -84,17 +92,50 @@ falarm (secs, usecs)
 /* A version of sleep using fractional seconds and select.  I'd like to use
    `usleep', but it's already taken */
 
-#if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
+#if defined (HAVE_TIMEVAL) && (defined (HAVE_SELECT) || defined (HAVE_PSELECT))
 int
 fsleep(sec, usec)
      unsigned int sec, usec;
 {
+  int e, r;
+  sigset_t blocked_sigs, prevmask;
+#if defined (HAVE_PSELECT)
+  struct timespec ts;
+#else
   struct timeval tv;
+#endif
 
+  sigemptyset (&blocked_sigs);
+#  if defined (SIGCHLD)
+  sigaddset (&blocked_sigs, SIGCHLD);
+#  endif
+
+#if defined (HAVE_PSELECT)
+  ts.tv_sec = sec;
+  ts.tv_nsec = usec * 1000;
+#else
+  sigemptyset (&prevmask);
   tv.tv_sec = sec;
   tv.tv_usec = usec;
+#endif /* !HAVE_PSELECT */
+
+  do
+    {
+#if defined (HAVE_PSELECT)
+      r = pselect(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs);
+#else
+      sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask);
+      r = select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv);
+      sigprocmask (SIG_SETMASK, &prevmask, NULL);
+#endif
+      e = errno;
+      if (r < 0 && errno == EINTR)
+       QUIT;           /* just signals, no traps */
+      errno = e;
+    }
+  while (r < 0 && errno == EINTR);
 
-  return select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv);
+  return r;
 }
 #else /* !HAVE_TIMEVAL || !HAVE_SELECT */
 int
index b58eaefd939368457badeb373335adf7cf7f093c..fe13c4a0b2bee0a43c909890e09fb884bb4a0e8d 100644 (file)
@@ -1,6 +1,6 @@
 /* unicode.c - functions to convert unicode characters */
 
-/* Copyright (C) 2010-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2016 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -55,6 +55,8 @@ extern const char *locale_charset __P((void));
 extern char *get_locale_var __P((char *));
 #endif
 
+extern int locale_utf8locale;
+
 static int u32init = 0;
 static int utf8locale = 0;
 #if defined (HAVE_ICONV)
@@ -219,12 +221,12 @@ u32toutf16 (c, s)
   int l;
 
   l = 0;
-  if (c < 0x0d800)
+  if (c < 0x0d800 || (c >= 0x0e000 && c <= 0x0ffff))
     {
       s[0] = (unsigned short) (c & 0xFFFF);
       l = 1;
     }
-  else if (c >= 0x0e000 && c <= 0x010ffff)
+  else if (c >= 0x10000 && c <= 0x010ffff)
     {
       c -= 0x010000;
       s[0] = (unsigned short)((c >> 10) + 0xd800);
@@ -265,28 +267,21 @@ u32cconv (c, s)
     return n;
 #endif
 
-#if HAVE_NL_LANGINFO
-  codeset = nl_langinfo (CODESET);
-  if (STREQ (codeset, "UTF-8"))
-    {
-      n = u32toutf8 (c, s);
-      return n;
-    }
-#endif
-
 #if HAVE_ICONV
   /* this is mostly from coreutils-8.5/lib/unicodeio.c */
   if (u32init == 0)
     {
-#  if HAVE_LOCALE_CHARSET
-      charset = locale_charset ();     /* XXX - fix later */
-#  else
-      charset = stub_charset ();
-#  endif
-      if (STREQ (charset, "UTF-8"))
-       utf8locale = 1;
-      else
+      utf8locale = locale_utf8locale;
+      localconv = (iconv_t)-1;
+      if (utf8locale == 0)
        {
+#if HAVE_LOCALE_CHARSET
+         charset = locale_charset ();
+#elif HAVE_NL_LANGINFO
+         charset = nl_langinfo (CODESET);
+#else
+         charset = stub_charset ();
+#endif
          localconv = iconv_open (charset, "UTF-8");
          if (localconv == (iconv_t)-1)
            /* We assume ASCII when presented with an unknown encoding. */
@@ -295,6 +290,8 @@ u32cconv (c, s)
       u32init = 1;
     }
 
+  /* NL_LANGINFO and locale_charset used when setting locale_utf8locale */
+  
   /* If we have a UTF-8 locale, convert to UTF-8 and return converted value. */
   n = u32toutf8 (c, s);
   if (utf8locale)
@@ -315,12 +312,8 @@ u32cconv (c, s)
 
   if (iconv (localconv, (ICONV_CONST char **)&iptr, &sn, &optr, &obytesleft) == (size_t)-1)
     {
-#if 1
       /* You get ISO C99 escape sequences if iconv fails */      
       n = u32tocesc (c, s);
-#else
-      /* You get UTF-8 if iconv fails */
-#endif
       return n;
     }
 
@@ -332,7 +325,10 @@ u32cconv (c, s)
   return (optr - obuf);
 #endif /* HAVE_ICONV */
 
-  n = u32tocesc (c, s);        /* fallback is ISO C99 escape sequences */
+  if (locale_utf8locale)
+    n = u32toutf8 (c, s);
+  else
+    n = u32tocesc (c, s);      /* fallback is ISO C99 escape sequences */
   return n;
 }
 #else
diff --git a/lib/sh/utf8.c b/lib/sh/utf8.c
new file mode 100644 (file)
index 0000000..d27fcf5
--- /dev/null
@@ -0,0 +1,147 @@
+/* utf8.c - UTF-8 character handling functions */
+
+/* Copyright (C) 2018 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 3 of the License, or
+   (at your option) any later version.
+
+   Bash is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Bash.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+#endif
+
+#include "bashansi.h"
+#include "shmbutil.h"
+
+extern int locale_mb_cur_max;
+extern int locale_utf8locale;
+
+#if defined (HANDLE_MULTIBYTE)
+
+char *
+utf8_mbschr (s, c)
+     const char *s;
+     int c;
+{
+  return strchr (s, c);                /* for now */
+}
+
+int
+utf8_mbscmp (s1, s2)
+     const char *s1, *s2;
+{
+  /* Use the fact that the UTF-8 encoding preserves lexicographic order.  */
+  return strcmp (s1, s2);
+}
+
+char *
+utf8_mbsmbchar (str)
+     const char *str;
+{
+  register char *s;
+
+  for (s = (char *)str; *s; s++)
+    if ((*s & 0xc0) == 0x80)
+      return s;
+  return (0);
+}
+
+int
+utf8_mbsnlen(src, srclen, maxlen)
+     const char *src;
+     size_t srclen;
+     int maxlen;
+{
+  register int sind, count;
+
+  for (sind = count = 0; src[sind] && sind <= maxlen; sind++)
+    {
+      if ((src[sind] & 0xc0) != 0x80)
+       count++;
+    }
+  return (count);
+}
+
+/* Adapted from GNU gnulib */
+int
+utf8_mblen (s, n)
+     const char *s;
+     size_t n;
+{
+  unsigned char c, c1;
+
+  if (s == 0)
+    return (0);        /* no shift states */
+  if (n <= 0)
+    return (-1);
+
+  c = (unsigned char)*s;
+  if (c < 0x80)
+    return (c != 0);
+  if (c >= 0xc2)
+    {
+      c1 = (unsigned char)s[1];
+      if (c < 0xe0)
+       {
+         if (n >= 2 && (s[1] ^ 0x80) < 0x40)
+           return 2;
+       }
+      else if (c < 0xf0)
+       {
+         if (n >= 3
+               && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+               && (c >= 0xe1 || c1 >= 0xa0)
+               && (c != 0xed || c1 < 0xa0))
+           return 3;
+       }
+      else if (c < 0xf8)
+       {
+         if (n >= 4
+               && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+               && (s[3] ^ 0x80) < 0x40
+               && (c >= 0xf1 || c1 >= 0x90)
+               && (c < 0xf4 || (c == 0xf4 && c1 < 0x90)))
+           return 4;
+       }
+    }
+  /* invalid or incomplete multibyte character */
+  return -1;
+}
+
+/* We can optimize this if we know the locale is UTF-8, but needs to handle
+   malformed byte sequences. */
+size_t
+utf8_mbstrlen(s)
+     const char *s;
+{
+  size_t clen, nc;
+  int mb_cur_max;
+
+  nc = 0;
+  mb_cur_max = MB_CUR_MAX;
+  while (*s && (clen = (size_t)utf8_mblen(s, mb_cur_max)) != 0)
+    {
+      if (MB_INVALIDCH(clen))
+       clen = 1;       /* assume single byte */
+
+      s += clen;
+      nc++;
+    }
+  return nc;
+}
+
+#endif
index 496f20b87726670839b655a7ea18407f69792f53..8b7ecedf641e641762f48daaf00beccd67630e67 100644 (file)
@@ -1,6 +1,6 @@
 /* zread - read data from file descriptor into buffer with retries */
 
-/* Copyright (C) 1999-2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -53,6 +53,7 @@ zread (fd, buf, len)
 {
   ssize_t r;
 
+  check_signals ();    /* check for signals before a blocking read */
   while ((r = read (fd, buf, len)) < 0 && errno == EINTR)
     /* XXX - bash-5.0 */
     /* We check executing_builtin and run traps here for backwards compatibility */
@@ -103,6 +104,7 @@ zreadintr (fd, buf, len)
      char *buf;
      size_t len;
 {
+  check_signals ();
   return (read (fd, buf, len));
 }
 
index 7ca3b7897f842ee15dc8f428e6f8c2ba4a0f5662..c21d3897c9280d389895a9cd616e2cd2981152db 100644 (file)
@@ -52,7 +52,7 @@ BASHINCDIR = ${topdir}/include
 
 INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib
 
-CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \
+CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \
          ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS)
 
 .c.o:
index fafb861982cff31c8446ede006b5a20b6c3003e5..9805a9248b3f3be6cfcdd46130a6f525e908e7c0 100644 (file)
@@ -1,7 +1,7 @@
 /* shell.c -- tilde utility functions that are normally provided by
              bash when readline is linked as part of the shell. */
 
-/* Copyright (C) 1998-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Tilde Library.
 
@@ -49,8 +49,7 @@ extern struct passwd *getpwuid ();
 #endif /* !HAVE_GETPW_DECLS */
 
 char *
-get_env_value (varname)
-     char *varname;
+get_env_value (char *varname)
 {
   return ((char *)getenv (varname));
 }
@@ -58,7 +57,7 @@ get_env_value (varname)
 /* If we're not using $HOME, assume that the passwd file information won't
    change while this shell instance is running. */
 char *
-get_home_dir ()
+get_home_dir (void)
 {
   static char *home_dir = (char *)NULL;
   struct passwd *entry;
index 95bc4215c525466f18acfecc1549693600fe4748..9d0f29614b65f28245a2d170f11a6167dfefad35 100644 (file)
@@ -1,6 +1,6 @@
 /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
 
-/* Copyright (C) 1988-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Readline Library (Readline), a library
    for reading lines of text with interactive input and history editing.
@@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
    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;
+tilde_find_prefix (const char *string, int *len)
 {
   register int i, j, string_len;
   register char **prefixes;
@@ -160,8 +158,7 @@ tilde_find_prefix (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;
+tilde_find_suffix (const char *string)
 {
   register int i, j, string_len;
   register char **suffixes;
@@ -189,8 +186,7 @@ tilde_find_suffix (string)
 
 /* Return a new string which is the result of tilde expanding STRING. */
 char *
-tilde_expand (string)
-     const char *string;
+tilde_expand (const char *string)
 {
   char *result;
   int result_size, result_index;
@@ -267,9 +263,7 @@ tilde_expand (string)
    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;
+isolate_tilde_prefix (const char *fname, int *lenp)
 {
   char *ret;
   int i;
@@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp)
    function.  Right now, it just calls tilde_find_suffix and allocates new
    memory, but it can be expanded to do different things later. */
 char *
-tilde_find_word (fname, flags, lenp)
-     const char *fname;
-     int flags, *lenp;
+tilde_find_word (const char *fname, int flags, int *lenp)
 {
   int x;
   char *r;
@@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp)
 /* 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;
+glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)
 {
   char *ret;
   int plen, slen;
@@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind)
    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;
+tilde_expand_word (const char *filename)
 {
   char *dirname, *expansion, *username;
   int user_len;
@@ -434,9 +422,7 @@ tilde_expand_word (filename)
 #undef NULL
 #include <stdio.h>
 
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *result, line[512];
   int done = 0;
@@ -464,11 +450,10 @@ main (argc, argv)
   exit (0);
 }
 
-static void memory_error_and_abort ();
+static void memory_error_and_abort (void);
 
 static void *
-xmalloc (bytes)
-     size_t bytes;
+xmalloc (size_t bytes)
 {
   void *temp = (char *)malloc (bytes);
 
@@ -478,9 +463,7 @@ xmalloc (bytes)
 }
 
 static void *
-xrealloc (pointer, bytes)
-     void *pointer;
-     int bytes;
+xrealloc (void *pointer, int bytes)
 {
   void *temp;
 
@@ -496,7 +479,7 @@ xrealloc (pointer, bytes)
 }
 
 static void
-memory_error_and_abort ()
+memory_error_and_abort (void)
 {
   fprintf (stderr, "readline: out of virtual memory\n");
   abort ();
index a199cdf367188a29d7d2f649d62212d04caa5ba5..d62547f643771ee6e7f7a4876e2728de2dd19c82 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -1,6 +1,6 @@
 /* locale.c - Miscellaneous internationalization functions. */
 
-/* Copyright (C) 1996-2009,2012 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2009,2012,2016 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -43,8 +43,9 @@
 extern int errno;
 #endif
 
-int locale_utf8locale; /* unused for now */
+int locale_utf8locale;
 int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */
+int locale_shiftstates;
 
 extern int dump_translatable_strings, dump_po_strings;
 
@@ -84,6 +85,8 @@ set_default_locale ()
   textdomain (PACKAGE);
 
   locale_mb_cur_max = MB_CUR_MAX;
+  locale_utf8locale = locale_isutf8 (default_locale);
+  locale_shiftstates = mblen ((char *)NULL, 0);
 }
 
 /* Set default values for LC_CTYPE, LC_COLLATE, LC_MESSAGES, LC_NUMERIC and
@@ -103,6 +106,8 @@ set_default_locale_vars ()
       setlocale (LC_CTYPE, lc_all);
       locale_setblanks ();
       locale_mb_cur_max = MB_CUR_MAX;
+      locale_utf8locale = locale_isutf8 (lc_all);
+      locale_shiftstates = mblen ((char *)NULL, 0);
       u32reset ();
     }
 #  endif
@@ -203,6 +208,10 @@ set_locale_var (var, value)
        }
       locale_setblanks ();
       locale_mb_cur_max = MB_CUR_MAX;
+      /* if LC_ALL == "", reset_locale_vars has already called this */
+      if (*lc_all && x)
+       locale_utf8locale = locale_isutf8 (lc_all);
+      locale_shiftstates = mblen ((char *)NULL, 0);
       u32reset ();
       return r;
 #else
@@ -219,6 +228,10 @@ set_locale_var (var, value)
          x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE"));
          locale_setblanks ();
          locale_mb_cur_max = MB_CUR_MAX;
+         /* if setlocale() returns NULL, the locale is not changed */
+         if (x)
+           locale_utf8locale = locale_isutf8 (x);
+         locale_shiftstates = mblen ((char *)NULL, 0);
          u32reset ();
        }
 #  endif
@@ -327,15 +340,16 @@ get_locale_var (var)
 static int
 reset_locale_vars ()
 {
-  char *t;
+  char *t, *x;
 #if defined (HAVE_SETLOCALE)
   if (lang == 0 || *lang == '\0')
     maybe_make_export_env ();          /* trust that this will change environment for setlocale */
   if (setlocale (LC_ALL, lang ? lang : "") == 0)
     return 0;
 
+  x = 0;
 #  if defined (LC_CTYPE)
-  t = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE"));
+  x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE"));
 #  endif
 #  if defined (LC_COLLATE)
   t = setlocale (LC_COLLATE, get_locale_var ("LC_COLLATE"));
@@ -352,8 +366,10 @@ reset_locale_vars ()
 
   locale_setblanks ();  
   locale_mb_cur_max = MB_CUR_MAX;
+  if (x)
+    locale_utf8locale = locale_isutf8 (x);
+  locale_shiftstates = mblen ((char *)NULL, 0);
   u32reset ();
-
 #endif
   return 1;
 }
@@ -547,17 +563,55 @@ locale_setblanks ()
     }
 }
 
+/* Parse a locale specification
+     language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]]
+   and return TRUE if the codeset is UTF-8 or utf8 */
 static int
 locale_isutf8 (lspec)
      char *lspec;
 {
-  char *cp;
+  char *cp, *encoding;
 
 #if HAVE_LANGINFO_CODESET
   cp = nl_langinfo (CODESET);
   return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8"));
+#elif HAVE_LOCALE_CHARSET
+  cp = locale_charset ();
+  return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8"));
 #else
   /* Take a shot */
-  return (strstr (lspec, "UTF-8") || strstr (lspec, "utf8"));
+  for (cp = lspec; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++)
+    {
+      if (*cp == '.')
+       {
+         for (encoding = ++cp; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++)
+           ;
+         /* The encoding (codeset) is the substring between encoding and cp */
+         if ((cp - encoding == 5 && STREQN (encoding, "UTF-8", 5)) ||
+             (cp - encoding == 4 && STREQN (encoding, "utf8", 4)))
+           return 1;
+         else
+           return 0;
+       }
+    }
+  return 0;
 #endif
 }
+
+#if defined (HAVE_LOCALECONV)
+int
+locale_decpoint ()
+{
+  struct lconv *lv;
+
+  lv = localeconv ();
+  return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.';
+}
+#else
+#  undef locale_decpoint
+int
+locale_decpoint ()
+{
+  return '.';
+}
+#endif
index b42e9ff148b22b43c7e087cd79ce2972488d44d6..ecbbfd6e7d891e7d49bd2b850486ec1641074dca 100644 (file)
@@ -1,7 +1,7 @@
 /* make_cmd.c -- Functions for making instances of the various
    parser constructs. */
 
-/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 
 #include "bashintl.h"
 
+#include "shell.h"
+#include "execute_cmd.h"
 #include "parser.h"
-#include "syntax.h"
-#include "command.h"
-#include "general.h"
-#include "error.h"
 #include "flags.h"
-#include "make_cmd.h"
-#include "dispose_cmd.h"
-#include "variables.h"
-#include "subst.h"
 #include "input.h"
-#include "ocache.h"
-#include "externs.h"
 
 #if defined (JOB_CONTROL)
 #include "jobs.h"
 
 #include "shmbutil.h"
 
-extern int line_number, current_command_line_count, parser_state;
-extern int last_command_exit_value;
-extern int shell_initialized;
-
 int here_doc_first_line = 0;
 
 /* Object caching */
@@ -805,7 +793,7 @@ make_function_def (name, command, lineno, lstart)
     temp->source_file = shell_initialized ? "main" : "environment";
 
 #if defined (DEBUGGER)
-  bind_function_def (name->word, temp);
+  bind_function_def (name->word, temp, 0);
 #endif
 
   temp->source_file = temp->source_file ? savestring (temp->source_file) : 0;
@@ -822,6 +810,7 @@ make_subshell_command (command)
   temp = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM));
   temp->command = command;
   temp->flags = CMD_WANT_SUBSHELL;
+  temp->line = line_number;
   return (make_command (cm_subshell, (SIMPLE_COM *)temp));
 }
 
index f17774d911a2b6a6bff26e81e248446d948f1951..fcd7766dc9b2aaa7f26c59d6713435c36c291fc2 100644 (file)
@@ -23,6 +23,8 @@
 
 #include "stdc.h"
 
+extern int here_doc_first_line;
+
 extern void cmd_init __P((void));
 
 extern WORD_DESC *alloc_word_desc __P((void));
index fdbe0ae0355e5ea22ad2569cb8a460b215170395..2201a29ac9f927d2b4535d0508fb54d75acf09a6 100644 (file)
--- a/nojobs.c
+++ b/nojobs.c
@@ -49,6 +49,7 @@
 #include "trap.h"
 
 #include "builtins/builtext.h" /* for wait_builtin */
+#include "builtins/common.h"
 
 #define DEFAULT_CHILD_MAX 32
 
 extern int errno;
 #endif /* !errno */
 
-extern int interactive, interactive_shell, login_shell;
-extern int subshell_environment;
-extern int last_command_exit_value, last_command_exit_signal;
-extern int interrupt_immediately;
-extern sh_builtin_func_t *this_shell_builtin;
 #if defined (HAVE_POSIX_SIGNALS)
 extern sigset_t top_level_mask;
 #endif
-extern procenv_t wait_intr_buf;
-extern int wait_intr_flag;
-extern int wait_signal_received;
 
 extern void set_original_signal __P((int, SigHandler *));
 
@@ -170,7 +163,10 @@ alloc_pid_list ()
 
   /* None of the newly allocated slots have process id's yet. */
   for (i = old; i < pid_list_size; i++)
-    pid_list[i].pid = NO_PID;
+    {
+      pid_list[i].pid = NO_PID;
+      pid_list[i].status = pid_list[i].flags = 0;
+    }
 }
 
 /* Return the offset within the PID_LIST array of an empty slot.  This can
@@ -273,6 +269,12 @@ set_pid_status (pid, status)
   coproc_pidchk (pid, status);
 #endif
 
+#if defined (PROCESS_SUBSTITUTION)
+  if ((slot = find_procsub_child (pid)) >= 0)
+    set_procsub_status (slot, pid, WSTATUS (status));
+    /* XXX - also saving in list below */
+#endif
+
   slot = find_index_by_pid (pid);
   if (slot == NO_PID)
     return;
@@ -399,8 +401,9 @@ cleanup_dead_jobs ()
 
   for (i = 0; i < pid_list_size; i++)
     {
-      if ((pid_list[i].flags & PROC_RUNNING) == 0 &&
-         (pid_list[i].flags & PROC_NOTIFIED))
+      if (pid_list[i].pid != NO_PID &&
+           (pid_list[i].flags & PROC_RUNNING) == 0 &&
+           (pid_list[i].flags & PROC_NOTIFIED))
        pid_list[i].pid = NO_PID;
     }
 
@@ -1034,6 +1037,12 @@ unfreeze_jobs_list ()
 {
 }
 
+void
+set_jobs_list_frozen (s)
+     int s;
+{
+}
+
 int
 count_all_jobs ()
 {
diff --git a/parse.y b/parse.y
index f415d2eecba791b11fba4d46691d18050f3ec3b9..3ff87bccc06c1f9ace9cdf2d0dd02ab506e36f9c 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -1,6 +1,6 @@
 /* parse.y - Yacc grammar for bash. */
 
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -45,6 +45,7 @@
 #define NEED_STRFTIME_DECL     /* used in externs.h */
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "typemax.h"           /* SIZE_MAX if needed */
 #include "trap.h"
 #include "flags.h"
@@ -94,6 +95,8 @@ typedef void *alias_t;
 #define RE_READ_TOKEN  -99
 #define NO_EXPANSION   -100
 
+#define END_ALIAS      -2
+
 #ifdef DEBUG
 #  define YYDEBUG 1
 #else
@@ -115,24 +118,12 @@ typedef void *alias_t;
 extern int extended_glob;
 #endif
 
-extern int eof_encountered;
-extern int no_line_editing, running_under_emacs;
-extern int current_command_number;
-extern int sourcelevel, parse_and_execute_level;
-extern int posixly_correct;
-extern int last_command_exit_value;
-extern pid_t last_command_subst_pid;
-extern char *shell_name, *current_host_name;
-extern char *dist_version;
-extern int patch_level;
 extern int dump_translatable_strings, dump_po_strings;
-extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-extern int here_doc_first_line;
-#if defined (BUFFERED_INPUT)
-extern int bash_input_fd_changed;
-#endif
 
+#if !defined (errno)
 extern int errno;
+#endif
+
 /* **************************************************************** */
 /*                                                                 */
 /*                 "Forward" declarations                          */
@@ -218,6 +209,7 @@ static void print_prompt __P((void));
 #if defined (HANDLE_MULTIBYTE)
 static void set_line_mbstate __P((void));
 static char *shell_input_line_property = NULL;
+static size_t shell_input_line_propsize = 0;
 #else
 #  define set_line_mbstate()
 #endif
@@ -328,6 +320,9 @@ static WORD_DESC *word_desc_to_read;
 
 static REDIRECTEE source;
 static REDIRECTEE redir;
+
+static FILE *yyoutstream;
+static FILE *yyerrstream;
 %}
 
 %union {
@@ -418,6 +413,23 @@ inputunit: simple_list simple_list_terminator
                              YYABORT;
                            }
                        }
+       |       error yacc_EOF
+                       {
+                         /* EOF after an error.  Do ignoreeof or not.  Really
+                            only interesting in non-interactive shells */
+                         global_command = (COMMAND *)NULL;
+                         if (last_command_exit_value == 0)
+                           last_command_exit_value = EX_BADUSAGE;      /* force error return */
+                         handle_eof_input_unit ();
+                         if (interactive && parse_and_execute_level == 0)
+                           {
+                             YYACCEPT;
+                           }
+                         else
+                           {
+                             YYABORT;
+                           }
+                       }
        |       yacc_EOF
                        {
                          /* Case of EOF seen by itself.  Do ignoreeof or
@@ -744,14 +756,14 @@ command:  simple_command
                          COMMAND *tc;
 
                          tc = $1;
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = $2;
                            }
-                         else
+                         else if (tc)
                            tc->redirects = $2;
                          $$ = $1;
                        }
@@ -830,21 +842,25 @@ for_command:      FOR WORD newline_list DO compound_list DONE
 arith_for_command:     FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE
                                {
                                  $$ = make_arith_for_command ($2, $6, arith_for_lineno);
+                                 if ($$ == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
        |               FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'
                                {
                                  $$ = make_arith_for_command ($2, $6, arith_for_lineno);
+                                 if ($$ == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
        |               FOR ARITH_FOR_EXPRS DO compound_list DONE
                                {
                                  $$ = make_arith_for_command ($2, $4, arith_for_lineno);
+                                 if ($$ == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
        |               FOR ARITH_FOR_EXPRS '{' compound_list '}'
                                {
                                  $$ = make_arith_for_command ($2, $4, arith_for_lineno);
+                                 if ($$ == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
        ;
@@ -879,6 +895,16 @@ select_command:    SELECT WORD newline_list DO list DONE
                          $$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
+       |       SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE
+                       {
+                         $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+       |       SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}'
+                       {
+                         $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
        ;
 
 case_command:  CASE WORD newline_list IN newline_list ESAC
@@ -928,14 +954,14 @@ function_body:    shell_command
                             redirection.  The two are semantically equivalent,
                             though -- the only difference is in how the
                             command printing code displays the redirections. */
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = $2;
                            }
-                         else
+                         else if (tc)
                            tc->redirects = $2;
                          $$ = $1;
                        }
@@ -958,14 +984,14 @@ coproc:           COPROC shell_command
                          COMMAND *tc;
 
                          tc = $2;
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = $3;
                            }
-                         else
+                         else if (tc)
                            tc->redirects = $3;
                          $$ = make_coproc_command ("COPROC", $2);
                          $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
@@ -980,14 +1006,14 @@ coproc:          COPROC shell_command
                          COMMAND *tc;
 
                          tc = $3;
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = $4;
                            }
-                         else
+                         else if (tc)
                            tc->redirects = $4;
                          $$ = make_coproc_command ($2->word, $3);
                          $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
@@ -1230,6 +1256,7 @@ pipeline_command: pipeline
                            token_to_read = '\n';
                          else if ($2 == ';')
                            token_to_read = ';';
+                         parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
        |       BANG list_terminator
                        {
@@ -1250,6 +1277,7 @@ pipeline_command: pipeline
                            token_to_read = '\n';
                          if ($2 == ';')
                            token_to_read = ';';
+                         parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
        ;
 
@@ -1316,6 +1344,8 @@ debug_parser (i)
 {
 #if YYDEBUG != 0
   yydebug = i;
+  yyoutstream = stdout;
+  yyerrstream = stderr;
 #endif
 }
 #endif
@@ -1453,6 +1483,7 @@ yy_readline_get ()
          old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
        }
 
+      sh_unset_nodelay_mode (fileno (rl_instream));    /* just in case */
       current_readline_line = readline (current_readline_prompt ?
                                          current_readline_prompt : "");
 
@@ -1615,19 +1646,9 @@ yy_stream_get ()
   result = EOF;
   if (bash_input.location.file)
     {
-#if 0
-      if (interactive)
-       interrupt_immediately++;
-#endif
-
       /* XXX - don't need terminate_immediately; getc_with_restart checks
         for terminating signals itself if read returns < 0 */
       result = getc_with_restart (bash_input.location.file);
-
-#if 0
-      if (interactive)
-       interrupt_immediately--;
-#endif
     }
   return (result);
 }
@@ -1961,6 +1982,23 @@ parser_restore_alias ()
 #endif
 }
 
+#if defined (ALIAS)
+/* Before freeing AP, make sure that there aren't any cases of pointer
+   aliasing that could cause us to reference freed memory later on. */
+void
+clear_string_list_expander (ap)
+     alias_t *ap;
+{
+  register STRING_SAVER *t;
+
+  for (t = pushed_string_list; t; t = t->next)
+    {
+      if (t->expander && t->expander == ap)
+       t->expander = 0;
+    }
+}
+#endif
+
 void
 clear_shell_input_line ()
 {
@@ -2014,7 +2052,8 @@ read_a_line (remove_quoted_newline)
          c = '\n';
        }
 
-      /* `+2' in case the final character in the buffer is a newline. */
+      /* `+2' in case the final character in the buffer is a newline or we
+        have to handle CTLESC or CTLNUL. */
       RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128);
 
       /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a
@@ -2045,7 +2084,14 @@ read_a_line (remove_quoted_newline)
            }
        }
       else
-       line_buffer[indx++] = c;
+       {
+         /* remove_quoted_newline is non-zero if the here-document delimiter
+            is unquoted. In this case, we will be expanding the lines and
+            need to make sure CTLESC and CTLNUL in the input are quoted. */
+         if (remove_quoted_newline && (c == CTLESC || c == CTLNUL))
+           line_buffer[indx++] = CTLESC;
+         line_buffer[indx++] = c;
+       }
 
       if (c == '\n')
        {
@@ -2306,6 +2352,16 @@ shell_getc (remove_quoted_newline)
 #if 0
              internal_warning ("shell_getc: ignored null byte in input");
 #endif
+             /* If we get EOS while parsing a string, treat it as EOF so we
+                don't just keep looping. Happens very rarely */
+             if (bash_input.type == st_string)
+               {
+                 if (i == 0)
+                   shell_input_line_terminator = EOF;
+                 shell_input_line[i] = '\0';
+                 c = EOF;
+                 break;
+               }
              continue;
            }
 
@@ -2369,20 +2425,21 @@ shell_getc (remove_quoted_newline)
        {
          char *expansions;
 #  if defined (BANG_HISTORY)
-         int old_hist;
-
          /* If the current delimiter is a single quote, we should not be
             performing history expansion, even if we're on a different
             line from the original single quote. */
-         old_hist = history_expansion_inhibited;
          if (current_delimiter (dstack) == '\'')
-           history_expansion_inhibited = 1;
+           history_quoting_state = '\'';
+         else if (current_delimiter (dstack) == '"')
+           history_quoting_state = '"';
+         else
+           history_quoting_state = 0;
 #  endif
          /* Calling with a third argument of 1 allows remember_on_history to
             determine whether or not the line is saved to the history list */
          expansions = pre_process_line (shell_input_line, 1, 1);
 #  if defined (BANG_HISTORY)
-         history_expansion_inhibited = old_hist;
+         history_quoting_state = 0;
 #  endif
          if (expansions != shell_input_line)
            {
@@ -2484,7 +2541,34 @@ next_alias_char:
      parsing an alias, we have just saved one (push_string, when called by
      the parse_dparen code) In this case, just go on as well.  The PSH_SOURCE
      case is handled below. */
+
+  /* If we're at the end of an alias expansion add a space to make sure that
+     the alias remains marked as being in use while we expand its last word.
+     This makes sure that pop_string doesn't mark the alias as not in use
+     before the string resulting from the alias expansion is tokenized and
+     checked for alias expansion, preventing recursion.  At this point, the
+     last character in shell_input_line is the last character of the alias
+     expansion.  We test that last character to determine whether or not to
+     return the space that will delimit the token and postpone the pop_string.
+     This set of conditions duplicates what used to be in mk_alexpansion ()
+     below, with the addition that we don't add a space if we're currently
+     reading a quoted string or in a shell comment. */
+#ifndef OLD_ALIAS_HACK
+  if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE &&
+      pushed_string_list->flags != PSH_DPAREN &&
+      (parser_state & PST_COMMENT) == 0 &&
+      shell_input_line_index > 0 &&
+      shell_input_line[shell_input_line_index-1] != ' ' &&
+      shell_input_line[shell_input_line_index-1] != '\n' &&
+      shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
+      (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
+    {
+      return ' ';      /* END_ALIAS */
+    }
+#endif
+
 pop_alias:
+  /* This case works for PSH_DPAREN as well */
   if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
     {
       pop_string ();
@@ -2502,10 +2586,9 @@ pop_alias:
        /* What do we do here if we're expanding an alias whose definition
           includes an escaped newline?  If that's the last character in the
           alias expansion, we just pop the pushed string list (recall that
-          we inhibit the appending of a space in mk_alexpansion() if newline
-          is the last character).  If it's not the last character, we need
-          to consume the quoted newline and move to the next character in
-          the expansion. */
+          we inhibit the appending of a space if newline is the last
+          character).  If it's not the last character, we need to consume the
+          quoted newline and move to the next character in the expansion. */
 #if defined (ALIAS)
        if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0')
          {
@@ -2570,7 +2653,7 @@ parser_remaining_input ()
 {
   if (shell_input_line == 0)
     return 0;
-  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
+  if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
     return ""; /* XXX */
   return (shell_input_line + shell_input_line_index);
 }
@@ -2680,7 +2763,7 @@ yylex ()
       if (bash_input.type == st_string)
        rewind_input_string ();
     }
-  parser_state &= ~PST_EOFTOKEN;
+  parser_state &= ~PST_EOFTOKEN;       /* ??? */
 
   return (current_token);
 }
@@ -2689,6 +2772,10 @@ yylex ()
    which allow ESAC to be the next one read. */
 static int esacs_needed_count;
 
+/* When non-zero, we can read IN as an acceptable token, regardless of how
+   many newlines we read. */
+static int expecting_in_token;
+
 static void
 push_heredoc (r)
      REDIRECT *r;
@@ -2809,10 +2896,15 @@ mk_alexpansion (s)
   l = strlen (s);
   r = xmalloc (l + 2);
   strcpy (r, s);
+#ifdef OLD_ALIAS_HACK
   /* If the last character in the alias is a newline, don't add a trailing
      space to the expansion.  Works with shell_getc above. */
-  if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0)
+  /* Need to do something about the case where the alias expansion contains
+     an unmatched quoted string, since appending this space affects the
+     subsequent output. */
+  if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0)
     r[l++] = ' ';
+#endif
   r[l] = '\0';
   return r;
 }
@@ -2833,10 +2925,14 @@ alias_expand_token (tokstr)
       if (ap && (ap->flags & AL_BEINGEXPANDED))
        return (NO_EXPANSION);
 
+#ifdef OLD_ALIAS_HACK
       /* mk_alexpansion puts an extra space on the end of the alias expansion,
-         so the lookahead by the parser works right.  If this gets changed,
-         make sure the code in shell_getc that deals with reaching the end of
-         an expanded alias is changed with it. */
+        so the lookahead by the parser works right (the alias needs to remain
+        `in use' while parsing its last word to avoid alias recursion for
+        something like "alias echo=echo").  If this gets changed, make sure
+        the code in shell_getc that deals with reaching the end of an
+        expanded alias is changed with it. */
+#endif
       expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL;
 
       if (expanded)
@@ -2934,6 +3030,7 @@ static int
 special_case_tokens (tokstr)
      char *tokstr;
 {
+  /* Posix grammar rule 6 */
   if ((last_read_token == WORD) &&
 #if defined (SELECT_COMMAND)
       ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) &&
@@ -2947,9 +3044,34 @@ special_case_tokens (tokstr)
          parser_state |= PST_CASEPAT;
          esacs_needed_count++;
        }
+      if (expecting_in_token)
+       expecting_in_token--;
+      return (IN);
+    }
+
+  /* XXX - leaving above code intact for now, but it should eventually be
+     removed in favor of this clause. */
+  /* Posix grammar rule 6 */
+  if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') &&
+      (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0))
+    {
+      if (parser_state & PST_CASESTMT)
+       {
+         parser_state |= PST_CASEPAT;
+         esacs_needed_count++;
+       }
+      expecting_in_token--;
       return (IN);
     }
+  /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */
+  else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') &&
+    (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0'))
+    {
+      expecting_in_token--;
+      return (DO);
+    }
 
+  /* for i do; command-list; done */
   if (last_read_token == WORD &&
 #if defined (SELECT_COMMAND)
       (token_before_that == FOR || token_before_that == SELECT) &&
@@ -2957,7 +3079,11 @@ special_case_tokens (tokstr)
       (token_before_that == FOR) &&
 #endif
       (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0'))
-    return (DO);
+    {
+      if (expecting_in_token)
+       expecting_in_token--;
+      return (DO);
+    }
 
   /* Ditto for ESAC in the CASE case.
      Specifically, this handles "case word in esac", which is a legal
@@ -2967,9 +3093,9 @@ special_case_tokens (tokstr)
      the designers disagree. */
   if (esacs_needed_count)
     {
-      esacs_needed_count--;
-      if (STREQ (tokstr, "esac"))
+      if (last_read_token == IN && STREQ (tokstr, "esac"))
        {
+         esacs_needed_count--;
          parser_state &= ~PST_CASEPAT;
          return (ESAC);
        }
@@ -3060,6 +3186,13 @@ reset_parser ()
   token_to_read = '\n';
 }
 
+void
+reset_readahead_token ()
+{
+  if (token_to_read == '\n')
+    token_to_read = 0;
+}
+
 /* Read the next token.  Command can be READ (normal operation) or
    RESET (to normalize state). */
 static int
@@ -3121,11 +3254,24 @@ read_token (command)
       return (yacc_EOF);
     }
 
+  /* If we hit the end of the string and we're not expanding an alias (e.g.,
+     we are eval'ing a string that is an incomplete command), return EOF */
+  if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0)
+    {
+#if defined (DEBUG)
+itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string);
+#endif
+      EOF_Reached = 1;
+      return (yacc_EOF);
+    }
+
   if MBTEST(character == '#' && (!interactive || interactive_comments))
     {
       /* A comment.  Discard until EOL or EOF, and then return a newline. */
+      parser_state |= PST_COMMENT;
       discard_until ('\n');
       shell_getc (0);
+      parser_state &= ~PST_COMMENT;
       character = '\n';        /* this will take the next if statement and return. */
     }
 
@@ -3316,18 +3462,19 @@ tokword:
 #define P_DOLBRACE     0x0040  /* parsing a ${...} construct */
 
 /* Lexical state while parsing a grouping construct or $(...). */
-#define LEX_WASDOL     0x001
-#define LEX_CKCOMMENT  0x002
-#define LEX_INCOMMENT  0x004
-#define LEX_PASSNEXT   0x008
-#define LEX_RESWDOK    0x010
-#define LEX_CKCASE     0x020
-#define LEX_INCASE     0x040
-#define LEX_INHEREDOC  0x080
-#define LEX_HEREDELIM  0x100           /* reading here-doc delimiter */
-#define LEX_STRIPDOC   0x200           /* <<- strip tabs from here doc delim */
-#define LEX_QUOTEDDOC  0x400           /* here doc with quoted delim */
-#define LEX_INWORD     0x800
+#define LEX_WASDOL     0x0001
+#define LEX_CKCOMMENT  0x0002
+#define LEX_INCOMMENT  0x0004
+#define LEX_PASSNEXT   0x0008
+#define LEX_RESWDOK    0x0010
+#define LEX_CKCASE     0x0020
+#define LEX_INCASE     0x0040
+#define LEX_INHEREDOC  0x0080
+#define LEX_HEREDELIM  0x0100          /* reading here-doc delimiter */
+#define LEX_STRIPDOC   0x0200          /* <<- strip tabs from here doc delim */
+#define LEX_QUOTEDDOC  0x0400          /* here doc with quoted delim */
+#define LEX_INWORD     0x0800
+#define LEX_GTLT       0x1000
 
 #define COMSUB_META(ch)                ((ch) == ';' || (ch) == '&' || (ch) == '|')
 
@@ -3358,7 +3505,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
      int open, close;
      int *lenp, flags;
 {
-  int count, ch, tflags;
+  int count, ch, prevch, tflags;
   int nestlen, ttranslen, start_lineno;
   char *ret, *nestret, *ttrans;
   int retind, retsize, rflags;
@@ -3380,8 +3527,10 @@ parse_matched_pair (qc, open, close, lenp, flags)
   retind = 0;
 
   start_lineno = line_number;
+  ch = EOF;            /* just in case */
   while (count)
     {
+      prevch = ch;
       ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0);
 
       if (ch == EOF)
@@ -3532,7 +3681,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
                {
                  /* Translate $'...' here. */
                  ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
-                 xfree (nestret);
+                 free (nestret);
 
                  /* If we're parsing a double-quoted brace expansion and we are
                     not in a place where single quotes are treated specially,
@@ -3562,7 +3711,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
                {
                  /* Locale expand $"..." here. */
                  ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
-                 xfree (nestret);
+                 free (nestret);
 
                  nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
                  free (ttrans);
@@ -3575,6 +3724,12 @@ parse_matched_pair (qc, open, close, lenp, flags)
            }
          else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
            goto parse_dollar_word;
+#if defined (PROCESS_SUBSTITUTION)
+         /* XXX - technically this should only be recognized at the start of
+            a word */
+         else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '('))     /* ) */
+           goto parse_dollar_word;
+#endif
        }
       /* Parse an old-style command substitution within double quotes as a
         single word. */
@@ -3606,7 +3761,13 @@ parse_dollar_word:
 
          FREE (nestret);
        }
-      if MBTEST(ch == '$')
+#if defined (PROCESS_SUBSTITUTION)
+      if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0)
+       tflags |= LEX_GTLT;
+      else
+       tflags &= ~LEX_GTLT;
+#endif
+      if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
        tflags |= LEX_WASDOL;
       else
        tflags &= ~LEX_WASDOL;
@@ -3738,7 +3899,7 @@ parse_comsub (qc, open, close, lenp, flags)
   while (count)
     {
 comsub_readchar:
-      ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0);
+      ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0);
 
       if (ch == EOF)
        {
@@ -3769,7 +3930,7 @@ eof_error:
              tind = lex_firstind;
              while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
                tind++;
-             if (STREQN (ret + tind, heredelim, hdlen))
+             if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
                {
                  tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
 /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/
@@ -4010,11 +4171,13 @@ eof_error:
                  tflags |= LEX_RESWDOK;
                  lex_rwlen = 0;
                }
-              else
+              else if (shellmeta (ch) == 0)
                {
                  tflags &= ~LEX_RESWDOK;
 /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
                }
+             else      /* can't be in a reserved word any more */
+               lex_rwlen = 0;
            }
          else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
            ;   /* don't modify LEX_RESWDOK if we're starting a comment */
@@ -4087,7 +4250,10 @@ eof_error:
              continue;
            }
          else
-           ch = peekc;         /* fall through and continue XXX */
+           {
+             shell_ungetc (peekc);     /* not a here-doc, start over */
+             continue;
+           }
        }
       else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
        {
@@ -4143,7 +4309,7 @@ eof_error:
            {
              /* Translate $'...' here. */
              ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
-             xfree (nestret);
+             free (nestret);
 
              if ((rflags & P_DQUOTE) == 0)
                {
@@ -4162,7 +4328,7 @@ eof_error:
            {
              /* Locale expand $"..." here. */
              ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
-             xfree (nestret);
+             free (nestret);
 
              nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
              free (ttrans);
@@ -4190,7 +4356,7 @@ eof_error:
 
          FREE (nestret);
        }
-      if MBTEST(ch == '$')
+      if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
        tflags |= LEX_WASDOL;
       else
        tflags &= ~LEX_WASDOL;
@@ -4215,12 +4381,25 @@ xparse_dolparen (base, string, indp, flags)
   sh_parser_state_t ps;
   sh_input_line_state_t ls;
   int orig_ind, nc, sflags, orig_eof_token;
-  char *ret, *s, *ep, *ostring;
+  char *ret, *ep, *ostring;
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  STRING_SAVER *saved_pushed_strings;
+#endif
 
-  /*yydebug = 1;*/
+/*debug_parser(1);*/
   orig_ind = *indp;
   ostring = string;
 
+  if (*string == 0)
+    {
+      if (flags & SX_NOALLOC) 
+       return (char *)NULL;
+
+      ret = xmalloc (1);
+      ret[0] = '\0';
+      return ret;
+    }
+
 /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
   sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
   if (flags & SX_NOLONGJMP)
@@ -4228,29 +4407,47 @@ xparse_dolparen (base, string, indp, flags)
   save_parser_state (&ps);
   save_input_line_state (&ls);
   orig_eof_token = shell_eof_token;
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  saved_pushed_strings = pushed_string_list;   /* separate parsing context */
+  pushed_string_list = (STRING_SAVER *)NULL;
+#endif
 
   /*(*/
   parser_state |= PST_CMDSUBST|PST_EOFTOKEN;   /* allow instant ')' */ /*(*/
   shell_eof_token = ')';
 
+  /* Should we save and restore the bison/yacc lookahead token (yychar) here?
+     Or only if it's not YYEMPTY? */
+
   nc = parse_string (string, "command substitution", sflags, &ep);
 
+  if (current_token == shell_eof_token)
+    yyclearin;         /* might want to clear lookahead token unconditionally */
+
   shell_eof_token = orig_eof_token;
   restore_parser_state (&ps);
   reset_parser ();
   /* reset_parser clears shell_input_line and associated variables */
   restore_input_line_state (&ls);
 
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  pushed_string_list = saved_pushed_strings;
+#endif
+
   token_to_read = 0;
 
   /* If parse_string returns < 0, we need to jump to top level with the
-     negative of the return value */
+     negative of the return value. We abandon the rest of this input line
+     first */
   if (nc < 0)
-    jump_to_top_level (-nc);   /* XXX */
+    {
+      clear_shell_input_line ();       /* XXX */
+      jump_to_top_level (-nc); /* XXX */
+    }
 
   /* Need to find how many characters parse_and_execute consumed, update
      *indp, if flags != 0, copy the portion of the string parsed into RET
-     and return it.  If flags & 1 (EX_NOALLOC) we can return NULL. */
+     and return it.  If flags & 1 (SX_NOALLOC) we can return NULL. */
 
   /*(*/
   if (ep[-1] != ')')
@@ -4269,6 +4466,8 @@ xparse_dolparen (base, string, indp, flags)
 #if DEBUG
   if (base[*indp] != ')')
     itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
+  if (*indp < orig_ind)
+    itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
 #endif
 
   if (flags & SX_NOALLOC) 
@@ -4512,7 +4711,7 @@ cond_term ()
       if (term)
        term->flags |= CMD_INVERT_RETURN;
     }
-  else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+  else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
     {
       op = yylval.word;
       tok = read_token (READ);
@@ -4645,20 +4844,30 @@ parse_cond_command ()
 
 #if defined (ARRAY_VARS)
 /* When this is called, it's guaranteed that we don't care about anything
-   in t beyond i.  We do save and restore the chars, though. */
+   in t beyond i.  We use a buffer with room for the characters we add just
+   in case assignment() ends up doing something like parsing a command
+   substitution that will reallocate atoken.  We don't want to write beyond
+   the end of an allocated buffer. */
 static int
 token_is_assignment (t, i)
      char *t;
      int i;
 {
-  unsigned char c, c1;
   int r;
+  char *atoken;
 
-  c = t[i]; c1 = t[i+1];
-  t[i] = '='; t[i+1] = '\0';
-  r = assignment (t, (parser_state & PST_COMPASSIGN) != 0);
-  t[i] = c; t[i+1] = c1;
-  return r;
+  atoken = xmalloc (i + 3);
+  memcpy (atoken, t, i);
+  atoken[i] = '=';
+  atoken[i+1] = '\0';
+
+  r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0);
+
+  free (atoken);
+
+  /* XXX - check that r == i to avoid returning false positive for
+     t containing `=' before t[i]. */
+  return (r > 0 && r == i);
 }
 
 /* XXX - possible changes here for `+=' */
@@ -4773,7 +4982,8 @@ read_token_word (character)
          strcpy (token + token_index, ttok);
          token_index += ttoklen;
          all_digit_token = 0;
-         quoted = 1;
+         if (character != '`')
+           quoted = 1;
          dollar_present |= (character == '"' && strchr (ttok, '$') != 0);
          FREE (ttok);
          goto next_character;
@@ -5113,6 +5323,7 @@ got_token:
 
   yylval.word = the_word;
 
+  /* should we check that quoted == 0 as well? */
   if (token[0] == '{' && token[token_index-1] == '}' &&
       (character == '<' || character == '>'))
     {
@@ -5125,9 +5336,15 @@ got_token:
 #endif
        {
          strcpy (the_word->word, token+1);
-/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/
+/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */
+         yylval.word = the_word;       /* accommodate recursive call */
          return (REDIR_WORD);
        }
+      else
+        /* valid_array_reference can call the parser recursively; need to
+          make sure that yylval.word doesn't change if we are going to
+          return WORD or ASSIGNMENT_WORD */
+        yylval.word = the_word;
     }
 
   result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT))
@@ -5145,6 +5362,7 @@ got_token:
       if (word_top < MAX_CASE_NEST)
        word_top++;
       word_lineno[word_top] = line_number;
+      expecting_in_token++;
       break;
     }
 
@@ -5348,6 +5566,9 @@ history_delimiting_chars (line)
        return (" ");
     }
 
+  if (line_isblank (line))
+    return ("");
+
   return ("; ");
 }
 #endif /* HISTORY */
@@ -5418,6 +5639,31 @@ print_prompt ()
   fflush (stderr);
 }
 
+#if defined (HISTORY)
+  /* The history library increments the history offset as soon as it stores
+     the first line of a potentially multi-line command, so we compensate
+     here by returning one fewer when appropriate. */
+static int
+prompt_history_number (pmt)
+     char *pmt;
+{
+  int ret;
+
+  ret = history_number ();
+  if (ret == 1)
+    return ret;
+
+  if (pmt == ps1_prompt)       /* are we expanding $PS1? */
+    return ret;
+  else if (pmt == ps2_prompt && command_oriented_history == 0)
+    return ret;                        /* not command oriented history */
+  else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved)
+    return ret - 1;
+  else
+    return ret - 1;            /* PS0, PS4, ${var@P}, PS2 other cases */
+}
+#endif
+
 /* Return a string which will be printed as a prompt.  The string
    may contain special characters which are decoded as follows:
 
@@ -5455,7 +5701,7 @@ decode_prompt_string (string)
      char *string;
 {
   WORD_LIST *list;
-  char *result, *t;
+  char *result, *t, *orig_string;
   struct dstack save_dstack;
   int last_exit_value, last_comsub_pid;
 #if defined (PROMPT_STRING_DECODE)
@@ -5471,6 +5717,7 @@ decode_prompt_string (string)
   result = (char *)xmalloc (result_size = PROMPT_GROWTH);
   result[result_index = 0] = 0;
   temp = (char *)NULL;
+  orig_string = string;
 
   while (c = *string++)
     {
@@ -5486,7 +5733,7 @@ decode_prompt_string (string)
 #if !defined (HISTORY)
                temp = savestring ("1");
 #else /* HISTORY */
-               temp = itos (history_number ());
+               temp = itos (prompt_history_number (orig_string));
 #endif /* HISTORY */
                string--;       /* add_string increments string again. */
                goto add_string;
@@ -5718,14 +5965,19 @@ decode_prompt_string (string)
              goto add_string;
 
            case '#':
-             temp = itos (current_command_number);
+             n = current_command_number;
+             /* If we have already incremented current_command_number (PS4,
+                ${var@P}), compensate */
+             if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt)
+               n--;
+             temp = itos (n);
              goto add_string;
 
            case '!':
 #if !defined (HISTORY)
              temp = savestring ("1");
 #else /* HISTORY */
-             temp = itos (history_number ());
+             temp = itos (prompt_history_number (orig_string));
 #endif /* HISTORY */
              goto add_string;
 
@@ -6302,8 +6554,6 @@ sh_parser_state_t *
 save_parser_state (ps)
      sh_parser_state_t *ps;
 {
-  int i;
-
   if (ps == 0)
     ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t));
   if (ps == 0)
@@ -6339,15 +6589,10 @@ save_parser_state (ps)
   ps->need_here_doc = need_here_doc;
   ps->here_doc_first_line = here_doc_first_line;
 
-#if 0
-  for (i = 0; i < HEREDOC_MAX; i++)
-    ps->redir_stack[i] = redir_stack[i];
-#else
   if (need_here_doc == 0)
     ps->redir_stack[0] = 0;
   else
     memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
-#endif
 
   ps->token = token;
   ps->token_buffer_size = token_buffer_size;
@@ -6457,6 +6702,10 @@ restore_input_line_state (ls)
  ************************************************/
 
 #if defined (HANDLE_MULTIBYTE)
+
+/* We don't let the property buffer get larger than this unless the line is */
+#define MAX_PROPSIZE 32768
+
 static void
 set_line_mbstate ()
 {
@@ -6468,8 +6717,22 @@ set_line_mbstate ()
   if (shell_input_line == NULL)
     return;
   len = strlen (shell_input_line);     /* XXX - shell_input_line_len ? */
-  shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1);
+  if (len == 0)
+    return;
+  if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1)
+    {
+      free (shell_input_line_property);
+      shell_input_line_property = 0;
+      shell_input_line_propsize = 0;
+    }
+  if (len+1 > shell_input_line_propsize)
+    {
+      shell_input_line_propsize = len + 1;
+      shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize);
+    }
 
+  /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to
+     mbrlen */
   memset (&prevs, '\0', sizeof (mbstate_t));
   for (i = previ = 0; i < len; i++)
     {
@@ -6484,6 +6747,9 @@ set_line_mbstate ()
          break;
        }
 
+      /* I'd love to take more advantage of UTF-8's properties in a UTF-8
+         locale, but mbrlen changes the mbstate_t on every call even when
+         presented with single-byte characters. */
       mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
       if (mbclen == 1 || mbclen == (size_t)-1)
        {
index b367eb20566ee2b37b1d21e27754e09e51b941ca..86c8e505dfbfdb2f79193db2b977d06b7ece2461 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.0.5.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
@@ -148,7 +148,7 @@ extern int yydebug;
 
 union YYSTYPE
 {
-#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909  */
+#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910  */
 
   WORD_DESC *word;             /* the word that we read. */
   int number;                  /* the number that we read. */
@@ -158,7 +158,7 @@ union YYSTYPE
   ELEMENT element;
   PATTERN_LIST *pattern;
 
-#line 162 "y.tab.h" /* yacc.c:1909  */
+#line 162 "y.tab.h" /* yacc.c:1910  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index 8d396dff08b06e4a927c6254040343e5a5775f8d..54dd2c889850b552d2cb75ffd52fb55d56b44bcb 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -46,7 +46,7 @@
 #define PST_HEREDOC    0x020000        /* reading body of here-document */
 #define PST_REPARSE    0x040000        /* re-parsing in parse_string_to_word_list */
 #define PST_REDIRLIST  0x080000        /* parsing a list of redirections preceding a simple command name */
-
+#define PST_COMMENT    0x100000        /* parsing a shell comment; used by aliases */
 
 /* Definition of the delimiter stack.  Needed by parse.y and bashhist.c. */
 struct dstack {
@@ -70,4 +70,30 @@ struct dstack {
 #define DOLBRACE_QUOTE 0x40    /* single quote is special in double quotes */
 #define DOLBRACE_QUOTE2        0x80    /* single quote is semi-special in double quotes */
 
+/* variable declarations from parse.y */
+extern struct dstack dstack;
+
+extern char *primary_prompt;
+extern char *secondary_prompt;
+
+extern char *current_prompt_string;
+
+extern char *ps1_prompt;
+extern char *ps2_prompt;
+extern char *ps0_prompt;
+
+extern int expand_aliases;
+extern int current_command_line_count;
+extern int saved_command_line_count;
+extern int shell_eof_token;
+extern int current_token;
+extern int parser_state;
+extern int need_here_doc;
+
+extern int ignoreeof;
+extern int eof_encountered;
+extern int eof_encountered_limit;
+
+extern int line_number, line_number_base;
+
 #endif /* _PARSER_H_ */
index 2060b58feed0c164c5116183fbdf5337212f6721..1cd7c96c7bf94ae7242e8af39fce6b1c82d94b20 100644 (file)
@@ -25,6 +25,6 @@
    regexp `^#define[   ]*PATCHLEVEL', since that's what support/mkversion.sh
    looks for to find the patch level (for the sccs version string). */
 
-#define PATCHLEVEL 23
+#define PATCHLEVEL 0
 
 #endif /* _PATCHLEVEL_H_ */
index 21fc148dba713c0bcd0a7f86671994e7cc485b82..b51729a7bd5683e43ed6450a658c462c9c9f3134 100644 (file)
--- a/pathexp.c
+++ b/pathexp.c
@@ -96,8 +96,13 @@ unquoted_glob_pattern_p (string)
            return (1);
          continue;
 
-       case CTLESC:
+       /* A pattern can't end with a backslash, but a backslash in the pattern
+          can be removed by the matching engine, so we have to run it through
+          globbing. */
        case '\\':
+         return (*string != 0);
+                 
+       case CTLESC:
          if (*string++ == '\0')
            return (0);
        }
@@ -172,10 +177,11 @@ glob_char_p (s)
    is performed, (flags & QGLOB_CVTNULL) should be 0; if called when quote
    removal has not been done (for example, before attempting to match a
    pattern while executing a case statement), flags should include
-   QGLOB_CVTNULL.  If flags includes QGLOB_FILENAME, appropriate quoting
-   to match a filename should be performed.  QGLOB_REGEXP means we're
-   quoting for a Posix ERE (for [[ string =~ pat ]]) and that requires
-   some special handling. */
+   QGLOB_CVTNULL.  If flags includes QGLOB_CTLESC, we need to remove CTLESC
+   quoting CTLESC or CTLNUL (as if dequote_string were called).  If flags
+   includes QGLOB_FILENAME, appropriate quoting to match a filename should be
+   performed.  QGLOB_REGEXP means we're quoting for a Posix ERE (for
+   [[ string =~ pat ]]) and that requires some special handling. */
 char *
 quote_string_for_globbing (pathname, qflags)
      const char *pathname;
@@ -183,7 +189,7 @@ quote_string_for_globbing (pathname, qflags)
 {
   char *temp;
   register int i, j;
-  int brack, cclass, collsym, equiv, c, last_was_backslash;
+  int cclass, collsym, equiv, c, last_was_backslash;
   int savei, savej;
 
   temp = (char *)xmalloc (2 * strlen (pathname) + 1);
@@ -194,7 +200,7 @@ quote_string_for_globbing (pathname, qflags)
       return temp;
     }
 
-  brack = cclass = collsym = equiv = last_was_backslash = 0;
+  cclass = collsym = equiv = last_was_backslash = 0;
   for (i = j = 0; pathname[i]; i++)
     {
       /* Fix for CTLESC at the end of the string? */
@@ -205,7 +211,7 @@ quote_string_for_globbing (pathname, qflags)
        }
       /* If we are parsing regexp, turn CTLESC CTLESC into CTLESC. It's not an
         ERE special character, so we should just be able to pass it through. */
-      else if ((qflags & QGLOB_REGEXP) && pathname[i] == CTLESC && pathname[i+1] == CTLESC)
+      else if ((qflags & (QGLOB_REGEXP|QGLOB_CTLESC)) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL))
        {
          i++;
          temp[j++] = pathname[i];
@@ -225,11 +231,20 @@ quote_string_for_globbing (pathname, qflags)
        }
       else if ((qflags & QGLOB_REGEXP) && (i == 0 || pathname[i-1] != CTLESC) && pathname[i] == '[')   /*]*/
        {
-         brack = 1;
          temp[j++] = pathname[i++];    /* open bracket */
          savej = j;
          savei = i;
          c = pathname[i++];    /* c == char after open bracket */
+         if (c == '^')         /* ignore pattern negation */
+           {
+             temp[j++] = c;
+             c = pathname[i++];
+           }
+         if (c == ']')         /* ignore right bracket if first char */
+           {
+             temp[j++] = c;
+             c = pathname[i++];
+           }
          do
            {
              if (c == 0)
@@ -315,6 +330,10 @@ quote_string_for_globbing (pathname, qflags)
          i++;
          if (pathname[i] == '\0')
            break;
+         /* If we are turning CTLESC CTLESC into CTLESC, we need to do that
+            even when the first CTLESC is preceded by a backslash. */
+         if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL))
+           i++;        /* skip over the CTLESC */
        }
       else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP))
         last_was_backslash = 1;
@@ -406,11 +425,13 @@ shell_glob_filename (pathname)
 #else /* !USE_POSIX_GLOB_LIBRARY */
 
   char *temp, **results;
+  int gflags;
 
   noglob_dot_filenames = glob_dot_filenames == 0;
 
   temp = quote_string_for_globbing (pathname, QGLOB_FILENAME);
-  results = glob_filename (temp, glob_star ? GX_GLOBSTAR : 0);
+  gflags = glob_star ? GX_GLOBSTAR : 0;
+  results = glob_filename (temp, gflags);
   free (temp);
 
   if (results && ((GLOB_FAILED (results)) == 0))
index 183a2124c9d10115b79f8fbf595840741559beaa..adef8b2a169a5f66bed4b7ea5c6c40946a48ee4d 100644 (file)
--- a/pathexp.h
+++ b/pathexp.h
@@ -33,6 +33,8 @@ extern char *glob_error_return;
 #define QGLOB_CVTNULL  0x01    /* convert QUOTED_NULL strings to '\0' */
 #define QGLOB_FILENAME 0x02    /* do correct quoting for matching filenames */
 #define QGLOB_REGEXP   0x04    /* quote an ERE for regcomp/regexec */
+#define QGLOB_CTLESC   0x08    /* turn CTLESC CTLESC into CTLESC for BREs */
+#define QGLOB_DEQUOTE  0x10    /* like dequote_string but quote glob chars */
 
 #if defined (EXTENDED_GLOB)
 /* Flags to OR with other flag args to strmatch() to enabled the extended
index ac0903a9e3e0656263419fad9485a81665bf4a3b..5014c21a2469a2f294497a8a99626102b1c2401e 100644 (file)
@@ -1,6 +1,6 @@
 /* pcomplete.c - functions to generate lists of matches for programmable completion. */
 
-/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -71,8 +71,6 @@
 #include <readline/readline.h>
 #include <readline/history.h>
 
-#define PCOMP_RETRYFAIL        256
-
 #ifdef STRDUP
 #  undef STRDUP
 #endif
@@ -84,10 +82,8 @@ typedef SHELL_VAR **SVFUNC ();
 extern char *strpbrk __P((char *, char *));
 #endif
 
-extern int array_needs_making;
 extern STRING_INT_ALIST word_token_alist[];
 extern char *signal_names[];
-extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
 
 #if defined (DEBUG)
 #if defined (PREFER_STDARG)
@@ -155,6 +151,10 @@ static int progcomp_debug = 0;
 
 int prog_completion_enabled = 1;
 
+#ifdef ALIAS
+int progcomp_alias = 0;        /* unavailable to user code for now */
+#endif
+
 /* These are used to manage the arrays of strings for possible completions. */
 ITEMLIST it_aliases = { 0, it_init_aliases, (STRINGLIST *)0 };
 ITEMLIST it_arrayvars  = { LIST_DYNAMIC, it_init_arrayvars, (STRINGLIST *)0 };
@@ -185,6 +185,9 @@ COMPSPEC *pcomp_curcs;
 const char *pcomp_curcmd;
 const char *pcomp_curtxt;
 
+char *pcomp_line;
+int pcomp_ind;
+
 #ifdef DEBUG
 /* Debugging code */
 static void
@@ -728,7 +731,6 @@ pcomp_filename_completion_function (text, state)
      int state;
 {
   static char *dfn;    /* dequoted filename */
-  int qc;
   int iscompgen, iscompleting;
 
   if (state == 0)
@@ -954,11 +956,15 @@ bind_comp_words (lwords)
 {
   SHELL_VAR *v;
 
-  v = find_variable ("COMP_WORDS");
+  v = find_variable_noref ("COMP_WORDS");
   if (v == 0)
     v = make_new_array_variable ("COMP_WORDS");
+  if (nameref_p (v))
+    VUNSETATTR (v, att_nameref);
+#if 0
   if (readonly_p (v))
     VUNSETATTR (v, att_readonly);
+#endif
   if (array_p (v) == 0)
     v = convert_var_to_array (v);
   v = assign_array_var_from_word_list (v, lwords, 0);
@@ -993,17 +999,17 @@ bind_compfunc_variables (line, ind, lwords, cw, exported)
   llen = MB_STRLEN (line);
   line[ind] = c;
   value = inttostr (llen, ibuf, sizeof(ibuf));
-  v = bind_int_variable ("COMP_POINT", value);
+  v = bind_int_variable ("COMP_POINT", value, 0);
   if (v && exported)
     VSETATTR(v, att_exported);
 
   value = inttostr (rl_completion_type, ibuf, sizeof (ibuf));
-  v = bind_int_variable ("COMP_TYPE", value);
+  v = bind_int_variable ("COMP_TYPE", value, 0);
   if (v && exported)
     VSETATTR(v, att_exported);
 
   value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf));
-  v = bind_int_variable ("COMP_KEY", value);
+  v = bind_int_variable ("COMP_KEY", value, 0);
   if (v && exported)
     VSETATTR(v, att_exported);
 
@@ -1014,7 +1020,7 @@ bind_compfunc_variables (line, ind, lwords, cw, exported)
 #ifdef ARRAY_VARS
       v = bind_comp_words (lwords);
       value = inttostr (cw, ibuf, sizeof(ibuf));
-      bind_int_variable ("COMP_CWORD", value);
+      bind_int_variable ("COMP_CWORD", value, 0);
 #endif
     }
   else
@@ -1165,13 +1171,13 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp)
   v = find_variable ("COMPREPLY");
   if (v == 0)
     return ((STRINGLIST *)NULL);
-  if (array_p (v) == 0)
+  if (array_p (v) == 0 && assoc_p (v) == 0)
     v = convert_var_to_array (v);
 
   VUNSETATTR (v, att_invisible);
 
   a = array_cell (v);
-  if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_empty (a))
+  if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_p (v) == 0 || array_empty (a))
     sl = (STRINGLIST *)NULL;
   else
     {
@@ -1243,7 +1249,7 @@ gen_command_matches (cs, cmd, text, line, ind, lwords, nw, cw)
     }
   cscmd[cmdlen] = '\0';
 
-  tw = command_substitute (cscmd, 0);
+  tw = command_substitute (cscmd, 0, 0);
   csbuf = tw ? tw->word : (char *)NULL;
   if (tw)
     dispose_word_desc (tw);
@@ -1379,14 +1385,14 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp)
       /* If we have a command or function to execute, we need to first break
         the command line into individual words, find the number of words,
         and find the word in the list containing the word to be completed. */
-      line = substring (rl_line_buffer, start, end);
+      line = substring (pcomp_line, start, end);
       llen = end - start;
 
 #ifdef DEBUG
       debug_printf ("command_line_to_word_list (%s, %d, %d, %p, %p)",
-               line, llen, rl_point - start, &nw, &cw);
+               line, llen, pcomp_ind - start, &nw, &cw);
 #endif
-      lwords = command_line_to_word_list (line, llen, rl_point - start, &nw, &cw);
+      lwords = command_line_to_word_list (line, llen, pcomp_ind - start, &nw, &cw);
       /* If we skipped a NULL word at the beginning of the line, add it back */
       if (lwords && lwords->word && cmd[0] == 0 && lwords->word->word[0] != 0)
        {
@@ -1413,7 +1419,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp)
   if (cs->funcname)
     {
       foundf = 0;
-      tmatches = gen_shell_function_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw, &foundf);
+      tmatches = gen_shell_function_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw, &foundf);
       if (foundf != 0)
        found = foundf;
       if (tmatches)
@@ -1433,7 +1439,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp)
 
   if (cs->command)
     {
-      tmatches = gen_command_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw);
+      tmatches = gen_command_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw);
       if (tmatches)
        {
 #ifdef DEBUG
@@ -1607,37 +1613,107 @@ gen_progcomp_completions (ocmd, cmd, word, start, end, foundp, retryp, lastcs)
 
 /* The driver function for the programmable completion code.  Returns a list
    of matches for WORD, which is an argument to command CMD.  START and END
-   bound the command currently being completed in rl_line_buffer. */
+   bound the command currently being completed in pcomp_line (usually
+   rl_line_buffer). */
 char **
 programmable_completions (cmd, word, start, end, foundp)
      const char *cmd;
      const char *word;
      int start, end, *foundp;
 {
-  COMPSPEC *cs, *lastcs;
+  COMPSPEC *lastcs;
   STRINGLIST *ret;
   char **rmatches, *t;
   int found, retry, count;
+  char *ocmd;
+  int oend;
+#if defined (ALIAS)
+  alias_t *al;
+#endif
 
   lastcs = 0;
   found = count = 0;
 
+  pcomp_line = rl_line_buffer;
+  pcomp_ind = rl_point;
+
+  ocmd = (char *)cmd;
+  oend = end;
+
   do
     {
       retry = 0;
 
       /* We look at the basename of CMD if the full command does not have
         an associated COMPSPEC. */
-      ret = gen_progcomp_completions (cmd, cmd, word, start, end, &found, &retry, &lastcs);
+      ret = gen_progcomp_completions (ocmd, ocmd, word, start, oend, &found, &retry, &lastcs);
       if (found == 0)
        {
-         t = strrchr (cmd, '/');
+         t = strrchr (ocmd, '/');
          if (t && *(++t))
-           ret = gen_progcomp_completions (t, cmd, word, start, end, &found, &retry, &lastcs);
+           ret = gen_progcomp_completions (t, ocmd, word, start, oend, &found, &retry, &lastcs);
        }
 
       if (found == 0)
-       ret = gen_progcomp_completions (DEFAULTCMD, cmd, word, start, end, &found, &retry, &lastcs);
+       ret = gen_progcomp_completions (DEFAULTCMD, ocmd, word, start, oend, &found, &retry, &lastcs);
+
+#if defined (ALIAS)
+      /* Look up any alias for CMD, try to gen completions for it */
+      /* Look up the alias, find the value, build a new line replacing CMD
+        with that value, offsetting PCOMP_IND and END appropriately, reset
+        PCOMP_LINE to the new line and OCMD with the new command name, then
+        call gen_progcomp_completions again. We could use alias_expand for
+        this, but it does more (and less) than we need right now. */
+      if (found == 0 && retry == 0 && progcomp_alias && (al = find_alias (ocmd)))
+       {
+         char *ncmd, *nline, *ntxt;
+         int ind, lendiff;
+         size_t nlen, olen, llen;
+
+         /* We found an alias for OCMD. Take the value and build a new line */
+         ntxt = al->value;
+         nlen = strlen (ntxt);
+         if (nlen == 0)
+           break;
+         olen = strlen (ocmd);
+         lendiff = nlen - olen;        /* can be negative */
+         llen = strlen (pcomp_line);
+
+         nline = (char *)xmalloc (llen + lendiff + 1);
+         if (start > 0)
+           strncpy (nline, pcomp_line, start);
+         strncpy (nline + start, ntxt, nlen);
+         strcpy (nline + start + nlen, pcomp_line + start + olen);
+
+         /* Find the first word of the alias value and use that as OCMD. We
+            don't check the alias value to see whether it begins with a valid
+            command name, so this can be fooled. */
+         ind = skip_to_delim (ntxt, 0, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE);
+         if (ind > 0)
+           ncmd = substring (ntxt, 0, ind);
+         else
+           {
+             free (nline);
+             break;            /* will free pcomp_line and ocmd later */
+           }
+
+         /* Adjust PCOMP_IND and OEND appropriately */
+         pcomp_ind += lendiff;
+         oend += lendiff;
+
+         /* Set up values with new line. WORD stays the same. */
+         if (ocmd != cmd)
+           free (ocmd);
+         if (pcomp_line != rl_line_buffer)
+           free (pcomp_line);
+
+         ocmd = ncmd;
+         pcomp_line = nline;
+
+         /* And go back and start over. */
+         retry = 1;
+       }
+#endif /* ALIAS */
 
       count++;
 
@@ -1649,6 +1725,11 @@ programmable_completions (cmd, word, start, end, foundp)
     }
   while (retry);
 
+  if (pcomp_line != rl_line_buffer)
+    free (pcomp_line);
+  if (ocmd != cmd)
+    free (ocmd);
+
   if (ret)
     {
       rmatches = ret->list;
@@ -1663,6 +1744,10 @@ programmable_completions (cmd, word, start, end, foundp)
   if (lastcs)  /* XXX - should be while? */
     compspec_dispose (lastcs);
 
+  /* XXX restore pcomp_line and pcomp_ind? */
+  pcomp_line = rl_line_buffer;
+  pcomp_ind = rl_point;
+
   return (rmatches);
 }
 
index 0514245a6d99a78b6dc05ed8cd9ac00b4ac46fb9..38932ac2f24c4ff9c509bf7dc9cb7221285f79b2 100644 (file)
@@ -77,6 +77,12 @@ typedef struct compspec {
 #define COPT_PLUSDIRS  (1<<7)
 #define COPT_NOSORT    (1<<8)
 
+#define COPT_LASTUSER  COPT_NOSORT
+
+#define PCOMP_RETRYFAIL (COPT_LASTUSER << 1)
+#define PCOMP_NOTFOUND (COPT_LASTUSER << 2)
+
+
 /* List of items is used by the code that implements the programmable
    completions. */
 typedef struct _list_of_items {
@@ -101,9 +107,15 @@ typedef struct _list_of_items {
 
 #define EMPTYCMD       "_EmptycmD_"
 #define DEFAULTCMD     "_DefaultCmD_"
+#define INITIALWORD    "_InitialWorD_"
 
 extern HASH_TABLE *prog_completes;
+
+extern char *pcomp_line;
+extern int pcomp_ind;
+
 extern int prog_completion_enabled;
+extern int progcomp_alias;
 
 /* Not all of these are used yet. */
 extern ITEMLIST it_aliases;
index 9c17d26580ed59c42bcf249c0fc427ff409fdcfd..442297c7e8624283814b7bc58454087ac6d0c75d 100644 (file)
@@ -1,2 +1,2 @@
 # Set of available languages.
-en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW
+en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW
index 673066533ee6dfa7c27c389879337c7a8f5ed229..5217a12efba9b256ac47a35ba73ce1d2d465c4ea 100644 (file)
@@ -277,7 +277,7 @@ mostlyclean:
 clean: mostlyclean
 
 distclean: clean
-       rm -f Makefile Makefile.in POTFILES *.mo
+       rm -f Makefile Makefile.in POTFILES *.mo stamp-po
 
 maintainer-clean: distclean
        @echo "This command is intended for maintainers to use;"
index 65138ec151053345618126dc37d6793a1e18f11e..df481e21f3cb1566e3a6bbed4d5a32bb44b1d155 100644 (file)
Binary files a/po/af.gmo and b/po/af.gmo differ
index 54feb499cec279ae04d828067ad57a0942dfb29b..ff63c22c134b84348f4719cc601fbfe076ba5448 100644 (file)
--- a/po/af.po
+++ b/po/af.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 2.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2004-03-17 13:48+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -14,122 +14,122 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: af\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 #, fuzzy
 msgid "bad array subscript"
 msgstr "Os/2 Biskaart Skikking"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 
-#: arrayfunc.c:578
-#, fuzzy, c-format
+#: arrayfunc.c:586
+#, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr ""
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr ""
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr ""
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr ""
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
-#, fuzzy, c-format
+#: builtins/alias.def:131 variables.c:1842
+#, c-format
 msgid "`%s': invalid alias name"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr ""
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr ""
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, fuzzy, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/bind.def:270
-#, fuzzy, c-format
-msgid "`%s': cannot unbind"
-msgstr "%s: bevel nie gevind nie"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, fuzzy, c-format
 msgid "`%s': unknown function name"
 msgstr "%s: leesalleen-funksie"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr ""
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr ""
 
-#: builtins/break.def:79 builtins/break.def:121
-#, fuzzy
+#: builtins/bind.def:353 builtins/bind.def:368
+#, fuzzy, c-format
+msgid "`%s': cannot unbind"
+msgstr "%s: bevel nie gevind nie"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
-msgstr "Afteken"
+msgstr ""
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr ""
 
@@ -140,243 +140,240 @@ msgid ""
 "    Without EXPR, returns "
 msgstr ""
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr ""
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 #, fuzzy
 msgid "too many arguments"
 msgstr "te veel parameters"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "boonste lêergids."
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr ""
 
-#: builtins/common.c:102
-#, fuzzy, c-format
+#: builtins/common.c:96
+#, c-format
 msgid "line %d: "
-msgstr "3d modus"
+msgstr ""
 
-#: builtins/common.c:140 error.c:265
-#, fuzzy, c-format
+#: builtins/common.c:134 error.c:264
+#, c-format
 msgid "warning: "
-msgstr "besig om te skryf"
+msgstr ""
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr ""
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, fuzzy, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: option `%s' requires an argument\n"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr ""
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, fuzzy, c-format
 msgid "%s: not found"
 msgstr "%s: bevel nie gevind nie"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, fuzzy, c-format
 msgid "%s: invalid option"
 msgstr "%s: illegal option -- %c\n"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, fuzzy, c-format
 msgid "%s: invalid option name"
 msgstr "%s: illegal option -- %c\n"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, fuzzy, c-format
 msgid "`%s': not a valid identifier"
 msgstr "Die datum is nie geldige!"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 #, fuzzy
 msgid "invalid octal number"
 msgstr "Die sein nommer wat was gevang het"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 #, fuzzy
 msgid "invalid hex number"
 msgstr "Die sein nommer wat was gevang het"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 #, fuzzy
 msgid "invalid number"
 msgstr "Die sein nommer wat was gevang het"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr ""
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr ""
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, fuzzy, c-format
 msgid "%s: readonly variable"
 msgstr "Veranderlike boom"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr ""
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 #, fuzzy
 msgid "argument"
 msgstr "argument verwag\n"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr ""
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr ""
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, fuzzy, c-format
 msgid "%s: no job control"
 msgstr "geen taakbeheer in hierdie dop nie"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 #, fuzzy
 msgid "no job control"
 msgstr "geen taakbeheer in hierdie dop nie"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, fuzzy, c-format
 msgid "%s: restricted"
 msgstr "Die bediener beëindig Die verbinding."
 
-#: builtins/common.c:312
-#, fuzzy
+#: builtins/common.c:306
 msgid "restricted"
 msgstr ""
-"\n"
-"Bevel beëindig\n"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr ""
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "pypfout: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr ""
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, fuzzy, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: dubbelsinnige herroetering"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr ""
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr ""
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr ""
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr ""
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr ""
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: leesalleen-funksie"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, fuzzy, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -410,69 +407,69 @@ msgstr ""
 msgid "%s: cannot delete: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is 'n gids"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, fuzzy, c-format
 msgid "%s: not a regular file"
 msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr ""
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, fuzzy, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, fuzzy, c-format
 msgid "logout\n"
 msgstr "Afteken"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr ""
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr ""
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr ""
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 #, fuzzy
 msgid "no command found"
 msgstr "%s: bevel nie gevind nie"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr ""
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, fuzzy, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr ""
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr ""
@@ -487,39 +484,38 @@ msgstr "%s: illegal option -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: option `%s' requires an argument\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr ""
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr ""
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, fuzzy, c-format
 msgid "hits\tcommand\n"
 msgstr "Bevelreël"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, fuzzy, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -531,20 +527,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr ""
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr ""
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, fuzzy, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: heelgetal-uitdrukking is verwag\n"
@@ -552,96 +549,95 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n"
 #: builtins/inlib.def:71
 #, fuzzy, c-format
 msgid "%s: inlib failed"
-msgstr "%s: heelgetal-uitdrukking is verwag\n"
+msgstr "Veranderlike boom"
 
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
 msgstr ""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr ""
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 #, fuzzy
 msgid "Unknown error"
 msgstr "Onbekende fout %d"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 #, fuzzy
 msgid "expression expected"
 msgstr "Bools uitdrukking verwag"
 
 #: builtins/mapfile.def:178
-#, fuzzy, c-format
+#, c-format
 msgid "%s: not an indexed array"
-msgstr "Veranderlike boom"
+msgstr ""
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr ""
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr ""
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
-#, fuzzy, c-format
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#, c-format
 msgid "%s: invalid line count"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, fuzzy, c-format
 msgid "%s: invalid array origin"
-msgstr "%s: illegal option -- %c\n"
+msgstr "Os/2 Biskaart Skikking"
 
-#: builtins/mapfile.def:317
-#, fuzzy, c-format
+#: builtins/mapfile.def:316
+#, c-format
 msgid "%s: invalid callback quantum"
-msgstr "Die sein nommer wat was gevang het"
+msgstr ""
 
-#: builtins/mapfile.def:350
-#, fuzzy
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
-msgstr "Veranderlike boom"
+msgstr ""
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr ""
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr ""
 
-#: builtins/printf.def:467
-#, fuzzy, c-format
+#: builtins/printf.def:475
+#, c-format
 msgid "`%c': invalid time format specification"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr ""
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr ""
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr ""
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr ""
@@ -654,23 +650,22 @@ msgstr "boonste l
 #: builtins/pushd.def:360
 #, fuzzy, c-format
 msgid "%s: invalid argument"
-msgstr "%s: illegal option -- %c\n"
+msgstr "%s: option `%s' requires an argument\n"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 #, fuzzy
 msgid "<no current directory>"
 msgstr "Nuutste gebruik word werksaam gids"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr ""
 
-#: builtins/pushd.def:521
-#, fuzzy
+#: builtins/pushd.def:526
 msgid "directory stack index"
-msgstr "Stapel grootte verhoog"
+msgstr ""
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -694,7 +689,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -719,7 +714,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -745,40 +740,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr ""
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, fuzzy, c-format
 msgid "read error: %d: %s"
 msgstr "pypfout: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, fuzzy, c-format
 msgid "%s: cannot unset"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, fuzzy, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, fuzzy, c-format
 msgid "%s: not an array variable"
 msgstr "Veranderlike boom"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, fuzzy, c-format
 msgid "%s: not a function"
 msgstr "%s: leesalleen-funksie"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: kan nie %s skep nie"
@@ -788,20 +783,20 @@ msgstr "%s: kan nie %s skep nie"
 msgid "shift count"
 msgstr "Shift"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr ""
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr ""
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, fuzzy, c-format
 msgid "%s: file not found"
 msgstr "%s: bevel nie gevind nie"
@@ -815,62 +810,62 @@ msgstr ""
 msgid "cannot suspend a login shell"
 msgstr "Begin aanteken tolk"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr ""
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr ""
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, fuzzy, c-format
 msgid "%s is a function\n"
 msgstr "%s: leesalleen-funksie"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr ""
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr ""
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, fuzzy, c-format
 msgid "`%c': bad command"
 msgstr "%s: illegal option -- %c\n"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, fuzzy, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: kan nie %s skep nie"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 #, fuzzy
 msgid "limit"
 msgstr "Filter beperk:"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, fuzzy, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: kan nie %s skep nie"
@@ -890,415 +885,423 @@ msgstr ""
 msgid "`%c': invalid symbolic mode character"
 msgstr ""
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr ""
 
-#: error.c:165
+#: error.c:164
 #, fuzzy, c-format
 msgid "last command: %s\n"
 msgstr "Bevelreël"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr ""
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 #, fuzzy
 msgid "unknown command error"
 msgstr "Onbekende fout %d"
 
-#: error.c:464
+#: error.c:463
 #, fuzzy
 msgid "bad command type"
 msgstr "bevelnaam"
 
-#: error.c:465
+#: error.c:464
 #, fuzzy
 msgid "bad connector"
 msgstr "foutiewe verbinder`%d'"
 
-#: error.c:466
+#: error.c:465
 #, fuzzy
 msgid "bad jump"
 msgstr "Spring na:"
 
-#: error.c:504
+#: error.c:503
 #, fuzzy, c-format
 msgid "%s: unbound variable"
 msgstr "Veranderlike boom"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr ""
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr ""
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 #, fuzzy
 msgid "pipe error"
 msgstr "pypfout: %s"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: bevel nie gevind nie"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, fuzzy, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: is 'n gids"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr ""
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, fuzzy, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr ""
 
-#: expr.c:283
+#: expr.c:291
 #, fuzzy
 msgid "recursion stack underflow"
 msgstr "Stapel grootte verhoog"
 
-#: expr.c:431
+#: expr.c:477
 #, fuzzy
 msgid "syntax error in expression"
 msgstr "Sintaks fout in patroon"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr ""
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "Sintaks fout in patroon"
+
+#: expr.c:544 expr.c:910
 #, fuzzy
 msgid "division by 0"
 msgstr "devisie by nul."
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr ""
 
-#: expr.c:595
+#: expr.c:645
 #, fuzzy
 msgid "`:' expected for conditional expression"
 msgstr "Soek die lêer vir 'n uitdrukking"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr ""
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 
-#: expr.c:1002
+#: expr.c:1055
 #, fuzzy
 msgid "missing `)'"
 msgstr "Ontbrekende '>'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 #, fuzzy
 msgid "syntax error: operand expected"
 msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr ""
 
-#: expr.c:1419
+#: expr.c:1510
 #, fuzzy, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr ""
 "Hierdie is die fout boodskap van %1:\n"
 "%2"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr ""
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "waarde te groot vir basis"
 
-#: expr.c:1546
+#: expr.c:1637
 #, fuzzy, c-format
 msgid "%s: expression error\n"
-msgstr "%s: heelgetal-uitdrukking is verwag\n"
+msgstr "Pypfout.\n"
 
-#: general.c:68
+#: general.c:69
 #, fuzzy
 msgid "getcwd: cannot access parent directories"
 msgstr "Kan nie die program uitvoer nie:"
 
-#: input.c:102 subst.c:5858
-#, fuzzy, c-format
+#: input.c:99 subst.c:5930
+#, c-format
 msgid "cannot reset nodelay mode for fd %d"
-msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
+msgstr ""
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr ""
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, fuzzy, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "E108: Geen veranderlike: \"%s\""
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, fuzzy, c-format
 msgid "Signal %d"
 msgstr "Sein kwaliteit:"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Klaar"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 #, fuzzy
 msgid "Stopped"
 msgstr "Op gehou"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, fuzzy, c-format
 msgid "Stopped(%s)"
 msgstr "Op gehou"
 
-#: jobs.c:1632
+#: jobs.c:1681
 #, fuzzy
 msgid "Running"
 msgstr "aktief"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Klaar(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Verlaat %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Onbekende status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, fuzzy, c-format
 msgid "(core dumped) "
 msgstr "Kern Ontwikkelaar"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, fuzzy, c-format
 msgid "  (wd: %s)"
 msgstr "Aktiveer nou dadelik"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, fuzzy, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "Fout in die skryf van %s"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr ""
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr ""
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, fuzzy, c-format
 msgid "%s: job has terminated"
 msgstr "Die bediener beëindig Die verbinding."
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr ""
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
-#, fuzzy, c-format
+#: jobs.c:4120
+#, c-format
 msgid "%s: line %d: "
-msgstr "3d modus"
+msgstr ""
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, fuzzy, c-format
 msgid " (core dumped)"
 msgstr "Kern Ontwikkelaar"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, fuzzy, c-format
 msgid "(wd now: %s)\n"
 msgstr "Aktiveer nou dadelik"
 
-#: jobs.c:4041
+#: jobs.c:4191
 #, fuzzy
 msgid "initialize_job_control: getpgrp failed"
 msgstr "Inisialisering van OpenGL het misluk."
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr ""
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr ""
 
-#: jobs.c:4114
+#: jobs.c:4273
 #, fuzzy
 msgid "initialize_job_control: setpgid"
 msgstr "Inisialisering van OpenGL het misluk."
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr ""
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "geen taakbeheer in hierdie dop nie"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
-#, fuzzy
+#: lib/malloc/malloc.c:348
 msgid "unknown"
-msgstr "(onbekend)"
+msgstr "onbekend"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 
@@ -1340,22 +1343,22 @@ msgstr ""
 msgid "network operations not supported"
 msgstr ""
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr ""
@@ -1375,153 +1378,153 @@ msgstr "Wanneer nuwe pos arriveer in"
 msgid "The mail in %s has been read\n"
 msgstr ""
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 #, fuzzy
 msgid "syntax error: arithmetic expression required"
 msgstr "Sintaks fout in patroon"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 #, fuzzy
 msgid "syntax error: `;' unexpected"
 msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, fuzzy, c-format
 msgid "syntax error: `((%s))'"
 msgstr "sintaksfout"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr ""
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr ""
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 
-#: parse.y:4419
+#: parse.y:4615
 #, fuzzy
 msgid "syntax error in conditional expression"
 msgstr "Sintaks fout in patroon"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr ""
 
-#: parse.y:4501
+#: parse.y:4697
 #, fuzzy
 msgid "expected `)'"
 msgstr "')' is verwag\n"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:4579
+#: parse.y:4775
 #, fuzzy, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "%s: binêre operator is verwag\n"
 
-#: parse.y:4583
+#: parse.y:4779
 #, fuzzy
 msgid "conditional binary operator expected"
 msgstr "%s: binêre operator is verwag\n"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:4620
+#: parse.y:4816
 #, fuzzy, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "Soek die lêer vir 'n uitdrukking"
 
-#: parse.y:4623
+#: parse.y:4819
 #, fuzzy, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "Soek die lêer vir 'n uitdrukking"
 
-#: parse.y:4627
+#: parse.y:4823
 #, fuzzy, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "Soek die lêer vir 'n uitdrukking"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr ""
 
-#: parse.y:6014
+#: parse.y:6263
 #, fuzzy, c-format
 msgid "syntax error near `%s'"
 msgstr "Sintaks fout in patroon"
 
-#: parse.y:6024
+#: parse.y:6273
 #, fuzzy
 msgid "syntax error: unexpected end of file"
 msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "sintaksfout"
 
-#: parse.y:6086
+#: parse.y:6335
 #, fuzzy, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Gebruik Kaart na Los Tronk"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr ""
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr ""
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1550,144 +1553,148 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr ""
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr ""
 
-#: redir.c:178
+#: redir.c:174
 #, fuzzy, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: dubbelsinnige herroetering"
 
-#: redir.c:182
+#: redir.c:178
 #, fuzzy, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "Jy het gespesifiseer 'n bestaande lêer"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr ""
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr ""
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr ""
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 #, fuzzy
 msgid "redirection error: cannot duplicate fd"
 msgstr "Pypfout.\n"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr ""
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr ""
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, fuzzy, c-format
 msgid "%c%c: invalid option"
 msgstr "%s: illegal option -- %c\n"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
+msgstr ""
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
+msgstr ""
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: is 'n gids"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Ek het nie 'n naam nie!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, fuzzy, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "bedryfstelselkernweergawe"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 msgstr ""
 
-#: shell.c:1933
+#: shell.c:1983
 #, fuzzy
 msgid "GNU long options:\n"
 msgstr "Gnu C Saamsteller Opsies"
 
-#: shell.c:1937
+#: shell.c:1987
 #, fuzzy
 msgid "Shell options:\n"
 msgstr "opneem opsies"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 
-#: shell.c:1953
+#: shell.c:2007
 #, fuzzy, c-format
 msgid "\t-%s or -o option\n"
 msgstr ""
 "Gebruik so: %s LÊER \n"
 "   of:  %s OPSIE\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr ""
@@ -1768,7 +1775,9 @@ msgstr "w
 #: siglist.c:111
 #, fuzzy
 msgid "Terminated"
-msgstr "Gedruk: %s"
+msgstr ""
+"\n"
+"Bevel beëindig\n"
 
 #: siglist.c:115
 #, fuzzy
@@ -1893,107 +1902,112 @@ msgstr "Sein kwaliteit:"
 msgid "Unknown Signal #%d"
 msgstr "Sein kwaliteit:"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, fuzzy, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "--Geen reëls in buffer--"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr ""
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 #, fuzzy
 msgid "cannot make pipe for process substitution"
 msgstr "Woord Substitusie"
 
-#: subst.c:5798
+#: subst.c:5851
 #, fuzzy
 msgid "cannot make child for process substitution"
 msgstr "Woord Substitusie"
 
-#: subst.c:5848
+#: subst.c:5920
 #, fuzzy, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
 
-#: subst.c:5850
+#: subst.c:5922
 #, fuzzy, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
 
-#: subst.c:5873
+#: subst.c:5945
 #, fuzzy, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "--Geen reëls in buffer--"
 
-#: subst.c:6083
+#: subst.c:6190
 #, fuzzy
 msgid "cannot make pipe for command substitution"
 msgstr "Woord Substitusie"
 
-#: subst.c:6127
+#: subst.c:6233
 #, fuzzy
 msgid "cannot make child for command substitution"
 msgstr "Woord Substitusie"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr ""
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, fuzzy, c-format
-msgid "%s: bad substitution"
-msgstr "Woord Substitusie"
-
-#: subst.c:6800
-#, fuzzy, c-format
+#: subst.c:6806 subst.c:6824 subst.c:6979
+#, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: illegal option -- %c\n"
+msgstr ""
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
-msgstr "%s: illegal option -- %c\n"
+msgstr "Veranderlike boom"
+
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr ""
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr ""
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, fuzzy, c-format
 msgid "%s: substring expression < 0"
 msgstr "ongeldige uitdrukking"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, fuzzy, c-format
+msgid "%s: bad substitution"
+msgstr "Woord Substitusie"
+
+#: subst.c:9082
 #, fuzzy, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, fuzzy, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "--Geen reëls in buffer--"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr ""
@@ -2018,114 +2032,119 @@ msgstr "')' is verwag\n"
 msgid "`)' expected, found %s"
 msgstr "')' is verwag, maar %s gevind\n"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, fuzzy, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: unitêre operator is verwag\n"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, fuzzy, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: binêre operator is verwag\n"
 
-#: test.c:869
+#: test.c:875
 #, fuzzy
 msgid "missing `]'"
 msgstr "Ontbrekende '>'"
 
-#: trap.c:224
+#: trap.c:216
 #, fuzzy
 msgid "invalid signal number"
 msgstr "Die sein nommer wat was gevang het"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr ""
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr ""
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr ""
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr ""
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
+msgstr ""
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr ""
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr ""
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr ""
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
-#, fuzzy, c-format
+#: variables.c:6272
+#, c-format
 msgid "%s: %s: cannot open as FILE"
-msgstr "%s: kan nie %s skep nie"
+msgstr ""
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr ""
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr ""
 
 #: version.c:47 version2.c:47
@@ -2147,22 +2166,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: kan nie %s skep nie"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: kan nie %s skep nie"
@@ -2354,7 +2373,7 @@ msgstr "Bediener of domein naam:"
 #: builtins.c:150
 #, fuzzy
 msgid "shift [n]"
-msgstr "Verlaat"
+msgstr "Shift"
 
 #: builtins.c:152
 #, fuzzy
@@ -2402,8 +2421,8 @@ msgstr "Belmetode"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
-msgstr "Wag:"
+msgid "wait [-fn] [id ...]"
+msgstr "Konfigureer Eggo"
 
 #: builtins.c:181
 #, fuzzy
@@ -2441,9 +2460,8 @@ msgid "while COMMANDS; do COMMANDS; done"
 msgstr ""
 
 #: builtins.c:198
-#, fuzzy
 msgid "until COMMANDS; do COMMANDS; done"
-msgstr "Bediener of domein naam:"
+msgstr ""
 
 #: builtins.c:200
 msgid "coproc [NAME] command [redirections]"
@@ -2502,7 +2520,7 @@ msgstr ""
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2515,8 +2533,8 @@ msgstr ""
 
 #: builtins.c:239
 #, fuzzy
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "Tipe die naam van die %1 speler."
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "Volle Naam:"
 
 #: builtins.c:242
 msgid ""
@@ -2526,8 +2544,8 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 
 #: builtins.c:256
@@ -2635,7 +2653,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2779,11 +2797,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2851,12 +2869,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2869,7 +2893,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2896,7 +2920,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2908,7 +2932,7 @@ msgid ""
 "    Returns exit status of command or success if command is null."
 msgstr ""
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2949,7 +2973,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2972,7 +2996,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -2980,7 +3004,7 @@ msgid ""
 "    is that of the last command executed."
 msgstr ""
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2989,7 +3013,7 @@ msgid ""
 "    in a login shell."
 msgstr ""
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3019,7 +3043,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3031,7 +3055,7 @@ msgid ""
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3045,7 +3069,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3069,7 +3093,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3084,14 +3108,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3100,7 +3124,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3125,7 +3150,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3149,7 +3174,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3166,7 +3191,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3189,7 +3214,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3234,7 +3259,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3255,7 +3280,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3286,7 +3311,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3298,7 +3323,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3384,7 +3409,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3406,7 +3431,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3425,7 +3450,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3446,7 +3471,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3457,7 +3482,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3471,7 +3496,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3485,7 +3510,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3568,7 +3593,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3576,7 +3601,7 @@ msgid ""
 "    be a literal `]', to match the opening `['."
 msgstr ""
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3588,7 +3613,7 @@ msgid ""
 "    Always succeeds."
 msgstr ""
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3632,7 +3657,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3662,7 +3687,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3711,7 +3736,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3729,7 +3754,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3737,19 +3762,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3764,7 +3791,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3777,7 +3804,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3794,7 +3821,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3814,7 +3841,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3830,7 +3857,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3841,7 +3868,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3862,7 +3889,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3873,7 +3900,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3884,7 +3911,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3897,7 +3924,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3911,7 +3938,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3922,7 +3949,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3936,7 +3963,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3947,7 +3974,7 @@ msgid ""
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3975,7 +4002,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -4029,7 +4056,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -4060,7 +4087,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4087,7 +4114,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4116,14 +4143,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4137,7 +4163,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4176,7 +4202,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4194,16 +4220,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4216,7 +4246,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4231,6 +4261,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4247,7 +4278,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4289,36 +4320,13 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
 
-#~ msgid ":"
-#~ msgstr ":"
-
-#, fuzzy
-#~ msgid "times"
-#~ msgstr "Herhaal %1  times "
-
-#, fuzzy
-#~ msgid "wait [pid]"
-#~ msgstr "Wag:"
-
-#, fuzzy
-#~ msgid "     new current working directory."
-#~ msgstr "Nuutste gebruik word werksaam gids"
-
-#, fuzzy
-#~ msgid "Obsolete.  See `declare'."
-#~ msgstr "Verkeerde verklaring tipe"
-
-#, fuzzy
-#~ msgid "Logout of a login shell."
-#~ msgstr "Begin aanteken tolk"
-
 #~ msgid "Missing `}'"
 #~ msgstr "Ontbrekende `}'"
 
@@ -4378,6 +4386,14 @@ msgstr ""
 #~ msgid "You have entered %d (%d) items.  The distribution is:\n"
 #~ msgstr "Die wagwoord frase jy ingevoerde is ongeldige."
 
+#, fuzzy
+#~ msgid "slot %3d: "
+#~ msgstr "3d modus"
+
+#, fuzzy
+#~ msgid "<unknown>"
+#~ msgstr "(onbekend)"
+
 #, fuzzy
 #~ msgid "%s: bg background job?"
 #~ msgstr "Druktaak gestuur."
@@ -4398,14 +4414,14 @@ msgstr ""
 #~ msgid "`-c' requires an argument"
 #~ msgstr "%s: option `%s' requires an argument\n"
 
-#, fuzzy
-#~ msgid "%s: bad array subscript"
-#~ msgstr "Os/2 Biskaart Skikking"
-
 #, fuzzy
 #~ msgid "reading"
 #~ msgstr "besig om te lees"
 
+#, fuzzy
+#~ msgid "writing"
+#~ msgstr "besig om te skryf"
+
 #, fuzzy
 #~ msgid "$%c: unbound variable"
 #~ msgstr "Veranderlike boom"
@@ -4454,10 +4470,6 @@ msgstr ""
 #~ msgid "Unknown directive `%s'"
 #~ msgstr "Onbekende direktief"
 
-#, fuzzy
-#~ msgid "%s requires an argument"
-#~ msgstr "%s: option `%s' requires an argument\n"
-
 #, fuzzy
 #~ msgid "%s found before $END"
 #~ msgstr "Nee einde was gevind."
@@ -4482,6 +4494,13 @@ msgstr ""
 #~ msgid "mkbuiltins: Out of virtual memory!\n"
 #~ msgstr "GenericName=Virtuele Geheue Statistieke"
 
+#~ msgid ":"
+#~ msgstr ":"
+
+#, fuzzy
+#~ msgid "times"
+#~ msgstr "Herhaal %1  times "
+
 #, fuzzy
 #~ msgid "%[DIGITS | WORD] [&]"
 #~ msgstr "Woord oorvloei"
@@ -4522,6 +4541,10 @@ msgstr ""
 #~ msgid "name only."
 #~ msgstr "Naam slegs"
 
+#, fuzzy
+#~ msgid "Obsolete.  See `declare'."
+#~ msgstr "Verkeerde verklaring tipe"
+
 #, fuzzy
 #~ msgid "\t\\a\talert (bell)"
 #~ msgstr "stelsel klok"
@@ -4558,6 +4581,10 @@ msgstr ""
 #~ msgid "with the -E option."
 #~ msgstr "%s: illegal option -- %c\n"
 
+#, fuzzy
+#~ msgid "printed."
+#~ msgstr "Gedruk: %s"
+
 #, fuzzy
 #~ msgid "is set."
 #~ msgstr "Nie stel"
index e2d353f5e25ac77008a38108b4ad80bca2fe506d..2c9c7780fe6bf83b16b11f3b397f3d46ab567c35 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-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"
@@ -17,119 +17,119 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr ""
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr ""
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr ""
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr ""
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr ""
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr ""
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr ""
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr ""
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr ""
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr ""
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr ""
 
-#: builtins/bind.def:270
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
-msgid "`%s': cannot unbind"
+msgid "`%s': unknown function name"
 msgstr ""
 
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:312
 #, c-format
-msgid "`%s': unknown function name"
+msgid "%s is not bound to any keys.\n"
 msgstr ""
 
 #: builtins/bind.def:316
 #, c-format
-msgid "%s is not bound to any keys.\n"
+msgid "%s can be invoked via "
 msgstr ""
 
-#: builtins/bind.def:320
+#: builtins/bind.def:353 builtins/bind.def:368
 #, c-format
-msgid "%s can be invoked via "
+msgid "`%s': cannot unbind"
 msgstr ""
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr ""
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr ""
 
@@ -140,233 +140,233 @@ msgid ""
 "    Without EXPR, returns "
 msgstr ""
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr ""
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr ""
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 msgid "null directory"
 msgstr ""
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr ""
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr ""
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr ""
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr ""
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr ""
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr ""
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr ""
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr ""
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr ""
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr ""
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr ""
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr ""
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr ""
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr ""
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr ""
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr ""
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr ""
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr ""
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr ""
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr ""
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr ""
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr ""
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr ""
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr ""
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr ""
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr ""
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr ""
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr ""
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr ""
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr ""
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr ""
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr ""
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr ""
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr ""
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr ""
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -400,68 +400,68 @@ msgstr ""
 msgid "%s: cannot delete: %s"
 msgstr ""
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr ""
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr ""
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr ""
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr ""
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr ""
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr ""
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr ""
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr ""
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr ""
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr ""
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr ""
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr ""
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr ""
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr ""
@@ -476,39 +476,38 @@ msgstr ""
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr ""
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr ""
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr ""
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr ""
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -520,20 +519,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr ""
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr ""
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, c-format
 msgid "%s: invalid timestamp"
 msgstr ""
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr ""
@@ -547,16 +547,16 @@ msgstr ""
 msgid "no other options allowed with `-x'"
 msgstr ""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr ""
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr ""
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr ""
 
@@ -565,69 +565,69 @@ msgstr ""
 msgid "%s: not an indexed array"
 msgstr ""
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr ""
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr ""
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr ""
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr ""
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr ""
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr ""
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr ""
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr ""
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr ""
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr ""
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr ""
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr ""
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr ""
@@ -641,19 +641,19 @@ msgstr ""
 msgid "%s: invalid argument"
 msgstr ""
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr ""
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr ""
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr ""
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -677,7 +677,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -702,7 +702,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -728,40 +728,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr ""
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr ""
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr ""
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr ""
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr ""
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr ""
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr ""
@@ -770,20 +770,20 @@ msgstr ""
 msgid "shift count"
 msgstr ""
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr ""
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr ""
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr ""
@@ -796,61 +796,61 @@ msgstr ""
 msgid "cannot suspend a login shell"
 msgstr ""
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr ""
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr ""
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr ""
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr ""
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr ""
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr ""
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr ""
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr ""
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr ""
@@ -869,396 +869,404 @@ msgstr ""
 msgid "`%c': invalid symbolic mode character"
 msgstr ""
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr ""
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr ""
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr ""
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr ""
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr ""
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr ""
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr ""
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr ""
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr ""
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr ""
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr ""
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr ""
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr ""
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr ""
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr ""
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr ""
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr ""
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr ""
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr ""
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr ""
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr ""
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr ""
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr ""
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr ""
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr ""
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr ""
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr ""
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr ""
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr ""
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr ""
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr ""
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr ""
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr ""
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr ""
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr ""
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr ""
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr ""
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr ""
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr ""
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr ""
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr ""
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr ""
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr ""
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr ""
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr ""
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr ""
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr ""
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr ""
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr ""
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr ""
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr ""
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr ""
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr ""
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr ""
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr ""
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr ""
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr ""
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr ""
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr ""
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr ""
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr ""
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 
@@ -1300,22 +1308,22 @@ msgstr ""
 msgid "network operations not supported"
 msgstr ""
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr ""
@@ -1333,147 +1341,147 @@ msgstr ""
 msgid "The mail in %s has been read\n"
 msgstr ""
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr ""
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr ""
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr ""
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr ""
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr ""
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr ""
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr ""
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr ""
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr ""
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr ""
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr ""
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr ""
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr ""
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr ""
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr ""
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr ""
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr ""
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr ""
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1502,139 +1510,143 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr ""
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr ""
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr ""
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr ""
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr ""
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr ""
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr ""
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr ""
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr ""
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr ""
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr ""
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr ""
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr ""
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr ""
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr ""
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr ""
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr ""
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 msgstr ""
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr ""
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr ""
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr ""
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr ""
@@ -1808,102 +1820,107 @@ msgstr ""
 msgid "Unknown Signal #%d"
 msgstr ""
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr ""
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr ""
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr ""
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr ""
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr ""
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr ""
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 
-#: subst.c:5959
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
 msgstr ""
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr ""
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr ""
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr ""
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
+msgid "%s: invalid indirect expansion"
 msgstr ""
 
-#: subst.c:6800
+#: subst.c:6840 subst.c:6987
 #, c-format
-msgid "%s: invalid indirect expansion"
+msgid "%s: invalid variable name"
 msgstr ""
 
-#: subst.c:6807
+#: subst.c:7056
 #, c-format
-msgid "%s: invalid variable name"
+msgid "%s: parameter not set"
 msgstr ""
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr ""
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr ""
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr ""
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr ""
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr ""
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr ""
@@ -1926,112 +1943,117 @@ msgstr ""
 msgid "`)' expected, found %s"
 msgstr ""
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr ""
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr ""
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr ""
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr ""
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr ""
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr ""
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr ""
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr ""
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr ""
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr ""
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr ""
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr ""
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr ""
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr ""
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr ""
 
 #: version.c:47 version2.c:47
@@ -2053,22 +2075,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr ""
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr ""
@@ -2270,7 +2292,7 @@ msgid "umask [-p] [-S] [mode]"
 msgstr ""
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr ""
 
 #: builtins.c:181
@@ -2361,7 +2383,7 @@ msgstr ""
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2373,7 +2395,7 @@ msgid ""
 msgstr ""
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr ""
 
 #: builtins.c:242
@@ -2384,8 +2406,8 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 
 #: builtins.c:256
@@ -2493,7 +2515,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2637,11 +2659,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2709,12 +2731,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2727,7 +2755,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2754,7 +2782,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2766,7 +2794,7 @@ msgid ""
 "    Returns exit status of command or success if command is null."
 msgstr ""
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2807,7 +2835,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2830,7 +2858,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -2838,7 +2866,7 @@ msgid ""
 "    is that of the last command executed."
 msgstr ""
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2847,7 +2875,7 @@ msgid ""
 "    in a login shell."
 msgstr ""
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2877,7 +2905,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2889,7 +2917,7 @@ msgid ""
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -2903,7 +2931,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -2927,7 +2955,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -2942,14 +2970,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -2958,7 +2986,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -2983,7 +3012,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3007,7 +3036,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3024,7 +3053,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3047,7 +3076,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3092,7 +3121,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3113,7 +3142,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3144,7 +3173,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3156,7 +3185,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3242,7 +3271,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3264,7 +3293,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3283,7 +3312,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3304,7 +3333,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3315,7 +3344,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3329,7 +3358,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3343,7 +3372,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3426,7 +3455,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3434,7 +3463,7 @@ msgid ""
 "    be a literal `]', to match the opening `['."
 msgstr ""
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3446,7 +3475,7 @@ msgid ""
 "    Always succeeds."
 msgstr ""
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3490,7 +3519,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3520,7 +3549,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3569,7 +3598,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3587,7 +3616,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3595,19 +3624,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3622,7 +3653,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3635,7 +3666,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3652,7 +3683,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3672,7 +3703,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3688,7 +3719,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3699,7 +3730,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3720,7 +3751,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3731,7 +3762,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3742,7 +3773,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3755,7 +3786,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3769,7 +3800,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3780,7 +3811,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3794,7 +3825,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3805,7 +3836,7 @@ msgid ""
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3833,7 +3864,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3887,7 +3918,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -3918,7 +3949,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -3945,7 +3976,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -3974,14 +4005,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -3995,7 +4025,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4034,7 +4064,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4052,16 +4082,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4074,7 +4108,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4089,6 +4123,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4105,7 +4140,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4147,7 +4182,7 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index d30439946942e8b7784acadb2bda778383674a5b..43887faf5cec5d91072ab9bb1bcae953bc52f319 100644 (file)
Binary files a/po/bg.gmo and b/po/bg.gmo differ
index eb9236cd94d89d641522ca3934bf1669330d68ac..f531870ee15b7437782182848e7993fffc247daa 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
 # Bulgarian translation of bash po-file.
-# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015.
+# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015, 2016.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-29 08:17+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-09-28 08:49+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: bg\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "грешен индекс на масив"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: изтриване на атрибута за указател от променливата"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: масивът не може да бъде преобразуван към речник"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: грешно име на ключ в речник"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: не може да се присвоява на нецифров индекс"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: при присвояване към речник трябва да се използва индекс"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: не може да се създаде: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "изпълнение на команда на Юникс от bash: не може да се открие подредбата на\n"
 "функциите на клавишите за командата"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: първият непразен знак не е „\"“"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "в %2$s липсва затварящ знак „%1$c“"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: разделителят „:“ липсва"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 "заместване на изразите с фигурни скоби: не може да се задели памет за %d "
 "елемента"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s“: грешно име на синоним"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "редактирането на командния ред не е включено"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s“: грешно име на подредбата на функциите на клавишите"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: не може да се прочете: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s“: не може да се премахне присвояване"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s“:  име на непозната функция"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s не е зададена на никой клавиш.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s може да се извика чрез "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: не може да се премахне присвояване"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "брой цикли"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "валидно само за циклите с „for“, „while“ и „until“"
 
@@ -149,234 +150,233 @@ msgstr ""
 "    \n"
 "    Без ИЗРАЗ връща "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Променливата „HOME“ не е зададена"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "прекалено много аргументи"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "нÑ\8fма Ð´Ñ\80Ñ\83га директория"
+msgstr "нÑ\83лева директория"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Променливата „OLDPWD“ не е зададена"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "ред %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "предупреждение: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: употреба: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: опцията изисква аргумент"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: изисква се числов аргумент"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: не е открит"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: грешна опция"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: грешно име на опция"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s“: грешен идентификатор"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "грешно осмично число"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "грешно шестнайсетично число"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "грешно число"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: грешно указване на сигнал"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s“: грешен идентификатор на процес или задача"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: променлива с права само за четене"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s е извън допустимия диапазон"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "аргументът"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s е извън допустимия диапазон"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: няма такава задача"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: няма управление на задачите"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "няма управление на задачите"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: ограничена обвивка"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "ограничена обвивка"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: не е команда вградена в обвивката"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "грешка при запис: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "грешка при задаване на атрибутите на терминала: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "грешка при получаване на атрибутите на терминала: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: грешка при получаване на текущата директория: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: нееднозначно указана задача"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "помощта не е включена в тази версия"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: грешно име на действие"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: не е указано дописване"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "предупреждение: опцията „-F“ може да не работи според очакванията ви"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "предупреждение: опцията „-C“ може да не работи според очакванията ви"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "в момента не се изпълнява функция за дописване"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "може да се използва само във функция"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: променливата-указател не може да е масив"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: променливата-указател не може да сочи към себе си"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: цикъл в променливите-указатели"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: неправилно име за променлива-указател"
+msgstr "„%s“: неправилно име за променлива-указател"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "„-f“ не може да се използва за създаването на функции"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: функция с права само за четене"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: съставното присвояване на масив чрез цитат е остаряло"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: променливите за масиви не могат да се унищожават така"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: речник не може да се преобразува в масив"
@@ -410,68 +410,68 @@ msgstr "%s: не е зареден динамично"
 msgid "%s: cannot delete: %s"
 msgstr "%s: не може да се изтрие: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: е директория"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: не е обикновен файл"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: файлът е прекалено голям"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: двоичният файл не може да бъде изпълнен"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: не може да се изпълни: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "изход\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "това не е входна обвивка: използвайте „exit“"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Има спрени задачи.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Има изпълнявани задачи.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "не е открита команда"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "указване на историята"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: не може да се отвори временен файл: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "текуща"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "задача %d е стартирана без управление на задачите"
@@ -486,28 +486,27 @@ msgstr "%s: непозволена опция — %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: опцията изисква аргумент — %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "хеширането е изключено"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: таблицата с хешове е празна\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "съвпад.\tкоманда\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Команди на обвивката, които напасват на ключовата дума „"
 msgstr[1] "Команди на обвивката, които напасват на ключовите думи „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -515,12 +514,12 @@ msgstr ""
 "няма теми в помощта, които да отговарят на „%s“.  Опитайте с\n"
 "„help help“, „man -k %s“ или „info %s“."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: не може да се отвори: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -541,20 +540,21 @@ msgstr ""
 "Знакът звездичка „*“ до името на команда означава, че тя е изключена.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "не може да се ползва едновременно повече от една от опциите „-anrw“"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "позиция в историята"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Ð³Ñ\80еÑ\88ен Ð°Ñ\80гÑ\83менÑ\82"
+msgstr "%s: Ð³Ñ\80еÑ\88на Ð´Ð°Ñ\82а Ñ\81 Ð²Ñ\80еме"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: неуспешно заместване чрез историята"
@@ -568,16 +568,16 @@ msgstr "%s: неуспешно извикване на inlib"
 msgid "no other options allowed with `-x'"
 msgstr "не е позволена друга опция с „-x“"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: аргументите трябва да са идентификатори на процеси или задачи"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Неизвестна грешка"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "очаква се израз"
 
@@ -586,69 +586,69 @@ msgstr "очаква се израз"
 msgid "%s: not an indexed array"
 msgstr "%s: не е масив"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: грешно указване на файловия дескриптор"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: грешен файлов дескриптор: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: грешен номер на ред"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: грешен начален индекс за масив"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: грешно количество редове за обработка"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "празно име на променлива за масив"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "изисква се поддръжка на променливи за масиви"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s“: липсва форматиращ знак"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "„%c“: грешен формат на времето"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c“: грешен форматиращ знак"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "предупреждение: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "неуспешен анализ на форма̀та: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "липсва шестнадесетична цифра за \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "липсва цифра за Уникод за \\%c"
@@ -662,19 +662,19 @@ msgstr "няма друга директория"
 msgid "%s: invalid argument"
 msgstr "%s: грешен аргумент"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "«няма текуща директория»"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "стекът с директории е празен"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "индекс за стека с директории"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -718,7 +718,7 @@ msgstr ""
 "„dirs“,\n"
 "          когато е стартирана без опции.  Брои се от 0."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -770,7 +770,7 @@ msgstr ""
 "    \n"
 "    Можете да изведете стека на директорията с командата „dirs“."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -816,42 +816,42 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: грешно указване на изтичането на времето"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "грешка при четене: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "„return“ е възможен само от функция или изпълнен в текущата обвивка скрипт"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 "не може едновременно да се премахват задаванията на функция и променлива"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: не може да се премахне"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: не може да се премахне: %s е само за четене"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: не е променлива за масив"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: не е функция"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: не може да се изнесе"
@@ -860,21 +860,21 @@ msgstr "%s: не може да се изнесе"
 msgid "shift count"
 msgstr "брой на преместванията"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "не може едновременно да се задават и да се премахват опции на обвивката"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: грешно име на опция на обвивката"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "изисква се аргумент име на файл"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: файлът не е открит"
@@ -887,61 +887,61 @@ msgstr "не може да бъде временно спряна"
 msgid "cannot suspend a login shell"
 msgstr "входната обвивка не може да бъде временно спряна"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s е синоним на „%s“\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s е ключова дума на обвивката\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s е функция\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s е специална, вградена команда в обвивката\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s е вградена команда в обвивката\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s е %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s е хеширан (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: грешен аргумент за ограничение"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c“: грешна команда"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: ограничението не може да бъде получено: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "ограничение"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: ограничението не може да бъде променено: %s"
@@ -960,370 +960,380 @@ msgstr "„%c“: неправилен оператор за описателе
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c“: неправилен знак за описателен режим"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " ред "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "последна команда: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Преустановяване…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "ИНФОРМАЦИЯ: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "неизвестна грешка в команда"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "грешен вид команда"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "грешна връзка"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "грешен преход"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: променлива без стойност"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 "\aвремето за изчакване на вход изтече: следва автоматично излизане от "
 "системата\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "стандартният вход не може да бъде пренасочен от „/dev/null“: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: копроцесът [%d:%s] все още съществува"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "грешка в програмен канал"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: превишено е максималното ниво на влагане на код (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: превишено е максималното ниво на влагане на функции (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 "%s: ограничение: в имената на командите не може да присъства знакът „/“"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: командата не е открита"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: лош интерпретатор"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: двоичният файл не може да бъде изпълнен: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "„%s“ е вградена команда в обвивката"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "файловият дескриптор %d не може да се дублира като дескриптор %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "максималният брой нива за рекурсия в израз бяха преминати"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "отрицателно препълване на стека за рекурсии"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "синтактична грешка в израз"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "опит за присвояване на стойност на нещо, което не е променлива"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "синтактична грешка в израз"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "деление на 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "програмна грешка: неправилна лексема за присвояване на израз"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "за условен израз се изисква „:“"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "степента е по-малка от 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "очаква се идентификатор след предварително увеличаване или намаляване"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "липсва „)“"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "синтактична грешка: очаква се оператор"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "синтактична грешка: грешен аритметичен оператор"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (грешната лексема е „%s“)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "грешна аритметична основа на бройна система"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "стойността е прекалено голяма за основата"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: грешка в израза\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: няма достъп до родителските директории"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "не може да се изчисти режимът без забавяне на файловия дескриптор %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "не може да се задели нов файлов дескриптор за вход на bash от дескриптор %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "запазване на входа на bash: вече съществува буфер за новия файлов дескриптор "
 "%d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 "стартиране на програмен канал: не може да се комуникира с водача на канала\n"
 "(pgrp pipe)"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "стартираният процес %d е в изпълняваната задача %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "изтриване на спряната задача %d в групата процеси %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "добавяне на процес: процесът %5ld (%s) е в програмния канал"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "добавяне на процес: процесът %5ld (%s) е отбелязан като още жив"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr ""
 "описателен идентификатор на процес: %ld: няма такъв идентификатор на процес"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Сигнал %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Завършен"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Спрян"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Спрян (%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Изпълняван"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Завършен (%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Изход %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Непознато състояние"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(паметта е разтоварена)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "дъщерният процес смени групата при изпълнение (от %ld на %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "изчакване: процесът с идентификатор %ld не е дъщерен на тази обвивка"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "изчакване: липсват данни за процес с идентификатор %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "изчакване на задача: задачата %d е спряна"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: задачата е приключила"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: задача %d вече е във фонов режим"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 "изчакване на дъщерен процес: включване на незабавното излизане от функцията\n"
 "чрез WNOHANG, за да се избегне недефиниран блок"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: ред %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (паметта е разтоварена)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(работната директория е: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "инициализация на контрола на задачите: неуспешно изпълнение на getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "инициализация на контрола на задачите: дисциплина на линията"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "инициализация на контрола на задачите: дисциплина на линията"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr ""
 "инициализация на контрола на задачите: задаване на група при изпълнение "
 "(setpgid)"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "групата на процесите на терминала не може да бъде зададена (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "в тази обвивка няма управление на задачите"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "заделяне на памет: грешно предположение: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1332,46 +1342,46 @@ msgstr ""
 "\r\n"
 "заделяне на памет: %s:%d: предположението е отпечатано\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "непознат"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 "заделяне на памет: блок в списъка със свободни блокове е зает или неподходящ"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr ""
 "изчистване на памет: извикано е с блоков аргумент, който вече е изчистен"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "изчистване на памет: извикано е с незаделен блоков аргумент"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 "изчистване на памет: открито е отрицателно препълване с mh_nbytes извън\n"
 "допустимия диапазон"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 "изчистване на памет: късовете на началната и крайната области се различават"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "презаделяне: извикано е с аргумент с незаделен блок"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "презаделяне: открито е отрицателно препълване с mh_nbytes извън допустимия\n"
 "диапазон"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "презаделяне: късовете на началната и крайната области се различават"
 
@@ -1414,22 +1424,22 @@ msgstr "%s: неправилно указан мрежов път"
 msgid "network operations not supported"
 msgstr "не се поддържат мрежови операции"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: локалът не може да бъде сменен (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: локалът не може да бъде сменен (%s): %s"
@@ -1447,154 +1457,156 @@ msgstr "Имате нова поща в $_"
 msgid "The mail in %s has been read\n"
 msgstr "Пощата в %s вече е прочетена\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "синтактична грешка: изисква се аритметичен израз"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "синтактична грешка: неочакван знак „;“"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "синтактична грешка: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "вътрешен документ с „<<“: неправилен вид инструкция %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "вътрешният документ на ред %d е отделен със знак за нов ред (а трябва да е „%"
 "s“)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "пренасочване: инструкцията за пренасочване „%d“ е извън допустимия диапазон"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е "
+"отрязан"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr "превишен е маскималният брой възможни вътрешни документи"
+msgstr "превишен е максималният брой възможни вътрешни документи"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 "неочакван знак за край на файл „EOF“, а се очакваше съответстващ знак „%c“"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "неочакван знак за край на файл „EOF“, а се очакваше „]]“"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "синтактична грешка в условен израз: неочаквана лексема „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "синтактична грешка в условен израз"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "неочаквана лексема „%s“, а се очакваше знакът „)“"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "очакваше се „)“"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "неочакван аргумент „%s“ за унарен условен оператор"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "неочакван аргумент за унарен условен оператор"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "неочаквана лексема „%s“, очакваше се бинарен условен оператор"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "очакваше се бинарен условен оператор"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "неочакван аргумент „%s“ за бинарен условен оператор"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "неочакван аргумент за бинарен условен оператор"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "неочаквана лексема „%c“ в условна команда"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "неочаквана лексема „%s“ в условна команда"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "неочаквана лексема %d в условна команда"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "синтактична грешка в близост до неочакваната лексема „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "синтактична грешка в близост до „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "синтактична грешка: неочакван край на файл"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "синтактична грешка"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Използвайте „%s“, за да излезете от обвивката.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "неочакван знак за край на файл „EOF“, очакваше се знакът „)“"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "дописване: функцията „%s“ не е открита"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: възможно зацикляне на повторните опити"
 
 #: pcomplib.c:182
 #, c-format
@@ -1621,95 +1633,99 @@ msgstr "xtrace_set: указател към файл – NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "отпечатване: „%c“: неправилен форматиращ знак"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "файловият дескриптор е извън допустимия диапазон"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: двусмислено пренасочване"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: не може да се презапише съществуващ файл"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: поради ограничение изходът не може да се пренасочи"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "не може да се създаде временен файл за вътрешен документ: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: на променлива не може да се присвои файлов дескриптор"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr ""
 "„/dev/(tcp|udp)/host/port“ не се поддържат, ако няма поддръжка на мрежа"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "грешка при пренасочване: файловият дескриптор не може да бъде дублиран"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "не е открита директорията „/tmp“. Създайте я!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "„/tmp“ трябва да е директория"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: неправилна опция"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr ""
 "идентификаторът на потребител на процеса не може да се зададе да е %d,\n"
 "ефективният идентификатор на потребител на процеса е %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr ""
 "идентификаторът на група на процеса не може да се зададе да е %d,\n"
 "ефективният идентификатор на група на процеса е %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "режимът на изчистване на грешки е недостъпен, защото е изключен"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: е директория"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Не може да се получи името на текущия потребител!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, версия %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1718,53 +1734,53 @@ msgstr ""
 "Употреба:    %s [дълга опция на GNU] [опция]…\n"
 "             %s [дълга опция на GNU] [опция] файл-скрипт…\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Дълги опции на GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Опции на обвивката:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "    -ilrsD или -c команда, или -O къса_опция        (само при стартиране)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "    -%s или -o опция\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "За повече информация за опциите на обвивката въведете „%s -c \"help set\"“.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "За повече информация за вградените в обвивката команди въведете „%s -c "
 "help“.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Интернет страница на bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "Ð\9fомоÑ\89 Ð·Ð° Ñ\81оÑ\84Ñ\82Ñ\83еÑ\80а GNU: <http://www.gnu.org/gethelp/>\n"
+msgstr "Ð\9eбÑ\89а Ð¿Ð¾Ð¼Ð¾Ñ\89 Ð·Ð° Ð¿Ñ\80огÑ\80амиÑ\82е Ð½а GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "маска за обработката на сигнали: %d: грешна операция"
@@ -1938,94 +1954,98 @@ msgstr "Непознат сигнал #"
 msgid "Unknown Signal #%d"
 msgstr "Непознат сигнал #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "лошо заместване: липсва затварящ знак „%s“ в %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: на член от масив не може да се присвои списък"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "не може да се създаде програмен канал за заместване на процеси"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "не може да се създаде дъщерен процес за заместване на процеси"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "именуваният програмен канал %s не може да се отвори за четене"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "именуваният програмен канал %s не може да се отвори за запис"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 "именуваният програмен канал %s не може да се\n"
 "дублира като файловия дескриптор %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "лоÑ\88о Ð·Ð°Ð¼ÐµÑ\81Ñ\82ване: Ð»Ð¸Ð¿Ñ\81ва Ð·Ð°Ñ\82ваÑ\80Ñ\8fÑ\89 Ð·Ð½Ð°Ðº â\80\9e\80\9c Ð² %s"
+msgstr "замеÑ\81Ñ\82ване Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸: Ð·Ð½Ð°ÐºÑ\8aÑ\82 â\80\9enullâ\80\9c Ð²Ñ\8aв Ð²Ñ\85ода Ðµ Ð¿Ñ\80еÑ\81коÑ\87ен"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "не може да се създаде програмен канал за заместване на команди"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "не може да се създаде дъщерен процес за заместване на команди"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "заместване на команди: каналът не може да се дублира като fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: неправилно име за променлива-указател"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: лошо заместване"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: грешно непряко заместване"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "„%s“: грешно име на променлива"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: аргументът е „null“ или не е зададен"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: аргументът е „null“ или не е зададен"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: изразът от подниза е < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: лошо заместване"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: не може да се задава по този начин"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2033,12 +2053,12 @@ msgstr ""
 "бъдещите версии на обвивката ще използват изчисляване като аритметично\n"
 "заместване"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "лошо заместване: липсва затварящ знак „`“ в %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "няма съвпадение: %s"
@@ -2061,32 +2081,37 @@ msgstr "очаква се „)“"
 msgid "`)' expected, found %s"
 msgstr "очаква се „)“, а е получено %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: очаква се унарен оператор"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: очаква се бинарен оператор"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "липсва „]“"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "неправилен номер на сигнал"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr ""
 "стартиране на предстоящите прихващания: неправилна стойност в\n"
 "trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2094,97 +2119,97 @@ msgstr ""
 "стартиране на предстоящите прихващания: обработката на сигнали е SIG_DFL.\n"
 "%d (%s) е преизпратен на текущата обвивка"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "обработка на прихващания: неправилен сигнал %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "грешка при внасянето на дефиницията на функция за „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "нивото на обвивката (%d) е прекалено голямо. Задава се да е 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 "създаване на локална променлива: липсва контекст на функция в текущата "
 "област\n"
 "на видимост"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: на тази променлива не може да се присвои стойност"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: Ð½ÐµÐ¿Ñ\80авилно Ð¸Ð¼Ðµ Ð·а променлива-указател"
+msgstr "%s: Ð¿Ñ\80иÑ\81воÑ\8fване Ð½Ð° Ñ\87иÑ\81ло Ð½а променлива-указател"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 "всички локални променливи: липсва контекст на функция в текущата област на\n"
 "видимост"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s: аргументът за низа за изнасяне не трябва да е „null“"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "неправилен знак на позиция %d в низа за изнасяне за %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "липсва „=“ в низа за изнасяне за %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "изваждане на контекст на променливи: в началото на структурата за променливи "
 "на\n"
 "обвивката (shell_variables) е нещо, което не е контекст на функция"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 "изваждане на контекст на променливи: липсва контекст за глобални променливи\n"
 "(global_variables)"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "изваждане на област: в началото на структурата за променливи на обвивката\n"
 "(shell_variables)  е нещо, което не е временна област в обкръжението"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s не може да се отвори като ФАЙЛ"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: грешен файлов дескриптор за файла за трасиране"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: е извън допустимия диапазон"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Авторски права (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Авторски права (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2207,22 +2232,22 @@ msgstr "Това е свободен софтуер. Можете да го пр
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Няма НИКАКВИ ГАРАНЦИИ до степента позволена от закона."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: не могат да се заделят %lu байта (заделени са %lu байта)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: не могат да се заделят %lu байта"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: не могат да се заделят %lu байта (заделени са %lu байта)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: не могат да се заделят %lu байта"
@@ -2351,20 +2376,18 @@ msgstr ""
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [ЗАДАЧА…] или jobs -x КОМАНДА [АРГУМЕНТИ]"
+msgstr "jobs [-lnprs] [Ð\98Ð\94\97Ð\90Ð\94Ð\90ЧÐ\90â\80¦] Ð¸Ð»Ð¸ jobs -x Ð\9aÐ\9eÐ\9cÐ\90Ð\9dÐ\94Ð\90 [Ð\90РÐ\93УÐ\9cÐ\95Ð\9dТÐ\98]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [Ð\97Ð\90Ð\94Ð\90ЧÐ\90…]"
+msgstr "disown [-h] [-ar] [Ð\98Ð\94\97Ð\90Ð\94Ð\90ЧÐ\90â\80¦ | Ð\98Ð\94\9fРÐ\9eЦÐ\95С…]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
-"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИДЕНТИФИКАТОР_НА_ПРОЦЕС\n"
-"                                              | ИДЕНТИФИКАТОР_НА_ЗАДАЧА…\n"
+"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИД_ПРОЦЕС | ИД_ЗАДАЧА…\n"
 "или\n"
 "kill -l [СИГНАЛ]"
 
@@ -2442,7 +2465,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [МАСКА]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [ИД…]"
 
 #: builtins.c:181
@@ -2534,8 +2558,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v ПРОМЕНЛИВА] ФОРМАТ [АРГУМЕНТИ]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2553,7 +2578,8 @@ msgstr ""
 "        [-S НАСТАВКА] [ДУМА]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o ОПЦИЯ] [-DE] [ИМЕ…]"
 
 #: builtins.c:242
@@ -2565,9 +2591,10 @@ msgstr ""
 "        [-u ФАЙЛ_ДЕСКР] [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n БРОЙ] [-O НАЧАЛО] [-s БРОЙ] [-t] [-u ФАЙЛ_ДЕСКР]\n"
 "          [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]"
@@ -2759,6 +2786,7 @@ msgstr ""
 "    0, освен ако е зададен БРОЙ, който е по-малък от 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2769,7 +2797,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Изпълнение на вградени команди.\n"
 "\n"
@@ -3008,6 +3036,7 @@ msgstr ""
 "    Връща изходния код на КОМАНДАта или грешка, ако такава не е открита."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3026,11 +3055,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3095,7 +3124,6 @@ msgstr ""
 "    на стойност на променлива."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3103,7 +3131,7 @@ msgid ""
 msgstr ""
 "Задаване на стойност и атрибути на променливи.\n"
 "    \n"
-"    Ð\9eÑ\81Ñ\82аÑ\80Ñ\8fло.  Виж „help declare“."
+"    Ð¡Ð¸Ð½Ð¾Ð½Ð¸Ð¼ Ð½Ð° â\80\9edeclareâ\80\9c.  Виж „help declare“."
 
 #: builtins.c:538
 msgid ""
@@ -3135,6 +3163,7 @@ msgstr ""
 "    стойност на променлива, или в момента не се изпълнява функция."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3163,6 +3192,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3203,7 +3238,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща 0, освен ако не възникне грешка при извеждането."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3226,7 +3261,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща 0, освен ако възникне грешка при извеждането."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3287,7 +3322,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако ИМЕто не е на вградена команда или не възникне грешка."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3306,7 +3341,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща изходния код на командата или код за успех, ако командата е нулева."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3401,7 +3436,7 @@ msgstr ""
 "на\n"
 "    последната опция или при възникването на грешка."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3443,7 +3478,7 @@ msgstr ""
 "    0, освен когато КОМАНДАта не е открита или възникне грешка при\n"
 "    пренасочването."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3456,7 +3491,7 @@ msgstr ""
 "код\n"
 "    е този на последната изпълнена команда."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3470,7 +3505,7 @@ msgstr ""
 "изпълнена\n"
 "    в обвивка, която не е входна."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3533,7 +3568,7 @@ msgstr ""
 "    Връща 0 или изхода от последната команда, който не е 0 в случай на "
 "грешка."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3553,7 +3588,7 @@ msgstr ""
 "    Изходът от командата, която е зададена да е текуща или грешка, ако при\n"
 "    поставянето на задачата от фонов към текущ режим възникне такава."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3575,7 +3610,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако управлението на задачи е изключено или възникне грешка."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3622,7 +3657,8 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако ИМЕто не бъде открито или е дадена неправилна опция."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3637,7 +3673,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3666,7 +3702,7 @@ msgstr ""
 "    0, освен ако никоя вградена команда не съвпада с шаблона или е дадена\n"
 "    неправилна опция."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3676,7 +3712,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3712,7 +3749,9 @@ msgstr ""
 "    -d ПОЗИЦИЯ\n"
 "        изтрива елемента в историята намиращ се посочената ПОЗИЦИЯ.\n"
 "    -a  добавя историята от текущата сесия към файла с историята.\n"
-"    -n  прочитане на непрочетените редове от файла с историята.\n"
+"    -n  прочитане на непрочетените редове от файла с историята и добавяне "
+"към\n"
+"        текущата история.\n"
 "    -r  прочитане на файла с историята и добавяне на съдържанието към "
 "текущата\n"
 "        история.\n"
@@ -3739,7 +3778,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0.  Ако възникне грешка или е подадена неправилна опция връща грешка."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3786,7 +3825,7 @@ msgstr ""
 "се\n"
 "      ползва „-x“, връща изходното състояние на КОМАНДАта."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3817,8 +3856,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен когато е дадена неправилна опция или несъществуваща ЗАДАЧА."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3855,6 +3893,7 @@ msgstr ""
 "          аргументи, те се интерпретират като номера на сигналите чиито "
 "имена\n"
 "          да се изброят.\n"
+"      -L  синоним на „-l“\n"
 "\n"
 "    „kill“ е команда вградена в обвивката поради две причини: позволява да "
 "се\n"
@@ -3867,7 +3906,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0.  Ако възникне грешка или е подадена неправилна опция, връща грешка."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3955,7 +3994,8 @@ msgstr ""
 "    Ако последният АРГУМЕНТ се изчислява като 0, „let“ връща 1. В противен\n"
 "    случай — връща 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3976,7 +4016,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -4067,7 +4107,7 @@ msgstr ""
 "    грешка при задаване на стойност на променлива или е зададен неправилен\n"
 "    файлов дескриптор като аргумент на -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4090,8 +4130,7 @@ msgstr ""
 "функция\n"
 "   или скрипт."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4256,8 +4295,9 @@ msgstr ""
 "      -P  Да не се следват символните връзки при изпълнението на команди "
 "като\n"
 "          „cd“, които променят текущата директория.\n"
-"      -T  Прихващането за „DEBUG“ да се наследява от функциите на "
-"обвивката.\n"
+"      -T  Прихващането за „DEBUG“ и „RETURN“ да се наследява от функциите "
+"на\n"
+"          обвивката.\n"
 "      --  Оставащите аргументи да се тълкуват като позиционни.  Ако няма "
 "повече\n"
 "          аргументи, се изтриват съответните позиционни.\n"
@@ -4279,7 +4319,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако не е зададена неправилна опция."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4321,7 +4361,7 @@ msgstr ""
 "    0, освен ако е зададена неправилна опция или някое от ИМЕната е само за\n"
 "    четене."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4358,7 +4398,7 @@ msgstr ""
 "    0, освен ако е зададена неправилна опция или някое от ИМЕната е "
 "неправилно."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4400,7 +4440,7 @@ msgstr ""
 "    0, освен ако е зададена неправилна опция или някое от ИМЕната е "
 "неправилно."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4420,7 +4460,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако БРОят е отрицателно или по-голямо от стойността „$#“."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4447,7 +4487,7 @@ msgstr ""
 "не\n"
 "    може да бъде открит, изходът е грешка."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4473,7 +4513,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако не възникне грешка или управлението на задачи е изключено."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4643,7 +4683,7 @@ msgstr ""
 "    0, ако ИЗРАЗът е верен.  Грешка, когато ИЗРАЗът е неверен или е даден\n"
 "    неправилен аргумент."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4658,7 +4698,7 @@ msgstr ""
 "квадратна\n"
 "    скоба „[“."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4678,7 +4718,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Винаги 0."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4766,7 +4806,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако е зададен неправилен сигнал или опция."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4827,7 +4867,7 @@ msgstr ""
 "    0, ако всички подадени ИМЕна са открити, неуспех, ако някое от тях "
 "липсва."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4928,7 +4968,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако не възникни грешка или е дадена неправилна опция."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4964,7 +5004,8 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако МАСКАта или някоя от зададените опции са неправилни."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4972,13 +5013,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -5001,7 +5044,7 @@ msgstr ""
 "    Връща изходния код на последната задача или процес.  Ако е зададена\n"
 "    неправилна опция, връща грешка."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -5028,7 +5071,7 @@ msgstr ""
 "    Изходния код на процеса с последния идентификатор.  Грешка, ако е даден\n"
 "    неправилен идентификатор или е дадена неправилна опция."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -5053,7 +5096,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща изходния код на последно изпълнената команда."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -5083,7 +5126,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща изходния код на последно изпълнената команда."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5125,7 +5168,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Връща изходния код на последно изпълнената команда."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5155,7 +5198,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на ПРОГРАМНия_КАНАЛ."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5174,7 +5217,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на последно изпълнената команда."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5215,7 +5258,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на последно изпълнената команда."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5233,7 +5276,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на последно изпълнената команда."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5251,8 +5294,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на последно изпълнената команда."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5274,9 +5316,9 @@ msgstr ""
 "    дадено ИМЕ на променлива, стандартно се ползва „COPROC“.\n"
 "    \n"
 "    Изходен код:\n"
-"    Изходния код на КОМАНДАта."
+"    Изходният код е 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5302,7 +5344,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако ИМЕто не е само за четене."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5321,7 +5363,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този на последно изпълнената команда."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5345,7 +5387,7 @@ msgstr ""
 "    Изходен код:\n"
 "    Изходният код е този възобновената задача."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5363,7 +5405,7 @@ msgstr ""
 "    Изходен код:\n"
 "    1, ако резултатът на ИЗРАЗа е 0.  В противен случай — 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5419,7 +5461,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0 или едно според стойността на ИЗРАЗа."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5545,7 +5587,7 @@ msgstr ""
 "кои\n"
 "                    команди да не се запазват в историята\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5610,7 +5652,7 @@ msgstr ""
 "към\n"
 "    съответната директория."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5664,7 +5706,7 @@ msgstr ""
 "към\n"
 "    съответната директория."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5718,14 +5760,14 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако е дадена неправилна опция или възникне грешка."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5759,7 +5801,7 @@ msgstr ""
 "изключена\n"
 "    ОПЦИЯ."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5833,7 +5875,8 @@ msgstr ""
 "     0, освен ако не е дадена неправилна опция или възникне грешка при\n"
 "     извеждането на резултата или при присвояването на стойността."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5851,10 +5894,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5887,7 +5934,7 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен когато е дадена неправилна опция или възникне грешка."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5908,7 +5955,8 @@ msgstr ""
 "    Изходен код:\n"
 "    0, освен ако е дадена неправилна опция или възникне грешка."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5923,6 +5971,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5969,7 +6018,7 @@ msgstr ""
 "ИМЕто\n"
 "    за автоматично дописване."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -6053,7 +6102,7 @@ msgstr ""
 "променлива\n"
 "    само за четене или не е индексиран масив."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -6062,18 +6111,3 @@ msgstr ""
 "Прочитане на редове от файл и поставяне в променлива – масив.\n"
 "    \n"
 "    Синоним на „mapfile“."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Авторски права (C) 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
index bae5d3f4db679159595aeca73af611a24ebea083..fef2319cd406ea6a3d3ea67e43d1bc4199347790 100644 (file)
Binary files a/po/ca.gmo and b/po/ca.gmo differ
index 14f6aa08d25e4045ac08f81634e76411b08fda2b..17222add09c09e9c42e2f73795d5a07dfebacb07 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
 # Catalan messages for GNU bash.
-# Copyright (C) 2002, 2003, 2010, 2014, 2015 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Montxo Vicente i Sempere <montxo@enmoviment.com>, 2003 (traducció), 2010 (revisions).
 # Jordi Mas i Hernàndez <jmas@softcatala.org>, 2004 (correccions).
-# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2014, 2015 (nova traducció).
+# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2014, 2015, 2017.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-18 13:33+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-01-10 20:11+0100\n"
 "Last-Translator: Ernest Adrogué Calveras <eadrogue@gmx.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ca\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "subíndex erroni"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: s'elimina l'atribut «nameref»"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: no es pot convertir el vector indexat en associatiu"
+msgstr "%s: no és possible convertir un vector indexat en associatiu"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s: clau incorrecta de vector associatiu"
+msgstr "%s: clau de vector associatiu no vàlida"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: no és possible assignar a un índex no-numèric"
+msgstr "%s: no es pot assignar a un índex no-numèric"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: no es pot crear: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: el primer caràcter no-blanc no és `\"'"
+msgstr "%s: el primer caràcter no-blanc no és «\"»"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
-msgstr "falta un caràcter `%c' a %s"
+msgstr "falta un caràcter de tancament «%c» a %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
-msgstr "%s: falten dos punts `:' de separació"
+msgstr "%s: falta un caràcter «:» de separació"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "expansió de claus: no es pot assignar memòria per a %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "expansió de claus: ha fallat l'assignació de memòria per a `%s'"
+msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
-msgstr "`%s': el nom de l'àlies no és valid"
+msgstr "«%s»: el nom de l'àlies no és valid"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "l'edició de línia no està habilitada"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
-msgstr "`%s': el nom del mapa de tecles no és vàlid"
+msgstr "«%s»: el nom del mapa de tecles no és vàlid"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: no es pot llegir: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': no es pot desvincular"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
-msgstr "`%s': el nom de la funció és desconegut"
+msgstr "«%s»: nom de funció desconegut"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s no està vinculat a cap tecla.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s pot ser invocat via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "«%s»: no es pot desvincular"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "nombre d'iteracions"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "només té sentit en una iteració de tipus `for', `while' o `until'"
+msgstr "només té sentit en una iteració de tipus «for», «while» o «until»"
 
 # això forma part de la descripció de caller que està a un altre lloc
 #: builtins/caller.def:136
@@ -143,243 +144,242 @@ msgid ""
 "    Without EXPR, returns "
 msgstr ""
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "la variable HOME no està definida"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "sobren arguments"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "no hi ha més directoris"
+msgstr "directori nul"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "la variable OLDPWD no està definida"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "línia %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "atenció: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: sintaxi: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: l'opció requereix un argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
-msgstr "%s: fa falta un argument numèric"
+msgstr "%s: falta un argument numèric"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: no s'ha trobat"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: l'opció no és vàlida"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: el nom de l'opció no és vàlid"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
-msgstr "`%s': no és un identificador vàlid"
+msgstr "«%s»: no és un identificador vàlid"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "nombre octal no vàlid"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "nombre hexadecimal no vàlid"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "nombre no vàlid"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
-msgstr "%s: l'especificació de senyal no és vàlida"
+msgstr "%s: especificació de senyal no vàlida"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
-msgstr "`%s': el pid o l'especificació de tasca no són vàlids"
+msgstr "«%s»: pid o especificació de feina no vàlids"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
-msgstr "%s: variable de només-lectura"
+msgstr "%s: variable de només lectura"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fora del domini"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s fora del domini"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
-msgstr "%s: no s'ha trobat la tasca"
+msgstr "%s: no existeix tal feina"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
-msgstr "%s: no hi ha control de tasques"
+msgstr "%s: no hi ha control de feines"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
-msgstr "no hi ha control de tasques"
+msgstr "no hi ha control de feines"
 
 # cd .. en un intèrpret restringit
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restringit"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restringit"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: no és una ordre interna de l'intèrpret"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "error d'escriptura: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "error en establir els atributs del terminal: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "error en obtenir els atributs del terminal: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error en obtenir el directori actual: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
-msgstr "%s: l'especificació de tasca és ambigua"
+msgstr "%s: l'especificació de feina és ambigua"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "aquesta versió no té ajuda disponible"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
-msgstr "%s: el nom de l'acció no és vàlid"
+msgstr "%s: nom d'acció no vàlid"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: no hi ha especificació de compleció"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "atenció: l'opció -F pot no funcionar com us espereu"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "atenció: l'opció -C pot no funcionar com us espereu"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "no s'està executant una funció de compleció"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "només es pot utilitzar en una funció"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr "%s: la variable referenciada no pot ser un vector"
+msgstr "%s: una variable referència no pot ser un vector"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
-msgstr "%s: no és permès que una variable s'autoreferenciï"
+msgstr "%s: no es permeten autoreferències en variables referència"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr "%s: la referència de nom és circular"
+msgstr "%s: referència circular"
 
-# buscar context
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: el nom de la variable referenciada no és vàlid"
+msgstr "«%s»: la variable referència conté un nom de variable no vàlid"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
-msgstr "no és possible usar `-f' per a fer funcions"
+msgstr "no és possible usar «-f» per convertir en funció"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
-msgstr "%s: funció de només-lectura"
+msgstr "%s: funció de només lectura"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: les assignacions compostes amb cometes estan desfasades"
+msgstr ""
+"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: no és possible destruir variables vector d'aquesta manera"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: no es pot convertir el vector associatiu en indexat"
+msgstr "%s: no és possible convertir un vector associatiu en indexat"
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
-msgstr "la càrrega dinàmica no està disponible"
+msgstr "no es poden carregar biblioteques dinàmicament"
 
 #: builtins/enable.def:343
 #, c-format
@@ -389,12 +389,12 @@ msgstr "no es pot obrir l'objecte compartit %s: %s"
 #: builtins/enable.def:369
 #, c-format
 msgid "cannot find %s in shared object %s: %s"
-msgstr "no es pot trobar %s a l'objecte compartit %s: %s"
+msgstr "no s'ha trobat %s a l'objecte compartit %s: %s"
 
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr "la càrrega de %s ha fallat (%d): no s'ha carregat"
+msgstr "l'intent de carregar %s ha fallat (%d): no carregat"
 
 #: builtins/enable.def:512
 #, c-format
@@ -406,72 +406,72 @@ msgstr "%s: no s'ha carregat dinàmicament"
 msgid "%s: cannot delete: %s"
 msgstr "%s: no es pot eliminar: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: és un directori"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: no és un fitxer ordinari"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: el fitxer és massa gran"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: no es poden executar fitxers binaris"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: no es pot executar: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
-msgstr "desconnexió\n"
+msgstr "desconnectat\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
-msgstr "no és una sessió d'entrada: utilitzeu `exit'"
+msgstr "no és una sessió d'entrada: utilitzeu «exit»"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
-msgstr "Hi ha tasques aturades.\n"
+msgstr "Hi ha feines aturades.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
-msgstr "Hi ha tasques en marxa.\n"
+msgstr "Hi ha feines en funcionament.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "no s'ha trobat cap ordre"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "especificació d'historial"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: no es pot obrir el fitxer temporal: %s"
 
-# fg  quan no hi ha cap tasca en segon pla
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+# fg  quan no hi ha cap feina en segon pla
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "actual"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
-msgstr "la tasca %d s'ha iniciat sense control de tasques"
+msgstr "la feina %d es va iniciar sense control de feines"
 
 #: builtins/getopt.c:110
 #, c-format
@@ -483,41 +483,39 @@ msgstr "%s: opció il·legal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: l'opció requereix un argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
-msgstr "hashing deshabilitat"
+msgstr "el «hashing» està deshabilitat"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
-msgstr "%s: la taula hash és buida\n"
+msgstr "%s: la taula «hash» és buida\n"
 
 # hash  (sense arguments)
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "vegades\tordre\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Ordres de l'intèrpret coincidents amb `"
-msgstr[1] "Ordres de l'intèrpret coincidents amb `"
+msgstr[0] "Ordres de l'intèrpret coincidents amb '"
+msgstr[1] "Ordres de l'intèrpret coincidents amb '"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"no hi ha ajuda sobre `%s'.  Proveu `help help', `man -k %s' o `info %s'."
+msgstr "no hi ha ajuda sobre «%s».  Proveu «help help», «man -k %s» o «info %s»."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: no es pot obrir: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -529,31 +527,29 @@ msgid ""
 "\n"
 msgstr ""
 "Aquestes ordres de l'intèrpret estan definides internament.\n"
-"Feu `help' per a veure'n una llista.  \n"
-"Feu `help nom' per a informació sobre la funció `nom'.\n"
-"Utilitzeu `info bash' per a informació sobre l'intèrpret en general.\n"
-"Utilitzeu `man -k' o bé `info' per a informació sobre ordres que no són a "
-"la\n"
-"llista.\n"
+"Feu «help» per a veure'n una llista.  \n"
+"Feu «help nom» per a obtenir informació sobre la funció «nom».\n"
+"Feu «info bash» per a obtenir informació general sobre l'intèrpret.\n"
+"Feu «man -k» o «info» per a obtenir informació sobre altres programes.\n"
 "\n"
-"Un asterisc (*) al costat d'un nom significa que l'ordre està "
-"deshabilitada.\n"
+"Un asterisc (*) significa que l'ordre està deshabilitada.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "no és possible usar més d'una opció d'entre -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posició a l'historial"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: l'argument no és vàlid"
+msgstr "%s: la marca horària no és vàlida"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: ha fallat l'expansió de l'historial"
@@ -565,18 +561,18 @@ msgstr "%s: inlib ha fallat"
 
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
-msgstr "no es permeten altres opcions amb `-x'"
+msgstr "no es permeten altres opcions amb «-x»"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
-msgstr "%s: els arguments han de ser ids de processos o tasques"
+msgstr "%s: els arguments han de ser ids de processos o feines"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Error desconegut"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "s'esperava una expressió"
 
@@ -585,72 +581,72 @@ msgstr "s'esperava una expressió"
 msgid "%s: not an indexed array"
 msgstr "%s: no és un vector indexat"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: l'especificació de descriptor de fitxer no és vàlida"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: el descriptor de fitxer no és vàlid: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: el nombre de línies no és vàlid"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: l'origen del vector no és vàlid"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: el quàntum de retorn no és vàlid"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nom de variable vector en blanc"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
-msgstr "es requereix suport per a variables vector"
+msgstr "fa falta suport per a variables vector"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
-msgstr "`%s': falta un caràcter de format"
+msgstr "«%s»: falta un caràcter de format"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
-msgstr "%c: l'especificació de format de temps no és vàlida"
+msgstr "«%c»: l'especificació de format de temps no és vàlida"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
-msgstr "`%c': el caràcter de format no és vàlid"
+msgstr "«%c»: el caràcter de format no és vàlid"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "atenció: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problema en interpretar el format: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "falta un dígit hexadecimal a \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
-msgstr "falta un dígit unicode a \\%c"
+msgstr "falta un dígit Unicode a \\%c"
 
 #: builtins/pushd.def:199
 msgid "no other directory"
@@ -661,20 +657,20 @@ msgstr "no hi ha més directoris"
 msgid "%s: invalid argument"
 msgstr "%s: l'argument no és vàlid"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<no hi ha directori actual>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "la pila de directoris està buida"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "índex de la pila de directoris"
 
-# help dirs ?? missatge similar repetit més endavant
-#: builtins/pushd.def:696
+# còpia parcial d'una altra cadena - l'original es troba més endavant
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -697,14 +693,14 @@ msgid ""
 "by\n"
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
-"Mostra la llista actual de directoris recordats.  Els directoris entren a "
-"la\n"
-"    llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n"
-"    directoris enrere amb l'ordre `popd'.\n"
+"Mostra la llista actual de directoris recordats.  Els directoris són "
+"afegits\n"
+"    a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n"
+"    directoris cap enrere amb l'ordre «popd».\n"
 "\n"
 "    Opcions:\n"
 "      -c        neteja la pila, esborrant-ne tots els elements\n"
-"      -l        no mostra les versions abreviades (prefix ~) en els\n"
+"      -l        no mostra les versions abreviades (amb el prefix ~) dels\n"
 "                directoris relatius al vostre directori personal\n"
 "      -p        mostra la pila, una entrada per línia\n"
 "      -v        mostra la pila, una entrada per línia indicant la posició a\n"
@@ -712,15 +708,15 @@ msgstr ""
 "\n"
 "    Arguments:\n"
 "      +N        Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n"
-"                llista mostrada per `dirs' quan s'invoca sense opcions, \n"
+"                llista mostrada per «dirs» quan s'invoca sense opcions, \n"
 "                començant des de zero.\n"
 "\n"
 "      -N        Mostra l'entrada N-èssima, comptant des de la dreta de la\n"
-"                llista mostrada per `dirs' quan s'invoca sense opcions,\n"
+"                llista mostrada per «dirs» quan s'invoca sense opcions,\n"
 "                començant des de zero."
 
-# help pushd ???
-#: builtins/pushd.def:718
+# còpia parcial d'una altra cadena - l'original es troba més endavant
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -744,33 +740,33 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
-"Afegeix un directori a sobre la pila de directoris, o fa girar la llista, "
-"de\n"
-"    manera que a sobre la pila hi queda el directori de treball corrent.\n"
-"    Sense arguments, intercanvia els dos directoris de més amunt.\n"
+"Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n"
+"    llista, de manera que al capdamunt de la pila hi queda el directori de\n"
+"    treball corrent.  Sense arguments, intercanvia els dos directoris de "
+"més\n"
+"    amunt.\n"
 "\n"
 "    Opcions:\n"
 "      -n        Omet el canvi de directori quan s'afegeixen directoris a la\n"
-"                pila, de manera que només canvia la pila.\n"
+"                pila, de manera que només canvia el contingut de la pila.\n"
 "\n"
 "    Arguments:\n"
 "\n"
 "      +N        Gira la llista de manera tal que l'N-èssim directori\n"
-"                (comptant des de l'esquerra de la llista que mostra `dirs',\n"
+"                (comptant des de l'esquerra de la llista que mostra «dirs»,\n"
 "                començant des de zero) queda a dalt de tot.\n"
 "\n"
 "      -N        Gira la llista de manera tal que l'N-èssim directori\n"
-"                (comptant des de la dreta de la llista que mostra `dirs',\n"
+"                (comptant des de la dreta de la llista que mostra «dirs»,\n"
 "                començant des de zero) queda a dalt de tot.\n"
 "\n"
-"      dir       Afegeix DIR a dalt de tot de la pila de directoris, i el\n"
+"      dir       Afegeix DIR al capdamunt de la pila de directoris, i el\n"
 "                converteix en el nou directori de treball corrent.\n"
 "\n"
-"    Podeu visualitzar la pila de directoris amb l'ordre `dirs'."
+"    Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»."
 
-# help popd ???
-#
-#: builtins/pushd.def:743
+# còpia parcial d'una altra cadena - l'original es troba més endavant
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -791,25 +787,25 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 "Elimina entrades de la pila de directoris.  Sense arguments, elimina el\n"
-"    directori de dalt de tot de la pila, i canvia al nou directori de dalt\n"
-"    de la pila.\n"
+"    directori al capdamunt de la pila, i canvia al nou directori de dalt de\n"
+"    la pila.\n"
 "\n"
 "    Opcions:\n"
-"      -n       Evita el canvi de directori quan s'eliminen directoris de la\n"
-"               pila, de manera que només es manipula la pila.\n"
+"      -n       Omet el canvi de directori quan s'eliminen directoris de la\n"
+"               pila, de manera que només canvia el contingut de la pila.\n"
 "\n"
 "    Arguments:\n"
 "      +N       Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n"
-"               llista que mostra `dirs', començant des de zero. \n"
-"               Per exemple: `popd +0' elimina el primer directori, i\n"
-"               `popd +1' el segon.\n"
+"               llista que mostra «dirs», començant des de zero.  Per\n"
+"               exemple: «popd +0» elimina el primer directori, i «popd +1»\n"
+"               el segon.\n"
 "\n"
 "      -N       Elimina l'entrada N-èssima, comptant des de la dreta de la\n"
-"               llista que mostra `dirs', començant des de zero. \n"
-"               Per exemple: `popd -0' elimina l'últim directori, i\n"
-"               `popd -1' el penúltim.\n"
+"               llista que mostra «dirs», començant des de zero.  Per\n"
+"               exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n"
+"               penúltim.\n"
 "\n"
-"    Podeu visualitzar la pila de directoris amb l'ordre `dirs'."
+"    Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»."
 
 # read -t -5
 #: builtins/read.def:279
@@ -817,68 +813,67 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: el límit de temps no és vàlid"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "error de lectura: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
-msgstr "només es pot fer `return' des d'una funció o script"
+msgstr "només es permet fer «return» des d'una funció o script"
 
 # unset -f -v foo
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "no és possible suprimir una funció i una variable alhora"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: no es pot suprimir"
 
 # unset UID
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
-msgstr "%s: no es pot suprimir: %s de només-lectura"
+msgstr "%s: no es pot suprimir: %s de només lectura"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: no és una variable vector"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: no és una funció"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: no es pot suprimir"
+msgstr "%s: no es pot exportar"
 
 # shift -4
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
-msgstr "nombre de shifts"
+msgstr "nombre de «shifts»"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
-msgstr ""
-"no es poden activar i desactivar opcions de l'intèrpret al mateix temps"
+msgstr "no es poden activar i desactivar opcions de forma simultània"
 
 # shopt -s foo
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: l'opció de l'intèrpret no és vàlida"
 
 # source
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "fa falta un nom de fitxer"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: no s'ha trobat el fitxer"
@@ -891,63 +886,63 @@ msgstr "no es pot suspendre"
 msgid "cannot suspend a login shell"
 msgstr "no és possible suspendre un intèrpret d'entrada"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
-msgstr "%s és un àlies de `%s'\n"
+msgstr "%s és un àlies de «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s és una paraula clau de l'intèrpret\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s és una funció\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s és una ordre interna\n"
+msgstr "%s és una ordre interna especial\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s és una ordre interna\n"
 
 # type dmesg
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s és %s\n"
 
 # hash cp; type cp
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
-msgstr "%s és a la taula hash (%s)\n"
+msgstr "%s és a la taula «hash» (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: el límit no és vàlid"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
-msgstr "`%c': ordre errònia"
+msgstr "«%c»: ordre errònia"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: no es pot obtenir el límit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "límit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: no es pot modificar el límit: %s"
@@ -960,420 +955,431 @@ msgstr "nombre octal"
 #: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
-msgstr "`%c': l'operador del mode simbòlic no és vàlid"
+msgstr "«%c»: l'operador de mode simbòlic no és vàlid"
 
 # umask u=rwz
 #: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
-msgstr "`%c': el mode simbòlic conté caràcters no vàlids"
+msgstr "«%c»: el mode simbòlic conté caràcters no vàlids"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " línia "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "última ordre: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Avortant..."
 
 # prefix afegit als avisos infomatius interns (internal_inform)
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORMACIÓ: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "error no identificat"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "tipus d'ordre erroni"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "connector erroni"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "salt erroni"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variable no definida"
 
 # SIGALRM
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n"
 
 # error intern
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s"
 
 # error intern
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: `%c': el caràcter de format no és vàlid"
+msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: el coprocés [%d:%s] encara existeix"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
-msgstr "error de canalització"
+msgstr "error de canonada"
 
-#: execute_cmd.c:4496
-#, fuzzy, c-format
+#: execute_cmd.c:4671
+#, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)"
+msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
 
-#: execute_cmd.c:4508
-#, fuzzy, c-format
+#: execute_cmd.c:4683
+#, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)"
+msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)"
+msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: restricció: no podeu especificar `/' en noms d'ordres"
+msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: no s'ha trobat l'ordre"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: intèrpret erroni"
 
 # error intern
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: no es pot executar el fitxer binari: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
-msgstr "`%s': és una ordre interna especial"
+msgstr "«%s»: és una ordre interna especial"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "no s'ha pogut duplicar l'fd %d com a fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
-msgstr "s'ha excedit el nivell de recursió d'expressions"
+msgstr "excedit el nivell màxim de recursivitat per a expressions"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
-msgstr "underflow a la pila de recursió"
+msgstr "«underflow» a la pila de recursivitat"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "error de sintaxi a l'expressió"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "intent d'assignació a una no-variable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "error de sintaxi a l'expressió"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "divisió per 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
-msgstr "bug: el component expassign és erroni"
+msgstr "bug: el component «expassign» és erroni"
 
 # echo $((4 > 5 ? 0))
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
-msgstr "falta un `:' a l'expressió condicional"
+msgstr "falta un caràcter «:» a l'expressió condicional"
 
 # echo $((4 ** -1))
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponent menor que 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "s'esperava un identificador després del preincrement o predecrement"
+msgstr "fa falta un identificador després del pre-increment o pre-decrement"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
-msgstr "falta un `)'"
+msgstr "falta un caràcter «)»"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "error de sintaxi: s'esperava un operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "error de sintaxi: l'operador aritmètic no és vàlid"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (l'element erroni és \"%s\")"
+msgstr "%s%s%s: %s (l'element erroni és «%s»)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "la base aritmètica no és vàlida"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "el valor de la base és massa gran"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: expressió errònia\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: els directoris superiors són inaccessibles"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
-msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d"
+msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "error en crear un fd nou a partir de l'fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: ja existia un buffer per al nou fd %d"
+msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
-msgstr "start_pipeline: pgrp de la canalització"
+msgstr "start_pipeline: pgrp de la canonada"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
-msgstr "el pid bifurcat %d apareix a la tasca en execució %d"
+msgstr "el pid bifurcat %d apareix a la feina en execució %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
-msgstr "s'elimina la tasca aturada %d amb grup de procés %ld"
+msgstr "s'elimina la feina aturada %d amb grup de procés %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: procés %5ld (%s) a the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: el pid %5ld (%s) està marcat com a encara actiu"
+msgstr "add_process: el pid %5ld (%s) està marcat com a viu"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no existeix tal pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Senyal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Fet"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Aturat"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Aturat(%s)"
 
-#: jobs.c:1632
+# ha de tenir menys de 10 caràcters o no queda alineat
+#: jobs.c:1681
 msgid "Running"
-msgstr "Executant-se"
+msgstr "Funcionant"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Fet(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Sortida %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Estat desconegut"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(s'ha bolcat la memòria)"
 
 # wd = working directory
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (dt: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid (de %ld a %ld) per al procés inferior"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: el pid %ld no és un fill d'aquest intèrpret"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No es té constància del procés %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: la tasca %d està aturada"
+msgstr "wait_for_job: la feina %d està aturada"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
-msgstr "%s: la tasca ha acabat"
+msgstr "%s: la feina ha acabat"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
-msgstr "%s: la tasca %d ja es troba en segon pla"
+msgstr "%s: la feina %d ja es troba en segon pla"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr "waitchld: s'activa el WNOHANG per a evitar un bloqueig indefinit"
+msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s línia %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (s'ha bolcat la memòria)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(dt ara: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp ha fallat"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: disciplina de línia"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: disciplina de línia"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "no s'ha pogut establir el grup de procés del terminal (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
-msgstr "aquesta sessió no té control de tasques"
+msgstr "aquesta sessió no té control de feines"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: asserció fallida: %s\n"
 
 # error intern i el \r provoca warnings
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "desconegut"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloc abatussat a la llista de disponibles"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: cridat amb un argument de bloc ja alliberat"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: cridat amb un argument bloc no assignat"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underflow detectat; mh_nbytes fora del domini"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: les mides inicial i final del fragment difereixen"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: cridat amb un argument de bloc no assignat"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underflow detectat: mh_nbytes fora del domini"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: les mides inicial i final del fragment difereixen"
 
 #: lib/malloc/table.c:191
 #, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: la taula alloc està plena amb FIND_ALLOC?\n"
+msgstr "register_alloc: la taula «alloc» està plena de «FIND_ALLOC»?\n"
 
 #: lib/malloc/table.c:200
 #, c-format
@@ -1408,22 +1414,22 @@ msgstr "%s: la ubicació remota no és vàlida"
 msgid "network operations not supported"
 msgstr "les operacions de xarxa no estan suportades"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s"
@@ -1439,163 +1445,166 @@ msgstr "Teniu correu nou a $_"
 #: mailcheck.c:480
 #, c-format
 msgid "The mail in %s has been read\n"
-msgstr "El correu de %s s'ha llegit\n"
+msgstr "El correu a %s ha estat llegit\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "error de sintaxi: fa falta una expressió aritmètica"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
-msgstr "error de sintaxi: `;' inesperat"
+msgstr "error de sintaxi: «;» inesperat"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
-msgstr "error de sintaxi: `((%s))'"
+msgstr "error de sintaxi: «((%s))»"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipus d'instrucció erroni %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "document literal a la línia %d delimitat per EOF (volia `%s')"
+msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: instrucció de redirecció `%d' fora del domini"
+msgstr "make_redirection: instrucció de redirecció «%d» fora del domini"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia "
+"truncada"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr "s'ha excedit el nombre màxim de documents literals"
+msgstr "excedit el nombre màxim de documents literals"
 
 # "echo $(echo" en un script
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
-msgstr "EOF inesperat mentre es cercava un `%c'"
+msgstr "EOF inesperat mentre es cercava «%c»"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
-msgstr "EOF inesperat mentre es cercava `]]'"
+msgstr "EOF inesperat mentre es cercava «]]»"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "error de sintaxi a l'expressió condicional: element `%s' inesperat"
+msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "error de sintaxi a l'expressió condicional"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
-msgstr "element `%s' inesperat, s'esperava `)'"
+msgstr "element «%s» inesperat, s'esperava «)»"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
-msgstr "s'esperava `)'"
+msgstr "s'esperava «)»"
 
-#: parse.y:4529
+# [[ -d ]]
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "argument `%s' inesperat a l'operador unari condicional"
+msgstr "argument «%s» inesperat a un operador unari condicional"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
-msgstr "argument inesperat a l'operador unari condicional"
+msgstr "argument inesperat a un operador unari condicional"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "element `%s' inesperat, s'esperava un operador binari condicional"
+msgstr "element «%s» inesperat, s'esperava un operador binari condicional"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "s'esperava un operador binari condicional"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "argument inesperat `%s' a un operador binari condicional"
+msgstr "argument inesperat «%s» a un operador binari condicional"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argument inesperat a un operador binari condicional"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
-msgstr "element `%c' inesperat en una ordre condicional"
+msgstr "element «%c» inesperat en una ordre condicional"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
-msgstr "element `%s' inesperat en una ordre condicional"
+msgstr "element «%s» inesperat en una ordre condicional"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
-msgstr "element `%d' inesperat en una ordre condicional"
+msgstr "element %d inesperat en una ordre condicional"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
-msgstr "error de sintaxi a prop de l'element inesperat `%s'"
+msgstr "error de sintaxi a prop de l'element inesperat «%s»"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
-msgstr "error de sintaxi a prop de `%s'"
+msgstr "error de sintaxi a prop de «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "error de sintaxi: final de fitxer inesperat"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "error de sintaxi"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Useu \"%s\" per a deixar l'intèrpret.\n"
+msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
-msgstr "EOF inesperat mentre es buscava un `)'"
+msgstr "EOF inesperat mentre es cercava un «)»"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr "completion: la funció `%s' no s'ha trobat"
+msgstr "completion: la funció «%s» no s'ha trobat"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: possible reintent cíclic"
 
 #: pcomplib.c:182
 #, c-format
 msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s: el paràmetre COMPSPEC és NUL"
+msgstr "progcomp_insert: %s: el paràmetre «COMPSPEC» és NUL"
 
 #: print_cmd.c:302
 #, c-format
 msgid "print_command: bad connector `%d'"
-msgstr "print_command: el connector `%d' és erroni"
+msgstr "print_command: el connector «%d» és erroni"
 
 #: print_cmd.c:375
 #, c-format
@@ -1611,144 +1620,148 @@ msgstr "xtrace_set: el punter de fitxer és NUL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: `%c': el caràcter de format no és vàlid"
+msgstr "cprintf: «%c»: el caràcter de format no és vàlid"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descriptor de fitxer fora del domini"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redirecció ambigua"
 
 # opció noclobber
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: no es pot escriure sobre un fitxer existent"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricció: no podeu redirigir la sortida"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: no és possible assignar un fd a una variable"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "error de redirecció: no es pot duplicar l'fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
-msgstr "no s'ha trobat el directori /tmp, sisplau creeu-lo!"
+msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp ha de ser un nom de directori vàlid"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: l'opció no és vàlida"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d"
+msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d"
+msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "no es pot iniciar el depurador; mode de depuració desactivat"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
-msgstr "%s: Ã©s un directori"
+msgstr "%s: Ã\89s un directori"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "No teniu nom!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versió %s-(%s)\n"
 
 #
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 msgstr ""
-"Sintaxi:\t%s [opció GNU llarga] [opció] ...\n"
-"\t\t%s [opció GNU llarga] [opció] fitxer-script ...\n"
+"Sintaxi:  %s [opció GNU llarga] [opció] ...\n"
+"          %s [opció GNU llarga] [opció] fitxer-script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Opcions GNU llargues:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opcions de l'intèrpret:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s, o bé -o opció\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
-"Feu `%s -c \"help set\"' per a informació sobre les opcions de l'intèrpret.\n"
+"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Feu `%s -c help' per a obtenir informació sobre les ordres internes.\n"
+msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Feu servir l'ordre `bashbug' per a comunicar `bugs'.\n"
+msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "pàgina web de bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "Ajuda general per a programari GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: l'operació no és vàlida"
@@ -1780,11 +1793,11 @@ msgstr "Traçat/trampa BPT"
 
 #: siglist.c:75
 msgid "ABORT instruction"
-msgstr "Instrucció ABORT"
+msgstr "Instrucció «ABORT»"
 
 #: siglist.c:79
 msgid "EMT instruction"
-msgstr "Instrucció EMT"
+msgstr "Instrucció «EMT»"
 
 #: siglist.c:83
 msgid "Floating point exception"
@@ -1808,11 +1821,11 @@ msgstr "Crida de sistema errònia"
 
 #: siglist.c:103
 msgid "Broken pipe"
-msgstr "Canalització trencada"
+msgstr "Canonada trencada"
 
 #: siglist.c:107
 msgid "Alarm clock"
-msgstr "Alarma de rellotge"
+msgstr "Alarma"
 
 #: siglist.c:111
 msgid "Terminated"
@@ -1864,7 +1877,7 @@ msgstr "Alarma (perfil)"
 
 #: siglist.c:167
 msgid "Window changed"
-msgstr "Variació de la finestra"
+msgstr "Canvi de finestra"
 
 #: siglist.c:171
 msgid "Record lock"
@@ -1880,7 +1893,7 @@ msgstr "Senyal d'usuari 2"
 
 #: siglist.c:183
 msgid "HFT input data pending"
-msgstr "Dades d'entrada HFT pendents"
+msgstr "Dades HFT d'entrada pendents"
 
 #: siglist.c:187
 msgid "power failure imminent"
@@ -1924,105 +1937,109 @@ msgid "Unknown Signal #%d"
 msgstr "Senyal Desconegut #%d"
 
 # missatge similar a subst.c:75XX
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
-msgstr "substitució errònia: falta un `%s' a %s"
+msgstr "substitució errònia: falta un «%s» a %s"
 
 # foo[1]=(1 2 3)
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: no és possible assignar llistes a l'element d'un vector"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
-msgstr "no s'ha pogut crear la canalització per a la substitució de procés"
+msgstr "no s'ha pogut crear la canonada per a la substitució de procés"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "no s'ha pogut crear el fill per a la substitució de procés"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
-msgstr "no s'ha pogut obrir la canalització %s amb permís de lectura"
+msgstr "no s'ha pogut obrir la canonada %s per a lectura"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
-msgstr "no s'ha pogut obrir la canalització %s per a escriure-hi"
+msgstr "no s'ha pogut obrir la canonada %s per a escriptura"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "no s'ha pogut duplicar la canalització %s com a fd %d"
+msgstr "no s'ha pogut duplicar la canonada %s com a fd %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "subtitució errònia: no hi ha \"`\" final a %s"
+msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
-msgstr "no s'ha pogut crear la canalització per a la substitució d'ordre"
+msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "no s'ha pogut crear un fill per a la substitució d'ordre"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: no s'ha pogut duplicar la canalització com a fd 1"
+msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1"
 
 # buscar context
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: el nom de la variable referenciada no és vàlid"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: substitució errònia"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: el nombre de línies no és vàlid"
+msgstr "%s: expansió indirecta no vàlida"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "`%s': el nom de l'àlies no és valid"
+msgstr "%s: nom de variable no vàlid"
+
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: paràmetre nul o no definit"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: paràmetre nul o no definit"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expressió de subcadena < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: substitució errònia"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: no és possible assignar d'aquesta manera"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
-msgstr "en futures versions s'evaluarà com a substitució aritmètica"
+msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
-msgstr "subtitució errònia: no hi ha \"`\" final a %s"
+msgstr "subtitució errònia: falta un caràcter «`» final a %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "cap coincidència: %s"
@@ -2038,131 +2055,136 @@ msgstr "%s: s'esperava una expressió amb enters"
 
 #: test.c:265
 msgid "`)' expected"
-msgstr "s'esperava `)'"
+msgstr "s'esperava «)»"
 
 #: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
-msgstr "s'esperava `)', trobat %s"
+msgstr "s'esperava «)», s'ha trobat %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: s'esperava un operador unari"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: s'esperava un operador binari"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
-msgstr "falta un `]'"
+msgstr "falta un «]»"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
-msgstr "el nombre de senyal no és vàlid"
+msgstr "el número de senyal no és vàlid"
+
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
 
 # internal warning
-#: trap.c:387
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
+msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p"
 
 # internal warning
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: senyal erroni %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
-msgstr "error en importar la definició de funció de `%s'"
+msgstr "error en importar la definició de funció de «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1"
 
 # error intern
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: no és possible assignar un valor a la variable"
 
 # buscar context
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: el nom de la variable referenciada no és vàlid"
+msgstr "%s: assignació numèrica a una variable referència"
 
 # error intern
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
-msgstr "%s: el paràmetre exportstr és nul"
+msgstr "el paràmetre «exportstr» de la variable %s és nul"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
-msgstr "el caràcter %d en el paràmetre exportstr de %s no és vàlid"
+msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
-msgstr "falta un `=' en el paràmetre exportstr de %s"
+msgstr "falta un «=» en el paràmetre «exportstr» de %s"
 
 # error intern
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
 # error intern
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 
 # error intern
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
 # error intern
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: no s'ha pogut obrir com a FITXER"
 
 # error intern
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: el valor de compatibilitat és fora del domini"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2170,7 +2192,7 @@ msgid ""
 "html>\n"
 msgstr ""
 "Llicència GPLv3+: GNU GPL versió 3 o posterior\n"
-" <http://gnu.org/licenses/gpl.html>\n"
+"  <http://gnu.org/licenses/gpl.html>\n"
 
 #: version.c:86 version2.c:86
 #, c-format
@@ -2184,24 +2206,24 @@ msgstr ""
 
 #: version.c:92 version2.c:92
 msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr "No hi ha CAP GARANTIA, fins a l'extrem permès per la llei."
+msgstr "No  CAP GARANTIA, fins a l'extrem permès per la llei."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: no s'han pogut assignar %lu octets (%lu octets assignats)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: no s'han pogut assignar %lu octets"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: no s'han pogut assignar %lu octets (%lu octets assignats)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: no s'han pogut assignar %lu octets"
@@ -2258,9 +2280,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] nom[=valor] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2304,11 +2325,11 @@ msgstr "fc [-e editor] [-lnr] [primer] [últim] o fc -s [pat=sub] [ordre]"
 
 #: builtins.c:109
 msgid "fg [job_spec]"
-msgstr "fg [tasca]"
+msgstr "fg [feina]"
 
 #: builtins.c:113
 msgid "bg [job_spec ...]"
-msgstr "bg [tasca ...]"
+msgstr "bg [feina ...]"
 
 #: builtins.c:116
 msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
@@ -2328,19 +2349,18 @@ msgstr ""
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [tasca ...] o jobs -x ordre [args]"
+msgstr "jobs [-lnprs] [feina ...] o jobs -x ordre [args]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [tasca ...]"
+msgstr "disown [-h] [-ar] [feina ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
-"kill [-s senyal | -n númsenyal | -senyal] pid | tasca ... o kill -l [senyal]"
+"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]"
 
 #: builtins.c:136
 msgid "let arg [arg ...]"
@@ -2407,16 +2427,16 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] nom [nom ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [límit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2437,7 +2457,7 @@ msgstr "select NOM [in PARAULES ... ;] do ORDRES; done"
 
 #: builtins.c:190
 msgid "time [-p] pipeline"
-msgstr "time [-p] canalització"
+msgstr "time [-p] canonada"
 
 #: builtins.c:192
 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
@@ -2472,7 +2492,7 @@ msgstr "{ ORDRES ; }"
 
 #: builtins.c:206
 msgid "job_spec [&]"
-msgstr "tasca [&]"
+msgstr "feina [&]"
 
 #: builtins.c:208
 msgid "(( expression ))"
@@ -2484,7 +2504,7 @@ msgstr "[[ expressió ]]"
 
 #: builtins.c:212
 msgid "variables - Names and meanings of some shell variables"
-msgstr "variables - Noms i significat d'algunes variables de l'intèrpret"
+msgstr "variables - Nom i significat d'algunes variables de l'intèrpret"
 
 #: builtins.c:215
 msgid "pushd [-n] [+N | -N | dir]"
@@ -2507,8 +2527,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] format [arguments]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2516,37 +2537,36 @@ msgstr ""
 "llista]  [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
-"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W llista] [-F "
-"funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]"
+"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n"
+"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o opció] [-DE] [nom ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c "
-"quàntum] [vector]"
+"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C "
+"callback] [-c quàntum] [vector]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c "
 "quàntum] [vector]"
 
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2567,23 +2587,21 @@ msgid ""
 msgstr ""
 "Defineix o mostra àlies.\n"
 "\n"
-"    Sense arguments, `alias' mostra la llista d'àlies definits, en forma de\n"
-"    `alias NOM=VALOR' a la sortida estàndard.\n"
+"    Sense arguments «alias» mostra la llista d'àlies definits, en format\n"
+"    «alias NOM=VALOR», a la sortida estàndard.\n"
 "\n"
 "    Altrament, defineix un àlies per a cada NOM per al qual existeix un\n"
 "    VALOR.  Un espai al final de VALOR fa que la paraula següent sigui\n"
-"    susceptible de ser substituïda per un àlies quan s'expandeix l'àlies.\n"
+"    susceptible de ser substituïda per un àlies quan s'expandeix aquest\n"
+"    àlies.\n"
 "\n"
 "    Opcions:\n"
-"      -p        Mostra tots els àlies definits en un format reutilitzable\n"
+"      -p        Mostra tots els àlies definits en format reutilitzable\n"
 "\n"
 "    Estat de sortida:\n"
-"    alias torna cert, excepte si heu proporcionat un NOM per al qual no "
-"s'ha\n"
-"    definit cap àlies."
+"    alias torna cert, excepte si NOM no correspon a cap àlies definit."
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2592,15 +2610,14 @@ msgid ""
 "    \n"
 "    Return success unless a NAME is not an existing alias."
 msgstr ""
-"Esborra cada NOM de la llista d'àlies definits.\n"
+"Esborra tots els NOMs de la llista d'àlies definits.\n"
 "\n"
 "    Opcions:\n"
 "      -a        esborra totes les definicions d'àlies.\n"
 "\n"
-"    Retorna èxit excepte si NOM no és un àlies existent."
+"    Torna cert, excepte si NOM no és un àlies existent."
 
 #: builtins.c:291
-#, fuzzy
 msgid ""
 "Set Readline key bindings and variables.\n"
 "    \n"
@@ -2641,16 +2658,15 @@ msgid ""
 "    Exit Status:\n"
 "    bind returns 0 unless an unrecognized option is given or an error occurs."
 msgstr ""
-"Defineix vincles de tecla i variables Readline.\n"
+"Estableix vincles de tecla i variables Readline.\n"
 "\n"
 "    Vincula una seqüència de tecles a una funció o macro Readline, o bé\n"
-"    defineix una variable Readline.  La sintaxi dels arguments no-opcions "
-"és\n"
-"    la mateixa que la del fixer ~/.inputrc, però s'ha de passar com a un\n"
+"    estableix una variable Readline.  La sintaxi dels arguments no-opcions\n"
+"    és la mateixa que en el fitxer ~/.inputrc, però ha de consistir en un\n"
 "    únic argument: per exemple, bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
 "\n"
 "    Opcions:\n"
-"      -m mapa     Usa `mapa' com a mapa de tecles mentre duri aquesta\n"
+"      -m mapa     Usa MAPA com a mapa de tecles mentre duri aquesta\n"
 "                  ordre.  Els noms de mapes acceptables són emacs, emacs-\n"
 "                  standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-"
 "command,\n"
@@ -2660,24 +2676,22 @@ msgstr ""
 "      -p          Mostra les funcions i els vincles en un format que es pot\n"
 "                  reutilitzar com a entrada.\n"
 "      -S          Mostra les seqüències de tecles que invoquen macros i els\n"
-"                  seus respectius valors.\n"
+"                  seus valors respectius.\n"
 "      -s          Mostra les seqüències de tecles que invoquen macros i els\n"
-"                  seus respectius valors en un format que es pot "
+"                  seus valors respectius en un format que es pot "
 "reutilitzar\n"
 "                  com a entrada.\n"
 "      -V          Mostra els noms de les variables i els seus valors.\n"
 "      -v          Mostra els noms de les variables i els seus respectius\n"
 "                  valors en un format que es pot reutilitzar com a entrada.\n"
-"      -q nom      Consulta quines tecles invoquen la funció especificada.\n"
-"      -u nom      Desvincula les tecles vinculades a la funció "
+"      -q funció   Consulta quines tecles invoquen la funció especificada.\n"
+"      -u funció   Desvincula les tecles vinculades a la funció "
 "especificada.\n"
-"      -r tecles   Elimina els vincles associats a TECLES.\n"
-"      -f fitxer   Llegeix els vincles de tecla desats a FITXER.\n"
+"      -r tecles   Elimina el vincle associat a TECLES.\n"
+"      -f fitxer   Obté els vincles de tecles de FITXER.\n"
 "      -x tecles:ordre     Fa que s'executi ORDRE quan es prem TECLES.\n"
-"      -X          Mostra les seqüències de tecla vinculades amb l'opció -x "
-"i\n"
-"                  les ordres associades, en un format reutilitzable com a\n"
-"                  entrada.\n"
+"      -X          Mostra les tecles amb les respectives ordres vinculades\n"
+"                  amb l'opció -x, en un format reutilitzable com a entrada.\n"
 "\n"
 "    Estat de sortida:\n"
 "    bind torna 0 excepte si passeu una opció no reconeguda o es produeix\n"
@@ -2722,6 +2736,7 @@ msgstr ""
 "    L'estat de sortida és 0 excepte si N és més petit que 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2732,7 +2747,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Executa ordres internes.\n"
 "\n"
@@ -2764,19 +2779,18 @@ msgid ""
 msgstr ""
 "Retorna el context de la subrutina actual.\n"
 "\n"
-"    Sense EXPR, torna \"$linia $nomfitxer\".  Amb EXPR, torna \"$linia\n"
+"    Sense EXPR, torna \"$línia $nomfitxer\".  Amb EXPR, torna \"$línia\n"
 "    $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n"
 "    per a proporcionar un traçat de la pila.\n"
 "\n"
-"    El valor de EXPR indica quants frames retrocedir des de l'actual; el\n"
-"    frame superior és el 0.\n"
+"    El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n"
+"    «frame» superior és el 0.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n"
 "    no és una expressió vàlida."
 
 #: builtins.c:387
-#, fuzzy
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
@@ -2827,38 +2841,38 @@ msgstr ""
 "\n"
 "    La variable CDPATH defineix els camins de cerca per al directori que\n"
 "    conté DIR.  Es poden especificar camins alternatius separats per dos\n"
-"    punts (:).  Un nom de directori nul és el mateix que el directori\n"
-"    actual.  Si DIR comença amb una barra, aleshores no s'usa CDPATH.  Si "
-"no\n"
-"    es troba el directori, i l'opció de l'intèrpret `cdable_vars' està\n"
-"    activada, llavors s'interpreta la paraula com un nom de variable.  Si "
-"la\n"
-"    variable especificada té algun valor, llavors aquest valor s'usa en "
-"lloc\n"
+"    punts (:).  Un nom de directori nul s'interpreta com al directori\n"
+"    actual.  Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n"
+"\n"
+"    Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n"
+"    activada, aleshores la paraula s'interpreta com a un nom de variable.\n"
+"    Si la variable especificada té algun valor, aquest valor s'usa en lloc\n"
 "    de DIR.\n"
 "\n"
 "    Opcions:\n"
-"        -L      obliga a seguir els enllaços simbòlics: resol els enllaços\n"
-"                simbòlics que conté DIR després de processar `..'\n"
-"        -P      usa l'estructura de directoris física i no segueix els\n"
-"                possibles enllaços simbòlics: resol els enllaços simbòlics\n"
-"                que conté DIR abans de processar `..'\n"
-"        -e      amb l'opció -P, si el directori de treball actual no es pot\n"
-"                determinar amb èxit, surt amb un estat diferent de zero\n"
-"        -@      en sistemes que ho suporten, presenta un fitxer amb "
-"atributs\n"
-"                estesos com un directori que conté els atributs del fitxer\n"
-"\n"
-"    Per defecte, se segueixen els enllaços simbòlics, com si s'especifiqués\n"
-"    l'opció `-L'.  `..' es processa eliminant el component del camí\n"
-"    immediatament previ fins a la primera barra o fins al principi de DIR.\n"
+"        -L      força el seguiment d'enllaços simbòlics: resol els enllaços\n"
+"                simbòlics que conté DIR després de processar «..»\n"
+"        -P      usa l'estructura de directoris física sense seguir "
+"possibles\n"
+"                enllaços simbòlics: resol els enllaços simbòlics que conté\n"
+"                DIR abans de processar «..»\n"
+"        -e      amb l'opció -P, si no es pot determinar el directori de\n"
+"                treball actual amb èxit, surt amb un estat diferent de zero\n"
+"        -@      en sistemes que ho suporten, presenta fitxers amb atributs\n"
+"                estesos com a directoris que contenen els atributs del\n"
+"                fitxer\n"
+"\n"
+"    Per defecte, se segueixen els enllaços simbòlics, com si "
+"especifiquéssiu\n"
+"    l'opció «-L».  El component «..» es processa eliminant el component del\n"
+"    camí immediatament previ fins a la primera barra o fins al principi de\n"
+"    DIR.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna 0 si s'ha canviat de directori, i si $PWD s'ha establert de forma\n"
 "    satisfactòria quan s'utilitza -P; altrament un valor diferent de zero."
 
 #: builtins.c:425
-#, fuzzy
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -2880,7 +2894,7 @@ msgstr ""
 "                treball actual\n"
 "      -P        mostra el directori físic, sense cap enllaç simbòlic\n"
 "\n"
-"    Per defecte, `pwd' es comporta com si haguéssiu especificat `-L'.\n"
+"    Per defecte, «pwd» es comporta com si haguéssiu especificat «-L».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna 0 excepte si heu especificat una opció no vàlida o no es pot\n"
@@ -2927,7 +2941,6 @@ msgstr ""
 "    Sempre falla."
 
 #: builtins.c:471
-#, fuzzy
 msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
@@ -2949,14 +2962,14 @@ msgstr ""
 "\n"
 "    Executa ORDRE amb ARGS sense cercar funcions de l'intèrpret amb aquest\n"
 "    nom, o bé mostra informació sobre l'ORDRE especificada.  Es pot\n"
-"    utilitzar per a invocar ordres des del disc, quan existeix una funció\n"
+"    utilitzar per a invocar programes en el disc, quan existeix una funció\n"
 "    amb el mateix nom.\n"
 "\n"
 "    Opcions:\n"
 "      -p        usa el valor per defecte de la variable PATH que garanteix\n"
 "                trobar totes les utilitats estàndards\n"
 "      -v        mostra una descripció de l'ORDRE similar a la que mostra\n"
-"                l'ordre `type'\n"
+"                l'ordre «type»\n"
 "      -V        mostra una descripció més detallada per a cada ORDRE\n"
 "\n"
 "    Estat de sortida:\n"
@@ -2983,11 +2996,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3012,33 +3025,35 @@ msgstr ""
 "      -f        només té en compte noms i definicions de funcions\n"
 "      -F        només mostra noms de funcions (a part del número de línia i\n"
 "                el nom del fitxer, en mode de depuració)\n"
+"      -g        crea variables globals quan s'utilitza dins d'una funció,\n"
+"                altrament s'ignora\n"
 "      -p        mostra els atributs i el valor de cada NOM\n"
 "\n"
 "    Opcions que estableixen atributs:\n"
 "      -a        per a fer NOMs vectors indexats (si estan suportats)\n"
 "      -A        per a fer NOMs vectors associatius (si estan suportats)\n"
-"      -i        per a assignar l'atribut `nombre enter' a NOMs\n"
-"      -l        per a passar NOMs a minúscules en l'assignació\n"
-"      -r        per a fer NOMs de només-lectura\n"
-"      -t        per a assignar l'atribut `traça' a NOMs\n"
-"      -u        per a passar NOMs a majúscules en l'assignació\n"
+"      -i        per a assignar l'atribut de nombre enter a NOMs\n"
+"      -l        per a convertir NOMs a minúscules en l'assignació\n"
+"      -n        per a fer NOM una referència a la variable que té per nom\n"
+"                el seu valor\n"
+"      -r        per a fer NOMs variables de només lectura\n"
+"      -t        per a assignar l'atribut «traça» a NOMs\n"
+"      -u        per a convertir NOMs a majúscules en l'assignació\n"
 "      -x        per a exportar NOMs\n"
 "\n"
-"    Si feu servir `+' en lloc de `-', elimina l'atribut.\n"
+"    Si feu servir «+» en lloc de «-», elimina l'atribut.\n"
 "\n"
-"    Les variables que tenen l'atribut `nombre enter' s'avaluen\n"
-"    aritmèticament (vegeu l'ordre `let') quan s'assigna un valor a la\n"
+"    Les variables que tenen l'atribut de nombre enter s'avaluen\n"
+"    aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n"
 "    variable.\n"
 "\n"
-"    Quan s'usa en una funció, `declare' converteix NOMs en variables "
-"locals,\n"
-"    igual que l'ordre `local'.\n"
+"    Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n"
+"    igual que l'ordre «local».  L'opció «-g» inhabilita aquest comportament.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit, excepte si rep una opció invàlida o es produeix un error."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3046,7 +3061,7 @@ msgid ""
 msgstr ""
 "Assigna valors i atributs a variables.\n"
 "\n"
-"    Obsolet.  Vegeu `help declare'."
+"    Sinònim de «declare».  Vegeu «help declare»."
 
 # help local
 #: builtins.c:538
@@ -3067,7 +3082,7 @@ msgstr ""
 "\n"
 "    Crea una variable local anomenada NOM i li assigna VALOR.  OPCIÓ pot "
 "ser\n"
-"    qualsevol opció que `declare' admeti.\n"
+"    qualsevol opció que «declare» admeti.\n"
 "\n"
 "    Les variables locals només es poden utilitzar dins d'una funció; només\n"
 "    són visibles a dins de la funció on són definides i dins de les "
@@ -3108,6 +3123,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3122,8 +3143,7 @@ msgstr ""
 "       -e       activa la interpretació de seqüències d'escapada\n"
 "       -E       desactiva la interpretació de seqüències d'escapada\n"
 "\n"
-"    `echo' interpreta els següents caràcters escapats per una barra "
-"inversa:\n"
+"    «echo» interpreta els següents caràcters escapats amb una barra inversa:\n"
 "       \\a       alerta (campana)\n"
 "       \\b       retrocés\n"
 "       \\c       suprimeix tota sortida ulterior\n"
@@ -3144,7 +3164,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Torna èxit, tret que es produeixi un error d'escriptura."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3167,7 +3187,7 @@ msgstr ""
 "    Torna èxit, tret que es produeixi un error d'escriptura."
 
 # help enable
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3207,7 +3227,7 @@ msgstr ""
 "internes\n"
 "                que es troben inhabilitades\n"
 "      -p        mostra la llista en format reutilitzable\n"
-"      -s        mostra només les ordres internes `especials' Posix\n"
+"      -s        mostra només les ordres internes «especials» Posix\n"
 "\n"
 "    Opcions per a controlar l'enllaçat dinàmic:\n"
 "      -f        carrega l'ordre interna NOM, de l'objecte compartit FITXER\n"
@@ -3215,13 +3235,13 @@ msgstr ""
 "\n"
 "    Sense opcions, habilita cada un dels NOMs.\n"
 "\n"
-"    Per a utilitzar el `test' que es troba al $PATH en lloc de la versió\n"
-"    interna de l'intèrpret, feu `enable -n test'.\n"
+"    Per a utilitzar el «test» que es troba al $PATH en lloc de la versió\n"
+"    interna de l'intèrpret, feu «enable -n test».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit, excepte si NOM no és una ordre interna o té lloc un error."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3234,13 +3254,14 @@ msgid ""
 msgstr ""
 "Executa els arguments com una ordre.\n"
 "\n"
-"    Combina els ARGs en una única cadena, utilitza el resultat com a input\n"
-"    per a l'intèrpret, i executa les ordres resultants.\n"
+"    Combina ARGs en una única cadena, utilitza el resultat com a entrada "
+"per\n"
+"    a l'intèrpret i executa les ordres resultants.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3280,10 +3301,10 @@ msgid ""
 "    Returns success if an option is found; fails if the end of options is\n"
 "    encountered or an error occurs."
 msgstr ""
-"Interpreta arguments d'opcions.\n"
+"Interpreta arguments que representen opcions.\n"
 "\n"
-"    getopts l'utilitzen els procediments de l'intèrpret per a interpretar\n"
-"    els paràmetres posicionals com a opcions.\n"
+"    getopts és utilitzat per les utilitats de bash per a interpretar els\n"
+"    paràmetres posicionals com a opcions.\n"
 "\n"
 "    CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n"
 "    seguida de dos punts, l'opció requereix un argument, que s'ha de "
@@ -3322,8 +3343,7 @@ msgstr ""
 "les\n"
 "    opcions o si es produeix un error."
 
-#: builtins.c:688
-#, fuzzy
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3345,7 +3365,7 @@ msgid ""
 "    Returns success unless COMMAND is not found or a redirection error "
 "occurs."
 msgstr ""
-"Substitueix l'intèrpret per l'ordre especificada.\n"
+"Substitueix el procés de l'intèrpret per l'ordre especificada.\n"
 "\n"
 "    Executa ORDRE, substituint aquest intèrpret pel programa especificat.\n"
 "    Es passen ARGUMENTS a l'ORDRE com a arguments.  Si no especifiqueu cap\n"
@@ -3354,17 +3374,17 @@ msgstr ""
 "    Opcions:\n"
 "      -a nom    passa NOM a ORDRE com a argument número zero\n"
 "      -c        executa ORDRE en un entorn buit\n"
-"      -t        passa un guionet (-) a ORDRE com a argument número zero\n"
+"      -t        passa un guionet a ORDRE com a argument número zero\n"
 "\n"
 "    Si l'ordre no es pot executar i la sessió és no-interactiva, "
 "l'intèrpret\n"
-"    surt, excepte si l'opció `execfail' està habilitada.\n"
+"    surt, excepte si l'opció «execfail» està habilitada.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n"
 "    redirecció."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3376,7 +3396,7 @@ msgstr ""
 "    Surt de l'intèrpret amb estat N.  Si ometeu N, l'estat de sortida és el\n"
 "    de l'última ordre executada."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3386,11 +3406,12 @@ msgid ""
 msgstr ""
 "Abandona una sessió d'entrada.\n"
 "\n"
-"   Abandona una sessió d'entrada amb estat de sortida N.  Torna un error si\n"
-"   no s'està executant en una sessió d'entrada."
+"    Abandona una sessió d'entrada amb estat de sortida N.  Torna un error "
+"si\n"
+"    no s'està executant en una sessió d'entrada."
 
 # help fc (hi ha un bug a la cadena original)
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3421,34 +3442,31 @@ msgid ""
 msgstr ""
 "Mostra o executa ordres de l'historial.\n"
 "\n"
-"    fc s'utilitza per a mostrar o editar i reexecutar ordres de "
-"l'historial.\n"
-"    PRIMER i ÚLTIM poden ser números que defineixen un interval, o PRIMER\n"
-"    pot ser una cadena, que significa l'ordre més recent que comença amb\n"
-"    aquesta cadena.\n"
+"    fc s'utilitza per a mostrar o editar i re-executar ordres de\n"
+"    l'historial.  PRIMER i ÚLTIM poden ser números que defineixen un\n"
+"    interval, o PRIMER pot ser una cadena, que significa l'ordre més recent\n"
+"    que comença amb aquesta cadena.\n"
 "\n"
 "    Opcions:\n"
 "      -e EDITOR selecciona quin editor utilitzar.  Per defecte és el valor\n"
 "                de la variable FCEDIT, després el valor de EDITOR, i\n"
 "                finalment vi\n"
 "      -l\tmostra les línies en lloc d'editar-les\n"
-"      -n\tomet els nombres de línia a l'hora de mostrar la llista\n"
+"      -n\tomet els números de línia a l'hora de mostrar la llista\n"
 "      -r\tinverteix l'ordre de les línies (més recents primer)\n"
 "\n"
-"    Amb el format `fc -s [pat=sub ...] [ordre]', ORDRE es reexecuta després\n"
+"    Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n"
 "    d'haver fet la substitució PAT=SUB.\n"
 "\n"
-"    Un àlies útil és r='fc -s', de manera que en escriure `r cc' s'executa\n"
-"    l'última ordre que comença amb `cc' i en escriure `r' reexecuta "
-"l'última\n"
-"    ordre.\n"
+"    Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n"
+"    que comença per «cc» i «r» re-executa l'última ordre.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit o l'estat de l'última ordre executada; diferent de zero si "
 "es\n"
 "    produeix un error."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3459,11 +3477,10 @@ msgid ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
-"Porta una tasca al primer pla.\n"
+"Porta una feina al primer pla.\n"
 "\n"
-"    Mou la tasca identificada per TASCA al primer pla, convertint-la en la\n"
-"    tasca corrent.  Si TASCA no es dóna, s'utilitza la tasca que "
-"l'intèrpret\n"
+"    Mou la feina identificada per FEINA al primer pla, convertint-la en la\n"
+"    feina corrent.  Si ometeu FEINA, s'utilitza la feina que l'intèrpret\n"
 "    considera com a corrent.\n"
 "\n"
 "    Estat de sortida:\n"
@@ -3471,7 +3488,7 @@ msgstr ""
 "un\n"
 "    error."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3484,19 +3501,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
-"Mou tasques al segon pla.\n"
+"Mou feines al segon pla.\n"
 "\n"
-"   Mou la tasca identificada per TASCA al segon pla, com si s'haguessin\n"
-"   iniciat amb un `&'.  Si TASCA no es dóna, s'utilitza la tasca que\n"
-"   l'intèrpret considera com a tasca corrent.\n"
+"    Mou la feina identificada per FEINA al segon pla, com si s'hagués\n"
+"    iniciat amb un «&».  Si ometeu FEINA, s'utilitza la feina que\n"
+"    l'intèrpret considera com a feina corrent.\n"
 "\n"
-"   Estat de sortida:\n"
-"   Torna èxit, excepte si el control de tasques no està habilitat o es\n"
-"   produeix un error."
+"    Estat de sortida:\n"
+"    Torna èxit, excepte si el control de feines no està habilitat o es\n"
+"    produeix un error."
 
 # help hash
-#: builtins.c:787
-#, fuzzy
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3522,26 +3538,26 @@ msgstr ""
 "Recorda o mostra la ubicació de programes.\n"
 "\n"
 "    Determina i recorda la ubicació completa de cada NOM d'ordre.  Sense\n"
-"    arguments, es mostra informació sobre les ordres que s'han recordat.\n"
+"    arguments, mostra informació sobre les ordres que s'han recordat.\n"
 "\n"
 "    Opcions:\n"
-"      -d                oblida la ubicació recordada de cada NOM\n"
+"      -d                oblida la ubicació recordada per a cada NOM\n"
 "      -l                utilitza un format que es pot reciclar com a "
 "entrada\n"
-"      -p ubicació       utilitza UBICACIÓ com a ubicació sencera de NOM\n"
+"      -p ubicació       utilitza UBICACIÓ com a ubicació completa per a NOM\n"
 "      -r                oblida totes les ubicacions recordades\n"
-"      -t                mostra la ubicació recordada de cada NOM, precedint\n"
-"                        cada ubicació pel corresponent NOM, si hi ha\n"
-"                        múltiples NOMs.\n"
+"      -t                mostra la ubicació recordada per a cada NOM,\n"
+"                        precedint cada ubicació amb el corresponent NOM, si\n"
+"                        hi ha múltiples NOMs.\n"
 "    Arguments:\n"
 "      NOM               Es busca NOM en el $PATH i s'afegeix a la llista\n"
 "                        d'ordres recordades.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si NOM no es troba o es passa una opció invàlida."
+"    Torna èxit, excepte si NOM no es troba o passeu una opció invàlida."
 
 # help help
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3557,7 +3573,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3570,17 +3586,17 @@ msgstr ""
 "    mostra una llista amb temes d'ajuda.\n"
 "\n"
 "    Opcions:\n"
-"      -d        mostra una desprició curta de cada tema\n"
-"      -m        mostra la forma d'ús en format de pseudopàgina de manual\n"
+"      -d        mostra una descripció curta de cada tema\n"
+"      -m        mostra la forma d'ús en format de pseudo-pàgina de manual\n"
 "      -s        mostra una sinopsi de cada tema corresponent a PATRÓ\n"
 "\n"
 "    Arguments:\n"
-"      PATRÓ     patró que especifica un tema d'ajuda\n"
+"      PATRÓ     Patró que especifica un tema d'ajuda\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si PATRÓ no es troba o es passa una opció invàlida."
+"    Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3590,7 +3606,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3616,40 +3633,38 @@ msgid ""
 msgstr ""
 "Mostra o manipula l'historial.\n"
 "\n"
-"    Mostra l'historial amb números de línia, prefixant cada entrada\n"
-"    modificada amb un `*'.  Amb l'argument N, només mostra les N últimes\n"
+"    Mostra l'historial amb números de línia, indicant les entrades\n"
+"    modificades amb «*».  Amb l'argument N, només mostra les N últimes\n"
 "    entrades.\n"
 "\n"
 "    Opcions:\n"
-"      -c        esboora totes les entrades de la llista de l'historial\n"
+"      -c        esborra la llista d'entrades\n"
 "      -d offset esborra l'entrada de l'historial a la posició OFFSET\n"
-"      -a        afegeix les línies de la sessió actual al fitxer de\n"
-"                l'historial\n"
-"      -n        llegeix el fitxer de l'historial\n"
+"      -a        afegeix la sessió actual al fitxer de l'historial\n"
+"      -n        llegeix el fitxer de l'historial i afegeix les línies\n"
+"                prèviament no llegides a la llista\n"
 "      -r        llegeix el fitxer de l'historial i n'afegeix el contingut\n"
-"                a la llista\n"
-"      -w        escriu l'historial actual al fitxer de l'historial i\n"
-"                l'afegeix a la llista\n"
+"                sencer a la llista\n"
+"      -w        escriu l'historial actual al fitxer de l'historial\n"
 "      -p        expandeix cada ARG i mostra el resultat, sense desar-lo\n"
 "                a la llista\n"
 "      -s        afegeix ARGs a la llista com una única entrada\n"
 "\n"
-"    Si s'indica un nom de FITXER, s'utilitza com a fitxer d'historial.  En\n"
-"    cas contrar, si $HISTFILE té algun valor, s'utilitza aquest, si no\n"
-"    ~/.bash_history.\n"
+"    Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial.  En "
+"cas\n"
+"    contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n"
+"    s'utilitza ~/.bash_history.\n"
 "\n"
 "    Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n"
 "    valor s'utilitza com a cadena de format strftime(3) per a mostrar "
 "l'hora\n"
 "    associada a cada entrada de l'historial.  En cas contrari no es mostra\n"
-"    cap hora.\n"
+"    informació horària.\n"
 "\n"
 "    Estat de sortida: \n"
-"    Torna èxit excepte si es passa una opció invàlida o es produeix un\n"
-"    error."
+"    Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
 
-#: builtins.c:872
-#, fuzzy
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3672,31 +3687,32 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
-"Mostra l'estat de tasques.\n"
+"Mostra l'estat de feines.\n"
 "\n"
-"    Mostra les tasques actives.  Si s'especifica TASCA, es restringeix la\n"
-"    sortida a la tasca especificada.  Sense opcions, es mostra l'estat de\n"
-"    totes les tasques actives.\n"
+"    Mostra les feines actives.  Si especifiqueu FEINA, es restringeix la\n"
+"    sortida a la feina especificada.  Sense opcions, mostra l'estat de "
+"totes\n"
+"    les feines actives.\n"
 "\n"
 "    Opcions:\n"
 "      -l        mostra els IDs de procés a més de la informació normal\n"
-"      -n        mostra només les tasques l'estat de les quals ha\n"
+"      -n        mostra només les feines l'estat de les quals ha\n"
 "                canviat des de l'última notificació\n"
 "      -p        mostra només els IDs de procés\n"
-"      -r        restringeix la sortida a les tasques en execució\n"
-"      -s        restringeix la sortida a les tasques aturades\n"
+"      -r        restringeix la sortida a les feines en execució\n"
+"      -s        restringeix la sortida a les feines aturades\n"
 "\n"
 "    Amb l'opció -x, s'executa ORDRE, després de substituir totes les\n"
-"    especificacions de tasca per l'ID del procés del líder del grup de\n"
-"    processos d'aquella tasca, a ARGS.\n"
+"    especificacions de feina per l'ID del procés del líder del grup de\n"
+"    processos d'aquella feina, a ARGS.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si es passa una opció invàlida o es produeix un\n"
-"    error.  Si s'utilitza -x, torna l'estat de sortida d'ORDRE."
+"    Torna èxit, excepte si passeu una opció invàlida o es produeix un "
+"error.\n"
+"    Si utilitzeu -x, torna l'estat de sortida d'ORDRE."
 
 # help disown
-#: builtins.c:899
-#, fuzzy
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3712,23 +3728,22 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
-"Suprimeix tasques de l'intèrpret en funcionament.\n"
+"Deslliga feines vinculades a l'intèrpret actual.\n"
 "\n"
-"    Suprimeix TASCA de la taula de tasques actives.  Sense TASCA,\n"
-"    s'interpreta que es refereix a la tasca corrent.\n"
+"    Suprimeix FEINA de la taula de feines actives.  Si no especifiqueu\n"
+"    FEINA, s'interpreta que us referiu a la feina corrent.\n"
 "\n"
 "    Opcions:\n"
-"      -q        suprimeix totes les tasques si no s'especifica TASCA\n"
-"      -h\tmarca TASCA per a no enviar-li un senyal SIGHUP si\n"
+"      -a        suprimeix totes les feines si no especifiqueu FEINA\n"
+"      -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n"
 "                l'intèrpret rep un SIGHUP\n"
-"      -r        suprimeix totes les tasques en execució\n"
+"      -r        suprimeix totes les feines en execució\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si es passa una opció o TASCA invàlida."
+"    Torna èxit, excepte si passeu una opció o FEINA invàlida."
 
 # help kill
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3750,30 +3765,30 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
-"Envia un senyal a una tasca.\n"
+"Envia un senyal a una feina.\n"
 "\n"
 "    Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o "
-"TASCA.\n"
-"    Si no s'especifica cap senyal, s'envia un SIGTERM.\n"
+"FEINA.\n"
+"    Si no especifiqueu cap senyal, s'envia un SIGTERM.\n"
 "\n"
 "    Opcions:\n"
 "      -s senyal         SENYAL és el nom d'un senyal\n"
 "      -n númsenyal\tNÚMSENYAL és el número d'un senyal\n"
 "      -l                mostra els noms dels senyals; si hi ha arguments \n"
-"                        després de `-l' s'interpreten com a números de\n"
+"                        després de «-l» s'interpreten com a números de\n"
 "                        senyals, els noms dels quals s'han de mostrar\n"
+"      -L                sinònim de -l\n"
 "\n"
 "    kill és una ordre interna per dues raons: perquè això permet usar IDs "
 "de\n"
-"    tasca en lloc de IDs de procés, i perquè permet matar processos encara\n"
+"    feina en lloc de IDs de procés, i perquè permet matar processos encara\n"
 "    que arribeu al límit de processos que se us permet crear.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si es passa una opció no vàlida o es produeix un\n"
-"    error."
+"    Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
 
 # help let
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3819,27 +3834,27 @@ msgid ""
 msgstr ""
 "Avalua expressions aritmètiques.\n"
 "\n"
-"    Avalua ARG com a expressió aritmètica.  Les operacions es fan amb "
-"enters\n"
-"    de llargada fixa sense comprovacions de desbordament, tot i que les\n"
+"    Avalua cada ARG com a expressió aritmètica.  Les operacions es fan amb\n"
+"    enters d'amplada fixa sense comprovacions de desbordament, tot i que "
+"les\n"
 "    divisions per 0 es detecten i es marquen com a error.  La següent "
 "llista\n"
-"    mostra els operadors, agrupats per nivells d'igual precedència.  Els\n"
-"    nivells estan llistats en ordre descendent de precedència.\n"
+"    mostra els operadors, agrupats en nivells d'igual precedència.  Els\n"
+"    nivells apareixen en ordre descendent de precedència.\n"
 "\n"
 "    \tid++, id--\tpostincrement, postdecrement\n"
 "    \t++id, --id\tpreincrement, predecrement\n"
 "    \t-, +\t\tnegatiu, positiu unaris\n"
-"    \t!, ~\t\tnegació lògica i binària\n"
+"    \t!, ~\t\tnegació lògica i a nivell de bits\n"
 "    \t**\t\texponenciació\n"
 "    \t*, /, %\t\tmultiplicació, divisió, residu\n"
 "    \t+, -\t\taddició, subtracció\n"
-"    \t<<, >>\t\tdesplaçament binari a l'esquerra i a la dreta\n"
+"    \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n"
 "    \t<=, >=, <, >\tcomparació\n"
 "    \t==, !=\t\tigualtat, desigualtat\n"
-"    \t&\t\tAND binari\n"
-"    \t^\t\tXOR binari\n"
-"    \t|\t\tOR binari\n"
+"    \t&\t\tAND a nivell de bits\n"
+"    \t^\t\tXOR a nivell de bits\n"
+"    \t|\t\tOR a nivell de bits\n"
 "    \t&&\t\tAND lògic\n"
 "    \t||\t\tOR lògic\n"
 "    \texpr ? expr : expr\n"
@@ -3848,19 +3863,19 @@ msgstr ""
 "    \t+=, -=, <<=, >>=,\n"
 "    \t&=, ^=, |=\tassignació\n"
 "\n"
-"    S'admeten variables com a operands.  El nom de la variable se\n"
-"    substitueix pel seu valor (convertit en enter d'amplada fixa).  La\n"
-"    variable no cal que tingui l'atribut d'enter perquè pugui aparèixer en\n"
-"    una expressió aritmètica.\n"
+"    S'admeten variables de l'intèrpret com a operands.  El nom de la\n"
+"    variable se substitueix pel seu valor (convertit en enter d'amplada\n"
+"    fixa).  No cal que la variable tingui l'atribut d'enter perquè pugui\n"
+"    aparèixer en una expressió aritmètica.\n"
 "\n"
-"    Els operadors s'avaluen per ordre de precedència.  Les subexpressions\n"
+"    Els operadors s'avaluen en ordre de precedència.  Les subexpressions\n"
 "    entre parèntesis s'avaluen primer, independentment de les regles de\n"
 "    precedència anteriors.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Si l'últim ARG s'avalua en 0, let torna 1; altrament torna 0."
+"    Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3882,7 +3897,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3912,34 +3927,34 @@ msgid ""
 "occurs,\n"
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
-"Llegeix una línia a l'entrada estàndard i la separa en camps.\n"
+"Llegeix una línia a l'entrada estàndard i la divideix en camps.\n"
 "\n"
-"    Llegeix una sola línia a l'entrada estàndard, o al descriptor de\n"
-"    fitxer FD si s'especifica l'opció -u.  La línia se separa en camps,\n"
-"    segons les mateixes regles que en la separació de paraules, i la "
-"primera\n"
+"    Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n"
+"    FD si especifiqueu l'opció -u.  La línia es divideix en camps, segons\n"
+"    les mateixes regles que en la separació de paraules, i la primera\n"
 "    paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n"
 "    que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM.  Només\n"
 "    es reconeixen com a delimitadors de paraula els caràcters que conté la\n"
 "    variable $IFS.\n"
 "\n"
-"    Si no s'especifica cap NOM, llavors la línia llegida es desa a la\n"
+"    Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n"
 "    variable REPLY.\n"
 "\n"
 "    Opcions:\n"
 "      -a vector\tassigna les paraules llegides a VECTOR, de forma "
 "seqüencial\n"
 "                començant des de l'índex número 0.\n"
-"      -d delim\tsegueix llegint fins a trobar el caràcter DELIM, en lloc de\n"
+"      -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc "
+"de\n"
 "                fins a trobar un salt de línia\n"
 "      -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n"
 "                la línia\n"
 "      -i text\tUtilitza TEXT com a text inicial per a Readline\n"
-"      -n núm\ttorna després de llegir exactament NÚM caràcters en lloc\n"
-"                d'esperar fins a trobar un salt de línia, però tenint en\n"
-"                compte el delimitador si s'han llegit menys de NÚM "
-"caràcters\n"
-"                abans del delimitador\n"
+"      -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n"
+"                trobi el delimitador si apareix abans de NÚM caràcters\n"
+"      -N núm    torna només després de llegir exactament NÚM caràcters,\n"
+"                excepte si es troba EOF o s'esgota el temps d'espera,\n"
+"                i ignora qualsevol delimitador\n"
 "      -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n"
 "                afegit, abans d'intentar llegir res\n"
 "      -r        prohibeix escapar caràcters amb una barra invertida\n"
@@ -3949,24 +3964,23 @@ msgstr ""
 "                aconseguit llegir una línia sencera.  Per defecte, el límit\n"
 "                de temps és el valor de la variable TMOUT.  TEMPS pot ser "
 "un\n"
-"                número decimal.  Si TEMPS és 0, read torna immediatament,\n"
-"                sense intentar llegir cap dada, i torna èxit només si hi ha\n"
-"                dades disponibles en el descriptor de fitxer FD "
-"especificat.\n"
-"                L'estat de sortida és més gran que 128 si s'arriba al temps\n"
-"                límit\n"
-"      -u fd     llegeix dades al descriptor de fitxer FD, en lloc de\n"
+"                número amb decimals.  Si TEMPS és 0, read torna\n"
+"                immediatament, sense intentar llegir cap dada, i torna èxit\n"
+"                només si hi ha dades disponibles en el descriptor de fitxer\n"
+"                FD especificat.  Un estat de sortida més gran que 128 "
+"indica\n"
+"                que s'ha esgotat el temps d'espera.\n"
+"      -u fd     llegeix dades al descriptor de fitxer FD, en lloc de a\n"
 "                l'entrada estàndard.\n"
 "\n"
 "    Estat de sortida:\n"
-"    El codi de retorn és zero, excepte si es troba final-de-fitxer, "
-"s'arriba\n"
-"    al límit de temps (en aquest cas, és major que 128), es produeix un\n"
-"    error d'assignació de variable, o s'especifica un descriptor de fitxer\n"
-"    invàlid amb l'opció -u."
+"    El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n"
+"    s'arriba al límit de temps (en aquest cas, és major que 128), es\n"
+"    produeix un error d'assignació de variable, o si heu especificat un\n"
+"    descriptor de fitxer invàlid amb l'opció -u."
 
 # help return
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3979,16 +3993,14 @@ msgid ""
 msgstr ""
 "Torna des d'una funció de l'intèrpret.\n"
 "\n"
-"    Provoca que una funció o script executat amb `source' torni amb el "
-"valor\n"
+"    Provoca que una funció o script executat amb «source» torni amb el valor\n"
 "    de retorn especificat per N.  Si s'omet N, l'estat de retorn és aquell\n"
 "    de l'última ordre executada dins la funció o script.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna N, o fallada si l'intèrpret no està executant cap funció o script."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4073,26 +4085,24 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 msgstr ""
-"Activa o desactiva opcions de l'intèrpret i estableix paràmetres\n"
-"posicionals.\n"
+"Estableix opcions de l'intèrpret i paràmetres posicionals.\n"
 "\n"
-"    Modifica el valor dels atributs de l'intèrpret i dels paràmetres\n"
-"    posicionals, o mostra els noms i valors de les variables de "
-"l'intèrpret.\n"
+"    Modifica el valor d'atributs de l'intèrpret i de paràmetres "
+"posicionals,\n"
+"    o mostra els noms i valors de les variables de l'intèrpret.\n"
 "\n"
 "    Opcions:\n"
 "      -a  Exporta les variables que es creïn o es modifiquin.\n"
-"      -b  Notifica la finalització de tasques de forma immediata.\n"
+"      -b  Notifica immediatament la finalització de feines.\n"
 "      -e  Surt immediatament si una ordre acaba amb estat diferent de zero.\n"
-"      -f  Deshabilita la generació de noms de fitxers (globbing).\n"
-"      -h  Recorda la ubicació de les ordres a mesura que s'utilitzen.\n"
-"      -k  Col·loca tots els arguments que són assignacions a l'entorn de\n"
-"          l'ordre que s'executa, i no només aquells que precedeixen el nom\n"
-"          de l'ordre.\n"
-"      -m  Activa el control de tasques.\n"
+"      -f  Deshabilita la generació de noms de fitxers («globbing»).\n"
+"      -h  Recorda la ubicació de les ordres que s'executen.\n"
+"      -k  Afegeix tots els arguments en forma d'assignació a l'entorn de\n"
+"          l'ordre, no només aquells que precedeixen el nom de l'ordre.\n"
+"      -m  Activa la gestió de feines.\n"
 "      -n  Llegeix ordres, però sense executar-les.\n"
-"      -o nom-opció\n"
-"          Defineix la variable corresponent a nom-opció:\n"
+"      -o opció\n"
+"          Estableix la variable corresponent a OPCIÓ:\n"
 "              allexport    igual que -a\n"
 "              braceexpand  igual que -B\n"
 "              emacs        utilitza una interfície d'edició estil emacs\n"
@@ -4104,7 +4114,7 @@ msgstr ""
 "              history      activa l'historial\n"
 "              ignoreeof    l'intèrpret no surt en cas de trobar EOF\n"
 "              interactive-comments\n"
-"                           permet comentaris a les ordres interactives\n"
+"                           permet comentaris en ordres interactives\n"
 "              keyword      igual que -k\n"
 "              monitor      igual que -m\n"
 "              noclobber    igual que -C\n"
@@ -4115,21 +4125,20 @@ msgstr ""
 "              nounset      igual que -u\n"
 "              onecmd       igual que -t\n"
 "              physical     igual que -P\n"
-"              pipefail     el valor retornat per una canalització és "
-"l'estat\n"
-"                           de l'última ordre que ha acabat amb estat\n"
-"                           no-zero, o zero si cap ordre ha acabat amb estat\n"
-"                           diferent de zero\n"
-"              posix        ajusta el comportament de bash al dictaminat per\n"
-"                           l'estàndard Posix\n"
+"              pipefail     el valor retornat per una canonada és l'estat de\n"
+"                           l'última ordre que ha acabat amb estat no-zero,\n"
+"                           o zero si cap ordre ha acabat amb estat diferent\n"
+"                           de zero\n"
+"              posix        ajusta el comportament de bash a l'estàndard "
+"Posix\n"
 "              privileged   igual que -p\n"
 "              verbose      igual que -v\n"
 "              vi           usa una interfície d'edició estil vi\n"
 "              xtrace       igual que -x\n"
-"      -p  S'activa automàticament sempre que les ids efectiva i real de\n"
-"          l'usuari no coincideixin.  Omet processar el fitxer $ENV i\n"
-"          la importació de funcions.  Si desactiveu aquesta opció, els\n"
-"          valors de l'uid i gid reals s'assignen a l'uid i gid efectius.\n"
+"      -p  S'activa automàticament sempre que els ids efectiu i real de\n"
+"          l'usuari no coincideixin.  No processa el fitxer $ENV ni importa\n"
+"          funcions.  Si desactiveu aquesta opció, els valors de l'uid i gid\n"
+"          reals s'assignen a l'uid i gid efectius.\n"
 "      -t  Surt després de llegir i executar una única ordre.\n"
 "      -u  Tracta les variables no definides com a error, en substitucions.\n"
 "      -v  Escriu les línies de l'entrada a la sortida.\n"
@@ -4138,32 +4147,30 @@ msgstr ""
 "      -C  Prohibeix la sobrescriptura de fitxers ordinaris mitjançant\n"
 "          redireccions.\n"
 "      -E  Intercepta senyals ERR també durant l'execució de funcions.\n"
-"      -H  Habilita l'expansió d'exclamacions (!).  Aquesta opció està "
-"activa\n"
-"          per defecte si la sessió és interactiva.\n"
+"      -H  Activa la substitució d'elements de l'historial.  Aquesta opció\n"
+"          està activa per defecte si la sessió és interactiva.\n"
 "      -P  Omet la resolució d'enllaços simbòlics a l'hora d'executar ordres\n"
-"          que canvien el directori corrent tals com cd.\n"
-"      -T  Intercepta senyals DEBUG també durant l'execució de funcions.\n"
-"      --  Assigna els arguments restants als respectius paràmetres\n"
-"          posicionals.  Si no queda cap argument restant, suprimeix els\n"
-"          paràmetres posicionals.\n"
-"      -   Assigna els arguments restants als respectius paràmetres\n"
-"          posicionals.  Desactiva les opcions -x i -v.\n"
-"\n"
-"    Un signe + en lloc de - serveix per a desactivar l'opció.  Els "
-"arguments\n"
-"    que controlen les opcions també es poden utilitzar a l'hora d'invocar\n"
-"    l'intèrpret.  El conjunt d'opcions actives es pot trobar a $-.  La "
-"resta\n"
-"    d'arguments són paràmetres posicionals i s'assignen per ordre a $1, $2,\n"
-"    ... $n.  Si no s'especifica cap ARG, es mostren totes les variables\n"
-"    definides.\n"
+"          que canvien el directori corrent, tals com cd.\n"
+"      -T  Intercepta senyals DEBUG i RETURN també durant l'execució de\n"
+"          funcions.\n"
+"\n"
+"      --  Assigna els arguments restants a paràmetres posicionals.  Si no\n"
+"          queda cap argument, suprimeix els paràmetres posicionals.\n"
+"          \n"
+"      -   Assigna els arguments restants a paràmetres posicionals.\n"
+"          Desactiva les opcions -x i -v.\n"
+"\n"
+"    Un signe + en lloc de - desactiva l'opció corresponent.  Els arguments\n"
+"    que controlen les opcions es poden utilitzar a l'hora d'invocar\n"
+"    l'intèrpret.  El conjunt d'opcions actives en aquest intèrpret es pot\n"
+"    trobar a $-.  La resta d'arguments són paràmetres posicionals i\n"
+"    s'assignen per ordre a $1, $2, ... $n.  Si no especifiqueu cap ARG, es\n"
+"    mostren totes les variables definides.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si s'especifica una opció no vàlida."
+"    Torna èxit, excepte si especifiqueu una opció no vàlida."
 
-#: builtins.c:1132
-#, fuzzy
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4184,26 +4191,27 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
-"Suprimeix el valor i els atributs de variables i funcions.\n"
+"Suprimeix el valor i atributs de variables i funcions.\n"
 "\n"
 "    Per a cada NOM, suprimeix la corresponent variable o funció.\n"
 "\n"
 "    Opcions:\n"
-"      -f        tracta NOM com una funció\n"
-"      -v        tracta NOM com una variable\n"
-"      -n        tracta NOM com una variable referència i suprimeix la\n"
-"                pròpia variable, en lloc de la variable a què es refereix\n"
+"      -f        interpreta NOM com a funció\n"
+"      -v        interpreta NOM com a variable\n"
+"      -n        interpreta NOM com a referència a una altra variable, i\n"
+"                suprimeix aquesta variable, en lloc de la variable a què\n"
+"                es refereix\n"
 "\n"
 "    Sense opcions, primer intenta suprimir una variable, i si això falla\n"
 "    intenta suprimir una funció.\n"
 "\n"
-"    Algunes variables no poden ser suprimides; per ex., vegeu `readonly'.\n"
+"    Algunes variables no poden ser suprimides; per ex., vegeu «readonly».\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si s'especifica una opció no vàlida o NOM és una\n"
-"    variable o funció de només-lectura."
+"    Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n"
+"    variable o funció de només lectura."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4229,18 +4237,17 @@ msgstr ""
 "\n"
 "    Opcions:\n"
 "      -f        tracta NOM com a funció\n"
-"      -n        suprimeix la propietat d'exportació de NOM\n"
+"      -n        suprimeix la propietat d'exportació per a NOM\n"
 "      -p        mostra una llista amb totes les variables i funcions\n"
 "                exportades\n"
 "      \n"
-"    L'argument `--' atura el processament de més opcions.\n"
+"    L'argument «--» atura el processament de més opcions.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n"
+"    Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
 "    vàlid."
 
-#: builtins.c:1173
-#, fuzzy
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4260,28 +4267,27 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
-"Marca variables com no modificables.\n"
+"Marca variables com no modificables.\n"
 "\n"
-"    Marca cada NOM com a variable o funció de només-lectura; els valors\n"
-"    d'aquests NOMs no podran ser modificats en assignacions subseqüents.  "
-"Si\n"
+"    Marca cada NOM com a variable o funció de només lectura; els valors\n"
+"    d'aquests NOMs es poden modificar en assignacions subseqüents.  Si\n"
 "    especifiqueu VALOR, s'assigna VALOR a la variable o funció abans de\n"
-"    marcar-la com a només-lectura.\n"
+"    marcar-la com a només lectura.\n"
 "\n"
 "    Opcions:\n"
-"      -a        opera sobre vectors indexats\n"
-"      -A        opera sobre vectors associatius\n"
-"      -f        opera sobre funcions\n"
-"      -p        mostra una llista amb totes les variables i funcions\n"
-"      \t\tde només-lectura\n"
+"      -a        limita la sortida a vectors indexats\n"
+"      -A        limita la sortida a vectors associatius\n"
+"      -f        limita la sortida a funcions\n"
+"      -p        mostra una llista amb totes les variables o funcions,\n"
+"                depenent de si heu especificat l'opció -f, de només lectura\n"
 "\n"
-"    L'argument `--' atura el processament de més opcions.\n"
+"    L'argument «--» atura el processament de més opcions.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n"
+"    Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
 "    vàlid."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4300,7 +4306,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Torna èxit, excepte si N és negatiu o més gran que $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4317,14 +4323,14 @@ msgstr ""
 "\n"
 "    Llegeix les ordres que hi ha a FITXER i les executa a l'intèrpret\n"
 "    actual.  Les entrades a $PATH s'utilitzen per a localitzar el directori\n"
-"    que conté FITXER.  Si s'especifica qualsevol ARG, aquests arguments es\n"
+"    que conté FITXER.  Si especifiqueu qualsevol ARG, aquests arguments es\n"
 "    converteixen en paràmetres posicionals quan s'executa FITXER.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n"
 "    es pot llegir."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4339,18 +4345,17 @@ msgid ""
 msgstr ""
 "Suspèn l'execució de l'intèrpret.\n"
 "\n"
-"      Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT.\n"
-"      Si no es força, les sessions d'entrada no es poden suspendre.\n"
+"    Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT.  "
+"Si\n"
+"    no es força, les sessions d'entrada no es poden suspendre.\n"
 "\n"
-"      Opcions:\n"
-"        -f      força la suspensió, encara que sigui una sessió d'entrada\n"
+"    Opcions:\n"
+"      -f      força la suspensió, encara que sigui una sessió d'entrada\n"
 "\n"
-"      Estat de sortida:\n"
-"      Torna èxit, excepte si no hi ha control de tasques o es produeix un\n"
-"      error."
+"    Estat de sortida:\n"
+"    Torna èxit, excepte si no hi ha control de feines o es produeix un error."
 
-#: builtins.c:1254
-#, fuzzy
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4437,11 +4442,11 @@ msgstr ""
 "    Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR.  "
 "Les\n"
 "    expressions poden ser unàries o binàries.  Les expressions unàries\n"
-"    s'utilitzen sovint per a determinar l'estat de fitxers.  També hi ha\n"
-"    operadors de cadenes, i operadors de comparació numèrica.\n"
+"    s'utilitzen sovint per a determinar l'estat de fitxers.  També podeu\n"
+"    utilitzar operadors de cadenes, i operadors de comparació numèrica.\n"
 "\n"
-"    El comportament de test depèn del nombre d'arguments.  Podeu trobar-ne\n"
-"    una especificació completa a la plana del manual de bash.\n"
+"    El comportament de test depèn del nombre d'arguments.  Podeu trobar\n"
+"    l'especificació completa a la plana del manual de bash.\n"
 "\n"
 "    Operadors de fitxer:\n"
 "\n"
@@ -4451,27 +4456,27 @@ msgstr ""
 "      -d FITXER      Cert si el fitxer és un directori.\n"
 "      -e FITXER      Cert si el fitxer existeix.\n"
 "      -f FITXER      Cert si el fitxer existeix i és ordinari.\n"
-"      -g FITXER      Cert si el bit set-group-id està activat.\n"
+"      -g FITXER      Cert si el bit «set-group-id» està activat.\n"
 "      -h FITXER      Cert si el fitxer és un enllaç simbòlic.\n"
 "      -L FITXER      Cert si el fitxer és un enllaç simbòlic.\n"
-"      -k FITXER      Cert si el bit sticky està activat.\n"
-"      -p FITXER      Cert si el fitxer és una canalització.\n"
+"      -k FITXER      Cert si el bit «sticky» està activat.\n"
+"      -p FITXER      Cert si el fitxer és una canonada.\n"
 "      -r FITXER      Cert si teniu permís per a llegir el fitxer.\n"
 "      -s FITXER      Cert si el fitxer existeix i no està buit.\n"
-"      -S FITXER      Cert si el fitxer és un socket.\n"
+"      -S FITXER      Cert si el fitxer és un «socket».\n"
 "      -t FD          Cert si FD està obert i es refereix a un terminal.\n"
-"      -u FITXER      Cert si el bit set-user-id està activat.\n"
+"      -u FITXER      Cert si el bit «set-user-id» està activat.\n"
 "      -w FITXER      Cert si teniu permís per a escriure al fitxer.\n"
 "      -x FITXER      Cert si teniu permís per a executar el fitxer.\n"
-"      -O FITXER      Cert si el fitxer és propietat vostra.\n"
-"      -G FITXER      Cert si el fitxer és propietat del vostre grup.\n"
+"      -O FITXER      Cert si el vostre usuari és propietari del fitxer.\n"
+"      -G FITXER      Cert si el vostre grup és propietari del fitxer.\n"
 "      -N FITXER      Cert si el fitxer ha canviat des de l'última lectura.\n"
 "\n"
 "      FITXER1 -nt FITXER2  Cert si fitxer1 és més nou que fitxer2 (segons "
 "la\n"
 "                           data de modificació).\n"
 "\n"
-"      FITXER1 -ot FITXER2  Cert si fitxer1 és més vell que fitxer2.\n"
+"      FITXER1 -ot FITXER2  Cert si fitxer1 és més antic que fitxer2.\n"
 "\n"
 "      FITXER1 -ef FITXER2  Cert si fitxer1 és un enllaç dur a fitxer2.\n"
 "\n"
@@ -4495,24 +4500,24 @@ msgstr ""
 "      -o OPCIÓ       Cert si l'opció de l'intèrpret està activada.\n"
 "      -v VAR         Cert si la variable VAR està definida.\n"
 "      -R VAR         Cert si la variable VAR està definida i és una \n"
-"                     variable referència.\n"
+"                     referència a una altra variable.\n"
 "      ! EXPR         Cert si expr és fals.\n"
 "      EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n"
-"      EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són cert.\n"
+"      EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n"
 "\n"
 "      arg1 OP arg2   Tests aritmètics.  OP és un de -eq, -ne, -lt, -le, -"
 "gt,\n"
 "                     o -ge.\n"
 "\n"
-"      Els operadors aritmètics binaris tornen cert si ARG1 és igual,\n"
-"      no igual, menys que, menys que o igual, més que, o més que o igual\n"
-"      que ARG2, respectivament.\n"
+"      Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n"
+"      igual, més petit que, més petit que o igual, més gran que, o més gran\n"
+"      que o igual que ARG2, respectivament.\n"
 "\n"
 "      Estat de sortida:\n"
 "      Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n"
-"      fals o s'especifica un argument no vàlid."
+"      fals o si especifiqueu un argument no vàlid."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4522,10 +4527,10 @@ msgstr ""
 "Avalua una expressió condicional.\n"
 "\n"
 "    Aquesta ordre interna és un sinònim de \"test\", amb la diferència que\n"
-"    l'últim argument ha de ser un signe `]' que tanqui el `[' inicial."
+"    l'últim argument ha de ser un signe «]» que tanqui el «[» inicial."
 
 # help times
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4545,7 +4550,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Sempre reïx."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4590,46 +4595,41 @@ msgid ""
 msgstr ""
 "Intercepta senyals i altres esdeveniments.\n"
 "\n"
-"      Defineix i activa controladors de senyal que s'executen quan\n"
-"      l'intèrpret rep senyals o en altres circumstàncies.\n"
-"\n"
-"      ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep el\n"
-"      senyal especificat per SENYAL.  Si no hi ha ARG (i s'especifica un\n"
-"      únic SENYAL) o és `-', llavors cada senyal es restableix al seu valor\n"
-"      original.  Si ARG és una cadena nul·la, llavors SENYAL és ignorat per\n"
-"      l'intèrpret i per tots els programes invocats per l'intèrpret.\n"
-"\n"
-"      Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt.  Si "
-"SENYAL\n"
-"      és DEBUG, ARG s'executa abans de cada ordre.  Si SENYAL és RETURN, "
-"ARG\n"
-"      s'executa cada cop que una funció o script executat amb l'ordre `.' o\n"
-"      `source' finalitza l'execució.  Si SENYAL és ERR, ARG s'executa en "
-"els\n"
-"      mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -"
-"e\n"
-"      estigués activada.\n"
-"\n"
-"      Si no s'especifica cap argument, trap mostra una llista d'ordres\n"
-"      associades a cada senyal.\n"
-"\n"
-"      Opcions:\n"
-"        -l      mostra una llista amb els noms dels senyals i els números\n"
-"                corresponents\n"
-"        -p\tmostra els controladors de senyal associats a cada SENYAL\n"
-"\n"
-"      Cada SENYAL és o bé un nom de senyal definit al fitxer <signal.h> o "
-"bé\n"
-"      un número de senyal.  Els noms de senyal no són sensibles a la\n"
-"      capitalització i el prefix SIG és opcional.  Podeu enviar un senyal a\n"
-"      l'intèrpret amb l'ordre \"kill -senyal $$\".\n"
-"\n"
-"      Estat de sortida: \n"
-"      Torna èxit, excepte si algun SENYAL no és vàlid o s'especifica una\n"
-"      ordre no vàlida."
-
-#: builtins.c:1393
-#, fuzzy
+"    Defineix i activa controladors de senyal, que són executats quan\n"
+"    l'intèrpret rep senyals o en altres circumstàncies.\n"
+"\n"
+"    ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep "
+"SENYAL.\n"
+"    Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n"
+"    és restablert al seu valor original.  Si ARG és una cadena nul·la,\n"
+"    aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n"
+"    invocats per l'intèrpret.\n"
+"\n"
+"    Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt.  Si SENYAL\n"
+"    és DEBUG, ARG s'executa abans de cada ordre.  Si SENYAL és RETURN, ARG\n"
+"    s'executa cada cop que una funció o script executat amb l'ordre «.» o\n"
+"    «source» finalitza l'execució.  Si SENYAL és ERR, ARG s'executa en els\n"
+"    mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -e\n"
+"    estigués activada.\n"
+"\n"
+"    Si no especifiqueu cap argument, trap mostra una llista d'ordres\n"
+"    associades a cada senyal.\n"
+"\n"
+"    Opcions:\n"
+"      -l       mostra una llista amb els noms dels senyals i els números\n"
+"               corresponents\n"
+"      -p       mostra els controladors de senyal associats a cada SENYAL\n"
+"\n"
+"    Cada SENYAL és o bé un nom de senyal definit al fitxer <signal.h> o bé\n"
+"    un número de senyal.  Els noms de senyal no són sensibles a les\n"
+"    majúscules i el prefix SIG és opcional.  Podeu enviar un senyal a\n"
+"    l'intèrpret amb l'ordre «kill -senyal $$».\n"
+"\n"
+"    Estat de sortida: \n"
+"    Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n"
+"    ordre no vàlida."
+
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4660,37 +4660,32 @@ msgid ""
 msgstr ""
 "Mostra informació sobre el tipus d'ordre.\n"
 "\n"
-"      Indica com seria interpretat NOM si s'utilitzés com a ordre.\n"
-"\n"
-"      Opcions:\n"
-"        -a      mostra totes les ubicacions que contenen un executable\n"
-"                anomenat NOM; inclou àlies, ordres internes i funcions, si,\n"
-"                i només si, no s'usa conjuntament amb l'opció `-p'\n"
-"        -f      omet cercar de funcions\n"
-"        -P      força una cerca al PATH per a cada NOM, encara que sigui un\n"
-"                àlies, ordre interna o funció, i torna el nom del fitxer "
-"que\n"
-"                s'executaria\n"
-"        -p      torna o bé el nom del fitxer que s'executaria, o bé res, si\n"
-"                `type -t NOM' no hauria indicat `fitxer'.\n"
-"        -t      torna només una paraula, que és o `àlies', o `paraula "
-"clau',\n"
-"                o `funció', o `ordre interna', o `fitxer', o bé `', "
-"depenent\n"
-"                de si NOM és un àlies, una paraula reservada de "
-"l'intèrpret,\n"
-"                una funció, una ordre interna, un fitxer, o no es pot\n"
-"                trobar, respectivament.\n"
-"\n"
-"      Arguments:\n"
-"        NOM     El nom de l'ordre que s'ha d'interpretar.\n"
+"    Indica com seria interpretat NOM si s'utilitzés com a ordre.\n"
 "\n"
-"      Estat de sortida:\n"
-"      Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no\n"
-"      es pot trobar."
+"    Opcions:\n"
+"      -a      mostra totes les ubicacions que contenen un executable\n"
+"              anomenat NOM, incloent àlies, ordres internes i funcions si i\n"
+"              només si no s'usa conjuntament amb l'opció «-p»\n"
+"      -f      omet la cerca de funcions\n"
+"      -P      força una cerca al PATH per a cada NOM, encara que sigui un\n"
+"              àlies, ordre interna o funció, i torna el nom del fitxer que\n"
+"              s'executaria\n"
+"      -p      torna o bé el nom del fitxer que s'executaria, o bé res, si\n"
+"              «type -t NOM» no indica «fitxer».\n"
+"      -t      torna només una paraula, que és «àlies», «paraula clau»,\n"
+"              «funció», «ordre interna», «fitxer», o bé «», depenent de si\n"
+"              NOM és un àlies, una paraula reservada de l'intèrpret, una\n"
+"              funció, una ordre interna, un fitxer, o no es pot trobar,\n"
+"              respectivament.\n"
+"\n"
+"    Arguments:\n"
+"      NOM     El nom de l'ordre a interpretar.\n"
+"\n"
+"    Estat de sortida:\n"
+"    Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n"
+"    pot trobar."
 
-#: builtins.c:1424
-#, fuzzy
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4741,22 +4736,24 @@ msgstr ""
 "Canvia els límits d'utilització de recursos per part de l'intèrpret.\n"
 "\n"
 "    Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n"
-"    i per als processos que crea, en els sistemes que admeten tal control.\n"
+"    d'ordres i per als processos que aquest crea, en els sistemes que\n"
+"    admeten tal control.\n"
 "\n"
 "    Opcions:\n"
-"      -S        estableix límits `tous'\n"
-"      -H        estableix límits `durs'\n"
+"      -S        estableix una limitació «tova»\n"
+"      -H        estableix una limitació «dura»\n"
 "      -a\tmostra tots els límits establerts\n"
-"      -b\tmida màxima dels buffers per a sockets\n"
-"      -c\tmida màxima dels fitxers `core'\n"
+"      -b\tmida màxima de la memòria intermèdia per a «sockets»\n"
+"      -c\tmida màxima dels fitxers de bolcat de memòria\n"
 "      -d\tmida màxima del segment de dades d'un procés\n"
-"      -e\tprioritat màxima d'un procés (`nice')\n"
+"      -e\tprioritat màxima d'un procés («nice»)\n"
 "      -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n"
 "      -i\tnombre màxim de senyals pendents\n"
+"      -k        nombre màxim de cues («kqueue») obertes per a aquest procés\n"
 "      -l\tquantitat màxima de memòria que un procés pot blocar\n"
 "      -m\tmida màxima del conjunt resident (RSS)\n"
 "      -n\tnombre màxim de descriptors de fitxers oberts\n"
-"      -p\tmida màxima dels buffers per a canalitzacions\n"
+"      -p\tmida màxima de la memòria intermèdia per a canonades\n"
 "      -q\tnombre màxim d'octets a les cues de missatges POSIX\n"
 "      -r\tprioritat màxima de temps-real\n"
 "      -s\tmida màxima de la pila\n"
@@ -4764,16 +4761,16 @@ msgstr ""
 "      -u\tnombre màxim de processos d'usuari\n"
 "      -v\tmida de la memòria virtual\n"
 "      -x\tnombre màxim de fitxers de bloqueig\n"
+"      -P        nombre màxim de pseudoterminals\n"
 "      -T        nombre màxim de fils d'execució\n"
 "\n"
 "    Algunes opcions poden no estar disponibles en algunes plataformes.\n"
 "\n"
-"    Si s'especifica un LÍMIT, s'utilitza com a nou valor per al recurs en\n"
-"    qüestió; els valors especials de LÍMIT són `soft', `hard' i "
-"`unlimited',\n"
-"    que signifiquen límit tou actual, límit dur actual, i sense límit,\n"
-"    respectivament.  En cas contrari, es mostra el valor actual per al\n"
-"    recurs especificat.  Si no s'especifica cap opció, se suposa -f.\n"
+"    Si especifiqueu un LÍMIT, aquest s'utilitza com a nou valor per al\n"
+"    recurs indicat; els valors especials de LÍMIT són «soft», «hard» i\n"
+"    «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n"
+"    límit, respectivament.  En cas contrari, es mostra el valor actual per\n"
+"    al recurs especificat.  Si no especifiqueu cap opció, se suposa -f.\n"
 "\n"
 "    Els valors s'indiquen en increments de 1024 octets, excepte en el cas "
 "de\n"
@@ -4781,11 +4778,10 @@ msgstr ""
 "    -u, que és en nombre de processos.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si s'especifica una opció no vàlida o es produeix "
-"un\n"
+"    Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n"
 "    error."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4808,7 +4804,7 @@ msgstr ""
 "    mostra el valor actual de la màscara.\n"
 "\n"
 "    Si MODE comença amb un dígit, s'interpreta com a número octal; en cas\n"
-"    contrari és una cadena de mode simbòlic com les que accepta chmod(1).\n"
+"    contrari és una cadena de mode simbòlica com les que accepta chmod(1).\n"
 "\n"
 "    Opcions:\n"
 "      -p        sense MODE, mostra la sortida en un format que es pot\n"
@@ -4817,9 +4813,10 @@ msgstr ""
 "                número octal\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si MODE no és vàlid o es passa una opció no vàlida."
+"    Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4827,31 +4824,34 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
-"Espera la finalització de tasques i en retorna l'estat de sortida.\n"
+"Espera la finalització de feines i en retorna l'estat de sortida.\n"
 "\n"
 "    Espera que cada procés identificat per un ID, que pot ser l'ID del\n"
-"    procés o una especificació de tasca, acabi d'executar-se, i en torna\n"
-"    l'estat de sortida.  Si no s'especifica ID, espera que acabin\n"
-"    d'executar-se tots els processos inferiors, i surt amb estat zero.  Si\n"
-"    ID és una especificació de tasca, espera cada un dels processos a la\n"
-"    canalització d'aquella tasca.\n"
+"    procés o una especificació de feina, acabi d'executar-se, i en torna\n"
+"    l'estat de sortida.  Si ometeu ID, espera que acabin d'executar-se tots\n"
+"    els processos inferiors, i surt amb estat zero.  Si ID és una\n"
+"    especificació de feina, espera cada un dels processos a la canonada\n"
+"    d'aquella feina.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o es\n"
-"    passa una opció no vàlida."
+"    Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o "
+"passeu\n"
+"    una opció no vàlida."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4868,7 +4868,7 @@ msgstr ""
 "Espera la finalització de processos i en retorna l'estat de sortida.\n"
 "\n"
 "    Espera que cada procés, identificat per PID, acabi d'executar-se, i en\n"
-"    mostra l'estat de sortida.  Si no s'especifica PID, espera que acabin\n"
+"    mostra l'estat de sortida.  Si no especifiqueu PID, espera que acabin\n"
 "    d'executar-se tots els processos inferiors, i surt amb estat zero.  PID\n"
 "    ha de ser un ID de procés.\n"
 "\n"
@@ -4876,7 +4876,7 @@ msgstr ""
 "    Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n"
 "    passa una opció no vàlida."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4890,16 +4890,15 @@ msgid ""
 msgstr ""
 "Executa ordres per a cada element d'una llista.\n"
 "\n"
-"    Els bucles `for' executen una seqüència d'ordres per a cada un dels\n"
-"    elements d'una llista.  Si `in PARAULES ...;' s'omet, aleshores se\n"
-"    suposa `in \"$@\"'.  Per a cada element de la llista PARAULES, "
-"l'element\n"
+"    Els bucles «for» executen una seqüència d'ordres per a cada un dels\n"
+"    elements d'una llista.  Si «in PARAULES ...;» s'omet, aleshores se\n"
+"    suposa «in \"$@\"».  Per a cada element de la llista PARAULES, l'element\n"
 "    s'assigna a NOM, i les ORDRES s'executen.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'última ordre executada."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4915,7 +4914,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
-"Bucle `for' aritmètic.\n"
+"Bucle «for» aritmètic.\n"
 "\n"
 "    Equivalent a\n"
 "    \t(( EXP1 ))\n"
@@ -4931,7 +4930,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'última ordre executada."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4954,8 +4953,7 @@ msgstr ""
 "\n"
 "    Les PARAULES s'expandeixen i generen una llista de paraules.  Les\n"
 "    paraules expandides s'envien a la sortida d'errors estàndard, cada una\n"
-"    precedida per un número.  Si `in PARAULES' s'omet, se suposa `in \"$@"
-"\"'.\n"
+"    precedida per un número.  Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n"
 "    Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n"
 "    estàndard.  Si la línia correspon amb el número d'alguna de les "
 "paraules\n"
@@ -4964,13 +4962,13 @@ msgstr ""
 "    EOF, l'ordre finalitza.  Qualsevol altre valor llegit, fa que s'assigni\n"
 "    el valor nul a NOM.  La línia llegida s'assigna a la variable REPLY.\n"
 "    Les ORDRES s'executen després de cada selecció fins a trobar una ordre\n"
-"    `break'.\n"
+"    «break».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'última ordre executada."
 
 # help time
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4985,11 +4983,12 @@ msgid ""
 "    Exit Status:\n"
 "    The return status is the return status of PIPELINE."
 msgstr ""
-"Informa del temps consumit durant l'execució d'una canalització.\n"
+"Informa del temps transcorregut durant l'execució d'una canonada.\n"
 "\n"
-"    Executa CANALITZACIÓ i mostra un resum del temps real, el temps de CPU\n"
-"    d'usuari i el temps de CPU de sistema consumit durant l'execució de\n"
-"    CANALITZACIÓ.\n"
+"    Executa CANONADA i mostra un resum del temps real, el temps de CPU\n"
+"    d'usuari i el temps de CPU de sistema transcorregut durant l'execució "
+"de\n"
+"    CANONADA.\n"
 "\n"
 "    Opcions:\n"
 "      -p        mostra el resum de temps en format POSIX portable\n"
@@ -4997,9 +4996,9 @@ msgstr ""
 "    El valor de la variable TIMEFORMAT s'utilitza per formatar la sortida.\n"
 "\n"
 "    Estat de sortida:\n"
-"    L'estat de sortida és l'estat de sortida de la CANALITZACIÓ."
+"    L'estat de sortida és l'estat de sortida de la CANONADA."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5013,12 +5012,12 @@ msgstr ""
 "\n"
 "    Executa ORDRES de forma selectiva en funció de si PARAULA coincideix "
 "amb\n"
-"    PATRÓ.  El signe `|' serveix per a separar múltiples patrons.\n"
+"    PATRÓ.  El signe «|» serveix per a separar múltiples patrons.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'última ordre executada."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5040,11 +5039,11 @@ msgid ""
 msgstr ""
 "Executa ordres en funció d'una condició.\n"
 "\n"
-"    Executa la llista `if ORDRES'.  Si l'estat de sortida és zero, llavors\n"
-"    també executa la llista `then ORDRES'.  En cas contrari cada una de les\n"
-"    llistes `elif ORDRES' és executada i en cas d'acabar amb estat de\n"
-"    sortida zero, també s'executa la corresponent llista `then ORDRES', i\n"
-"    l'ordre if finalitza.  En cas contrari, la llista `else ORDRES'\n"
+"    Executa la llista «if ORDRES».  Si l'estat de sortida és zero, llavors\n"
+"    també executa la llista «then ORDRES».  En cas contrari cada una de les\n"
+"    llistes «elif ORDRES» és executada i en cas d'acabar amb estat de\n"
+"    sortida zero, també s'executa la corresponent llista «then ORDRES», i\n"
+"    l'ordre if finalitza.  En cas contrari, la llista «else ORDRES»\n"
 "    s'executa, si és que existeix.  L'estat de sortida la construcció\n"
 "    sencera és l'estat de sortida de l'última ordre executada, o zero si "
 "cap\n"
@@ -5053,7 +5052,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Torna l'estat de l'última ordre executada."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5066,12 +5065,12 @@ msgstr ""
 "Executa ordres repetidament mentre es compleixi una condició.\n"
 "\n"
 "    Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n"
-"    ORDRES `while' tingui estat de sortida igual a zero.\n"
+"    «ORDRES while» tingui estat de sortida igual a zero.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de l'última ordre executada."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5084,14 +5083,13 @@ msgstr ""
 "Executa ordres repetidament mentre no es compleixi una condició.\n"
 "\n"
 "    Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n"
-"    ORDRES `until' tingui estat de sortida diferent de zero.\n"
+"    ORDRES «until» tingui estat de sortida diferent de zero.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de l'última ordre executada."
 
 # help coproc
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5107,14 +5105,14 @@ msgstr ""
 "\n"
 "    Executa ORDRE de forma asincrònica, amb la sortida estàndard i "
 "l'entrada\n"
-"    estàndard de l'ordre connectades via canalització als descriptors de\n"
-"    fitxer assignats als índexs 0 i 1 del vector NOM a l'intèrpret en\n"
-"    execució.  Per defecte NOM és \"COPROC\".\n"
+"    estàndard de l'ordre connectades via canonada als descriptors de fitxer\n"
+"    assignats als índexs 0 i 1 de la variable vector NOM.  Per defecte NOM\n"
+"    és \"COPROC\".\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida d'ORDRE."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5136,9 +5134,9 @@ msgstr ""
 "    $1...$n, i el nom de la funció es troba a $FUNCNAME.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si NOM és de només-lectura."
+"    Torna èxit, excepte si NOM és de només lectura."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5156,7 +5154,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de l'última ordre executada."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5169,20 +5167,19 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the resumed job."
 msgstr ""
-"Reprèn una tasca i la porta al primer pla.\n"
+"Reprèn una feina i la porta al primer pla.\n"
 "\n"
-"    Equivalent a utilitzar TASCA com a argument en l'ordre `fg'.  Reprèn "
-"una\n"
-"    tasca aturada o en segon pla.  TASCA pot ser el nom d'una tasca, o el\n"
-"    número d'una tasca.  Si es troba un `&' després de TASCA, llavors la\n"
-"    tasca s'envia en un segon pla, com si l'especificació de tasca\n"
-"    s'utilitzés com a argument en l'ordre `bg'.\n"
+"    Equivalent a utilitzar FEINA com a argument en l'ordre «fg».  Reprèn una\n"
+"    feina aturada o en segon pla.  FEINA pot ser el nom d'una feina, o el\n"
+"    número d'una feina.  Si es troba un «&» després de FEINA, llavors la\n"
+"    feina s'envia en un segon pla, com si l'especificació de feina\n"
+"    s'utilitzés com a argument en l'ordre «bg».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna l'estat de sortida de la feina represa."
 
 # help '(('
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5201,7 +5198,7 @@ msgstr ""
 "    Si el resultat de l'avaluació és 0, torna 1; altrament torna 0."
 
 # help '[['
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5232,7 +5229,7 @@ msgstr ""
 "\n"
 "    Torna un estat 0 o 1, depenent del resultat de l'avaluació de\n"
 "    l'expressió condicional EXPRESSIÓ.  Les expressions es componen dels\n"
-"    mateixos elements que en l'ordre interna `test', i es poden combinar\n"
+"    mateixos elements que en l'ordre interna «test», i es poden combinar\n"
 "    usant els següents operadors.\n"
 "\n"
 "      ( EXPRESSIÓ )     Torna el valor d'EXPRESSIÓ\n"
@@ -5240,11 +5237,10 @@ msgstr ""
 "      EXPR1 && EXPR2    Cert si tant EXPR1 com EXPR2 són cert; si no, fals.\n"
 "      EXPR1 || EXPR2    Cert si EXPR1 o EXPR2 és cert; si no, fals.\n"
 "\n"
-"    Quan s'utilitzen els operadors `==' o `!=', el component de la dreta\n"
+"    Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n"
 "    s'interpreta com a un patró i es comprova si coincideix amb la cadena "
 "de\n"
-"    l'esquerra de l'operador.  Quan s'utilitza l'operador `=~', el "
-"component\n"
+"    l'esquerra de l'operador.  Quan s'utilitza l'operador «=~», el component\n"
 "    de la dreta de l'operador s'interpreta com a expressió regular i es\n"
 "    comprova si coincideix amb la cadena de l'esquerra de l'operador.\n"
 "\n"
@@ -5254,7 +5250,7 @@ msgstr ""
 "    Estat de sortida:\n"
 "    0 o 1, depenent del valor d'EXPRESSIÓ."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5307,12 +5303,12 @@ msgid ""
 "    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
-"Nom i ús de les variables de l'intèrpret habituals.\n"
+"Nom i ús de variables de l'intèrpret habituals.\n"
 "\n"
 "    BASH_VERSION        Informació de la versió de Bash.\n"
-"    CDPATH\t\tLlista de directoris separats per `:' on buscar\n"
-"                        directoris passats com a arguments a `cd'.\n"
-"    GLOBIGNORE\t\tLlista de patrons separats per `:' que indiquen noms\n"
+"    CDPATH\t\tLlista de directoris separats per «:» on buscar\n"
+"                        directoris passats com a arguments a «cd».\n"
+"    GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n"
 "                        que s'ignoren en fer expansions de noms de fitxer.\n"
 "    HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n"
 "    HISTFILESIZE\tNombre màxim de línies que pot contenir el\n"
@@ -5332,41 +5328,42 @@ msgstr ""
 "    MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n"
 "    MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n"
 "                        ha correu nou.\n"
-"    MAILPATH\t\tLlista de fitxers separats per `:' que Bash comprova\n"
+"    MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n"
 "                        si tenen correu nou.\n"
 "    OSTYPE\t\tLa versió de Unix en què corre Bash.\n"
-"    PATH\t\tLlista de directoris separats per `:' on buscar quan\n"
+"    PATH\t\tLlista de directoris separats per «:» on buscar quan\n"
 "    \t\t\tse cerquen ordres.\n"
 "    PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n"
 "    \t\t\tl'introductor de l'intèrpret.\n"
 "    PS1\t\t\tCadena de l'introductor principal.\n"
 "    PS2\t\t\tCadena de l'introductor secundari.\n"
 "    PWD\t\t\tCamí complet cap al directori corrent.\n"
-"    SHELLOPTS\t\tLlista d'opcions habilitades separades per `:'.\n"
+"    SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n"
 "    TERM\t\tNom del tipus de terminal actual.\n"
 "    TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n"
-"    \t\t\tproduïdes per l'ordre `time'.\n"
+"    \t\t\tproduïdes per l'ordre «time».\n"
 "    auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n"
 "    \t\t\tes busca en primera instància a la llista actual de\n"
-"    \t\t\ttasques aturades.  Si es troba, aquella tasca es\n"
-"                        passa a primer pla.  El valor `exact' significa que\n"
+"    \t\t\tfeines aturades.  Si es troba, aquella feina es\n"
+"                        passa a primer pla.  El valor «exact» significa que\n"
 "                        l'ordre ha de coincidir exactament amb alguna ordre\n"
-"                        de la llista de tasques aturades.  El valor\n"
-"                        `substring' significa que l'ordre ha de coincidir\n"
-"                        amb una subcadena de la tasca.  Qualsevol altre\n"
+"                        de la llista de feines aturades.  El valor\n"
+"                        «substring» significa que l'ordre ha de coincidir\n"
+"                        amb una subcadena de la feina.  Qualsevol altre\n"
 "                        valor significa que l'ordre ha de ser el prefix\n"
-"                        d'una tasca aturada.\n"
+"                        d'una feina aturada.\n"
 "    histchars\t\tCaràcters que controlen l'expansió de l'historial i\n"
 "    \t\t\tles substitucions ràpides.  El primer caràcter és el\n"
 "   \t\t\tcaràcter de substitució de l'historial, habitualment\n"
-"    \t\t\t`!'.  El segon és el caràcter de `substitució\n"
-"                        ràpida', normalment `^'.  El tercer és el caràcter\n"
-"                        de `comentari d'historial', normalment `#'.\n"
-"    HISTIGNORE\t\tLlista de patrons separats per `:' utilitzats per a\n"
+"    \t\t\t«!».  El segon és el caràcter de «substitució\n"
+"                        ràpida», normalment «^».  El tercer és el caràcter\n"
+"                        de «comentari d'historial», normalment «#».\n"
+"    HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n"
 "    \t\t\tdecidir si les ordres s'han de desar a l'historial.\n"
 
-#: builtins.c:1803
-#, fuzzy
+# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
+# enrere en aquest fitxer
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5398,35 +5395,37 @@ msgid ""
 msgstr ""
 "Afegeix directoris a la pila.\n"
 "\n"
-"    Afegeix un directori a sobre la pila de directoris, o fa girar la\n"
-"    llista, de manera que a sobre la pila hi queda el directori de treball\n"
-"    corrent.  Sense arguments, intercanvia els dos directoris de més amunt.\n"
+"    Afegeix un directori al capdamunt de la pila de directoris, o fa girar\n"
+"    la llista, de manera que al capdamunt de la pila hi queda el directori\n"
+"    de treball corrent.  Sense arguments, intercanvia els dos directoris de\n"
+"    més amunt.\n"
 "\n"
 "    Opcions:\n"
 "      -n        Omet el canvi de directori quan s'afegeixen directoris a la\n"
-"                pila, de manera que només canvia la pila.\n"
+"                pila, de manera que només canvia el contingut de la pila.\n"
 "\n"
 "    Arguments:\n"
 "\n"
 "      +N        Gira la llista de manera tal que l'N-èssim directori\n"
-"                (comptant des de l'esquerra de la llista que mostra `dirs',\n"
+"                (comptant des de l'esquerra de la llista que mostra «dirs»,\n"
 "                començant des de zero) queda a dalt de tot.\n"
 "\n"
 "      -N        Gira la llista de manera tal que l'N-èssim directori\n"
-"                (comptant des de la dreta de la llista que mostra `dirs',\n"
+"                (comptant des de la dreta de la llista que mostra «dirs»,\n"
 "                començant des de zero) queda a dalt de tot.\n"
 "\n"
-"      dir       Afegeix DIR a dalt de tot de la pila de directoris, i el\n"
+"      dir       Afegeix DIR al capdamunt de la pila de directoris, i el\n"
 "                converteix en el nou directori de treball corrent.\n"
 "\n"
-"    Podeu visualitzar la pila de directoris amb l'ordre `dirs'.<\n"
+"    Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit, excepte si s'ha rebut un argument invàlid, o el canvi de\n"
 "    directori falla."
 
-#: builtins.c:1837
-#, fuzzy
+# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
+# enrere en aquest fitxer
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5455,32 +5454,33 @@ msgstr ""
 "Treu directoris de la pila.\n"
 "\n"
 "    Elimina entrades de la pila de directoris.  Sense arguments, elimina el\n"
-"    directori de dalt de tot de la pila, i canvia al nou directori de dalt\n"
-"    de la pila.\n"
+"    directori al capdamunt de la pila, i canvia al nou directori de dalt de\n"
+"    la pila.\n"
 "\n"
 "    Opcions:\n"
-"      -n       Evita el canvi de directori quan s'eliminen directoris de la\n"
-"               pila, de manera que només es manipula la pila.\n"
+"      -n       Omet el canvi de directori quan s'eliminen directoris de la\n"
+"               pila, de manera que només canvia el contingut de la pila.\n"
 "\n"
 "    Arguments:\n"
 "      +N       Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n"
-"               llista que mostra `dirs', començant des de zero.  Per\n"
-"               exemple: `popd +0' elimina el primer directori, i `popd +1'\n"
+"               llista que mostra «dirs», començant des de zero.  Per\n"
+"               exemple: «popd +0» elimina el primer directori, i «popd +1»\n"
 "               el segon.\n"
 "\n"
 "      -N       Elimina l'entrada N-èssima, comptant des de la dreta de la\n"
-"               llista que mostra `dirs', començant des de zero.  Per\n"
-"               exemple: `popd -0' elimina l'últim directori, i `popd -1' el\n"
+"               llista que mostra «dirs», començant des de zero.  Per\n"
+"               exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n"
 "               penúltim.\n"
 "\n"
-"    Podeu visualitzar la pila de directoris amb l'ordre `dirs'.\n"
+"    Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n"
 "\n"
 "    Estat de sortida:\n"
 "    Torna èxit, excepte si es rep un argument invàlid o el canvi de\n"
 "    directori falla."
 
-#: builtins.c:1867
-#, fuzzy
+# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
+# enrere en aquest fitxer
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5510,13 +5510,13 @@ msgid ""
 msgstr ""
 "Mostra la pila de directoris.\n"
 "\n"
-"    Mostra la llista actual de directoris recordats.  Els directoris entren\n"
-"    a la llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n"
-"    directoris enrere amb l'ordre `popd'.\n"
+"    Mostra la llista actual de directoris recordats.  Els directoris n\n"
+"    afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n"
+"    de directoris cap enrere amb l'ordre «popd».\n"
 "\n"
 "    Opcions:\n"
 "      -c        neteja la pila, esborrant-ne tots els elements\n"
-"      -l        no mostra les versions abreviades (prefix ~) en els\n"
+"      -l        no mostra les versions abreviades (amb el prefix ~) dels\n"
 "                directoris relatius al vostre directori personal\n"
 "      -p        mostra la pila, una entrada per línia\n"
 "      -v        mostra la pila, una entrada per línia indicant la posició a\n"
@@ -5524,25 +5524,25 @@ msgstr ""
 "\n"
 "    Arguments:\n"
 "      +N        Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n"
-"                llista mostrada per `dirs' quan s'invoca sense opcions, \n"
+"                llista mostrada per «dirs» quan s'invoca sense opcions, \n"
 "                començant des de zero.\n"
 "\n"
 "      -N        Mostra l'entrada N-èssima, comptant des de la dreta de la\n"
-"                llista mostrada per `dirs' quan s'invoca sense opcions,\n"
-"                començant des de zero.<\n"
+"                llista mostrada per «dirs» quan s'invoca sense opcions,\n"
+"                començant des de zero.\n"
 "\n"
 "    Estat de sortida:\n"
 "    Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
 "    error."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5557,22 +5557,21 @@ msgid ""
 msgstr ""
 "Activa i desactiva opcions de l'intèrpret.\n"
 "\n"
-"    Canvia l'estat de cada OPCIÓ.  Si no s'especifica cap OPCIÓ, mostra una\n"
+"    Canvia l'estat de cada OPCIÓ.  Si no especifiqueu cap OPCIÓ, mostra una\n"
 "    llista de totes les opcions indicant si estan activades o no.\n"
 "\n"
 "    Opcions:\n"
-"      -o        limita les opcions a les que es poden canviar amb `set -o'\n"
+"      -o        limita les opcions a les que es poden canviar amb «set -o»\n"
 "      -p\tmostra totes les opcions indicant-ne l'estat\n"
 "      -q\tsuprimeix la sortida\n"
 "      -s\tactiva OPCIÓ\n"
 "      -u\tdesactiva OPCIÓ\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit si OPCIÓ està activada; falla si s'especifica una opció\n"
+"    Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n"
 "    invàlida o OPCIÓ està desactivada."
 
-#: builtins.c:1919
-#, fuzzy
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5640,7 +5639,7 @@ msgstr ""
 "    Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
 "    error d'assignació o d'escriptura."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5659,10 +5658,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5671,11 +5674,10 @@ msgstr ""
 "\n"
 "    Per a cada NOM, especifica com s'han de completar els arguments.  Si no\n"
 "    s'indica cap opció, les especificacions de compleció existents es\n"
-"    mostren en un format que permet la reutilització com a entrada.\n"
+"    mostren en un format que permet reutilitzar-les com a entrada.\n"
 "\n"
 "    Opcions:\n"
-"      -p        mostra les especificacions existents en un format "
-"reciclable\n"
+"      -p        mostra les especificacions existents en format reciclable\n"
 "      -r        suprimeix l'especificació de compleció per a NOM, o, si no\n"
 "      \t\ts'indica cap NOM, totes les especificacions de compleció\n"
 "      -D        assigna les accions o complecions a totes les ordres que no\n"
@@ -5685,13 +5687,12 @@ msgstr ""
 "\n"
 "    Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n"
 "    les opcions -D i -E apareixen al paràgraf anterior.  L'opció -D té\n"
-"    preferència sobre la -E.\n"
+"    preferència sobre l'opció -E.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si es passa una opció invàlida o es produeix un\n"
-"    error."
+"    Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5707,14 +5708,14 @@ msgstr ""
 "\n"
 "    Aquesta ordre està pensada per a ser utilitzada en una funció que "
 "generi\n"
-"    possibles complecions.  Si s'especifica l'argument opcional PARAULA, es\n"
+"    possibles complecions.  Si especifiqueu l'argument opcional PARAULA, es\n"
 "    limiten les complecions a aquelles que coincideixen amb PARAULA.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit excepte si es passa una opció invàlida o es produeix un\n"
-"    error."
+"    Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5729,6 +5730,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5746,7 +5748,7 @@ msgid ""
 msgstr ""
 "Modifica o mostra opcions de compleció.\n"
 "\n"
-"    Modifica les opcions de compleció de NOM, o, si no s'especifica cap "
+"    Modifica les opcions de compleció de NOM, o, si no especifiqueu cap "
 "NOM,\n"
 "    la compleció que s'està executant en el moment.  Si no s'indica cap\n"
 "    OPCIÓ, mostra les opcions de compleció per a cada NOM o\n"
@@ -5758,23 +5760,23 @@ msgstr ""
 "defecte\n"
 "        -E              Canvia les opcions de compleció d'ordres \"buides\"\n"
 "\n"
-"    Si utilitzeu `+o' en lloc de `-o', desactiva l'opció especificada.\n"
+"    Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n"
 "\n"
 "    Arguments:\n"
 "\n"
 "    Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n"
-"    especificació de compleció amb l'ordre interna `complete'.  Si no\n"
-"    s'especifica cap NOM, compopt s'ha de cridar des d'una funció "
+"    especificació de compleció amb l'ordre interna «complete».  Si no\n"
+"    especifiqueu cap NOM, compopt s'ha de cridar des d'una funció "
 "generadora\n"
 "    de complecions, i les opcions que es modifiquen afecten la generació de\n"
 "    complecions que s'està executant en aquell moment.\n"
 "\n"
 "    Estat de sortida: \n"
-"    Torna èxit, excepte si es passa alguna opció no vàlida o NOM no té\n"
+"    Torna èxit, excepte si passeu alguna opció no vàlida o NOM no té\n"
 "    definida cap especificació de compleció."
 
-#: builtins.c:2026
-#, fuzzy
+# help readarray
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5818,38 +5820,41 @@ msgstr ""
 "Llegeix línies d'un fitxer cap a una variable vector.\n"
 "\n"
 "    Llegeix línies de l'entrada estàndard cap a la variable VECTOR, o del\n"
-"    descriptor de fitxer FD i s'especifica l'opció -u.  El vector per\n"
-"    defecte és la variable MAPFILE.\n"
+"    descriptor de fitxer FD si especifiqueu l'opció -u.  La variable vector\n"
+"    per defecte és MAPFILE.\n"
 "\n"
 "    Opcions:\n"
+"      -d delim  Usa DELIM com delimitador de línies, en lloc del caràcter "
+"de\n"
+"                salt de línia\n"
 "      -n nombre Copia com a màxim NOMBRE línies.  Si NOMBRE és 0, es copien\n"
 "    \t\ttotes les línies.\n"
-"      -0 origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n"
-"      -s nombre Descarta les primeres NOMBRE línies llegides.\n"
+"      -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n"
+"      -s nombre Descarta les primeres NOMBRE línies.\n"
 "      -t        Estripa el caràcter de salt de línia de cada línia llegida.\n"
 "      -u fd     Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n"
 "                estàndard.\n"
 "      -C callback         Avalua CALLBACK cada QUÀNTUM línies llegides.\n"
-"      -c quàntum          Especifica el nombre de línies llegides abans de\n"
-"                          cridar CALLBACK\n"
+"      -c quàntum          Nombre de línies llegides abans de cridar "
+"CALLBACK\n"
 "\n"
 "    Arguments:\n"
 "      VECTOR    Nom de la variable vector per a les dades.\n"
 "\n"
-"    Si s'especifica l'opció -C sense -c, el quàntum per defecte és 5000.\n"
+"    Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n"
 "    Quan s'avalua la funció CALLBACK, se li passa l'índex del proper "
 "element\n"
 "    del vector i la línia que s'assigna a aquest element, com a arguments\n"
 "    addicionals.\n"
 "\n"
-"    Si no s'especifica un origen explícit, se suprimeix qualsevol valor\n"
+"    Si no especifiqueu un origen explícit, se suprimeix qualsevol valor\n"
 "    assignat a VECTOR abans d'assignar cap valor.\n"
 "\n"
 "    Estat de sortida:\n"
-"    Torna èxit, excepte si es passa una opció no vàlida o VECTOR és de\n"
-"    només-lectura."
+"    Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n"
+"    lectura o no és una variable vector."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5857,7 +5862,7 @@ msgid ""
 msgstr ""
 "Llegeix línies d'un fitxer cap a una variable vector.\n"
 "\n"
-"    Un sinònim de `mapfile'."
+"    Un sinònim de «mapfile»."
 
 #, fuzzy
 #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
index 5d6ad4d4b17b24f2924f8e52708ffab20508c561..2bbe009551d9333fe1fd72e6446161fa4d4f08f2 100644 (file)
Binary files a/po/cs.gmo and b/po/cs.gmo differ
index a3686c98300102c88b00af55f716f0d2baa05d28..20b90a4258fa3b74494b23bb9d5353549e6a37f5 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
 # Copyright (C) 2008 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
-# Petr Pisar <petr.pisar@atlas.cz>, 2015.
+# Petr Pisar <petr.pisar@atlas.cz>, 2015, 2016, 2018.
 #
 # alias → alias
 # subscript → podskript
 # subroutine → podprogram
 # completion options → možnosti doplňování
 # shell option → přepínač shellu (shopt)
-# Názvy signálu a stavů procesu by měly souhlasit se signal(7).
+# Názvy signálů a stavů procesu by měly souhlasit se signal(7).
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-17 12:43+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-11-29 19:52+01:00\n"
 "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: cs\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "chybný podskript pole"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: odstraňuje se atribut odkazu na název"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: číslované pole nezle převést na pole asociativní"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: neplatný klíč asociativního pole"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: přes nečíselný indexu nelze dosadit"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskript"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nelze vytvořit: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu "
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: první nebílý znak není „\"“"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "ne zavírající „%c“ v %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: chybí dvojtečkový oddělovač"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "závorková expanze: nelze alokovat paměť pro %s"
 
 # TODO: pluralize
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "závorková expanze: alokace paměti pro %d prvků selhala"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "závorková expanze: alokace paměti pro %u prvků selhala"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "závorková expanze: alokace paměti pro „%s“ selhala"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s“: chybný název aliasu"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "upravování řádku není povoleno"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s“: chybný název klávesové mapy"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nelze číst: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s“: nelze zrušit vazbu"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s“: neznámé jméno funkce"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s není svázán s žádnou klávesou.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s lze vyvolat přes "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: nelze zrušit vazbu"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "počet smyček"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "má smysl jen ve smyčkách „for“, „while“ nebo „until“"
 
@@ -151,234 +152,233 @@ msgstr ""
 "    \n"
 "    Bez VÝRAZU vrátí "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "není nestavena HOME"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "příliš mnoho argumentů"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "vrcholového adresáře."
+msgstr "adresář s prázdným názvem"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "není nastaveno OLDPWD"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "řádek %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "varování: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: užití: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: přepínač vyžaduje argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: vyžadován číselný argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: nenalezeno"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: chybný přepínač"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: chybný název přepínače"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s“: není platným identifikátorem"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "neplatné osmičkové číslo"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "chybné šestnáctkové číslo"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "chybné číslo"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: chybné určení signálu"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s“: není PID ani platným označením úlohy"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: proměnná pouze pro čtení"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s mimo rozsah"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s mimo rozsah"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: žádná taková úloha"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: žádné řízení úloh"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "žádné řízení úloh"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: omezeno"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "omezeno"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: není vestavěným příkazem shellu"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "chyba zápisu: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "chyba při nastavování vlastností terminálu: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "chyba při získávání vlastností terminálu: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: chyba při zjišťování současného adresáře: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: nejednoznačné určení úlohy"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "k této verzi není dostupná nápověda"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: neplatný název akce"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: žádné doplňování neurčeno"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "varování: přepínač -F možná nebude dělat, co jste čekali"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "varování: přepínač -C možná nebude dělat, co jste čekali"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "doplňovací funkce se právě nevykonává"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "může být použito jen ve funkci"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: proměnná s odkazem nemůže být polem"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: proměnná s odkazem na název nemůže odkazovat sama na sebe"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: kruhový odkaz na název"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: neplatný název proměnné pro odkaz na název"
+msgstr "„%s“: neplatný název proměnné pro odkaz na název"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "„-f“ nezle použít na výrobu funkce"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkce jen pro čtení"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: takto nelze likvidovat pole"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: asociativní pole nelze převést na číslované pole"
@@ -412,70 +412,70 @@ msgstr "%s: není dynamicky nahráno"
 msgid "%s: cannot delete: %s"
 msgstr "%s: nelze smazat: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: je adresářem"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: není obyčejný soubor"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: soubor je příliš velký"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: binární soubor nelze spustit"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nelze provést: %s"
 
 # XXX: Toto je zpráva interaktivního shellu při příkazu exit informující
 # o odhlášení
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "odhlášení\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "toto není login shell: použijte „exit“"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Jsou zde pozastavené úlohy.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Jsou zde běžící úlohy.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "žádný příkaz nenalezen"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "určení historie"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: dočasný soubor nelze otevřít: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "současný"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "úloha %d spuštěna bez správy úloh"
@@ -490,29 +490,28 @@ msgstr "%s: chybný přepínač – %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: přepínač vyžaduje argument – %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashování zakázáno"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tabulka hashů je prázdná\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "zásahů\tpříkaz\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Příkazy shellu shodující se s klíčovým slovem „"
 msgstr[1] "Příkazy shellu shodující se s klíčovými slovy „"
 msgstr[2] "Příkazy shellu shodující se s klíčovými slovy „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -520,12 +519,12 @@ msgstr ""
 "žádné téma nápovědy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ "
 "nebo „info %s“."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nelze otevřít: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -545,20 +544,21 @@ msgstr ""
 "Hvězdička (*) vedle jména znamená, že příkaz je zakázán.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "nelze použít více jak jeden z -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "místo v historii"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: chybný argument"
+msgstr "%s: neplatný časový údaj"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: expanze historie selhala"
@@ -572,16 +572,16 @@ msgstr "%s: inlib selhala"
 msgid "no other options allowed with `-x'"
 msgstr "s „-x“ nejsou dovoleny další přepínače"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenty musí být proces nebo identifikátor úlohy"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Neznámá chyba"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "očekáván výraz"
 
@@ -590,69 +590,69 @@ msgstr "očekáván výraz"
 msgid "%s: not an indexed array"
 msgstr "%s: není (proměnnou typu) indexované pole"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: chybné určení deskriptoru souboru"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: neplatný deskriptor souboru: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: chybný počet řádků"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: chybný počátek pole"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: neplatné množství mezi voláními"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "prázdný název proměnné typu pole"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "je vyžadována podpora proměnných typu pole"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s“: postrádám formátovací znak"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "„%c“: chybné určení časového limitu"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c“: neplatný formátovací znak"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "varování: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "potíže s rozebráním formátovacího řetězce: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "u \\x chybí šestnáctková číslovka"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "u \\%c chybí unikódová číslovka"
@@ -666,19 +666,19 @@ msgstr "žádný další adresář"
 msgid "%s: invalid argument"
 msgstr "%s: chybný argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<žádný aktuální adresář>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "prázdný zásobník adresářů"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "pořadí v zásobníku adresářů"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -720,7 +720,7 @@ msgstr ""
 "      -N\tZobrazí N. položku počítáno zprava na seznamu, který zobrazuje\n"
 "    \tdirs, když je vyvolán bez přepínačů, počínaje nulou."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -765,7 +765,7 @@ msgstr ""
 "    \n"
 "    Zásobník adresářů si můžete prohlédnout příkazem „dirs“."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -809,40 +809,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: chybné určení časového limitu"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "chyba čtení: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "„return“ lze provést jen z funkce nebo skriptu načteného přes „source“"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "funkci i proměnnou nelze rušit současně"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nelze zrušit"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nelze zrušit: %s jen pro čtení"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: není (proměnnou typu) pole"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: není funkcí"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: nelze exportovat"
@@ -851,20 +851,20 @@ msgstr "%s: nelze exportovat"
 msgid "shift count"
 msgstr "počet shiftů"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "přepínač shellu nelze zároveň nastavit a zrušit"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: chybný název přepínače shellu"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "vyžadován argument s názvem souboru"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: soubor nenalezen"
@@ -877,61 +877,61 @@ msgstr "nelze pozastavit"
 msgid "cannot suspend a login shell"
 msgstr "login shell nelze pozastavit"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s je alias na „%s“\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s je klíčové slovo shellu\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s je funkce\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s je zvláštní součást shellu\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s je součást shellu\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s je %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s je zahashován (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: chybný argument s limitou"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c“: chybný příkaz"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: limit nelze zjistit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: limit nelze změnit: %s"
@@ -950,359 +950,367 @@ msgstr "„%c“: chybný operátor symbolických práv"
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c“: chybný znak symbolický práv "
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " řádek "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "poslední příkaz: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Ukončuji…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORMACE: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "chyba neznámého příkazu"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "chybný druh příkazu"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "chybný konektor"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "chybný skok"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: nevázaná proměnná"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\ačasový limit pro čekání na vstup vypršel: automatické odhlášení\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "standardní vstup nelze přesměrovat z /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: „%c“: chybný formátovací znak"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: koproces [%d:%s] stále existuje"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "chyba v rouře"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: maximální úroveň zanoření funkce eval byla překročena (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximální úroveň zanoření funkce source byla překročena (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximální úroveň zanoření funkcí byla překročena (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: omezeno: v názvu příkazu nesmí být „/“"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: příkaz nenalezen"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: chybný interpretr"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: binární soubor nelze spustit: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "„%s“: je zvláštní vestavěný příkaz shellu"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "úroveň rekurze výrazu byla překročena"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "zásobník rekurze podtekl"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntaktická chyba ve výrazu"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "pokus o přiřazení do ne-proměnné"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "syntaktická chyba v přiřazení do proměnné"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "dělení nulou"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "chyba: chybný expassing token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "v podmíněném výrazu očekávána „:“"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "mocnitel menší než 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "po přednostním zvýšení nebo snížení očekáván identifikátor"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "postrádám „)“"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntaktická chyba: očekáván operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntaktická chyba: chybný aritmetický operátor"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (chybný token je „%s“)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "chybný aritmetický základ"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "hodnot je pro základ příliš velká"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: chyba výrazu\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: rodičovské adresáře nejsou přístupné"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "na deskriptoru %d nelze resetovat režim nodelay"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "nový deskriptor souboru pro vstup bashe z deskr. %d nelze alokovat"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp roury"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "forknutý PID %d se objevil v běžící úloze %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: proces %5ld (%s) do the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: PID %5ld (%s) označen za stále živého"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: žádný takový PID"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signál %d"
 
 # XXX: (úloha) dokončna. Používat ženský rod i unásledujících. Jedná se
 # o výpis úloh.
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Dokončena"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Pozastavena"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Pozastavena (%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Běží"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Dokončena (%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Ukončena %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Stav neznámý"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped [obraz paměti uložen]) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (cwd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid na potomku (z %ld na %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: PID %ld není potomkem tohoto shellu"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Žádný záznam o procesu %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: úloha %d je pozastavena"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: úloha skončila"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: úloha %d je již na pozadí"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurčitému zablokování"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: řádek %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped [obraz paměti uložen])"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(cwd nyní: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp selhalo"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: správa úloh nefunguje na pozadí"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: disciplína linky"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "nelze nastavit skupinu procesů terminálu (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "žádná správa úloh v tomto shellu"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: předpoklad nesplněn: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1311,39 +1319,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: zbabraný předpoklad\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "není známo"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blok v seznamu uvolněných zbit"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: zavoláno s argumentem již uvolněného bloku"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: zavoláno s argumentem nenaalokovaného bloku"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: zjištěno podtečení, mh_nbytes mimo rozsah"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: velikosti počátečního a koncového kusu se liší"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: zjištěno podtečení, mh_nbytes mimo rozsah"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: velikosti počátečního a koncového kusu se liší"
 
@@ -1385,22 +1393,22 @@ msgstr "%s: chybné určení síťové cesty"
 msgid "network operations not supported"
 msgstr "síťové operace nejsou podporovány"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: národní prostředí nelze změnit (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s"
@@ -1418,153 +1426,155 @@ msgstr "V $_ máte novou poštu"
 msgid "The mail in %s has been read\n"
 msgstr "Pošta v %s je přečtená\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "chyba syntaxe: vyžadován aritmetický výraz"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "chyba syntaxe: neočekávaný „;“"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "chyba syntaxe: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: chybný druh instrukce %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "„here“ dokument na řádku %d ukončen koncem souboru (požadováno „%s“)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek "
+"zkrácen"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "maximální počet here dokumentů překročen"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "neočekávaný konec souboru při hledání znaku odpovídajícímu „%c“"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "neočekávaný konec souboru při hledání „]]“"
 
 # XXX: Condional means condition (adj.) probably. Can English distinguish
 # between the condition (podmínkový) and the code branch (podmíněný)? Check
 # for all "conditional" string occurences.
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "chyba syntaxe ve výrazu podmínky: neočekávaný token „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "chyba syntaxe ve výrazu podmínky"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "neočekávaný token „%s“, očekávána „)“"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "očekávána „)“"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "neočekávaný argument „%s“ u podmínkového unárního operátoru"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "neočekávaný argument u podmínkového unárního operátoru"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "neočekávaný token „%s“, očekáván podmínkový binární operátor"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "očekáván podmínkový binární operátor"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "neočekávaný argument „%s„ u podmínkového binárního operátoru"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "neočekávaný argument u podmínkového binárního operátoru"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "neočekávaný token „%c“ v podmínkovém příkazu"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "neočekávaný token „%s“ v podmínkovém příkazu"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "neočekávaný token %d v podmínkovém příkazu"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "chyba syntaxe poblíž neočekávaného tokenu „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "chyba syntaxe poblíž „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "chyba syntaxe: nenadálý konec souboru"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "chyba syntaxe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Shell lze ukončit příkazem „%s“.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "nenadálý konec souboru při hledání odpovídající „)“"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "doplňování: funkce „%s“ nenalezena"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: možná smyčka opakování"
 
 #: pcomplib.c:182
 #, c-format
@@ -1591,90 +1601,94 @@ msgstr "xtrace_set: nullový ukazatel na souboru"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace: fd (%d) != fileno fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c“: chybný formátovací znak"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "deskriptor souboru mimo rozsah"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: nejednoznačné přesměrování"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: existující soubor nelze přepsat"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: omezeno: výstup nelze přesměrovat"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "pro „here“ dokument nelze vytvořit dočasný soubor: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: deskriptor souboru nelze přiřadit do proměnné"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "nelze nalézt /tmp, vytvořte jej, prosím!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp musí být platným názvem pro adresář"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "v interaktivních shellech se režim krásného výpisu nepoužije"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: chybný přepínač"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "UID nelze nastavit na %d: efektivní UID je %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "GID nelze nastavit na %d: efektivní GID je %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "debuger nelze spustit, ladicí režim zakázán"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Je adresářem"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nemám žádné jméno!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, verze %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1683,53 +1697,53 @@ msgstr ""
 "Použití:\t%s [Dlouhý GNU přepínač] [přepínač]…\n"
 "\t%s [Dlouhý GNU přepínač] [přepínač] skriptový_soubor…\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Dlouhé GNU přepínače:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Přepínače shellu:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_přepínač\t(pouze při vyvolání)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s nebo -o přepínač\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Podrobnosti o přepínačích shellu získáte tím, že napíšete „%s -c \"help set"
 "\"“.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Podrobnosti o příkazech vestavěných do shellu získáte tím, že\n"
 "napište „%s -c help“.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Chyby nahlásíte příkazem „bashbug“.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Domovská stránka bashe: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "Obecný návod na použití softwaru GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: neplatná operace"
@@ -1907,92 +1921,96 @@ msgstr "Neznámé číslo signálu"
 msgid "Unknown Signal #%d"
 msgstr "Neznámý signál č. %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: seznam nelze přiřadit do prvku pole"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "nelze vyrobit rouru za účelem substituce procesu"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "nelze vytvořit potomka za účelem substituce procesu"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "pojmenovanou rouru %s nelze otevřít pro čtení"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "pojmenovanou rouru %s nelze otevřít pro zápis"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "chybná substituce: v %s chybí uzavírací „`“"
+msgstr "substituce příkazu: nulový bajt ve vstupu ignorován"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "nelze vytvořit rouru pro substituci příkazu"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "nelze vytvořit potomka pro substituci příkazu"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: neplatný název proměnné pro odkaz na název"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: chybná substituce"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: chybná nepřímá expanze"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: chybný název proměnné"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametr nenastaven"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametr null nebo nenastaven"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: výraz podřetězce < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: chybná substituce"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: takto nelze přiřazovat"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2000,12 +2018,12 @@ msgstr ""
 "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou "
 "substituci"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "chybná substituce: v %s chybí uzavírací „`“"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "žádná shoda: %s"
@@ -2028,114 +2046,120 @@ msgstr "očekávána „)“"
 msgid "`)' expected, found %s"
 msgstr "očekávána „)“, nalezeno %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: očekáván unární operátor"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: očekáván binární operátor"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "postrádám „]“"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "neplatné číslo signálu"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+"obsluha signálů: maximální úroveň zanoření obsluhy signálů byla překročena (%"
+"d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: obsluha signálu je SIG_DFL, přeposílám %d (%s) sobě"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: chybný signál %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "chyba při importu definice „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "úroveň shellu (%d) příliš vysoká, resetuji na 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: hodnotu nelze do proměnné přiřadit"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: neplatný název proměnné pro odkaz na název"
+msgstr "%s: přiřazení čísla odkazu na název"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s: má nullový exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "neplatný znak %d v exportstr pro %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "v exportstr pro %s chybí „=“"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: hlava shell_variables není kontextem funkce"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: chybí kontext global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: hlava shell_variables není dočasným rozsahem prostředí"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: nelze otevřít jako SOUBOR"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: hodnota kompatibility je mimo rozsah"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright © 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright © 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2158,22 +2182,22 @@ msgstr "Toto je svobodné programové vybavení: máte právo jej měnit a ší
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "VEŠKERÉ ZÁRUKY chybí, jak jen zákon dovoluje."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: nezle alokovat %'lu bajtů"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: nelze alokovat %'lu bajtů"
@@ -2301,9 +2325,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [úloha…]"
+msgstr "disown [-h] [-ar] [úloha… | PID…]"
 
 #: builtins.c:134
 msgid ""
@@ -2385,8 +2408,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mód]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id…]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id…]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2430,7 +2453,7 @@ msgstr "until PŘÍKAZY; do PŘÍKAZY; done"
 
 #: builtins.c:200
 msgid "coproc [NAME] command [redirections]"
-msgstr "command [NÁZEV] příkaz [přesměrování]"
+msgstr "coproc [NÁZEV] příkaz [přesměrování]"
 
 #: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
@@ -2479,12 +2502,12 @@ msgstr "printf [-v proměnná] formát [argumenty]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o přepínač] [-A akce] [-G globvzor] [-"
-"W seznam_slov]  [-F funkce] [-C příkaz] [-X filtrvzor] [-P předpona] [-S "
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o přepínač] [-A akce] [-G globvzor] "
+"[-W seznam_slov]  [-F funkce] [-C příkaz] [-X filtrvzor] [-P předpona] [-S "
 "přípona] [název…]"
 
 #: builtins.c:235
@@ -2497,8 +2520,8 @@ msgstr ""
 "přípona] [slovo]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o možnost] [-DE] [název…]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o možnost] [-DEI] [název…]"
 
 #: builtins.c:242
 msgid ""
@@ -2510,11 +2533,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n počet] [-O počátek] [-s počet] [-t] [-u FD] [-C volání] [-c "
-"množství] [pole]"
+"readarray [-d oddělovač] [-n počet] [-O počátek] [-s počet] [-t] [-u FD] [-C "
+"volání] [-c množství] [pole]"
 
 #: builtins.c:256
 msgid ""
@@ -2701,7 +2724,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Provede vestavěný příkaz shellu.\n"
 "    \n"
@@ -2945,11 +2968,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2982,11 +3005,11 @@ msgstr ""
 "      -a  učiní NÁZVY číslovanými poli (je-li podporováno)\n"
 "      -A  učiní NÁZVY asociativními poli (je-li podporováno)\n"
 "      -i  přiřadí NÁZVŮM atribut „integer“ (číslo)\n"
-"      -l  převede NÁZVY na malá písmena v době přiřazení\n"
+"      -l  převede hodnotu každého NÁZVU na malá písmena v době přiřazení\n"
 "      -n  učiní NÁZEV odkazem na proměnnou pojmenovanou podle své hodnoty\n"
 "      -r  učiní NÁZVY jen pro čtení\n"
 "      -t  přiřadí NÁZVŮM atribut „trace“ (sledování)\n"
-"      -u  převede NÁZVY na velká písmena v době přiřazení\n"
+"      -u  převede hodnotu každého NÁZVU na velká písmena v době přiřazení\n"
 "      -x  vyexportuje NÁZVY\n"
 "    \n"
 "    Pomocí „+“ namísto „-“ daný atribut vypnete.\n"
@@ -3003,15 +3026,14 @@ msgstr ""
 "    přiřazování do proměnné."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
 "    A synonym for `declare'.  See `help declare'."
 msgstr ""
-"Nastaví hodnoty a atributy proměnných\n"
+"Nastaví hodnoty a atributy proměnných.\n"
 "    \n"
-"    Příkaz je zastaralý. Vizte „help declare“."
+"    Synonymum pro „declare“. Vizte „help declare“."
 
 #: builtins.c:538
 msgid ""
@@ -3042,6 +3064,7 @@ msgstr ""
 "    přiřazování do proměnné a vykonává-li shell funkci."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3070,6 +3093,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3106,7 +3135,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrací úspěch, nedojde-li k chybě zápisu na výstup."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3127,7 +3156,7 @@ msgstr ""
 "    \n"
 "    Vrací úspěch, nedojte-li k chybě zápisu na výstup."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3181,7 +3210,7 @@ msgstr ""
 "    Vrací úspěch, je-li NÁZEV vestavěným příkazem shellu a nevyskytne-li\n"
 "    se chyba."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3199,7 +3228,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí návratový kód příkazu, nebo úspěch, byl-li příkaz prázdný."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3282,7 +3311,7 @@ msgstr ""
 "dojde\n"
 "    na konec přepínačů nebo nastane-li chyba."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3323,7 +3352,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud byl PŘÍKAZ nalezen a nedošlo k chybě přesměrování."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3335,7 +3364,7 @@ msgstr ""
 "    Ukončí tento shell se stavem N. Bez N bude návratový kód roven kódu\n"
 "    posledně prováděného příkazu."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3348,7 +3377,7 @@ msgstr ""
 "    Ukončí přihlašovací (login) shell se stavem N. Nebyl-li příkaz zavolán\n"
 "    z přihlašovacího shellu, vrátí chybu."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3401,7 +3430,7 @@ msgstr ""
 "    Vrátí úspěch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n"
 "    chyba."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3422,7 +3451,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Kód úlohy přesunuté do popředí, nebo došlo-li k chybě, kód selhání."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3444,7 +3473,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud je správa úloh zapnuta a nedošlo-li k nějaké chybě."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3489,7 +3518,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud byl NÁZEV nalezen a nebyl-li zadán neplatný přepínač."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3504,7 +3533,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3529,9 +3558,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrací úspěch, pokud byl nalezen VZOREK a nebyl zadán neplatný přepínač."
 
-# FIXME: bash-4.0-pre1: Orphaned line between -w and -p option. It belongs to -n.
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3540,7 +3567,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3571,7 +3599,9 @@ msgstr ""
 "    \n"
 "    Přepínače:\n"
 "      -c  vyprázdní seznam historie smazáním všech položek\n"
-"      -d pozice  smaže ze seznamu historie položku na pozici POZICE\n"
+"      -d pozice  smaže položku ze seznamu historie na pozici POZICE. "
+"Záporné\n"
+"          pozice se počítají od konce seznamu historie.\n"
 "    \n"
 "      -a  připojí řádky historie z této relace do souboru historie\n"
 "      -n  načte všechny řádky historie, které ještě nebyly načteny,\n"
@@ -3596,7 +3626,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedošlo k chybě."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3641,7 +3671,7 @@ msgstr ""
 "chyba.\n"
 "    Byl-ly použit přepínač -x, vrátí návratový kód PŘÍKAZU."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3671,8 +3701,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo ÚLOHA."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3707,6 +3736,7 @@ msgstr ""
 "              se za to, že se jedná o čísla signálů, pro které se mají "
 "vyspat\n"
 "              jejich názvy.\n"
+"      -L      synonymum pro -l\n"
 "    \n"
 "    Kill je vestavěný příkaz shellu ze dvou důvodů: umožňuje použít\n"
 "    identifikátory úloh namísto ID procesů a umožní zabíjet procesy i poté,\n"
@@ -3715,7 +3745,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedošlo k chybě."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3802,7 +3832,7 @@ msgstr ""
 "    Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n"
 "    navrácena 0."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3823,7 +3853,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3871,8 +3901,7 @@ msgstr ""
 "                    počínaje indexem nula\n"
 "      -d oddělovač  pokračuje, dokud není načten první znak ODDĚLOVAČE\n"
 "                    namísto nového řádku\n"
-"      -e            v interaktivním shellu bude řádek načten pomocí "
-"Readline\n"
+"      -e            načte řádek pomocí knihovny Readline\n"
 "      -i text       použije TEXT jako prvotní text pro Readline\n"
 "      -n p_znaků    vrátí řízení po načtení P_ZNAKŮ znaků, místo čekání na\n"
 "                    nový řádek, avšak respektuje oddělovač, je-li méně než\n"
@@ -3907,7 +3936,7 @@ msgstr ""
 "souboru\n"
 "    jako argument -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3929,8 +3958,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4084,8 +4112,8 @@ msgstr ""
 "          zapnut při interaktivním shellu.\n"
 "      -P  Je-li nastaveno, nebudou vyhodnocovány symbolické odkazy při\n"
 "          provádění příkazů jako změna pracovního adresáře pomocí „cd“.\n"
-"      -T  Je-li nastaveno, trap DEBUG (obsluha ladění) bude děděna do\n"
-"          funkcí shellu.\n"
+"      -T  Je-li nastaveno, trap DEBUG (obsluha ladění) a RETURN (návrat\n"
+"          z podprogramu) bude děděn do funkcí shellu.\n"
 "      --  Přiřadí jakékoliv zbývající argumenty do pozičních parametrů.\n"
 "          Neexistují-li žádné zbývající argumenty, poziční parametry budou\n"
 "          odstraněny.\n"
@@ -4103,7 +4131,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný argument."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4144,7 +4172,7 @@ msgstr ""
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a JMÉNO není jen pro\n"
 "    čtení."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4179,7 +4207,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4219,7 +4247,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4237,7 +4265,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud N není záporný a není větší než $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4261,7 +4289,7 @@ msgstr ""
 "    Vrací návratový kód posledního provedeného příkazu z NÁZVU_SOUBORU.\n"
 "    Selže, pokud NÁZEV_SOUBORU nelze načíst."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4285,7 +4313,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4455,7 +4483,7 @@ msgstr ""
 "    Vrací úspěch, je-li VÝRAZ vyhodnocen jako pravdivý. Selže, je-li VÝRAZ\n"
 "    vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4467,7 +4495,7 @@ msgstr ""
 "    Toto je synonymum pro vestavěný příkaz „test“, až na to, že poslední\n"
 "    argument musí být doslovně „]“, aby se shodoval s otevírající „[“."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4487,7 +4515,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vždy uspěje."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4571,7 +4599,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud SIGSPEC a zadané přepínače jsou platné."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4627,7 +4655,7 @@ msgstr ""
 "    Vrátí úspěch, pokud všechny NÁZVY byly nalezeny. Selže, pokud některé\n"
 "    nalezeny nebyly."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4722,7 +4750,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vrací úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4755,7 +4783,7 @@ msgstr ""
 "    Návratový kód\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný MÓD nebo přepínač."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4763,13 +4791,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4786,11 +4816,14 @@ msgstr ""
 "    Je-li zadán přepínač -n, počká na ukončení další úlohy a vrátí její\n"
 "    návratový kód.\n"
 "    \n"
+"    Je-li zadán přepínač -f a je-li zapnuta správa úloh, počká na ukončení\n"
+"    ukončení zadaného ID, místo aby čekal na změnu jeho stavu.\n"
+"    \n"
 "    Návratový kód:\n"
 "    Vrátí kód posledního ID. Selže, pokud ID není platný nebo byl zadán\n"
 "    neplatný přepínač."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4814,7 +4847,7 @@ msgstr ""
 "    Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n"
 "    neplatný přepínač."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4838,7 +4871,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy provedeného příkazu."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4867,7 +4900,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy vykonaného příkazu."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4909,7 +4942,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy prováděného příkazu."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4940,7 +4973,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Návratová hodnota je návratová hodnota KOLONY."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4958,7 +4991,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy provedeného příkazu."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4993,7 +5026,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy provedeného příkazu."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5012,7 +5045,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy provedeného příkazu."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5030,8 +5063,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy provedeného příkazu."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5051,9 +5083,9 @@ msgstr ""
 "    tohoto shellu pod indexem 0 a 1. Implicitní NÁZEV je „COPROC“.\n"
 "    \n"
 "    Návratový kód:\n"
-"    Vrátí návratový kód PŘÍKAZU."
+"    Příkaz coproc vrací návratový kód 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5078,7 +5110,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud NÁZEV není jen pro čtení."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5095,7 +5127,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód naposledy spuštěného příkazu."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5120,7 +5152,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí kód obnovené úlohy."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5142,7 +5174,7 @@ msgstr ""
 # příkaz, který by byl vykonán na základě splnění jiné podmínky. Tj. překlad
 # „podmíněný příkaz“ je chybný.
 # Toto je nápověda k vestavěnému příkazu „[“.
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5194,7 +5226,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    0 nebo 1 podle hodnoty VÝRAZU."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5299,7 +5331,7 @@ msgstr ""
 "    \t\trozlišení, které příkazy by měly být uloženy do seznamu\n"
 "    \t\thistorie.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5356,7 +5388,7 @@ msgstr ""
 "    Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n"
 "    neselhala."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5406,7 +5438,7 @@ msgstr ""
 "    Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n"
 "    adresáře."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5457,14 +5489,13 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5480,9 +5511,9 @@ msgstr ""
 "Zapne nebo vypne volby (přepínače) shellu.\n"
 "    \n"
 "    Změní nastavení každého přepínače shellu NÁZEV_VOLBY. Bez přepínačových\n"
-"    argumentů vypíše seznam všech přepínačů shellu s příznakem, zda je, "
-"nebo\n"
-"    není nastaven.\n"
+"    argumentů vypíše každý zadaný NÁZEV_VOLBY, nebo seznam všech přepínačů\n"
+"    shellu, nebyl-li zadán žádný NÁZEV_VOLBY, s příznakem, zda je, nebo\n"
+"    není přepínač nastaven.\n"
 "    Přepínače:\n"
 "      -o\tomezí NÁZVY_VOLEB na ty, které jsou definovány pro použití\n"
 "    \ts „set -o“\n"
@@ -5495,7 +5526,7 @@ msgstr ""
 "    Vrátí úspěch, je-li NÁZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n"
 "    přepínač nebo je-li NÁZEV_VOLBY vypnut."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5568,7 +5599,8 @@ msgstr ""
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedošlo k chybě\n"
 "    zápisu nebo přiřazení."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5586,10 +5618,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5606,18 +5642,22 @@ msgstr ""
 "          žádný NÁZEV, zruší všechna pravidla\n"
 "      -D  použije pravidla doplňování a akce jako implicitní pro příkazy,\n"
 "          které nemají žádné určité pravidlo doplňování definováno\n"
-"      -E  použije pravidla doplňování á akce na „prázdné“ příkazy –\n"
+"      -E  použije pravidla doplňování a akce na „prázdné“ příkazy –\n"
 "          pravidla doplňování se uplatní na prázdný řádek\n"
+"      -I  použije pravidla doplňování a akce na první slovo (obvykle "
+"příkaz)\n"
 "    \n"
 "    Použije-li se doplňování, akce se uplatní v pořadí, v jakém jsou "
 "vypsány\n"
-"    přepínače psané velkými písmeny výše. Přepínač -D má přednost před\n"
-"    přepínačem -E.\n"
+"    přepínače psané velkými písmeny výše. Je-li zadáno více přepínačů,\n"
+"    přepínač -D bude upřednostněn před přepínačem -E. Oba přepínače "
+"přebíjejí\n"
+"    přepínač -I.\n"
 "    \n"
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5638,7 +5678,7 @@ msgstr ""
 "    Návratový kód:\n"
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5653,6 +5693,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5679,6 +5720,7 @@ msgstr ""
 "    \t-o možnost\tNastaví možnost doplňování MOŽNOST každému NÁZVU\n"
 "    \t-D\t\tZmění možnosti doplňování „implicitnímu“ příkazu\n"
 "    \t-E\t\tZmění možnosti doplňování „prázdnému“ příkazu\n"
+"    \t-I\t\tZmění možnosti doplňování prvnímu slovu\n"
 "    \n"
 "    Pomocí „+o“ namísto „-o“ zadanou možnost vypnete.\n"
 "    \n"
@@ -5696,7 +5738,7 @@ msgstr ""
 "definováno\n"
 "    pravidlo doplňování."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5774,7 +5816,7 @@ msgstr ""
 "    Vrátí úspěch, pokud nebyl zadán neplatný přepínač, POLE nebylo jen pro\n"
 "    čtení a bylo indexovaným polem."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 6aa94c4e2c250b8e724588a6c43eb5966e76d10b..a4b044e6a68349330697f6a372bf2def005fc793 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index 3bda8e51474a757e4aa01c72afff1d661f70a89a..d39234d4aadf68b583d077d4d88a3a3e5ca60fb8 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 4.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2011-03-18 01:36+0100\n"
 "Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -20,125 +20,126 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: da\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Generator: KBabel 1.11.4\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
 # Den er jeg altså ikke helt sikker på
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "ugyldigt arrayindeks"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: kan ikke konvertere indekseret til associativt array"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: ugyldig nøgle til associativt array"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: kan ikke tildele til ikkenumerisk indeks"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: kan ikke oprette %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: første ikke-blank-tegn er ikke '\"'"
 
 # Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det
 # FEJLRAPPORT
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "ingen afsluttende \"%c\" i %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: manglende kolonseparator"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, fuzzy, c-format
 msgid "`%s': invalid alias name"
 msgstr "\"%s\": ugyldigt tastetildelingsnavn"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "linjeredigering ikke slået til"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "\"%s\": ugyldigt tastetildelingsnavn"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: kan ikke læse: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "\"%s\": kan ikke løsne"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "\"%s\": ukendt funktionsnavn"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s er ikke bundet til nogen taster.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s kan kaldes via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "\"%s\": kan ikke løsne"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "løkketæller"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke"
 
@@ -152,234 +153,234 @@ msgstr ""
 "    \n"
 "    Når UDTRYK udelades returneres "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME ikke indstillet"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "for mange argumenter"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "ingen anden mappe"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD ikke indstillet"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linje %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "advarsel: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: brug: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: tilvalg kræver et argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: numerisk argument påkrævet"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: ikke fundet"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: ugyldigt tilvalg"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: ugyldigt tilvalgsnavn"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "\"%s\": ikke et gyldigt identificeringsnavn"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "ugyldigt oktaltal"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "ugyldigt heksadecimalt tal"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "ugyldigt tal"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: ugyldig signalspecifikation"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "\"%s\": ikke en pid eller gyldig job-spec"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: skrivebeskyttet variabel"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s udenfor rækkevidde"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s udenfor rækkevidde"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: intet sådant job"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ingen jobkontrol"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ingen jobkontrol"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: begrænset"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "begrænset"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ikke indbygget i skallen"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "skrivefejl: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "fejl ved indstilling af terminalattribut: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "fejl ved indhentning af terminalattribut: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: tvetydig job-spec"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: ugyldigt handlingsnavn"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: ingen fuldførselsspecifikation"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "advarsel: tilvalget -F vil måske ikke virke, som du forventer"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "advarsel: tilvalget -C vil måske ikke virke, som du forventer"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "ikke i gang med at eksekvere fuldførelsesfunktion"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "kan kun bruges i en funktion"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%d: ugyldig filbeskrivelse: %s"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%d: ugyldig filbeskrivelse: %s"
+msgstr "\"%s\": ugyldigt tastetildelingsnavn"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "kan ikke bruge \"-f\" til at lave funktioner"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: skrivebeskyttet funktion"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: kan ikke destruere arrayvariabel på denne måde"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: kan ikke konvertere associativt til indekseret array"
@@ -413,68 +414,68 @@ msgstr "%s: ikke dynamisk indlæst"
 msgid "%s: cannot delete: %s"
 msgstr "%s: kan ikke slette: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: er en mappe"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ikke en regulær fil"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: fil er for stor"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: kan ikke eksekvere binær fil"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: kan ikke eksekvere: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "log ud\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ikke en logind-skal: brug \"exit\""
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Der er stoppede job.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Der er kørende job.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "ingen kommando fundet"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "historikspecifikation"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: kan ikke åbne midl. fil: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "nuværende"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d startet uden jobkontrol"
@@ -489,30 +490,29 @@ msgstr "%s: ugyldigt tilvalg -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: et argument er påkrævet til tilvalget -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing slået fra"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hash-tabel tom\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "hits\tkommando\n"
 
 # Jeg antager at det sidste ` er det første af et sæt af anførselstegn og
 # det er derfor oversat til "
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Skalkommandoer som matcher nøgleordet \""
 msgstr[1] "Skal-kommandoer som matcher nøgleordene \""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -520,12 +520,12 @@ msgstr ""
 "ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" "
 "eller \"info %s\"."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: kan ikke åbne: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -547,20 +547,21 @@ msgstr ""
 "En stjerne (*) ved siden af et navn betyder at kommandoen er slået fra.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "kan ikke bruge mere end en af -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "historikposition"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: ugyldigt grænseargument"
+msgstr "%s: ugyldigt tilvalgsnavn"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: historikudvidelse fejlede"
@@ -574,16 +575,16 @@ msgstr "%s: inlib fejlede"
 msgid "no other options allowed with `-x'"
 msgstr "ingen andre tilvalg er tilladt sammen med \"-x\""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenter skal være processer eller job-id'er"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Ukendt fejl"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "forventede et udtryk"
 
@@ -592,70 +593,70 @@ msgstr "forventede et udtryk"
 msgid "%s: not an indexed array"
 msgstr "%s: ikke en arrayvariabel"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: ugyldig filbeskrivelsesspecifikation"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: ugyldig filbeskrivelse: %s"
 
 # -c     Specify the number of lines read between each call to callback.
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: ugyldigt antal linjer"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: ugyldig array-startindeks"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: ugyldigt tilbagekaldskvantum"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "tomt arrayvariabelnavn"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "understøttelse af arrayvariabel påkrævet"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "\"%s\": manglende formattegn"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, fuzzy, c-format
 msgid "`%c': invalid time format specification"
 msgstr "%s: ugyldig specifikation af tidsudløb"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "\"%c\": ugyldigt formattegn"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "advarsel: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "manglende heksciffer for \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, fuzzy, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "manglende heksciffer for \\x"
@@ -669,19 +670,19 @@ msgstr "ingen anden mappe"
 msgid "%s: invalid argument"
 msgstr "%s: ugyldigt grænseargument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<ingen nuværende mappe>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "mappestak tom"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "mappestakindeks"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -724,7 +725,7 @@ msgstr ""
 "        når der ikke angives nogle valgmuligheder, startende fra 0."
 
 # Jeg tror der er en fejl i den engelske, fejlrapport
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 #, fuzzy
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
@@ -771,7 +772,7 @@ msgstr ""
 "    \n"
 "Den indbyggede funktion \"dirs\" viser mappestakken."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -814,40 +815,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: ugyldig specifikation af tidsudløb"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "læsefejl: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "kan ikke fjerne en funktion og en variabel samtidig"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: kan ikke fjerne"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: kan ikke fjerne: skrivebeskyttet %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ikke en arrayvariabel"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ikke en funktion"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: kan ikke fjerne"
@@ -856,20 +857,20 @@ msgstr "%s: kan ikke fjerne"
 msgid "shift count"
 msgstr "skifttæller"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "kan ikke indstille og fjerne skaltilvalg samtidig"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: ugyldigt navn for skaltilvalg"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "filnavnsargument påkrævet"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: fil ikke fundet"
@@ -882,61 +883,61 @@ msgstr "kan ikke sætte i hvile"
 msgid "cannot suspend a login shell"
 msgstr "kan ikke sætte en logindskal i hvile"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s er aliasset til \"%s\"\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s er et skalnøgleord\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s er en funktion\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s er indbygget i skallen\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s er indbygget i skallen\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s er %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s er hashet (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: ugyldigt grænseargument"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "\"%c\": ugyldig kommando"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: kan ikke indhente grænse: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "grænse"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: kan ikke modificere grænse: %s"
@@ -955,112 +956,112 @@ msgstr "\"%c\": ugyldig symbolsk tilstandsoperator"
 msgid "`%c': invalid symbolic mode character"
 msgstr "\"%c\": ugyldigt symbolsk tilstandstegn"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " linje "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "sidste kommando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Afbryder..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "ukendt kommandofejl"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "ugyldig kommandotype"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "dårligt mellemled"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "dårligt hop"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: ubundet variabel"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atidsudløb mens der ventedes på input: auto-logud\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "kan ikke videresende standardinput fra /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "datakanalfejl (pipe error)"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: kommando ikke fundet"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: dårlig fortolker"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: kan ikke eksekvere binær fil"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s er indbygget i skallen\n"
@@ -1074,251 +1075,261 @@ msgstr "%s er indbygget i skallen\n"
 #        expansion.   If the >(list) form is used, writing to the file will pro‐
 #        vide input for list.  If the <(list) form is used, the file  passed  as
 #        an argument should be read to obtain the output of list.
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "kan ikke duplikere fd %d til fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "grænse for rekursion af udtryk overskredet"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "underløb i rekursionsstak"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntaksfejl i udtryk"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "forsøgte tildeling til ikke-variabel"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "syntaksfejl i udtryk"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "division med 0"
 
 # denne her streng er dårlig på så mange måder at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: dårligt expassign-udtryk"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "\":\" forventet for betingede udtryk"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponent mindre end 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifikator forventet efter præforøgelse eller -formindskelse"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "manglende \")\""
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntaksfejl: operand forventet"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntaksfejl: ugyldig aritmetisk operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (fejlelement er \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "ugyldig aritmetisk grundtal"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "værdi for stor til grundtal"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: fejl i udtryk\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: kan ikke tilgå overliggende mapper"
 
 # Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "kan ikke allokere ny fildeskriptor til bash-input fra fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d"
 
 # ??
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp-datakanal (pipe)"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "forgrenet pid %d figurerer i kørende job %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "sletter stoppet job %d med procesgruppe %ld"
 
 # ??
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: proces %5ld (%s) i the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) markeret som stadig i live"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: ingen process med det pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Færdig"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stoppet"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stoppet(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Kører"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Færdig(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Afslut %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Ukendt status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(smed kerne) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "underproces setpgid (%ld til %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld er ikke en underproces af denne skal"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Ingen optegnelse af proces %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: job %d er stoppet"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: job er afbrudt"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: job %d er allerede i baggrunden"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: linje %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (smed kerne)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd nu: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp fejlede"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: linjedisciplin"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: linjedisciplin"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "kan ikke indstille terminal-procesgruppe (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "ingen jobkontrol i denne skal"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: forfejlet hævdelse: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1327,39 +1338,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: hævdelse forkludret\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "ukendt"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blok i fri liste tværet ud"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: kaldt med blokargument som allerede er fri"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: kaldt med ikke-allokeret blokargument"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underløb detekteret, mh_nbytes uden for interval"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: størrelse på start- og slut-bid afviger"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: kaldt med ikke-allokeret blokargument"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underløb detekteret, mh_nbytes uden for interval"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: størrelse på start- og slut-bid afviger"
 
@@ -1401,22 +1412,22 @@ msgstr "%s: dårlig specifikation for netværkssti"
 msgid "network operations not supported"
 msgstr "netværksoperation ikke understøttet"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
 
-#: locale.c:261
+#: locale.c:274
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
@@ -1434,153 +1445,153 @@ msgstr "Du har ny post i $_"
 msgid "The mail in %s has been read\n"
 msgstr "Posten i %s er blevet læst\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntaksfejl: aritmetisk udtryk påkrævet"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntaksfejl: \";\" uventet"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntaksfejl: \"((%s))\""
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: dårlig instruktionstype %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "here-document ved linje %d er adskilt af slut-på-linje (ønskede \"%s\")"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "uventet EOF mens der ledtes efter samhørende \"%c\""
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "uventet EOF mens der ledtes efter \"]]\""
 
 # word   A sequence of characters considered as  a  single  unit  by  the
 #        shell.  Also known as a token.
 # Jeg har valgt udtryk
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\""
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntaksfejl i betingelsesudtryk"
 
 # word   A sequence of characters considered as  a  single  unit  by  the
 #        shell.  Also known as a token.
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "uventet element \"%s\", forventede \")\""
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "forventede \")\""
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "uventet argument \"%s\" til unær betingelsesoperator"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "uventet argument til unær betingelsesoperator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "ventedet binær betingelsesoperator"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "uventet argument \"%s\" til binær betingelsesoperator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "uventet argument til binær betingelsesoperator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "uventet udtryk \"%c\" i betingelseskommando"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "uventet udtryk \"%s\" i betingelseskommando"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "uventet udtryk \"%d\" i betingelseskommando"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntaksfejl nær uventet udtryk \"%s\""
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntaksfejl nær \"%s\""
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntaksfejl: uventet slutning på fil"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntaksfejl"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Brug \"%s\" for at forlade skallen.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "uventet EOF mens der ledtes efter samhørende \")\""
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: funktion \"%s\" ikke fundet"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1609,92 +1620,96 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: \"%c\": ugyldigt formateringstegn"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "fil-deskriptor uden for interval"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: tvetydig videresendelse"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: kan ikke overskrive eksisterende fil"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: begrænset: kan ikke videresende output"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "kan ikke danne midlertidig fil til here-dokument: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: kan ikke tildele liste til arrayelementer"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "videresendelsesfejl: kan ikke duplikere fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "kan ikke finde /tmp, opret venligst mappen!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp skal være et gyldigt mappenavn"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: ugyldigt tilvalg"
 
 # Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
 
 # Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: er en mappe"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Jeg har ikke noget navn!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1703,53 +1718,53 @@ msgstr ""
 "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n"
 "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Lange GNU-tilvalg:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Skal-tilvalg:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\tTilvalg -%s eller -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Skriv \"%s -c \"help set\"\" for at få mere information om skaltilvalg.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Skriv \"%s -c help\" for at få mere information om indbyggede "
 "skalkommandoer.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: ugyldig handling"
@@ -1925,104 +1940,109 @@ msgstr "Ukendt signal #"
 msgid "Unknown Signal #%d"
 msgstr "Ukendt signal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "dårlig udskiftning: ingen lukkende \"%s\" i %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: kan ikke tildele liste til arrayelementer"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "kan ikke lave datakanal (pipe) til procesudskiftning"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "kan ikke danne underproces til procesudskiftning"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "kan ikke åbne navngiven datakanal (pipe) %s til læsning"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "kan ikke åbne navngiven datakanal (pipe) %s til skrivning"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "kan ikke danne underproces til kommandoudskiftning"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, fuzzy, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%d: ugyldig filbeskrivelse: %s"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: dårlig udskiftning"
-
 # -c     Specify the number of lines read between each call to callback.
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: ugyldigt antal linjer"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "\"%s\": ugyldigt tastetildelingsnavn"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter null eller ikke indstillet"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter null eller ikke indstillet"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: understreng-udtryk < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: dårlig udskiftning"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: kan ikke tildele på denne måde"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "intet match: %s"
@@ -2045,30 +2065,35 @@ msgstr "\")\" forventet"
 msgid "`)' expected, found %s"
 msgstr "\")\" forventet, fandt %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: unær operator forventet"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: binær operator forventet"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "manglende \"]\""
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "ugyldigt signalnummer"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: dårlig værdi i trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2076,85 +2101,85 @@ msgstr ""
 "run_pending_traps: signalhåndtering er SIG_DFL, gensender %d (%s) til mig "
 "selv"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: ugyldigt signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "fejl under importering af funktionsdefinition for \"%s\""
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "skalniveau (%d) for højt, genindstiller til 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneområde"
 
-#: variables.c:2432
+#: variables.c:2674
 #, fuzzy, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: kan ikke tildele liste til arrayelementer"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%d: ugyldig filbeskrivelse: %s"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneområde"
 
-#: variables.c:4218
+#: variables.c:4698
 #, fuzzy, c-format
 msgid "%s has null exportstr"
 msgstr "%s: parameter null eller ikke indstillet"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "ugyldigt tegn %d i exportstr for %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "intet \"=\" i exportstr for %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: ingen global_variables-kontekst"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum"
 
-#: variables.c:5619
+#: variables.c:6272
 #, fuzzy, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: kan ikke åbne: %s"
 
-#: variables.c:5624
+#: variables.c:6277
 #, fuzzy, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%d: ugyldig filbeskrivelse: %s"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s udenfor rækkevidde"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2180,22 +2205,22 @@ msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: kan ikke allokere %lu bytes (%lu bytes allokeret)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "xmalloc: kan ikke allokere %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes (%lu bytes allokeret)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes"
@@ -2420,13 +2445,13 @@ msgstr "umask [-p] [-S] [tilstand]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2515,7 +2540,7 @@ msgstr "printf [-v var] format [argumenter]"
 #: builtins.c:231
 #, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2535,7 +2560,7 @@ msgstr ""
 
 #: builtins.c:239
 #, fuzzy
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o valgmulighed] [navn ...]"
 
 #: builtins.c:242
@@ -2548,9 +2573,10 @@ msgstr ""
 "[-c kvantum] [array]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C "
 "tilbagekald] [-c kvantum] [array]"
@@ -2732,6 +2758,7 @@ msgstr ""
 "1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2742,7 +2769,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Eksekver en skal-indbygget funktion.\n"
 "    \n"
@@ -2985,11 +3012,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3112,6 +3139,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3146,7 +3179,7 @@ msgstr ""
 "      Afslutningsstatus:\n"
 "      Returnerer succes med mindre der opstår en skrivefejl."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3168,7 +3201,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer succes med mindre der opstår en skrivefejl."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3223,7 +3256,7 @@ msgstr ""
 "    Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n"
 "    der opstår en fejl."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3245,7 +3278,7 @@ msgstr ""
 "er\n"
 "    null."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3325,7 +3358,7 @@ msgstr ""
 "    Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n"
 "    af tilvalgene nås eller hvis der opstår en fejl."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3369,7 +3402,7 @@ msgstr ""
 "der\n"
 "    opstår en omdirigeringsfejl."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3381,7 +3414,7 @@ msgstr ""
 "    Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n"
 "    blive den samme som sidst eksekverede kommando."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3395,7 +3428,7 @@ msgstr ""
 "hvis\n"
 "    den ikke eksekveres i en logindskal."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3456,7 +3489,7 @@ msgstr ""
 "hvis\n"
 "    der opstod en fejl."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3479,7 +3512,7 @@ msgstr ""
 "der\n"
 "    opstår fejl."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3504,7 +3537,7 @@ msgstr ""
 "hvis\n"
 "    der opstår en fejl."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3549,7 +3582,7 @@ msgstr ""
 "angives\n"
 "    et ugyldig tilvalg."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3565,7 +3598,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3591,7 +3624,7 @@ msgstr ""
 "    Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n"
 "    angives et ugyldigt tilvalg."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3601,7 +3634,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3660,7 +3694,7 @@ msgstr ""
 "hvis\n"
 "    der opstår en fejl."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3710,7 +3744,7 @@ msgstr ""
 "der\n"
 "    opstår en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3742,7 +3776,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3790,7 +3824,7 @@ msgstr ""
 "der\n"
 "    opstår en fejl."
 
-#: builtins.c:942
+#: builtins.c:947
 #, fuzzy
 msgid ""
 "Evaluate arithmetic expressions.\n"
@@ -3877,7 +3911,7 @@ msgstr ""
 "    Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n"
 "    returneres 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3899,7 +3933,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3974,7 +4008,7 @@ msgstr ""
 "indtræffer,\n"
 "    eller hvis en ugyldig fildeskriptor gives som argument til -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3999,7 +4033,7 @@ msgstr ""
 "en\n"
 "    funktion eller et skript."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4184,7 +4218,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer succes med mindre der angives et ugyldigt tilvalg."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4226,7 +4260,7 @@ msgstr ""
 "et\n"
 "    givent navn er skrivebeskyttet."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4262,7 +4296,7 @@ msgstr ""
 "    Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
 "    NAVN er ugyldig."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4302,7 +4336,7 @@ msgstr ""
 "    Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
 "    NAVN er ugyldigt."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4321,7 +4355,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer succes med mindre N er negativ eller større end $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4347,7 +4381,7 @@ msgstr ""
 "hvis\n"
 "    FILNAVN ikke kan læses."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4374,7 +4408,7 @@ msgstr ""
 "der\n"
 "    opstår en fejl."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4536,7 +4570,7 @@ msgstr ""
 "    Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n"
 "    evalueres til falsk eller hvis der gives et ugyldigt argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4549,7 +4583,7 @@ msgstr ""
 "sidste\n"
 "    argument skal være \"]\", for at den passer til den åbnende \"[\"."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4569,7 +4603,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Lykkes altid."
 
-#: builtins.c:1357
+#: builtins.c:1362
 #, fuzzy
 msgid ""
 "Trap signals and other events.\n"
@@ -4650,7 +4684,7 @@ msgstr ""
 "angivet\n"
 "    et ugyldigt tilvalg."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4713,7 +4747,7 @@ msgstr ""
 "enkelt\n"
 "    ikke findes."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4809,7 +4843,7 @@ msgstr ""
 "der\n"
 "    opstår en fejl."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4847,7 +4881,7 @@ msgstr ""
 "ugyldigt\n"
 "    tilvalg angives."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4856,13 +4890,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4882,7 +4918,7 @@ msgstr ""
 "angives\n"
 "    et ugyldigt tilvalg."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -4908,7 +4944,7 @@ msgstr ""
 "    Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n"
 "    angives et ugyldigt tilvalg."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4933,7 +4969,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen for den sidst eksekverede kommando."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4963,7 +4999,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer afslutningsstatussen for den sidst eksekverede kommando."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5001,7 +5037,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5030,7 +5066,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Afslutningsstatus er afslutningsstatus for DATAKANAL."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5049,7 +5085,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5088,7 +5124,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5106,7 +5142,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5124,7 +5160,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5148,7 +5184,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer afslutningsstatussen for KOMMANDO."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5172,7 +5208,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer succes med mindre NAVN er skrivebeskyttet."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5190,7 +5226,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen fra den sidst eksekverede kommando."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5217,7 +5253,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer statussen af det genoptagede job."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5236,7 +5272,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5291,7 +5327,7 @@ msgstr ""
 "    Afslutningsstatus:\n"
 "    0 eller 1 afhængigt af udtrykkets værdi."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5404,7 +5440,7 @@ msgstr ""
 "    HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n"
 "    \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5464,7 +5500,7 @@ msgstr ""
 "hvis\n"
 "      mappeskiftet mislykkes."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5519,7 +5555,7 @@ msgstr ""
 "hvis\n"
 "      mappeskiftet mislykkes."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5574,14 +5610,14 @@ msgstr ""
 "der\n"
 "    opstår en fejl."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5615,7 +5651,7 @@ msgstr ""
 "et\n"
 "    ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5682,7 +5718,7 @@ msgstr ""
 "hvis\n"
 "    der opstår en skrive- eller tildelingsfejl."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5701,10 +5737,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5730,7 +5770,7 @@ msgstr ""
 "hvis\n"
 "    der opstår en fejl."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5755,7 +5795,7 @@ msgstr ""
 "    der opstår en fejl."
 
 # Fejlrapport
-#: builtins.c:1996
+#: builtins.c:2006
 #, fuzzy
 msgid ""
 "Modify or display completion options.\n"
@@ -5771,6 +5811,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5817,7 +5858,7 @@ msgstr ""
 "hvis\n"
 "    der ikke er defineret en fuldførselsspecifikation for NAVN."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5896,7 +5937,7 @@ msgstr ""
 "hvis\n"
 "    ARRAY er skrivebeskyttet."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5907,9 +5948,17 @@ msgstr ""
 "    Et synonym for \"mapfile\"."
 
 #, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
 #~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
 
+#, fuzzy
+#~ msgid ""
+#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
+#~ "html>\n"
+#~ msgstr ""
+#~ "Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/"
+#~ "gpl.html>\n"
+
 #~ msgid ":"
 #~ msgstr ":"
 
@@ -5922,25 +5971,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/"
-#~ "gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
-
 #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
 #~ msgstr "xrealloc: kan ikke allokere %lu bytes (%lu bytes allokeret)"
 
index 887bdc7b16cab161296c855a5a5daa5eabde20b3..402eb9fe268b2deb4fd71a85d1cf8351a869d25b 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 689eba6ebb5d6b9e499477df5adfd59baea22d00..c5c5794c66c638a8937a36842c8b6859e92d17e7 100644 (file)
--- a/po/de.po
+++ b/po/de.po
-# German language file for GNU Bash 4.4-beta1
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# German language file for GNU Bash 4.4
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Nils Naumann <nau@gmx.net>, 1996-2016.
+# Nils Naumann <nau@gmx.net>, 1996-2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-08-27 15:19+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-01 23:58+0100\n"
 "Last-Translator: Nils Naumann <nau@gmx.net>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
 "Language: de\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "Falscher Feldbezeichner."
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: Entferne das Nameref Attribut."
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln."
+msgstr ""
+"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden."
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: Ungültiger Schlüssel für das assoziative Array."
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen."
+msgstr "%s: Das Zuweisen auf ein nicht-numerischen Index ist nicht möglich."
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays "
 "benötigt."
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: Kann die Datei %s nicht erzeugen."
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando "
 "finden."
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr " %s: Das erste Zeichen ist nicht `\\'."
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "fehlende schließende `%c' in %s."
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: Fehlender Doppelpunkt."
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen."
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "Klammererweiterung: Konnte für %d Elemente keinen Speicher zuweisen."
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr ""
+"Klammererweiterung: Für %u Elemente konnte kein Speicher zuweisen werden."
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen."
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': Ungültiger Alias Name."
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "Zeileneditierung ist nicht aktiviert."
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
-msgstr "`%s': Ungültiger KEYMAP Name."
+msgstr "`%s': Ungültiger KEYMAP-Name."
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: Nicht lesbar: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': Bindung kann nicht gelöst werden."
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "%s: Unbekannter Funktionsname."
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s ist keiner Taste zugeordnet.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s kann aufgerufen werden durch "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': Bindung kann nicht gelöst werden."
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "Schleifen Zähler"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll."
 
@@ -144,235 +147,234 @@ msgid ""
 "    Without EXPR, returns "
 msgstr ""
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME ist nicht zugewiesen."
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "Zu viele Argumente."
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "kein anderes Verzeichnis"
+msgstr "NULL Verzeichnis"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD ist nicht zugewiesen."
 
 # Debug Ausgabe
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "Zeile %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "Warnung: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: Aufruf: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: Die Option erfordert ein Argument."
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: Ein numerischer Parameter ist erforderlich."
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: Nicht gefunden."
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: Ungültige Option"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: Ungültiger Optionsname."
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': Ist kein gültiger Bezeichner."
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "Ungültige Oktalzahl."
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "Ungültige hexadezimale Zahl."
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "Ungültige Zahl."
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: Ungültige Signalbezeichnung."
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung."
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: Schreibgeschützte Variable."
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches."
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "Argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s ist außerhalb des Gültigkeitsbereiches."
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: Kein solcher Job."
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: Keine Job Steuerung in dieser Shell."
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "Keine Job Steuerung in dieser Shell."
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: gesperrt"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "gesperrt"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: Ist kein Shell Kommando."
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "Schreibfehler: %s."
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "Fehler beim Setzen der Terminalattribute: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "Fehler beim Ermitteln der Terminalattribute: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: Mehrdeutige Job Bezeichnung."
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "In dieser Version ist keine Hilfe verfügbar."
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: Ungültige Methode."
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: Keine Komplettierung angegeben."
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern."
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern."
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt."
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "kann nur innerhalb einer Funktion benutzt werden."
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr ""
+msgstr "%s: Zirkularbezug auf indirekte Variable."
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "`%s': Ungültiger Variablenname."
+msgstr "`%s': Ungültiger Name für indirekte Variablenreferenz."
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "Mit `-f' können keine Funktionen erzeugt werden."
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: Schreibgeschützte Funktion."
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen."
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -395,7 +397,7 @@ msgstr "Kann %s nicht in der dynamischen Bibiliothek finden %s: %s"
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "Laden der Funktion %s lieferte ein Fehler (%d): Nicht geladen."
 
 #: builtins/enable.def:512
 #, c-format
@@ -407,68 +409,68 @@ msgstr "%s: Ist nicht dynamisch geladen."
 msgid "%s: cannot delete: %s"
 msgstr "%s: Kann nicht löschen: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: ist ein Verzeichnis."
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: Ist keine normale Datei."
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: Die Datei ist zu groß."
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: Kann die Datei nicht ausführen."
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: Kann nicht ausführen: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "Abgemeldet\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "Keine Login Shell: Mit `exit' abmelden!"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Es gibt noch angehaltene Prozesse.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Es gibt noch laufende Prozesse.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "Kein Kommando gefunden."
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr ""
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: Kann die tempräre Datei nicht öffnen: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "gegenwärtig"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "Job %d wurde ohne Jobsteuerung gestartet."
@@ -483,28 +485,27 @@ msgstr "%s: Ungültige Option -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: Diese Option erfordert ein Argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "Hashing deaktiviert."
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: Die Hashtabelle ist leer.\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "Treffer\tBefehl\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Shell Kommandos auf die das Schlüsselwort zutrifft `"
 msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -512,12 +513,12 @@ msgstr ""
 "Auf `%s' trifft kein Hilfethema zu.  Probieren Sie `help help', `man -k %s' "
 "oder `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: Kann die Datei nicht öffnen: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -537,20 +538,21 @@ msgstr ""
 "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "Es darf nur eine Option aus -anrw angegeben werden."
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "Kommandostapelposition."
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Ungültiges Argument."
+msgstr "%s: Ungültiger Zeitstempel."
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: Kommandoersetzung gescheitert."
@@ -564,16 +566,16 @@ msgstr "%s: inlib gescheitert."
 msgid "no other options allowed with `-x'"
 msgstr "Keine weiteren Optionen mit `-x' erlaubt."
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein."
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Unbekannter Fehler."
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "Ausdruck erwartet."
 
@@ -582,69 +584,69 @@ msgstr "Ausdruck erwartet."
 msgid "%s: not an indexed array"
 msgstr "%s: Ist kein indiziertes Array."
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: Ungültige Datei-Deskriptor Angabe."
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: Ungültiger Datei-Deskriptor: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: Ungültige Zeilenanzahlangabe."
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s:  Ungültiger Zeilenindex für den Array Beginn."
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr ""
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "Fehlender Name für die Array Variable."
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden."
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': Fehlendes Formatierungszeichen."
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': Ungültige Zeitformatangabe."
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': Ungültiges Formatierungszeichen."
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "Warnung: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "Formatleseproblem: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "Fehlende hexadezimale Ziffer nach \\x."
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "Fehlendes Unicode Zeichen für \\%c."
@@ -658,19 +660,19 @@ msgstr "kein anderes Verzeichnis"
 msgid "%s: invalid argument"
 msgstr "%s: Ungültiges Argument."
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<kein aktuelles Verzeichnis>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "Der Verzeichnisstapel ist leer."
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "Verzeichnisstapelindex"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -712,7 +714,7 @@ msgstr ""
 "\t-N\tZeigt den N'ten Eintrag von rechts an, der von »dirs« ausgegeben\n"
 "\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -758,7 +760,7 @@ msgstr ""
 "    \n"
 "    Das `dirs' Kommando zeigt den Verueichnisstapel an."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -804,43 +806,43 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: Ungültige Wartezeitangebe."
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "Lesefehler: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
-"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten Skript "
-"möglich."
+"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten "
+"Skript möglich."
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich."
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: `unset' nicht möglich."
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: Ist keine Feldvariable."
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: Ist keine Funktion."
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: exportieren nicht möglich."
@@ -849,20 +851,20 @@ msgstr "%s: exportieren nicht möglich."
 msgid "shift count"
 msgstr "Verschiebezähler"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren."
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: Ungültiger Shell Optionen Name."
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
-msgstr "Ein Dateiname wird as Argument benötigt."
+msgstr "Ein Dateiname wird als Argument benötigt."
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: Datei nicht gefunden."
@@ -876,61 +878,61 @@ msgstr "Kann die Shell nicht unterbrechen."
 msgid "cannot suspend a login shell"
 msgstr "Kann die Loginshell nicht unterbrechen."
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s ist ein Alias von `%s'.\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s ist eine Funktion.\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s ist eine spezielle eingebaute Funktion.\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s ist %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: Ungültiges Grenzwertargument."
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': Falsches Kommando."
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: Kann die nicht Grenze setzen: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "Grenze"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: Kann die Grenze nicht ändern: %s"
@@ -949,366 +951,375 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus."
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': Ungültiges Zeichen im symbolischen Modus."
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " Zeile "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "Letztes Kommando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Abbruch..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "INFO: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "Unbekanntes Kommando"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr ""
 
 # Programmierfehler
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr ""
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "Falscher Sprung"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s ist nicht gesetzt."
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen."
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "Pipe-Fehler"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: Verboten:  `/' ist in Kommandonamen unzulässig."
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: Kommando nicht gefunden."
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: Defekter Interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: Kann die Binärdatei nicht ausführen: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "`%s' ist eine spezielle eingebaute Funktion."
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "Kann fd %d nicht auf fd %d verdoppeln."
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "Zu viele Rekursionen in Ausdruck."
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "Rekursionsstapel leer."
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "Syntaxfehler im Ausdruck."
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "Versuchte Zuweisung zu keiner Variablen."
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "Syntaxfehler in der Variablenzuweisung."
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "Division durch 0."
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "Fehler: Falscher Zuweisungsoperator."
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "`:' für ein bedingten Ausdruck erwaret."
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "Der Exponent ist kleiner als 0."
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet."
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "Fehlende `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "Syntax Fehler: Operator erwartet."
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "Syntaxfehler: Ungültiger arithmetischer Operator."
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")."
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "Ungültige Basis."
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "Der Wert ist für die aktuelle Basis zu groß."
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: Fehler im Ausdruck.\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen."
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen."
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen."
 
 # Debug Ausgabe
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d."
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d."
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld."
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
 # Programmierfehler
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: Prozeßnummer existiert nicht."
+msgstr "describe_pid: %ld: Prozessnummer existiert nicht."
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Fertig"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Angehalten"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Angehalten(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Läuft"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Fertig(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Exit %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Unbekannter Status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(Speicherabzug geschrieben) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
 # interner Fehler
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr ""
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: Prozeß %ld wurde nicht von dieser Shell gestartet."
+msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet."
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: Der Job %d ist gestoppt."
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: Der Job ist beendet."
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: Der Job %d läuft bereits im Hintergrund."
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
 # Debug Ausgabe
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: Zeile %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (Speicherabzug geschrieben)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n"
 
 # interner Fehler
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_jobs: getpgrp war nicht erfolgreich."
 
 # interner Fehler
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund."
+
+# interner Fehler
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: line discipline"
 
 # interner Fehler
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)."
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "Keine Job Steuerung in dieser Shell."
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: Speicherzusicherung gescheitert: %s.\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1317,41 +1328,41 @@ msgstr ""
 "\\r\n"
 "malloc: %s:%d: Speicherzusicherung verpfuscht\\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "Unbekannt"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 "Malloc:  Ein frei gekennzeichneter Speicherbereich wurde überschrieben."
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free:  Wurde für bereits freigegebenen Speicherbereich aufgerufen."
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen."
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich."
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen."
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<"
 
@@ -1398,22 +1409,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe."
 msgid "network operations not supported"
 msgstr "Der Netzwerkbetrieb ist nicht unterstützt."
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)."
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)."
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s"
@@ -1432,151 +1443,151 @@ msgstr "Sie haben neue Post in $_."
 msgid "The mail in %s has been read\n"
 msgstr "Die Post in %s wurde bereits gelesen.\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt."
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "Syntax Fehler: unerwartetes `;'."
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "Syntax Fehler: `((%s))'."
 
 # interner Fehler
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: Falscher Befehlstyp %d."
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende "
 "(erwartet wird `%s')."
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "Dateiende beim Suchen nach `%c' erreicht."
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "Dateiende beim Suchen nach `]]' erreicht."
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'."
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "Syntaxfehler im bedingen Ausdruck."
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "`)' erwartet."
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr ""
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr ""
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr ""
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "Syntax Fehler: Unerwartetes Dateiende."
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "Syntax Fehler"
 
 # Du oder Sie?
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Benutze \"%s\" um die Shell zu verlassen.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "Dateiende beim Suchen nach passender `)' erreicht."
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr ""
+msgstr "completion: Funktion `%s' nicht gefunden."
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1605,90 +1616,94 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
-msgstr ""
+msgstr "cprintf: `%c': Ungültiges Formatsymbol."
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr ""
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: Mehrdeutige Umlenkung."
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: Kann existierende Datei nicht überschreiben."
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden."
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "Kann die temporäre Datei für das Hier Dokument nicht anlegen: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: Kann fd keiner Variable zuweisen."
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr ""
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen."
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
-msgstr "/tmp muß ein gültiger Verzeichnisname sein."
+msgstr "/tmp muss ein gültiger Verzeichnisname sein."
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: Ungültige Option"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "Konnte nicht die uid in %d ändern: Die geltende uid ist %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "Konnte nicht die gid in %d ändern: Die geltende gid ist %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt."
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Ist ein Verzeichnis."
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Ich habe keinen Benutzernamen!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, Version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1697,50 +1712,50 @@ msgstr ""
 "Aufruf:\t%s [Lange GNU Option] [Option] ...\n"
 "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Lange GNU Optionen:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Shell-Optionen:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t-ilrsD oder -c Kommando\toder -O shopt_option            (Nur Aufruf)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s oder Option -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "`%s -c \"help set\"' für mehr Informationen über Shell-Optionen.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "`%s -c help' für mehr Information über Shell-Kommandos.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Bash Homepage: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "Allgemeine Hilfe für GNU Software: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: Ungültige Operation"
@@ -1819,11 +1834,11 @@ msgstr "Angehalten (Signal)"
 
 #: siglist.c:127
 msgid "Continue"
-msgstr "Prozeßbearbeitung wieder aufgenommen."
+msgstr "Prozessbearbeitung wieder aufgenommen."
 
 #: siglist.c:135
 msgid "Child death or stop"
-msgstr "Kindprozeß abgebrochen oder gestoppt."
+msgstr "Kindprozess abgebrochen oder gestoppt."
 
 #: siglist.c:139
 msgid "Stopped (tty input)"
@@ -1883,7 +1898,7 @@ msgstr "Systemausfall steht bevor."
 
 #: siglist.c:195
 msgid "migrate process to another CPU"
-msgstr "Verlege den Prozeß auf einen anderen Prozessor."
+msgstr "Verlege den Prozess auf einen anderen Prozessor."
 
 #: siglist.c:199
 msgid "programming error"
@@ -1914,94 +1929,98 @@ msgstr "Unbekannte Signalnummer."
 msgid "Unknown Signal #%d"
 msgstr "Unbekanntes Signal Nr.: %d."
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten."
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: Kann einem Feldelement keine Liste zuweisen."
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
-msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen."
+msgstr "Kann keine Pipe für die Prozessersetzung erzeugen."
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
-msgstr "Kann den Kindsprozess für die Prozeßersetzung nicht erzeugen."
+msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen."
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen."
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen."
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "Kann die benannte Pipe %s nicht auf fd %d."
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s."
+msgstr "Kommansosubstitution: NULL byte in der Eingabe ignoriert."
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "Kann keine Pipes für Kommandoersetzung erzeugen."
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen."
 
 # interner Fehler
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren."
+msgstr "Kommandosubstitution: Kann Pipe nicht als fd 1 duplizieren."
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr ""
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: Falsche Variablenersetzung."
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: Ungültige indirekte Expansion"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "`%s': Ungültiger Variablenname."
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: Der Parameter ist nicht gesetzt."
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: Parameter ist Null oder nicht gesetzt."
 
 # interner Fehler
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: Teilstring-Ausdruck < 0."
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: Falsche Substitution."
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: Kann so nicht zuweisen."
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2009,12 +2028,12 @@ msgstr ""
 "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer "
 "Ersetzungen erzwingen."
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s."
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "Keine Entsprechung: %s"
@@ -2037,115 +2056,119 @@ msgstr "`)' erwartet."
 msgid "`)' expected, found %s"
 msgstr "`)' erwartet, %s gefunden."
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: Einstelliger (unärer) Operator erwartet."
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: Zweistelliger (binärer) Operator erwartet."
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "Fehlende `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "Ungültige Signalnummer."
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: Maximale trap handler Ebene überschritten (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
+msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
 # Programmierfehler
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: Falsches Signal %d."
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'."
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
+msgstr "Der Shell Level (%d) ist zu hoch und wird auf 1 zurückgesetzt."
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: Der Variable könnte kein Wert zugewiesen sein."
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr ""
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr ""
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr ""
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: Kann nicht als Datei geöffnet werden."
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches."
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2168,22 +2191,22 @@ msgstr "Dies ist freie Software.  Sie darf verändert und verteilt werden."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)."
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: Konnte nicht %lu Bytes reservieren."
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)."
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren."
@@ -2202,8 +2225,8 @@ msgid ""
 "x keyseq:shell-command] [keyseq:readline-function or readline-command]"
 msgstr ""
 "bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u\n"
-"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline "
-"Funktion oder Kommando]"
+"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline-"
+"Funktion oder -Kommando]"
 
 #: builtins.c:56
 msgid "break [n]"
@@ -2235,7 +2258,7 @@ msgstr "command [-pVv] Kommando [Argument ...]"
 
 #: builtins.c:78
 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilrntux] [-p] Name[=Wert] ..."
+msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]"
 
 #
 #: builtins.c:80
@@ -2313,16 +2336,15 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [Jobbezeichnung ...]"
+msgstr "disown [-h] [-ar] [Jobbezeichnung ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
-"kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder "
+"kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder "
 "kill -l [Signalname]"
 
 #: builtins.c:136
@@ -2398,8 +2420,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [Modus]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2491,13 +2513,13 @@ msgstr "printf [-v var] Format [Argumente]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion] [-G Suchmuster] "
-"[-W Wortliste]  [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-"
-"S Suffix] [Name ...]"
+"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n"
+"         [-G Suchmuster] [-W Wortliste]  [-F Funktion] [-C Kommando]\n"
+"         [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]"
 
 #: builtins.c:235
 msgid ""
@@ -2509,8 +2531,8 @@ msgstr ""
 "Suffix] [Wort]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o Option] [-DE] [Name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o Option] [-DEI] [Name ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2522,11 +2544,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c "
-"Menge] [Feldvariable]"
+"readarray [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t]\n"
+"          [-u fd] [-C Callback] [-c Menge] [Feldvariable]"
 
 # alias
 #: builtins.c:256
@@ -2626,8 +2648,8 @@ msgid ""
 msgstr ""
 "Bestimmt Readline Tastenzuordnungen und Variablen.\n"
 "    \n"
-"    Weist eine Tastensequenz einer Readline Funktion oder einem Makro\n"
-"    zu oder setzt eine Readline Variable.  Der Argument syntax ist zu\n"
+"    Weist eine Tastensequenz einer Readlinefunktion oder -makro zu\n"
+"    oder setzt eine Readlinevariable.  Die Argumentsyntax ist zu\n"
 "    den Einträgen in ~/.inputrc äquivalent, aber sie müssen als\n"
 "    einzelnes Argument übergeben werden.  Z.B: bind '\"\\C-x\\C-r\":\n"
 "    re-read-init-file'.\n"
@@ -2635,7 +2657,7 @@ msgstr ""
 "    Optionen:\n"
 "      -m  Keymap         Benutzt KEYMAP as Tastaturbelegung für die "
 "Laufzeit\n"
-"                         dieses Kommandos.  Gültige Keymap Namen sind: "
+"                         dieses Kommandos.  Gültige Keymapnamen sind: "
 "emacs,\n"
 "                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
 "move,\n"
@@ -2692,11 +2714,11 @@ msgid ""
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
 "Beendet for, while oder until Schleifen.\n"
-"    \n"
-"    Break beendet eine »for«, »while« oder »until« Schleife.  Wenn »n«\n"
-"    angegeben ist, werden entsprechend viele geschachtelte Schleifen\n"
-"    beendet.\n"
-"    \n"
+"\n"
+"    Break beendet eine »for«, »while« oder »until« Schleife.  Wenn\n"
+"    »n« angegeben ist, werden entsprechend viele geschachtelte\n"
+"    Schleifen beendet.\n"
+"\n"
 "    Rückgabewert:\n"
 "    Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1."
 
@@ -2732,15 +2754,15 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
-"Führt eine in der Shell definierts Kommando aus.\n"
-"    \n"
-"    Führt eine in der Shell definertes Kommando aus.  Dies ist dann\n"
-"    nützlich, wenn es mit gleichem Namen als Funktion reimplementiert\n"
-"    werden soll, aber die Funktionalität des eingebauten Kommandos\n"
-"    innerhalb der neuen Funktion benötigt wird.\n"
-"    \n"
+"Führt ein in der Shell definiertes Kommando aus.\n"
+"\n"
+"    Führt ein in der Shell definiertes Kommando ohne vorherige\n"
+"    Befehlssuche aus.  Dies ist dann nützlich, wenn das Kommando als\n"
+"    Shell Funktion reimplementiert werden soll, aber das Kommando\n"
+"    innerhalb der neuen Funktion aufgerufen wird.\n"
+"\n"
 "    Rückgabewert: \n"
 "    Der Rückgabewert des aufgerufenen Kommandos oder »falsch«, wenn\n"
 "    dieses nicht existiert."
@@ -2761,6 +2783,20 @@ msgid ""
 "    Returns 0 unless the shell is not executing a shell function or EXPR\n"
 "    is invalid."
 msgstr ""
+"Gibt Informationen zum aktuellen Subrutinenaufruf aus.\n"
+"    \n"
+"    Ohne Argument wird die Zeilennummer und der Dateeiname angezeigt.  Mit\n"
+"    Argument werden Zeilennummer, Subroutinnenname und Dateiname "
+"ausgegeben.\n"
+"    Mit diesen Informationen kann ein Stack Trace erzeugt werden.\n"
+"        \n"
+"    Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n"
+"    wobei 0 der aktuelle Funktionsaufruf ist.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
+"Argument\n"
+"    ungültig ist, sonst 0."
 
 # cd
 #: builtins.c:387
@@ -2808,44 +2844,44 @@ msgid ""
 "    -P is used; non-zero otherwise."
 msgstr ""
 "Wechselt das Arbeitsverzeichnis.\n"
-"    \n"
-"    Wechselt in das angegebene Abeitsverzeichnis.  Ohne Angabe eines\n"
+"\n"
+"    Wechselt in das angegebene Arbeitsverzeichnis.  Ohne Angabe eines\n"
 "    Verzeichnisses wird in das in der HOME Variable definierte\n"
 "    Verzeichnis gewechselt.\n"
-"    \n"
+"\n"
 "    Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n"
 "    angegebeben Verzeichnisnamen gesucht wird.  Mehrere Pfade werden\n"
 "    durch Doppelpunkte »:« getrennt. Ein leerer Pfadname entspricht\n"
 "    dem aktuellen Verzeichnis.  Mit einem vollständigen Pfadnamen wird\n"
 "    CDPATH nicht benutzt.\n"
-"    \n"
-"    Wird kein entsprechendes Verzeichnis gefunden und die Shell Option\n"
+"\n"
+"    Wird kein entsprechendes Verzeichnis gefunden und die Shelloption\n"
 "    `cdable_vars' ist gesetzt, dann wird der `Wert' als Variable\n"
 "    interpretiert.  Dessen Inhalt wird dann als Verzeichnisname\n"
 "    verwendet.\n"
-"    \n"
+"\n"
 "    Optionen:\n"
-"        -L\tErzwingt das symbolischen Verweisen gefolgt wird.\n"
+"        -L\tErzwingt, dass symbolischen Verweisen gefolgt wird.\n"
 "                Symbolische Links im aktuellen Verzeichnis werden nach\n"
 "                dem übergeordneten Verzeichnis aufgelöst.\n"
 "        -P\tSymbolische Verweise werden ignoriert. Symbolische\n"
 "                Links im aktuellen Verzeichnis werden vor dem\n"
 "                übergeordneten Verzeichnis aufgelöst.\n"
-"        -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichns nicht\n"
-"                ermittelt werden kann, wird mit einem Rückgabwert\n"
-"                ungleich 0 abgebrochen.\n"
-"        -@      Wenn es das System unterstützt wird eine Datei mit  \n"
+"        -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichnis\n"
+"                nicht ermittelt werden kann, wird mit einem\n"
+"                Rückgabwert ungleich 0 abgebrochen.\n"
+"        -@      Wenn es das System unterstützt, wird eine Datei mit\n"
 "                erweiterten Attributen als ein Verzeichnis angezeigt,\n"
 "                welches die erweiterten Attribute enthält.\n"
-"    \n"
+"\n"
 "    Standardmäßig wird symbolischen Verweisen gefolgt (Option -L).\n"
 "    Das übergeordnete Verzeichnis wird ermittelt, indem der\n"
 "    Dateiname am letzten Schrägstrich gekürzt wird oder es wird der\n"
 "    Anfang von DIR verwendet.\n"
-"    \n"
+"\n"
 "    Rückgabewert:\n"
 "\n"
-"    Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreiche\n"
+"    Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreich\n"
 "    gewechselt wurde, oder wenn die -P Option angegeben und $PWD\n"
 "    erfolgreich gesetzt werden konnte.  Sonst ist er ungleich 0."
 
@@ -2981,11 +3017,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3011,9 +3047,9 @@ msgstr ""
 "      -f\tSchränkt Aktionen oder Anzeigen auf Funktionsnamen\n"
 "\t\tund Definitionen ein.\n"
 "      -F\tZeigt nur Funktionsnamen an (inklusive Zeilennummer\n"
-"    \t\tund Quelldatei beim debuggen).\n"
-"      -g\tDeklariert innerhalb ener Shellfunktion globale\n"
-"                Variablen; wird sonst ignoriert.\n"
+"    \t\tund Quelldatei beim Debuggen).\n"
+"      -g\tDeklariert globale Varieblen innerhalb einer\n"
+"                Shellfunktion; wird ansonsten ignoriert.\n"
 "      -p\tZeigt die Attribute und Werte jeder angegebenen\n"
 "                Variable an.\n"
 "    \n"
@@ -3043,7 +3079,6 @@ msgstr ""
 "    oder ein Fehler trat auf."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3051,7 +3086,7 @@ msgid ""
 msgstr ""
 "Setzt Variablen Werte und Eigenschaften\n"
 "\n"
-"    Veraltet.  Siehe `help declare'."
+"    Synonym für `declare'.  Siehe `help declare'."
 
 #: builtins.c:538
 msgid ""
@@ -3069,7 +3104,7 @@ msgid ""
 msgstr ""
 "Definiert lokale Variablen.\n"
 "    \n"
-"    Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu.\n"
+"    Erzeugt eine lokale Variable NAME und weist ihr den Wert VALUE zu.\n"
 "    OPTION kann eine beliebige von `declare' akzeptierte Option sein.\n"
 "\n"
 "    Lokale Variablen können nur innerhalb einer Funktion benutzt\n"
@@ -3083,6 +3118,7 @@ msgstr ""
 
 # echo
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3111,6 +3147,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3145,7 +3187,7 @@ msgstr ""
 "    Rückgabewert:\n"
 "    Gibt »Erfolg« zurück, außer ein Ausgabefehler tritt auf."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3157,9 +3199,19 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
+"Ausgabe der Argumente auf die Standardausgabe.\n"
+"    \n"
+"    Zeigt die Argumente auf der Standardausgabe von einem\n"
+"    Zeilenumbruch gefolgt an.\n"
+"    \n"
+"    Option:\n"
+"      -n\tkeinen Zeilenumbruch anfügen.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Gibt »Erfolg« zurück, außer nach einem Schreibfehler."
 
 # enable
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3215,7 +3267,7 @@ msgstr ""
 "    Gibt »Erfolg« zurück, außer NAME ist kein eingebautes Kommando \n"
 "    oder ein Fehler tritt auf."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3236,7 +3288,7 @@ msgstr ""
 "    Der Status des Kommandoe oder Erfolg wenn das Kommando leer war."
 
 # getopts
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3317,7 +3369,7 @@ msgstr ""
 "    aufgetreten ist."
 
 # exec
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3359,7 +3411,7 @@ msgstr ""
 "    ein Weiterleitungsfehler trat auf."
 
 # exit
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3368,12 +3420,12 @@ msgid ""
 msgstr ""
 "Beendet die aktuelle Shell.\n"
 "\n"
-"    Beendt die die aktuelle Shell mit dem Rückgabewert N.  Wenn N nicht "
+"    Beendet die aktuelle Shell mit dem Rückgabewert N.  Wenn N nicht "
 "angegeben ist,\n"
 "    wird der Rückgabewert des letzten ausgeführten Kommandos übernommen."
 
 # logout
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3388,7 +3440,7 @@ msgstr ""
 "    zurückgegeben."
 
 # fc
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3418,7 +3470,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3438,7 +3490,7 @@ msgstr ""
 "       Rückgabewert:\n"
 "       Status des in den Vordergrund geholten Jobs oder Fehler."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3460,7 +3512,7 @@ msgstr ""
 "       Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n"
 "       oder ein Fehler auftritt."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3485,7 +3537,7 @@ msgid ""
 msgstr ""
 
 # help
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3500,7 +3552,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3526,7 +3578,7 @@ msgstr ""
 "    Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n"
 "    angegeben wurde."
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3535,7 +3587,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3560,7 +3613,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3584,7 +3637,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3601,7 +3654,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3624,7 +3677,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3669,7 +3722,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3690,7 +3743,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3721,7 +3774,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3733,7 +3786,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3819,7 +3872,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3841,7 +3894,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3860,7 +3913,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3881,7 +3934,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3892,7 +3945,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3906,7 +3959,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3920,7 +3973,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4004,7 +4057,7 @@ msgid ""
 msgstr ""
 
 # [
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4018,7 +4071,7 @@ msgstr ""
 "    schließt."
 
 # times
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4037,7 +4090,7 @@ msgstr ""
 "    Rückgabewert:\n"
 "    Immer 0."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4081,7 +4134,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4111,7 +4164,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4160,7 +4213,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4178,7 +4231,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4186,19 +4239,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4213,7 +4268,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4226,7 +4281,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4243,7 +4298,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4263,7 +4318,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4279,7 +4334,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4290,7 +4345,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4311,7 +4366,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4322,7 +4377,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4333,7 +4388,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4346,7 +4401,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4360,7 +4415,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4371,7 +4426,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4386,7 +4441,7 @@ msgid ""
 msgstr ""
 
 # (( ))
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4406,7 +4461,7 @@ msgstr ""
 "       Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n"
 "       ergibt, sonst »0«."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -4435,7 +4490,7 @@ msgid ""
 msgstr ""
 
 # variable_help
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -4526,13 +4581,13 @@ msgstr ""
 "    SHELLOPTS           Durch Doppelpunkt getrennte Liste der aktiven\n"
 "                        Shell Optionen.\n"
 "    TERM\tName des aktuellen Terminaltyps.\n"
-"    auto_resume Ein Wert ungleich Null bewirkt, daß ein einzelnes\n"
+"    auto_resume Ein Wert ungleich Null bewirkt, dass ein einzelnes\n"
 "                Kommando auf einer Zeile zunächst in der Liste\n"
 "                gegenwärtig gestoppter Jobs gesucht und dieser in den\n"
-"                Vordergrund geholt wird. `exact' bewirkt, daß das\n"
+"                Vordergrund geholt wird. `exact' bewirkt, dass das\n"
 "                Kommando genau dem Kommando in der Liste der\n"
-"                gestoppten Jobs entsprechen muß. Wenn die Variable den\n"
-"                Wert `substring' enthält, muß das Kommando einem\n"
+"                gestoppten Jobs entsprechen muss. Wenn die Variable den\n"
+"                Wert `substring' enthält, muss das Kommando einem\n"
 "                Substring der Jobbezeichnung entsprechen. Bei einem\n"
 "                anderen Wert müssen die ersten Zeichen übereinstimmen.\n"
 "    histchars         Zeichen, die die Befehlswiederholung und die\n"
@@ -4547,7 +4602,7 @@ msgstr ""
 "                      Kommandos angibt.\n"
 
 # pushd
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -4579,22 +4634,22 @@ msgid ""
 msgstr ""
 "Fügt ein Verzeichnis dem Stapel hinzu.\n"
 "\n"
-"    Legt ein Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n"
+"    Legt einen Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n"
 "    diesen so, dass das aktuelle Arbeitsverzeichnis oben liegt. Ohne\n"
 "    Argumente werden die obersten zwei Verzeichnisse auf dem Stapel\n"
 "    vertauscht.\n"
 "\n"
 "    Optionen: -n Es wird nur das angebene Verzeichnis dem Stapel\n"
-"    \thinzugefügt aber nicht in das Verzeichnis gewechselt.\n"
+"    \thinzugefügt, aber nicht in das Verzeichnis gewechselt.\n"
 "\n"
 "    Argumente:    \n"
-"    +N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n"
-"    \t`dirs',gezählt von links) oben auf dem Stapels liegt.\n"
+"    +N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n"
+"        von `dirs', gezählt von links) oben auf dem Stapels liegt.\n"
+"\n"
+"    -N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n"
+"        von `dirs', gezählt von rechts) sich an der Spitze des Stapels\n"
+"    \tbefindet.\n"
 "\n"
-"    -N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n"
-"    \t-`dirs',gezählt von rechts) sich an der Spitze des Stapels\n"
-"    \t-befindet.\n"
-"    \n"
 "    Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt\n"
 "    werden.\n"
 "\n"
@@ -4603,7 +4658,7 @@ msgstr ""
 "    wurde oder der Verzeichniswechsel nicht erfolgreich war."
 
 # popd
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4657,7 +4712,7 @@ msgstr ""
 "        wurde oder der Verzeichniswechsel nicht erfolgreich war."
 
 # dirs
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4711,14 +4766,13 @@ msgstr ""
 "    Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n"
 "    ein Fehler auftritt."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4740,7 +4794,7 @@ msgstr ""
 "    Optionen:\n"
 "      -o        Beschränkt die Optionsmanen auf die, welche mit \n"
 "                `set -o' definiert werden müssen.\n"
-"      -p        Gibt alle Shelloptionen und deren Stati aus.\n"
+"      -p        Gibt alle Shelloptionen und deren Stati aus.      \n"
 "      -q        Unterdrückt Ausgaben.\n"
 "      -s        Setzt jede Option in `Optionsname.'\n"
 "      -u        Deaktiviert jede Option in `Optionsname'.\n"
@@ -4751,7 +4805,7 @@ msgstr ""
 "    worden ist, wird Fehler zurückgegeben."
 
 # printf
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4789,10 +4843,42 @@ msgid ""
 "assignment\n"
 "    error occurs."
 msgstr ""
-"Returns success unless an invalid option is given or a write or\n"
-"    assignment error occurs.<"
-
-#: builtins.c:1953
+"Formatierte Ausgabe der ARGUMENTE.\n"
+"    \n"
+"    Optionen:\n"
+"      -v var\tDie formatierte Ausgabe ver Variable var zuweisen statt\n"
+"    \t\tsie an die Standardausgebe zu senden.\n"
+"    \n"
+"    Die FORMAT Zeichenkette kann einfache Zeichen enthalten, die unverändert "
+"an\n"
+"    die Standardausgabe geschickt werden. Escape-Sequenzen werden "
+"umgewandelt\n"
+"    und an die Standardausgabe geschickt sowie Formatanweisungen, welche "
+"das \n"
+"    nachfolgende ARGUMENT auswerten und ausgeben.\n"
+"    \n"
+"    Gegenüber der in printf(1) beschriebenen Standardverion werden "
+"zusätzliche\n"
+"    Formatanweisungen ausgewertet:\n"
+"    \n"
+"      %b\tWertet Escape-Sequenzen des zugehörigen Arguments aus.\n"
+"      %q\tBettet das Argument so ein, dass es als Shelleingabe\n"
+"                verwendet werden kann.\n"
+"      %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, "
+"dass\n"
+"    \t        sie als Zeichenkette für strftime(3) verwendet werden kann.\n"
+"    \n"
+"    Die Formatangebe wird wiederverwendet bis alle Argmente ausgewertet "
+"sind.\n"
+"    Wenn weniger Argumente als Formatangaben vorhanden sind, werden für die\n"
+"    Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n"
+"    \n"
+"    Rücgabewert:\n"
+"    Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder "
+"ein\n"
+"    Aus- bzw. Zuweisungsfehler auftritt."
+
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4810,16 +4896,21 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+# compgen
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4831,8 +4922,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
+"Zeigt mögliche Komplettierungen.\n"
+"    \n"
+"    Wird Shell Funktionen benutzt, um mögliche Komplettierungen anzuzeigen.\n"
+"    Wenn das optionale Wort-Argument angegeben ist, werden Komplettierungen\n"
+"    für dieses Wort erzeugt.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4847,6 +4946,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4863,7 +4963,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4906,7 +5006,7 @@ msgid ""
 msgstr ""
 
 # readarray
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -4915,18 +5015,3 @@ msgstr ""
 "Liest Zeilen einer Datei in eine Array Variable.\n"
 "\n"
 "    Ist ein Synonym für `mapfile'."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
index f7c64e50c4a9a097674eea8aba72da71ce3928cb..6134898bb9836638b8bbfa56269556d796050647 100644 (file)
Binary files a/po/el.gmo and b/po/el.gmo differ
index d57d327cc33e2d4aa4797cf492655cffef8cff9f..5eae34abf26b987f59a3930ff78b44a8a97e23d2 100644 (file)
--- a/po/el.po
+++ b/po/el.po
 # Copyright (C) 2013 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 #
-# Lefteris Dimitroulakis <ledimitro@gmail.com>, 2013, 2016.
+# Lefteris Dimitroulakis <ledimitro@gmail.com>, 2013, 2016, 2017.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-06-02 01:32+0300\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-06-21 17:08+0300\n"
 "Last-Translator: Lefteris Dimitroulakis <ledimitro@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: el\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Lokalize 1.5\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
-msgstr ""
+msgstr "κακός δείκτης πίνακα"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: αφαίρεση του χαρακτηριστικού nameref "
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr ""
+msgstr "%s: αδυναμία μετατροπής indexed πίνακα σε associative πίνακα "
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr ""
+msgstr "%s: μη έγκυρο κλειδί associative πίνακα "
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
-msgstr ""
+msgstr "%s: αδυναμία εκχώρησης σε μη αριθμητικό δείκτη "
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: αδυναμία δημιουργίας: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: δεν μπορώ να βρω keymap για εντολή"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"»"
+msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"» "
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
-msgstr ""
+msgstr "όχι «%c» κλεισήματος σε %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
-msgstr ""
+msgstr "%s: απουσιάζει διαχωριστής δίστιγμο "
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
-msgstr ""
+msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %s "
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr ""
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %d στοιχεία "
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr ""
+msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "«%s»: μη έγκυρο ψευδώνημο"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "μη ενεργοποιημένο line editing"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "«%s»: μη έγκυρο όνομα keymap"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: αδυναμία ανάγνωσης: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "«%s»: αδυναμία αποσύνδεσης"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "«%s»: άγνωστο όνομα συνάρτησης"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτρο.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s μπορεί να κληθεί μέσω "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "«%s»: αδυναμία αποσύνδεσης"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "αριθμός βρόχων"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "έχει μόνο νόημα σε ένα βρόχο «for», «while», ή «until»"
 
@@ -140,239 +141,241 @@ msgid ""
 "    \n"
 "    Without EXPR, returns "
 msgstr ""
+"Επιστρέφει το context της κλήσης της τρέχουσας υπορουτίνας.\n"
+"    \n"
+"    Χωρίς EXPR, επιστρέφει "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME δεν έχει οριστεί"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "πάρα πολλά ορίσματα"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "όχι άλλος κατάλογος"
+msgstr "κατάλογος nul"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD δεν έχει οριστεί"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "γραμμή %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "προειδοποίηση: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: χρήση: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: η επιλογή απαιτεί όρισμα"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: απαιτείται αριθμητικό όρισμα"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: δεν βρέθηκε"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: μη έγκυρη επιλογή"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: μη έγκυρο όνομα επιλογής"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
-msgstr ""
+msgstr "«%s»: μή έγκυρο αναγνωριστικό "
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "μη έγκυρος οκταδικός αριθμός"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "μη έγκυρος εξαδικός αριθμός"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "μη έγκυρος αριθμός"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: μη έγκυρη προδιαγραφή σήματος"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "«%s»: όχι pid ή έγκυρο job spec"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: μεταβλητή μόνο για ανάγνωση"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s εκτός ορίων"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "όρισμα"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s εκτός ορίων"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: δεν υπάρχει τέτοια εργασία"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
-msgstr ""
+msgstr "%s: όχι έλεγχος εγασιών "
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
-msgstr ""
+msgstr "όχι έλεγχος εργασιών"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
-msgstr ""
+msgstr "%s: περιορισμένο "
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
-msgstr ""
+msgstr "περιορισμένο"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
-msgstr ""
+msgstr "%s: όχι ένα builtin κελύφους "
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "σφάλμα εγγραφής: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
-msgstr ""
+msgstr "σφάλμα κατά τον ορισμό των χαρακτηριστικών τερματικού: %s "
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
-msgstr ""
+msgstr "σφάλμα κατά την λήψη των χαρακτηριστικών τερματικού: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
+msgstr "%s: σφάλμα κατά την ανάκτηση τρέχοντος καταλόγου: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ασαφείς προδιαγραφές εργασίας"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση "
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: μη έγκυρο όνομα ενέργειας"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: δεν υπάρχει προδιαγραφή συμπλήρωσης"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "προειδοποίηση: η επιλογή -F μπορεί να μη δουλέψει όπως περιμένεις"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "προειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
-msgstr ""
+msgstr "η λειτουργία συμπλήρωσης δεν εκτελείται επί του παρόντος "
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "μπορεί να χρησιμοποιηθεί μόνο μέσα σε συνάρτηση"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: η μεταβλητή αναφοράς δεν μπορεί να είναι πίνακας "
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
-msgstr ""
+msgstr "%s: nameref αυτοαναφορά μεταβλητής δεν επιτρέπεται "
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr ""
+msgstr "%s: κυκλική αναφορά ονόματος "
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: μη έγκυρο όνομα μεταβλητής"
+msgstr "«%s»: μη έγκυρο όνομα μεταβλητής για όνομα αναφοράς "
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr ""
 "η επιλογή «-f» δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία συναρτήσεων"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: συνάρτηση μόνο για ανάγνωση"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: η σύνθετη εκχώρηση πίνακα απορρίφθηκε"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
-msgstr ""
+msgstr "%s: αδυναμία καταστροφής μεταβλητής πίνακα κατ' αυτόν τον τρόπο "
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr ""
+msgstr "%s: αδυναμία μετατροπής associative πίνακα σε indexed πίνακα "
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
@@ -391,7 +394,7 @@ msgstr "αδυναμία εύρεσης %s στο κοινόχρηστο αντ
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "Η συνάρτηση φορτώματος του %s επιστρέφει λάθος (%d): δεν φορτώθηκε "
 
 #: builtins/enable.def:512
 #, c-format
@@ -403,71 +406,71 @@ msgstr "%s: δεν φορτώθηκε δυναμικά"
 msgid "%s: cannot delete: %s"
 msgstr "%s: αδυναμία διαγραφής: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: είναι κατάλογος"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: όχι κανονικό αρχείο"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: αρχείο πολύ μεγάλο"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: αδυναμία εκτέλεσης: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "όχι login shell: χρησιμοποίησε «exit»"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Υπάρχουν σταματημένες εργασίες.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Υπάρχουν εργασίες που τρέχουν.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "δεν βρέθηκε εντολή"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "history specification"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: αδυναμία ανοίγματος προσωρινού αρχείου: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "τρέχων"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
-msgstr ""
+msgstr "η εργασία %d ξεκίνησε χωρίς έλεγχο εργασιών "
 
 #: builtins/getopt.c:110
 #, c-format
@@ -479,28 +482,27 @@ msgstr "%s: μη επιτρεπόμενη επιλογή -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
-msgstr ""
+msgstr "hashing απενεργοποιημένο "
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
-msgstr ""
+msgstr "%s: πίνακας hash κενός\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "hits\tcommand\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Εντολές κελύφους που ταιριάζουν στη λέξη-κλειδί `"
 msgstr[1] "Εντολές κελύφους που ταιριάζουν στις λέξεις-κλειδί"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -508,12 +510,12 @@ msgstr ""
 "ουδεμία βοήθεια ταιριάζει με «%s».  Δοκιμάστε «help help» ή «man -k %s» ή «info %"
 "s»."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: αδυναμία ανοίγματος: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -524,21 +526,31 @@ msgid ""
 "A star (*) next to a name means that the command is disabled.\n"
 "\n"
 msgstr ""
+"Αυτές οι εντολές ορίζονται εσωτερικά. Δώσε «help» για να δεις την λίστα.\n"
+"Δώσε «help name» για να δεις περισσότερα για την συνάρτηση «name».\n"
+"Χρησιμοποίησε «info bash» για να βρεις περισσότερα σχετικά με το κέλυφος.\n"
+"Χρησιμοποίησε «man -k» ή «info» για να βρεις περισσότερα για εντολές από την "
+"λίστα.\n"
+"\n"
+"Αστερίσκος (*) δίπλα στο όνομα σημαίνει ότι η εντολή είναι "
+"απενεργοποιημένη.\n"
+"\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "δεν μπορώ να χρησιμοποιήσω περισσότερες της μιας από τις -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "θέση στο ιστορικό"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Î¼Î· Î­Î³ÎºÏ\85Ï\81ο Ï\8cÏ\81ιÏ\83μα"
+msgstr "%s: Î¼Î· Î­Î³ÎºÏ\85Ï\81η Ï\87Ï\81ονοÏ\83ήμανÏ\83η"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr ""
@@ -552,16 +564,16 @@ msgstr "%s: αποτυχία inlib"
 msgid "no other options allowed with `-x'"
 msgstr "δεν επιτρέπονται άλλες επιλογές με την «-x»"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: ορίσματα πρέπει να είναι ID διεργασιών ή εργασιών"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Άγνωστο σφάλμα"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "αναμενόταν έκφραση"
 
@@ -570,69 +582,69 @@ msgstr "αναμενόταν έκφραση"
 msgid "%s: not an indexed array"
 msgstr "%s: μη δικτοδοτημένος πίνακας"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: μη έγκυρη προδιαγραφή περιγραφέα αρχείου"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: μη έγκυρος περιγραφέας αρχείου: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: μη έγκυρος αριθμός γραμμής"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
-msgstr ""
+msgstr "%s: μη έγκυρη αρχή πίνακα "
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
-msgstr ""
+msgstr "%s: μη έγκυρο κβάντο του callback "
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
-msgstr ""
+msgstr "όνομα μεταβλητής πίνακα κενό "
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "απαιτείται υποστήριξη μεταβλητής πίνακος"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "«%s»: απουσία χαρακτήρα φορμαρίσματος   "
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "«%c»: μη έγκυρη προδιαγραφή για φορμά χρόνου"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "«%c»: μη έγκυρος χαρακτήρας φορμαρίσματος"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "προειδοποίηση: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
-msgstr ""
+msgstr "πρόβλημα ανάλυσης του format: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "απουσία hex ψηφίου για \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "απουσία ψηφίου unicode για \\%c"
@@ -646,19 +658,19 @@ msgstr "όχι άλλος κατάλογος"
 msgid "%s: invalid argument"
 msgstr "%s: μη έγκυρο όρισμα"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<όχι τρέχων κατάλογος>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "κενή στίβα καταλόγου"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "δείκτης στοίβας καταλόγου"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -682,7 +694,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -707,7 +719,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -731,133 +743,133 @@ msgstr ""
 #: builtins/read.def:279
 #, c-format
 msgid "%s: invalid timeout specification"
-msgstr ""
+msgstr "%s: μη έγκυρη προδιαγραφή timeout "
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "σφάλμα ανάγνωσης: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
-msgstr ""
+msgstr "«επιστροφή» είναι μόνο δυνατή από συνάρτηση ή sourced script "
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "«unset» δεν μπορεί να εφαρμοστεί συγχρόνως σε συνάρτηση και μεταβλητή"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: αδυναμία «unset»"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: δεν είναι μεταβλητή πίνακα"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: δεν είναι συνάρτηση"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: αδυναμία εξαγωγής"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
-msgstr ""
+msgstr "αριθμός του « shift »"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "οι επιλογές κελύφους δεν είναι δυνατόν συγχρόνως να ενεργοποιηθούν και "
 "απενεργοποιηθούν"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: μη έγκυρο όνομα επιλογής"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "απαιτείται όνομα αρχείου για όρισμα"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: αρχείο δεν βρέθηκε"
 
 #: builtins/suspend.def:102
 msgid "cannot suspend"
-msgstr ""
+msgstr "αναστολή αδύνατη "
 
 #: builtins/suspend.def:112
 msgid "cannot suspend a login shell"
-msgstr ""
+msgstr "ένα κέλυφος σύνδεσης δεν μπορεί ν' ανασταλεί "
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s είναι ψευδώνημο του «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s αποτελεί δεσμευμένη λέξη του κελύφους\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s είναι συνάρτηση\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s είναι ένα ειδικό builtin\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s είναι ένα builtin κελύφους\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s είναι %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is hashed (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: μη έγκυρο όρισμα ορίου"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "«%c»: λάθος διαταγή"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
-msgstr ""
+msgstr "%s: αδύνατον να πάρω το όριο: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "όριο"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: αδυναμία μεταβολής ορίου: %s"
@@ -869,416 +881,427 @@ msgstr "οκταδικός αριθμός"
 #: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
-msgstr ""
+msgstr "`%c': μη έγκυρος τελεστής συμβολικού mode"
 
 #: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
-msgstr ""
+msgstr "`%c': μη έγκυρος χαρακτήρας συμβολικού mode "
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " γραμμή "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "τελευταία εντολή: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
-msgstr ""
+msgstr "Ακύρωση..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
-msgstr "άγνωστο σφάλμα εντολής"
+msgstr "σφάλμα άγνωστης εντολής"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
-msgstr ""
+msgstr "λάθος τύπος εντολής"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
-msgstr ""
+msgstr "bad connector"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
-msgstr ""
+msgstr "κακό άλμα"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
-msgstr ""
+msgstr "%s: μεταβλητή χωρίς σύνδεση "
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσύνδεση\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "αδυναμία ανακατεύθυνσης τυπικής εισόδου από /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: «%c»: μη έγκυρος χαρακτήρας μορφοποίησης"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη "
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "pipe error"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr ""
+msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) "
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεράστηκε (%d) "
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάρτησης ξεπεράστηκε (%d) "
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: περιορισμός: δεν μπορεί να περιέχεται «/» σε όνομα εντολής"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: εντολή δεν βρέθηκε"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
-msgstr ""
+msgstr "%s: %s: κακός interpreter "
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "«%s»: είναι ειδικό builtin"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "αδυναμία αντιγραφής του fd %d στον fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr ""
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr ""
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "συντακτικό σφάλμα στην έκφραση"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "απόπειρα ανάθεσης σε μη-μεταβλητή"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "συντακτικό σφάλμα στην έκφραση"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "διαίρεση διά 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
-msgstr ""
+msgstr "bug: κακό σύμβολο για expassign "
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
-msgstr ""
+msgstr "«:» αναμενόταν για μια έκφραση υπό συνθήκη"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "εκθέτης μικρότερος του 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
+msgstr "αναγνωριστικό αναμενόταν μετά από pre-increment ή pre-decrement "
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "λείπει «)»"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntax error: αναμενόταν τελεστέος"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntax error: μη έγκυρος αριθμητικός τελεστής"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (το λανθασμένο σύμβολο είναι \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "μη έγκυρη αριθμητική βάση"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "τιμή πολύ μεγάλη για βάση"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: σφάλμα έκφρασης\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: αδυναμία πρόσβασης στο γονικό κατάλογο"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "αδυναμία επανάταξης nodelay mode για fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "αδυναμία εκχώρησης νέου περιγραφέα αρχείου για είσοδο του bash  από fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr ""
+msgstr "save_bash_input: ο buffer υπάρχει ήδη για νέο fd %d "
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
-msgstr ""
+msgstr "η διεργασία κλώνος %d εμφανίζεται στην εργασία που τρέχει %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
-msgstr ""
+msgstr "διαγραφή σταματημένης εγασίας %d με ομάδα %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
+msgstr "add_process: διεργασία %5ld (%s) στη the_pipeline "
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
+msgstr "add_process: pid %5ld (%s) μαρκαρισμένη ως ακόμα ζωντανή "
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: δεν υπάρχει τέτοιο pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Σήμα %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Done"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "σταματημένο"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "σταματημένο(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
-msgstr ""
+msgstr "υπό εκτέλεση"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Done(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Έξοδος %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Άγνωστη κατάσταση"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "child setpgid (%ld to %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: διεργασία %ld δεν αποτελεί θυγατρική αυτού του κελύφους"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Δεν υπάρχουν στοιχεία για διεργασία %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: η εργασία %d είναι σταματημένη"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: η εργασία τερματίστηκε"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: εργασία %d ήδη στο παρασκήνιο"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
+"waitchld: ενεργοποίηση WNOHANG ώστε ν' αποφευχθεί οριστικό μπλοκάρισμα "
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: γραμμή %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(τώρα wd: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: αποτυχία getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: setpgid"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr ""
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
-msgstr ""
+msgstr "αδυναμία ρύθμισης της ομάδας της διεργασίας του τερματικού (%d) "
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "δεν υπάρχει job control σ'αυτό το κέλυφος"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
-msgstr ""
+msgstr "malloc: αποτυχημένη assertion: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "άγνωστο"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
-msgstr ""
+msgstr "free: κλήθηκε με όρισμα ήδη ελευθερωμένο μπλοκ "
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
-msgstr ""
+msgstr "free: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ "
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
+msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου "
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
-msgstr ""
+msgstr "free: τα μεγέθη των κομματιών στην αρχή και το τέλος διαφέρουν "
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
-msgstr ""
+msgstr "realloc: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ "
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
+msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
-msgstr ""
+msgstr "realloc: μεγέθη κομματιών σ' αρχή και τέλος διαφέρουν "
 
 #: lib/malloc/table.c:191
 #, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
+msgstr "register_alloc: πίνακας alloc γεμάτος με FIND_ALLOC;\n"
 
 #: lib/malloc/table.c:200
 #, c-format
 msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
+msgstr "register_alloc: %p ήδη στον πίνακα ως εκχωρισμένος;\n"
 
 #: lib/malloc/table.c:253
 #, c-format
@@ -1302,28 +1325,28 @@ msgstr "%s: μη έγκυρη υπηρεσία"
 #: lib/sh/netopen.c:306
 #, c-format
 msgid "%s: bad network path specification"
-msgstr ""
+msgstr "%s: κακιά προδιαγραφή διαδρομής δικτύου "
 
 #: lib/sh/netopen.c:347
 msgid "network operations not supported"
 msgstr "μη υποστηριζόμενες δικτιακές υπηρεσίες"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s"
@@ -1341,147 +1364,150 @@ msgstr "Έχεις νέο μήνυμα στο $_"
 msgid "The mail in %s has been read\n"
 msgstr "Το μήνυμα στο %s διαβάστηκε\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntax error: απαιτείται αριθμητική έκφραση"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "συντακτικό σφάλμα: «((%s))»"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
-msgstr ""
+msgstr "make_here_document: ο τύπος οδηγίας δεν είναι σωστός %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
+"here-document στη γραμμή %d με όριο το τέλος του αρχείου (αντί του «%s»)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: η οδηγία της ανακατεύθυνσης «%d» εκτός ορίων"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) υπερβαίνει το SIZE_MAX (%lu): γραμμή "
+"κόπηκε "
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "ο μέγιστος αριθμός here-document ξεπεράστηκε "
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntax error in conditional expression: μη αναμενόμενο σύμβολο «%s»"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
-msgstr ""
+msgstr "συντακτικό σφάλμα σ' έκφραση υπό συνθήκη "
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "μη αναμενόμενο σύμβολο «%s», αναμενόταν «)»"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "αναμενόταν «)»"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
+msgstr "απροσδόκητο όρισμα «%s» στον υπό αίρεση μοναδιαίο τελεστή  "
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
-msgstr ""
+msgstr "απροσδόκητο όρισμα για τον μοναδιαίο τελεστή "
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
-msgstr ""
+msgstr "απροσδόκητο σύμβολο «%s» βρέθηκε αντί για δυαδικό τελεστή υπό αίρεση "
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
-msgstr ""
+msgstr "αναμενόταν δυαδικός τελεστής υπό αίρεση "
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
+msgstr "απροσδόκητο όρισμα «%s» για δυαδικό τελεστή υπό αίρεση "
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
-msgstr ""
+msgstr "απροσδόκητο όρισμα για δυαδικό τελεστή υπό αίρεση "
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
-msgstr ""
+msgstr "απροσδόκητο σύμβολο «%c» σε εντολή υπό αίρεση "
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
-msgstr ""
+msgstr "απροσδόκητο σύμβολο «%s» σε εντολή υπό αίρεση "
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
-msgstr ""
+msgstr "απροσδόκητο σύμβολο %d σε εντολή υπό αίρεση "
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σύμβολο «%s»"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "συντακτικό σφάλμα κοντά σε «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: μη αναμενόμενο τέλος αρχείου"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "συντακτικό σφάλμα"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Χρήση «%s» για έξοδο από το κέλυφος.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: η συνάρτηση «%s» δεν βρέθηκε"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1510,90 +1536,94 @@ msgstr "xtrace_set: NULL file pointer"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: «%c»: μη έγκυρη μορφή χαρακτήρα"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "περιγραφέας αρχείου εκτός ορίων"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: ασαφής ανακατεύθυνση"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: αδυναμία εγγραφής πάνω σε υπάρχον αρχείο"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricted: αδυναμία ανακατεύθυνσης εξόδου"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "αδυναμία δημιουργίας προσωρινού αρχείου για here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port δεν υποστηρίζεται χωρίς δικτύωση"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr ""
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "δεν μπόρεσα να βρω /tmp, παρακαλώ να τον δημιουργήσετε!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp πρέπει να είναι ένα έγκυρο όνομα αρχείου"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: μη έγκυρη επιλογή"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr ""
+msgstr "αδυναμία ρύθμισης uid σε %d: effective uid %d "
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr ""
+msgstr "αδυναμί ρύθμισης gid σε %d: effective gid %d "
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "αδυναμία εκκίνησης του debugger, debugging απενεργοποιημένο  "
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: είναι κατάλογος"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Δεν έχω όνομα!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, έκδοση %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1602,60 +1632,62 @@ msgstr ""
 "Χρήση:\t%s [μακρά επιλογή GNU] [επιλογή] ...\n"
 "\t%s [μακρά επιλογή GNU] [επιλοη] script-file ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Μακρές επιλογές GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Επιλογές κελύφους:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
+msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ή επιλογή -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Πληκτρολόγησε «%s -c \"help set\"» για πληροφορίες επί των επιλογών "
 "κελύφους.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Πληκτρολόγησε «%s -c help» για περισσότερες πληροφορίες σχετικά με τις "
 "ενσωματομένες στο κέλυφος εντολές.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Χρησιμοποίησε την εντολή «bashbug» για αναφορά σφαλμάτων.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "σελίδα του bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"Γενική βοήθεια για την χρήση του λογισμικού GNU: <http://www.gnu.org/gethelp/"
+">\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: μη έγκυρη λειτουργία"
 
 #: siglist.c:48
 msgid "Bogus signal"
-msgstr ""
+msgstr "Ψεύτικο σήματος "
 
 #: siglist.c:51
 msgid "Hangup"
@@ -1691,23 +1723,23 @@ msgstr "Εξαίρεση κινητής υποδιαστολής"
 
 #: siglist.c:87
 msgid "Killed"
-msgstr ""
+msgstr "Killed"
 
 #: siglist.c:91
 msgid "Bus error"
-msgstr ""
+msgstr "Bus error"
 
 #: siglist.c:95
 msgid "Segmentation fault"
-msgstr ""
+msgstr "Σφάλμα κατάτμησης"
 
 #: siglist.c:99
 msgid "Bad system call"
-msgstr ""
+msgstr "Κακή κλήση συστήματος "
 
 #: siglist.c:103
 msgid "Broken pipe"
-msgstr ""
+msgstr "Σπασμένη σωλήνα"
 
 #: siglist.c:107
 msgid "Alarm clock"
@@ -1715,7 +1747,7 @@ msgstr "Ρολόι συναγερμού"
 
 #: siglist.c:111
 msgid "Terminated"
-msgstr ""
+msgstr "τερματισμός"
 
 #: siglist.c:115
 msgid "Urgent IO condition"
@@ -1723,7 +1755,7 @@ msgstr "Επείγουσα κατάσταση IO"
 
 #: siglist.c:119
 msgid "Stopped (signal)"
-msgstr ""
+msgstr "Σταματημένο (σήμα)"
 
 #: siglist.c:127
 msgid "Continue"
@@ -1731,15 +1763,15 @@ msgstr "Συνέχεια"
 
 #: siglist.c:135
 msgid "Child death or stop"
-msgstr ""
+msgstr "Child death or stop"
 
 #: siglist.c:139
 msgid "Stopped (tty input)"
-msgstr ""
+msgstr "Σταματημένο (είσοδος tty)"
 
 #: siglist.c:143
 msgid "Stopped (tty output)"
-msgstr ""
+msgstr "Σταματημένο (έξοδος tty)"
 
 #: siglist.c:147
 msgid "I/O ready"
@@ -1771,11 +1803,11 @@ msgstr ""
 
 #: siglist.c:175
 msgid "User signal 1"
-msgstr ""
+msgstr "Σήμα χρήστη 1"
 
 #: siglist.c:179
 msgid "User signal 2"
-msgstr ""
+msgstr "Σήμα χρήστη 2 "
 
 #: siglist.c:183
 msgid "HFT input data pending"
@@ -1822,106 +1854,112 @@ msgstr "Άγνωστο σήμα #"
 msgid "Unknown Signal #%d"
 msgstr "Άγνωστο σήμα #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
-msgstr ""
+msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
-msgstr ""
+msgstr "%s: αδυναμία εκχώρησης λίστας σε στοιχείο του πίνακα "
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
-msgstr ""
+msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση διεργασίας  "
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
-msgstr ""
+msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση διεργασίας "
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s προς ανάγνωση"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s προς εγγραφή"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
-msgstr ""
+msgstr "αδυναμία αναπαραγωγής named pipe %s ως fd %d "
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "κακή Î±Î½Ï\84ικαÏ\84άÏ\83Ï\84αÏ\83η: Î´ÎµÎ½ Ï\85Ï\80άÏ\81Ï\87ει Â«`» Ï\80οÏ\85 ÎºÎ»ÎµÎ¯Î½ÎµÎ¹ Ï\83Ï\84ο %s"
+msgstr "ανÏ\84ικαÏ\84άÏ\83Ï\84αÏ\83η ÎµÎ½Ï\84ολήÏ\82: null byte Î±Î³Î½Î¿Î®Î¸Î·ÎºÎµ Ï\83Ï\84ην ÎµÎ¯Ï\83οδο "
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
-msgstr ""
+msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση εντολής "
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
-msgstr ""
+msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση εντολής "
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr ""
+msgstr "command_substitute: αδυναμία αναπαραγωγής σωλήνα ως fd 1 "
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
-msgstr ""
+msgstr "%s: μη έγκυρο όνομα μεταβλητής ως όνομα αναφοράς "
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: κακή αντικατάσταση"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
-msgstr ""
+msgstr "%s: μη έγκυρη έμμεση επέκταση "
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: μη έγκυρο όνομα μεταβλητής"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: έκφραση αρνητική < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: κακή αντικατάσταση"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: αδύνατη ανάθεση κατ' αυτόν τον τρόπο"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
+"μελλοντικές εκδόσεις του κελύφους θα επιβάλουν την αποτίμηση ως μια "
+"αριθμητική αντικατάσταση"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
-msgstr ""
+msgstr "χωρίς ταίριασμα: %s"
 
 #: test.c:147
 msgid "argument expected"
@@ -1941,114 +1979,121 @@ msgstr "αναμενόταν «)»"
 msgid "`)' expected, found %s"
 msgstr "σναμενόταν «)», βρέθηκε %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
-msgstr ""
+msgstr "%s: αναμενόταν μοναδιαίος τελεστής "
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: αναμενόταν δυαδικός τελεστής"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "απούσα «]»"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "μη έγκυρος αριθμός σήματος"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) "
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
+msgstr "run_pending_traps: κακή τιμή  στην trap_list[%d]: %p "
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
+"run_pending_traps: ο διαχειριστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) "
+"σε μένα "
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: κακό σήμα %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
-msgstr ""
+msgstr "σφάλμα κατά την εισαγωγή του ορισμού της συνάρτησης «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "επίπεδο κελύφους (%d) πολύ υψηλό, επαναφορά στο 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no function context at current scope"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
-msgstr ""
+msgstr "%s: η μεταβλητή δεν μπορεί να δεχτεί τιμή  "
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables: no function context at current scope"
+msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s έχει κενό exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "ο χαρακτήρας %d δεν έίναι έγκυρος στην exportstr για %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "απουσία «=» στην exportstr για %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: head of shell_variables not a function context"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no global_variables context"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: head of shell_variables not a temporary environment scope"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
+msgstr "%s: %s: μη έγκυρη τιμή για trace file descriptor"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
-msgstr ""
+msgstr "%s: %s: τιμή συμβατότητας εκτός ορίου "
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2071,22 +2116,22 @@ msgstr "This is free software; you are free to change and redistribute it."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "There is NO WARRANTY, to the extent permitted by law."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: αδυναμία εκχώρησης %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes"
@@ -2212,9 +2257,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobspec ...]"
+msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2297,7 +2341,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2389,8 +2434,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] format [ορίσματα]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2407,7 +2453,8 @@ msgstr ""
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o option] [-DE] [name ...]"
 
 #: builtins.c:242
@@ -2419,9 +2466,10 @@ msgstr ""
 "callback] [-c quantum] [array]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
 "quantum] [array]"
@@ -2525,6 +2573,13 @@ msgid ""
 "    Exit Status:\n"
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
+"Ξαναρχίζει τους βρόχους for, while, ή until.\n"
+"    \n"
+"    Ξαναρχίζει την επόμενη επανάληψη του βρόχου FOR, WHILE ή UNTIL .\n"
+"    Αν N είναι ορισμένο, ξαναρχίζει το N-στο βρόχο.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Ο κωδικός εξόδου είναι 0 εκτός αν το N δεν είναι μαγαλύτερο ή ίσον του 1."
 
 #: builtins.c:354
 msgid ""
@@ -2537,7 +2592,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2652,6 +2707,10 @@ msgid ""
 "    Exit Status:\n"
 "    Always succeeds."
 msgstr ""
+"Επιστρέφει επιτυχημένο αποτέλεσμα.\n"
+"    \n"
+"    Κατάσταση Εξόδου:\n"
+"    Πάντοτε επιτυχία."
 
 #: builtins.c:462
 msgid ""
@@ -2660,6 +2719,10 @@ msgid ""
 "    Exit Status:\n"
 "    Always fails."
 msgstr ""
+"Επιστρέφει αποτυχημένο αποτέλεσμα.\n"
+"    \n"
+"    Κατάσταση Εξόδου:\n"
+"    Πάντοτε αποτυχία."
 
 #: builtins.c:471
 msgid ""
@@ -2699,11 +2762,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2726,6 +2789,9 @@ msgid ""
 "    \n"
 "    A synonym for `declare'.  See `help declare'."
 msgstr ""
+"Καθορίζει τιμές και χαρακτηριστκά μεταβλητής.\n"
+"    \n"
+"    Συνώνημο με «declare».  Βλέπε «help declare»."
 
 #: builtins.c:538
 msgid ""
@@ -2743,6 +2809,7 @@ msgid ""
 msgstr ""
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2771,12 +2838,48 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
+"Γράφει ορίσματα στη κανονική έξοδο.\n"
+"    \n"
+"    Εμφανίζει τα ARG, χωρισμένα από χαρακτήρες απλού διαστήματος "
+"ακολουθούμενα από\n"
+"    νέα γραμμή, στη τυπική έξοδο.\n"
+"    \n"
+"    Έπιλογές:\n"
+"      -n\tδεν επισυνάπτεται νέα γραμμή\n"
+"      -e\tενεργοποίηση ερμηνείας των παρακάτω  backslash διαφυγής\n"
+"      -E\tρητή απενεργοποίηση ερμηνείας του backslash διαφυγής\n"
+"    \n"
+"    η «echo» ερμηνεύει τους επόμενους backslash-escaped χαρακτήρες:\n"
+"      \\a\tσυναγερμός (κουδούνι)\n"
+"      \\b\tbackspace\n"
+"      \\c\tκαταστέλλει την παραπέρα έξοδο\n"
+"      \\e\tχαρακτήρας διαφυγής\n"
+"      \\E\tχαρακτήρας διαφυγής\n"
+"      \\f\tνέα σελίδα\n"
+"      \\n\tνέα γραμμή\n"
+"      \\r\tcarriage return\n"
+"      \\t\tοριζόντιο tab\n"
+"      \\v\tκατακόρυφο tab\n"
+"      \\\\\tbackslash\n"
+"      \\0nnn\tο χαρακτήρας με κωδικό ASCII  NNN (οκταδικός),  ο NNN μπορεί\n"
+"    \t\tνα είναι 0 έως 3 οκταδικά ψηφία\n"
+"      \\xHH\tο οκταδικός χαρακτήρας με τιμή HH (εξαδικός), ο HH\n"
+"    \t\tμπορεί να είναι ένα ή δύο εξαδικά ψηφία\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει επιτυχία εκτός αν συμβεί λάθος εγγραφής. "
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2788,8 +2891,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
+"Γράφει ορίσματα στην κανονική έξοδο.\n"
+"    \n"
+"    Εμφανίζει στην κανονική έξοδο τα ARG ακολουθούμενα από μια νέα γραμμή.\n"
+"    \n"
+"    Επιλογή:\n"
+"      -n\tδεν επισυνάπτεις μια νέα γραμμή\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει επιτυχία εκτός αν συμβεί σφάλμα. "
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2816,7 +2928,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2827,8 +2939,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns exit status of command or success if command is null."
 msgstr ""
+"Εκτελεί ορίσματα σαν να είναι εντολή κελύφους.\n"
+"    \n"
+"    Συνδιάζει ARGs σε μια μοναδική συμβολοσειρά, χρησιμοποιεί το αποτέλεσμα "
+"ως είσοδο στο κέλυφος,\n"
+"    και εκτελεί τις εντολές που προκύπτουν.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή "
+"είναι κενή. "
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2869,7 +2990,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2892,15 +3013,20 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
 "    Exits the shell with a status of N.  If N is omitted, the exit status\n"
 "    is that of the last command executed."
 msgstr ""
+"Τερματισμός του κελύφους.\n"
+"    \n"
+"    Τερματισμός κελύφους με κωδικό N.  Αν το N παραληφθεί, η κατάσταση "
+"εξόδου\n"
+"    είναι αυτή της τελευταίας εκτελεσμένης εντολής."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2908,8 +3034,13 @@ msgid ""
 "executed\n"
 "    in a login shell."
 msgstr ""
+"Τερματισμός ενός κελύφους σύνδεσης.\n"
+"    \n"
+"    Τερματίζει ένα κέλυφος σύνδεσης με κατάσταση εξόδου N. Επιστρέφει σφάλμα "
+"αν δεν εκτελείται\n"
+"    σ' ένα κέλυφος σύνδεσης. "
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2939,7 +3070,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2950,8 +3081,18 @@ msgid ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
+"Μετακίνηση της εργασίας στο προσκήνιο.\n"
+"    \n"
+"    Βάζει την εργασία που ορίζεται από JOB_SPEC στο προσκήνιο, κάνοντάς την\n"
+"    την τρέχουσα εργασία.  Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται η "
+"αντίληψη\n"
+"    που έχει το κέλυφος ως τρέχουσα εργασία.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Η κατάσταση της εργασίας που μπήκε στο προσκήνιο, ή κωδικός αποτυχίας "
+"στην περίπτωση σφάλματος."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -2964,8 +3105,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
+"Μετακινεί εργασίες στο παρασκήνιο.\n"
+"    \n"
+"    Τοποθετεί τις εργασίες που ορίζονται από κάθε JOB_SPEC στο παρασκήνιο,\n"
+"    όπως αν άρχισαν με «&».  Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται "
+"ή αντίληψη που έχει το κέλυφος\n"
+"    ως τρέχουσα εργασία.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφεται επιτυχία εκτός αν δεν έχει ενεργοποιηθεί job control ή έχει "
+"συμβεί σφάλμα."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -2989,7 +3140,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3004,14 +3155,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3020,7 +3171,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3045,7 +3197,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3069,7 +3221,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3085,8 +3237,24 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
+"Αφαίρεση εργασιών από το τρέχον κέλυφος.\n"
+"    \n"
+"    Αφαιρεί κάθε όρισμα JOBSPEC από τον πίνακα ενεργών εργασιών.  Στην "
+"απουσία\n"
+"    JOBSPEC, τότε το κέλυφος χρησιμοποιεί την ιδέα που έχει περί της "
+"τρέχουσας εργασίας.\n"
+"    \n"
+"    Επιλογές:\n"
+"      -a\tαφαιρεί όλες τις εργασίες αν δεν δοθεί JOBSPEC\n"
+"      -h\tσημαδεύει κάθε JOBSPEC έτσι ώστε το SIGHUP δεν στέλνεται στην "
+"εργασία\n"
+"    \t\tαν το κέλυφος δεχτεί ένα σήμα SIGHUP\n"
+"      -r\tαφαιρεί μόνο εκτελούμενες εργασίες\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει επιτυχία εκτός αν έχει δοθεί μη έγκυρη επιλογή ή JOBSPEC."
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3109,7 +3277,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3154,7 +3322,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3175,7 +3343,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3206,7 +3374,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3218,7 +3386,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3304,7 +3472,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3326,7 +3494,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3345,7 +3513,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3366,7 +3534,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3376,8 +3544,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
+"Ολίσθηση θεσιακών παραμέτρων.\n"
+"    \n"
+"    Μετονομασία των θεσιακών παραμέτρων $N+1,$N+2 ... to $1,$2 ...  Αν N\n"
+"    δεν δίνεται, υποτίθεται πως είναι 1.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει επιτυχία εκτός αν N είναι αρνητικός ή μαγαλύτερο; από $#. "
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3391,7 +3566,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3405,7 +3580,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3487,16 +3662,112 @@ msgid ""
 "    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
 "    false or an invalid argument is given."
 msgstr ""
+"Αποτίμηση δυνητικής έκφρασης.\n"
+"    \n"
+"    Τερματίζεται με κωδικό 0 (αληθής) ή 1 (ψευδής) ανάλογα\n"
+"    με την αποτίμηση της EXPR.  Η έκφραση μπορεί να είναι μοναδιαία ή "
+"δυαδική.  Μοναδιαίες\n"
+"    εκφράσεις χρησιμοποιούνται συχνά  για την εξέταση της κατάστασης "
+"αρχείου.  Υπάρχουν\n"
+"    τελεστές αλφαριθμητικών όπως και συγκρίσεως αριθμών.\n"
+"    \n"
+"    Η συμπεριφορά των τεστ εξαρτάται από τον αριθμό των ορισμάτων.  "
+"Αναφερθείτε\n"
+"    στη σελίδα εγχειριδίου του bash για τις ολοκληρωμένες προδιαγραφές.\n"
+"    \n"
+"    Τελεστές αρχείων:\n"
+"    \n"
+"      -a ΑΡΧΕΙΟ        Αληθής αν το αρχείο υπάρχει.\n"
+"      -b ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι ειδικό αρχείο μπλοκ.\n"
+"      -c ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι ειδικό αρχείο χαρακτήρων.\n"
+"      -d ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι κατάλογος.\n"
+"      -e ΑΡΧΕΙΟ        Αληθής αν το αρχείο υπάρχει.\n"
+"      -f  ΑΡΧΕΙΟ        Αληθής αν το αρχείο υπάρχει και είναι κανονικό "
+"αρχείο.\n"
+"      -g  ΑΡΧΕΙΟ       Αληθής αν το αρχείο είναι «set-group-id».\n"
+"      -h ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n"
+"      -L ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n"
+"      -k ΑΡΧΕΙΟ        Αληθής αν το αρχείο έχει ορισμένο το bit «sticky».\n"
+"      -p ΑΡΧΕΙΟ        Αληθής αν το αρχείο μια named pipe.\n"
+"      -r ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι αναγνώσιμο από εσάς.\n"
+"      -s ΑΡΧΕΙΟ        Αληθής αν το αρχείο υπάρχει και δεν είναι κενό.\n"
+"      -S ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι ένα socket.\n"
+"      -t FD                Αληθής αν ο FD είναι ανοιγμένος σ' ενα "
+"τερματικό.\n"
+"      -u ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι «set-user-id».\n"
+"      -w ΑΡΧΕΙΟ        Αληθής αν το αρχείο εγγράψιμο από εσάς.\n"
+"      -x ΑΡΧΕΙΟ        Αληθής αν το αρχείο είναι εκτελέσιμο από εσάς.\n"
+"      -O ΑΡΧΕΙΟ        Αληθής αν το αρχείο is effectively owned by you.\n"
+"      -G ΑΡΧΕΙΟ        Αληθής αν το αρχείο is effectively owned by your "
+"group.\n"
+"      -N ΑΡΧΕΙΟ        Αληθής αν το αρχείο μεταβλήθηκε από την τελευταία "
+"φορά που διαβάστηκε.\n"
+"    \n"
+"      ΑΡΧΕΙΟ1 -nt ΑΡΧΕΙΟ2  Αληθής αν το αρχείο1 είναι νεότερο από το αρχείο2 "
+"(σύμφωνα\n"
+"                       με την ημερομηνία τροποποίηση).\n"
+"    \n"
+"      ΑΡΧΕΙΟ1 -ot ΑΡΧΕΙΟ2  Αληθές αν αρχείο1 είναι παλαιότερο από το "
+"αρχείο2.\n"
+"    \n"
+"      ΑΡΧΕΙΟ1 -ef ΑΡΧΕΙΟ2  Αληθές αν το αρχείο1 είναι hard link στο "
+"αρχείο2.\n"
+"    \n"
+"    Τελεστές συμβολοσειράς:\n"
+"    \n"
+"      -z STRING      Αληθές αν η συμβολοσειρά είναι κενή.\n"
+"    \n"
+"      -n STRING\n"
+"         STRING      Αληθές αν η συμβολοσειρά δεν είναι κενή.\n"
+"    \n"
+"      STRING1 = STRING2\n"
+"                     Αληθές αν οι συμβολοσειρές είναι ίσες.\n"
+"      STRING1 != STRING2\n"
+"                     Αληθές αν οι συμβολοσειρές δεν είναι ίσες.\n"
+"      STRING1 < STRING2\n"
+"                     Αληθές αν η STRING1 προηγείται λεξικογραφικά της "
+"STRING2.\n"
+"      STRING1 > STRING2\n"
+"                     Αληθές αν η STRING1 έπεται λεξικογραφικά της STRING2.\n"
+"    \n"
+"    Άλλοι τελεστές:\n"
+"    \n"
+"      -o OPTION      Αληθές αν η επιλογή του κελύφους OPTION έχει "
+"ενεργοποιηθεί.\n"
+"      -v VAR         Αληθές αν η μεταβλητή VAR έχει οριστεί.\n"
+"      -R VAR         Αληθές αν η μεταβλητή VAR έχει οριστεί και είναι όνομα\n"
+"                     αναφοράς.\n"
+"      ! EXPR         Αληθές αν η expr είναι ψευδής.\n"
+"      EXPR1 -a EXPR2 Αληθές αν αμφότερες οι expr1 ΚΑΙ expr2 είναι αληθείς.\n"
+"      EXPR1 -o EXPR2 Αληθές αν είτε η expr1 Ή η expr2 είναι αληθής.\n"
+"    \n"
+"      arg1 OP arg2   Αρηθμιτικά τεστ.  OP είναι ένα από τα -eq, -ne,\n"
+"                     -lt, -le, -gt, ή -ge.\n"
+"    \n"
+"    Αριθμητικοί δυαδικοί τελεστές επιστρέφουν αληθές αν ARG1 είναι ίσο, μη-"
+"ίσο,\n"
+"    μικρότερο-από, μικρότερο-από-ή-ίσο, μεγαλύτερο-από, ή μεγαλύτερο-από-ή-"
+"ίσο\n"
+"    από το ARG2.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει επιτυχία αν EXPR αποτιμάται σε αληθές, αποτυχία αν EXPR "
+"αποτιμάται σε\n"
+"    ψευδές ή αν δίδεται ένα μη έγκυρο όρισμα."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
 "    This is a synonym for the \"test\" builtin, but the last argument must\n"
 "    be a literal `]', to match the opening `['."
 msgstr ""
+"Αποτιμά δυνητική έκφραση.\n"
+"    \n"
+"    Συνώνυμο με το «test» builtin, αλλά το τελευταίο όρισμα πρέπει\n"
+"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3507,8 +3778,16 @@ msgid ""
 "    Exit Status:\n"
 "    Always succeeds."
 msgstr ""
+"Εμφανίζει χρόνους διεργασιών.\n"
+"    \n"
+"    Εμφανίζει το χρόνο του χρήστη και συστήματος για το κέλυφος και όλες "
+"τις\n"
+"    θυγατρικές διεργασίες.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Πάντα επιτυχία."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3552,7 +3831,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3582,7 +3861,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3631,7 +3910,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3649,7 +3928,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3657,19 +3936,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3684,7 +3965,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3696,8 +3977,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Εκτέλεση εντολών για μέλος μιας λίστας.\n"
+"    \n"
+"    Ο βρόχος «for» εκτελεί μια αλληλουχία εντολών για κάθε μέλος\n"
+"    μιας λίστας.  Αν «in ΛΕΞΕΙΣ ...;» δεν δίνεται, τότε υποτίθεται η «in \"$@"
+"\"».\n"
+"    Για κάθε στοιχείο στις ΛΕΞΕΙΣ, ΟΝΟΜΑ ορίζεται σ' αυτό το στοιχείο, και\n"
+"    οι ΕΝΤΟΛΕΣ εκτελούνται.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3713,8 +4004,21 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Αριθμητική βρόχου for.\n"
+"    \n"
+"    Ισοδύναμο με\n"
+"    \t(( EXP1 ))\n"
+"    \twhile (( EXP2 )); do\n"
+"    \t\tCOMMANDS\n"
+"    \t\t(( EXP3 ))\n"
+"    \tdone\n"
+"    EXP1, EXP2, και EXP3 είναι αριθμητικές εκφράσεις. Αν μια έκφραση\n"
+"    παραληφθεί, συμπεριφέρεται σαν να είχε αποτιμηθεί ίση με 1.\n"
+"    \n"
+"    Κατάσταση εξόδου:\n"
+"    Επιστρέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3734,7 +4038,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3750,7 +4054,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3761,7 +4065,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3782,7 +4086,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3793,7 +4097,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3804,7 +4108,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3817,7 +4121,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3831,7 +4135,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3842,7 +4146,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3856,7 +4160,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3866,8 +4170,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
+"Αποτίμηση αριθμητικής εκφράσεως.\n"
+"    \n"
+"    Η ΕΚΦΡΑΣΗ αποτιμάται σύμφωνα με τους αριθμητικούς κανόνες.\n"
+"    Ισοδύναμο με το \"let ΕΚΦΡΑΣΗ\".\n"
+"    \n"
+"    Κωδικός εξόδου:\n"
+"    Επιστρέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστρέφει 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3895,7 +4206,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3949,7 +4260,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -3980,7 +4291,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4007,7 +4318,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4036,14 +4347,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4057,7 +4367,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4096,7 +4406,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4114,16 +4424,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4136,7 +4450,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4151,6 +4465,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4167,7 +4482,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4209,27 +4524,12 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
-"Î\91νάγνÏ\89Ï\83η Î³Ï\81αμμÏ\8eν από αρχείο σε μεταβλητή τύπου πίνακα.\n"
+"Î\94ιαβάζει Î³Ï\81αμμέÏ\82 από αρχείο σε μεταβλητή τύπου πίνακα.\n"
 "    \n"
 "    Συνώνημο του «mapfile»."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "αληθής"
-
-#~ msgid "false"
-#~ msgstr "ψευδής"
-
-#~ msgid "times"
-#~ msgstr "times"
index 72a1a7b376dbfc429794f3ab0dd1dd7960dedf6c..d38d399ab00508a96c8bc69bfeb03d8df9646757 100644 (file)
Binary files a/po/en@boldquot.gmo and b/po/en@boldquot.gmo differ
index b93c2e8b08d65b0410a141a9505807c4797b1581..6a77f8b0b2ad4d29431b3aaa58ca1e2368cc1909 100644 (file)
@@ -1,7 +1,7 @@
 # English translations for GNU bash package.
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the GNU bash package.
-# Automatically generated, 2016.
+# Automatically generated, 2018.
 #
 # All this catalog "translates" are quotation characters.
 # The msgids must be ASCII and therefore cannot contain real quotation
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bash 4.4-release\n"
+"Project-Id-Version: GNU bash 5.0-rc1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-19 15:52-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -41,119 +41,119 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "bad array subscript"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr "%s: removing nameref attribute"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: cannot convert indexed to associative array"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: invalid associative array key"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: cannot assign to non-numeric index"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: must use subscript when assigning associative array"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: cannot create: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: cannot find keymap for command"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: first non-whitespace character is not ‘\e[1m\"\e[0m’"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no closing ‘\e[1m%c\e[0m’ in %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: missing colon separator"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "brace expansion: cannot allocate memory for %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "brace expansion: failed to allocate memory for %u elements"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "brace expansion: failed to allocate memory for ‘\e[1m%s\e[0m’"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "‘\e[1m%s\e[0m’: invalid alias name"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "line editing not enabled"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "‘\e[1m%s\e[0m’: invalid keymap name"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: cannot read: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "‘\e[1m%s\e[0m’: cannot unbind"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "‘\e[1m%s\e[0m’: unknown function name"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s is not bound to any keys.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s can be invoked via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "‘\e[1m%s\e[0m’: cannot unbind"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "loop count"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "only meaningful in a ‘\e[1mfor\e[0m’, ‘\e[1mwhile\e[0m’, or ‘\e[1muntil\e[0m’ loop"
 
@@ -167,233 +167,233 @@ msgstr ""
 "    \n"
 "    Without EXPR, returns "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME not set"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "too many arguments"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 msgid "null directory"
 msgstr "null directory"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD not set"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "line %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "warning: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: usage: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: option requires an argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: numeric argument required"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: not found"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: invalid option"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: invalid option name"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "‘\e[1m%s\e[0m’: not a valid identifier"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "invalid octal number"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "invalid hex number"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "invalid number"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: invalid signal specification"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "‘\e[1m%s\e[0m’: not a pid or valid job spec"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: readonly variable"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s out of range"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s out of range"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: no such job"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: no job control"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "no job control"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restricted"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restricted"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: not a shell builtin"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "write error: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "error setting terminal attributes: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "error getting terminal attributes: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error retrieving current directory: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ambiguous job spec"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "help not available in this version"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: invalid action name"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: no completion specification"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "warning: -F option may not work as you expect"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "warning: -C option may not work as you expect"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "not currently executing completion function"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "can only be used in a function"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: reference variable cannot be an array"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: nameref variable self references not allowed"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: circular name reference"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "‘\e[1m%s\e[0m’: invalid variable name for name reference"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "cannot use ‘\e[1m-f\e[0m’ to make functions"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: readonly function"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: quoted compound array assignment deprecated"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: cannot destroy array variables in this way"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: cannot convert associative to indexed array"
@@ -427,68 +427,68 @@ msgstr "%s: not dynamically loaded"
 msgid "%s: cannot delete: %s"
 msgstr "%s: cannot delete: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is a directory"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: not a regular file"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file is too large"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: cannot execute binary file"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: cannot execute: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "not login shell: use ‘\e[1mexit\e[0m’"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "There are stopped jobs.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "There are running jobs.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "no command found"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "history specification"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: cannot open temp file: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "current"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d started without job control"
@@ -503,28 +503,27 @@ msgstr "%s: illegal option -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: option requires an argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing disabled"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hash table empty\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "hits\tcommand\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Shell commands matching keyword `"
 msgstr[1] "Shell commands matching keywords `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -532,12 +531,12 @@ msgstr ""
 "no help topics match ‘\e[1m%s\e[0m’.  Try ‘\e[1mhelp help\e[0m’ or ‘\e[1mman -k %s\e[0m’ "
 "or ‘\e[1minfo %s\e[0m’."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: cannot open: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -558,20 +557,21 @@ msgstr ""
 "A star (*) next to a name means that the command is disabled.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "cannot use more than one of -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "history position"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: invalid timestamp"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: history expansion failed"
@@ -585,16 +585,16 @@ msgstr "%s: inlib failed"
 msgid "no other options allowed with `-x'"
 msgstr "no other options allowed with ‘\e[1m-x\e[0m’"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: arguments must be process or job IDs"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Unknown error"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "expression expected"
 
@@ -603,69 +603,69 @@ msgstr "expression expected"
 msgid "%s: not an indexed array"
 msgstr "%s: not an indexed array"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: invalid file descriptor specification"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: invalid file descriptor: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: invalid line count"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: invalid array origin"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: invalid callback quantum"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "empty array variable name"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "array variable support required"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "‘\e[1m%s\e[0m’: missing format character"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "‘\e[1m%c\e[0m’: invalid time format specification"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "‘\e[1m%c\e[0m’: invalid format character"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "warning: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "format parsing problem: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "missing hex digit for \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "missing unicode digit for \\%c"
@@ -679,19 +679,19 @@ msgstr "no other directory"
 msgid "%s: invalid argument"
 msgstr "%s: invalid argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<no current directory>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "directory stack empty"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "directory stack index"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -736,7 +736,7 @@ msgstr ""
 "by\n"
 "\tdirs when invoked without options, starting with zero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -782,7 +782,7 @@ msgstr ""
 "    \n"
 "    The ‘\e[1mdirs\e[0m’ builtin displays the directory stack."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -827,40 +827,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: invalid timeout specification"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "read error: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "can only ‘\e[1mreturn\e[0m’ from a function or sourced script"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "cannot simultaneously unset a function and a variable"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: cannot unset"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: cannot unset: readonly %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: not an array variable"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: not a function"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: cannot export"
@@ -869,20 +869,20 @@ msgstr "%s: cannot export"
 msgid "shift count"
 msgstr "shift count"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "cannot set and unset shell options simultaneously"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: invalid shell option name"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "filename argument required"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: file not found"
@@ -895,61 +895,61 @@ msgstr "cannot suspend"
 msgid "cannot suspend a login shell"
 msgstr "cannot suspend a login shell"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s is aliased to ‘\e[1m%s\e[0m’\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s is a shell keyword\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s is a function\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s is a special shell builtin\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s is a shell builtin\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is hashed (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: invalid limit argument"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "‘\e[1m%c\e[0m’: bad command"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: cannot get limit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: cannot modify limit: %s"
@@ -968,357 +968,365 @@ msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode operator"
 msgid "`%c': invalid symbolic mode character"
 msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode character"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " line "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "last command: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Aborting..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "unknown command error"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "bad command type"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "bad connector"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "bad jump"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: unbound variable"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atimed out waiting for input: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "cannot redirect standard input from /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: ‘\e[1m%c\e[0m’: invalid format character"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr "execute_coproc: coproc [%d:%s] still exists"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "pipe error"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: maximum eval nesting level exceeded (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximum source nesting level exceeded (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximum function nesting level exceeded (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restricted: cannot specify ‘\e[1m/\e[0m’ in command names"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: command not found"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: bad interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: cannot execute binary file: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "‘\e[1m%s\e[0m’: is a special builtin"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "cannot duplicate fd %d to fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "expression recursion level exceeded"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "recursion stack underflow"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntax error in expression"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "attempted assignment to non-variable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "syntax error in variable assignment"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "division by 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: bad expassign token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "‘\e[1m:\e[0m’ expected for conditional expression"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponent less than 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifier expected after pre-increment or pre-decrement"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "missing ‘\e[1m)\e[0m’"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntax error: operand expected"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntax error: invalid arithmetic operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (error token is “\e[1m%s\e[0m”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "invalid arithmetic base"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "value too great for base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: expression error\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: cannot access parent directories"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "cannot reset nodelay mode for fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "cannot allocate new file descriptor for bash input from fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer already exists for new fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "forked pid %d appears in running job %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "deleting stopped job %d with process group %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: process %5ld (%s) in the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) marked as still alive"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no such pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Done"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stopped"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stopped(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Running"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Done(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Exit %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Unknown status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "child setpgid (%ld to %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld is not a child of this shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No record of process %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: job %d is stopped"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: job has terminated"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: job %d already in background"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: line %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd now: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp failed"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: no job control in background"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: line discipline"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "cannot set terminal process group (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "no job control in this shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: failed assertion: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1327,39 +1335,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "unknown"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: block on free list clobbered"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: called with already freed block argument"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: called with unallocated block argument"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underflow detected; mh_nbytes out of range"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: start and end chunk sizes differ"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: called with unallocated block argument"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underflow detected; mh_nbytes out of range"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: start and end chunk sizes differ"
 
@@ -1401,22 +1409,22 @@ msgstr "%s: bad network path specification"
 msgid "network operations not supported"
 msgstr "network operations not supported"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: cannot change locale (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: cannot change locale (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1434,35 +1442,35 @@ msgstr "You have new mail in $_"
 msgid "The mail in %s has been read\n"
 msgstr "The mail in %s has been read\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntax error: arithmetic expression required"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntax error: ‘\e[1m;\e[0m’ unexpected"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntax error: ‘\e[1m((%s))\e[0m’"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: bad instruction type %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "here-document at line %d delimited by end-of-file (wanted ‘\e[1m%s\e[0m’)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: redirection instruction ‘\e[1m%d\e[0m’ out of range"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1471,112 +1479,112 @@ msgstr ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "maximum here-document count exceeded"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "unexpected EOF while looking for matching ‘\e[1m%c\e[0m’"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "unexpected EOF while looking for ‘\e[1m]]\e[0m’"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntax error in conditional expression: unexpected token ‘\e[1m%s\e[0m’"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntax error in conditional expression"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "unexpected token ‘\e[1m%s\e[0m’, expected ‘\e[1m)\e[0m’"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "expected ‘\e[1m)\e[0m’"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "unexpected argument ‘\e[1m%s\e[0m’ to conditional unary operator"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "unexpected argument to conditional unary operator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "unexpected token ‘\e[1m%s\e[0m’, conditional binary operator expected"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "conditional binary operator expected"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "unexpected argument ‘\e[1m%s\e[0m’ to conditional binary operator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "unexpected argument to conditional binary operator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "unexpected token ‘\e[1m%c\e[0m’ in conditional command"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "unexpected token ‘\e[1m%s\e[0m’ in conditional command"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "unexpected token %d in conditional command"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntax error near unexpected token ‘\e[1m%s\e[0m’"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntax error near ‘\e[1m%s\e[0m’"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: unexpected end of file"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntax error"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use “\e[1m%s\e[0m” to leave the shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "unexpected EOF while looking for matching ‘\e[1m)\e[0m’"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: function ‘\e[1m%s\e[0m’ not found"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr "programmable_completion: %s: possible retry loop"
@@ -1605,90 +1613,94 @@ msgstr "xtrace_set: NULL file pointer"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ‘\e[1m%c\e[0m’: invalid format character"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "file descriptor out of range"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: ambiguous redirect"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: cannot overwrite existing file"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricted: cannot redirect output"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "cannot create temp file for here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: cannot assign fd to variable"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port not supported without networking"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "redirection error: cannot duplicate fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "could not find /tmp, please create!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp must be a valid directory name"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "pretty-printing mode ignored in interactive shells"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: invalid option"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "cannot set uid to %d: effective uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "cannot set gid to %d: effective gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr "cannot start debugger; debugging mode disabled"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Is a directory"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "I have no name!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1697,52 +1709,52 @@ msgstr ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU long options:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Shell options:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s or -o option\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Type ‘\e[1m%s -c “\e[1mhelp set\e[0m”\e[0m’ for more information about shell "
 "options.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Type ‘\e[1m%s -c help\e[0m’ for more information about shell builtin commands.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Use the ‘\e[1mbashbug\e[0m’ command to report bugs.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: invalid operation"
@@ -1916,91 +1928,96 @@ msgstr "Unknown Signal #"
 msgid "Unknown Signal #%d"
 msgstr "Unknown Signal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "bad substitution: no closing ‘\e[1m%s\e[0m’ in %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: cannot assign list to array member"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "cannot make pipe for process substitution"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "cannot make child for process substitution"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "cannot open named pipe %s for reading"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "cannot open named pipe %s for writing"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "cannot duplicate named pipe %s as fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
 msgstr "command substitution: ignored null byte in input"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "cannot make pipe for command substitution"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "cannot make child for command substitution"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: cannot duplicate pipe as fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: invalid variable name for name reference"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: bad substitution"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: invalid indirect expansion"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: invalid variable name"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter not set"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter null or not set"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expression < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: bad substitution"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: cannot assign in this way"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2008,12 +2025,12 @@ msgstr ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "bad substitution: no closing “\e[1m`\e[0m” in %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "no match: %s"
@@ -2036,114 +2053,119 @@ msgstr "‘\e[1m)\e[0m’ expected"
 msgid "`)' expected, found %s"
 msgstr "‘\e[1m)\e[0m’ expected, found %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: unary operator expected"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: binary operator expected"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "missing ‘\e[1m]\e[0m’"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "invalid signal number"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: maximum trap handler level exceeded (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: bad signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error importing function definition for ‘\e[1m%s\e[0m’"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell level (%d) too high, resetting to 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no function context at current scope"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: variable may not be assigned value"
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: assigning integer to name reference"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: no function context at current scope"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s has null exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "invalid character %d in exportstr for %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "no ‘\e[1m=\e[0m’ in exportstr for %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: head of shell_variables not a function context"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no global_variables context"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: head of shell_variables not a temporary environment scope"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: cannot open as FILE"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: invalid value for trace file descriptor"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: compatibility value out of range"
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2166,22 +2188,22 @@ msgstr "This is free software; you are free to change and redistribute it."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "There is NO WARRANTY, to the extent permitted by law."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: cannot allocate %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: cannot allocate %lu bytes"
@@ -2391,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2484,11 +2506,11 @@ msgstr "printf [-v var] format [arguments]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 
@@ -2501,8 +2523,8 @@ msgstr ""
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o option] [-DEI] [name ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2514,11 +2536,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 
 #: builtins.c:256
 msgid ""
@@ -2700,7 +2722,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2711,7 +2733,7 @@ msgstr ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 
 #: builtins.c:369
 msgid ""
@@ -2951,11 +2973,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2988,11 +3010,11 @@ msgstr ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the ‘\e[1minteger\e[0m’ attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the ‘\e[1mtrace\e[0m’ attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using ‘\e[1m+\e[0m’ instead of ‘\e[1m-\e[0m’ turns off the given attribute.\n"
@@ -3074,6 +3096,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3105,11 +3133,17 @@ msgstr ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3131,7 +3165,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3181,7 +3215,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3201,7 +3235,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns exit status of command or success if command is null."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3282,7 +3316,7 @@ msgstr ""
 "    Returns success if an option is found; fails if the end of options is\n"
 "    encountered or an error occurs."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3324,7 +3358,7 @@ msgstr ""
 "    Returns success unless COMMAND is not found or a redirection error "
 "occurs."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3336,7 +3370,7 @@ msgstr ""
 "    Exits the shell with a status of N.  If N is omitted, the exit status\n"
 "    is that of the last command executed."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3350,7 +3384,7 @@ msgstr ""
 "executed\n"
 "    in a login shell."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3408,7 +3442,7 @@ msgstr ""
 "    Returns success or status of executed command; non-zero if an error "
 "occurs."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3428,7 +3462,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3452,7 +3486,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3496,7 +3530,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not found or an invalid option is given."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3511,7 +3545,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3530,13 +3564,13 @@ msgstr ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3545,7 +3579,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3577,7 +3612,8 @@ msgstr ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3601,7 +3637,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3645,7 +3681,7 @@ msgstr ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3675,7 +3711,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3717,7 +3753,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3803,7 +3839,7 @@ msgstr ""
 "    Exit Status:\n"
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3824,7 +3860,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3873,7 +3909,7 @@ msgstr ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3903,7 +3939,7 @@ msgstr ""
 "occurs,\n"
 "    or an invalid file descriptor is supplied as the argument to -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3923,7 +3959,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns N, or failure if the shell is not executing a function or script."
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4091,7 +4127,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4131,7 +4167,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or a NAME is read-only."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4165,7 +4201,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4203,7 +4239,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4221,7 +4257,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless N is negative or greater than $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4245,7 +4281,7 @@ msgstr ""
 "    Returns the status of the last command executed in FILENAME; fails if\n"
 "    FILENAME cannot be read."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4269,7 +4305,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4431,7 +4467,7 @@ msgstr ""
 "    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
 "    false or an invalid argument is given."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4444,7 +4480,7 @@ msgstr ""
 "must\n"
 "    be a literal ‘\e[1m]\e[0m’, to match the opening ‘\e[1m[\e[0m’."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4464,7 +4500,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Always succeeds."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4549,7 +4585,7 @@ msgstr ""
 "    Returns success unless a SIGSPEC is invalid or an invalid option is "
 "given."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4607,7 +4643,7 @@ msgstr ""
 "    Returns success if all of the NAMEs are found; fails if any are not "
 "found."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4702,7 +4738,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4734,7 +4770,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless MODE is invalid or an invalid option is given."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4742,13 +4778,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4759,18 +4797,20 @@ msgstr ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4796,7 +4836,7 @@ msgstr ""
 "invalid\n"
 "    option is given."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4820,7 +4860,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4850,7 +4890,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4887,7 +4927,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4915,7 +4955,7 @@ msgstr ""
 "    Exit Status:\n"
 "    The return status is the return status of PIPELINE."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4933,7 +4973,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4971,7 +5011,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4989,7 +5029,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5007,7 +5047,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5029,7 +5069,7 @@ msgstr ""
 "    Exit Status:\n"
 "    The coproc command returns an exit status of 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5053,7 +5093,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is readonly."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5071,7 +5111,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5096,7 +5136,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the resumed job."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5114,7 +5154,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5168,7 +5208,7 @@ msgstr ""
 "    Exit Status:\n"
 "    0 or 1 depending on value of EXPRESSION."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5272,7 +5312,7 @@ msgstr ""
 "    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
 "    \t\tcommands should be saved on the history list.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5330,7 +5370,7 @@ msgstr ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5382,7 +5422,7 @@ msgstr ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5437,14 +5477,13 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5460,9 +5499,8 @@ msgstr ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with ‘\e[1mset -o\e[0m’\n"
@@ -5475,7 +5513,7 @@ msgstr ""
 "    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
 "    given or OPTNAME is disabled."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5549,7 +5587,7 @@ msgstr ""
 "assignment\n"
 "    error occurs."
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5567,10 +5605,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5591,15 +5633,19 @@ msgstr ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to “\e[1mempty\e[0m” commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5621,7 +5667,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5636,6 +5682,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5664,6 +5711,7 @@ msgstr ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the “\e[1mdefault\e[0m” command completion\n"
 "    \t-E\t\tChange options for the “\e[1mempty\e[0m” command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using ‘\e[1m+o\e[0m’ instead of ‘\e[1m-o\e[0m’ turns off the specified option.\n"
 "    \n"
@@ -5680,7 +5728,7 @@ msgstr ""
 "    Returns success unless an invalid option is supplied or NAME does not\n"
 "    have a completion specification defined."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5760,7 +5808,7 @@ msgstr ""
 "or\n"
 "    not an indexed array."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 54803fc37b480a678d185a80e1caf3b4154ce251..346cf495f3afe9b384a583ad25243b74607ab7c0 100644 (file)
Binary files a/po/en@quot.gmo and b/po/en@quot.gmo differ
index 96b71c68fbbc26a9edbed3053a4264438eab4187..ad3600f897141cc5c6772e80f61c4c5cc2e17dfb 100644 (file)
@@ -1,7 +1,7 @@
 # English translations for GNU bash package.
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the GNU bash package.
-# Automatically generated, 2016.
+# Automatically generated, 2018.
 #
 # All this catalog "translates" are quotation characters.
 # The msgids must be ASCII and therefore cannot contain real quotation
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bash 4.4-release\n"
+"Project-Id-Version: GNU bash 5.0-rc1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-19 15:52-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -38,119 +38,119 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "bad array subscript"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr "%s: removing nameref attribute"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: cannot convert indexed to associative array"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: invalid associative array key"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: cannot assign to non-numeric index"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: must use subscript when assigning associative array"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: cannot create: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: cannot find keymap for command"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: first non-whitespace character is not ‘\"’"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no closing ‘%c’ in %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: missing colon separator"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "brace expansion: cannot allocate memory for %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "brace expansion: failed to allocate memory for %u elements"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "brace expansion: failed to allocate memory for ‘%s’"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "‘%s’: invalid alias name"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "line editing not enabled"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "‘%s’: invalid keymap name"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: cannot read: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "‘%s’: cannot unbind"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "‘%s’: unknown function name"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s is not bound to any keys.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s can be invoked via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "‘%s’: cannot unbind"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "loop count"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop"
 
@@ -164,233 +164,233 @@ msgstr ""
 "    \n"
 "    Without EXPR, returns "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME not set"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "too many arguments"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 msgid "null directory"
 msgstr "null directory"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD not set"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "line %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "warning: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: usage: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: option requires an argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: numeric argument required"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: not found"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: invalid option"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: invalid option name"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "‘%s’: not a valid identifier"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "invalid octal number"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "invalid hex number"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "invalid number"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: invalid signal specification"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "‘%s’: not a pid or valid job spec"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: readonly variable"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s out of range"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s out of range"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: no such job"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: no job control"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "no job control"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restricted"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restricted"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: not a shell builtin"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "write error: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "error setting terminal attributes: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "error getting terminal attributes: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error retrieving current directory: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ambiguous job spec"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "help not available in this version"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: invalid action name"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: no completion specification"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "warning: -F option may not work as you expect"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "warning: -C option may not work as you expect"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "not currently executing completion function"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "can only be used in a function"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: reference variable cannot be an array"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: nameref variable self references not allowed"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: circular name reference"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "‘%s’: invalid variable name for name reference"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "cannot use ‘-f’ to make functions"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: readonly function"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: quoted compound array assignment deprecated"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: cannot destroy array variables in this way"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: cannot convert associative to indexed array"
@@ -424,68 +424,68 @@ msgstr "%s: not dynamically loaded"
 msgid "%s: cannot delete: %s"
 msgstr "%s: cannot delete: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is a directory"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: not a regular file"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file is too large"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: cannot execute binary file"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: cannot execute: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "not login shell: use ‘exit’"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "There are stopped jobs.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "There are running jobs.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "no command found"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "history specification"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: cannot open temp file: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "current"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d started without job control"
@@ -500,40 +500,39 @@ msgstr "%s: illegal option -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: option requires an argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing disabled"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hash table empty\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "hits\tcommand\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Shell commands matching keyword `"
 msgstr[1] "Shell commands matching keywords `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 "no help topics match ‘%s’.  Try ‘help help’ or ‘man -k %s’ or ‘info %s’."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: cannot open: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -552,20 +551,21 @@ msgstr ""
 "A star (*) next to a name means that the command is disabled.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "cannot use more than one of -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "history position"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: invalid timestamp"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: history expansion failed"
@@ -579,16 +579,16 @@ msgstr "%s: inlib failed"
 msgid "no other options allowed with `-x'"
 msgstr "no other options allowed with ‘-x’"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: arguments must be process or job IDs"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Unknown error"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "expression expected"
 
@@ -597,69 +597,69 @@ msgstr "expression expected"
 msgid "%s: not an indexed array"
 msgstr "%s: not an indexed array"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: invalid file descriptor specification"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: invalid file descriptor: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: invalid line count"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: invalid array origin"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: invalid callback quantum"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "empty array variable name"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "array variable support required"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "‘%s’: missing format character"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "‘%c’: invalid time format specification"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "‘%c’: invalid format character"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "warning: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "format parsing problem: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "missing hex digit for \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "missing unicode digit for \\%c"
@@ -673,19 +673,19 @@ msgstr "no other directory"
 msgid "%s: invalid argument"
 msgstr "%s: invalid argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<no current directory>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "directory stack empty"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "directory stack index"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -729,7 +729,7 @@ msgstr ""
 "by\n"
 "\tdirs when invoked without options, starting with zero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -775,7 +775,7 @@ msgstr ""
 "    \n"
 "    The ‘dirs’ builtin displays the directory stack."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -818,40 +818,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: invalid timeout specification"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "read error: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "can only ‘return’ from a function or sourced script"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "cannot simultaneously unset a function and a variable"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: cannot unset"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: cannot unset: readonly %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: not an array variable"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: not a function"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: cannot export"
@@ -860,20 +860,20 @@ msgstr "%s: cannot export"
 msgid "shift count"
 msgstr "shift count"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "cannot set and unset shell options simultaneously"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: invalid shell option name"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "filename argument required"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: file not found"
@@ -886,61 +886,61 @@ msgstr "cannot suspend"
 msgid "cannot suspend a login shell"
 msgstr "cannot suspend a login shell"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s is aliased to ‘%s’\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s is a shell keyword\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s is a function\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s is a special shell builtin\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s is a shell builtin\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is hashed (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: invalid limit argument"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "‘%c’: bad command"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: cannot get limit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: cannot modify limit: %s"
@@ -959,357 +959,365 @@ msgstr "‘%c’: invalid symbolic mode operator"
 msgid "`%c': invalid symbolic mode character"
 msgstr "‘%c’: invalid symbolic mode character"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " line "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "last command: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Aborting..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "unknown command error"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "bad command type"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "bad connector"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "bad jump"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: unbound variable"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atimed out waiting for input: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "cannot redirect standard input from /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: ‘%c’: invalid format character"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr "execute_coproc: coproc [%d:%s] still exists"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "pipe error"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: maximum eval nesting level exceeded (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximum source nesting level exceeded (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximum function nesting level exceeded (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restricted: cannot specify ‘/’ in command names"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: command not found"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: bad interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: cannot execute binary file: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "‘%s’: is a special builtin"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "cannot duplicate fd %d to fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "expression recursion level exceeded"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "recursion stack underflow"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntax error in expression"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "attempted assignment to non-variable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "syntax error in variable assignment"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "division by 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: bad expassign token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "‘:’ expected for conditional expression"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponent less than 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifier expected after pre-increment or pre-decrement"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "missing ‘)’"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntax error: operand expected"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntax error: invalid arithmetic operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (error token is “%s”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "invalid arithmetic base"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "value too great for base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: expression error\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: cannot access parent directories"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "cannot reset nodelay mode for fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "cannot allocate new file descriptor for bash input from fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer already exists for new fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "forked pid %d appears in running job %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "deleting stopped job %d with process group %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: process %5ld (%s) in the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) marked as still alive"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no such pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Done"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stopped"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stopped(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Running"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Done(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Exit %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Unknown status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "child setpgid (%ld to %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld is not a child of this shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No record of process %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: job %d is stopped"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: job has terminated"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: job %d already in background"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: line %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd now: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp failed"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: no job control in background"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: line discipline"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "cannot set terminal process group (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "no job control in this shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: failed assertion: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1318,39 +1326,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "unknown"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: block on free list clobbered"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: called with already freed block argument"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: called with unallocated block argument"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underflow detected; mh_nbytes out of range"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: start and end chunk sizes differ"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: called with unallocated block argument"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underflow detected; mh_nbytes out of range"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: start and end chunk sizes differ"
 
@@ -1392,22 +1400,22 @@ msgstr "%s: bad network path specification"
 msgid "network operations not supported"
 msgstr "network operations not supported"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: cannot change locale (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: cannot change locale (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1425,35 +1433,35 @@ msgstr "You have new mail in $_"
 msgid "The mail in %s has been read\n"
 msgstr "The mail in %s has been read\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntax error: arithmetic expression required"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntax error: ‘;’ unexpected"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntax error: ‘((%s))’"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: bad instruction type %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: redirection instruction ‘%d’ out of range"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1462,112 +1470,112 @@ msgstr ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "maximum here-document count exceeded"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "unexpected EOF while looking for matching ‘%c’"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "unexpected EOF while looking for ‘]]’"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntax error in conditional expression: unexpected token ‘%s’"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntax error in conditional expression"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "unexpected token ‘%s’, expected ‘)’"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "expected ‘)’"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "unexpected argument ‘%s’ to conditional unary operator"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "unexpected argument to conditional unary operator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "unexpected token ‘%s’, conditional binary operator expected"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "conditional binary operator expected"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "unexpected argument ‘%s’ to conditional binary operator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "unexpected argument to conditional binary operator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "unexpected token ‘%c’ in conditional command"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "unexpected token ‘%s’ in conditional command"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "unexpected token %d in conditional command"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntax error near unexpected token ‘%s’"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntax error near ‘%s’"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: unexpected end of file"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntax error"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use “%s” to leave the shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "unexpected EOF while looking for matching ‘)’"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: function ‘%s’ not found"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr "programmable_completion: %s: possible retry loop"
@@ -1596,90 +1604,94 @@ msgstr "xtrace_set: NULL file pointer"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ‘%c’: invalid format character"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "file descriptor out of range"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: ambiguous redirect"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: cannot overwrite existing file"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricted: cannot redirect output"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "cannot create temp file for here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: cannot assign fd to variable"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port not supported without networking"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "redirection error: cannot duplicate fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "could not find /tmp, please create!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp must be a valid directory name"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "pretty-printing mode ignored in interactive shells"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: invalid option"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "cannot set uid to %d: effective uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "cannot set gid to %d: effective gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr "cannot start debugger; debugging mode disabled"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Is a directory"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "I have no name!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1688,49 +1700,49 @@ msgstr ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU long options:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Shell options:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s or -o option\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Use the ‘bashbug’ command to report bugs.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: invalid operation"
@@ -1904,91 +1916,96 @@ msgstr "Unknown Signal #"
 msgid "Unknown Signal #%d"
 msgstr "Unknown Signal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "bad substitution: no closing ‘%s’ in %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: cannot assign list to array member"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "cannot make pipe for process substitution"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "cannot make child for process substitution"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "cannot open named pipe %s for reading"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "cannot open named pipe %s for writing"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "cannot duplicate named pipe %s as fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
 msgstr "command substitution: ignored null byte in input"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "cannot make pipe for command substitution"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "cannot make child for command substitution"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: cannot duplicate pipe as fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: invalid variable name for name reference"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: bad substitution"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: invalid indirect expansion"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: invalid variable name"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter not set"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter null or not set"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expression < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: bad substitution"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: cannot assign in this way"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1996,12 +2013,12 @@ msgstr ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "bad substitution: no closing “`” in %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "no match: %s"
@@ -2024,114 +2041,119 @@ msgstr "‘)’ expected"
 msgid "`)' expected, found %s"
 msgstr "‘)’ expected, found %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: unary operator expected"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: binary operator expected"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "missing ‘]’"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "invalid signal number"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: maximum trap handler level exceeded (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: bad signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error importing function definition for ‘%s’"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell level (%d) too high, resetting to 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no function context at current scope"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: variable may not be assigned value"
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: assigning integer to name reference"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: no function context at current scope"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s has null exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "invalid character %d in exportstr for %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "no ‘=’ in exportstr for %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: head of shell_variables not a function context"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no global_variables context"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: head of shell_variables not a temporary environment scope"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: cannot open as FILE"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: invalid value for trace file descriptor"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: compatibility value out of range"
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2154,22 +2176,22 @@ msgstr "This is free software; you are free to change and redistribute it."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "There is NO WARRANTY, to the extent permitted by law."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: cannot allocate %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: cannot allocate %lu bytes"
@@ -2379,8 +2401,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2472,11 +2494,11 @@ msgstr "printf [-v var] format [arguments]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 
@@ -2489,8 +2511,8 @@ msgstr ""
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o option] [-DEI] [name ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2502,11 +2524,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 
 #: builtins.c:256
 msgid ""
@@ -2687,7 +2709,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2698,7 +2720,7 @@ msgstr ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 
 #: builtins.c:369
 msgid ""
@@ -2935,11 +2957,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2972,11 +2994,11 @@ msgstr ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the ‘integer’ attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the ‘trace’ attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using ‘+’ instead of ‘-’ turns off the given attribute.\n"
@@ -3057,6 +3079,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3088,11 +3116,17 @@ msgstr ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3114,7 +3148,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3164,7 +3198,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3184,7 +3218,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns exit status of command or success if command is null."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3262,7 +3296,7 @@ msgstr ""
 "    Returns success if an option is found; fails if the end of options is\n"
 "    encountered or an error occurs."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3304,7 +3338,7 @@ msgstr ""
 "    Returns success unless COMMAND is not found or a redirection error "
 "occurs."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3316,7 +3350,7 @@ msgstr ""
 "    Exits the shell with a status of N.  If N is omitted, the exit status\n"
 "    is that of the last command executed."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3330,7 +3364,7 @@ msgstr ""
 "executed\n"
 "    in a login shell."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3386,7 +3420,7 @@ msgstr ""
 "    Returns success or status of executed command; non-zero if an error "
 "occurs."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3406,7 +3440,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3430,7 +3464,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3474,7 +3508,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not found or an invalid option is given."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3489,7 +3523,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3508,13 +3542,13 @@ msgstr ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3523,7 +3557,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3554,7 +3589,8 @@ msgstr ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3578,7 +3614,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3622,7 +3658,7 @@ msgstr ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3652,7 +3688,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3694,7 +3730,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3780,7 +3816,7 @@ msgstr ""
 "    Exit Status:\n"
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3801,7 +3837,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3850,7 +3886,7 @@ msgstr ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3880,7 +3916,7 @@ msgstr ""
 "occurs,\n"
 "    or an invalid file descriptor is supplied as the argument to -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3900,7 +3936,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns N, or failure if the shell is not executing a function or script."
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4068,7 +4104,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4108,7 +4144,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or a NAME is read-only."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4142,7 +4178,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4180,7 +4216,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4198,7 +4234,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless N is negative or greater than $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4222,7 +4258,7 @@ msgstr ""
 "    Returns the status of the last command executed in FILENAME; fails if\n"
 "    FILENAME cannot be read."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4246,7 +4282,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4408,7 +4444,7 @@ msgstr ""
 "    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
 "    false or an invalid argument is given."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4420,7 +4456,7 @@ msgstr ""
 "    This is a synonym for the “test” builtin, but the last argument must\n"
 "    be a literal ‘]’, to match the opening ‘[’."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4440,7 +4476,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Always succeeds."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4524,7 +4560,7 @@ msgstr ""
 "    Returns success unless a SIGSPEC is invalid or an invalid option is "
 "given."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4580,7 +4616,7 @@ msgstr ""
 "    Returns success if all of the NAMEs are found; fails if any are not "
 "found."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4674,7 +4710,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4706,7 +4742,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless MODE is invalid or an invalid option is given."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4714,13 +4750,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4731,18 +4769,20 @@ msgstr ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4768,7 +4808,7 @@ msgstr ""
 "invalid\n"
 "    option is given."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4790,7 +4830,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4820,7 +4860,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4856,7 +4896,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4884,7 +4924,7 @@ msgstr ""
 "    Exit Status:\n"
 "    The return status is the return status of PIPELINE."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4902,7 +4942,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4940,7 +4980,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4958,7 +4998,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4976,7 +5016,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4998,7 +5038,7 @@ msgstr ""
 "    Exit Status:\n"
 "    The coproc command returns an exit status of 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5022,7 +5062,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless NAME is readonly."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5040,7 +5080,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5064,7 +5104,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns the status of the resumed job."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5082,7 +5122,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5134,7 +5174,7 @@ msgstr ""
 "    Exit Status:\n"
 "    0 or 1 depending on value of EXPRESSION."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5238,7 +5278,7 @@ msgstr ""
 "    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
 "    \t\tcommands should be saved on the history list.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5296,7 +5336,7 @@ msgstr ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5346,7 +5386,7 @@ msgstr ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5400,14 +5440,13 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5423,9 +5462,8 @@ msgstr ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n"
@@ -5438,7 +5476,7 @@ msgstr ""
 "    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
 "    given or OPTNAME is disabled."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5512,7 +5550,7 @@ msgstr ""
 "assignment\n"
 "    error occurs."
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5530,10 +5568,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5554,15 +5596,19 @@ msgstr ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to “empty” commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5584,7 +5630,7 @@ msgstr ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5599,6 +5645,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5627,6 +5674,7 @@ msgstr ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the “default” command completion\n"
 "    \t-E\t\tChange options for the “empty” command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using ‘+o’ instead of ‘-o’ turns off the specified option.\n"
 "    \n"
@@ -5642,7 +5690,7 @@ msgstr ""
 "    Returns success unless an invalid option is supplied or NAME does not\n"
 "    have a completion specification defined."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5722,7 +5770,7 @@ msgstr ""
 "or\n"
 "    not an indexed array."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 90aef6b1cbe752247d6911d4b9cfac19fe1de7c1..a3fa5502173ac063b6b9ba1c290020208c753594 100644 (file)
Binary files a/po/eo.gmo and b/po/eo.gmo differ
index f0a372e35f21458c3e535affb085e79f0cf4dc08..e6e6a0e218e16af3a25443c153688888d891ef6f 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,10 +1,10 @@
 # Esperanto language file for GNU Bash.
 # Copyright (C) 2011 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Sergio Pokrovskij <sergio.pokrovskij@gmail.com>, 1998, 2006, 2009, 2011, 2014, 2015.
+# Sergio Pokrovskij <sergio.pokrovskij@gmail.com>, 1998, ... 2016.
 #
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.4/bash-4.4-beta/builtins"); -*-
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4-beta"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4/builtins"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4"); -*-
 # Stilaj notoj:
 # La angulaj citiloj limigas «plurajn vortojn»,
 # 99-66 estas la citiloj de „unuvortaĵo‟
 # unset                     malvalorizi (variablon); malaktivigi, malŝalti (opcion, nomon)
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bash 4.4-beta1\n"
+"Project-Id-Version: GNU bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-21 14:06+0300\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2016-09-22 23:59+0700\n"
 "Last-Translator: Sergio Pokrovskij <sergio.pokrovskij@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: eo\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "Misa tabel-indico"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: Misa asocitabela ŝlosilo"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: Valorizato havu nombran indicon"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: Valorizante per asocitabelo uzu indicon"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: Ne prosperis krei: %s"
 
 # XXX: internal_error
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: Mankas klavartabelo por komando"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "Mankas ferma „%c‟ en %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: Mankas disiga dupunkto"
 
 # XXX: internal_error
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s"
 
 # XXX: internal_error
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %d elementoj"
 
 # XXX: internal_error
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "%s: Maltaŭgas por uzi kiel alinomon"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "liniredaktado ne estas ebligita"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s‟: Misa nomo por klavartabelo"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: Ne eblas legi: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "%s: Ne eblas malligi"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "%s: Nekonata funkcinomo"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s malhavas klavligon\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s vokeblas per "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "%s: Ne eblas malligi"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "iteracinombrilo"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "Sencas nur en iteracio „for‟, „while‟ aŭ „until‟"
 
@@ -170,234 +171,233 @@ msgstr ""
 "\n"
 "  Sen ESPR liveras "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME malhavas valoron"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "Tro multe da argumentoj"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "Ne estas alia dosierujo"
+msgstr "NUL-dosierujo"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD malhavas valoron"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linio %dª: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "Averto: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: Uzmaniero: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: La opcio bezonas argumenton"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: Necesas nombra argumento"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: Ne trovita"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: Misa opcio"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: Misa opcinomo"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s‟ ne estas taŭga nomo"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "Misa okuma nombro"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "Misa 16uma nombro"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "Misa nombro"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: Misa signalindiko"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s‟: Nek proceznumero, nek taŭga laborindiko"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: Nurlega variablo"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s estas ekster sia variejo"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumento"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s estas ekster sia variejo"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: Ne estas tia laboro"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: Ĉi tiu ŝelo ne disponigas laborregadon"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "Laborregado ne disponeblas"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: Limigita"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "limigita"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "„%s‟ ne estas primitiva komando ŝela"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "Eraro ĉe skribo: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "Eraro ĉe agordado de terminalaj atributoj: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "Eraro ĉe akiro de terminalaj atributoj: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: Ambigua laborindiko"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "helpilo mankas en ĉi tiu versio"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: Misa nomo de ago"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: Kompletigo ne estas specifita"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "Ni ne estas en plenumado de kompletiga funkcio"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "Uzeblas nur ene de funkcio"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: Referenca variablo ne povas esti tabelo"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: Nomreferenca variablo ne referencu sin mem"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: Cikla nomreferenco"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: Misa variablonomo por nomreferenco"
+msgstr "„%s“: Misa variablonomo por nomreferenco"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "„-f‟ ne estas uzebla por fari funkciojn"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: Nurlega funkcio"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: Tutopa tabelvalorizo citila estas evitinda"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon"
@@ -431,68 +431,68 @@ msgstr "%s: Ne ŝargita dinamike"
 msgid "%s: cannot delete: %s"
 msgstr "%s: Ne eblas forigi: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s estas dosierujo"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: Ne ordinara dosiero"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: Tro granda dosiero"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: Neplenumebla duuma dosiero"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: Maleblas plenumi: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "adiaŭ\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "La ŝelo ne estas saluta; eliru per «exit»"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Restas haltigitaj laboroj.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Restas rulataj laboroj.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "Komando ne trovita"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "Historia indiko"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: Ne malfermiĝis labordosiero: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "kuranta"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "La laboro %d estas lanĉita sen laborregado"
@@ -507,29 +507,28 @@ msgstr "%s: Misa opcio -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: La opcio bezonas argumenton -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "Nomkonservado (haketado, «hashing») estas malŝaltita"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: Hakettabelo estas malplena\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "Trafoj\tKomando\n"
 
 # ZZZ: aĉaj citiloj (fermita en la programo)
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Ŝelaj komandoj kongruaj kun la ŝlosilvorto '"
 msgstr[1] "Ŝelaj komandoj kongruaj kun la ŝlosilvortoj '"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -537,12 +536,12 @@ msgstr ""
 "Helpaĵo pri „%s‟ malestas.\n"
 "Provu «help help» aŭ «man -k %s» aŭ «info %s»."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: Fiaskis malfermo de %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -561,20 +560,21 @@ msgstr ""
 "Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "Ne pli ol unu el -anrw estas uzebla"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "pozicio en la historio"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Maltaŭga argumento"
+msgstr "%s: Maltaŭga tempomarko"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: Historia malvolvo fiaskis"
@@ -588,16 +588,16 @@ msgstr "%s: inlib fiaskis"
 msgid "no other options allowed with `-x'"
 msgstr "La uzo de „-x‟ malebligas aliajn opciojn"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: Argumento estu proceznumero aŭ laborindiko"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Nekonata eraro"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "Mankas esprimo"
 
@@ -606,71 +606,71 @@ msgstr "Mankas esprimo"
 msgid "%s: not an indexed array"
 msgstr "%s: ĝi ne estas entjerindica tabelo"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: Misa indiko de dosiernumero"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: Misa dosiernumero: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: Misa lininombro"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: Misa tabelbazo"
 
 # Supozeble callback => retrovoko ??
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: Misa kvanto ĉe retrovoko"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "Mankas nomo de tabelvariablo"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "necesas subteno de tabelvariabloj"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s‟: Mankas formata signo"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "%c: Misa tempoformato"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c‟: Misa signo formata"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "Averto: %s: %s"
 
 # XXX: internal_error
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "Miso ĉe analizado de formato: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "Mankas 16uma cifero por \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "Post „%c‟ mankas unikoda cifero"
@@ -684,20 +684,20 @@ msgstr "Ne estas alia dosierujo"
 msgid "%s: invalid argument"
 msgstr "%s: Maltaŭga argumento"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<mankas kuranta dosierujo>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "Dosierujstako malplenas"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "indico de dosierujstako"
 
 # dirs [-clpv] [+N] [-N]
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -740,7 +740,7 @@ msgstr ""
 "\tper „dirs‟ sen opcioj, numerante ekde 0."
 
 # pushd [dir | +N | -N] [-n]
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -786,7 +786,7 @@ msgstr ""
 "    Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟."
 
 # popd [+N | -N] [-n]
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -830,41 +830,41 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: Misa indiko de atendotempo"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "Lega (read) eraro: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: Malaktivigo fiaskis"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: Malaktivigo fiaskis: nurlega %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: Ne tabela variablo"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: Ne funkcio"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: Ne eblas eksporti"
@@ -873,20 +873,20 @@ msgstr "%s: Ne eblas eksporti"
 msgid "shift count"
 msgstr "Nombrilo de „shift‟"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "Maleblas samtempe ŝalti kaj malŝalti ŝelan opcion"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: Misa nomo de ŝela opcio"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "Necesas dosiernoma argumento"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: Dosiero ne trovita"
@@ -899,61 +899,61 @@ msgstr "Ne eblas halteti"
 msgid "cannot suspend a login shell"
 msgstr "Ne eblas haltetigi salutan ŝelon"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "„%s‟ alinomas jenon: «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "„%s‟ estas ŝlosilvorto de la ŝelo\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s estas funkcio\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "„%s‟ estas speciala primitiva ŝelkomando\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "„%s‟ estas primitiva komando de la ŝelo\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "„%s‟ estas „%s‟\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "„%s‟ estas metita en hakettabelon (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: Maltaŭga argumento por limo"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c‟: Misa komando"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: Fiaskis provo legi limon: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limo"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: Malprosperis ŝanĝi limon: %s"
@@ -974,365 +974,375 @@ msgstr "„%c‟: Maltaŭga simbolo por atingorajta modifilo"
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " linio "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "La ĵusa komando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Ĉesigado ..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORMO: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "Nekonata komand-eraro"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "Misa komandotipo"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "Misa stir-operacio"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "Misa salto"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: Neligita variablo"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aTro longe sen enigo: Aŭtomata seancofino\n"
 
 # XXX: internal error:
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s"
 
 # XXX: internal error:
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: „%c‟: Misa formatsigno"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraŭ ekzistas"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "Eraro en dukto"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: Komando ne trovita"
 
 # XXX: internal error:
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: Misa interpretilo"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: Neplenumebla duuma dosiero: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "„%s‟ estas primitiva komando speciala"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "Tro profunda rekursio en esprimo"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "Rekursistako elĉerpita"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "Sintaksa eraro en esprimo"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "Provo valorizi ne-variablon"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "Sintaksa eraro en esprimo"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "Divido per 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "„:‟ mankas kondiĉa esprimo"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "Negativa eksponento"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "Post antaŭkremento aperu nomo de variablo"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "Mankas „)‟"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "Sintaksa eraro: Mankas operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (misa simbolo estas „%s‟)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "Maltaŭga bazo nombrosistema"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "Tro granda valoro por bazo de nombrosistemo"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: Misa esprimo\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getwd: Ne eblas atingi patrajn dosierujojn"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "Ne eblas reŝalti senprokrastan reĝimon por dosiernumero %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "Maleblas disponigi novan dosiernumeron por Baŝa enigo el n-ro %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron"
 
 # ZZZ: sys_error (_("start_pipeline: pgrp pipe"));
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: procezgrupo dukto"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "Forke farita proceznumero %d aperas en rulata laboro %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata"
 
 # ifdef DEBUG ... internal_warning():
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: process %5ld (%s) in the_pipeline"
 
 # ifdef DEBUG ... internal_warning():
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) marked as still alive"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: Ne estas tia proceznumero (%ld)!"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signalo %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Farite"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Haltigita"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Haltigita(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Rulata"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Farite(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Eliro %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Nekonata stato"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(nekropsio elŝutita)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (labordosierujo: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: La procezo %ld ne estas ido de ĉi tiu ŝelo"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Malestas informoj pri procezo %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: La laboro %d estas haltigita"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: La laboro finiĝis"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: La laboro %d jam estas fona"
 
 # XXX: internal warning:
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: WNOHANG iĝas ŝaltita por eviti nedifintan pendiĝon"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: linio %dª: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr "(nekropsio elŝutita)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(nun labordosierujo estas: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp fiaskis"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: liniaranĝo"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: liniaranĝo"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid()"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "ne prosperis atribui grupon (%d) de terminala procezo"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "Ĉi tiu ŝelo ne disponigas laborregadon"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: Malveras la aserto: %s\n"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1342,47 +1352,47 @@ msgstr ""
 "malloc: %s:%d: aserto sufokita\r\n"
 
 # XXX: internal error
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "nekonata"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: La argumento montras blokon jam malokupitan"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: La argumento ne montras generitan memoron"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: La argumento ne montras generitan memoron"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo"
 
 # XXX: debug?
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
 
@@ -1432,25 +1442,25 @@ msgid "network operations not supported"
 msgstr "Reta funkciado ne disponeblas"
 
 # XXX: internal warning:
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s)"
 
 # XXX: internal warning:
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s): %s"
 
 # XXX: fatal_error
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s)"
 
 # XXX: fatal_error
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s): %s"
@@ -1468,153 +1478,157 @@ msgstr "Nova poŝto en $_"
 msgid "The mail in %s has been read\n"
 msgstr "La poŝto en %s estas jam legita\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "Sintaksa eraro: Necesas aritmetika esprimo"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "Sintaksa eraro: Neatendita „;‟"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "Sintaksa eraro: „((%s))‟"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: Misa ordontipo %d"
 
 # internal_warning():
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)"
 
 # XXX: programming_error
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo"
 
-#: parse.y:2324
+# internal_warning():
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio "
+"tranĉita"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "La nombro de tuj-documentoj superis sian maksimumon"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "Neatendita dosierfino dum serĉo de responda „%c‟"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "Neatendita dosierfino dum serĉo de „]]‟"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "Sintaksa eraro en kondiĉa esprimo"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "Nekonvena simbolo „%s‟ anstataŭ „)‟"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "Mankas „)‟"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "Maltaŭga argumento por unuloka kondiĉa operacisimbolo"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "Misa simbolo „%s‟ anstataŭ duloka kondiĉa operacisigno"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "ĉi tie devas esti duloka kondiĉa operacisigno"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "<maltaŭga argumento por duloka kondiĉa operacisimbolo"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "Misa simbolo „%c‟ en kondiĉa komando"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "Misa simbolo „%s‟ en kondiĉa komando"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "Misa simbolo „%d‟ en kondiĉa komando"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "Sintaksa eraro apud neatendita simbolo „%s‟"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "Sintaksa eraro apud „%s‟"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "Sintaksa eraro: Neatendita dosierfino"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "Sintaksa eraro"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Uzu «%s» por eliri el la ŝelo.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "Neatendita dosierfino dum serĉo de responda „)‟"
 
 # XXX: internal_error
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "Kompletigo: Funkcio „%s‟ ne trovita"
 
-#: pcomplete.c:1646
+# XXX: internal_warning
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: ĉu ciklo de reprovoj?"
 
 # XXX: programming_error
 #: pcomplib.c:182
@@ -1644,95 +1658,100 @@ msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
 # XXX: programming_error
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c‟: Misa formatsigno"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "Ekstervarieja dosiernumero"
 
 # XXX: internal_error
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: Ambigua alidirektado"
 
 # XXX: internal_error
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: Maleblas surskribi ekzistantan dosieron"
 
 # XXX: internal_error
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: Limigita ŝelo: malpermesitas alidirekti eligon"
 
 # XXX: internal_error
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "Malprosperis krei labordosieron por tuj-dokumento: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: Maleblas konservi la dosiernumeron en la variablo"
 
 # XXX: internal_warning
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "«/dev/(tcp|udp)/host/port» ne disponeblas ekster retumado"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "Alidirektada eraro: Fiaskis kunnomumo al dosiernumero"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "Mankas «/tmp», bv krei ĝin!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "«/tmp» devas esti valida dosierujo"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: Misa opcio"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "Ne eblas ŝanĝi UID-on al %d: la efektiva UID estas %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "Ne eblas ŝanĝi GID-on al %d: la efektiva GID estas %d"
 
-#: shell.c:1458
+# XXX: internal_warning
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "Maleblas lanĉi erarserĉilon: la erarserĉa reĝimo malŝaltitas."
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s : ĉi tio estas dosierujo"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Mi ne havas nomon!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNUa «bash», versio %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1741,53 +1760,53 @@ msgstr ""
 "Uzo:\t%s [GNUa opcio longforma] [opcio] ...\n"
 "\t%s [GNUa opcio longforma] [opcio] SKRIPTODOSIERO ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNUaj opcioj longformaj:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Ŝelaj opcioj:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD aŭ -c KOMANDO aŭ -O SHOPT_OPCIO\t\t(nur ĉe voko)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s aŭ -o opcio\n"
 
 # bash --help
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Por pluaj informoj pri la opcioj tajpu: «%s -c \"help set\"»\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Por scii pli pri la primitivaj ŝelkomandoj tajpu: „%s -c help‟\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Por raporti pri eraroj uzu la komandon „bashbug‟\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 "La hejmpaĝo de Baŝo (anglalingva): <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Ĝenerala helpilo pri uzo de GNUa programaro: <http://www.gnu.org/gethelp/>\n"
 
 # XXX: internal_error
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: Misa operacio"
@@ -2000,105 +2019,109 @@ msgstr "Nekonata signalnumero"
 msgid "Unknown Signal #%d"
 msgstr "Nekonata signalo n-ro %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "Misa anstataŭigo: Mankas ferma „%s‟ en %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: Maleblas valorizi tabelanon per listo"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "Ne prosperis fari dukton por proceza anstataŭigo"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "Ne prosperis krei idon por proceza anstataŭigo"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "Ne prosperis malfermi nomitan dukton %s porlegan"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "Ne prosperis malfermi nomitan dukton %s por skribado"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "Misa anstataŭigo: Mankas ferma „`‟ en %s"
+msgstr "Komanda anstataŭigo: nul-bajto en enigaĵo, ignorita"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "Ne prosperis fari dukton por komanda anstataŭigo"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "Ne prosperis krei procezidon por komanda anstataŭigo"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: Misa variablonomo por nomreferenco"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: Misa anstataŭigo"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: Misa malvolvo malrekta"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: Maltaŭga variablonomo"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: Parametro estas NUL aŭ malaktiva"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: Parametro estas NUL aŭ malaktiva"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: subĉeno-esprimo < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: Misa anstataŭigo"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: ĉi tiel ne valorizebla"
 
 # XXX: internal warning:
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 "Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataŭigon"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "Misa anstataŭigo: Mankas ferma „`‟ en %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "Nenio kongrua: %s"
@@ -2121,129 +2144,134 @@ msgstr "Mankas „)‟"
 msgid "`)' expected, found %s"
 msgstr "Anstataŭ „)‟ troviĝas %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: Tie devas esti unuloka operacisigno"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: Tie devas esti duloka operacisigno"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "Mankas „]‟"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "Misa signalnumero"
 
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)"
+
 # XXX: internal_warning
-#: trap.c:387
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p"
 
 # XXX: internal_warning
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: Misa signalnumero %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "Eraro ĉe importo de funkcidifino por „%s‟"
 
 # XXX: internal_warning
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "%d estas tro granda ŝelnivelo; mallevita ĝis 1"
 
 # XXX: internal_error
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: Variablo ne valorizebla"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: Misa variablonomo por nomreferenco"
+msgstr "%s: Nomreferenco valorizata per entjero"
 
 # XXX: internal_error
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono"
 
 # XXX: internal_error
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "«exportstr» de %s estas NUL"
 
 # XXX: internal_error
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "Misa signo %d en eksporta signoĉeno por „%s‟"
 
 # XXX: internal_error
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟"
 
 # XXX: internal_error
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto"
 
 # XXX: internal_error
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: Mankas kunteksto de „global_variables‟"
 
 # XXX: internal_error
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono"
 
 # XXX: internal_error
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: Ne malfermeblas kiel DOSIERO"
 
 # XXX: internal_error
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)"
 
 # # XXX: internal_error
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s kongruo-nivelo estas ekster sia variejo"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 ĉe «Free Software Foundation, Inc.»"
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 ĉe «Free Software Foundation, Inc.»"
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2266,24 +2294,24 @@ msgstr "Ĉi tiu programo estas libera; vi rajtas libere ĝin ŝanĝi kaj pludoni
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "NENIA GARANTIO estas donita, tiom kiom tion permesas la leĝo."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: Malsukcesis okupi %lu bajtojn"
 
 # XXX: fatal_error
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)"
 
 # XXX: fatal_error
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn"
@@ -2404,7 +2432,7 @@ msgid ""
 "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
 "[arg...]"
 msgstr ""
-"history [-c] [-d DEŜOVO] [n] aŭ\n"
+"history [-c] [-d POZICIO] [n] aŭ\n"
 "history -awr [DOSIERNOMO] aŭ\n"
 "history -ps ARG [ARG...]"
 
@@ -2415,9 +2443,8 @@ msgstr ""
 "jobs -x KOMANDO [ARGS]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [LABORINDIKO ...]"
+msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2501,7 +2528,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [REĜIMO]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [IND ...]"
 
 #: builtins.c:181
@@ -2595,8 +2623,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2614,7 +2643,8 @@ msgstr ""
 "        [-P PREFIKSO] [-S SUFIKSO] [VORTO]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o OPCIO] [-DE] [NOMO ...]"
 
 #: builtins.c:242
@@ -2626,9 +2656,10 @@ msgstr ""
 "        [-C RETROVOKO] [-c KVANTO] [TABELO]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n"
 "          [-C RETROVOKO] [-c KVANTO] [TABELO]"
@@ -2806,6 +2837,7 @@ msgstr ""
 # builtin [shell-builtin [arg ...]]
 # builtin [ŜELAĴO [ARG ...]]
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2816,7 +2848,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Rulu primitivan ŝelkomandon\n"
 "\n"
@@ -3047,6 +3079,7 @@ msgstr ""
 # declare [-aAfFgilnrtux] [-p] [name[=value] ...]
 # declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...]
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3065,11 +3098,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3123,7 +3156,6 @@ msgstr ""
 
 # typeset [-aAfFgilrtux] [-p] name[=value] ...
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3131,7 +3163,7 @@ msgid ""
 msgstr ""
 "Difinu atributojn kaj valorojn de variabloj\n"
 "\n"
-"   Arkaika. Vd «help declare»."
+"   Sinonimo de „declare“. Vd «help declare»."
 
 # local [option] name[=value] ...
 # local [OPCIO] NOMO[=VALORO] ...
@@ -3163,6 +3195,7 @@ msgstr ""
 
 # echo:
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3191,6 +3224,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3227,7 +3266,7 @@ msgstr ""
 "    Sukcesa, krom se okazas elig-eraro."
 
 # echo [-n] [ARG ...]
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3251,7 +3290,7 @@ msgstr ""
 
 # enable [-a] [-dnps] [-f filename] [name ...]
 # enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...]
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3303,7 +3342,7 @@ msgstr ""
 "    eraro."
 
 # eval [ARG ...]
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3324,7 +3363,7 @@ msgstr ""
 
 # getopts optstring name [arg] =>
 # getopts OPCIĈENO NOMO [ARG]
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3404,7 +3443,7 @@ msgstr ""
 
 # exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
 # exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...]
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3446,7 +3485,7 @@ msgstr ""
 "    alirektado."
 
 # exit [n]
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3459,7 +3498,7 @@ msgstr ""
 "    estas tiu de la plej ĵuse plenumita komando."
 
 # logout [N]
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3476,7 +3515,7 @@ msgstr ""
 #      fc -s [pat=rep] [command] =>
 # fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aŭ
 # fc -s [ŜABLONO=ANST] [KOMANDO]
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3531,7 +3570,7 @@ msgstr ""
 "    eraro."
 
 # fg [job_spec] => fg [LABORINDIKO]
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3552,7 +3591,7 @@ msgstr ""
 "    Tiu de la dialogigita komando; aŭ malsukceso, se okazis eraro."
 
 # bg [job_spec] => bg [LABORINDIKO]
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3576,7 +3615,7 @@ msgstr ""
 "    eraro."
 
 # hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...]
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3622,7 +3661,8 @@ msgstr ""
 
 # help [-ds] [pattern ...]
 # help [-ds] [ŜABLONO ...]
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3637,7 +3677,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3664,10 +3704,10 @@ msgstr ""
 # ZZZ history [-c] [-d offset] [n] or
 #     history -awr [filename] or
 #     history -ps arg [arg...] =>
-# history [-c] [-d DEŜOVO] [n] aŭ
+# history [-c] [-d POZICIO] [n] aŭ
 # history -awr [DOSIERNOMO] aŭ
 # history -ps ARG [ARG...]
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3677,7 +3717,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3709,7 +3750,7 @@ msgstr ""
 "\n"
 "    Opcioj:\n"
 "    -c  forviŝu la tutan historion (forigu ĉiujn erojn el la listo)\n"
-"    -d  forviŝu la linion kies numero estas  DEŜOVO\n"
+"    -d POZICIO  forviŝu la linion kies numero estas  POZICIO\n"
 "\n"
 "    -a  aldonu la historiliniojn de la kuranta seanco al la\n"
 "        historidosiero\n"
@@ -3741,7 +3782,7 @@ msgstr ""
 #     jobs -x command [args] =>
 # jobs [-lnprs] [LABORINDIKO ...] aŭ
 # jobs -x KOMANDO [ARGS]
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3787,7 +3828,7 @@ msgstr ""
 "    Ĉe „-x‟, la elirstato de la KOMANDO."
 
 # disown [-h] [-ar] [jobspec ...]
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3823,8 +3864,7 @@ msgstr ""
 #      kill -l [sigspec] =>
 # kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aŭ
 # kill -l [SIGNOM]
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3857,7 +3897,8 @@ msgstr ""
 "    -n\tSIGNUM estas numero de signalo\n"
 "    -l  listigu signalnomojn; la eventuale sekvantaj entjeraj\n"
 "        argumentoj estas signalnumeroj, ĉeeste de kiuj nur la al\n"
-"        ili respondaj signalnomoj estu eligataj.\n"
+"        ili respondaj signalnomoj estu eligataj\n"
+"    -L  sinonimo por  -l\n"
 "\n"
 "    „kill‟ estas primitiva ŝelkomando pro du kaŭzoj:\n"
 "    unue, ĝi ebligas uzi laborindikojn anstataŭ proceznumerojn;\n"
@@ -3869,7 +3910,7 @@ msgstr ""
 
 # let arg [arg ...]
 # let ARG [ARG ...]
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3959,7 +4000,8 @@ msgstr ""
 #      [-p prompt] [-t timeout] [-u fd] [name ...]
 # read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN]
 #      [-p INVIT] [-t TLIM] [-u DN] [NOMO ...]
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3980,7 +4022,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -4054,7 +4096,7 @@ msgstr ""
 
 # return [n]
 # return [N]
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4076,8 +4118,7 @@ msgstr ""
 
 # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
 # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4230,8 +4271,8 @@ msgstr ""
 "    -P\tLa simbolaj ligiloj estu travideblaj ĉe plenumo de komandoj\n"
 "\tkiuj ŝanĝas la kurantan dosierujon („cd‟ ktp uzu «fizikan»\n"
 "\tinterpreton de vojnomo).\n"
-"    -T\tSe aktiva, la DEBUG-kaptilon (DEBUG trap) heredas la ŝelaj\n"
-"\tfunkcioj\n"
+"    -T\tSe aktiva, la ŝelaj funkcioj heredas la kaptilojn (Traps)\n"
+"\tDEBUG kaj RETURN \n"
 "    --\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n"
 "\tSe tiaj argumentoj mankas, malvalorizu la numerparametrojn.\n"
 "    -\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n"
@@ -4248,7 +4289,7 @@ msgstr ""
 
 # unset [-f] [-v] [name ...]
 # unset [-f] [-v] [NOMO ...]
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4289,7 +4330,7 @@ msgstr ""
 
 # export [-fn] [name[=value] ...] or export -p
 # export [-fn] [NOMO[=VALORO] ...]  aŭ  export -p
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4325,7 +4366,7 @@ msgstr ""
 
 # readonly [-aAf] [name[=value] ...] or readonly -p
 # readonly [-aAf] [NOMO[=VALORO] ...]  aŭ  readonly -p
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4364,7 +4405,7 @@ msgstr ""
 "    Sukceso, krom se aperas nevalida nomo aŭ misa opcio."
 
 # shift [n]
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4381,7 +4422,7 @@ msgstr ""
 
 # source filename [arguments]
 # source DOSIERNOMO [ARGUMENTOJ]
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4406,7 +4447,7 @@ msgstr ""
 "    DOSIERNOMO ne legeblas."
 
 # suspend [-f]
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4432,7 +4473,7 @@ msgstr ""
 
 # test [expr]
 # test [ESPRIMO]
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4589,7 +4630,7 @@ msgstr ""
 "    argumento."
 
 # [ arg... ]
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4599,7 +4640,7 @@ msgstr ""
 "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n"
 "    argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4620,7 +4661,7 @@ msgstr ""
 
 # trap [-lp] [[arg] signal_spec ...]
 # trap [-lp] [[ARG] SIGNALINDIKO ...]
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4699,7 +4740,7 @@ msgstr ""
 
 # type [-afptP] name [name ...]
 # type [-afptP] NOMO [NOMO ...]
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4757,7 +4798,7 @@ msgstr ""
 
 # ulimit [-SHacdefilmnpqrstuvx] [limit]
 # ulimit [-SHacdefilmnpqrstuvx] [LIMO]
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4853,7 +4894,7 @@ msgstr ""
 
 # umask [-p] [-S] [mode]
 # umask [-p] [-S] [REĜIMO]
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4888,7 +4929,8 @@ msgstr ""
 
 # wait [-n] [id ...]
 # wait [-n] [IND ...]
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4896,13 +4938,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4924,7 +4968,7 @@ msgstr ""
 
 # wait [pid ...]
 # wait [PN ...]
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4950,7 +4994,7 @@ msgstr ""
 
 # for NAME [in WORDS ... ] ; do COMMANDS; done
 # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4974,7 +5018,7 @@ msgstr ""
 
 # for (( exp1; exp2; exp3 )); do COMMANDS; done
 # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -5006,7 +5050,7 @@ msgstr ""
 
 # select NAME [in WORDS ... ;] do COMMANDS; done
 # select NONO [in VORTOJ ... ;] do KOMANDOJ; done
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5043,7 +5087,7 @@ msgstr ""
 
 # time [-p] PIPELINE
 # time [-p] DUKTO
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5074,7 +5118,7 @@ msgstr ""
 
 # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
 # case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5096,7 +5140,7 @@ msgstr ""
 # [ else COMMANDS; ] fi
 # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]...
 # [ else KOMANDOJ; ] fi
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5128,7 +5172,7 @@ msgstr ""
 
 # while COMMANDS; do COMMANDS; done
 # while KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5148,7 +5192,7 @@ msgstr ""
 
 # until COMMANDS; do COMMANDS; done
 # until KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5168,8 +5212,7 @@ msgstr ""
 
 # coproc [NAME] command [redirections]
 # coproc [NOMO] KOMANDO [ALIDIREKTADOJ]
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5189,11 +5232,11 @@ msgstr ""
 "    „COPROC‟.\n"
 "\n"
 "    Elirstato:\n"
-"    Tiu de KOMANDO."
+"    La komando  coproc  liveras la elirstaton 0."
 
 # function name { COMMANDS ; } or name () { COMMANDS ; }
 # function NOMO { KOMANDOJ ; }  aŭ  NOMO () { KOMANDOJ ; }
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5218,7 +5261,7 @@ msgstr ""
 
 # grouping_braces: { COMMANDS ; }
 # { KOMANDOJ ; }
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5238,7 +5281,7 @@ msgstr ""
 
 # job_spec [&]
 # LABORINDIKO [&]
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5263,7 +5306,7 @@ msgstr ""
 
 # (( expression ))
 # (( ESPRIMO ))
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5283,7 +5326,7 @@ msgstr ""
 
 # [[ expression ]]
 # [[ ESPRIMO ]]
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5334,7 +5377,7 @@ msgstr ""
 
 # help var
 # variables - Names and meanings of some shell variables
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5441,7 +5484,7 @@ msgstr ""
 
 # pushd [-n] [+N | -N | dir]
 # pushd [-n] [+N | -N | DOSIERUJO]
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5500,7 +5543,7 @@ msgstr ""
 "    Sukceso, krom se aperas misa argumento aŭ se cd malsukcesas."
 
 # popd [-n] [+N | -N]
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5549,7 +5592,7 @@ msgstr ""
 "    Sukceso, krom se aperas misa argumento aŭ se cd malsukcesas."
 
 # dirs [-clpv] [+N] [-N]
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5603,14 +5646,14 @@ msgstr ""
 
 # shopt [-pqsu] [-o] [optname ...]
 # shopt [-pqsu] [-o] [OPCINOMO ...]
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5642,7 +5685,7 @@ msgstr ""
 
 # printf [-v var] format [arguments]
 # printf [-v VAR] FORMATO [ARGUMENTOJ]
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5709,7 +5752,8 @@ msgstr ""
 # complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBŜAB]
 #          [-W VORTLISTO]  [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB]
 #          [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5727,10 +5771,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5762,7 +5810,7 @@ msgstr ""
 # compgen [-abcdefgjksuv] [-o OPCIO]  [-A AGO] [-G GLOBŜAB]
 #      [-W VORTLISTO]  [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB]
 #      [-P PREFIKSO] [-S SUFIKSO] [VORTO]
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5783,7 +5831,8 @@ msgstr ""
 "    Sukceso, krom se aperas misa opcio aŭ okazas eraro."
 
 # compopt [-o|+o OPCIO] [-DE] [NOMO ...]
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5798,6 +5847,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5842,7 +5892,7 @@ msgstr ""
 #      [-c quantum] [array]
 # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO]
 #      [-c KVANTO] [TABELO] 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5919,7 +5969,7 @@ msgstr ""
 
 # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback]
 #        [-c quantum] [array]
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5928,18 +5978,3 @@ msgstr ""
 "Legu liniojn el dosiero en tabelvariablon.\n"
 "\n"
 "    Sinonimo de „mapfile‟."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 ĉe «Free Software Foundation, Inc.»"
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
index 5edaa91d32b08cbfd1bd063fab5fa651842c5ac4..7c7ec1446db8da82a21baff8f8fa76db95ee469c 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index 1988fb2b63f1e47237150f4084b354c899a3aaad..891d82ba4c44315740257789fa67eb89dbcf685d 100644 (file)
--- a/po/es.po
+++ b/po/es.po
-# Mensajes en español para GNU bash-4.2.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Mensajes en español para GNU bash
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
+# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2000 - 2011.
+# Francisco Javier Serrador <fserrador@gmail.com>
+# Antonio Ceballos Roa <aceballos@gmail.com>, 2018
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bash 4.2\n"
+"Project-Id-Version: GNU bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2011-08-14 11:55-0500\n"
-"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
-"Language-Team: Spanish <es@li.org>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-06-04 22:22+0200\n"
+"Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
+"Language-Team: Spanish <es@tp.org.es>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "subíndice de matriz incorrecto"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: se elimina el atributo nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: no se puede convertir la matriz de indizada a asociativa"
+msgstr "%s: no se puede convertir la matriz indexada en asociativa"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s: índice de matriz asociativa inválido"
+msgstr "%s: clave de matriz asociativa no válida"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: no se puede asignar a un índice que no es numérico"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: no se puede crear: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: no se puede encontrar la combinación de teclas "
 "para la orden"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: el primer carácter que no es espacio en blanco no es `\"'"
+msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no hay un `%c' que cierre en %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
-msgstr "%s: falta un `:' separador"
+msgstr "%s: falta un «:» separador"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
-msgstr ""
+msgstr "expansión de llaves: no se puede asignar memoria a %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr ""
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "expansión de llaves: fallo al asignar memoria a %d elementos"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr ""
+msgstr "expansión de llaves: fallo al asignar memoria a «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': nombre de alias inválido"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "no se activó la edición de línea"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': nombre de combinación de teclas inválido"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: no se puede leer: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "%s: no se puede borrar la asignación"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': nombre de función desconocido"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s no está asignado a ninguna tecla.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
-msgstr "%s se puede invocar a través de "
+msgstr "%s se puede invocar vía "
+
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': no se puede borrar la asignación"
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
-msgstr "cuenta de ciclo"
+msgstr "cuenta de bucle"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "sólo tiene significado en un ciclo `for', `while' o `until'"
+msgstr "solo tiene significado en un bucle `for', `while', o `until'"
 
 #: builtins/caller.def:136
 msgid ""
@@ -145,239 +148,238 @@ msgstr ""
 "    \n"
 "    Sin EXPR, devuelve "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME no está definido"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "demasiados argumentos"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "directorio tope."
+msgstr "directorio nulo"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
-msgstr "OLDPWD no está definido"
+msgstr "OLDPWD no está establecido"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "línea %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "aviso: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
-msgstr "%s: uso: "
+msgstr "%s: modo de empleo: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: la opción requiere un argumento"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: se requiere un argumento numérico"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
-msgstr "%s: no se encontró"
+msgstr "%s: no encontrado"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: opción inválida"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nombre de opción inválido"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': no es un identificador válido"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "número octal inválido"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "número hexadecimal inválido"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "número inválido"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
-msgstr "%s: especificación de señal inválida"
+msgstr "%s: la especificación de señal no es válida"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': no es un pid o una especificación válida de trabajo"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variable de sólo lectura"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fuera de rango"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumento"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s fuera de rango"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: no existe ese trabajo"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: no hay control de trabajos"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "no hay control de trabajos"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restringido"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restringido"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
-msgstr "%s: no es una orden interna del shell"
+msgstr "%s: no es una orden interna de shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "error de escritura: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "error al establecer los atributos de la terminal: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "error al obtener los atributos de la terminal: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error al obtener el directorio actual: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: especificación de trabajo ambigua"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "ayuda no disponible en esta versión"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nombre de acción inválido"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
-msgstr "%s: no hay completado de especificación"
+msgstr "%s: no hay especificación para completado"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "aviso: es posible que la opción -F no funcione como se espera"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "aviso: es posible que la opción -C no funcione como se espera"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "no se está ejecutando la función de completado"
 
 # sólo se puede usar. sv
 # De acuerdo. cfuga
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "sólo se puede usar dentro de una función"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: referencia variable no puede ser una matriz"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
-msgstr ""
+msgstr "%s: no se permiten las autoreferencias a variables nameref"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
+msgstr "%s: referencia de nombre circular"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
+msgstr "`%s': nombre variable inválido para referencia de nombre"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "no se puede usar `-f' para hacer funciones"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: función de sólo lectura"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: no se pueden destruir variables de matriz de esta forma"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: no se puede convertir una matriz asociativa a indizada"
+msgstr "%s: no se puede convertir una matriz asociativa a indexada"
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
@@ -397,84 +399,85 @@ msgstr "no se puede encontrar %s en el objeto compartido %s: %s"
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
 msgstr ""
+"función de carga para %s devuelve fallo (%d): no se ha efectuado la carga"
 
 #: builtins/enable.def:512
 #, c-format
 msgid "%s: not dynamically loaded"
-msgstr "%s: no se cargó dinámicamente"
+msgstr "%s: no cargado dinámicamente"
 
 #: builtins/enable.def:538
 #, c-format
 msgid "%s: cannot delete: %s"
 msgstr "%s: no se puede borrar: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: es un directorio"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: no es un fichero regular"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: el fichero es demasiado grande"
 
 # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
 # De acuerdo. Corregido en todo el fichero. cfuga
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: no se puede ejecutar el fichero binario"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: no se puede ejecutar: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
-msgstr "logout\n"
+msgstr "cerrar sesión\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
-msgstr "no es un shell de entrada: use `exit'"
+msgstr "no es un shell de inicio de sesión: utilice `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Hay trabajos detenidos.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Hay trabajos en ejecución.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
-msgstr "no se encontró la orden"
+msgstr "no se ha encontrado ninguna orden"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "especificación de historia"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: no se puede abrir el fichero temporal: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "actual"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
-msgstr "el trabajo %d inició sin control de trabajo"
+msgstr "trabajo %d iniciado sin control de trabajo"
 
 #: builtins/getopt.c:110
 #, c-format
@@ -486,28 +489,27 @@ msgstr "%s: opción ilegal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un argumento -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "asociación desactivada"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tabla de asociación vacía\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "coinc\torden\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Orden del shell que coinciden con la palabra `"
-msgstr[1] "Órdenes del shell que coinciden con la palabra `"
+msgstr[0] "Órdenes de shell que coinciden con la palabra clave`"
+msgstr[1] "Órdenes de shell que coinciden con las palabras claves`"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -515,12 +517,12 @@ msgstr ""
 "no hay temas de ayuda que coincidan con `%s'.  Pruebe `help help' o `man -k %"
 "s' o `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: no se puede abrir: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -531,31 +533,31 @@ msgid ""
 "A star (*) next to a name means that the command is disabled.\n"
 "\n"
 msgstr ""
-"Estas órdenes del shell están definidas internamente.  Teclee `help' para\n"
+"Estas órdenes de shell están definidas internamente.  Teclee `help' para\n"
 "ver esta lista.\n"
 "Teclee `help nombre' para saber más sobre la función `nombre'.\n"
-"Use `info bash' para saber más sobre el shell en general.\n"
-"Use `man -k' o `info' para saber más sobre las órdenes que no están en\n"
+"Utilice `info bash' para saber más sobre la shell en general.\n"
+"Utilice `man -k' o `info' para saber más sobre las órdenes que no están en\n"
 "esta lista.\n"
 "\n"
-"Un asterisco (*) junto a un nombre significa que el comando está "
-"desactivado.\n"
+"Un asterisco (*) junto a un nombre significa que la orden está desactivada.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "no se puede usar más de uno de -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posición en la historia"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: límite de argumento inválido"
+msgstr "%s: marca de tiempo inválida"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: falló la expansión de la historia"
@@ -569,87 +571,87 @@ msgstr "%s: falló inlib"
 msgid "no other options allowed with `-x'"
 msgstr "no se permiten otras opciones con `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
-msgstr "%s: los argumentos deben ser procesos o IDs de trabajos"
+msgstr "%s: los argumentos deben ser IDs de procesos o trabajos"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Error desconocido"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "se esperaba una expresión"
 
 #: builtins/mapfile.def:178
 #, c-format
 msgid "%s: not an indexed array"
-msgstr "%s: no es una matriz indizada"
+msgstr "%s: no es una matriz indexada"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: especificación de descriptor de fichero inválida"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: descriptor de fichero inválido: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: cuenta de líneas inválida"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: origen de matriz inválido"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: quantum de llamada inválido"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
-msgstr "nombre de variable de matriz vacío"
+msgstr "nombre de variable matriz vacío"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "se requiere el soporte de variable de matriz"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': falta el carácter de formato"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': especificación de formato de tiempo inválida"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': carácter de formato inválido"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "aviso: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
-msgstr ""
+msgstr "problema con el análisis del formato: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "falta el dígito hexadecimal para \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "falta el dígito unicode para \\%c"
@@ -659,23 +661,23 @@ msgid "no other directory"
 msgstr "no hay otro directorio"
 
 #: builtins/pushd.def:360
-#, fuzzy, c-format
+#, c-format
 msgid "%s: invalid argument"
-msgstr "%s: límite de argumento inválido"
+msgstr "%s: argumento inválido"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<no hay directorio actual>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "la pila de directorios está vacía"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
-msgstr "índice de la pila de directorios"
+msgstr "índice de pilas de directorios"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -699,27 +701,26 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 "Muestra la lista de directorios actualmente grabados.  Los directorios\n"
-"    se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n"
+"    encuentran en la lista con la orden `pushd'; pueden ir saliendo de\n"
 "    la lista con la orden `popd'.\n"
 "    \n"
 "    Opciones:\n"
-"      -c\tlimpia la pila de directorios, eliminando todos los elementos\n"
+"      -c\tlimpia la pila de directorios eliminando todos los elementos\n"
 "      -l\tno muestra las versiones con prefijo de tilde de los directorios\n"
-"    \trelativos a su directorio inicial\n"
+"    \t\trelativos a su directorio inicial\n"
 "      -p\tmuestra la pila de directorios con una entrada por línea\n"
 "      -v\tmuestra la pila de directorios con una entrada por línea con\n"
 "    \tsu posición en la pila como prefijo\n"
 "    \n"
 "    Argumentos:\n"
-"      +N\tMuestra la N-ésima entrada contando desde la izquierda de\n"
-"    \tla lista mostrada por dirs cuando se llama sin opciones,\n"
-"    \tempezando desde cero.\n"
+"      +N\tMuestra la N-ésima entrada contando desde la izquierda de la "
+"lista\n"
+"    \tmostrada por dirs cuando se llama sin opciones, empezando en cero.\n"
 "    \n"
-"      -N\tMuestra la N-ésima entrada contando desde la derecha de\n"
-"\tla lista mostrada por dirs cuando se llama sin opciones,\n"
-"\tempezando desde cero."
+"      -N\tMuestra la N-ésima entrada contando desde la derecha de la lista\n"
+"    \tmostrada por dirs cuando se llama sin opciones, empezando en cero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -743,25 +744,29 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
-"Agrega un directorio al tope de la pila de directorios, o rota\n"
-"    la pila, haciendo que el nuevo tope de la pila sea el\n"
-"    directorio de trabajo actual.  Sin argumentos, intercambia\n"
-"    los dos directorios del tope.\n"
+"Agrega un directorio a la parte superior de la pila de directorios\n"
+"    o rota la pila, haciendo que la nueva parte superior de la pila\n"
+"    sea el directorio de trabajo actual.  Sin argumentos, intercambia\n"
+"    los dos directorios de la parte superior.\n"
+"    \n"
+"    Opciones:\n"
+"      -n\tSuprime el cambio normal de directorio al añadir directorios\n"
+"    \ta la pila, de forma que solo se manipula la pila.\n"
 "    \n"
 "    Argumentos:\n"
-"    +N\tRota la pila para que el N-ésimo directorio (contando\n"
-"    \tde la izquierda de la lista mostrada por `dirs',\n"
-"    \tcomenzando desde cero) esté en el tope.\n"
-"    -N\tRota la pila para que el N-ésimo directorio (contando\n"
-"    \tde la derecha de la lista mostrada por `dirs',\n"
-"    \tcomenzando desde cero) esté en el tope.\n"
-"    \n"
-"     dir\tagrega DIR a la pila de directorios en el tope,\n"
+"      +N\tRota la pila para que el N-ésimo directorio (contando\n"
+"    \tdesde la izquierda de la lista mostrada por `dirs',\n"
+"    \tcomenzando desde cero) esté en la parte superior.\n"
+"      -N\tRota la pila para que el N-ésimo directorio (contando\n"
+"    \tdesde la derecha de la lista mostrada por `dirs',\n"
+"    \tcomenzando desde cero) esté en la parte superior.\n"
+"    \n"
+"      dir\tAñade DIR a la pila de directorios en la parte superior,\n"
 "    \thaciéndolo el nuevo directorio de trabajo actual.\n"
 "    \n"
 "    La orden interna `dirs' muestra la pila de directorios."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -781,88 +786,89 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
-"Borra entradas de la pila de directorios.  Sin argumentos, borra\n"
-"    directorio del tope de la pila, y cambia al nuevo directorio tope.\n"
+"Quita entradas de la pila de directorios.  Sin argumentos, borra\n"
+"    el directorio superior de la pila, y cambia al nuevo directorio "
+"superior.\n"
 "    \n"
 "    Opciones:\n"
-"      -n\tsuprime el cambio normal de directorio cuando se borran\n"
-"    \tdirectorios de la pila, así sólo se manipula la pila.\n"
+"      -n\tSuprime el cambio normal de directorio cuando se borran\n"
+"    \tdirectorios de la pila, de modo que solo se manipula la pila.\n"
 "    \n"
 "    Argumentos:\n"
-"      +N\tBorra la N-ésima entrada contando de la izquierda de\n"
+"      +N\tBorra la N-ésima entrada contando desde la izquierda de\n"
 "    \tla lista mostrada por `dirs', comenzando desde cero.\n"
 "    \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n"
 "    \tel segundo.\n"
 "    \n"
-"      -N\tBorra la N-ésima entrada contando de la derecha de\n"
-"    \tla lista mostrada por `dirs', comenzando desde cero.\n"
-"    \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n"
-"    \tel penúltimo.\n"
+"      -N\tBorra la N-ésima entrada contando desde la derecha de\n"
+"    \tla lista mostrada por `dirs', comenzando desde cero. Por\n"
+"    \tejemplo: `popd -0' borra el último directorio, `popd -1' el\n"
+"    \tpenúltimo.\n"
 "    \n"
 "    La orden interna `dirs' muestra la pila de directorios."
 
 #: builtins/read.def:279
 #, c-format
 msgid "%s: invalid timeout specification"
-msgstr "%s: especificación de tiempo de expiración inválida"
+msgstr "%s: especificación del tiempo de expiración inválida"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "error de lectura: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
-"sólo se puede usar `return' en una función o un guión leído con `source'"
+"sólo se puede usar `return' desde una función o un script leído con `source'"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "no se puede borrar al mismo tiempo una función y una variable"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: no se puede borrar"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: no se puede borrar: %s es de solo lectura"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: no es una variable de matriz"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: no es una función"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: no se puede borrar"
+msgstr "%s: no se puede exportar"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
-msgstr "cuenta de shift"
+msgstr "contador de desplazamiento"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "no se pueden activar y desactivar opciones del shell simultáneamente"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
-msgstr "%s: nombre de opción del shell inválido"
+msgstr "%s: nombre de opción de shell inválido"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
-msgstr "se requiere un argumento de nombre de fichero"
+msgstr "argumento de nombre de fichero requerido"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: no se encontró el fichero"
@@ -875,61 +881,61 @@ msgstr "no se puede suspender"
 msgid "cannot suspend a login shell"
 msgstr "no se puede suspender un shell de entrada"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s es un alias de `%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s es una palabra clave del shell\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s: es una función\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s es una orden interna del shell\n"
+msgstr "%s es una función interna de shell especial\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s es una orden interna del shell\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s está asociado (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: límite de argumento inválido"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
-msgstr "`%c': orden errónea"
+msgstr "`%c': orden incorrecta"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: no se puede obtener el límite: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "límite"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: no se puede modificar el límite: %s"
@@ -948,158 +954,163 @@ msgstr "`%c': operador de modo simbólico inválido"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': carácter de modo simbólico inválido"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " línea "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "última orden: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Abortando..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "INFORME: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
-msgstr "error de orden desconocido"
+msgstr "error de orden desconocida"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
-msgstr "tipo de orden erróneo"
+msgstr "tipo de orden incorrecto"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "conector erróneo"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "salto erróneo"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variable sin asignar"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "no se puede redirigir la salida estándar desde /dev/null: %s"
+msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': carácter de formato inválido"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] aún existe"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "error de tubería"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr ""
+msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
-msgstr "%s: no se encontró la orden"
+msgstr "%s: orden no encontrada"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: intérprete erróneo"
 
 # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
 # De acuerdo. Corregido en todo el fichero. cfuga
-#: execute_cmd.c:5545
-#, fuzzy, c-format
+#: execute_cmd.c:5757
+#, c-format
 msgid "%s: cannot execute binary file: %s"
-msgstr "%s: no se puede ejecutar el fichero binario"
+msgstr "%s: no se puede ejecutar fichero binario: %s"
 
-#: execute_cmd.c:5623
-#, fuzzy, c-format
+#: execute_cmd.c:5843
+#, c-format
 msgid "`%s': is a special builtin"
-msgstr "%s es una orden interna del shell\n"
+msgstr "`%s': es una orden interna especial"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "no se puede duplicar el df %d al df %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "se ha excedido el nivel de recursión de la expresión"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
-msgstr "desbordamiento de la base de la pila de recursión"
+msgstr "desbordamiento de la pila de recursión"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "error sintáctico en la expresión"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "se intentó asignar a algo que no es una variable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "error sintáctico en la expresión"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "división por 0"
 
 # token en bison fue traducido como terminal. ¿Lo traducimos igual aquí
 # o lo dejamos como 'unidad' o 'elemento'? cfuga
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
-msgstr "bicho: elemento de asignación de expresión erróneo"
+msgstr "defecto: elemento de asignación de expresión erróneo"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "se esperaba `:' para la expresión condicional"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponente menor que 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "se esperaba un identificador después del pre-incremento o pre-decremento"
@@ -1107,46 +1118,46 @@ msgstr ""
 # falta , singular em+
 # mmmh, puede faltar más de un paréntesis cfuga
 # tiene razón Enrique, es singular. cfuga
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "falta un `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "error sintáctico: se esperaba un operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "error sintáctico: operador aritmético inválido"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (el elemento de error es \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "base aritmética inválida"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valor demasiado grande para la base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: error de expresión\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: no se puede acceder a los directorios padre"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "no se puede reestablecer el modo nodelay para el df %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
@@ -1156,164 +1167,169 @@ msgstr ""
 # buffer: espacio intermedio , alojamiento intermedio ( me gusta menos )
 # em+
 # almacenamiento intermedio. cfuga
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: tubería de pgrp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "borrando el trabajo detenido %d con grupo de proceso %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: el proceso %5ld (%s) en the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) se marca como vivo aún"
 
 # Cambiaría 'hay' por 'existe' em+
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no existe tal pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Señal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Hecho"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Detenido"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Detenido(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Ejecutando"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Hecho(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Salida %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Estado desconocido"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(`core' generado) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
-msgstr "  (dir ahora: %s)"
+msgstr "  (da: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid hijo (%ld a %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld no es un proceso hijo de este shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No hay un registro del proceso %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: el trabajo %d está detenido"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: el trabajo ha terminado"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: el trabajo %d ya está en segundo plano"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: línea %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (`core' generado)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(dir ahora: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_jobs_control: falló getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_jobs_control: disciplina de línea"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_jobs_control: disciplina de línea"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_jobs_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "no se puede establecer el grupo de proceso de terminal (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "no hay control de trabajos en este shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: falló la aserción: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1322,41 +1338,42 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: aserción arruinada\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "desconocido"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloque en la lista libre sobreescrito"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: se llamó con un argumento de bloque previamente liberado"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: se llamó con un argumento de bloque sin asignar"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
-msgstr "free: los tamaños de los pedazos de inicio y fin son diferentes"
+msgstr ""
+"free: los tamaños de los fragmentos del inicio y del final son diferentes"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: se llamó con un argumento de bloque sin asignar"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes"
 
@@ -1398,22 +1415,22 @@ msgstr "%s: especificación de ruta de red errónea"
 msgid "network operations not supported"
 msgstr "no hay soporte para operaciones de red"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: no se puede cambiar el local (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: no se puede cambiar el local (%s): %s"
@@ -1431,113 +1448,115 @@ msgstr "Tiene correo nuevo en $_"
 msgid "The mail in %s has been read\n"
 msgstr "El correo en %s fue leído\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "error sintáctico: se requiere una expresión aritmética"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "error sintáctico: `;' inesperado"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "error sintáctico: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipo de instrucción %d erróneo"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se "
 "esperaba `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "make_redirection: la instrucción de redirección `%d' está fuera de rango"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea "
+"truncada"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "número máximo de documentos en «here--document» excedido"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "EOF inesperado mientras se buscaba un `%c' coincidente"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF inesperado mientras se buscaba `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "error sintáctico en la expresión condicional"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "elemento inesperado `%s', se esperaba `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "se esperaba `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argumento inesperado `%s' para el operador unario condicional"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argumento inesperado para el operador unario condicional"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "elemento inesperado `%s', se esperaba un operador binario condicional"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "se esperaba un operador binario condicional"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argumento inesperado `%s' para el operador binario condicional"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argumento inesperado para el operador binario condicional"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "elemento inesperado `%c' en la orden condicional"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "elemento inesperado `%s' en la orden condicional"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "elemento inesperado %d en la orden condicional"
@@ -1548,12 +1567,12 @@ msgstr "elemento inesperado %d en la orden condicional"
 # provocado por el símbolo. Simplemente estar cerca del mismo. cfuga
 # Por consistencia con el siguiente, yo borraría la coma. sv
 # Cierto. Coma borrada. cfuga
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "error sintáctico cerca del elemento inesperado `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "error sintáctico cerca de `%s'"
@@ -1562,32 +1581,32 @@ msgstr "error sintáctico cerca de `%s'"
 # no se esperaba el final de la línea em+
 # Ojo, que end of file es fin de fichero, no de línea. sv
 # Se hicieron ambos cambios. cfuga
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "error sintáctico: no se esperaba el final del fichero"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "error sintáctico"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Use \"%s\" para dejar el shell.\n"
+msgstr "Utilice \"%s\" para dejar el shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF inesperado mientras se buscaba un `)' coincidente"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr "completion: no se encuentra la función `%s'"
+msgstr "completion: función `%s' no encontrada"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: posible bucle de reintento"
 
 #: pcomplib.c:182
 #, c-format
@@ -1606,95 +1625,99 @@ msgstr "xtrace_set: %d: descriptor de fichero inválido"
 
 #: print_cmd.c:380
 msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: puntero a fichero NULL"
+msgstr "xtrace_set: puntero NULL a fichero"
 
 #: print_cmd.c:384
 #, c-format
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': carácter de formato inválido"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descriptor de fichero fuera de rango"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redireccionamiento ambiguo"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: no se puede sobreescribir un fichero existente"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restringido: no se puede redirigir la salida"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "no se puede crear un fichero temporal para el documento-aquí: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: no se puede asignar el fd a la variable"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "error de redirección: no se puede duplicar el df"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "¡no se puede encontrar /tmp, crear por favor!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp debe ser un nombre de directorio válido"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opción inválida"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "no se puede reestablecer el modo nodelay para el df %d"
+msgstr "no se puede establecer el uid %d: uid efectivo %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "no se puede reestablecer el modo nodelay para el df %d"
+msgstr "no se puede establecer gid a %d: gid efectivo %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "no puede ejecutar el depurador; modo depurado desactivado"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: es un directorio"
 
 # Yo pondría "no tengo ningún nombre". sv
 # Revisé el código fuente de bash. Es un mensaje de error cuando no se
 # encuentra el nombre del usuario que ejecuta el shell. cfuga
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "¡No tengo nombre de usuario!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versión %s-(%s)\n"
@@ -1704,63 +1727,62 @@ msgstr "GNU bash, versión %s-(%s)\n"
 # traducido en otras ocasiones. Sehll script lo henmos traducido
 # como guión del shell , eso es seguro ... así que puede estar
 # bien así , ya lo verán otros em+
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 msgstr ""
 "Modo de empleo:\t%s [opción GNU larga] [opción] ...\n"
-"\t%s [opción GNU larga] [opción] guión-del-shell\n"
+"\t%s [opción GNU larga] [opción] fichero de shell ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Opciones GNU largas:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opciones del shell:\n"
 
-#: shell.c:1938
-#, fuzzy
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-irsD o -c orden o -O opcion_shopt\t\t(sólo invocación)\n"
+msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s o -o opción\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Teclee `%s -c \"help set\"' para más información sobre las opciones del "
 "shell.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Teclee `%s -c help' para más información sobre las órdenes internas del "
 "shell.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Use la orden `bashbug' para reportar bichos.\n"
+msgstr "Utilice la orden `bashbug' para reportar defectos.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "página inicial bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
+msgstr "Ayuda general utilizando software GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operación inválida"
@@ -1807,7 +1829,7 @@ msgstr "Matado"
 
 #: siglist.c:91
 msgid "Bus error"
-msgstr "Error en el bus"
+msgstr "Error del bus"
 
 #: siglist.c:95
 msgid "Segmentation fault"
@@ -1886,7 +1908,7 @@ msgstr "Ventana cambiada"
 
 #: siglist.c:171
 msgid "Record lock"
-msgstr "Bloqueo de grabación"
+msgstr "Bloqueo de registro"
 
 #: siglist.c:175
 msgid "User signal 1"
@@ -1930,7 +1952,7 @@ msgstr "el modo monitor HTF ha sido retirado"
 
 #: siglist.c:211
 msgid "HFT sound sequence has completed"
-msgstr "la secuencia de sonido HFT ha sido completado"
+msgstr "la secuencia de sonido HFT ha sido completada"
 
 #: siglist.c:215
 msgid "Information request"
@@ -1945,92 +1967,96 @@ msgstr "Señal Desconocida #"
 msgid "Unknown Signal #%d"
 msgstr "Señal Desconocida #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "sustitución errónea: no hay un `%s' que cierre en %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: no se puede asignar una lista a un miembro de la matriz"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "no se puede crear la tubería para la sustitución del proceso"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "no se puede crear un proceso hijo para la sustitución del proceso"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "no se puede abrir la tubería llamada %s para lectura"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "no se puede abrir la tubería llamada %s para escritura"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "no se puede duplicar la tubería llamada %s como df %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "sustitución errónea: no hay `}' final en %s"
+msgstr "sustitución de orden: se ignora byte nulo en la entrada"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
-msgstr "no se pueden crear la tubería para la sustitución de la orden"
+msgstr "no se puede crear la tubería para la sustitución de la orden"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "no se puede crear un proceso hijo para la sustitución de la orden"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: no se puede duplicar la tubería como df 1"
 
-#: subst.c:6580 subst.c:8939
-#, fuzzy, c-format
+#: subst.c:6710 subst.c:9623
+#, c-format
 msgid "%s: invalid variable name for name reference"
-msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
+msgstr "%s: nombre de variable inválido para referencia de nombre"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: sustitución errónea"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: cuenta de líneas inválida"
+msgstr "%s: expansión indirecta inválida"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "`%s': nombre de alias inválido"
+msgstr "%s: nombre de variable inválido"
+
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parámetro nulo o no establecido"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parámetro nulo o no establecido"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expresión de subcadena < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: sustitución errónea"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: no se puede asignar de esta forma"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2038,12 +2064,12 @@ msgstr ""
 "versiones futuras del intérprete obligarán la evaluación como una "
 "sustitución aritmética"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "sustitución errónea: no hay una \"`\" que cierre en %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "no hay coincidencia: %s"
@@ -2059,19 +2085,19 @@ msgstr "%s: se esperaba una expresión entera"
 
 #: test.c:265
 msgid "`)' expected"
-msgstr "se esperaba `)'"
+msgstr "`)' esperado"
 
 #: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
 msgstr "se esperaba `)', se encontró %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: se esperaba un operador unario"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: se esperaba un operador binario"
@@ -2083,20 +2109,25 @@ msgstr "%s: se esperaba un operador binario"
 # Abreviando "falta [al menos] un `]'" saldría: "falta un `]'".
 # ¿No es mejor "falta algún `]'"? cfuga
 # Tiene razón Enrique: singular. cfuga
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "falta un `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "número de señal inválido"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2104,87 +2135,87 @@ msgstr ""
 "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí "
 "mismo"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: señal errónea %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error al importar la definición de la función para `%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no hay contexto de función en el ámbito actual"
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s: no se puede asignar el fd a la variable"
+msgstr "%s: variable quizá no es valor asignado"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
+msgstr "%s: asignando entero a nombre referencia"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: no hay contexto de función en el ámbito actual"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s tiene exportstr nulo"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "carácter inválido %d en exportstr para %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "no hay `=' en exportstr para %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: la cabeza de shell_variables no es un contexto de función"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no es un contexto global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
-"pop_scope: la cabeza de shell_variables no es un ámbito de ambiente temporal"
+"pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: no se puede abrir como FICHERO"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
 
-#: variables.c:5669
-#, fuzzy, c-format
+#: variables.c:6322
+#, c-format
 msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s fuera de rango"
+msgstr "%s: %s: valor de compatibilidad fuera del rango"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2200,32 +2231,29 @@ msgid "GNU bash, version %s (%s)\n"
 msgstr "GNU bash, versión %s (%s)\n"
 
 #: version.c:91 version2.c:91
-#, fuzzy
 msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-"Esto es software libre; usted es libre de cambiarlo y redistribuirlo.\n"
+msgstr "Esto es software libre, es libre para modificar y redistribuirlo."
 
 #: version.c:92 version2.c:92
-#, fuzzy
 msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr "NO hay GARANTÍA, a la extensión permitida por la ley.\n"
+msgstr "No hay NINGUNA GARANTÍA, a la extensión permitida por la ley."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: no se pueden asignar %lu bytes (%lu bytes asignados)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: no se pueden asignar %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: no se pueden asignar %lu bytes"
@@ -2239,14 +2267,13 @@ msgid "unalias [-a] name [name ...]"
 msgstr "unalias [-a] nombre [nombre ...]"
 
 #: builtins.c:53
-#, fuzzy
 msgid ""
 "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
 "x keyseq:shell-command] [keyseq:readline-function or readline-command]"
 msgstr ""
-"bind [-lpvsPVS] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r "
-"secteclas] [-x secteclas:orden-shell] [secteclas:función-readline u orden-"
-"readline]"
+"bind [-lpsvPSVX] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r "
+"secteclas] [-x secteclas:orden-shell] [secteclas:función-leerlinea o orden-"
+"leerlinea]"
 
 #: builtins.c:56
 msgid "break [n]"
@@ -2265,9 +2292,8 @@ msgid "caller [expr]"
 msgstr "caller [expresión]"
 
 #: builtins.c:66
-#, fuzzy
 msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr "cd [-L|[-P [-e]]] [directorio]"
+msgstr "cd [-L|[-P [-e]]] [dir]"
 
 #: builtins.c:68
 msgid "pwd [-LP]"
@@ -2278,14 +2304,12 @@ msgid "command [-pVv] command [arg ...]"
 msgstr "command [-pVv] orden [arg ...]"
 
 #: builtins.c:78
-#, fuzzy
 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilrtux] [-p] nombre[=valor] ..."
+msgstr "declare [-aAfFgilrtux] [-p] [nombre[=valor] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] nombre[=valor] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] nombre[=valor] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2325,7 +2349,7 @@ msgstr "logout [n]"
 
 #: builtins.c:105
 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e nombre_e] [-lnr] [primero] [último] ó fc -s [pat=rep] [orden]"
+msgstr "fc [-e nombre_e] [-lnr] [primero] [último] o fc -s [pat=rep] [orden]"
 
 #: builtins.c:109
 msgid "fg [job_spec]"
@@ -2348,7 +2372,7 @@ msgid ""
 "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
 "[arg...]"
 msgstr ""
-"history [-c] [-d despl] [n] ó history -anrw [fichero] ó history -ps arg "
+"history [-c] [-d despl] [n] o history -anrw [fichero] o history -ps arg "
 "[arg...]"
 
 # jobspec no es sólo el pid del proceso, puede ser tambien
@@ -2357,20 +2381,19 @@ msgstr ""
 # mucho. ¿Sugerencias? cfuga
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [idtrabajo ...] ó jobs -x orden [args]"
+msgstr "jobs [-lnprs] [idtrabajo ...] o jobs -x orden [args]"
 
 # lo mismo em+
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [idtrabajo ...]"
+msgstr "disown [-h] [-ar] [idtrabajo ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
-"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... ó kill -l "
+"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... o kill -l "
 "[id_señal]"
 
 #: builtins.c:136
@@ -2394,9 +2417,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
 msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]"
 
 #: builtins.c:144
-#, fuzzy
 msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [nombre ...]"
+msgstr "unset [-f] [-v] [-n] [nombre ...]"
 
 #: builtins.c:146
 msgid "export [-fn] [name[=value] ...] or export -p"
@@ -2439,9 +2461,8 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] nombre [nombre ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
@@ -2449,13 +2470,12 @@ msgstr "umask [-p] [-S] [modo]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
-msgstr "wait [id]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
-#, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid ...]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2499,7 +2519,7 @@ msgstr "coproc [NOMBRE] orden [redirecciones]"
 
 #: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function nombre { ÓRDENES ; } ó nombre () { ÓRDENES ; }"
+msgstr "function nombre { ÓRDENES ; } o nombre () { ÓRDENES ; }"
 
 #: builtins.c:204
 msgid "{ COMMANDS ; }"
@@ -2542,8 +2562,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] formato [argumentos]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2552,7 +2573,6 @@ msgstr ""
 "sufijo] [nombre ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
@@ -2562,22 +2582,23 @@ msgstr ""
 "sufijo] [palabra]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o opción] [-DE] [nombre ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c "
-"quantum] [matriz]"
+"mapfile [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C "
+"llamada] [-c quantum] [matriz]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c "
 "quantum] [matriz]"
@@ -2587,7 +2608,6 @@ msgstr ""
 # no alias -> ningún alias. sv
 # De acuerdo. cfuga
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2606,25 +2626,24 @@ msgid ""
 "been\n"
 "    defined."
 msgstr ""
-"Define o muestra aliases.\n"
+"Define o muestra alias.\n"
 "    \n"
-"    `alias' sin argumentos muestra la lista de aliases en la forma\n"
+"    Sin argumentos `alias' muestra la lista de alias en el formato\n"
 "    reutilizable `alias NOMBRE=VALOR' en la salida estándar.\n"
 "    \n"
-"    De otra manera, se define un alias por cada NOMBRE cuyo VALOR se\n"
+"    En caso contrario, se define un alias por cada NOMBRE cuyo VALOR se\n"
 "    proporcione.  Un espacio final en VALOR causa que se revise\n"
 "    la siguiente palabra para sustitución de alias cuando se expande\n"
 "    el alias.\n"
 "    \n"
 "    Opciones:\n"
-"      -p\tMuestra todos los aliases definidos en un formato reusable\n"
+"      -p\tmuestra todos los alias definidos en un formato reutilizable\n"
 "    \n"
-"    Estado de salida:\n"
-"    alias devuelve verdadero a menos que se de un NOMBRE para el cual\n"
+"    Estado de Salida:\n"
+"    alias devuelve verdadero a menos que se dé un NOMBRE para el cual\n"
 "    no se haya definido ningún alias."
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2633,16 +2652,16 @@ msgid ""
 "    \n"
 "    Return success unless a NAME is not an existing alias."
 msgstr ""
-"Borra cada NOMBRE de la lista de alias definidos.\n"
+"Quita cada NOMBRE de la lista de alias definidos.\n"
 "    \n"
 "    Opciones:\n"
-"      -a\telimina todas las definiciones de alias.\n"
+"      -a\tquita todas las definiciones de alias.\n"
+"    \n"
 "    Devuelve verdadero a menos que un NOMBRE no sea un alias existente."
 
 # lee 'la'... em+
 # Corregido. Además, es plural: lee las asignaciones... cfuga
 #: builtins.c:291
-#, fuzzy
 msgid ""
 "Set Readline key bindings and variables.\n"
 "    \n"
@@ -2683,41 +2702,36 @@ msgid ""
 "    Exit Status:\n"
 "    bind returns 0 unless an unrecognized option is given or an error occurs."
 msgstr ""
-"Establece secuencias de teclas Readline y variables.\n"
-"\n"
+"Establece secuencias de teclas y variables de Readline.\n"
+"    \n"
 "    Asigna una secuencia de teclas a una función Readline o a una macro, o\n"
 "    establece una variable Readline.  La sintaxis de los argumentos que\n"
 "    no son opciones es equivalente a la que se encuentra en ~/.inputrc,\n"
 "    pero se debe pasar como un solo argumento:\n"
-"    p.e., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
+"    p.ej., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
 "    \n"
 "    Opciones:\n"
-"    \n"
-"      -m  comb_teclas    Usa COMB_TECLAS como la combinación de teclas por "
-"la\n"
-"                         duración de esta orden.  Los nombres de "
-"combinaciones\n"
+"      -m  comb_teclas    Usa COMB_TECLAS como la combinación de teclas "
+"durante el\n"
+"                         que dure esta orden.  Los nombres de combinaciones\n"
 "                         de teclas aceptables son emacs, emacs-standard,\n"
 "                         emacs-meta, emacs-ctlx, vi, vi-move, vi-command y\n"
 "                         vi-insert.\n"
-"      -l                 Enlista los nombres de las funciones.\n"
-"      -P                 Enlista los nombres de las funciones y "
-"asignaciones.\n"
-"      -p                 Enlista las funciones y asignaciones en una forma "
+"      -l                 Lista los nombres de las funciones.\n"
+"      -P                 Lista los nombres de las funciones y asignaciones.\n"
+"      -p                 Lista las funciones y asignaciones de tal forma "
 "que\n"
-"                         se puede reusar como entrada.\n"
-"      -S                 Enlista las secuencias de teclas que invocan "
-"macros\n"
+"                         se pueda ruutilizar como entrada.\n"
+"      -S                 Lista las secuencias de teclas que invocan macros\n"
 "                         y sus valores.\n"
-"      -s                 Enlista las secuencias de teclas que invocan "
-"macros\n"
-"                         y sus valores en una forma que se pueden reusar "
+"      -s                 Lista las secuencias de teclas que invocan macros\n"
+"                         y sus valores en una forma que se pueden reutilizar "
 "como\n"
 "                         entrada.\n"
-"      -V                 Enlista los nombres de variables y valores.\n"
-"      -v                 Enlista los nombres de variables y valores en una\n"
-"                         forma que se pueden reusar como entrada.\n"
-"      -q nombre-funcion  Pregunta qué teclas invocan la función nombrada.\n"
+"      -V                 Lista los nombres de variables y valores.\n"
+"      -v                 Lista los nombres de variables y valores en una\n"
+"                         forma que se pueden reutilizar como entrada.\n"
+"      -q nombre-función  Pregunta qué teclas invocan la función nombrada.\n"
 "      -u nombre-función  Borra todas las teclas que están ligadas a\n"
 "                         la función nombrada.\n"
 "      -r secteclas       Borra la asignación para la SECTECLAS.\n"
@@ -2725,7 +2739,7 @@ msgstr ""
 "      -x secteclas:orden-shell\tCausa que se ejecute la ORDEN-SHELL cuando\n"
 "    \t\t\t\tse introduce la SECTECLAS.\n"
 "    \n"
-"    Estado de salida:\n"
+"    Estado de Salida:\n"
 "    bind devuelve 0 a menos que se presente una opción desconocida o suceda\n"
 "    un error."
 
@@ -2739,12 +2753,12 @@ msgid ""
 "    Exit Status:\n"
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
-"Termina ciclos for, while o until.\n"
+"Termina bucles for, while o until.\n"
 "    \n"
-"    Termina un ciclo FOR, WHILE o UNTIL.  Si se especifica N, termina\n"
-"    N ciclos anidados.\n"
+"    Termina un bucle FOR, WHILE o UNTIL.  Si se especifica N, termina\n"
+"    N bucles anidados.\n"
 "    \n"
-"    Estado de salida:\n"
+"    Estado de Salida:\n"
 "    El estado de salida es 0 a menos que N no sea mayor o igual a 1."
 
 #: builtins.c:342
@@ -2757,16 +2771,17 @@ msgid ""
 "    Exit Status:\n"
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
-"Continúa iteraciones for, while o until\n"
+"Reanuda bucles for, while o until\n"
 "    \n"
-"    Continúa la siguiente iteración del ciclo FOR, WHILE o UNTIL\n"
-"    circundante.  Si se especifica N, retoma en el N-ésimo ciclo "
+"    Reanuda la siguiente iteración del bucle FOR, WHILE o UNTIL\n"
+"    circundante.  Si se especifica N, reanuda en el N-ésimo bucle "
 "circundante.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    El estado de salida es 0 a menos que N no sea mayor o igual a 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2777,14 +2792,15 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Ejecuta órdenes internas del shell\n"
 "    \n"
-"    Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar\n"
-"    la búsqueda interna de órdenes.  Esto es útil cuando desea "
+"    Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar la\n"
+"    búsqueda interna de órdenes.  Esto es útil cuando se desea "
 "reimplementar\n"
-"    una orden interna del shell como una función de shell, pero necesita\n"
+"    una orden interna de la shell como una función de shell, pero se "
+"necesita\n"
 "    ejecutar la orden interna dentro de la función.\n"
 "    \n"
 "    Estado de Salida:\n"
@@ -2810,10 +2826,10 @@ msgstr ""
 "    \n"
 "    Sin EXPR, devuelve \"$linea $nombrefichero\".  Con EXPR, devuelve\n"
 "    \"$linea $subrutina $nombrefichero\"; esta información adicional\n"
-"    se puede usar para proveer un volcado de pila.\n"
+"    se puede usar para proporcionar un volcado de pila.\n"
 "    \n"
-"    El valor de EXPR indica cuántos marcos de llamada se debe retroceder\n"
-"    antes del actual; el marco inicial es el marco 0.\n"
+"    El valor de EXPR indica cuántos marcos de llamada hay que retroceder\n"
+"    antes del actual; el marco superior es el marco 0.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n"
@@ -2823,7 +2839,6 @@ msgstr ""
 # por barra invertida em++
 # Corregido en toda la traducción. cfuga
 #: builtins.c:387
-#, fuzzy
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
@@ -2867,12 +2882,12 @@ msgid ""
 "when\n"
 "    -P is used; non-zero otherwise."
 msgstr ""
-"Cambia el directorio de trabajo del shell.\n"
+"Modifica el directorio de trabajo del shell.\n"
 "    \n"
-"    Cambia el directorio actual a DIR.  DIR por defecto es el valor de la\n"
+"    Modifica el directorio actual a DIR.  DIR por defecto es el valor de la\n"
 "    variable de shell HOME.\n"
 "    \n"
-"    La variable CDPATH define la ruta de búsqueda por el directorio que\n"
+"    La variable CDPATH define la ruta de búsqueda para el directorio que\n"
 "    contiene DIR.  Los nombres alternativos de directorio en CDPATH se\n"
 "    separan con dos puntos (:).  Un nombre de directorio nulo es igual que\n"
 "    el directorio actual.  Si DIR comienza con una barra inclinada (/),\n"
@@ -2880,24 +2895,30 @@ msgstr ""
 "    \n"
 "    Si no se encuentra el directorio, y la opción del shell `cdable_vars'\n"
 "    está activa, entonces se trata la palabra como un nombre de variable.\n"
-"    Si esa variable tiene un valor, se utiliza su valor como DIR.\n"
+"    Si esa variable tiene un valor, se utiliza su valor para DIR.\n"
 "    \n"
 "    Opciones:\n"
-"        -L\tfuerza a seguir los enlaces simbólicos\n"
-"        -P\tusa la estructura física de directorios sin seguir los enlaces\n"
-"    \tsimbólicos\n"
-"        -e\tsi se da la opción -P, y el directorio actual de trabajo no se\n"
-"    \tpuede determinar con éxito, termina con un estado diferente de cero.\n"
+"      -L\tfuerza a seguir los enlaces simbólicos: resuelve los enlaces\n"
+"    \t\tsimbólicos en DIR después de procesar las instancias de `..'\n"
+"      -P\tusa la estructura física de directorios sin seguir los enlaces\n"
+"    \t\tsimbólicos: resuelve los enlaces simbólicos en DIR antes de "
+"procesar\n"
+"    \t\tlas instancias de `..'\n"
+"      -e\tsi se da la opción -P y el directorio actual de trabajo no se\n"
+"    \t\tpuede determinar con éxito, termina con un estado diferente de "
+"cero.\n"
 "    \n"
 "    La acción por defecto es seguir los enlaces simbólicos, como si se\n"
 "    especificara `-L'.\n"
+"    `..' se procesa quitando la componente del nombre de la ruta "
+"inmediatamente\n"
+"    anterior hasta una barra inclinada o el comienzo de DIR.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Devuelve 0 si se cambia el directorio, y si $PWD está definido con\n"
-"    éxito cuando se usa -P; de otra forma es diferente a cero."
+"    Estado de Salida:\n"
+"    Devuelve 0 si se cambia el directorio, y si $PWD está definido como\n"
+"    correcto cuando se emplee -P; de otra forma es diferente a cero."
 
 #: builtins.c:425
-#, fuzzy
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -2939,7 +2960,7 @@ msgstr ""
 "    Sin efecto; la orden no hace nada.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Siempre con éxito."
+"    Siempre correcto."
 
 #: builtins.c:453
 msgid ""
@@ -2948,10 +2969,10 @@ msgid ""
 "    Exit Status:\n"
 "    Always succeeds."
 msgstr ""
-"Devuelve un resultado con éxito.\n"
+"Devuelve un resultado correcto.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Siempre con éxito."
+"    Estado de Salida:\n"
+"    Siempre correcto."
 
 #: builtins.c:462
 msgid ""
@@ -2960,13 +2981,12 @@ msgid ""
 "    Exit Status:\n"
 "    Always fails."
 msgstr ""
-"Devuelve un resultado sin éxito.\n"
+"Devuelve un resultado incorrecto.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Siempre falla."
+"    Estado de Salida:\n"
+"    Siempre incorrecto."
 
 #: builtins.c:471
-#, fuzzy
 msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
@@ -2987,21 +3007,21 @@ msgstr ""
 "Ejecuta una orden simple o muestra información sobre órdenes.\n"
 "    \n"
 "    Ejecuta la ORDEN con ARGumentos, suprimiendo la búsqueda de funciones\n"
-"    de shell, o muestra información sobre las ÓRDENes especificadas. Se "
+"    de shell, o muestra información sobre las ORDENes especificadas. Se "
 "puede\n"
 "    usar para invocar órdenes en disco cuando existe una función con el "
 "mismo\n"
 "    nombre.\n"
 "    \n"
 "    Opciones:\n"
-"      -p\tusa un valor por defecto para PATH para garantizar que\n"
-"    \tencuentre todas las utilidades estándar\n"
-"      -v\tmuestra una descripción de la ORDEN similar a la orden\n"
-"    \tinterna `type'\n"
-"      -V\tmuestra una descripción más detallada de cada ORDEN\n"
+"      -p    utiliza un valor predeterminado de RUTA que garantiza que se\n"
+"            encuentren todas las utilidades comunes\n"
+"      -v    muestra una descripción de la ORDEN similar a la orden\n"
+"            interna `type'\n"
+"      -V    muestra una descripción más detallada de cada ORDEN\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve el estado de salida de la ORDEN, o falla si no se encuentra\n"
+"    Devuelve el estado de salida de la ORDEN, o fallo si no se encuentra\n"
 "    la ORDEN."
 
 #: builtins.c:490
@@ -3024,11 +3044,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3050,27 +3070,27 @@ msgstr ""
 "    muestra los atributos y valores de todas las variables.\n"
 "    \n"
 "    Opciones:\n"
-"      -f\trestringe la acción o muestra a nombres y definiciones\n"
-"    \tde funciones\n"
-"      -F\trestringe la muestra a nombres de funciones (con número de\n"
-"    \tlínea y fichero fuente al depurar)\n"
+"      -f\trestringe la acción o la información a nombres y definiciones\n"
+"    \t\tde funciones\n"
+"      -F\trestringe la información a nombres de funciones únicamente (con\n"
+"    \t\tnúmero de línea y fichero fuente al depurar)\n"
 "      -g\tcrea variables globales cuando se usa en una función de shell;\n"
-"    \tde otra forma se descarta\n"
-"      -p\tmuestra los atributos y valor de cada NOMBRE\n"
+"    \t\ten caso contrario, se descarta\n"
+"      -p\tmuestra los atributos y el valor de cada NOMBRE\n"
 "    \n"
 "    Opciones que establecen atributos:\n"
-"      -a\testablece NOMBREs como matrices indizadas (si se admiten)\n"
+"      -a\testablece NOMBREs como matrices indexadas (si se admiten)\n"
 "      -A\testablece NOMBREs como matrices asociativas (si se admiten)\n"
 "      -i\testablece NOMBREs con el atributo `integer'\n"
 "      -l\tconvierte NOMBREs a minúsculas en la asignación\n"
-"      -r\testablece NOMBREs como de sólo lectura\n"
-"      -t\testablece NOMBREs con el atributo `trace'\n"
+"      -r\tcrea NOMBREs como de sólo lectura\n"
+"      -t\tcrea NOMBREs con el atributo `trace'\n"
 "      -u\tconvierte NOMBREs a mayúsculas en la asignación\n"
-"      -x\testablece NOMBREs para exportar\n"
+"      -x\tcrea NOMBREs para exportar\n"
 "    \n"
-"    Si usa `+' en lugar de `-' desactiva el atributo dado.\n"
+"    Si se usa `+' en lugar de `-', se desactiva el atributo dado.\n"
 "    \n"
-"    Las variables con el atributo integer realizan evaluación aritmética\n"
+"    Las variables con el atributo ‘integer’ realizan evaluación aritmética\n"
 "    (vea la orden `let') cuando se asigna un valor a la variable.\n"
 "    \n"
 "    Cuando se usa en una función, `declare' hace locales a los NOMBREs,\n"
@@ -3078,11 +3098,10 @@ msgstr ""
 "    conducta.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se de una opción inválida o\n"
-"    suceda un error."
+"    Devuelve correcto a menos que se dé una opción inválida o\n"
+"    suceda un error de asignación de variable."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3090,10 +3109,9 @@ msgid ""
 msgstr ""
 "Establece valores de variables y atributos.\n"
 "    \n"
-"    Obsoleto.  Consulte `help declare'."
+"    Sinónimo de `declare'.  Vea `help declare'."
 
 #: builtins.c:538
-#, fuzzy
 msgid ""
 "Define local variables.\n"
 "    \n"
@@ -3112,12 +3130,12 @@ msgstr ""
 "    Crea una variable local llamada NOMBRE, y le da un VALOR.  OPCIÓN puede\n"
 "    ser cualquier opción aceptada por `declare'.\n"
 "    \n"
-"    Las variables locales sólo se pueden usar en una función; son visibles\n"
-"    lo en la función donde se definen y sus hijos.\n"
+"    Las variables locales sólo pueden usarse dentro de funciones; son\n"
+"    visibles solo en la función donde se definen y sus hijos.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se de una opción inválida, suceda\n"
-"    un error, o el shell no esté ejecutando una función."
+"    Devuelve correcto a menos que se dé una opción inválida, suceda\n"
+"    un error de asignación, o el shell no esté ejecutando una función."
 
 #: builtins.c:555
 #, fuzzy
@@ -3149,6 +3167,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3157,34 +3181,37 @@ msgstr ""
 "    \n"
 "    Muestra los ARGumentos en la salida estándar seguidos por un carácter\n"
 "    de fin de línea.\n"
+"    \n"
 "    Opciones:\n"
 "      -n\tno agrega un carácter de fin de línea\n"
-"      -e\tactiva la interpretación de caracteres de escape de\n"
-"    \tde barra invertida\n"
+"      -e\tactiva la interpretación de los siguientes caracteres de escape "
+"de\n"
+"    \t\tbarra invertida\n"
 "      -E\tdesactiva explícitamente la interpretación de caracteres de\n"
-"    \tde escape de barra invertida\n"
+"    \t\tescape de barra invertida\n"
 "    \n"
 "    `echo' interpreta los siguientes caracteres de escape de barra "
 "invertida:\n"
-"     \\a\talerta (timbre)\n"
-"     \\b\tespacio hacia atrás\n"
-"     \\c\tsuprime toda salida a continuación\n"
-"     \\E\tcarácter de escape\n"
-"     \\f\talimentación de papel\n"
-"     \\n\tlínea nueva\n"
-"     \\r\tretorno de carro\n"
-"     \\t\ttabulador horizontal\n"
-"     \\v\ttabulador vertical\n"
-"     \\\\\tbarra invertida\n"
-"     \\0nnn\tel carácter cuyo código ASCII es NNN (octal).  NNN puede ser\n"
-"    \tde 0 a 3 dígitos octales\n"
-"     \\xHH\tel carácter de ocho bits cuyo valor es HH (hexadecimal).  HH\n"
-"    \tpuede ser de uno o dos dígitos hexadecimales\n"
-"    \n"
-"    Estado de salida:\n"
-"    Devuelve con éxito a menos que suceda un error de escritura."
-
-#: builtins.c:591
+"      \\a\talerta (timbre)\n"
+"      \\b\tborrado hacia atrás\n"
+"      \\c\tsuprime toda salida a continuación\n"
+"      \\e\tcarácter de escape\n"
+"      \\E\tcarácter de escape\n"
+"      \\f\talimentación de papel\n"
+"      \\n\tlínea nueva\n"
+"      \\r\tretorno de carro\n"
+"      \\t\ttabulador horizontal\n"
+"      \\v\ttabulador vertical\n"
+"      \\\\\tbarra invertida\n"
+"      \\0nnn\tcarácter cuyo código ASCII es NNN (octal).  NNN puede ser\n"
+"    \t\tde 0 a 3 dígitos octales\n"
+"      \\xHH\tel de ocho bits cuyo valor es HH (hexadecimal).  HH\n"
+"    \t\tpuede ser de uno o dos dígitos hexadecimales\n"
+"    \n"
+"    Estado de Salida:\n"
+"    Devuelve correcto a menos que suceda un error de escritura."
+
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3203,10 +3230,10 @@ msgstr ""
 "    Opciones:\n"
 "      -n\tno agrega un carácter de fin de línea\n"
 "    \n"
-"    Estado de salida:\n"
-"    Devuelve con éxito a menos que suceda un error de escritura."
+"    Estado de Salida:\n"
+"    Devuelve correcto a menos que suceda un error de escritura."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3242,26 +3269,27 @@ msgstr ""
 "      -a\tmuestra la lista de órdenes internas indicando si están activas o "
 "no\n"
 "      -n\tdesactiva cada NOMBRE o muestra la lista de órdenes internas\n"
-"    \tdesactivadas\n"
+"    \t\tdesactivadas\n"
 "      -p\tmuestra la lista de órdenes internas en una forma reusable\n"
-"      -s\tmuestra sólo los nombres de las órdenes internas `especiales' "
+"      -s\tmuestra solo los nombres de las órdenes internas `especiales' "
 "Posix\n"
 "    \n"
 "    Opciones que controlan la carga dinámica:\n"
-"      -f\tcarga la orden interna NOMBRE del objeto compartido FICHERO\n"
-"      -d\tborra una orden interna cargada con -f\n"
+"      -f\tCarga la función interna NOMBRE desde el objeto compartido "
+"FICHERO\n"
+"      -d\tBorra una orden interna cargada con -f\n"
 "    \n"
 "    Sin opciones, se activa cada NOMBRE.\n"
 "    \n"
-"    Para usar `test' que se encuentra en $PATH en lugar de la orden interna\n"
+"    Para usar el `test' que se encuentra en $PATH en lugar de la orden "
+"interna\n"
 "    del shell, ejecute `enable -n test'.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que NOMBRE no sea una orden interna del "
-"shell\n"
+"    Devuelve correcto a menos que NOMBRE no sea una orden interna del shell\n"
 "    o suceda un error."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3286,7 +3314,7 @@ msgstr ""
 # en una de dos formas -> en una de las dos formas siguientes em+
 # dar argumentos -> especificar em+
 # De acuerdo. cfuga
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3363,11 +3391,10 @@ msgstr ""
 "    de los primeros.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito si se encuentra una opción; falla si se encuentra\n"
+"    Devuelve correcto si se encuentra una opción; falla si se encuentra\n"
 "    el final de las opciones o sucede un error."
 
-#: builtins.c:688
-#, fuzzy
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3393,13 +3420,13 @@ msgstr ""
 "    \n"
 "    Ejecuta la ORDEN, reemplazando este shell con el programa especificado.\n"
 "    Los ARGUMENTOS se vuelven los argumentos de la ORDEN.  Si no se\n"
-"    especifica la ORDEN, cualquir redirección toma efecto en el shell "
+"    especifica la ORDEN, cualquier redirección toma efecto en el shell "
 "actual.\n"
 "    \n"
 "    Opciones:\n"
 "      -a nombre\tpasa el NOMBRE como el argumento cero de la ORDEN\n"
-"      -c\t\tejecuta la ORDEN en un ambiente vacío\n"
-"      -l\t\tcoloca un guión en el argumento cero de la ORDEN\n"
+"      -c\tejecuta la ORDEN en un entorno vacío\n"
+"      -l\tcoloca un guion en el argumento cero de la ORDEN\n"
 "    \n"
 "    Si la orden no se puede ejecutar, termina un shell no interactivo,\n"
 "    a menos que la opción de shell `execfail' esté activa.\n"
@@ -3408,7 +3435,7 @@ msgstr ""
 "    Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n"
 "    error de redirección."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3421,7 +3448,7 @@ msgstr ""
 "salida\n"
 "    es el mismo de la última orden ejecutada."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3434,7 +3461,7 @@ msgstr ""
 "    Termina un shell de entrada con un estado de salida de N. Devuelve un\n"
 "    error si no se ejecuta en un shell de entrada."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3463,34 +3490,34 @@ msgid ""
 "    Returns success or status of executed command; non-zero if an error "
 "occurs."
 msgstr ""
-"Muestra o ejecuta órdenes de la lista de historia.\n"
+"Muestra o ejecuta órdenes de la lista de la historia.\n"
 "    \n"
-"    fc se usa para listar o editar y reejecutar órdenes de la lista de\n"
+"    fc se usa para listar o editar y reejecutar órdenes de la lista de la\n"
 "    historia.  PRIMERO y ÚLTIMO pueden ser números que especifican el "
 "rango,\n"
 "    o PRIMERO puede ser una cadena, que significa la orden más reciente que\n"
 "    comience con esa cadena.\n"
 "    \n"
-"       -e NOMBRE_E selecciona el editor a usar.  Por defecto es FCEDIT,\n"
+"       -e NOMBRE_E\tselecciona el editor a usar.  Por defecto es FCEDIT,\n"
 "    \t\tdespués EDITOR, después vi\n"
-"       -l lista líneas en lugar de editar\n"
-"       -n omite los números de línea al listar\n"
-"       -r inverte el orden de las líneas (muestra primero las más "
+"       -l \tlista laslíneas en lugar de editar\n"
+"       -n\tomite los números de línea al listar\n"
+"       -r\tinvierte el orden de las líneas (muestra primero las más "
 "recientes)\n"
 "    \n"
 "    Con el formato `fc -s [pat=rep ...] [orden]', la ORDEN se\n"
 "    ejecuta de nuevo después de realizar la sustitución ANT=NUEVO.\n"
 "    \n"
-"    Un alias útil para usar con esto es r='fc -s', así que al teclear\n"
+"    Un alias útil para usar con esto es r='fc -s', tal que al teclear\n"
 "    `r cc' ejecuta la última orden que comience con `cc' y al teclear\n"
-"    `r' re-ejecuta la última orden.\n"
+"    `r' reejecuta la última orden.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito o el estado de la orden ejecutada; si sucede un "
-"error\n"
+"    Devuelve correcto o el estado de la orden ejecutada; si sucede un "
+"error,\n"
 "    es diferente de cero."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3503,15 +3530,16 @@ msgid ""
 msgstr ""
 "Mueve el trabajo al primer plano.\n"
 "    \n"
-"    Ubica al trabajo identificado con IDTRABAJO en el primer plano, y\n"
-"    lo hace el trabajo actual.  Si IDTRABAJO no está presente, se usa\n"
+"    Ubica el trabajo identificado con IDTRABAJO en primer plano y\n"
+"    lo convierte en el trabajo actual.  Si IDTRABAJO no está presente, se "
+"usa\n"
 "    la noción del shell del trabajo actual.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    El estado del comando ubicado en primer plano, o falla si sucede un "
+"    El estado de la orden ubicada en primer plano, o falla si sucede un "
 "error."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3531,11 +3559,10 @@ msgstr ""
 "    se usa la noción del shell del trabajo actual.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve éxito a menos que el control de trabajos no esté activado o\n"
+"    Devuelve correcto a menos que el control de trabajos no esté activado o\n"
 "    suceda un error."
 
-#: builtins.c:787
-#, fuzzy
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3565,22 +3592,22 @@ msgstr ""
 "    órdenes almacenadas.\n"
 "    \n"
 "    Opciones:\n"
-"      -d\t\tolvida la ubicación almacenada de cada NOMBRE\n"
-"      -l\t\tmuestra en un formato que se puede reusar como entrada\n"
+"      -d\tolvida la ubicación almacenada de cada NOMBRE\n"
+"      -l\tmuestra en un formato que se puede reutilizar como entrada\n"
 "      -p ruta\tusa RUTA como la ruta completa de NOMBRE\n"
-"      -r\t\tolvida todas las ubicaciones almacenadas\n"
-"      -t\t\tmuestra la ubicación almacenada de cada NOMBRE,\n"
-"    \t\tcada ubicación con el NOMBRE correspondiente\n"
-"    \t\tse dan varios NOMBREs\n"
+"      -r\tolvida todas las ubicaciones almacenadas\n"
+"      -t\tmuestra la ubicación almacenada de cada NOMBRE,\n"
+"    \t\tcada ubicación precedida del NOMBRE correspondiente\n"
+"    \t\tsi se dan varios NOMBREs\n"
 "    Argumentos:\n"
-"      NOMBRE\t\tCada NOMBRE se busca en $PATH y se agrega a la lista\n"
+"      NOMBRE\tCada NOMBRE se busca en $PATH y se agrega a la lista\n"
 "    \t\tde órdenes almacenadas.\n"
 "    \n"
 "    Estado de Salida\n"
-"    Devuelve con éxito a menos que no se encuentre NOMBRE o se proporcione\n"
+"    Devuelve correcto a menos que no se encuentre NOMBRE o se proporcione\n"
 "    una opción inválida."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3596,7 +3623,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3606,23 +3633,23 @@ msgstr ""
 "    \n"
 "    Muestra un resumen breve de las órdenes internas.  Si se especifica\n"
 "    un PATRÓN, da ayuda detallada sobre todas las órdenes que\n"
-"    coincidan con el PATRÓN, de otra forma se muestra la lista de\n"
+"    coincidan con el PATRÓN; en caso contrario, se muestra la lista de\n"
 "    tópicos de ayuda.\n"
 "    \n"
 "    Opciones:\n"
 "      -d\tmuestra una descripción corta para cada tópico\n"
 "      -m\tmuestra el uso en un formato similar a página man\n"
 "      -s\tmuestra sólo una sinopsis breve de uso para cada tópico que\n"
-"    \tcoincida con el PATRÓN\n"
+"    \t\tcoincida con el PATRÓN\n"
 "    \n"
 "    Argumentos:\n"
 "      PATRÓN\tPatrón que especifica un tópico de ayuda\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que no se encuentre PATRÓN o se proporcione\n"
+"    Devuelve correcto a menos que no se encuentre PATRÓN o se proporcione\n"
 "    una opción inválida."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3632,7 +3659,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3656,16 +3684,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
-"Muestra o manipula la lista de la historia.    \n"
+"Muestra o manipula la lista de la historia.\n"
+"    \n"
 "    Muestra la lista de la historia con números de línea, mostrando\n"
 "    cada línea modificada con un `*' como prefijo.  El argumento N\n"
 "    muestra solamente las últimas N entradas.\n"
 "    \n"
 "    Opciones:\n"
 "      -c\tborra la lista de historia eliminando todas las entradas\n"
-"      -d despl\tborra la entrada de la histora en la posición DESPL\n"
+"      -d despl\tborra la entrada de la historia en la posición DESPL\n"
 "    \n"
-"      -a\tagrega las líneas de histora de esta sesión al fichero de "
+"      -a\tagrega las líneas de historia de esta sesión al fichero de "
 "historia\n"
 "      -n\tlee todas las líneas de historia que no se han leído del fichero\n"
 "    \tde historia\n"
@@ -3677,6 +3706,7 @@ msgstr ""
 "    \tresultado, sin guardarlo en la lista de historia\n"
 "      -s\tagrega los ARGumentos a la lista de historia como\n"
 "    \tuna sola entrada\n"
+"    \n"
 "    Si se proporciona FICHERO, entonces se usa como el fichero de\n"
 "    historia. Si no, si $HISTFILE tien un valor, éste se usa, en otro caso\n"
 "    ~/.bash_history.\n"
@@ -3684,10 +3714,13 @@ msgstr ""
 "    Si la variable $HISTTIMEFORMAT está definida y no es nula, se usa su\n"
 "    valor como una cadena de formato strftime(3) para mostrar la marca de\n"
 "    tiempo asociada con cada entrada de historia mostrada.  No se muestra\n"
-"    ninguna marca de tiempo de otra forma."
+"    ninguna marca de tiempo de otra forma.\n"
+"    \n"
+"    Estado de Salida:\n"
+"    Devuelve correcto a no ser que se dé una opción inválida u ocurra un "
+"error."
 
-#: builtins.c:872
-#, fuzzy
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3713,28 +3746,26 @@ msgstr ""
 "Muestra el estado de los trabajos.\n"
 "    \n"
 "    Muestra los trabajos activos.  IDTRABAJO restringe la salida a\n"
-"    ese trabajo.  Sin opciones, se muestra el estado de todos los trabajos\n"
+"    esa trabajo.  Sin opciones, se muestra el estado de todas los trabajos\n"
 "    activos.\n"
 "    \n"
 "    Opciones:\n"
-"      -l\tmuestra los id's de los procesos, además de\n"
-"    \tla información normal\n"
-"      -n\tsolo muestra los procesos que han cambia de estado desde\n"
-"    \tla última notificación\n"
-"      -p\tsolo muestra los id's de los procesos      -r\trestringe la salida "
-"a los trabajos en ejecución\n"
+"      -l\tmuestra los IDs de los procesos, además de la información normal\n"
+"      -n\tsolo muestra los procesos que han cambiado de estado desde\n"
+"    \t\tla última notificación\n"
+"      -p\tsolo muestra los IDs de los procesos\n"
+"      -r\trestringe la salida a los trabajos en ejecución\n"
 "      -s\trestringe la salida a los trabajos detenidos\n"
 "    \n"
 "    Si se especifica -x, la ORDEN se ejecuta después de que todas las\n"
-"    especificaciones de trabajo que aparecen en ARGS se han reemplazado\n"
+"    especificaciones de trabajo que aparecen en ARGS se hayan reemplazado\n"
 "    con el ID de proceso del líder del grupo de procesos de dicho trabajo.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se de una opción inválida o suceda un\n"
+"    Devuelve correcto a menos que se dé una opción inválida o suceda un\n"
 "    error.  Si se usa -x, devuelve el estado de salida de la ORDEN."
 
-#: builtins.c:899
-#, fuzzy
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3750,23 +3781,22 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
-"Borra trabajos del shell actual.\n"
+"Quita trabajos del shell actual.\n"
 "    \n"
-"    Borra cada argumento IDTRABAJO de la tabla de trabajos activos. Sin\n"
-"    algún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n"
+"    Quita cada argumento IDTRABAJO de la tabla de trabajos activos.  Sin\n"
+"    ningún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n"
 "    \n"
 "    Opciones:\n"
-"      -a\tborra todos los trabajos si no se proporciona IDTRABAJO\n"
-"      -h\tmarca cada IDTRABAJO para no se envíe SIGHUP al trabajo si\n"
-"    \tel shell recibe un SIGHUP\n"
-"      -r\tborra solo los trabajos en ejecución\n"
+"      -a\tquita todas los trabajos si no se proporciona IDTRABAJO\n"
+"      -h\tmarca cada IDTRABAJO para que no se le envíe SIGHUP\n"
+"    \t\tsi el shell recibe un SIGHUP\n"
+"      -r\tquita solo los trabajos en ejecución\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcionen una opción o un\n"
-"    IDTRABAJO inválidos."
+"    Devuelve correcto a menos que se proporcionen una opción o\n"
+"    un IDTRABAJO inválida."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3788,7 +3818,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
-"Envía una señal a un trabajo.\n"
+"Envía una señal a una trabajo.\n"
 "    \n"
 "    Envía a los procesos nombrados por PID (o IDTRABAJO) la señal ID_SEÑAL\n"
 "    o NUM_SEÑAL. Si no están presentes ni ID_SEÑAL o NUM_SEÑAL, se asume\n"
@@ -3797,16 +3827,17 @@ msgstr ""
 "    Opciones:\n"
 "      -s sig\tSIG es un nombre de señal\n"
 "      -n sig\tSIG es un número de señal\n"
-"      -l\tenlista los nombres de señales; si hay argumentos a continuación\n"
-"    \tde `-l', se asume que son números de señal para las cuales se debe\n"
+"      -l\tlista los nombres de señales; si hay argumentos a continuación\n"
+"    \t\tde `-l', se asume que son números de señal para las cuales se debe\n"
 "    mostrar el nombre.\n"
 "    \n"
 "    Kill es una orden interna del shell por dos razones: permite que se\n"
-"    puedan usar IDs de trabajo en lugar de IDs de proceso, y permite matar\n"
-"    procesos si ha alcanzado el límite de procesos que puede crear.\n"
+"    puedan utilizar IDs de trabajo en lugar de IDs de proceso y permite\n"
+"    matar procesos si se ha alcanzado el límite de procesos que se pueden\n"
+"    crear.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se de una opción inválida o suceda un "
+"    Devuelve correcto a menos que se dé una opción inválida o suceda un "
 "error."
 
 # "a ser evaluada" no está en español. sv
@@ -3817,7 +3848,7 @@ msgstr ""
 # No sé si existe precedencia en español, pero me suena fatal.
 # Yo pondría simplemente "prioridad". sv
 # Creo que si existe, pero tu sugerencia es mejor. cfuga
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3867,7 +3898,7 @@ msgstr ""
 "    con enteros de longitud fija, sin revisar desbordamientos, aunque la\n"
 "    la división por 0 se captura y se marca como un error.  La siguiente\n"
 "    lista de operadores está agrupada en niveles de operadores de la misma\n"
-"    prioridad.  Se muestran los niveles en orden de prioridad decreciente.\n"
+"    prioridad.  Los niveles se muestran en orden de prioridad decreciente.\n"
 "    \n"
 "    \tid++, id--\tpost-incremento, post-decremento de variable\n"
 "    \t++id, --id\tpre-incremento, pre-decremento de variable\n"
@@ -3876,12 +3907,12 @@ msgstr ""
 "    \t**\t\texponenciación\n"
 "    \t*, /, %\t\tmultiplicación, división, residuo\n"
 "    \t+, -\t\tadición, sustracción\n"
-"    \t<<, >>\t\tdesplazamientos de bits izquierdo y derecho\n"
+"    \t<<, >>\t\tdesplazamientos de varios bit izquierdo y derecho\n"
 "    \t<=, >=, <, >\tcomparación\n"
 "    \t==, !=\t\tequivalencia, inequivalencia\n"
-"    \t&\t\tAND de bits\n"
-"    \t^\t\tXOR de bits\n"
-"    \t|\t\tOR de bits\n"
+"    \t&\t\tAND de varios bit\n"
+"    \t^\t\tXOR de varios bit\n"
+"    \t|\t\tOR de varios bit\n"
 "    \t&&\t\tAND lógico\n"
 "    \t||\t\tOR lógico\n"
 "    \texpr ? expr : expr\n"
@@ -3890,21 +3921,21 @@ msgstr ""
 "    \t+=, -=, <<=, >>=,\n"
 "    \t&=, ^=, |=\tasignación\n"
 "    \n"
-"    Se permiten las variables de shell como operandos.  Se reemplaza\n"
-"    el nombre de la variable por su valor (coercionado a un entero\n"
-"    de longitud fija) dentro de una expresión.  La variable no\n"
-"    necesita tener activado su atributo integer para ser usada en\n"
-"    una expresión.\n"
+"    Se permiten las variables de shell como operandos.  El nombre\n"
+"    de la variable se reemplaza por su valor (coercionado a un\n"
+"    entero de longitud fija) dentro de una expresión.  La variable\n"
+"    no necesita tener activado su atributo entero para emplearse\n"
+"    en una expresión.\n"
 "    \n"
 "    Los operadores se evalúan en orden de prioridad.  Primero se\n"
 "    evalúan las sub-expresiones en paréntesis y pueden sobrepasar\n"
 "    las reglas de prioridad anteriores.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Si el último ARGumento se evalúa como 0, let devuelve 1; de otra\n"
-"    forma, let devuelve 0."
+"    Estado de Salida:\n"
+"    Si el último ARGumento se evalúa como 0, ‘let’ devuelve 1; de\n"
+"    otra forma, ‘let’ devuelve 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3926,7 +3957,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3971,36 +4002,37 @@ msgstr ""
 "    \n"
 "    Opciones:\n"
 "      -a matriz\tasigna las palabras leídas a índices secuenciales de\n"
-"    \tla variable de matriz MATRIZ, empezando en cero\n"
+"    \t\tla variable matricial MATRIZ, empezando en cero\n"
 "      -d delim\tcontinúa hasta que se lea el primer carácter de DELIM,\n"
 "    \t\ten lugar de línea nueva\n"
-"      -e\t\tusa Readline para obtener la línea en un shell interactivo\n"
-"      -i texto\tUsa el TEXTO como el texto inicial para Readline\n"
-"      -n ncars\tregresa después de leer NCARS caracteres en lugar de\n"
+"      -e\tusa Readline para obtener la línea en un shell interactivo\n"
+"      -i texto\tEmplea el TEXTO como el texto inicial para Readline\n"
+"      -n ncars\tregresa tras leer NCARS caracteres en lugar de\n"
 "    \t\tesperar una línea nueva, pero honra a un delimitador si\n"
 "    \t\tse leen menos de NCARS caracteres antes del delimitador\n"
 "      -N ncars\tdevuelve sólo después de leer exactamente NCARS\n"
 "    \t\tcaracteres, a menos que se encuentre el fin del fichero\n"
 "    \t\to expire la lectura, descartando cualquier delimitador\n"
-"      -p prompt\tmuestra la cadena PROMPT sin un caractér de línea nueva\n"
+"      -p prompt\tsale la cadena PROMPT sin un carácter de línea nueva\n"
 "    \t\tal final antes de intentar leer\n"
 "      -r\t\tno permite que las barras invertidas escapen caracteres\n"
 "      -s\t\tno muestra la salida que proviene de una terminal\n"
 "      -t tiempo\texpira y devuelve fallo si no se lee una línea completa\n"
 "    \t\tde entrada en TIEMPO segundos.  El valor de la variable TMOUT\n"
 "    \t\tes el tiempo de expiración por defecto.  TIEMPO puede ser un\n"
-"    \t\tnúmero fraccionario.  Si TIEMPO es 0, read devuelve con éxito\n"
+"    \t\tnúmero fraccionario.  Si TIEMPO es 0, ‘read’ devuelve correcto\n"
 "    \t\tsólo si hay entrada disponible en el descriptor de fichero\n"
 "    \t\tespecificado.  El estado de salida es mayor que 128 si se excede\n"
 "    \t\tel tiempo de expiración.\n"
 "      -u df\t\tlee del descriptor de fichero DF en lugar de la entrada\n"
-"    \t\testándar    \n"
+"    \t\testándar\n"
+"    \n"
 "    Estado de Salida:\n"
 "    El código de devolución es cero, a menos que se encuentre un final de\n"
-"    línea, el tiempo de read expire, o se proporcione un descriptor de\n"
-"    fichero inválido como el argumento de -u."
+"    línea, el tiempo de lectura se agote, o se proporcione un descriptor\n"
+"    de fichero inválido como el argumento de -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4013,17 +4045,16 @@ msgid ""
 msgstr ""
 "Devuelve de una función de shell.\n"
 "    \n"
-"    Causa que una función o un guión leído termine con el valor de "
-"devolución\n"
-"    especificado por N.  Si se omite N, el estado de devolución es el de\n"
-"    la última orden ejecutada dentro de la función o guión.\n"
+"    Causa que una función o un script leído termine con el valor devuelto\n"
+"    especificado por N.  Si se omite N, el estado devuelto es el de la "
+"última\n"
+"    orden ejecutada dentro de la función o script.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve N, o falla si el shell no está ejecutando una función o un "
-"guión."
+"script."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4111,7 +4142,7 @@ msgstr ""
 "Establece o borra los valores de las opciones de shell y los parámetros\n"
 "posicionales.\n"
 "    \n"
-"    Cambia el valor de los atributos de shell y los parámetros "
+"    Modifica el valor de los atributos de shell y los parámetros "
 "posicionales,\n"
 "    o muestra los nombres y valores de las variables de shell.\n"
 "    \n"
@@ -4127,12 +4158,11 @@ msgstr ""
 "          orden, no solo aquellos que preceden al nombre de la orden.\n"
 "      -m  Activa el control de trabajos.\n"
 "      -n  Lee órdenes pero no las ejecuta.\n"
-"      -o nombre-opcion\n"
-"          Establece la variable correspondiente a nombre-opcion:\n"
+"      -o nombre-opción\n"
+"          Establece la variable correspondiente a nombre-opción:\n"
 "              allexport    igual que -a\n"
 "              braceexpand  igual que -B\n"
-"              emacs        usa una interfaz de edición de línea estilo "
-"emacs\n"
+"              emacs        usa una interfaz de edición lineal estilo emacs\n"
 "              errexit      igual que -e\n"
 "              errtrace     igual que -E\n"
 "              functrace    igual que -T\n"
@@ -4153,16 +4183,14 @@ msgstr ""
 "              nounset      igual que -u\n"
 "              onecmd       igual que -t\n"
 "              physical     igual que -P\n"
-"              pipefail     el valor de devolución de una tubería es el "
-"estado\n"
-"                           del último comando en salir con un estado "
+"              pipefail     el valor de retorno de una tubería es el estado\n"
+"                           de la última orden que sale con un estado "
 "diferente\n"
 "                           de cero, o cero si ninguna orden termina con un\n"
 "                           estado diferente de cero\n"
-"              posix        cambia el comportamiento de bash donde la "
-"operación\n"
-"                           por defecto difiere del estándar Posix para que\n"
-"                           coincida con el estándar\n"
+"              posix        modifica el comportamiento de bash donde la\n"
+"                           operación por defecto difiere del estándar POSIX\n"
+"                           para que coincida con el estándar\n"
 "              privileged   igual que -p\n"
 "              verbose      igual que -v\n"
 "              vi           usa una interfaz de edición de línea estilo vi\n"
@@ -4203,10 +4231,9 @@ msgstr ""
 "    se proporciona ningún ARG, se muestran todas las variables del shell.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida."
+"    Devuelve correcto a menos que se proporcione una opción inválida."
 
-#: builtins.c:1132
-#, fuzzy
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4234,6 +4261,8 @@ msgstr ""
 "    Opciones:\n"
 "      -f\ttrata cada NOMBRE como una función de shell\n"
 "      -v\ttrata cada NOMBRE como una variable de shell\n"
+"      -n\ttrata cada NOMBRE como una referencia de nombre y desasigna\n"
+"    \t\tla propia variable, no aquella a la que hace referencia\n"
 "    \n"
 "    Sin opciones, unset primero trata de borrar una variable, y si falla,\n"
 "    trata de borrar una función.\n"
@@ -4241,10 +4270,10 @@ msgstr ""
 "    Algunas variables no se pueden borrar; también consulte `readonly'.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
 "    un NOMBRE sea de sólo lectura."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4277,11 +4306,10 @@ msgstr ""
 "    El argumento `--' desactiva el procesamiento posterior de opciones.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o que\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o que\n"
 "    NOMBRE sea inválido."
 
-#: builtins.c:1173
-#, fuzzy
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4309,19 +4337,20 @@ msgstr ""
 "    un VALOR, se asigna el VALOR antes de marcar como de sólo lectura.\n"
 "    \n"
 "    Opciones:\n"
-"      -a\tse refiere a variables de matriz indizada\n"
+"      -a\tse refiere a variables de matriz indexada\n"
 "      -A\tse refiere a variables de matriz asociativa\n"
 "      -f\tse refiere a funciones de shell\n"
 "      -p\tmuestra una lista de todas las variables y funciones de sólo "
-"lectura\n"
+"lectura,\n"
+"    \t\tdependiendo de si se pone o no la opción -f\n"
 "    \n"
 "    El argumento `--' desactiva el procesamiento posterior de opciones.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
 "    el NOMBRE sea inválido."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4337,9 +4366,9 @@ msgstr ""
 "    se proporciona N, se asume que es 1.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que N sea negativo o mayor que $#."
+"    Devuelve correcto a menos que N sea negativo o mayor que $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4359,11 +4388,12 @@ msgstr ""
 "    Si se proporciona ARGUMENTOS, se convierten en los parámetros "
 "posicionales\n"
 "    cuando se ejecuta el FICHERO.\n"
+"    \n"
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n"
 "    no se puede leer el FICHERO."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4386,11 +4416,10 @@ msgstr ""
 "      -f\tfuerza la suspensión, aún si el shell es un shell de entrada\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que no esté activo el control de trabajos o\n"
+"    Devuelve correcto a menos que no esté activo el control de trabajos o\n"
 "    suceda un error."
 
-#: builtins.c:1254
-#, fuzzy
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4480,7 +4509,8 @@ msgstr ""
 "    de un fichero.  Hay también operadores de cadenas, y operadores de\n"
 "    comparación numérica.\n"
 "    \n"
-"    La conducta de test depende del número de arcumentos.  Lea la página\n"
+"    El comportamiento de test depende del número de argumentos.  Lea la "
+"página\n"
 "    de manual de bash para la especificación completa.\n"
 "    \n"
 "    Operadores de fichero:\n"
@@ -4540,8 +4570,10 @@ msgstr ""
 "    \n"
 "      -o OPCIÓN      Verdadero si la opción del shell OPCIÓN está activada.\n"
 "      -v VAR         Verdadero si la variable de shell VAR está activada.\n"
+"      -R VAR         Verdadero si la variable VAR está activada y es una\n"
+"                       referencia de nombre\n"
 "      ! EXPR         Verdadero si expr es falso.\n"
-"      EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 are son verdaderas.\n"
+"      EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 son ambas verdaderas.\n"
 "      EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera.\n"
 "    \n"
 "      arg1 OP arg2   Pruebas aritméticas.  OP es uno de -eq, -ne,\n"
@@ -4551,10 +4583,10 @@ msgstr ""
 "    igual, no igual, menor, menor o igual, mayor, mayor o igual que ARG2.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito si EXPR evalúa a verdadero; falla si EXPR evalúa a\n"
+"    Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n"
 "    falso o se proporciona un argumento inválido."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4564,9 +4596,9 @@ msgstr ""
 "Evalúa una expresión condicional.\n"
 "    \n"
 "    Este es un sinónimo para la orden interna \"test\", pero el último\n"
-"    argumento debe ser un `]' literal, que coincida con el `[' inicial."
+"    argumento debe ser un `]' literal, que concuerde con el `[' inicial."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4583,10 +4615,10 @@ msgstr ""
 "todos\n"
 "    sus procesos hijos.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Siempre con éxito."
+"    Estado de Salida:\n"
+"    Siempre correcto."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4631,7 +4663,8 @@ msgid ""
 msgstr ""
 "Atrapa señales y otros eventos.\n"
 "    \n"
-"    Define y activa manejadores a ejecutar cuando el shell recibe señales\n"
+"    Define y activa manejadores para ejecutar cuando el shell recibe "
+"señales\n"
 "    u otras condiciones.\n"
 "    \n"
 "    ARG es una orden para leer y ejecutar cuando el shell recibe la(s)\n"
@@ -4640,13 +4673,13 @@ msgstr ""
 "    reestablece a su valor original.  Si ARG es la cadena nula, el shell\n"
 "    y las órdenes que invoque ignoran cada ID_SEÑAL.\n"
 "    \n"
-"    Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del\n"
-"    shell.  Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada\n"
-"    orden simple.  Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez\n"
-"    que una función de shell o un guión ejecutado por las órdenes internas\n"
-"    . o source termina su ejecución.  Una ID_SEÑAL de ERR significa que\n"
-"    se ejecuta ARG cada vez que la falla de una orden causa que el shell\n"
-"    termine cuando la opción -e está activada.\n"
+"    Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del shell.\n"
+"    Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada orden simple.\n"
+"    Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez que una función de\n"
+"    shell o un script ejecutado por las órdenes internas . o source termina\n"
+"    su ejecución.  Una ID_SEÑAL de ERR conlleva que se ejecute ARG cada vez\n"
+"    que un fallo de una orden provocaría que el shell terminase si la\n"
+"    opción -e está activada.\n"
 "    \n"
 "    Si no se proporcionan argumentos, trap muestra la lista de órdenes\n"
 "    asociadas con cada señal.\n"
@@ -4662,14 +4695,13 @@ msgstr ""
 "    \"kill -signal $$\".    \n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que una ID_SEÑAL sea inválida o se "
+"    Devuelve correcto a menos que una ID_SEÑAL sea inválida o se "
 "proporcione\n"
 "    una opción inválida."
 
 #  No he visto que este fichero incluya la posibilidad de traducir las
 #  palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga
-#: builtins.c:1393
-#, fuzzy
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4700,35 +4732,32 @@ msgid ""
 msgstr ""
 "Muestra información sobre el tipo de orden.\n"
 "    \n"
-"    Por cada NOMBRE, indica cómo se interpretaría si se usa como un nombre\n"
-"    de orden.\n"
+"    Por cada NOMBRE, indica cómo se interpretaría si se utilizara como un\n"
+"    nombre de orden.\n"
 "    \n"
 "    Opciones:\n"
 "      -a\tmuestra todas las ubicaciones que contienen un ejecutable llamado\n"
-"    \tNOMBRE; incluye aliases, órdenes internas, y funciones, solo y solo "
-"si\n"
-"    \tno se usó también la opción `-p'\n"
+"    \t\tNOMBRE; incluye aliases, órdenes internas y funciones, si y solo si\n"
+"    \t\tno se utilizó también la opción `-p'\n"
 "      -f\tsuprime la búsqueda de funciones de shell\n"
-"      -P\tfuerza una búsqueda en PATH por cada nombre, aún si hay un alias,\n"
-"    \torden interna, o función, y devuelve el nombre del fichero en el "
-"disco\n"
-"    \tque se ejecutaría\n"
-"      -p\tdevuelve ya sea el nombre del fichero en disco que se ejecutaría,\n"
-"    \to nada si `type -t NOMBRE' no devuelve `fichero'.\n"
-"      -t\tmuestra una sola palabra, que es una de `alias', `keyword',\n"
-"    \t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n"
-"    \tpalabra reservada del shell, función del shell, orden interna del\n"
-"    \tshell, fichero de disco, o no se encuentra, respectivamente.\n"
+"      -P\tfuerza una búsqueda en PATH por cada nombre, aun si hay un alias,\n"
+"    \t\torden interna o función, y devuelve el nombre del fichero en disco\n"
+"    \t\tque se ejecutaría\n"
+"      -p\tdevuelve el nombre del fichero en disco que se ejecutaría,\n"
+"    \t\to nada si `type -t NOMBRE' no devuelve `fichero'\n"
+"      -t\tsaca una sola palabra, que es una de entre `alias', `keyword',\n"
+"    \t\t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n"
+"    \t\tpalabra reservada del shell, función del shell, orden interna del\n"
+"    \t\tshell, fichero de disco, o no se encuentra, respectivamente.\n"
 "    \n"
 "    Argumentos:\n"
 "      NOMBRE\tNombre de orden a interpretar.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito si se encuentran todos los NOMBREs; falla si no se\n"
-"    encuentra alguno."
+"    Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n"
+"    no se encuentra."
 
-#: builtins.c:1424
-#, fuzzy
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4793,6 +4822,7 @@ msgstr ""
 "      -f\tel tamaño máximo de los ficheros escritos por el shell y sus "
 "hijos\n"
 "      -i\tel número máximo de señales pendientes\n"
+"      -k\tel número máximo de kcolas ubicadas para este proceso\n"
 "      -l\tel tamaño máximo que un proceso puede bloquear en memoria\n"
 "      -m\tel tamaño máximo para las variables residentes\n"
 "      -n\tel número máximo de descriptores de fichero abiertos\n"
@@ -4804,6 +4834,10 @@ msgstr ""
 "      -u\tel número máximo de procesos de usuario\n"
 "      -v\tel tamaño de la memoria virtual\n"
 "      -x\tel número máximo de bloqueos de ficheros\n"
+"      -P\tel número máximo de pseudoterminales\n"
+"      -T\tel número máximo de hilos\n"
+"    \n"
+"    No todas las opciones están disponibles en todas las plataformas.\n"
 "    \n"
 "    Si se establece LÍMITE, éste es el nuevo valor del recurso "
 "especificado;\n"
@@ -4817,12 +4851,12 @@ msgstr ""
 "    es en segundos, -p, el cual es en incrementos de 512 bytes, y -u, el\n"
 "    cual es un número de procesos sin escala.\n"
 "    \n"
-"    Estado de salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o "
+"    Estado de Salida:\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o "
 "suceda\n"
 "    un error."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4853,10 +4887,10 @@ msgstr ""
 "      -S\tsalida simbólica; de otra forma muestra el modo como número octal\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que el MODO sea inválido o se proporcione\n"
+"    Devuelve correcto a menos que el MODO sea inválido o se proporcione\n"
 "    una opción inválida."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4865,13 +4899,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4879,8 +4915,9 @@ msgstr ""
 "Espera la terminación del trabajo y devuelve el estado de salida.\n"
 "    \n"
 "    Espera al proceso identificado por ID, el cual puede ser un ID de\n"
-"    proceso o una especificación de trabajo, y reporta su estado de salida.\n"
-"    Si no se proporciona un ID, espera a todos los procesos hijo activos,\n"
+"    proceso o una especificación de trabajo e informa de su estado de "
+"salida.\n"
+"    Si no se proporciona un ID, espera a todos los procesos hijos activos,\n"
 "    y el estado de devolución es cero.  Si ID es una especificación de\n"
 "    trabajo, espera a todos los procesos en la cola de trabajos.\n"
 "    \n"
@@ -4888,8 +4925,7 @@ msgstr ""
 "    Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n"
 "    opción inválida."
 
-#: builtins.c:1515
-#, fuzzy
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4903,17 +4939,19 @@ msgid ""
 "invalid\n"
 "    option is given."
 msgstr ""
-"Espera la terminación del trabajo y devuelve el estado de salida.\n"
+"Espera la terminación del proceso y devuelve el estado de salida.\n"
 "    \n"
-"    Espera al proceso especificado y reporta su estado de salida.  Si\n"
-"    no se proporciona un PID, espera a todos los procesos hijo activos,\n"
-"    y el código de devolución es cero.  PID debe ser un ID de proceso.\n"
+"    Espera a cada proceso especificado por un PID y reporta su\n"
+"    estado de salida.  Si no se proporciona un PID, espera a todos los\n"
+"    procesos hijos activos, y el código de devolución es cero.\n"
+"    El PID debe ser un ID de proceso.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n"
-"    opción inválida."
+"    Devuelve el estado del último PID; falla si PID es inválido o se "
+"proporciona\n"
+"    una opción inválida."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4927,7 +4965,7 @@ msgid ""
 msgstr ""
 "Ejecuta órdenes por cada miembro en una lista.\n"
 "    \n"
-"    El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en\n"
+"    El bucle `for' ejecuta una secuencia de órdenes para cada miembro en\n"
 "    una lista de elementos.  Si `in PALABRAS ...;' no está presente,\n"
 "    entonces se asume `in \"$@\"'.  Para cada elemento en PALABRAS,\n"
 "    se define NOMBRE como ese elemento, y se ejecutan las ÓRDENES.\n"
@@ -4935,7 +4973,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4951,7 +4989,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
-"Aritmética para un ciclo.\n"
+"Aritmétical de bucle for.\n"
 "    \n"
 "    Equivalente a\n"
 "    \t(( EXP1 ))\n"
@@ -4960,12 +4998,12 @@ msgstr ""
 "    \t\t(( EXP3 ))\n"
 "    \tdone\n"
 "    EXP1, EXP2, y EXP3 son expresiones aritméticas.  Si se omite\n"
-"    cualquier expresión, se comporta como si se evaluara a 1.\n"
+"    cualquiera de ellas, se comporta como si se evaluara a 1.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5002,7 +5040,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5029,7 +5067,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    El estado de devolución es el estado de devolución de la TUBERÍA."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5047,7 +5085,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5075,15 +5113,14 @@ msgstr ""
 "cero,\n"
 "    se ejecuta la lista `then ÓRDENES' correspondiente y se completa la\n"
 "    orden if.  De otra forma, se ejecuta la lista `else ÓRDENES', si está\n"
-"    presente.  El estado de salida de toda la construcción es el estado de\n"
-"    salida de la última orden ejecutada, o cero si ninguna condición "
-"resultó\n"
+"    presente.  El estado de salida del bloque entero es el estado saliente\n"
+"    de la última orden ejecutada, o cero si ninguna condición resultó\n"
 "    verdadera.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5093,7 +5130,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
-"Ejecuta órdenes mientras una prueba tenga éxito.\n"
+"Ejecuta órdenes mientras una prueba sea correcta.\n"
 "    \n"
 "    Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n"
 "    `while' tenga un estado de salida de cero.\n"
@@ -5101,7 +5138,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5111,7 +5148,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
-"Ejecuta órdenes mientras una prueba no tenga éxito.\n"
+"Ejecuta órdenes mientras una prueba sea correcta.\n"
 "    \n"
 "    Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n"
 "    `until' tengan un estado de salida que no sea cero.\n"
@@ -5119,8 +5156,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5134,17 +5170,16 @@ msgid ""
 msgstr ""
 "Crea un coproceso llamado NOMBRE.\n"
 "    \n"
-"    Ejecuta la ORDEN asíncronamente, con la salida estándar y la entrada\n"
-"    estándar de la orden contectada a través de una tubería a los "
-"descriptores\n"
-"    de fichero asignados a los índices 0 y 1 de una variable de matriz "
-"NOMBRE\n"
-"    en el shell en ejecución.  El nombre por defecto es \"COPROC\".\n"
+"    Ejecuta la ORDEN asíncronamente, con la salida y la entrada estándar\n"
+"    de la orden conectadas a través de una tubería a los descriptores\n"
+"    de fichero asignados a los índices 0 y 1 de una variable de matriz\n"
+"    NOMBRE en el shell en ejecución.  El nombre por defecto es\n"
+"    \"COPROC\".\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve el estado de salida de la ORDEN."
+"    La orden «coproc» devuelve un estado de salida de 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5160,14 +5195,14 @@ msgstr ""
 "Define una función de shell.\n"
 "    \n"
 "    Crea una función de shell llamada NOMBRE.  Cuando se invoca como una\n"
-"    orden simple, NOMBRE ejecuta ÓRDENES en el contexto del shell que lo\n"
-"    llamó.  Cuando se invoca NOMBRE, los argumentos se pasan a la función\n"
-"    como $1...$n, y el nombre de la función está en $FUNCNAME.\n"
+"    orden simple, NOMBRE ejecuta ORDENes en el contexto del shell\n"
+"    que lo llamó.  Cuando se invoca NOMBRE, los argumentos se pasan a la\n"
+"    función como $1...$n, y el nombre de la función está en $FUNCNAME.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que NOMBRE sea de sólo lectura"
+"    Devuelve correcto a menos que NOMBRE sea de sólo lectura."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5179,13 +5214,13 @@ msgid ""
 msgstr ""
 "Agrupa órdenes como una unidad.\n"
 "    \n"
-"    Ejecuta un conjunto de órdenes en un grupo.  Esta es una forma de\n"
-"    redirigir un conjunto completo de órdenes.\n"
+"    Ejecuta un conjunto de órdenes en un grupo.  Esta es una\n"
+"    forma de redirigir un conjunto completo de órdenes.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve el estado de la última orden ejecutada."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5203,14 +5238,14 @@ msgstr ""
 "    Equivalente al argumento IDTRABAJO de la orden `fg'.  Reinicia un\n"
 "    trabajo detenido o en segundo plano.  IDTRABAJO puede especificar\n"
 "    un nombre de trabajo o un número de trabajo.  Un `&' a continuación\n"
-"    de IDTRABAJO coloca al trabajo en segundo plano, como si la\n"
+"    de IDTRABAJO coloca a el trabajo en segundo plano, como si la\n"
 "    especificación del trabajo se hubiera proporcionado como\n"
 "    un argumento de `bg'.\n"
 "    \n"
 "    Estado de Salida:\n"
 "    Devuelve el estado del trabajo reiniciado."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5228,7 +5263,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5264,7 +5299,7 @@ msgstr ""
 "    combinar usando los siguientes operadores:\n"
 "    \n"
 "      ( EXPRESIÓN )\tDevuelve el valor de la EXPRESIÓN\n"
-"      ! EXPRESIÓN\tVerdadero si la EXPRESIÓN es falsa; de otra forma es "
+"      ! EXPRESIÓN\t\tVerdadero si la EXPRESIÓN es falsa; de otra forma es "
 "falso\n"
 "      EXPR1 && EXPR2\tVerdadero si EXPR1 y EXPR2 son verdaderos; de\n"
 "    \t\totra forma es falso\n"
@@ -5281,7 +5316,7 @@ msgstr ""
 "    Estado de Salida:\n"
 "    0 o 1 dependiendo del valor de la EXPRESIÓN."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5344,17 +5379,17 @@ msgstr ""
 "    \t\tde rutas de nombre.\n"
 "    HISTFILE\tEl nombre del fichero donde se almacena su historia\n"
 "    \t\tde órdenes.\n"
-"    HISTFILESIZE\tEl número máximo de líneas que puede contener\n"
+"    HISTFILESIZE\t El número máximo de líneas que puede contener\n"
 "    \t\teste fichero.\n"
-"    HISTSIZE\tEl número máximo de líneas de líneas de historia que\n"
-"    \t\tun shell en ejecución puede acceder.\n"
+"    HISTSIZE\t El número máximo de líneas de historia que un shell\n"
+"    \t\ten ejecución puede acceder.\n"
 "    HOME\tLa ruta completa a su directorio de entrada.\n"
 "    HOSTNAME\tEl nombre del anfitrión actual.\n"
-"    HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión de\n"
-"    \t\tBash.\n"
+"    HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión\n"
+"    \t\tde Bash.\n"
 "    IGNOREEOF\tControla la acción del shell al recibir un carácter\n"
-"    \t\tEOF como la única entrada.  Si está definida, entonces su\n"
-"    \t\tvalor es el número de caracteres EOF que se deben leer de\n"
+"    \t\tFDL como la única entrada.  Si está definida, entonces su\n"
+"    \t\tvalor es el número de caracteres FDL que se deben leer de\n"
 "    \t\tforma consecutiva en una línea vacía antes de que el shell\n"
 "    \t\ttermine (por defecto 10).  Cuando no está definida, EOF\n"
 "    \t\tsignifica el fin de la entrada.\n"
@@ -5377,27 +5412,26 @@ msgstr ""
 "    TERM\tEl nombre del tipo actual de terminal.\n"
 "    TIMEFORMAT\tEl formato de salida para las estadísticas de tiempo\n"
 "    \t\tmostradas por la palabra reservada `time'.\n"
-"    auto_resume\tSi no es nulo significa que una palabra de orden que\n"
-"    \t\taparece en una línea por sí sola se busca primero en la lista\n"
-"    \t\tactual de trabajos detenidos.  Si se encuentra ahí, ese\n"
-"    \t\ttrabajo se coloca en primer plano.  Un valor `exact' significa\n"
-"    \t\tque la palabra de orden debe coincidir exactamente con una\n"
-"    \t\torden en la lista de trabajos detenidos.  Un valor `substring'\n"
-"    \t\tsignifica que la palabra de orden debe coincidir con una\n"
-"    \t\tsubcadena del trabajo.  Cualquier otro valor significa que\n"
-"    \t\tla orden debe ser un prefijo de un trabajo detenido.\n"
+"    auto_resume\tSi no es nulo significa que una palabra de orden\n"
+"    \t\tque aparece en una línea por sí sola se busca primero en la lista\n"
+"    \t\tactual de trabajos detenidos.  Si se encuentra ahí, esetrabajo\n"
+"    \t\tse coloca en primer plano.  Un valor `exact' significa que la\n"
+"    \t\tpalabra de orden debe coincidir exactamente con una\n"
+"    \t\torden de la lista de trabajos detenidos.  Un valor\n"
+"    \t\t`substring' significa que la palabra de orden debe coincidir\n"
+"    \t\tcon una subcadena del trabajo.  Cualquier otro valor significa\n"
+"    \t\tque la orden debe ser un prefijo de un trabajo detenido.\n"
 "    histchars\tLos caracteres que controlan la expansión de historia\n"
-"    \t\ty la sustitución rápida.  El primer carácter es el\n"
-"    \t\tcarácter de sustitución de historia, generalmente `!'.  El\n"
-"    \t\tsegundo es el carácter de `sustitución rápida', generalmente\n"
-"    \t\t`^'.  El tercero es el carácter `comentario de historia',\n"
-"    \t\tgeneralmente `#'.\n"
-"    HISTIGNORE\tUna lista separada por dos puntos de patrones usados\n"
-"    \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n"
-"    \t\thistoria.\n"
-
-#: builtins.c:1803
-#, fuzzy
+"    \t\ty la sustitución rápida.  El primer carácter es el carácter de\n"
+"    \t\tsustitución de historia, generalmente `!'.  El segundo es el\n"
+"    \t\tcarácter de `sustitución rápida', generalmente `^'.  El tercero\n"
+" \n"
+"    \t\tes el carácter `comentario de historia', generalmente `#'.\n"
+"    HISTIGNORE\tUna lista separada por dos puntos de patrones\n"
+"    \t\tutilizados para decidir qué órdenes se deben guardar en\n"
+"    \t\tel listado histórico.\n"
+
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5429,35 +5463,36 @@ msgid ""
 msgstr ""
 "Agrega directorios a la pila.\n"
 "    \n"
-"    Agrega un directorio al tope de la pila de directorios, o rota\n"
-"    la pila, haciendo que el nuevo tope de la pila sea el\n"
+"    Agrega un directorio por la parte superior de la pila de directorios\n"
+"    o rota la pila, haciendo que el nuevo elemento superior de la pila sea "
+"el\n"
 "    directorio de trabajo actual.  Sin argumentos, intercambia\n"
-"    los dos directorios del tope.\n"
+"    los dos directorios de la parte superior.\n"
 "    \n"
 "    Opciones:\n"
 "      -n\tsuprime el cambio normal de directorio cuando se agregan\n"
-"    \tdirectorios a la pila, así sólo se manipula la pila.\n"
+"    \t\tdirectorios a la pila, así sólo se manipula la pila.\n"
 "    \n"
 "    Argumentos:\n"
 "      +N\tRota la pila para que el N-ésimo directorio (contando\n"
-"    \tde la izquierda de la lista mostrada por `dirs',comenzando\n"
-"    \tdesde cero) esté en el tope.\n"
+"    \t\tdesde la izquierda de la lista mostrada por `dirs', comenzando\n"
+"    \t\tdesde cero) esté en la parte superior.\n"
 "    \n"
-"      -N\tRota la pila para que el N-ésimo directorio (contando\n"
-"    \tde la derecha de la lista mostrada por `dirs', comenzando\n"
-"    \tdesde cero) esté en el tope.\n"
+"      -N\tRota la pila para que el N-ésimo directorio (contando desde\n"
+"    \t\tla derecha de la lista mostrada por `dirs', comenzando\n"
+"    \t\tdesde cero) esté en la parte superior.\n"
 "    \n"
-"      dir\tagrega DIR a la pila de directorios en el tope,\n"
-"    \thaciéndolo el nuevo directorio de trabajo actual.\n"
+"      dir\tAgrega DIR la pila de directorios por la parte superior, "
+"haciendo\n"
+"    \t\tde él el nuevo directorio de trabajo actual.\n"
 "    \n"
 "    La orden interna `dirs' muestra la pila de directorios.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione un argumento inválido o\n"
-"    falle el cambio de directorio."
+"    Devuelve correcto a menos que se proporcione un argumento\n"
+"    inválido o falle el cambio de directorio."
 
-#: builtins.c:1837
-#, fuzzy
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5486,33 +5521,32 @@ msgstr ""
 "Borra directorios de la pila.\n"
 "    \n"
 "    Borra entradas de la pila de directorios.  Sin argumentos,\n"
-"    borra el directorio del tope de la pila, y cambia al\n"
-"    nuevo directorio tope.\n"
+"    borra el directorio del tope de la pila, y cambia al nuevo\n"
+"    directorio tope.\n"
 "    \n"
 "    Opciones:\n"
-"      -n\tsuprime el cambio normal de directorio cuando se borran\n"
-"    \tdirectorios de la pila, así sólo se manipula la pila.\n"
+"      -n\tSuprime el cambio normal de directorio cuando se borran\n"
+"    \t\tdirectorios de la pila; así sólo se manipula la pila.\n"
 "    \n"
 "    Argumentos:\n"
 "    \n"
-"      +N\tBorra la N-ésima entrada contando de la izquierda de\n"
-"    \tla lista mostrada por `dirs', comenzando desde cero.\n"
-"    \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n"
-"    \tel segundo.\n"
+"      +N\tBorra la N-ésima entrada contando desde la izquierda de\n"
+"    \t\tla lista mostrada por `dirs', comenzando por cero. Por\n"
+"    \t\tejemplo: `popd +0' borra el primer directorio, `popd +1'\n"
+"    \t\tel segundo.\n"
 "    \n"
-"      -N\tBorra la N-ésima entrada contando de la derecha de\n"
-"    \tla lista mostrada por `dirs', comenzando desde cero.\n"
-"    \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n"
-"    \tel penúltimo.\n"
+"      -N\tBorra la N-ésima entrada contando desde la derecha de\n"
+"    \t\tla lista mostrada por `dirs', comenzando por cero. Por\n"
+"    \t\tejemplo: `popd -0' borra el último directorio, `popd -1'\n"
+"    \t\tel penúltimo.\n"
 "    \n"
-"    La orden interna `dirs' muestra el contenido de la pila.\n"
+"    La orden interna `dirs' muestra la pila de directorios.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione un argumento inválido o\n"
-"    falle el cambio de directorio."
+"    Devuelve correcto a menos que se proporcione un\n"
+"    argumento inválido o falle el cambio de directorio."
 
-#: builtins.c:1867
-#, fuzzy
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5547,35 +5581,34 @@ msgstr ""
 "    la lista con la orden `popd'.\n"
 "    \n"
 "    Opciones:\n"
-"    \n"
 "      -c\tlimpia la pila de directorios, eliminando todos sus elementos.\n"
 "      -l\tno muestra versiones con prefijo de tilde de los directorios\n"
-"    \trelativos a su directorio inicial.\n"
+"    \t\trelativos a su directorio inicial.\n"
 "      -p\tmuestra la pila de directorios con una entrada por línea\n"
 "      -v\tmuestra la pila de directorios con una entrada por línea con\n"
-"    \tsu posición en la pila como prefijo\n"
+"    \t\tsu posición en la pila como prefijo\n"
 "    \n"
-"    Argumentos:      +N\tmuestra la N-ésima entrada contando desde la "
-"izquierda de la lista\n"
-"    \tmostrada por dirs cuando se invoca sin opciones,\n"
-"    \tempezando de cero.\n"
+"    Argumentos:\n"
+"      +N\tmuestra la N-ésima entrada contando desde\n"
+"    \t\tla izquierda de la lista mostrada por dirs cuando se invoca sin\n"
+"    \t\topciones, empezando de cero.\n"
 "    \n"
-"      -N\tmuestra la N-ésima entrada contando desde la derecha de la lista\n"
-"    \tmostrada por dirs cuando se invoca sin opciones,\n"
-"    \tempezando de cero.\n"
+"      -N\tmuestra la N-ésima entrada contando desde la izquierda de la\n"
+"    \t\tlista mostrada por dirs cuando se invoca sin opciones, empezando\n"
+"    \t\tdesde cero.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito, a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto, a menos que se proporcione una opción inválida o\n"
 "    suceda un error."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5602,11 +5635,10 @@ msgstr ""
 "      -u\tdesactiva (borra) cada NOMBRE_OPCIÓN\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito si se activa NOMBRE_OPCIÓN; falla si se proporciona\n"
+"    Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n"
 "    una opción inválida o NOMBRE_OPCIÓN está desactivado."
 
-#: builtins.c:1919
-#, fuzzy
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5663,16 +5695,22 @@ msgstr ""
 "    \n"
 "      %b\texpande las secuencias de escape de barra invertida en\n"
 "            el argumento correspondiente\n"
-"      %q\tcita el argumento de tal forma que se puede reusar como\n"
+"      %q\tcita el argumento de tal forma que se pueda reutilizar como\n"
 "            entrada del shell.\n"
 "      %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n"
 "            una cadena de formato para strftime(3)\n"
 "    \n"
+"    El formato se reutiliza según sea necesario para consumir todos los\n"
+"    argumentos.  Si hay menos argumentos de los que el formato requiere,\n"
+"    las especificaciones de formato adicionales se comportan como si un "
+"valor\n"
+"    cero o una cadena nula, lo que sea apropiado, se hubiera proporcionado.\n"
+"    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
 "    suceda un error de escritura o de asignación."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5691,10 +5729,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5708,24 +5750,24 @@ msgstr ""
 "    \n"
 "    Opciones:\n"
 "      -p\tmuestra las especificaciones de completado existentes en formato\n"
-"    \treusable\n"
-"      -r\tborra una especificación de completado para cada NOMBRE,\n"
-"    \to, si no se proporcionan NOMBREs, todas las especificaciones\n"
-"    \tde completado\n"
+"    \t\treusable\n"
+"      -r\tborra una especificación de completado para cada NOMBRE o,\n"
+"    \t\tsi no se proporcionan NOMBREs, todas las especificaciones\n"
+"    \t\tde completado\n"
 "      -D\taplica los completados y acciones por defecto para las órdenes\n"
-"    \tsin ninguna especificación de completado definida\n"
+"    \t\tsin ninguna especificación de completado definida\n"
 "      -E\taplica los completados y acciones para órdenes \"vacías\" --\n"
-"    \tcuando se intenta completar en una línea en blanco\n"
+"    \t\tcuando se intenta completar en una línea en blanco\n"
 "    \n"
-"    Cuando se intenta el completado, las acciones se aplican en el orden en\n"
-"    que se enlistan las opciones de letra mayúscula antes indicadas.  La\n"
+"    Cuando se intenta el completado, las acciones se aplican en el orden\n"
+"    en que se listan las opciones de letra mayúscula antes indicadas.  La\n"
 "    opción -D tiene precedencia sobre -E.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
 "    suceda un error."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5744,10 +5786,11 @@ msgstr ""
 "    las coincidencias contra PALABRA.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
 "    suceda un error."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5762,6 +5805,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5780,32 +5824,30 @@ msgstr ""
 "Modifica o muestra las opciones de completado.\n"
 "    \n"
 "    Modifica las opciones de completado para cada NOMBRE, o, si no se\n"
-"    proporcionan NOMBREs, el completado actualmente en ejecución.  Si no se\n"
-"    proporcionan OPCIONes, muestra las opciones de completado para cada\n"
-"    NOMBRE o la especificación de completado actual.\n"
+"    proporcionan NOMBREs, el completado actualmente en ejecución.  Si no\n"
+"    se proporcionan OPCIONes, muestra las opciones de completado para\n"
+"    cada NOMBRE o la especificación de completado actual.\n"
+"    \n"
 "    Opciones:\n"
-"    \t-o opción\tEstablece la opción de completado OPCIÓN\n"
-"    \t\tpara cada NOMBRE\n"
+"    \t-o opción\tEstablece la opción de completado OPCIÓN para cada NOMBRE\n"
 "    \t-D\t\tCambia las opciones para el completado de orden \"por defecto\"\n"
 "    \t-E\t\tCambia las opciones para el completado de orden \"vacía\"\n"
 "    \n"
-"    Si usa `+o' en lugar de `-o' desactiva la opción especificada.\n"
+"    Si se usa `+o' en lugar de `-o', desactiva la opción especificada.\n"
 "    \n"
 "    Argumentos:\n"
 "    \n"
 "    Cada NOMBRE se refiere a una orden para la cual se definió previamente\n"
 "    una especificación de completado usando la orden interna `complete'.\n"
-"    Si no se proporcionan NOMBREs, se debe llamar a compopt desde una "
-"función\n"
-"    que genere completados, y se modifican las opciones para ese generador\n"
-"    de completados en ejecución.\n"
+"    Si no se proporcionan NOMBREs, se debe llamar a ‘compopt’ desde una\n"
+"    función que genere completados actualmente y se modifican las opciones\n"
+"    para ese generador de completados actualmente en ejecución.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
-"    el NOMBRE no tenga una especificación de completado definida."
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
+"    NOMBRE no tenga una especificación de completado definida."
 
-#: builtins.c:2026
-#, fuzzy
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5846,29 +5888,32 @@ msgid ""
 "or\n"
 "    not an indexed array."
 msgstr ""
-"Lee líneas de un fichero y las guarda en una variable de matriz indizada.\n"
+"Lee líneas de un fichero y las guarda en una variable de matriz indexada.\n"
 "    \n"
 "    Lee líneas de la entrada estándar y las guarda en la variable de matriz\n"
-"    indizada MATRIZ, o desde el descriptor de fichero DF si se proporciona\n"
+"    indexada MATRIZ, o desde el descriptor de fichero DF si se proporciona\n"
 "    la opción -u.  La variable MAPFILE es la MATRIZ por defecto.\n"
 "    \n"
 "    Opciones:\n"
-"      -n cuenta\tCopia hasta CUENTA líneas.  Si CUENTA es 0, se copian\n"
-"    \ttodas las líneas.\n"
+"      -d delim\tUtiliza DELIM para finalizar las líneas en lugar de nueva "
+"línea\n"
+"      -n cuenta\tCopia hasta CUENTA líneas.  Si CUENTA es 0, se copian "
+"todas\n"
 "      -O origen\tComienza a asignar a MATRIZ en el índice ORIGEN.  El\n"
-"    \tíndice por defecto es 0.\n"
-"      -s cuenta \tDescarta las primeras CUENTA líneas leídas.\n"
-"      -t\t\tBorra la nueva línea final de cada línea leída.\n"
-"      -u df\t\tLee líneas del descriptor de fichero DF en lugar de la\n"
-"    \tentrada estándar.\n"
+"    \t\t\tíndice por defecto es 0.\n"
+"      -s cuenta\tDescarta las primeras CUENTA líneas leídas.\n"
+"      -t\tBorra el DELIM final de cada línea leída (nuea línea por "
+"defecto).\n"
+"      -u df\tLee líneas del descriptor de fichero DF en lugar de la\n"
+"    \t\t\tentrada estándar.\n"
 "      -C llamada\tEvalúa LLAMADA cada vez que se leen QUANTUM líneas.\n"
 "      -c quantum\tEspecifica el número de líneas a leer entre cada\n"
-"    \tllamada a LLAMADA.\n"
+"    \t\t\tllamada a LLAMADA.\n"
 "    \n"
 "    Argumentos:\n"
-"      MATRIZ\t\tNombre de variable de matriz a usar para guardar datos.\n"
+"      MATRIZ\tNombre de variable de matriz a usar para guardar datos.\n"
 "    \n"
-"    Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n"
+"    Si se proporciona -C sin -c, el quantum por defecto es 5000.  Cuando\n"
 "    se evalúa LLAMADA, se proporciona el índice del siguiente elemento\n"
 "    de la matriz a asignar como un argumento adicional.\n"
 "    \n"
@@ -5876,10 +5921,10 @@ msgstr ""
 "    antes de usarla para asignación.\n"
 "    \n"
 "    Estado de Salida:\n"
-"    Devuelve con éxito a menos que se proporcione una opción inválida o\n"
-"    la MATRIZ sea de sólo lectura o no sea una matriz indizada."
+"    Devuelve correcto a menos que se proporcione una opción inválida o\n"
+"    la MATRIZ sea de sólo lectura o no sea una matriz indexada."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5887,2931 +5932,4 @@ msgid ""
 msgstr ""
 "Lee líneas de un fichero en una variable de matriz.\n"
 "    \n"
-"    Un sinónimo de `mapfile'."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-# Esto podría ser "veces". Mirar el contexto. sv
-# No es veces. times es una orden interna del shell. cfuga
-#~ msgid "times"
-#~ msgstr "times"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licencia GPLv2+: GPL de GNU versión 2 o posterior <http://gnu.org/"
-#~ "licenses/gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
-
-#~ msgid ""
-#~ ".  With EXPR, returns\n"
-#~ "    "
-#~ msgstr ""
-#~ ".  Con EXPR, devuelve\n"
-#~ "    "
-
-#~ msgid ""
-#~ "; this extra information can be used to\n"
-#~ "    provide a stack trace.\n"
-#~ "    \n"
-#~ "    The value of EXPR indicates how many call frames to go back before "
-#~ "the\n"
-#~ "    current one; the top frame is frame 0."
-#~ msgstr ""
-#~ "; esta información adicional se puede usar para\n"
-#~ "    proveer un rastreo de pila.\n"
-#~ "    \n"
-#~ "    El valor de EXPR indica cuántos marcos de llamada retroceder antes "
-#~ "del\n"
-#~ "    marco actual; el marco superior es el marco 0."
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: no se pueden reasignar %lu bytes (%lu bytes asignados)"
-
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: no se pueden reasignar %lu bytes"
-
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr ""
-#~ "xrealloc: %s:%d: no se pueden reasignar %lu bytes (%lu bytes asignados)"
-
-#~ msgid " "
-#~ msgstr " "
-
-#~ msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
-#~ msgstr "Sin EXPR, returns devuelve \"$linea $nombrefichero\".  Con EXPR,"
-
-#~ msgid "returns \"$line $subroutine $filename\"; this extra information"
-#~ msgstr "devuelve \"$linea $subrutina $nombrefichero\"; esta información"
-
-#~ msgid "can be used used to provide a stack trace."
-#~ msgstr "adicional se puede usar para proveer un volcado de pila."
-
-#~ msgid ""
-#~ "The value of EXPR indicates how many call frames to go back before the"
-#~ msgstr ""
-#~ "El valor de EXPR indica cuántos marcos de llamada se debe retroceder"
-
-#~ msgid "current one; the top frame is frame 0."
-#~ msgstr "antes del actual; el marco inicial es el marco 0."
-
-#~ msgid "%s: invalid number"
-#~ msgstr "%s: número inválido"
-
-#~ msgid "Shell commands matching keywords `"
-#~ msgstr "Órdenes del shell que coinciden con las palabras `"
-
-#~ msgid "Display the list of currently remembered directories.  Directories"
-#~ msgstr ""
-#~ "Muestra la lista de directorios actualmente grabados.  Los directorios"
-
-#~ msgid "find their way onto the list with the `pushd' command; you can get"
-#~ msgstr "se guardan en la lista con la orden `pushd'; pueden ir saliendo de"
-
-#~ msgid "back up through the list with the `popd' command."
-#~ msgstr "la lista con la orden `popd'."
-
-#~ msgid ""
-#~ "The -l flag specifies that `dirs' should not print shorthand versions"
-#~ msgstr ""
-#~ "La opción -l especifica que `dirs' no debe mostrar versiones abreviadas"
-
-#~ msgid ""
-#~ "of directories which are relative to your home directory.  This means"
-#~ msgstr ""
-#~ "de los directorios que son relativos a su directorio inicial.  Esto "
-#~ "significa"
-
-#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
-#~ msgstr "que `~/bin' se mostrará como `/homes/bfox/bin'. La opción -v"
-
-#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
-#~ msgstr ""
-#~ "causa que `dirs' imprima la pila de directorios con una entrada por línea,"
-
-#~ msgid ""
-#~ "prepending the directory name with its position in the stack.  The -p"
-#~ msgstr ""
-#~ "anteponiendo la posición en la pila al nombre del directorio.  La opción"
-
-#~ msgid "flag does the same thing, but the stack position is not prepended."
-#~ msgstr "-p hace lo mismo, pero no antepone la posición en la pila."
-
-#~ msgid ""
-#~ "The -c flag clears the directory stack by deleting all of the elements."
-#~ msgstr ""
-#~ "La opción -c limpia la pila de directorios borrando todos sus elementos."
-
-#~ msgid ""
-#~ "+N   displays the Nth entry counting from the left of the list shown by"
-#~ msgstr ""
-#~ "+N   muestra la N-ésima entrada contando desde la izquierda de la lista"
-
-#~ msgid "     dirs when invoked without options, starting with zero."
-#~ msgstr ""
-#~ "     mostrada por dirs cuando se invoca sin opciones, empezando de cero."
-
-#~ msgid ""
-#~ "-N   displays the Nth entry counting from the right of the list shown by"
-#~ msgstr ""
-#~ "-N   muestra la N-ésima entrada contando desde la derecha de la lista"
-
-#~ msgid "Adds a directory to the top of the directory stack, or rotates"
-#~ msgstr "Agrega un directorio al tope de la pila de directorios, o rota"
-
-#~ msgid "the stack, making the new top of the stack the current working"
-#~ msgstr "la pila, haciendo que el nuevo tope de la pila sea el directorio de"
-
-#~ msgid "directory.  With no arguments, exchanges the top two directories."
-#~ msgstr ""
-#~ "trabajo actual.  Sin argumentos, intercambia los dos directorios del tope."
-
-#~ msgid "+N   Rotates the stack so that the Nth directory (counting"
-#~ msgstr "+N   Rota la pila para que el N-ésimo directorio (contando"
-
-#~ msgid "     from the left of the list shown by `dirs', starting with"
-#~ msgstr ""
-#~ "     de la izquierda de la lista mostrada por `dirs', comenzando desde"
-
-#~ msgid "     zero) is at the top."
-#~ msgstr "     cero) esté en el tope."
-
-#~ msgid "-N   Rotates the stack so that the Nth directory (counting"
-#~ msgstr "-N   Rota la pila para que el N-ésimo directory (contando"
-
-#~ msgid "     from the right of the list shown by `dirs', starting with"
-#~ msgstr ""
-#~ "     de la derecha de la lista mostrada por `dirs', comenzando desde"
-
-#~ msgid "-n   suppress the normal change of directory when adding directories"
-#~ msgstr ""
-#~ "-n   suprime el cambio normal de directorio cuando se agregan directorios"
-
-#~ msgid "     to the stack, so only the stack is manipulated."
-#~ msgstr "     a la pila, así sólo se manipula la pila."
-
-#~ msgid "dir  adds DIR to the directory stack at the top, making it the"
-#~ msgstr "dir  agrega DIR a la pila de directorios en el tope, haciéndolo el"
-
-#~ msgid "     new current working directory."
-#~ msgstr "     nuevo directorio de trabajo actual."
-
-#~ msgid "You can see the directory stack with the `dirs' command."
-#~ msgstr "Puede ver la pila de directorios con la orden `dirs'."
-
-#~ msgid "Removes entries from the directory stack.  With no arguments,"
-#~ msgstr "Borra entradas de la pila de directorios.  Sin argumentos,"
-
-#~ msgid "removes the top directory from the stack, and cd's to the new"
-#~ msgstr "borra el directorio del tope de la pila, y cambia al nuevo"
-
-#~ msgid "+N   removes the Nth entry counting from the left of the list"
-#~ msgstr ""
-#~ "+N   borra la N-ésima entrada contando desde la izquierda de la lista"
-
-#~ msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
-#~ msgstr ""
-#~ "     mostrada por `dirs', comenzando desde cero.  Por ejemplo: `popd +0'"
-
-#~ msgid "     removes the first directory, `popd +1' the second."
-#~ msgstr "     borra el primer directorio, `popd +1' el segundo."
-
-#~ msgid "-N   removes the Nth entry counting from the right of the list"
-#~ msgstr "-N   borra la N-ésima entrada contando desde la derecha de la lista"
-
-#~ msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
-#~ msgstr ""
-#~ "     mostrada por `dirs', comenzando desde cero.  Por ejemplo: `popd -0'"
-
-#~ msgid "     removes the last directory, `popd -1' the next to last."
-#~ msgstr "     borra el último directorio, `popd -1' el penúltimo."
-
-#~ msgid ""
-#~ "-n   suppress the normal change of directory when removing directories"
-#~ msgstr ""
-#~ "-n   suprime el cambio normal de directorio cuando se borran directorios"
-
-#~ msgid "     from the stack, so only the stack is manipulated."
-#~ msgstr "     de la pila, así sólo se manipula la pila."
-
-#~ msgid "allocated"
-#~ msgstr "asignado"
-
-#~ msgid "freed"
-#~ msgstr "liberado"
-
-#~ msgid "requesting resize"
-#~ msgstr "solicitando cambio de tamaño"
-
-#~ msgid "just resized"
-#~ msgstr "terminó cambio de tamaño"
-
-#~ msgid "bug: unknown operation"
-#~ msgstr "bicho: operación desconocida"
-
-#~ msgid "malloc: watch alert: %p %s "
-#~ msgstr "malloc: alerta de observación: %p %s "
-
-#~ msgid ""
-#~ "Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,\n"
-#~ "    break N levels."
-#~ msgstr ""
-#~ "Sale de un ciclo FOR, WHILE o UNTIL.  Si se especifica N,\n"
-#~ "    sale N niveles."
-
-#~ msgid ""
-#~ "Run a shell builtin.  This is useful when you wish to rename a\n"
-#~ "    shell builtin to be a function, but need the functionality of the\n"
-#~ "    builtin within the function itself."
-#~ msgstr ""
-#~ "Ejecuta una orden interna del shell.  Esto es útil cuando desea "
-#~ "renombrar\n"
-#~ "    una orden interna del shell para que sea una función, pero necesita\n"
-#~ "    la funcionalidad de la orden interna dentro de la misma función."
-
-#~ msgid ""
-#~ "Print the current working directory.  With the -P option, pwd prints\n"
-#~ "    the physical directory, without any symbolic links; the -L option\n"
-#~ "    makes pwd follow symbolic links."
-#~ msgstr ""
-#~ "Muestra el directorio de trabajo actual.  Con la opción -P, pwd muestra\n"
-#~ "    el directorio físico, sin enlaces simbólicos; la opción -L hace que\n"
-#~ "    pwd siga los enlaces simbólicos."
-
-#~ msgid "Return a successful result."
-#~ msgstr "Devuelve un resultado exitoso."
-
-# es usado -> se usa. sv
-# es impresa -> se muestra una cadena em+
-# "Si se da la opción -V o -v,..." sv
-# De acuerdo. cfuga
-#~ msgid ""
-#~ "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell\n"
-#~ "    function called `ls', and you wish to call the command `ls', you can\n"
-#~ "    say \"command ls\".  If the -p option is given, a default value is "
-#~ "used\n"
-#~ "    for PATH that is guaranteed to find all of the standard utilities.  "
-#~ "If\n"
-#~ "    the -V or -v option is given, a string is printed describing "
-#~ "COMMAND.\n"
-#~ "    The -V option produces a more verbose description."
-#~ msgstr ""
-#~ "Ejecuta COMMAND con ARGS ignorando las funciones del shell.  Si tiene "
-#~ "una\n"
-#~ "    función de shell llamada `ls', y desea llamar a la orden `ls', puede\n"
-#~ "    decir \"command ls\".  Si se da la opción -p, se usa un valor por\n"
-#~ "    defecto para PATH que garantiza encontrar todas las herramientas\n"
-#~ "    estándar.  Si se da la opción -V o -v, se muestra una cadena que\n"
-#~ "    describe COMMAND.  La opción -V produce una descripción más detallada."
-
-# apaga -> desactiva em+
-# Corregido en toda la traducción. cfuga
-#~ msgid ""
-#~ "Declare variables and/or give them attributes.  If no NAMEs are\n"
-#~ "    given, then display the values of variables instead.  The -p option\n"
-#~ "    will display the attributes and values of each NAME.\n"
-#~ "    \n"
-#~ "    The flags are:\n"
-#~ "    \n"
-#~ "      -a\tto make NAMEs arrays (if supported)\n"
-#~ "      -f\tto select from among function names only\n"
-#~ "      -F\tto display function names (and line number and source file name "
-#~ "if\n"
-#~ "    \tdebugging) without definitions\n"
-#~ "      -i\tto make NAMEs have the `integer' attribute\n"
-#~ "      -r\tto make NAMEs readonly\n"
-#~ "      -t\tto make NAMEs have the `trace' attribute\n"
-#~ "      -x\tto make NAMEs export\n"
-#~ "    \n"
-#~ "    Variables with the integer attribute have arithmetic evaluation (see\n"
-#~ "    `let') done when the variable is assigned to.\n"
-#~ "    \n"
-#~ "    When displaying values of variables, -f displays a function's name\n"
-#~ "    and definition.  The -F option restricts the display to function\n"
-#~ "    name only.\n"
-#~ "    \n"
-#~ "    Using `+' instead of `-' turns off the given attribute instead.  "
-#~ "When\n"
-#~ "    used in a function, makes NAMEs local, as with the `local' command."
-#~ msgstr ""
-#~ "Declara variables y/o les asigna atributos. Si no se propociona\n"
-#~ "    ningún NAME, entonces muestra los valores de las variables.\n"
-#~ "    La opción -p mostrará los atributos y valores de cada NAME.\n"
-#~ "    \n"
-#~ "    Las opciones son:\n"
-#~ "    \n"
-#~ "      -a\thace a los NAMEs matrices (si tiene soporte)\n"
-#~ "      -f\tselecciona solamente nombres de funciones\n"
-#~ "      -F\tmuestra nombres de funciones (y número de línea y nombre de\n"
-#~ "    \tfichero fuente si se está depurando) sin definiciones\n"
-#~ "      -i\tasigna a los NAMEs el atributo `integer'\n"
-#~ "      -r\thace a los NAMEs de sólo lectura\n"
-#~ "      -t\tasigna a los NAMEs el atributo `trace'\n"
-#~ "      -x\thace a los NAMEs exportables\n"
-#~ "    \n"
-#~ "    Las variables con el atributo integer se les evalúa aritméticamente\n"
-#~ "    (vea `let') cuando se asigna la variable.\n"
-#~ "    \n"
-#~ "    Cuando se muestran los valores de las variables, -f muestra\n"
-#~ "    el nombre de una función y su definición.  La opción -F restringe\n"
-#~ "    a mostrar solamente el nombre de la función.\n"
-#~ "    \n"
-#~ "    Al usar `+' en lugar de `-' desactiva el atributo dado.  Cuando se\n"
-#~ "    usa en una función, hace a los NAMEs locales, como sucede con la\n"
-#~ "    orden `local'."
-
-#~ msgid "Obsolete.  See `declare'."
-#~ msgstr "Obsoleto.  Ver `declare'."
-
-# y le da -> y le asigna em+
-# sólo se puede usar. sv
-# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+
-# De acuerdo. cfuga
-#~ msgid ""
-#~ "Create a local variable called NAME, and give it VALUE.  LOCAL\n"
-#~ "    can only be used within a function; it makes the variable NAME\n"
-#~ "    have a visible scope restricted to that function and its children."
-#~ msgstr ""
-#~ "Crea una variable local llamada NAME, y le asigna un VALUE.  LOCAL\n"
-#~ "    sólo se puede usar dentro de una función; hace que la variable NAME\n"
-#~ "    solamente sea visible a esa función y sus hijos."
-
-#~ msgid ""
-#~ "Output the ARGs.  If -n is specified, the trailing newline is suppressed."
-#~ msgstr ""
-#~ "Muestra los ARGs. Si se especifica -n, se elimina el carácter\n"
-#~ "    de fin de línea."
-
-# se puede usar. sv
-# Se muestra una lista de órdenes internas. sv
-# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en
-# forma "reflexiva". No comento más y te dejo que los mires despacio.
-# Gracias por la observación. cfuga
-#~ msgid ""
-#~ "Enable and disable builtin shell commands.  This allows\n"
-#~ "    you to use a disk command which has the same name as a shell\n"
-#~ "    builtin without specifying a full pathname.  If -n is used, the\n"
-#~ "    NAMEs become disabled; otherwise NAMEs are enabled.  For example,\n"
-#~ "    to use the `test' found in $PATH instead of the shell builtin\n"
-#~ "    version, type `enable -n test'.  On systems supporting dynamic\n"
-#~ "    loading, the -f option may be used to load new builtins from the\n"
-#~ "    shared object FILENAME.  The -d option will delete a builtin\n"
-#~ "    previously loaded with -f.  If no non-option names are given, or\n"
-#~ "    the -p option is supplied, a list of builtins is printed.  The\n"
-#~ "    -a option means to print every builtin with an indication of whether\n"
-#~ "    or not it is enabled.  The -s option restricts the output to the "
-#~ "POSIX.2\n"
-#~ "    `special' builtins.  The -n option displays a list of all disabled "
-#~ "builtins."
-#~ msgstr ""
-#~ "Activa y desactiva las órdenes internas del shell. Esto le permite\n"
-#~ "    usar una orden del sistema que tenga el mismo nombre que una orden\n"
-#~ "    interna del shell sin especificar una ruta completa.  Si se usa -n, "
-#~ "los\n"
-#~ "    NAMEs se desactivan; de otra forma los NAMEs se activan.  Por "
-#~ "ejemplo,\n"
-#~ "    para usar `test' que se encuentra en $PATH en lugar de la versión "
-#~ "interna\n"
-#~ "    del shell, teclee `enable -n test'.  En sistemas que soportan\n"
-#~ "    carga dinámica, se puede usar la opción -f para cargar nuevas "
-#~ "órdenes\n"
-#~ "    internas desde el objeto compartido FILENAME.  La opción -d borrará "
-#~ "una\n"
-#~ "    orden interna cargada previamente con -f.  Si no se propocionan "
-#~ "nombres\n"
-#~ "    que no sean opciones, o se especifica la opción -p, se muestra una "
-#~ "lista\n"
-#~ "    de órdenes internas.  La opción -a es para mostrar cada orden "
-#~ "interna\n"
-#~ "    con una indicación si está o no activada.  La opción -s restringe la\n"
-#~ "    salida a las órdenes internas `especiales' de POSIX.2. La opción -n\n"
-#~ "    muestra una lista de todas las órdenes internas desactivadas."
-
-#~ msgid ""
-#~ "Read ARGs as input to the shell and execute the resulting command(s)."
-#~ msgstr ""
-#~ "Lee ARGs como entrada del shell y ejecuta el(los) comando(s) resultantes."
-
-#~ msgid ""
-#~ "Exec FILE, replacing this shell with the specified program.\n"
-#~ "    If FILE is not specified, the redirections take effect in this\n"
-#~ "    shell.  If the first argument is `-l', then place a dash in the\n"
-#~ "    zeroth arg passed to FILE, as login does.  If the `-c' option\n"
-#~ "    is supplied, FILE is executed with a null environment.  The `-a'\n"
-#~ "    option means to make set argv[0] of the executed process to NAME.\n"
-#~ "    If the file cannot be executed and the shell is not interactive,\n"
-#~ "    then the shell exits, unless the shell option `execfail' is set."
-#~ msgstr ""
-#~ "Ejecuta FILE, reemplazando este shell con el programa especificado.\n"
-#~ "    Si no se especifica FILE, las redirecciones toman efecto en este\n"
-#~ "    shell.  Si el primer argumento es `-l' entonces coloca un guión\n"
-#~ "    en el argumento cero que pasa a FILE, como lo hace login.  Si se\n"
-#~ "    proporciona la opción `-c', se ejecuta FILE con un ambiente nulo.\n"
-#~ "    La opción `-a' establece el argv[0] del proceso ejecutado a NOMBRE.\n"
-#~ "    Si no se puede ejecutar el fichero, y el shell no es intercativo,\n"
-#~ "    entonces el shell termina, a menos que esté activa la opción\n"
-#~ "    `execfail'."
-
-#~ msgid "Logout of a login shell."
-#~ msgstr "Se desconecta de un shell de entrada."
-
-#~ msgid ""
-#~ "For each NAME, the full pathname of the command is determined and\n"
-#~ "    remembered.  If the -p option is supplied, PATHNAME is used as the\n"
-#~ "    full pathname of NAME, and no path search is performed.  The -r\n"
-#~ "    option causes the shell to forget all remembered locations.  The -d\n"
-#~ "    option causes the shell to forget the remembered location of each "
-#~ "NAME.\n"
-#~ "    If the -t option is supplied the full pathname to which each NAME\n"
-#~ "    corresponds is printed.  If multiple NAME arguments are supplied "
-#~ "with\n"
-#~ "    -t, the NAME is printed before the hashed full pathname.  The -l "
-#~ "option\n"
-#~ "    causes output to be displayed in a format that may be reused as "
-#~ "input.\n"
-#~ "    If no arguments are given, information about remembered commands is "
-#~ "displayed."
-#~ msgstr ""
-#~ "Por cada NOMBRE, se determina la ruta completa de la orden y se graba.\n"
-#~ "    Si se especifica la opción -p, se usa PATHNAME como la ruta completa\n"
-#~ "    de NAME, y no se realiza la búsqueda de ruta. La opción -r hace que\n"
-#~ "    el shell olvide todas las ubicaciones grabadas. La opción -d hace "
-#~ "que\n"
-#~ "    el shell olvide las ubicaciones grabadas de cada NAME.  Si se\n"
-#~ "    proporciona la opción -t se muestra la ruta completa para cada NAME\n"
-#~ "    correspondiente.  Si se proporcionan múltiples argumentos NAME con\n"
-#~ "    -t, NAME se muestra antes de la ruta completa.  La opción -l hace\n"
-#~ "    que la salida se muestre en un formato que se puede reusar como\n"
-#~ "    entrada.  Si no se proporcionan argumentos, se muestra la "
-#~ "información\n"
-#~ "    de las órdenes grabadas."
-
-#~ msgid ""
-#~ "Display helpful information about builtin commands.  If PATTERN is\n"
-#~ "    specified, gives detailed help on all commands matching PATTERN,\n"
-#~ "    otherwise a list of the builtins is printed.  The -s option\n"
-#~ "    restricts the output for each builtin command matching PATTERN to\n"
-#~ "    a short usage synopsis."
-#~ msgstr ""
-#~ "Muestra información útil sobre las órdenes internas del shell. Si se\n"
-#~ "    especifica un PATRÓN, proporciona ayuda detallada sobre todas las\n"
-#~ "    órdenes que coinciden con el PATRÓN, de otra forma se muestra una\n"
-#~ "    lista de las órdenes internas.  La opción -s restringe la salida\n"
-#~ "    de cada orden interna que concida con el PATRÓN a una breve\n"
-#~ "    sinopsis de uso."
-
-#~ msgid ""
-#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n"
-#~ "    If the -h option is given, the job is not removed from the table, but "
-#~ "is\n"
-#~ "    marked so that SIGHUP is not sent to the job if the shell receives a\n"
-#~ "    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove "
-#~ "all\n"
-#~ "    jobs from the job table; the -r option means to remove only running "
-#~ "jobs."
-#~ msgstr ""
-#~ "Por defecto, elimina cada argumento JOBSPEC de la tabla de trabajos "
-#~ "activos.\n"
-#~ "    Si se especifica la opción -h, el trabajo no se elimina de la tabla,\n"
-#~ "    pero se marca de forma que no se envía SIGHUP al trabajo si el shell\n"
-#~ "    recibe un SIGHUP.  La opción -a, cuando no se proporciona JOBSPEC, "
-#~ "borra\n"
-#~ "    todos los trabajos de la tabla de trabajos; la opción -r borra sólo\n"
-#~ "    los trabajos activos."
-
-#~ msgid ""
-#~ "Causes a function to exit with the return value specified by N.  If N\n"
-#~ "    is omitted, the return status is that of the last command."
-#~ msgstr ""
-#~ "Causa la salida de una función con el valor de devolución especificado "
-#~ "por N.\n"
-#~ "    Si se omite N, el estado de devolución será el de la última orden."
-
-#~ msgid ""
-#~ "For each NAME, remove the corresponding variable or function.  Given\n"
-#~ "    the `-v', unset will only act on variables.  Given the `-f' flag,\n"
-#~ "    unset will only act on functions.  With neither flag, unset first\n"
-#~ "    tries to unset a variable, and if that fails, then tries to unset a\n"
-#~ "    function.  Some variables cannot be unset; also see readonly."
-#~ msgstr ""
-#~ "Para cada NAME, se borra la variable o función correspondiente.  Al usar\n"
-#~ "    `-v', unset sólo actuará sobre variables.  Al usar la opción `-f',\n"
-#~ "    unset sólo actuará sobre funciones.  Sin ninguna opción, unset "
-#~ "primero\n"
-#~ "    intenta borrar una variable, y si esto falla, entonces intenta "
-#~ "borrar\n"
-#~ "    una función.  Algunas variables no se pueden borrar; vea también "
-#~ "readonly."
-
-#~ msgid ""
-#~ "NAMEs are marked for automatic export to the environment of\n"
-#~ "    subsequently executed commands.  If the -f option is given,\n"
-#~ "    the NAMEs refer to functions.  If no NAMEs are given, or if `-p'\n"
-#~ "    is given, a list of all names that are exported in this shell is\n"
-#~ "    printed.  An argument of `-n' says to remove the export property\n"
-#~ "    from subsequent NAMEs.  An argument of `--' disables further option\n"
-#~ "    processing."
-#~ msgstr ""
-#~ "Se marcan NAMEs para exportación automática al ambiente de las\n"
-#~ "    órdenes ejecutadas subsecuentemente.  Si se establece la opción -f,\n"
-#~ "    NAMEs se refieren a funciones.  Si no se proporciona ningún NAME,\n"
-#~ "    o si se proporciona `-p', se muestra una lista de todos los nombres\n"
-#~ "    que se exportan en este shell.  Un argumento `-n' indica eliminar\n"
-#~ "    la propiedad de exportación para los NAMEs subsecuentes.  Un "
-#~ "argumento\n"
-#~ "    `--' desactiva el procesamiento posterior de opciones."
-
-#~ msgid ""
-#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n"
-#~ "    not be changed by subsequent assignment.  If the -f option is given,\n"
-#~ "    then functions corresponding to the NAMEs are so marked.  If no\n"
-#~ "    arguments are given, or if `-p' is given, a list of all readonly "
-#~ "names\n"
-#~ "    is printed.  The `-a' option means to treat each NAME as\n"
-#~ "    an array variable.  An argument of `--' disables further option\n"
-#~ "    processing."
-#~ msgstr ""
-#~ "Los NAMEs dados se marcan como sólo lectura y los valores de esos NAMEs\n"
-#~ "    no se pueden cambiar por asignaciones posteriores.  Si se propociona\n"
-#~ "    la opción -f, entonces también se marcan las funciones que "
-#~ "correspondan\n"
-#~ "    a los NAMEs.  Si no se proporcionan argumentos, o si se especifica\n"
-#~ "    `-p', se muestra una lista de todos los nombres de sólo lectura.\n"
-#~ "    La opción `-a' trata cada NAME como una variable de matriz.\n"
-#~ "    Un argumento `--' desactiva opciones posteriores."
-
-#~ msgid ""
-#~ "The positional parameters from $N+1 ... are renamed to $1 ...  If N is\n"
-#~ "    not given, it is assumed to be 1."
-#~ msgstr ""
-#~ "Los parámetros posicionales de $N+1 ... se renombran a $1 ... Si no se\n"
-#~ "    proporciona N, se asume que es 1."
-
-#~ msgid ""
-#~ "Suspend the execution of this shell until it receives a SIGCONT\n"
-#~ "    signal.  The `-f' if specified says not to complain about this\n"
-#~ "    being a login shell if it is; just suspend anyway."
-#~ msgstr ""
-#~ "Suspende la ejecución de este shell hasta que recibe una señal\n"
-#~ "    SIGCONT.  Si se especifica `-f' indica que no se queje si es\n"
-#~ "    un shell de login; y se suspende de cualquier forma."
-
-#~ msgid ""
-#~ "Print the accumulated user and system times for processes run from\n"
-#~ "    the shell."
-#~ msgstr ""
-#~ "Muestra los tiempos de usuario y de sistema acumulados para los procesos\n"
-#~ "    ejecutados desde el shell."
-
-#~ msgid ""
-#~ "For each NAME, indicate how it would be interpreted if used as a\n"
-#~ "    command name.\n"
-#~ "    \n"
-#~ "    If the -t option is used, `type' outputs a single word which is one "
-#~ "of\n"
-#~ "    `alias', `keyword', `function', `builtin', `file' or `', if NAME is "
-#~ "an\n"
-#~ "    alias, shell reserved word, shell function, shell builtin, disk "
-#~ "file,\n"
-#~ "    or unfound, respectively.\n"
-#~ "    \n"
-#~ "    If the -p flag is used, `type' either returns the name of the disk\n"
-#~ "    file that would be executed, or nothing if `type -t NAME' would not\n"
-#~ "    return `file'.\n"
-#~ "    \n"
-#~ "    If the -a flag is used, `type' displays all of the places that "
-#~ "contain\n"
-#~ "    an executable named `file'.  This includes aliases, builtins, and\n"
-#~ "    functions, if and only if the -p flag is not also used.\n"
-#~ "    \n"
-#~ "    The -f flag suppresses shell function lookup.\n"
-#~ "    \n"
-#~ "    The -P flag forces a PATH search for each NAME, even if it is an "
-#~ "alias,\n"
-#~ "    builtin, or function, and returns the name of the disk file that "
-#~ "would\n"
-#~ "    be executed."
-#~ msgstr ""
-#~ "Para cada NAME, se indica cómo se interpretaría se se usara como\n"
-#~ "    el nombre de una orden.\n"
-#~ "    \n"
-#~ "    Si se usa la opción -t, `type' muestra una sola palabra que es una\n"
-#~ "    de `alias', `keyword', `function', `builtin', `file' ó `', si NAME\n"
-#~ "    es un alias, palabra reservada del shell, función del shell, orden\n"
-#~ "    interna del shell, fichero del disco, o no encontrado, "
-#~ "respectivamente.\n"
-#~ "    \n"
-#~ "    Si se usa la opción -p, `type' devuelve el nombre del fichero del\n"
-#~ "    sistema que sería ejecutado, o nada, si `type -t NAME' no devuelve\n"
-#~ "    `file'.\n"
-#~ "    \n"
-#~ "    Si se usa la opción -a, `type' muestra todos los lugares que "
-#~ "contienen\n"
-#~ "    un ejecutable llamado `file'.  Esto incluye a aliases, órdenes\n"
-#~ "    internas, y funciones, si y solo si no se usa la opción -p.\n"
-#~ "    \n"
-#~ "    La opción -f suprime la búsqueda de funciones de shell.\n"
-#~ "    \n"
-#~ "    La opción -P fuerza una búsqueda en PATH por cada NAME, aún si es un\n"
-#~ "    alias, orden interna, o función, y devuelve el nombre del fichero "
-#~ "del\n"
-#~ "    disco que se puede ejecutar."
-
-#~ msgid ""
-#~ "The user file-creation mask is set to MODE.  If MODE is omitted, or if\n"
-#~ "    `-S' is supplied, the current value of the mask is printed.  The `-"
-#~ "S'\n"
-#~ "    option makes the output symbolic; otherwise an octal number is "
-#~ "output.\n"
-#~ "    If `-p' is supplied, and MODE is omitted, the output is in a form\n"
-#~ "    that may be used as input.  If MODE begins with a digit, it is\n"
-#~ "    interpreted as an octal number, otherwise it is a symbolic mode "
-#~ "string\n"
-#~ "    like that accepted by chmod(1)."
-#~ msgstr ""
-#~ "La máscara de creación de ficheros se establece a MODE.  Si se omite "
-#~ "MODE,\n"
-#~ "    o si se proporciona `-S', se muestra el valor actual de la máscara. "
-#~ "La\n"
-#~ "    opción `-S' hace la salida simbólica; de otra forma la salida es un\n"
-#~ "    número octal.  Si se proporciona `-p', y se omite MODE, la salida es\n"
-#~ "    en una forma que se puede usar como entrada.  Si MODE empieza con un\n"
-#~ "    dígito, se interpreta como un número octal, de otra forma es una "
-#~ "cadena\n"
-#~ "    de modo simbólico como la que acepta chmod(1)."
-
-#~ msgid ""
-#~ "Wait for the specified process and report its termination status.  If\n"
-#~ "    N is not given, all currently active child processes are waited for,\n"
-#~ "    and the return code is zero.  N is a process ID; if it is not given,\n"
-#~ "    all child processes of the shell are waited for."
-#~ msgstr ""
-#~ "Espera al proceso especificado y reporta su estado final.  Si no se\n"
-#~ "    proporciona N, espera a todos los procesos hijo activos actualmente,\n"
-#~ "    y el código de devolución es cero. N es un ID de proceso; si no se\n"
-#~ "    proporciona, se espera a todos los procesos hijo del shell."
-
-#~ msgid ""
-#~ "Create a simple command invoked by NAME which runs COMMANDS.\n"
-#~ "    Arguments on the command line along with NAME are passed to the\n"
-#~ "    function as $0 .. $n."
-#~ msgstr ""
-#~ "Crea una orden simple invocada por NAME que ejecuta COMMMANDS.\n"
-#~ "    Se pasan a la función los argumentos en la línea de órdenes\n"
-#~ "    junto con NAME como $0 .. $n."
-
-#~ msgid ""
-#~ "Toggle the values of variables controlling optional behavior.\n"
-#~ "    The -s flag means to enable (set) each OPTNAME; the -u flag\n"
-#~ "    unsets each OPTNAME.  The -q flag suppresses output; the exit\n"
-#~ "    status indicates whether each OPTNAME is set or unset.  The -o\n"
-#~ "    option restricts the OPTNAMEs to those defined for use with\n"
-#~ "    `set -o'.  With no options, or with the -p option, a list of all\n"
-#~ "    settable options is displayed, with an indication of whether or\n"
-#~ "    not each is set."
-#~ msgstr ""
-#~ "Cambia los valores de las variables que controlan conductas opcionales.\n"
-#~ "    La opción -s activa (define) cada OPTNAME; la opción -u desactiva\n"
-#~ "    cada OPTNAME.  La opción -q suprime la salida; el estado de salida\n"
-#~ "    indica si cada OPTNAME se definió o no.  La opción -o restringe\n"
-#~ "    que OPTNAMEs sean aquéllos definidos para usarse con `set -o'.\n"
-#~ "    Sin opciones, o con la opción -p, se muestra una lista de todas\n"
-#~ "    las opciones definibles, con una indicación si están o no activas."
-
-#~ msgid ""
-#~ "For each NAME, specify how arguments are to be completed.\n"
-#~ "    If the -p option is supplied, or if no options are supplied, "
-#~ "existing\n"
-#~ "    completion specifications are printed in a way that allows them to "
-#~ "be\n"
-#~ "    reused as input.  The -r option removes a completion specification "
-#~ "for\n"
-#~ "    each NAME, or, if no NAMEs are supplied, all completion "
-#~ "specifications."
-#~ msgstr ""
-#~ "Por cada NAME, especifica cómo se deben completar los argumentos.\n"
-#~ "    Si se proporciona la opción -p, o si no se proporcionan opciones, se\n"
-#~ "    muestran las especificaciones existentes de completado en una forma\n"
-#~ "    que permite que se reusen como entrada.  La opción -r borra una\n"
-#~ "    especificación de completado para cada NAME, o, si no se proporciona\n"
-#~ "    ningún NAMEs, todas las especificaciones de completado."
-
-#~ msgid "Missing `}'"
-#~ msgstr "Faltan `}'"
-
-#~ msgid "brace_expand> "
-#~ msgstr "expansión_llave> "
-
-# ¿ a qué se refiere ? em+
-# También podría ser la orden de tipo desconocido. sv
-# Tiene razón Santiago. Las órdenes se guardan en matrices de caracteres
-# en bash. Si bash intenta borrar uno de estos comandos y el tipo del dato
-# NO es matriz de caracter, emitiría este mensaje. cfuga
-#~ msgid "Attempt to free unknown command type `%d'.\n"
-#~ msgstr "Intentando liberar la orden de tipo desconocido `%d'.\n"
-
-#~ msgid "Report this to %s\n"
-#~ msgstr "Comunique esto a %s\n"
-
-#~ msgid "Stopping myself..."
-#~ msgstr "Deteniéndome..."
-
-#~ msgid "Tell %s to fix this someday.\n"
-#~ msgstr "Decir a %s que arregle esto algún día.\n"
-
-#~ msgid "execute_command: bad command type `%d'"
-#~ msgstr "execute_command: tipo de orden erróneo `%d'"
-
-#~ msgid "real\t"
-#~ msgstr "real\t"
-
-#~ msgid "user\t"
-#~ msgstr "usuario\t"
-
-#~ msgid "sys\t"
-#~ msgstr "sistema\t"
-
-#~ msgid ""
-#~ "real\t0m0.00s\n"
-#~ "user\t0m0.00s\n"
-#~ "sys\t0m0.00s\n"
-#~ msgstr ""
-#~ "real\t0m0.00s\n"
-#~ "usuario\t0m0.00s\n"
-#~ "sistema\t0m0.00s\n"
-
-#~ msgid "cannot duplicate fd %d to fd 1: %s"
-#~ msgstr "no se puede duplicar el df %d al df 1: %s"
-
-#~ msgid "%s: output redirection restricted"
-#~ msgstr "%s: la redirección de salida está restringida"
-
-#~ msgid "Out of memory!"
-#~ msgstr "¡Memoria agotada!"
-
-#~ msgid "You have already added item `%s'\n"
-#~ msgstr "Ya se había añadido el elemento `%s'\n"
-
-# Han sido introducidos o quizá , Vd, introdujo em+
-#~ msgid "You have entered %d (%d) items.  The distribution is:\n"
-#~ msgstr "Introdujo %d (%d) elementos. La distribución es:\n"
-
-#~ msgid "%s: bg background job?"
-#~ msgstr "%s: ¿bg trabajo en background?"
-
-#~ msgid ""
-#~ "Redirection instruction from yyparse () '%d' is\n"
-#~ "out of range in make_redirection ()."
-#~ msgstr ""
-#~ "La instrucción de redirección de yyparse () '%d' está fuera de rango en \n"
-#~ "make_redirection ()."
-
-#~ msgid "clean_simple_command () got a command with type %d."
-#~ msgstr "clean_simple_command () tiene una orden del tipo %d."
-
-#~ msgid "got errno %d while waiting for %d"
-#~ msgstr "se obtuvo errno %d mientras esperaba a %d"
-
-# algo por el estilo em+
-#~ msgid "syntax error near unexpected token `%c'"
-#~ msgstr "error sintáctico cerca del elemento inesperado `%c'"
-
-# Por consistencia con mensajes anteriores, sería erróneo (el tipo). sv
-# De acuerdo. Corregido. cfuga
-#~ msgid "print_command: bad command type `%d'"
-#~ msgstr "print_command: tipo de dato de orden `%d' erróneo"
-
-#~ msgid "cprintf: bad `%%' argument (%c)"
-#~ msgstr "cprintf: argumento `%%' erróneo (%c)"
-
-#~ msgid "option `%s' requires an argument"
-#~ msgstr "la opción `%s' requiere un argumento"
-
-#~ msgid "%s: unrecognized option"
-#~ msgstr "%s: la opción no es reconocida"
-
-#~ msgid "`-c' requires an argument"
-#~ msgstr "`-c' requiere un argumento"
-
-#~ msgid "%s: cannot execute directories"
-#~ msgstr "%s: no se pueden ejecutar directorios"
-
-#~ msgid "Bad code in sig.c: sigprocmask"
-#~ msgstr "Código erróneo en sig.c: sigprocmask"
-
-#~ msgid "%s: bad array subscript"
-#~ msgstr "%s: subíndice de matriz erróneo"
-
-#~ msgid "can't make pipes for process substitution: %s"
-#~ msgstr ""
-#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %"
-#~ "s"
-
-#~ msgid "reading"
-#~ msgstr "leyendo"
-
-#~ msgid "writing"
-#~ msgstr "escribiendo"
-
-# del proceso em+
-#~ msgid "process substitution"
-#~ msgstr "sustitución de proceso"
-
-#~ msgid "command substitution"
-#~ msgstr "sustitución de la orden"
-
-#~ msgid "Can't reopen pipe to command substitution (fd %d): %s"
-#~ msgstr ""
-#~ "No se puede reabrir la tubería para la sustitución de la orden (df %d): %s"
-
-#~ msgid "$%c: unbound variable"
-#~ msgstr "$%c: variable desligada"
-
-#~ msgid "%s: bad arithmetic substitution"
-#~ msgstr "%s: sustitución aritmética errónea"
-
-#~ msgid "-%s: binary operator expected"
-#~ msgstr "-%s: se esperaba un operador binario"
-
-#~ msgid "%s[%s: bad subscript"
-#~ msgstr "%s[%s: subíndice erróneo"
-
-#~ msgid "[%s: bad subscript"
-#~ msgstr "[%s: subíndice erróneo"
-
-# Yo pondría "hay dígitos en dos elementos diferentes de argv". sv
-# De acuerdo. cfuga
-#~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr "hay dígitos en dos elementos diferentes de argv.\n"
-
-#~ msgid "option %c\n"
-#~ msgstr "opción %c\n"
-
-#~ msgid "option a\n"
-#~ msgstr "opción a\n"
-
-#~ msgid "option b\n"
-#~ msgstr "opción b\n"
-
-#~ msgid "option c with value `%s'\n"
-#~ msgstr "opción c con el valor `%s'\n"
-
-#~ msgid "?? sh_getopt returned character code 0%o ??\n"
-#~ msgstr "?? sh_getopt devolvió el código de carácter 0%o ??\n"
-
-#~ msgid "non-option ARGV-elements: "
-#~ msgstr "elementos de ARGV que no son opciones: "
-
-#~ msgid "%s: Unknown flag %s.\n"
-#~ msgstr "%s: Indicador desconocido %s.\n"
-
-#~ msgid "Unknown directive `%s'"
-#~ msgstr "Directiva desconocida `%s'"
-
-#~ msgid "%s requires an argument"
-#~ msgstr "%s requiere un argumento"
-
-#~ msgid "%s must be inside of a $BUILTIN block"
-#~ msgstr "%s debe estar dentro de un bloque $BUILTIN"
-
-#~ msgid "%s found before $END"
-#~ msgstr "%s encontrado antes de $END"
-
-#~ msgid "%s already has a function (%s)"
-#~ msgstr "%s ya tiene una función (%s)"
-
-#~ msgid "%s already had a docname (%s)"
-#~ msgstr "%s ya tiene un nombre de documento (%s)"
-
-#~ msgid "%s already has short documentation (%s)"
-#~ msgstr "% ya tiene documentación corta (%s)"
-
-# Si traducimos con la gramática española, probablemente sería:
-# ...una definición %s". sv
-# De acuerdo. cfuga
-#~ msgid "%s already has a %s definition"
-#~ msgstr "%s ya tiene una definición %s"
-
-#~ msgid "mkbuiltins: Out of virtual memory!\n"
-#~ msgstr "mkbuiltins: ¡Memoria agotada!\n"
-
-#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]"
-#~ msgstr "read [-r] [-p prompt] [-a matriz] [-e] [nombre ...]"
-
-#~ msgid ". filename"
-#~ msgstr ". fichero"
-
-#~ msgid "%[DIGITS | WORD] [&]"
-#~ msgstr "%[DÍGITOS | PALABRAS] [&]"
-
-#~ msgid "variables - Some variable names and meanings"
-#~ msgstr "variables - Algunos nombres de variables y sus significados"
-
-#~ msgid "`alias' with no arguments or with the -p option prints the list"
-#~ msgstr "`alias' sin argumentos o con la opción -p muestra la lista"
-
-#~ msgid "of aliases in the form alias NAME=VALUE on standard output."
-#~ msgstr "de aliases en la forma alias NOMBRE=VALOR por la entrada estándar."
-
-# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv
-# De acuerdo. cfuga
-#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
-#~ msgstr ""
-#~ "De otra manera, se define un alias por cada NOMBRE cuyo VALOR se da."
-
-#~ msgid "A trailing space in VALUE causes the next word to be checked for"
-#~ msgstr ""
-#~ "Un espacio final en VALOR causa que la siguiente palabra sea revisada para"
-
-# Lo mismo de antes: el alias es expandido -> el alias se expande. sv
-# De acuerdo. cfuga
-#~ msgid "alias substitution when the alias is expanded.  Alias returns"
-#~ msgstr "la sustitución del alias cuando el alias se expande. Alias devuelve"
-
-# no alias -> ningún alias. sv
-# De acuerdo. cfuga
-#~ msgid "true unless a NAME is given for which no alias has been defined."
-#~ msgstr ""
-#~ "verdadero a menos que para un NOMBRE dado no se haya definido ningún "
-#~ "alias."
-
-#~ msgid "then remove all alias definitions."
-#~ msgstr "entonces borra todas las definiciones de alias."
-
-#~ msgid "Bind a key sequence to a Readline function, or to a macro.  The"
-#~ msgstr ""
-#~ "Asigna una secuencia de teclas a una función Readline, o a una macro. La"
-
-#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be"
-#~ msgstr ""
-#~ "sintaxis es equivalente a la encontrada en ~/.inputrc, pero debe ser"
-
-#~ msgid ""
-#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
-#~ msgstr ""
-#~ "pasada como un solo argumento: bind '\"\\C-x\\C-r\": re-read-init-file'."
-
-#~ msgid "Arguments we accept:"
-#~ msgstr "Argumentos que se aceptan:"
-
-#~ msgid ""
-#~ "  -m  keymap         Use `keymap' as the keymap for the duration of this"
-#~ msgstr ""
-#~ "  -m  mapa_teclas    Usa `mapa_teclas' como el mapa de teclas durante esta"
-
-#~ msgid "                     command.  Acceptable keymap names are emacs,"
-#~ msgstr ""
-#~ "                     orden.  Los nombres de mapas de teclas aceptables son"
-
-#~ msgid ""
-#~ "                     emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-#~ msgstr ""
-#~ "                     emacs, emacs-standard, emacs-meta, emacs-ctlx, vi,"
-
-#~ msgid "                     vi-command, and vi-insert."
-#~ msgstr "                     vi-move, vi-command y vi-insert."
-
-#~ msgid "  -l                 List names of functions."
-#~ msgstr "  -l                 Muestra los nombres de las funciones."
-
-#~ msgid "  -P                 List function names and bindings."
-#~ msgstr ""
-#~ "  -P                 Muestra los nombres de funciones y asignaciones."
-
-#~ msgid ""
-#~ "  -p                 List functions and bindings in a form that can be"
-#~ msgstr ""
-#~ "  -p                 Muestra las funciones y asignaciones en un formato "
-#~ "que"
-
-#~ msgid "                     reused as input."
-#~ msgstr "                     puede reusarse como entrada."
-
-#~ msgid "  -r  keyseq         Remove the binding for KEYSEQ."
-#~ msgstr "  -r  sec_teclas     Borra la asignación para SEC_TECLAS"
-
-# lee 'la'... em+
-#~ msgid "  -f  filename       Read key bindings from FILENAME."
-#~ msgstr "  -f  fichero        Lee la asignación de teclas de FICHERO."
-
-#~ msgid ""
-#~ "  -q  function-name  Query about which keys invoke the named function."
-#~ msgstr ""
-#~ "  -q  nombre-función Pregunta sobre qué teclas invocan la función "
-#~ "nombrada."
-
-#~ msgid "  -V                 List variable names and values"
-#~ msgstr "  -V                 Muestra los nombres de variables y valores"
-
-#~ msgid ""
-#~ "  -v                 List variable names and values in a form that can"
-#~ msgstr ""
-#~ "  -v                 Muestra los nombres de variables y valores de una "
-#~ "forma que"
-
-#~ msgid "                     be reused as input."
-#~ msgstr "                     puede reusarse como entrada."
-
-#~ msgid ""
-#~ "  -S                 List key sequences that invoke macros and their "
-#~ "values"
-#~ msgstr ""
-#~ "  -S                 Muestra las secuencias de teclas que invocan macros "
-#~ "y sus\n"
-#~ "                     valores"
-
-#~ msgid ""
-#~ "  -s                 List key sequences that invoke macros and their "
-#~ "values in"
-#~ msgstr ""
-#~ "  -s                 Muestra las secuencias de teclas que invocan macros "
-#~ "y sus"
-
-#~ msgid "                     a form that can be reused as input."
-#~ msgstr ""
-#~ "                     valores en una forma que puede reusarse como entrada."
-
-#~ msgid "break N levels."
-#~ msgstr "sale N niveles."
-
-#~ msgid "If N is specified, resume at the N-th enclosing loop."
-#~ msgstr "Si se especifica N, retoma en el N-ésimo ciclo."
-
-#~ msgid "Run a shell builtin.  This is useful when you wish to rename a"
-#~ msgstr "Ejecuta un shell interno. Esto es útil cuando desea renombrar un"
-
-#~ msgid "shell builtin to be a function, but need the functionality of the"
-#~ msgstr ""
-#~ "shell interno para que sea una función, pero necesita la funcionalidad"
-
-#~ msgid "builtin within the function itself."
-#~ msgstr "interna dentro de la misma función."
-
-#~ msgid "Change the current directory to DIR.  The variable $HOME is the"
-#~ msgstr "Cambia el directorio actual a DIR. La variable $HOME es el DIR"
-
-#~ msgid "default DIR.  The variable $CDPATH defines the search path for"
-#~ msgstr "por omisión. La variable $CDPATH define la ruta de búsqueda para"
-
-#~ msgid "the directory containing DIR.  Alternative directory names in CDPATH"
-#~ msgstr ""
-#~ "el directorio que contiene DIR. Los nombres alternativos de directorio en"
-
-#~ msgid "are separated by a colon (:).  A null directory name is the same as"
-#~ msgstr ""
-#~ "CDPATH son separados por dos puntos (:). Un nombre de directorio nulo es"
-
-# Slash lo venimos traduciendo por barra inclinada , y backslash
-# por barra invertida em++
-#~ msgid "the current directory, i.e. `.'.  If DIR begins with a slash (/),"
-#~ msgstr ""
-#~ "igual al directorio actual, p.e. `.'. Si DIR comienza con una barra "
-#~ "inclinada"
-
-#~ msgid "then $CDPATH is not used.  If the directory is not found, and the"
-#~ msgstr ""
-#~ "(/), entonces $CDPATH no se usa. Si el directorio no se encuentra, y"
-
-#~ msgid "shell option `cdable_vars' is set, then try the word as a variable"
-#~ msgstr ""
-#~ "la opción de shell `cdable_vars' está activa, entonces intenta la palabra"
-
-#~ msgid "name.  If that variable has a value, then cd to the value of that"
-#~ msgstr ""
-#~ "como nombre de variable. Si esa variable tiene un valor, entonces se "
-#~ "cambia al"
-
-#~ msgid ""
-#~ "variable.  The -P option says to use the physical directory structure"
-#~ msgstr ""
-#~ "valor de esa variable. La opción -P indica el uso de la estructura física"
-
-#~ msgid ""
-#~ "instead of following symbolic links; the -L option forces symbolic links"
-#~ msgstr "del directorio en lugar de seguir enlaces simbólicos; la opción -L"
-
-# forza -> fuerza? cfuga
-#~ msgid "to be followed."
-#~ msgstr "fuerza que los vínculos simbólicos sean seguidos."
-
-#~ msgid "Print the current working directory.  With the -P option, pwd prints"
-#~ msgstr ""
-#~ "Imprime el directorio actual de trabajo. Con la opción -P, pwd imprime"
-
-#~ msgid "the physical directory, without any symbolic links; the -L option"
-#~ msgstr "el directorio físico, sin ningún enlace simbólico; la opción -L"
-
-#~ msgid "makes pwd follow symbolic links."
-#~ msgstr "hace que pwd siga los enlaces simbólicos."
-
-#~ msgid ""
-#~ "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell"
-#~ msgstr "Ejecuta ORDEN con ARGUMENTOS ignorando las funciones del shell. Si"
-
-#~ msgid "function called `ls', and you wish to call the command `ls', you can"
-#~ msgstr ""
-#~ "tiene una función de shell llamada `ls', y desea llamar a la orden `ls',"
-
-#~ msgid ""
-#~ "say \"command ls\".  If the -p option is given, a default value is used"
-#~ msgstr ""
-#~ "se puede decir \"command ls\". Si se especifica la opción -p, se usa un "
-#~ "valor"
-
-# es usado -> se usa. sv
-# De acuerdo. La corrección incluye también la línea anterior. cfuga
-#~ msgid ""
-#~ "for PATH that is guaranteed to find all of the standard utilities.  If"
-#~ msgstr ""
-#~ "por omisión para PATH que garantiza encontrar todas las herramientas "
-#~ "estándar."
-
-# es impresa -> se muestra una cadena em+
-# "Si se da la opcón -V o -v,..." sv
-# De acuerdo. cfuga
-#~ msgid ""
-#~ "the -V or -v option is given, a string is printed describing COMMAND."
-#~ msgstr ""
-#~ "Si se da la opción -V o -v, se muestra una cadena describiendo la ORDEN."
-
-#~ msgid "The -V option produces a more verbose description."
-#~ msgstr "La opción -V produce una descripción más completa."
-
-#~ msgid "Declare variables and/or give them attributes.  If no NAMEs are"
-#~ msgstr ""
-#~ "Declara variables y/o les da atributos. Si no se proporcionan NOMBREs,"
-
-#~ msgid "given, then display the values of variables instead.  The -p option"
-#~ msgstr "entonces muestra los valores de las variables. La opción -p"
-
-#~ msgid "will display the attributes and values of each NAME."
-#~ msgstr "mostrará los atributos y valores de cada NOMBRE."
-
-#~ msgid "The flags are:"
-#~ msgstr "Los indicadores son:"
-
-#~ msgid "  -a\tto make NAMEs arrays (if supported)"
-#~ msgstr "  -a\thacer los NOMBREs matrices (si está soportado)"
-
-#~ msgid "  -f\tto select from among function names only"
-#~ msgstr "  -f\tseleccionar sólo entre los nombres de funciones"
-
-#~ msgid "  -F\tto display function names without definitions"
-#~ msgstr "  -F\tmostrar los nombres de funciones sin definiciones"
-
-#~ msgid "  -r\tto make NAMEs readonly"
-#~ msgstr "  -r\thacer los NOMBREs de sólo lectura"
-
-#~ msgid "  -x\tto make NAMEs export"
-#~ msgstr "  -x\thacer los NOMBREs exportables"
-
-#~ msgid "  -i\tto make NAMEs have the `integer' attribute set"
-#~ msgstr "  -i\thacer que los NOMBREs tengan el atributo `entero' activado"
-
-#~ msgid "Variables with the integer attribute have arithmetic evaluation (see"
-#~ msgstr "Las variables con el atributo entero tienen evaluación aritmética"
-
-#~ msgid "`let') done when the variable is assigned to."
-#~ msgstr "(ver `let') cuando la variable es asignada."
-
-#~ msgid "When displaying values of variables, -f displays a function's name"
-#~ msgstr "Cuando se muestran valores de variables, -f muestra el nombre y"
-
-#~ msgid "and definition.  The -F option restricts the display to function"
-#~ msgstr "la definición de la función. La opción -F evita que se muestre"
-
-#~ msgid "name only."
-#~ msgstr "solamente el nombre de la función."
-
-# apaga -> desactiva em+
-#~ msgid ""
-#~ "Using `+' instead of `-' turns off the given attribute instead.  When"
-#~ msgstr ""
-#~ "Usar `+' en lugar de `-' desactiva el atributo dado. Cuando es usado"
-
-#~ msgid "used in a function, makes NAMEs local, as with the `local' command."
-#~ msgstr ""
-#~ "en una función, hace los NOMBREs locales, como con la orden `local'."
-
-# y le da -> y le asigna em+
-#~ msgid "Create a local variable called NAME, and give it VALUE.  LOCAL"
-#~ msgstr "Crea una variable local llamada NOMBRE, y le asigna un VALOR. LOCAL"
-
-# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+
-#~ msgid "have a visible scope restricted to that function and its children."
-#~ msgstr "tenga visible sólo para la función y sus hijos."
-
-#~ msgid "Output the ARGs.  If -n is specified, the trailing newline is"
-#~ msgstr "Muestra los ARGumentos. Si -n es especificado, el carácter final de"
-
-#~ msgid "suppressed.  If the -e option is given, interpretation of the"
-#~ msgstr ""
-#~ "fin de línea es eliminado. Si se especifica la opción -e, se activa la"
-
-#~ msgid "following backslash-escaped characters is turned on:"
-#~ msgstr "interpretación de estos caracteres de escape con barras invertidas:"
-
-#~ msgid "\t\\a\talert (bell)"
-#~ msgstr "\t\\a\talerta (campana)"
-
-#~ msgid "\t\\b\tbackspace"
-#~ msgstr "\t\\b\tespacio hacia atrás"
-
-#~ msgid "\t\\c\tsuppress trailing newline"
-#~ msgstr "\t\\c\tsuprime el carácter de fin de línea restante"
-
-#~ msgid "\t\\E\tescape character"
-#~ msgstr "\t\\E\tcarácter de escape"
-
-#~ msgid "\t\\f\tform feed"
-#~ msgstr "\t\\f\talimentación de papel"
-
-#~ msgid "\t\\n\tnew line"
-#~ msgstr "\t\\n\tnueva línea"
-
-#~ msgid "\t\\r\tcarriage return"
-#~ msgstr "\t\\r\tretorno de carro"
-
-#~ msgid "\t\\t\thorizontal tab"
-#~ msgstr "\t\\t\ttabulador horizontal"
-
-#~ msgid "\t\\v\tvertical tab"
-#~ msgstr "\t\\v\ttabulador vertical"
-
-#~ msgid "\t\\\\\tbackslash"
-#~ msgstr "\t\\\\\tbarra invertida"
-
-#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
-#~ msgstr "\t\\num\tel carácter cuyo código ASCII es NÚM (octal)."
-
-#~ msgid ""
-#~ "You can explicitly turn off the interpretation of the above characters"
-#~ msgstr "Puede desactivar explícitamente la interpretación de los siguientes"
-
-#~ msgid "with the -E option."
-#~ msgstr "caracteres con la opción -E ."
-
-#~ msgid "Enable and disable builtin shell commands.  This allows"
-#~ msgstr "Activa y desactiva las órdenes internas del shell. Esto permite"
-
-#~ msgid "you to use a disk command which has the same name as a shell"
-#~ msgstr ""
-#~ "que use una orden del sistema que tenga el mismo nombre de una orden"
-
-#~ msgid "builtin.  If -n is used, the NAMEs become disabled; otherwise"
-#~ msgstr "interna.  Si se usa -n , los NOMBREs se desactivan; de otra forma"
-
-#~ msgid "NAMEs are enabled.  For example, to use the `test' found on your"
-#~ msgstr "se activan los NOMBREs.  Por ejemplo, para usar `test' de la"
-
-#~ msgid "path instead of the shell builtin version, type `enable -n test'."
-#~ msgstr ""
-#~ "ruta de acceso en lugar de la versión interna del shell, teclee\n"
-#~ "`enable -n test'."
-
-# se puede usar. sv
-#~ msgid "On systems supporting dynamic loading, the -f option may be used"
-#~ msgstr "En sistemas que soportan carga dinámica, la opción -f se puede usar"
-
-#~ msgid "to load new builtins from the shared object FILENAME.  The -d"
-#~ msgstr "para cargar nuevas órdenes internas del objeto FICHERO compartido."
-
-#~ msgid "option will delete a builtin previously loaded with -f.  If no"
-#~ msgstr "La opción -d borrará una orden interna cargada con -f. Si no"
-
-#~ msgid "non-option names are given, or the -p option is supplied, a list"
-#~ msgstr ""
-#~ "se especifica ninguna opción, o se especifica la opción -p, se muestra "
-#~ "una lista"
-
-# Se muestra una lista de órdenes internas. sv
-# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en
-# forma "reflexiva". No comento más y te dejo que los mires despacio.
-# Gracias por la observación. cfuga
-#~ msgid "of builtins is printed.  The -a option means to print every builtin"
-#~ msgstr ""
-#~ "de órdenes internas. La opción -a implica mostrar cada orden interno"
-
-#~ msgid "with an indication of whether or not it is enabled.  The -s option"
-#~ msgstr "con una indicación de si está activa o no. La opción -s impide"
-
-#~ msgid "restricts the output to the Posix.2 `special' builtins.  The -n"
-#~ msgstr "la salida a las órdenes internas `especiales' Posix.2. La opción -n"
-
-#~ msgid "option displays a list of all disabled builtins."
-#~ msgstr "muestra una lista de todos las órdenes internas desactivadas."
-
-#~ msgid "Getopts is used by shell procedures to parse positional parameters."
-#~ msgstr ""
-#~ "Los procedimientos de shell usan getopts para decodificar parámetros\n"
-#~ "de posición."
-
-# "a ser reconocidas" no está en español.
-# Yo pondría "las letras de opción que se reconocen". sv
-# De acuerdo. cfuga
-#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter"
-#~ msgstr ""
-#~ "La CADENA_OPCIONES contiene las letras de opción que se reconocen; si una"
-
-#~ msgid "is followed by a colon, the option is expected to have an argument,"
-#~ msgstr ""
-#~ "letra es seguida de dos puntos, se espera que la opción tenga un "
-#~ "argumento,"
-
-#~ msgid "which should be separated from it by white space."
-#~ msgstr "que debe estar separado por espacios."
-
-#~ msgid "Each time it is invoked, getopts will place the next option in the"
-#~ msgstr "Cada vez que se llama, getopts colocará la siguiente opción en"
-
-#~ msgid "shell variable $name, initializing name if it does not exist, and"
-#~ msgstr ""
-#~ "la variable de shell $nombre, creando nombre si no existe, y el índice"
-
-#~ msgid "the index of the next argument to be processed into the shell"
-#~ msgstr ""
-#~ "del siguiente argumento para procesarse dentro de la variable del shell"
-
-#~ msgid "variable OPTIND.  OPTIND is initialized to 1 each time the shell or"
-#~ msgstr "OPTIND. OPTIND inicia con 1 cada vez que el shell o un guión de"
-
-#~ msgid "a shell script is invoked.  When an option requires an argument,"
-#~ msgstr "shell es llamado. Cuando una opción requiere un argumento,"
-
-#~ msgid "getopts places that argument into the shell variable OPTARG."
-#~ msgstr "getopts coloca ese argumento en la variable de shell OPTARG."
-
-# en una de dos formas -> en una de las dos formas siguientes em+
-#~ msgid "getopts reports errors in one of two ways.  If the first character"
-#~ msgstr ""
-#~ "getopts comunica errores en una de las dos formas siguientes. Si el "
-#~ "primer carácter"
-
-#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting.  In"
-#~ msgstr ""
-#~ "de OPTSTRING es dos puntos, getopts usa el aviso de error silencioso."
-
-#~ msgid "this mode, no error messages are printed.  If an illegal option is"
-#~ msgstr ""
-#~ "En este modo, no se muestran mensajes de error.  Si se encuentra una "
-#~ "opción"
-
-#~ msgid "seen, getopts places the option character found into OPTARG.  If a"
-#~ msgstr "ilegal, getopts coloca el carácter de opción encontrado en OPTARG."
-
-#~ msgid "required argument is not found, getopts places a ':' into NAME and"
-#~ msgstr ""
-#~ "Si un argumento necesario no se encuentra, getopts coloca ':' en NOMBRE"
-
-#~ msgid "sets OPTARG to the option character found.  If getopts is not in"
-#~ msgstr "y establece a OPTARG con el carácter de opción encontrado.  Si"
-
-#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into"
-#~ msgstr ""
-#~ "getopts no está en modo silencioso, y se encuentra una opción ilegal,"
-
-#~ msgid "NAME and unsets OPTARG.  If a required option is not found, a '?'"
-#~ msgstr "getopts coloca '?' en NOMBRE y borra OPTARG.  Si no se encuentra"
-
-#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
-#~ msgstr "una opción necesaria, se coloca un '?' en NOMBRE, se borra OPTARG,"
-
-#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the"
-#~ msgstr ""
-#~ "Si la variable de shell OPTERR tiene el valor 0, getopts deshabilita"
-
-#~ msgid "printing of error messages, even if the first character of"
-#~ msgstr "la notificación de mensajes de error, aún si el primer carácter de"
-
-#~ msgid "OPTSTRING is not a colon.  OPTERR has the value 1 by default."
-#~ msgstr "OPTSTRING no es ':'.  OPTERR tiene el valor de 1 por omisión."
-
-#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
-#~ msgstr ""
-#~ "Getopts normalmente compara los parámetros de posición ($0 - $9), pero"
-
-# dar argumentos -> especificar em+
-#~ msgid "more arguments are given, they are parsed instead."
-#~ msgstr ""
-#~ "si se especifican más argumentos, se comparan en lugar de los primeros."
-
-#~ msgid "Exec FILE, replacing this shell with the specified program."
-#~ msgstr ""
-#~ "Ejecuta el FICHERO, reemplazando este shell con el programa especificado."
-
-#~ msgid "If FILE is not specified, the redirections take effect in this"
-#~ msgstr ""
-#~ "Si no se especifica un FICHERO, las redirecciones toman efecto en este"
-
-#~ msgid "shell.  If the first argument is `-l', then place a dash in the"
-#~ msgstr "shell.  Si el primer argumento es `-l', entonces coloca un guión en"
-
-#~ msgid "zeroth arg passed to FILE, as login does.  If the `-c' option"
-#~ msgstr ""
-#~ "el argumento 0 pasado al FICHERO, como lo hace login. Si se especifica la "
-#~ "opción"
-
-#~ msgid "is supplied, FILE is executed with a null environment.  The `-a'"
-#~ msgstr "`-c', el FICHERO se ejecuta en un entorno nulo. La opción `-a'"
-
-#~ msgid "option means to make set argv[0] of the executed process to NAME."
-#~ msgstr "hace que cambie el argv[0] del proceso ejecutado a NOMBRE."
-
-#~ msgid "If the file cannot be executed and the shell is not interactive,"
-#~ msgstr "Si el fichero no se puede ejecutar y el shell no es interactivo,"
-
-#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\""
-#~ msgstr "entonces el shell termina, a menos que la variable"
-
-#~ msgid "is set."
-#~ msgstr "\"no_exit_on_failed_exec\" esté activada."
-
-#~ msgid "is that of the last command executed."
-#~ msgstr "es el del último comando ejecutado."
-
-#~ msgid ""
-#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
-#~ msgstr ""
-#~ "PRIMERO y ÚLTIMO pueden ser números especificando el rango, o PRIMERO"
-
-#~ msgid "string, which means the most recent command beginning with that"
-#~ msgstr "puede ser una cadena, que representa el comando más reciente que"
-
-#~ msgid "string."
-#~ msgstr "comience con dicha cadena."
-
-#~ msgid ""
-#~ "   -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,"
-#~ msgstr ""
-#~ "   -e NOMBRE_E escoge qué editor emplear.  Por omisión es FCEDIT, después"
-
-#~ msgid ""
-#~ "      then the editor which corresponds to the current readline editing"
-#~ msgstr "      EDITOR, después el editor que corresponde a la edición actual"
-
-#~ msgid "      mode, then vi."
-#~ msgstr "      del modo de línea de comando, y finalmente vi."
-
-#~ msgid "   -l means list lines instead of editing."
-#~ msgstr "   -l significa mostrar líneas en lugar de editarlas."
-
-#~ msgid "   -n means no line numbers listed."
-#~ msgstr "   -n significa que no sean mostrados los números de línea."
-
-#~ msgid ""
-#~ "   -r means reverse the order of the lines (making it newest listed "
-#~ "first)."
-#~ msgstr ""
-#~ "   -r significa invertir el orden de las líneas (líneas nuevas primero)."
-
-#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-#~ msgstr "Con el formato `fc -s [pat=rep ...] [orden]', la orden es"
-
-#~ msgid "re-executed after the substitution OLD=NEW is performed."
-#~ msgstr ""
-#~ "re-ejecutado después de que se realiza la sustitución ANTIGUA=NUEVA."
-
-#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
-#~ msgstr ""
-#~ "Un alias útil para usar con esto es r='fc -s', así que al teclear `r cc'"
-
-#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes"
-#~ msgstr ""
-#~ "ejecuta la última orden que comenzó con `cc' y tecleando `r' re-ejecuta"
-
-#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is"
-#~ msgstr ""
-#~ "Si el IDTRABAJO no se encuentra, se usa la noción del shell de trabajo"
-
-#~ msgid "used."
-#~ msgstr "actual."
-
-#~ msgid "Place JOB_SPEC in the background, as if it had been started with"
-#~ msgstr ""
-#~ "Ubica al IDTRABAJO en el background, como si hubiera sido iniciado con"
-
-#~ msgid "`&'.  If JOB_SPEC is not present, the shell's notion of the current"
-#~ msgstr "`&'.  Si el IDTRABAJO no se encuentra, se usa la noción del shell"
-
-#~ msgid "job is used."
-#~ msgstr "de trabajo actual."
-
-#~ msgid "For each NAME, the full pathname of the command is determined and"
-#~ msgstr "Para cada NOMBRE, se determina la ruta completa de la orden y se"
-
-#~ msgid "remembered.  If the -p option is supplied, PATHNAME is used as the"
-#~ msgstr "recuerda.  Si se especifica la opción -p, se usa la RUTA_DE_ACCESO"
-
-#~ msgid "full pathname of NAME, and no path search is performed.  The -r"
-#~ msgstr ""
-#~ "como la ruta completa de NOMBRE y no se realiza la búsqueda de ruta."
-
-#~ msgid "option causes the shell to forget all remembered locations.  If no"
-#~ msgstr ""
-#~ "  La opción -r hace que el shell olvide todas las ubicaciones recordadas."
-
-#~ msgid ""
-#~ "arguments are given, information about remembered commands is displayed."
-#~ msgstr ""
-#~ "  Si no se especifican argumentos, se muestra la información sobre las "
-#~ "órdenes recordadas."
-
-#~ msgid "Display helpful information about builtin commands.  If PATTERN is"
-#~ msgstr "Muestra información de ayuda acerca de las órdenes internas.  Si se"
-
-#~ msgid "specified, gives detailed help on all commands matching PATTERN,"
-#~ msgstr ""
-#~ "especifica la PLANTILLA, da ayuda detallada de todas las órdenes que"
-
-#~ msgid "otherwise a list of the builtins is printed."
-#~ msgstr ""
-#~ "coinciden con la PLANTILLA, de otra forma se muestra una lista de las "
-#~ "órdenes internas."
-
-#~ msgid "Display the history list with line numbers.  Lines listed with"
-#~ msgstr ""
-#~ "Muestra la lista de la historia con números de línea.  Las líneas "
-#~ "mostradas"
-
-#~ msgid "with a `*' have been modified.  Argument of N says to list only"
-#~ msgstr ""
-#~ "con un `*' han sido modificadas.  Un argumento de N indica que solo se"
-
-#~ msgid "the last N lines.  The -c option causes the history list to be"
-#~ msgstr ""
-#~ "muestren las últimas N líneas.  La opción -c hace que la lista de la "
-#~ "historia"
-
-#~ msgid ""
-#~ "cleared by deleting all of the entries.  The `-w' option writes out the"
-#~ msgstr ""
-#~ "sea borrada eliminando todas las entradas.  La opción `-w' escribe la "
-#~ "historia"
-
-#~ msgid ""
-#~ "current history to the history file;  `-r' means to read the file and"
-#~ msgstr ""
-#~ "actual al fichero de historia;  `-r' al contrario, lee el fichero y agrega"
-
-#~ msgid "append the contents to the history list instead.  `-a' means"
-#~ msgstr "el contenido a la lista de la historia.  `-a' agrega las"
-
-#~ msgid "to append history lines from this session to the history file."
-#~ msgstr "líneas de la historia de esta sesión al fichero de historia."
-
-#~ msgid "Argument `-n' means to read all history lines not already read"
-#~ msgstr "El argumento `-n' lee todas las líneas de historia que no han sido"
-
-#~ msgid "from the history file and append them to the history list.  If"
-#~ msgstr ""
-#~ "leídas aún del fichero de historia y las agrega a la lista de historia."
-
-#~ msgid "FILENAME is given, then that is used as the history file else"
-#~ msgstr ""
-#~ "  Si se especifica un FICHERO, entonces se usa como el fichero de historia"
-
-#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
-#~ msgstr ""
-#~ "de otra manera si $HISTFILE tiene un valor, se utiliza, de otra forma se "
-#~ "usa ~/.bash_history."
-
-#~ msgid "If the -s option is supplied, the non-option ARGs are appended to"
-#~ msgstr ""
-#~ "Si se especifica la opción -s, los ARGumentos que no son opciones se"
-
-#~ msgid "the history list as a single entry.  The -p option means to perform"
-#~ msgstr ""
-#~ "agregan a la lista de historia como una sola entrada.  La opción -p "
-#~ "realiza"
-
-#~ msgid ""
-#~ "history expansion on each ARG and display the result, without storing"
-#~ msgstr ""
-#~ "una expansión de historia en cada ARGumento y muestra el resultado, sin "
-#~ "guardar"
-
-#~ msgid "anything in the history list."
-#~ msgstr "nada en la lista de historia."
-
-#~ msgid "Lists the active jobs.  The -l option lists process id's in addition"
-#~ msgstr ""
-#~ "Muestra los trabajos activos.  La opción -l muestra los id's de los "
-#~ "procesos además"
-
-#~ msgid "to the normal information; the -p option lists process id's only."
-#~ msgstr ""
-#~ "de la información normal; la opción -p solamente muestra los id's de los "
-#~ "procesos."
-
-#~ msgid ""
-#~ "If -n is given, only processes that have changed status since the last"
-#~ msgstr ""
-#~ "Si se especifica -n, solamente se muestran los procesos que han cambiado"
-
-#~ msgid ""
-#~ "notification are printed.  JOBSPEC restricts output to that job.  The"
-#~ msgstr ""
-#~ "de estado desde la última notificación.  IDJOB limita la salida a ese "
-#~ "trabajo.  Las"
-
-#~ msgid "-r and -s options restrict output to running and stopped jobs only,"
-#~ msgstr ""
-#~ "opciones -r y -s limitan la salida a mostrar sólo trabajos corriendo y "
-#~ "detenidos,"
-
-#~ msgid "respectively.  Without options, the status of all active jobs is"
-#~ msgstr "respectivamente.  Sin opciones, se muestra el estado de todos los"
-
-#~ msgid ""
-#~ "printed.  If -x is given, COMMAND is run after all job specifications"
-#~ msgstr ""
-#~ "trabajos activos.  Si se especifica -x, la ORDEN se ejecuta después de "
-#~ "que todas las especificaciones de trabajos"
-
-#~ msgid ""
-#~ "that appear in ARGS have been replaced with the process ID of that job's"
-#~ msgstr "que aparecen en ARGS han sido reemplazadas por el ID de proceso del"
-
-#~ msgid "process group leader."
-#~ msgstr "líder del grupo de procesos de dicho trabajo."
-
-#~ msgid "Removes each JOBSPEC argument from the table of active jobs."
-#~ msgstr "Elimina cada argumento IDJOBS de la tabla de trabajos activos."
-
-#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
-#~ msgstr ""
-#~ "Manda a los procesos nombrados por PID (o TRABAJO) la señal SIGSPEC.  Si"
-
-#~ msgid ""
-#~ "SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'"
-#~ msgstr ""
-#~ "no se especifica SIGSPEC, entonces se asume SIGTERM.  El argumento `-l'"
-
-#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to"
-#~ msgstr ""
-#~ "muestra los nombres de señales; si hay argumentos después de `-l', se"
-
-#~ msgid "be signal numbers for which names should be listed.  Kill is a shell"
-#~ msgstr ""
-#~ "asume que son números de señales cuyos nombres deben mostrarse.  Kill es "
-#~ "una orden"
-
-#~ msgid "builtin for two reasons: it allows job IDs to be used instead of"
-#~ msgstr ""
-#~ "interna de shell por dos razones:  permite que los IDs de trabajos sean "
-#~ "usados en lugar de "
-
-#~ msgid "process IDs, and, if you have reached the limit on processes that"
-#~ msgstr "IDs de procesos, y, si ha alcanzado el límite de procesos que"
-
-#~ msgid ""
-#~ "you can create, you don't have to start a process to kill another one."
-#~ msgstr "puede crear, no tiene que iniciar un proceso para eliminar a otro."
-
-# "a ser evaluada" no está en español. sv
-# Cierto. ¿Así está mejor? cfuga
-#~ msgid "Each ARG is an arithmetic expression to be evaluated.  Evaluation"
-#~ msgstr ""
-#~ "Cada ARGumento es una expresión aritmética para evaluarse.  La evaluación"
-
-# overflow -> desbordamiento o sobrepasamiento. nunca lo he visto
-# traducido como sobreflujo. sv
-# Corregido. cfuga
-#~ msgid "is done in long integers with no check for overflow, though division"
-#~ msgstr ""
-#~ "se hace en enteros long sin revisar desbordamientos, aunque la división"
-
-#~ msgid "by 0 is trapped and flagged as an error.  The following list of"
-#~ msgstr "por 0 es capturada y marcada como un error.  La siguiente lista de"
-
-# No sé si existe precedencia en español, pero me suena fatal.
-# Yo pondría simplemente "prioridad". sv
-# Creo que si existe, pero tu sugerencia es mejor. cfuga
-#~ msgid "operators is grouped into levels of equal-precedence operators."
-#~ msgstr ""
-#~ "operadores está agrupada en niveles de operadores de la misma prioridad."
-
-#~ msgid "The levels are listed in order of decreasing precedence."
-#~ msgstr "Se muestran los niveles en orden de prioridad decreciente."
-
-#~ msgid "\t-, +\t\tunary minus, plus"
-#~ msgstr "\t-, +\t\tmenos unario, más"
-
-#~ msgid "\t!, ~\t\tlogical and bitwise negation"
-#~ msgstr "\t!, ~\t\tnegación lógica y basada en bits"
-
-#~ msgid "\t*, /, %\t\tmultiplication, division, remainder"
-#~ msgstr "\t*, /, %\t\tmultiplicación, división, residuo"
-
-#~ msgid "\t+, -\t\taddition, subtraction"
-#~ msgstr "\t+, -\t\tadición, sustracción"
-
-#~ msgid "\t<<, >>\t\tleft and right bitwise shifts"
-#~ msgstr "\t<<, >>\t\tdesplazamientos de bits izquierdo y derecho"
-
-#~ msgid "\t<=, >=, <, >\tcomparison"
-#~ msgstr "\t<=, >=, <, >\tcomparación"
-
-#~ msgid "\t==, !=\t\tequality, inequality"
-#~ msgstr "\t==, !=\t\tequivalencia, inequivalencia"
-
-#~ msgid "\t&\t\tbitwise AND"
-#~ msgstr "\t&\t\tAND de bits"
-
-#~ msgid "\t^\t\tbitwise XOR"
-#~ msgstr "\t^\t\tXOR de bits"
-
-#~ msgid "\t|\t\tbitwise OR"
-#~ msgstr "\t|\t\tOR de bits"
-
-#~ msgid "\t&&\t\tlogical AND"
-#~ msgstr "\t&&\t\tAND lógico"
-
-#~ msgid "\t||\t\tlogical OR"
-#~ msgstr "\t||\t\tOR lógico"
-
-#~ msgid "\texpr ? expr : expr"
-#~ msgstr "\texpr ? expr : expr"
-
-#~ msgid "\t\t\tconditional expression"
-#~ msgstr "\t\t\texpresión condicional"
-
-#~ msgid "\t=, *=, /=, %=,"
-#~ msgstr "\t=, *=, /=, %=,"
-
-#~ msgid "\t+=, -=, <<=, >>=,"
-#~ msgstr "\t+=, -=, <<=, >>=,"
-
-#~ msgid "\t&=, ^=, |=\tassignment"
-#~ msgstr "asignaciones\t&=, ^=, |="
-
-#~ msgid "is replaced by its value (coerced to a long integer) within"
-#~ msgstr "de la variable por su valor (asignado a un entero long) dentro de"
-
-#~ msgid "an expression.  The variable need not have its integer attribute"
-#~ msgstr "una expresión.  La variable no necesita tener activado su atributo"
-
-#~ msgid "turned on to be used in an expression."
-#~ msgstr "entero para que se use en una expresión."
-
-#~ msgid "Operators are evaluated in order of precedence.  Sub-expressions in"
-#~ msgstr ""
-#~ "Los operadores se evalúan en orden de prioridad.  Se evalúan en primer"
-
-#~ msgid "parentheses are evaluated first and may override the precedence"
-#~ msgstr "lugar las sub-expresiones en paréntesis y pueden sobrepasar las"
-
-#~ msgid "rules above."
-#~ msgstr "reglas de prioridad anteriores."
-
-#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
-#~ msgstr "Si el último ARGumento evalua a 0, let regresa 1; de otra manera"
-
-#~ msgid "otherwise."
-#~ msgstr "se regresa 0."
-
-#~ msgid "One line is read from the standard input, and the first word is"
-#~ msgstr "Una línea se lee de la entrada estándar, y la primera palabra se"
-
-#~ msgid ""
-#~ "assigned to the first NAME, the second word to the second NAME, and so"
-#~ msgstr ""
-#~ "asigna al primer NOMBRE, la segunda palabra al segundo NOMBRE, y así"
-
-#~ msgid ""
-#~ "on, with leftover words assigned to the last NAME.  Only the characters"
-#~ msgstr ""
-#~ "con las palabras restantes asignadas al último NOMBRE.  Solo los "
-#~ "caracteres"
-
-#~ msgid "found in $IFS are recognized as word delimiters.  The return code is"
-#~ msgstr ""
-#~ "que se encuentran en $IFS se reconocen como delimitadores de palabras.  El"
-
-#~ msgid ""
-#~ "zero, unless end-of-file is encountered.  If no NAMEs are supplied, the"
-#~ msgstr ""
-#~ "código de retorno es cero, a menos que se encuentre un fin-de-fichero.  "
-#~ "Si no"
-
-#~ msgid ""
-#~ "line read is stored in the REPLY variable.  If the -r option is given,"
-#~ msgstr ""
-#~ "se establece ningún NOMBRE, la línea leída se guarda en la variable "
-#~ "REPLY.  Si"
-
-#~ msgid "this signifies `raw' input, and backslash escaping is disabled.  If"
-#~ msgstr ""
-#~ "se proporciona la opción -r, esto significa entrada `textual', y se "
-#~ "desactiva"
-
-#~ msgid "the `-p' option is supplied, the string supplied as an argument is"
-#~ msgstr "el escape de la barra invertida.  Si se proporciona la opción `-p',"
-
-#~ msgid ""
-#~ "output without a trailing newline before attempting to read.  If -a is"
-#~ msgstr ""
-#~ "se muestra la cadena proporcionada como argumento sin un fín de línea "
-#~ "terminal antes de intentar leerla."
-
-#~ msgid ""
-#~ "supplied, the words read are assigned to sequential indices of ARRAY,"
-#~ msgstr ""
-#~ "Si se da -a, se asignan las palabras leídas a índices secuenciales de "
-#~ "MATRIZ"
-
-#~ msgid "starting at zero.  If -e is supplied and the shell is interactive,"
-#~ msgstr "iniciando en cero.  Si se da -e y el shell es interactivo,"
-
-#~ msgid "readline is used to obtain the line."
-#~ msgstr "se usa readline para obtener la línea."
-
-#~ msgid "is omitted, the return status is that of the last command."
-#~ msgstr "se omite N, se utiliza el código de estado de la última orden."
-
-#~ msgid "    -a  Mark variables which are modified or created for export."
-#~ msgstr ""
-#~ "    -a  Marca las variables que se modifican o crean para exportación."
-
-#~ msgid "    -b  Notify of job termination immediately."
-#~ msgstr "    -b  Notifica el término de trabajos inmediatamente."
-
-#~ msgid "    -e  Exit immediately if a command exits with a non-zero status."
-#~ msgstr ""
-#~ "    -e  Termina inmediatamente si una orden termina con un estado "
-#~ "diferente a cero."
-
-#~ msgid "    -f  Disable file name generation (globbing)."
-#~ msgstr ""
-#~ "    -f  Desactiva la generación de nombres de ficheros (englobamiento)."
-
-#~ msgid "    -h  Remember the location of commands as they are looked up."
-#~ msgstr ""
-#~ "    -h  Recuerda la ubicación de las órdenes como fueron localizadas."
-
-#~ msgid ""
-#~ "    -i  Force the shell to be an \"interactive\" one.  Interactive shells"
-#~ msgstr ""
-#~ "    -i  Fuerza que el shell sea \"interactive\".  Los shells interactivos"
-
-#~ msgid "        always read `~/.bashrc' on startup."
-#~ msgstr "        siempre leen `~/.bashrc' al inicio."
-
-#~ msgid "    -k  All assignment arguments are placed in the environment for a"
-#~ msgstr ""
-#~ "    -k  Todos los argumentos de asignación se ubican en el ambiente para "
-#~ "una"
-
-#~ msgid "        command, not just those that precede the command name."
-#~ msgstr ""
-#~ "        orden, no solamente aquéllos que preceden al nombre de la orden."
-
-#~ msgid "    -m  Job control is enabled."
-#~ msgstr "    -m  Se activa el control de trabajos."
-
-#~ msgid "    -n  Read commands but do not execute them."
-#~ msgstr "    -n  Lee órdenes pero no las ejecuta."
-
-#~ msgid "    -o option-name"
-#~ msgstr "    -o nombre-opción"
-
-#~ msgid "        Set the variable corresponding to option-name:"
-#~ msgstr "        Establece la variable correspondiente a nombre-opción:"
-
-#~ msgid "            allexport    same as -a"
-#~ msgstr "            allexport    igual que -a"
-
-#~ msgid "            braceexpand  same as -B"
-#~ msgstr "            braceexpand  igual que -B"
-
-#~ msgid "            emacs        use an emacs-style line editing interface"
-#~ msgstr ""
-#~ "            emacs        usa una interfaz de edición de línea estilo emacs"
-
-#~ msgid "            errexit      same as -e"
-#~ msgstr "            errexit      igual que -e"
-
-#~ msgid "            hashall      same as -h"
-#~ msgstr "            hashall      igual que -h"
-
-#~ msgid "            histexpand   same as -H"
-#~ msgstr "            histexpand   igual que -H"
-
-#~ msgid "            ignoreeof    the shell will not exit upon reading EOF"
-#~ msgstr "            ignoreeof    el shell no terminará después de leer EOF"
-
-#~ msgid "            interactive-comments"
-#~ msgstr "            interactive-comments"
-
-#~ msgid ""
-#~ "                         allow comments to appear in interactive commands"
-#~ msgstr ""
-#~ "                         permite que los comentarios se muestren en "
-#~ "órdenes interactivas"
-
-#~ msgid "            keyword      same as -k"
-#~ msgstr "            keyword      igual que -k"
-
-#~ msgid "            monitor      same as -m"
-#~ msgstr "            monitor      igual que -m"
-
-#~ msgid "            noclobber    same as -C"
-#~ msgstr "            noclobber    igual que -C"
-
-#~ msgid "            noexec       same as -n"
-#~ msgstr "            noexec       igual que -n"
-
-#~ msgid "            noglob       same as -f"
-#~ msgstr "            noglob       igual que -f"
-
-#~ msgid "            notify       save as -b"
-#~ msgstr "            notify       igual que -b"
-
-#~ msgid "            nounset      same as -u"
-#~ msgstr "            nounset      igual que -u"
-
-#~ msgid "            onecmd       same as -t"
-#~ msgstr "            onecmd       same as -t"
-
-#~ msgid "            physical     same as -P"
-#~ msgstr "            physical     same as -P"
-
-#~ msgid ""
-#~ "            posix        change the behavior of bash where the default"
-#~ msgstr ""
-#~ "            posix        cambia la conducta de bash donde por omisión"
-
-#~ msgid ""
-#~ "                         operation differs from the 1003.2 standard to"
-#~ msgstr ""
-#~ "                         la operación difiere del estándar 1003.2 para"
-
-#~ msgid "                         match the standard"
-#~ msgstr "                         cumplir el estándar"
-
-#~ msgid "            privileged   same as -p"
-#~ msgstr "            privileged   igual que -p"
-
-#~ msgid "            verbose      same as -v"
-#~ msgstr "            verbose      igual que -v"
-
-#~ msgid "            vi           use a vi-style line editing interface"
-#~ msgstr ""
-#~ "            vi           usa una interfaz de edición de línea estilo vi"
-
-#~ msgid "            xtrace       same as -x"
-#~ msgstr "            xtrace       igual que -x"
-
-#~ msgid ""
-#~ "    -p  Turned on whenever the real and effective user ids do not match."
-#~ msgstr ""
-#~ "    -p  Se activa cada vez que los ids real y efectivo no coinciden."
-
-# FIXME: $ENV es variable, no fichero. cfuga
-#~ msgid "        Disables processing of the $ENV file and importing of shell"
-#~ msgstr ""
-#~ "        Desactiva el procesamiento del fichero $ENV y la importación de "
-#~ "funciones"
-
-#~ msgid ""
-#~ "        functions.  Turning this option off causes the effective uid and"
-#~ msgstr "        de shell.  Desactivar esta opción causa que el uid y el gid"
-
-#~ msgid "        gid to be set to the real uid and gid."
-#~ msgstr "        efectivos sean iguales al uid y al gid reales."
-
-#~ msgid "    -t  Exit after reading and executing one command."
-#~ msgstr "    -t  Terminar después de leer y ejecutar una orden."
-
-#~ msgid "    -u  Treat unset variables as an error when substituting."
-#~ msgstr ""
-#~ "    -u  Tratar las variables no establecidas como un error cuando se hace "
-#~ "sustitución."
-
-#~ msgid "    -v  Print shell input lines as they are read."
-#~ msgstr "    -v  Muestra las líneas de entrada del shell mientras se leen."
-
-#~ msgid "    -x  Print commands and their arguments as they are executed."
-#~ msgstr "    -x  Muestra las órdenes y sus argumentos mientras se ejecutan."
-
-#~ msgid "    -B  the shell will perform brace expansion"
-#~ msgstr "    -B  el shell hará expansión de llaves"
-
-#~ msgid "    -H  Enable ! style history substitution.  This flag is on"
-#~ msgstr ""
-#~ "    -H  Activa el estilo ! de sustitución de la historia.  Este indicador"
-
-#~ msgid "        by default."
-#~ msgstr "        está activado por omisión."
-
-#~ msgid "    -C  If set, disallow existing regular files to be overwritten"
-#~ msgstr ""
-#~ "    -C  Si está establecido, evita que los ficheros regulares existentes "
-#~ "sean sobreescritos"
-
-#~ msgid "        by redirection of output."
-#~ msgstr "        por una redirección de salida."
-
-#~ msgid "    -P  If set, do not follow symbolic links when executing commands"
-#~ msgstr ""
-#~ "    -P  Si está establecido, no se siguen los enlaces simbólicos cuando "
-#~ "se ejecutan órdenes"
-
-#~ msgid "        such as cd which change the current directory."
-#~ msgstr "        como cuando cd cambia al directorio actual."
-
-#~ msgid "Using + rather than - causes these flags to be turned off.  The"
-#~ msgstr ""
-#~ "Usar + en lugar de - causa que estos indicadores sean desactivados.  Los"
-
-#~ msgid "flags can also be used upon invocation of the shell.  The current"
-#~ msgstr ""
-#~ "indicadores también se pueden usar durante la invocación del shell.  El "
-#~ "conjunto"
-
-#~ msgid ""
-#~ "set of flags may be found in $-.  The remaining n ARGs are positional"
-#~ msgstr ""
-#~ "actual de indicadores se encuentra en $-.  Los ARGumentos n restantes son "
-#~ "parámetros"
-
-#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n.  If no"
-#~ msgstr "posicionales y se asignan, en orden, a $1, $2, .. $n.  Si no"
-
-#~ msgid "ARGs are given, all shell variables are printed."
-#~ msgstr ""
-#~ "se establecen ARGumentos, se muestran todas las variables del shell."
-
-#~ msgid "For each NAME, remove the corresponding variable or function.  Given"
-#~ msgstr ""
-#~ "Para cada NOMBRE, se borra la variable o función correspondiente.  Al usar"
-
-#~ msgid "the `-v', unset will only act on variables.  Given the `-f' flag,"
-#~ msgstr "`-v', unset sólo actuará en variables.  Al usar el indicador `-f',"
-
-#~ msgid "unset will only act on functions.  With neither flag, unset first"
-#~ msgstr ""
-#~ "unset sólo actuará en funciones.  Sin ningún indicador, unset primero"
-
-#~ msgid "tries to unset a variable, and if that fails, then tries to unset a"
-#~ msgstr ""
-#~ "intenta borrar una variable, y si eso falla, entonces intenta borrar una"
-
-#~ msgid ""
-#~ "function.  Some variables (such as PATH and IFS) cannot be unset; also"
-#~ msgstr ""
-#~ "función.  Algunas variables (como PATH e IFS) no se pueden borrar; vea"
-
-#~ msgid "see readonly."
-#~ msgstr "también readonly."
-
-#~ msgid "NAMEs are marked for automatic export to the environment of"
-#~ msgstr "los NOMBREs se marcan para exportación automática al ambiente de"
-
-#~ msgid "subsequently executed commands.  If the -f option is given,"
-#~ msgstr ""
-#~ "las órdenes ejecutadas subsecuentemente.  Si se establece el indicador -f,"
-
-#~ msgid "the NAMEs refer to functions.  If no NAMEs are given, or if `-p'"
-#~ msgstr ""
-#~ "los NOMBREs se refieren a funciones.  Si no se establecen NOMBREs, o si `-"
-#~ "p'"
-
-#~ msgid "is given, a list of all names that are exported in this shell is"
-#~ msgstr ""
-#~ "se establece, se muestra una lista de todos los nombres que se exportan"
-
-#~ msgid "printed.  An argument of `-n' says to remove the export property"
-#~ msgstr ""
-#~ "en este shell.  Un argumento `-n' indica que se borre la propiedad de "
-#~ "exportación"
-
-#~ msgid "from subsequent NAMEs.  An argument of `--' disables further option"
-#~ msgstr ""
-#~ "de NOMBREs subsecuentes.  Un argumento `--' desactiva el procesamiento"
-
-#~ msgid "processing."
-#~ msgstr "posterior de opciones."
-
-#~ msgid ""
-#~ "The given NAMEs are marked readonly and the values of these NAMEs may"
-#~ msgstr ""
-#~ "Los NOMBREs dados se marcan como sólo-lectura y los valores de esos "
-#~ "NOMBREs"
-
-#~ msgid "not be changed by subsequent assignment.  If the -f option is given,"
-#~ msgstr ""
-#~ "no se pueden cambiar por asignaciones posteriores.  Si se establece el "
-#~ "indicador -f,"
-
-#~ msgid "then functions corresponding to the NAMEs are so marked.  If no"
-#~ msgstr ""
-#~ "entonces también se marcan las funciones correspondientes a los NOMBREs.  "
-#~ "Si no"
-
-#~ msgid ""
-#~ "arguments are given, or if `-p' is given, a list of all readonly names"
-#~ msgstr ""
-#~ "se establecen argumentos, o si se establece `-p', se muestra una lista de "
-#~ "todos los nombres"
-
-#~ msgid ""
-#~ "is printed.  An argument of `-n' says to remove the readonly property"
-#~ msgstr ""
-#~ "de sólo-lectura.  Un argumento `-n' indica que se borre la propiedad de "
-#~ "sólo-lectura"
-
-#~ msgid "from subsequent NAMEs.  The `-a' option means to treat each NAME as"
-#~ msgstr "de los NOMBREs subsecuentes.  La opción `-a' trata cada NOMBRE como"
-
-#~ msgid "an array variable.  An argument of `--' disables further option"
-#~ msgstr ""
-#~ "una variable de matriz.  Un argumento de `--' desactiva opciones "
-#~ "posteriores"
-
-#~ msgid "not given, it is assumed to be 1."
-#~ msgstr "establece N, se asume que es 1."
-
-#~ msgid "Read and execute commands from FILENAME and return.  The pathnames"
-#~ msgstr "Lee y ejecuta órdenes del FICHERO y regresa.  Los nombres de ruta"
-
-#~ msgid "in $PATH are used to find the directory containing FILENAME."
-#~ msgstr ""
-#~ "en $PATH se utilizan para encontrar al directorio que contiene el FICHERO."
-
-#~ msgid "Suspend the execution of this shell until it receives a SIGCONT"
-#~ msgstr "Suspende la ejecución de este shell hasta que recive una señal"
-
-#~ msgid "signal.  The `-f' if specified says not to complain about this"
-#~ msgstr "SIGCONT.  Si se especifica `-f' indica que no se queje si"
-
-#~ msgid "being a login shell if it is; just suspend anyway."
-#~ msgstr "es un shell de login; y solo suspender de cualquier forma."
-
-#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on"
-#~ msgstr "Termina con un estado de 0 (verdad) ó 1 (falsedad) dependiendo de"
-
-#~ msgid "the evaluation of EXPR.  Expressions may be unary or binary.  Unary"
-#~ msgstr ""
-#~ "la evaluación de EXPR.  Las expresiones pueden ser unarias o binarias. "
-#~ "Las expresiones"
-
-#~ msgid "expressions are often used to examine the status of a file.  There"
-#~ msgstr ""
-#~ "unarias se utilizan con frecuencia para examinar el estado de un fichero."
-
-#~ msgid "are string operators as well, and numeric comparison operators."
-#~ msgstr ""
-#~ "Hay operadores de cadenas también, y operadores de comparación numérica."
-
-#~ msgid "File operators:"
-#~ msgstr "Operadores de fichero:"
-
-#~ msgid "    -b FILE        True if file is block special."
-#~ msgstr "    -b FICHERO     Verdadero si el fichero es especial de bloques."
-
-#~ msgid "    -c FILE        True if file is character special."
-#~ msgstr ""
-#~ "    -c FICHERO     Verdadero si el fichero es especial de caracteres."
-
-#~ msgid "    -d FILE        True if file is a directory."
-#~ msgstr "    -d FICHERO     Verdadero si el fichero es un directorio."
-
-#~ msgid "    -e FILE        True if file exists."
-#~ msgstr "    -e FICHERO     Verdadero si el fichero existe."
-
-#~ msgid "    -f FILE        True if file exists and is a regular file."
-#~ msgstr ""
-#~ "    -f FICHERO     Verdadero si el fichero existe y es un fichero regular."
-
-#~ msgid "    -g FILE        True if file is set-group-id."
-#~ msgstr ""
-#~ "    -g FICHERO     Verdadero si el fichero tiene activado el set-group-id."
-
-#~ msgid "    -h FILE        True if file is a symbolic link.  Use \"-L\"."
-#~ msgstr ""
-#~ "    -h FICHERO     Verdadero si el fichero es un enlace simbólico.  Use "
-#~ "\"-L\"."
-
-#~ msgid "    -L FILE        True if file is a symbolic link."
-#~ msgstr "    -L FICHERO     Verdadero si el fichero es un enlace simbólico."
-
-#~ msgid "    -k FILE        True if file has its \"sticky\" bit set."
-#~ msgstr ""
-#~ "    -k FICHERO     Verdadero si el fichero tiene el bit \"sticky\" "
-#~ "activado."
-
-#~ msgid "    -p FILE        True if file is a named pipe."
-#~ msgstr "    -p FICHERO     Verdadero si el fichero es una tubería nombrada."
-
-#~ msgid "    -r FILE        True if file is readable by you."
-#~ msgstr "    -r FICHERO     Verdadero si usted puede leer el fichero."
-
-#~ msgid "    -s FILE        True if file exists and is not empty."
-#~ msgstr "    -s FICHERO     Verdadero si el fichero existe y no está vacío."
-
-#~ msgid "    -S FILE        True if file is a socket."
-#~ msgstr "    -S FICHERO     Verdadero si el fichero es un `socket'."
-
-#~ msgid "    -t FD          True if FD is opened on a terminal."
-#~ msgstr "    -t DF          Verdadero si DF está abierto en una terminal."
-
-#~ msgid "    -u FILE        True if the file is set-user-id."
-#~ msgstr ""
-#~ "    -u FICHERO     Verdadero si el fichero tiene activado el set-user-id."
-
-#~ msgid "    -w FILE        True if the file is writable by you."
-#~ msgstr "    -w FICHERO     Verdadero si usted puede modificar el fichero."
-
-#~ msgid "    -x FILE        True if the file is executable by you."
-#~ msgstr "    -x FICHERO     Verdadero si usted puede ejecutar el fichero."
-
-#~ msgid "    -O FILE        True if the file is effectively owned by you."
-#~ msgstr ""
-#~ "    -O FICHERO     Verdadero si usted efectivamente posee el fichero."
-
-#~ msgid ""
-#~ "    -G FILE        True if the file is effectively owned by your group."
-#~ msgstr ""
-#~ "    -G FICHERO     Verdadero si su grupo efectivamente posee el fichero."
-
-#~ msgid "  FILE1 -nt FILE2  True if file1 is newer than (according to"
-#~ msgstr ""
-#~ "  FICH1 -nt FICH2  Verdadero si fich1 es más nuevo que (de acuerdo a"
-
-#~ msgid "                   modification date) file2."
-#~ msgstr "                   la fecha de modificación) el fich2."
-
-#~ msgid "  FILE1 -ot FILE2  True if file1 is older than file2."
-#~ msgstr "  FICH1 -ot FICH2  Verdadero si fich1 es más viejo que fich2."
-
-#~ msgid "  FILE1 -ef FILE2  True if file1 is a hard link to file2."
-#~ msgstr "  FICH1 -ef FICH2  Verdadero si fich1 es un enlace duro a fich2."
-
-#~ msgid "String operators:"
-#~ msgstr "Operadores de cadenas:"
-
-#~ msgid "    -z STRING      True if string is empty."
-#~ msgstr "    -z CADENA      Verdadero si la cadena está vacía."
-
-#~ msgid "    -n STRING"
-#~ msgstr "    -n CADENA"
-
-#~ msgid "    STRING         True if string is not empty."
-#~ msgstr "    CADENA         Verdadero si la cadena no está vacía."
-
-#~ msgid "    STRING1 = STRING2"
-#~ msgstr "    CADENA1 = CADENA2"
-
-#~ msgid "                   True if the strings are equal."
-#~ msgstr "                   Verdadero si las cadenas son iguales."
-
-#~ msgid "    STRING1 != STRING2"
-#~ msgstr "    CADENA1 != CADENA2"
-
-#~ msgid "                   True if the strings are not equal."
-#~ msgstr "                   Verdadero si las cadenas no son iguales."
-
-#~ msgid "    STRING1 < STRING2"
-#~ msgstr "    CADENA1 < CADENA2"
-
-#~ msgid ""
-#~ "                   True if STRING1 sorts before STRING2 lexicographically"
-#~ msgstr ""
-#~ "                   Verdadero si la CADENA1 se ordena antes que la CADENA2 "
-#~ "lexicográficamente"
-
-#~ msgid "    STRING1 > STRING2"
-#~ msgstr "    CADENA1 > CADENA2"
-
-#~ msgid ""
-#~ "                   True if STRING1 sorts after STRING2 lexicographically"
-#~ msgstr ""
-#~ "                   Verdadero si la CADENA1 se ordena después que la "
-#~ "CADENA2 lexicográficamente"
-
-#~ msgid "Other operators:"
-#~ msgstr "Otros operadores:"
-
-#~ msgid "    ! EXPR         True if expr is false."
-#~ msgstr "    ! EXPR         Verdadero si la expr es falsa"
-
-#~ msgid "    EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
-#~ msgstr "    EXPR1 -a EXPR2 Verdadero si ambas expr1 Y expr2 son verdaderas."
-
-#~ msgid "    EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
-#~ msgstr ""
-#~ "    EXPR1 -o EXPR2  Verdadero si cualquiera de expr1 O expr2 es verdadera."
-
-#~ msgid "    arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,"
-#~ msgstr "    arg1 OP arg2   Pruebas aritméticas.  OP es uno de -eq, -ne,"
-
-#~ msgid "                   -lt, -le, -gt, or -ge."
-#~ msgstr "                   -lt, -le, -gt, ó -ge."
-
-#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-#~ msgstr ""
-#~ "Los operadores binarios aritméticos devuelven verdadero si ARG1 es igual, "
-#~ "no igual,"
-
-#~ msgid ""
-#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
-#~ msgstr "menor, menor o igual, mayor, ó mayor o igual"
-
-#~ msgid "than ARG2."
-#~ msgstr "que ARG2."
-
-#~ msgid "This is a synonym for the \"test\" builtin, but the last"
-#~ msgstr "Es un sinónimo para la orden interna \"test\", pero el último"
-
-#~ msgid "the shell."
-#~ msgstr "ejecutados desde el shell."
-
-#~ msgid "The command ARG is to be read and executed when the shell receives"
-#~ msgstr "La orden ARG se lee y ejecuta cuando el shell recibe la(s)"
-
-#~ msgid "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
-#~ msgstr ""
-#~ "señal(es) ID_SEÑAL.  Si ARG no está, todas las señales especificadas son"
-
-#~ msgid "reset to their original values.  If ARG is the null string each"
-#~ msgstr ""
-#~ "establecidas a sus valores originales.  Si ARG es la cadena nula cada"
-
-#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-#~ msgstr "ID_SEÑAL es ignorada por el shell y por las órdenes que invoque."
-
-#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-#~ msgstr "Si ID_SEÑAL es EXIT (0) la orden ARG se ejecuta al terminar el"
-
-#~ msgid "the shell.  If SIGNAL_SPEC is DEBUG, ARG is executed after every"
-#~ msgstr "shell.  Si ID_SEÑAL es DEBUG, ARG se ejecuta después de cada"
-
-#~ msgid "command.  If ARG is `-p' then the trap commands associated with"
-#~ msgstr "orden.  Si ARG es `-p' entonces se muestran las órdenes de captura"
-
-#~ msgid "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
-#~ msgstr "asociadas con cada ID_SEÑAL.  Si no se proporcionan argumentos o si"
-
-#~ msgid "only `-p' is given, trap prints the list of commands associated with"
-#~ msgstr ""
-#~ "sólo se proporciona `-p', trap muestra la lista de órdenes asociadas"
-
-#~ msgid ""
-#~ "each signal number.  SIGNAL_SPEC is either a signal name in <signal.h>"
-#~ msgstr ""
-#~ "con cada número de señal.  ID_SEÑAL es un nombre de señal en <signal.h>"
-
-#~ msgid ""
-#~ "or a signal number.  `trap -l' prints a list of signal names and their"
-#~ msgstr ""
-#~ "o un número de señal.  `trap -l' muestra una lista de nombres de señal y "
-#~ "sus"
-
-#~ msgid "corresponding numbers.  Note that a signal can be sent to the shell"
-#~ msgstr ""
-#~ "números correspondientes.  Note que una señal se puede enviar al shell"
-
-#~ msgid "with \"kill -signal $$\"."
-#~ msgstr "con \"kill -signal $$\"."
-
-#~ msgid "For each NAME, indicate how it would be interpreted if used as a"
-#~ msgstr "Para cada NOMBRE, indica cómo sería interpretada si se usara como"
-
-#~ msgid "If the -t option is used, returns a single word which is one of"
-#~ msgstr "Si se usa la opción -t, regresa una sola palabra que es una de"
-
-#~ msgid ""
-#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
-#~ msgstr ""
-#~ "`alias', `keyword', `function', `builtin', `file' ó `', si el NOMBRE es un"
-
-#~ msgid ""
-#~ "alias, shell reserved word, shell function, shell builtin, disk file,"
-#~ msgstr ""
-#~ "alias, palabra reservada del shell, función del shell, orden interna del "
-#~ "shell, fichero del disco,"
-
-#~ msgid "or unfound, respectively."
-#~ msgstr "o no encontrada, respectivamente."
-
-#~ msgid "If the -p flag is used, either returns the name of the disk file"
-#~ msgstr ""
-#~ "Si se usa el indicador -p, regresa el nombre del fichero del sistema"
-
-#~ msgid "that would be executed, or nothing if -t would not return `file'."
-#~ msgstr "que sería ejecutado, o nada si -t no regresa algún `fichero'."
-
-#~ msgid "If the -a flag is used, displays all of the places that contain an"
-#~ msgstr ""
-#~ "Si se usa el indicador -a, muestra todos los lugares que contienen un"
-
-#~ msgid ""
-#~ "executable named `file'.  This includes aliases and functions, if and"
-#~ msgstr ""
-#~ "ejecutable llamado `fichero'  Esto incluye a aliases y funciones, si y"
-
-#~ msgid "only if the -p flag is not also used."
-#~ msgstr "sólo si el indicador -p no se especifica también."
-
-#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t,"
-#~ msgstr "Type acepta -all, -path, y -type en lugar de -a, -p, y -t,"
-
-#~ msgid "respectively."
-#~ msgstr "respectivamente."
-
-#~ msgid "Ulimit provides control over the resources available to processes"
-#~ msgstr ""
-#~ "ulimit provee control sobre los recursos disponibles para los procesos"
-
-#~ msgid "started by the shell, on systems that allow such control.  If an"
-#~ msgstr ""
-#~ "iniciados por el shell, en sistemas que permiten dicho control.  Si se"
-
-#~ msgid "option is given, it is interpreted as follows:"
-#~ msgstr "establece una opción, se interpreta como sigue:"
-
-#~ msgid "    -S\tuse the `soft' resource limit"
-#~ msgstr "    -S\tusa el límite de recurso `suave'"
-
-#~ msgid "    -H\tuse the `hard' resource limit"
-#~ msgstr "    -H\tusa el límite de recurso `duro'"
-
-#~ msgid "    -a\tall current limits are reported"
-#~ msgstr "    -a\tse muestran todos los límites actuales"
-
-#~ msgid "    -c\tthe maximum size of core files created"
-#~ msgstr "    -c\tel tamaño máximo de los ficheros `core' creados"
-
-#~ msgid "    -d\tthe maximum size of a process's data segment"
-#~ msgstr "    -d\tel tamaño máximo del segmento de datos de un proceso"
-
-#~ msgid "    -m\tthe maximum resident set size"
-#~ msgstr "    -m\tel tamaño máximo para las variables residentes"
-
-#~ msgid "    -s\tthe maximum stack size"
-#~ msgstr "    -s\tel tamaño máximo de la pila"
-
-#~ msgid "    -t\tthe maximum amount of cpu time in seconds"
-#~ msgstr "    -t\tla cantidad máxima de tiempo de cpu en segundos"
-
-#~ msgid "    -f\tthe maximum size of files created by the shell"
-#~ msgstr "    -f\tel número máximo de ficheros creados por el shell"
-
-#~ msgid "    -p\tthe pipe buffer size"
-#~ msgstr "    -p\tel tamaño del almacenamiento intermedio para tuberías"
-
-#~ msgid "    -n\tthe maximum number of open file descriptors"
-#~ msgstr "    -n\tel número máximo de descriptores de fichero abiertos"
-
-#~ msgid "    -u\tthe maximum number of user processes"
-#~ msgstr "    -u\tel número máximo de procesos de usuario"
-
-#~ msgid "    -v\tthe size of virtual memory"
-#~ msgstr "    -v\tel tamaño de la memoria virtual"
-
-#~ msgid "If LIMIT is given, it is the new value of the specified resource."
-#~ msgstr ""
-#~ "Si se establece el LÍMITE, este es el nuevo valor del recurso "
-#~ "especificado."
-
-#~ msgid "Otherwise, the current value of the specified resource is printed."
-#~ msgstr ""
-#~ "De otra forma, se muestra la lista actual de los recursos especificados."
-
-#~ msgid "If no option is given, then -f is assumed.  Values are in 1k"
-#~ msgstr ""
-#~ "Si no se establece una opción, entonces se asume -f.  Los valores son en "
-#~ "incrementos"
-
-#~ msgid "increments, except for -t, which is in seconds, -p, which is in"
-#~ msgstr "de 1k, excepto para -t, que es en segundos, -p, que es en"
-
-#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of"
-#~ msgstr "incrementos de 512 bytes, y -u, que es un número no escalado de"
-
-#~ msgid "processes."
-#~ msgstr "procesos."
-
-#~ msgid ""
-#~ "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
-#~ msgstr ""
-#~ "La máscara de creación de ficheros del usuario se establece a MODO.  Si "
-#~ "se omite el MODO, o si"
-
-#~ msgid ""
-#~ "`-S' is supplied, the current value of the mask is printed.  The `-S'"
-#~ msgstr ""
-#~ "se proporciona `-S', se muestra el valor actual de la máscara.  La opción"
-
-#~ msgid ""
-#~ "option makes the output symbolic; otherwise an octal number is output."
-#~ msgstr ""
-#~ "`-S' logra una salida simbólica; de otra forma la salida es un número "
-#~ "octal."
-
-#~ msgid "If MODE begins with a digit, it is interpreted as an octal number,"
-#~ msgstr ""
-#~ "Si el MODO comienza con un dígito, se interpreta como un número octal,"
-
-#~ msgid ""
-#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
-#~ msgstr ""
-#~ "de otra forma es una cadena de modo simbólico como la aceptada por chmod"
-#~ "(1)."
-
-#~ msgid ""
-#~ "Wait for the specified process and report its termination status.  If"
-#~ msgstr "Espera al proceso especificado y reporta su estado final.  Si no se"
-
-#~ msgid "N is not given, all currently active child processes are waited for,"
-#~ msgstr ""
-#~ "proporciona N, espera a todos los procesos hijo activos actualmente,"
-
-#~ msgid "and the return code is zero.  N may be a process ID or a job"
-#~ msgstr ""
-#~ "y el código de regreso es cero.  N puede ser un ID de proceso o una "
-#~ "especificación"
-
-#~ msgid "specification; if a job spec is given, all processes in the job's"
-#~ msgstr ""
-#~ "de trabajo; si se proporciona una especificación de trabajo, se espera a "
-#~ "todos los procesos en la"
-
-#~ msgid "pipeline are waited for."
-#~ msgstr "línea de ejecución del trabajo."
-
-#~ msgid "and the return code is zero.  N is a process ID; if it is not given,"
-#~ msgstr ""
-#~ "y el código de regreso es cero.  N es un ID de proceso; si no se "
-#~ "proporcioan,"
-
-#~ msgid "all child processes of the shell are waited for."
-#~ msgstr "espera a todos los procesos hijos del shell."
-
-#~ msgid "The `for' loop executes a sequence of commands for each member in a"
-#~ msgstr ""
-#~ "El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en una"
-
-#~ msgid ""
-#~ "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
-#~ msgstr ""
-#~ "lista de elementos.  Si `in PALABRAS ...;' no se encuentra, entonces se "
-#~ "asume"
-
-#~ msgid ""
-#~ "assumed.  For each element in WORDS, NAME is set to that element, and"
-#~ msgstr ""
-#~ "`in \"$@\"'.  Para cada elemento en PALABRAS, se establece NOMBRE a ese "
-#~ "elemento y"
-
-#~ msgid "the COMMANDS are executed."
-#~ msgstr "se ejecutan las ÓRDENES."
-
-#~ msgid "The WORDS are expanded, generating a list of words.  The"
-#~ msgstr "Las PALABRAS se expanden, generando una lista de palabras.  El"
-
-#~ msgid "set of expanded words is printed on the standard error, each"
-#~ msgstr ""
-#~ "conjunto de palabras expandidas se muestra en la salida de error estándar"
-
-#~ msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
-#~ msgstr ""
-#~ "cada una precedida por un número.  Si `in PALABRAS' no se encuentra, se "
-#~ "asume"
-
-#~ msgid "is assumed.  The PS3 prompt is then displayed and a line read"
-#~ msgstr "`in \"$@\"'.  El prompt PS3 se muestra y se lee una línea de"
-
-#~ msgid "from the standard input.  If the line consists of the number"
-#~ msgstr "la entrada estándar.  Si la línea consiste del número"
-
-#~ msgid "corresponding to one of the displayed words, then NAME is set"
-#~ msgstr ""
-#~ "correspondiente a una de las palabras mostradas, entonces se establece "
-#~ "NOMBRE"
-
-#~ msgid "to that word.  If the line is empty, WORDS and the prompt are"
-#~ msgstr "a esa palabra.  Si la línea está vacía, se muestran de nuevo"
-
-#~ msgid "redisplayed.  If EOF is read, the command completes.  Any other"
-#~ msgstr ""
-#~ "las PALABRAS y el prompt.  Si se lee EOF, la orden se completa. Cualquier "
-#~ "otro"
-
-#~ msgid "value read causes NAME to be set to null.  The line read is saved"
-#~ msgstr "valor leído causa que NOMBRE sea nulo.  La línea leída se salva en"
-
-#~ msgid "in the variable REPLY.  COMMANDS are executed after each selection"
-#~ msgstr ""
-#~ "la variable REPLY.  Las ÓRDENES se ejecutan después de cada selección"
-
-#~ msgid "until a break or return command is executed."
-#~ msgstr "hasta que se ejecute una orden break ó return."
-
-#~ msgid "`|' is used to separate multiple patterns."
-#~ msgstr "`|' se usa para separar plantillas múltiples."
-
-#~ msgid ""
-#~ "The if COMMANDS are executed.  If the exit status is zero, then the then"
-#~ msgstr ""
-#~ "Las ÓRDENES if se ejecutan.  Si el código de regreso es cero, entonces "
-#~ "las ÓRDENES"
-
-#~ msgid ""
-#~ "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
-#~ msgstr ""
-#~ "then se ejecutan.  De otra forma, cada uno de las ÓRDENES elif se ejecutan"
-
-#~ msgid ""
-#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS"
-#~ msgstr ""
-#~ "en turno, y si el código de regreso es cero, las ÓRDENES then "
-#~ "correspondientes"
-
-#~ msgid ""
-#~ "are executed and the if command completes.  Otherwise, the else COMMANDS"
-#~ msgstr ""
-#~ "se ejecutan y la orden if se completa.  De otra forma, las ÓRDENES else"
-
-#~ msgid ""
-#~ "are executed, if present.  The exit status is the exit status of the last"
-#~ msgstr ""
-#~ "se ejecutan, si se encuentran.  El código de salida es el código de "
-#~ "salida de la última"
-
-#~ msgid "command executed, or zero if no condition tested true."
-#~ msgstr "orden ejecutada, o cero si ninguna condición probada fue verdadera."
-
-#~ msgid "`while' COMMANDS has an exit status of zero."
-#~ msgstr "`while' tenga un código de salida de cero."
-
-#~ msgid "`until' COMMANDS has an exit status which is not zero."
-#~ msgstr "`until' tenga un código de salida que no sea cero."
-
-#~ msgid "Create a simple command invoked by NAME which runs COMMANDS."
-#~ msgstr ""
-#~ "Crea un comando simple invocado por el NOMBRE que ejecuta las ÓRDENES."
-
-#~ msgid "Arguments on the command line along with NAME are passed to the"
-#~ msgstr ""
-#~ "Los argumentos en la línea de comando junto con el NOMBRE se pasan a la"
-
-#~ msgid "function as $0 .. $n."
-#~ msgstr "función como $0 .. $n."
-
-#~ msgid "entire set of commands."
-#~ msgstr "conjunto completo de órdenes"
-
-#~ msgid "This is similar to the `fg' command.  Resume a stopped or background"
-#~ msgstr ""
-#~ "Esto es similar a la orden `fg'. Reinicia un trabajo detenido o en el"
-
-#~ msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
-#~ msgstr ""
-#~ "background.  Si especifica DÍGITOS, entonces se usa ese trabajo.  Si "
-#~ "proporciona"
-
-#~ msgid ""
-#~ "WORD, then the job whose name begins with WORD is used.  Following the"
-#~ msgstr ""
-#~ "una PALABRA, entonces se usa el trabajo cuyo nombre comience con PALABRA."
-
-#~ msgid "job specification with a `&' places the job in the background."
-#~ msgstr ""
-#~ "Al colocar una especificación de trabajo seguido de un `&', se coloca al "
-#~ "trabajo en el background. "
-
-#~ msgid "BASH_VERSION    The version numbers of this Bash."
-#~ msgstr "BASH_VERSION    Los números de versión de este Bash."
-
-#~ msgid "CDPATH          A colon separated list of directories to search"
-#~ msgstr "CDPATH         Una lista separada por `:' de directorios a buscar"
-
-#~ msgid "\t\twhen the argument to `cd' is not found in the current"
-#~ msgstr "\t\tcuando el argumento para `cd' no se encuentra en el directorio"
-
-#~ msgid "\t\tdirectory."
-#~ msgstr "\t\tactual."
-
-#~ msgid ""
-#~ "HISTFILE        The name of the file where your command history is stored."
-#~ msgstr ""
-#~ "HISTFILE        El nombre del fichero donde se guarda la historia de "
-#~ "órdenes."
-
-#~ msgid "HISTFILESIZE    The maximum number of lines this file can contain."
-#~ msgstr ""
-#~ "HISTFILESIZE    El número máximo de líneas que este fichero puede "
-#~ "contener."
-
-#~ msgid "HISTSIZE        The maximum number of history lines that a running"
-#~ msgstr "HISTSIZE        El número máximo de líneas de historia que un shell"
-
-#~ msgid "\t\tshell can access."
-#~ msgstr "\t\ten ejecución puede acceder."
-
-#~ msgid "HOME            The complete pathname to your login directory."
-#~ msgstr ""
-#~ "HOME            La ruta completa a su directorio de entrada (login)."
-
-#~ msgid ""
-#~ "HOSTTYPE        The type of CPU this version of Bash is running under."
-#~ msgstr ""
-#~ "HOSTTYPE        El tipo de CPU bajo el cual esta versión de Bash corre."
-
-#~ msgid ""
-#~ "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
-#~ msgstr ""
-#~ "IGNOREEOF       Controla la acción del shell al recibir un carácter EOF"
-
-#~ msgid "\t\tcharacter as the sole input.  If set, then the value"
-#~ msgstr "\t\tcomo la única entrada.  Si se establece, entonces el valor"
-
-#~ msgid "\t\tof it is the number of EOF characters that can be seen"
-#~ msgstr ""
-#~ "\t\tde esta variable es el número de caracteres EOF que se pueden recibir"
-
-#~ msgid "\t\tin a row on an empty line before the shell will exit"
-#~ msgstr ""
-#~ "\t\ten forma seguida en una línea vacía antes de que el shell termine"
-
-#~ msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
-#~ msgstr ""
-#~ "\t\t(10 por omisión).  Cuando se desactiva, EOF significa el fin de la "
-#~ "entrada."
-
-#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
-#~ msgstr ""
-#~ "MAILCHECK\tQue tan seguido, en segundos, Bash revisa si hay correo nuevo."
-
-#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
-#~ msgstr ""
-#~ "MAILPATH\tUna lista de nombres de fichero separados por dos puntos que "
-#~ "Bash revisa"
-
-#~ msgid "\t\tfor new mail."
-#~ msgstr "\t\tpor correo nuevo."
-
-#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
-#~ msgstr ""
-#~ "OSTYPE\t\tLa versión de Unix bajo la cual esta versión de Bash se ejecuta."
-
-#~ msgid "PATH            A colon-separated list of directories to search when"
-#~ msgstr ""
-#~ "PATH            Una lista de directorios separada por dos puntos para "
-#~ "buscar"
-
-#~ msgid "\t\tlooking for commands."
-#~ msgstr "\t\tcuando se requieren órdenes."
-
-#~ msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
-#~ msgstr "PROMPT_COMMAND  Una orden a ejecutar antes de mostrar cada"
-
-#~ msgid "\t\tprimary prompt."
-#~ msgstr "\t\tprompt primario."
-
-#~ msgid "PS1             The primary prompt string."
-#~ msgstr "PS1             La cadena primaria de prompt."
-
-#~ msgid "PS2             The secondary prompt string."
-#~ msgstr "PS2             La cadena secundaria de prompt."
-
-#~ msgid "TERM            The name of the current terminal type."
-#~ msgstr "TERM            El nombre del tipo de terminal actual."
-
-#~ msgid "auto_resume     Non-null means a command word appearing on a line by"
-#~ msgstr ""
-#~ "auto_resume     Si no es nulo significa que una palabra de orden que "
-#~ "aparece en una línea"
-
-#~ msgid "\t\titself is first looked for in the list of currently"
-#~ msgstr "\t\tpor sí mismo se busca primero en la lista de trabajos detenidos"
-
-#~ msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
-#~ msgstr ""
-#~ "\t\tactualmente.  Si se encuentra ahí, ese trabajo se trae a primer plano."
-
-#~ msgid "\t\tA value of `exact' means that the command word must"
-#~ msgstr "\t\tEl valor `exact' significa que la palabra de la orden debe"
-
-#~ msgid "\t\texactly match a command in the list of stopped jobs.  A"
-#~ msgstr ""
-#~ "\t\tcoincidir exactamente con una orden en la lista de trabajos "
-#~ "detenidos.  El"
-
-#~ msgid "\t\tvalue of `substring' means that the command word must"
-#~ msgstr "\t\tvalor `substring' significa que la palabra de la orden debe"
-
-#~ msgid "\t\tmatch a substring of the job.  Any other value means that"
-#~ msgstr ""
-#~ "\t\tcoincidir con una subcadena del trabajo.  Cualquier otro valor "
-#~ "significa que"
-
-#~ msgid "\t\tthe command must be a prefix of a stopped job."
-#~ msgstr "\t\tla orden debe ser un prefijo de un trabajo detenido."
-
-#~ msgid "command_oriented_history"
-#~ msgstr "command_oriented_history"
-
-#~ msgid ""
-#~ "                Non-null means to save multiple-line commands together on"
-#~ msgstr ""
-#~ "                Si no es nulo significa que debe guardar órdenes de "
-#~ "varias líneas juntas en"
-
-#~ msgid "                a single history line."
-#~ msgstr "                una sola línea de historia."
-
-#~ msgid "histchars       Characters controlling history expansion and quick"
-#~ msgstr ""
-#~ "histchars       Caracteres que controlan la expansión de la historia y la"
-
-#~ msgid "\t\tsubstitution.  The first character is the history"
-#~ msgstr "\t\tsustitución rápida.  El primer carácter es el carácter de"
-
-#~ msgid "\t\tsubstitution character, usually `!'.  The second is"
-#~ msgstr "\t\tsustutución de historia, generalmente `!'.  El segundo es"
-
-#~ msgid "\t\tthe `quick substitution' character, usually `^'.  The"
-#~ msgstr "\t\tel carácter de `sustitución rápida', generalmente `^'.  El"
-
-#~ msgid "\t\tthird is the `history comment' character, usually `#'."
-#~ msgstr ""
-#~ "\t\ttercero es el carácter de `comentario de historia', generalmente `#'."
-
-#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter"
-#~ msgstr ""
-#~ "HISTCONTROL\tEstablecido con el valor `ignorespace', significa que no "
-#~ "agrega"
-
-#~ msgid "\t\tlines which begin with a space or tab on the history"
-#~ msgstr "\t\tlíneas que inicien con un espacio o tabulador a la lista de"
-
-#~ msgid "\t\tlist.  Set to a value of `ignoredups', it means don't"
-#~ msgstr "\t\thistoria.  Con el valor `ignoredups', significa que no agrega"
-
-#~ msgid "\t\tenter lines which match the last entered line.  Set to"
-#~ msgstr "\t\tlíneas que coincidan con la última línea introducida.  Con"
-
-#~ msgid "\t\t`ignoreboth' means to combine the two options.  Unset,"
-#~ msgstr ""
-#~ "\t\t`ignoreboth' significa que combina las dos opciones.  Sin establecer,"
-
-#~ msgid "\t\tor set to any other value than those above means to save"
-#~ msgstr ""
-#~ "\t\to con cualquier otro valor diferente a los arriba mencionados "
-#~ "significa"
-
-#~ msgid "\t\tall lines on the history list."
-#~ msgstr "\t\tguardar todas las líneas en la lista de la historia."
-
-#~ msgid "Toggle the values of variables controlling optional behavior."
-#~ msgstr ""
-#~ "Cambia los valores de las variables que controlan conductas opcionales."
-
-#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
-#~ msgstr ""
-#~ "El indicador -s significa establecer cada NOMBRE_OPCIÓN; el indicador -u"
-
-#~ msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
-#~ msgstr ""
-#~ "borra cada NOMBRE_OPCIÓN.  El indicador -q suprime la salida; el estado"
-
-#~ msgid "status indicates whether each OPTNAME is set or unset.  The -o"
-#~ msgstr "de salida indica cuál NOMBRE_OPCIÓN está activado o no.  La opción"
-
-#~ msgid "option restricts the OPTNAMEs to those defined for use with"
-#~ msgstr ""
-#~ "-o restringe a los NOMBRE_OPCIONes a aquéllos definidos para su uso con"
-
-#~ msgid "`set -o'.  With no options, or with the -p option, a list of all"
-#~ msgstr ""
-#~ "`set -o'.  Sin opciones, o con la opción -p, se muestra una lista de"
-
-#~ msgid "settable options is displayed, with an indication of whether or"
-#~ msgstr "todas las opciones activables, con una indicación de si se puede"
-
-#~ msgid "not each is set."
-#~ msgstr "o no activar cada una."
+"    Sinónimo de `mapfile'."
index fe741426462b3011334479e41d205c8ce7b89559..018c11f3295dee5172f6c25541532d94091eeda3 100644 (file)
Binary files a/po/et.gmo and b/po/et.gmo differ
index 02eb22a0e1e8297191e3f0b9320d1ba69ace387d..ccd3c7a96bf1baf5d502c9d420e5fe472f210b2b 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 3.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2006-11-11 16:38+0200\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
 "Language-Team: Estonian <et@li.org>\n"
@@ -14,120 +14,121 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-15\n"
 "Content-Transfer-Encoding: 8-bit\n"
 "Language: et\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "vigane massiivi indeks"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, fuzzy, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: vigane tegevuse nimi"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: mitte-numbrilisele indeksile ei saa omistada"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: ei saa luua: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: esimine mitte-tühemik sümbol pole `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "sulgev `%c' puudub %s sees"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: puudub eraldav koolon"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, fuzzy, c-format
 msgid "`%s': invalid alias name"
 msgstr "%s: vigane tegevuse nimi"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr ""
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr ""
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: ei saa lugeda: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': ei saa lahti siduda"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': tundmatu funktsiooni nimi"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s ei ole seotud ühegi klahviga.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s saab kasutada läbi "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': ei saa lahti siduda"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr ""
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "omab mõtet ainult `for', `while' või `until' tsüklis"
 
@@ -139,236 +140,236 @@ msgid ""
 "    Without EXPR, returns "
 msgstr "Tagastab jooksva alamprotseduuri konteksti."
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME pole seatud"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "liiga palju argumente"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "teist kataloogi pole"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD pole seatud"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr ""
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, fuzzy, c-format
 msgid "warning: "
 msgstr "%s: hoiatus: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, fuzzy, c-format
 msgid "%s: usage: "
 msgstr "%s: hoiatus: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: võti nõuab argumenti"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: nõutakse numbrilist argumenti"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: ei leitud"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: vigane võti"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: vigane võtme nimi"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': ei ole lubatud identifikaator"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 #, fuzzy
 msgid "invalid octal number"
 msgstr "vigane signaali number"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 #, fuzzy
 msgid "invalid hex number"
 msgstr "vigane number"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "vigane number"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: vigane signaali spetsifikatsioon"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: mittemuudetav muutuja"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s on piiridest väljas"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s on piiridest väljas"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: sellist tööd pole"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: töökontroll puudub"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "töökontroll puudub"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: piiratud"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "piiratud"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ei ole sisekäsk"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "kirjutamise viga: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr ""
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: segane töö"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: vigane tegevuse nimi"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr ""
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr ""
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "saab kasutada ainult funktsioonis"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: vigane tegevuse nimi"
+msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funktsioon ei ole muudetav"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: masiivi muutujaid ei saa nii kustutada"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -402,68 +403,68 @@ msgstr "%s: pole d
 msgid "%s: cannot delete: %s"
 msgstr "%s: ei saa kustutada: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: on kataloog"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ei ole tavaline fail"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: fail on liiga suur"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: kahendfaili ei õnnestu käivitada"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: ei saa käivitada: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr ""
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "pole login shell: kasutage `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Teil on peatatud töid.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, fuzzy, c-format
 msgid "There are running jobs.\n"
 msgstr "Teil on peatatud töid.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "käsku ei ole"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr ""
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: ajutist faili ei saa avada: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr ""
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr ""
@@ -478,39 +479,38 @@ msgstr "%s: lubamatu v
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: võti nõuab argumenti -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr ""
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr ""
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, fuzzy, c-format
 msgid "hits\tcommand\n"
 msgstr "viimane käsklus: %s\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: ei saa avada: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -522,20 +522,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr ""
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr ""
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: vigane number"
+msgstr "%s: vigane võtme nimi"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr ""
@@ -549,16 +550,16 @@ msgstr "%s: vigane teenus"
 msgid "no other options allowed with `-x'"
 msgstr ""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr ""
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Tundmatu viga"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "oodati avaldist"
 
@@ -567,70 +568,70 @@ msgstr "oodati avaldist"
 msgid "%s: not an indexed array"
 msgstr "%s: pole massiiv"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr ""
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr ""
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, fuzzy, c-format
 msgid "%s: invalid line count"
 msgstr "%s: vigane võti"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, fuzzy, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: vigane võti"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, fuzzy, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: vigane tegevuse nimi"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 #, fuzzy
 msgid "empty array variable name"
 msgstr "%s: pole massiiv"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr ""
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr ""
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, fuzzy, c-format
 msgid "`%c': invalid time format specification"
 msgstr "%s: vigane signaali spetsifikatsioon"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr ""
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, fuzzy, c-format
 msgid "warning: %s: %s"
 msgstr "%s: hoiatus: "
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr ""
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr ""
@@ -644,19 +645,19 @@ msgstr "teist kataloogi pole"
 msgid "%s: invalid argument"
 msgstr "%s: vigane number"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<jooksev kataloog puudub>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr ""
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr ""
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -680,7 +681,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -705,7 +706,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -731,40 +732,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr ""
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "viga lugemisel: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: ei saa eemaldada"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: pole massiiv"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ei ole funktsioon"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: ei saa eemaldada"
@@ -773,20 +774,20 @@ msgstr "%s: ei saa eemaldada"
 msgid "shift count"
 msgstr "shift arv"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr ""
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr ""
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: faili ei ole"
@@ -799,61 +800,61 @@ msgstr "peatamine ei 
 msgid "cannot suspend a login shell"
 msgstr "login shelli ei saa peatada"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr ""
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s on shelli võtmesõna\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s: on funktsioon\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s on shelli sisekäsk\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s on shelli sisekäsk\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s on %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr ""
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': halb käsklus"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: ei õnnestu lugeda piirangut: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr ""
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: ei õnnestu muuta piirangut: %s"
@@ -872,398 +873,407 @@ msgstr ""
 msgid "`%c': invalid symbolic mode character"
 msgstr ""
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr ""
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "viimane käsklus: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Katkestan..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "tundmatu viga käsus"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr ""
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr ""
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr ""
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: sidumata muutuja"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr ""
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr ""
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 #, fuzzy
 msgid "pipe error"
 msgstr "kirjutamise viga: %s"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: käsku ei ole"
 
-#: execute_cmd.c:5470
-#, fuzzy, c-format
+#: execute_cmd.c:5682
+#, c-format
 msgid "%s: %s"
-msgstr "%s on %s\n"
+msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: halb interpretaator"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: kahendfaili ei õnnestu käivitada"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s on shelli sisekäsk\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr ""
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "avaldise rekursioon on liiga sügav"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr ""
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "süntaksi viga avaldises"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "üritati omistada mitte-muutujale"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "süntaksi viga avaldises"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "nulliga jagamine"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr ""
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr ""
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponent on väiksem kui 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "puudub `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "süntaksi viga: oodati operandi"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "süntaksi viga: vigane aritmeetiline operaator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr ""
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "vigane aritmeetiline baas"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "väärtus on baasiks liiga suur"
 
-#: expr.c:1546
+#: expr.c:1637
 #, fuzzy, c-format
 msgid "%s: expression error\n"
 msgstr "%s: oodati täisarvude avaldist"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr ""
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr ""
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: pid puudub"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr ""
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr ""
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr ""
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr ""
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr ""
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr ""
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr ""
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr ""
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr ""
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr ""
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr ""
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr ""
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: töö %d on peatatud"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: töö on lõpetatud"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: töö %d on juba taustal"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, fuzzy, c-format
 msgid "%s: line %d: "
 msgstr "%s: hoiatus: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr ""
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr ""
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr ""
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr ""
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr ""
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr ""
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr ""
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr ""
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 #, fuzzy
 msgid "unknown"
 msgstr "%s: tundmatu masin"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 
@@ -1305,22 +1315,22 @@ msgstr ""
 msgid "network operations not supported"
 msgstr ""
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr ""
@@ -1338,147 +1348,147 @@ msgstr "Teil on uus kiri kaustas $_"
 msgid "The mail in %s has been read\n"
 msgstr "Kiri kaustas %s on loetud\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "süntaksi viga: nõutakse aritmeetilist avaldist"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "süntaksi viga: ootamatu `;'"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "süntaksi viga: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr ""
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr ""
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "süntaksi viga tingimuslikus avaldises"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "ootamatu märk `%s', oodati `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "oodati `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr ""
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr ""
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr ""
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr ""
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr ""
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "süntaksi viga kohal `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "süntaksi viga: ootamatu faililõpp"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "süntaksi viga"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr ""
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr ""
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1507,90 +1517,94 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr ""
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "faili deskriptor on piiridest väljas"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: segane ümbersuunamine"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: fail on olemas, ei kirjuta üle"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: piiratud: väljundit ei saa ümber suunata"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr ""
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "$%s: sedasi ei saa omistada"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr ""
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "/tmp puudub, palun looge see!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp peab olema kataloogi nimi"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: vigane võti"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr ""
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr ""
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: on kataloog"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Mul ei ole nime!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr ""
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1599,50 +1613,50 @@ msgstr ""
 "Kasuta:\t%s [GNU pikk võti] [võti] ...\n"
 "\t%s [GNU pikk võti] [võti] skript-fail ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU pikad võtmed:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Käsuinterpretaatori võtmed:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s või -o võti\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: vigane operatsioon"
@@ -1709,9 +1723,8 @@ msgid "Alarm clock"
 msgstr ""
 
 #: siglist.c:111
-#, fuzzy
 msgid "Terminated"
-msgstr "piiratud"
+msgstr ""
 
 #: siglist.c:115
 msgid "Urgent IO condition"
@@ -1818,103 +1831,107 @@ msgstr ""
 msgid "Unknown Signal #%d"
 msgstr ""
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr ""
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr ""
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr ""
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr ""
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr ""
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr ""
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "sulgev `%c' puudub %s sees"
+msgstr ""
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr ""
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr ""
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr ""
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: halb asendus"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: vigane võti"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: vigane tegevuse nimi"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameeter on null või pole seatud"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameeter on null või pole seatud"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr ""
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: halb asendus"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: sedasi ei saa omistada"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, fuzzy, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "sulgev `%c' puudub %s sees"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "ei leitud: %s"
@@ -1937,114 +1954,119 @@ msgstr "oodati `)'"
 msgid "`)' expected, found %s"
 msgstr "oodati `)', saadi %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: eeldati unaarset operaatorit"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: eeldati binaarset operaatorit"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "puudub `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "vigane signaali number"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: vigane signaal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr ""
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst"
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "$%s: sedasi ei saa omistada"
+msgstr ""
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst"
 
-#: variables.c:4218
+#: variables.c:4698
 #, fuzzy, c-format
 msgid "%s has null exportstr"
 msgstr "%s: parameeter on null või pole seatud"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr ""
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr ""
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: pole global_variables kontekst"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
+#: variables.c:6272
 #, fuzzy, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: ei saa avada: %s"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s on piiridest väljas"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
 
 #: version.c:47 version2.c:47
@@ -2066,22 +2088,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: ei saa luua: %s"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: ei saa luua: %s"
@@ -2285,7 +2307,7 @@ msgid "umask [-p] [-S] [mode]"
 msgstr ""
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr ""
 
 #: builtins.c:181
@@ -2378,7 +2400,7 @@ msgstr ""
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2390,7 +2412,7 @@ msgid ""
 msgstr ""
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr ""
 
 #: builtins.c:242
@@ -2401,8 +2423,8 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 
 #: builtins.c:256
@@ -2510,7 +2532,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2654,11 +2676,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2726,12 +2748,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2744,7 +2772,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2771,7 +2799,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2783,7 +2811,7 @@ msgid ""
 "    Returns exit status of command or success if command is null."
 msgstr ""
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2824,7 +2852,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2847,7 +2875,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -2855,7 +2883,7 @@ msgid ""
 "    is that of the last command executed."
 msgstr ""
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2864,7 +2892,7 @@ msgid ""
 "    in a login shell."
 msgstr ""
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2894,7 +2922,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2906,7 +2934,7 @@ msgid ""
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -2920,7 +2948,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -2944,7 +2972,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -2959,14 +2987,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -2975,7 +3003,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3000,7 +3029,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3024,7 +3053,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3041,7 +3070,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3064,7 +3093,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3109,7 +3138,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3130,7 +3159,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3161,7 +3190,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3173,7 +3202,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3259,7 +3288,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3281,7 +3310,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3300,7 +3329,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3321,7 +3350,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3332,7 +3361,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3346,7 +3375,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3360,7 +3389,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3443,7 +3472,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3451,7 +3480,7 @@ msgid ""
 "    be a literal `]', to match the opening `['."
 msgstr ""
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3463,7 +3492,7 @@ msgid ""
 "    Always succeeds."
 msgstr ""
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3507,7 +3536,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3537,7 +3566,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3586,7 +3615,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3604,7 +3633,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3612,19 +3641,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3639,7 +3670,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3652,7 +3683,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3669,7 +3700,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3689,7 +3720,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3705,7 +3736,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3716,7 +3747,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3737,7 +3768,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3748,7 +3779,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3759,7 +3790,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3772,7 +3803,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3786,7 +3817,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3797,7 +3828,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3811,7 +3842,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3822,7 +3853,7 @@ msgid ""
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3850,7 +3881,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3904,7 +3935,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -3935,7 +3966,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -3962,7 +3993,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -3991,14 +4022,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4012,7 +4042,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4051,7 +4081,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4069,16 +4099,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4091,7 +4125,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4106,6 +4140,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4122,7 +4157,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4164,25 +4199,13 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
-
 #~ msgid " "
 #~ msgstr " "
 
index 96ee531accf3521332d9c56e2cbdfcaf65738a52..88502dd255a2b8fca1e9018c7f742964e753109e 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index 5fb8cc48c322cc7522638e85e38e290f97b10b80..5fffd5e0fd184d9ec717d05f614b07c2fda28ff3 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash-4.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2009-05-09 15:13+0300\n"
 "Last-Translator: Pekka Niemi <pekka.niemi@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -17,124 +17,125 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fi\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Lokalize 0.3\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "virheellinen taulukkoindeksi"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: virheellinen assosiatiivinen indeksi"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää "
 "avainindeksiä"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: ei voida luoda: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole ”\"”"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "ei loppumerkkiä ”%c” rivissä %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: puuttuva kaksoispiste-erotin"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, fuzzy, c-format
 msgid "`%s': invalid alias name"
 msgstr "”%s”: virheellinen näppäinkartan nimi"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "rivieditointi ei ole käytössä"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "”%s”: virheellinen näppäinkartan nimi"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: ei voida lukea: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "”%s”: ei voida irrottaa"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "”%s”: tuntematon funktio"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s ei ole sidottu mihinkään näppäimeen.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s voidaan käynnistää näppäinkomennolla "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "”%s”: ei voida irrottaa"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "toistolaskuri"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "voidaan käyttää vain ”for”-, ”while”- tai ”until”-silmukoissa"
 
@@ -148,234 +149,234 @@ msgstr ""
 "    \n"
 "    Ilman LAUSEKETTA palauttaa"
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME-ympäristömuuttujaa ei ole asetettu"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "liian monta argumenttia"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "ei toista hakemistoa"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "rivi %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "varoitus: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: käyttö: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: valitsin vaatii argumentin"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: vaaditaan numeerinen argumentti"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: ei löytynyt"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: virheellinen valitsin"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: virheellinen valitsimen nimi"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "”%s”: virheellinen tunniste"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "virheellinen oktaaliluku"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "virheellinen heksadesimaaliluku"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "virheellinen luku"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: virheellinen signaalimääritys"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "”%s”: ei ole prosessitunnus eikä kelvollinen työtunniste"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: kirjoitussuojattu muuttuja"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s rajojen ulkopuolella"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumentti"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s rajojen ulkopuolella"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: työtä ei löydy"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ei työnohjausta"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ei työnohjausta"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: rajoitettu"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "rajoitettu"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ei ole komentotulkin sisäänrakennettu komento"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "kirjoitusvirhe: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "pääteasetuksia luettaessa tapahtui virhe: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ei ole yksiselitteinen työtunniste"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: virheellinen toiminnon nimi"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: ei lavennusmääritystä"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "voidaan käyttää ainoastaan funktiossa"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%d: virheellinen tiedostokahva: %s"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%d: virheellinen tiedostokahva: %s"
+msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: kirjoitussuojattu funktio"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: taulukkomuuttujia ei voi tuhota näin"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi"
@@ -409,68 +410,68 @@ msgstr "%s: ei dynaamisesti ladattu"
 msgid "%s: cannot delete: %s"
 msgstr "%s: ei voida poistaa: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: on hakemisto"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ei tavallinen tiedosto"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: tiedosto on liian iso"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: binääritiedostoa ei voida suorittaa"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: ei voida suorittaa: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "lopetus\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ei ole sisäänkirjautumiskomentotulkki: käytä komentoa ”exit”"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Töitä on pysäytettynä.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Töitä on ajossa.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "ei löytynyt komentoa"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "komentohistoriamääritys"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: väliaikaistiedostoa ei voitu avata: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "nykyinen"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "työ %d käynnistyi ilman työnohjausta"
@@ -485,28 +486,27 @@ msgstr "%s: virheellinen valitsin – %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: valitsin vaatii argumentin – %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hajautus kytketty pois"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hajautustaulukko on tyhjä\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "osumia\tkomento\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Sopivat komennot avainsanaan `"
 msgstr[1] "Sopivat komennot avainsanoihin `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -514,12 +514,12 @@ msgstr ""
 "Ohjeita kohteelle ”%s” ei löydy. Kokeile ”help help”, ”man -k %s” tai \n"
 "”info %s”."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: ei voida avata: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -540,20 +540,21 @@ msgstr ""
 "Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "valitsimista -anrw voidaan käyttää vain yhtä"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "sijainti komentohistoriassa"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: virheellinen rajoitusargumentti"
+msgstr "%s: virheellinen valitsimen nimi"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: historiaviittaus epäonnistui"
@@ -567,16 +568,16 @@ msgstr "%s: inlib epäonnistui"
 msgid "no other options allowed with `-x'"
 msgstr "”-x”:n kanssa ei voida käyttää muita valitsimia"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Tuntematon virhe"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "odotettiin lauseketta"
 
@@ -585,69 +586,69 @@ msgstr "odotettiin lauseketta"
 msgid "%s: not an indexed array"
 msgstr "%s: ei ole taulukkomuuttuja"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: virheellinen tiedostokahvamääritys"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: virheellinen tiedostokahva: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: virheellinen rivimäärä"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: virheellinen taulukkoindeksi"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: virheellinen paluukutsumäärä"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "tyhjä taulukkomuuttujan nimi"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "vaaditaan tukea taulukkomuuttujille"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "”%s”: puuttuva muotoilumerkki"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, fuzzy, c-format
 msgid "`%c': invalid time format specification"
 msgstr "%s: virheellinen aikakatkaisumääritys"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "”%c”: virheellinen muotoilumerkki"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "varoitus: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "\\x:stä puuttuu heksadesimaalinumero"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, fuzzy, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "\\x:stä puuttuu heksadesimaalinumero"
@@ -661,19 +662,19 @@ msgstr "ei toista hakemistoa"
 msgid "%s: invalid argument"
 msgstr "%s: virheellinen rajoitusargumentti"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<ei nykyhakemistoa>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "hakemistopino on tyhjä"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "hakemistopinon indeksi"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -715,7 +716,7 @@ msgstr ""
 "      -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n"
 "    \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -757,7 +758,7 @@ msgstr ""
 "    \n"
 "    Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -800,40 +801,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: virheellinen aikakatkaisumääritys"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "lukuvirhe: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "”return” on käytettävissä vain funktiossa tai ladatussa skriptissä"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: ei voida poistaa"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: ei voida poistaa: kirjoitussuojattu %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ei ole taulukkomuuttuja"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ei ole funktio"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: ei voida poistaa"
@@ -842,22 +843,22 @@ msgstr "%s: ei voida poistaa"
 msgid "shift count"
 msgstr "siirtolaskuri"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä "
 "samanaikaisesti"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: virheellinen komentotulkin valitsimen nimi"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "vaaditaan tiedostonimi argumentiksi"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: tiedostoa ei löytynyt"
@@ -870,61 +871,61 @@ msgstr "ei voida keskeyttää"
 msgid "cannot suspend a login shell"
 msgstr "sisäänkirjautumiskomentotulkkia ei voi keskeyttää"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s on aliasioitu ”%s”\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s on komentotulkin avainsana\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s on funktio\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s on komentotulkin sisäänrakennettu komento\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s on komentotulkin sisäänrakennettu komento\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s on %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s on hajautettu (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: virheellinen rajoitusargumentti"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "”%c”: virheellinen komento"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: rajoitusta ei saada: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "rajoitus"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: rajoitusta ei voida muokata: %s"
@@ -943,357 +944,367 @@ msgstr "”%c”: virheellinen symbolisen tilan operaattori"
 msgid "`%c': invalid symbolic mode character"
 msgstr "”%c”: virheellinen symbolisen tilan merkki"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " rivi "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "viimeinen komento: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Keskeytetään..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "tuntematon komentovirhe"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "virheellinen komentotyyppi"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "virheellinen liittäjä"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "virheellinen hyppy"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: sitomaton muuttuja"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "AJAN MUOTOMÄÄRITYS: ”%c”: virheellinen muotoilumerkki"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "putkitusvirhe"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää ”/”-merkkiä"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: komentoa ei löydy"
 
-#: execute_cmd.c:5470
-#, fuzzy, c-format
+#: execute_cmd.c:5682
+#, c-format
 msgid "%s: %s"
-msgstr "%s on %s\n"
+msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: virheellinen tulkki"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: binääritiedostoa ei voida suorittaa"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s on komentotulkin sisäänrakennettu komento\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "lausekkeen rekursiomäärä ylittyi"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "rekursiopinon alivuoto"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "lauseoppivirhe lausekkeessa"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "lauseoppivirhe lausekkeessa"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "jako nollalla"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bugi: virheellinen sijoitusavainsana"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "”:”:ttä odotettiin ehdolliseen lausekkeeseen"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponentti on pienempi kuin 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "puuttuva ”)”"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "lauseoppivirhe: odotettiin operandia"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (virheellinen avainsana on ”%s”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "virheellinen lukujärjestelmä"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "liian iso luku lukujärjestelmälle"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: virhe lausekkeessa\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: ylempiin hakemistoihin ei päästä"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "bashin syötteeksi ei voida avata uutta tiedostokahvaa kahvasta %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp-putki"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: prosessi %5ld (%s) putkijonossa"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: prosessitunnusta ei löydy."
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signaali %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Valmis"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Pysäytetty"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Pysäytetty(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Ajossa"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Valmis(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Poistui %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Tuntematon tila"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(luotiin core-tiedosto)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (työhakemisto: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "lapsiprosessin setpgid (%ld => %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Prosessista %ld ei ole tietoja"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: työ %d on pysäytetty"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: työ on lopetettu"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: työ %d on jo taustalla"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: rivi %d:"
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (luotiin core-tiedosto)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(työhakemisto nyt: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp epäonnistui"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: vuonhallinta"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: vuonhallinta"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "tällä komentotulkilla ei ole työnohjausta"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: varmistus epäonnistui: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1302,39 +1313,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: varmistus epäonnistui\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "tuntematon"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: vapaitten listan lohko ylikirjoittui"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: kutsuttiin argumenttina jo vapautettu lohko"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: kutsuttuun argumenttina varaamaton lohko"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: alku- ja loppulohkojen koot eroavat"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: kutsuargumentti on varaamaton lohko"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: alku- ja loppulohkojen koot eroavat"
 
@@ -1376,22 +1387,22 @@ msgstr "%s: virheellinen verkkopolkumääritys"
 msgid "network operations not supported"
 msgstr "verkko-operaatioita ei ole tuettu"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
 
-#: locale.c:261
+#: locale.c:274
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
@@ -1409,149 +1420,149 @@ msgstr "Sinulla on uutta postia laatikossa $_"
 msgid "The mail in %s has been read\n"
 msgstr "Posti laatikossa %s on luettu\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "lauseoppivirhe: odottamaton ”;”"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "lauseoppivirhe: ”((%s))”"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: virheellinen käskytyyppi %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin ”%s”)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: uudelleenohjaus ”%d” rajojen ulkopuolella"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa ”%c”"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "odottamaton EOF odotettaessa ”]]”"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana ”%s”"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "lauseoppivirhe ehdollisessa lausekkeessa"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "odottamaton avainsana ”%s”, odotettiin ”)”"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "odototettiin ”)”"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "odottamaton argumentti ”%s” ehdolliselle unaariselle operaattorille"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 "odottamaton avainsana ”%s”, odotettiin ehdollista binääristä operaattoria"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "odotettiin ehdollista binääristä operaattoria"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "odottamaton argumentti ”%s” ehdolliselle binääriselle operaattorille"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "odottamaton avainsana ”%c” ehdollisessa komennossa"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "odottamaton avainsana ”%s” ehdollisessa komennossa"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "odottamaton avainsana %d ehdollisessa komennossa"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa ”%s”"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "lauseoppivirhe lähellä ”%s”"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "lauseoppivirhe: odottamaton tiedostonloppu"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "lauseoppivirhe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Kirjoita ”%s” poistuaksesi komentotulkista.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "Odottamaton EOF odotettaessa vastaavaa ”)”"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "täydennys: funktiota ”%s” ei löytynyt"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1580,90 +1591,94 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ”%c”: virheellinen muotoilumerkki"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "tiedostokahva rajojen ulkopuolella"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: epämääräinen uudelleenohjaus"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "/tmp-hakemistoa ei löytynyt, luo se!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: virheellinen valitsin"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: on hakemisto"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Minulla ei ole nimeä!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versio %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1672,55 +1687,55 @@ msgstr ""
 "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n"
 "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU:n pitkät valitsimet:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Komentotulkin valitsimet:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s tai -o -valitsin\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Kirjoita ”%s -c 'help set'” saadaksesi lisätietoja komentotulkin "
 "valitsimista.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Kirjoita ”%s -c help” saadaksesi lisätietoja komentotulkin "
 "sisäänrakennetuista komennoista.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Raportoi virheet komennolla ”bashbug”.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: virheellinen operaatio"
@@ -1894,103 +1909,108 @@ msgstr "Tuntematon signaali #"
 msgid "Unknown Signal #%d"
 msgstr "Tuntematon signaali #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "virheellinen korvaus: ei sulkevaa ”%s” jonossa %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "putkea ei voida luoda prosessin korvaamista varten"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "nimettyä putkea %s ei voida avata lukemista varten"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "putkea ei voida luoda komennon korvaamista varten"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1"
 
-#: subst.c:6580 subst.c:8939
-#, fuzzy, c-format
-msgid "%s: invalid variable name for name reference"
-msgstr "%d: virheellinen tiedostokahva: %s"
-
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6710 subst.c:9623
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: virheellinen korvaus"
+msgid "%s: invalid variable name for name reference"
+msgstr ""
 
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: virheellinen rivimäärä"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
-msgstr "”%s”: virheellinen näppäinkartan nimi"
+msgstr "%s: virheellinen toiminnon nimi"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: alimerkkijonolauseke < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: virheellinen korvaus"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: ei voida asettaa näin"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "ei osumia: %s"
@@ -2013,30 +2033,35 @@ msgstr "odotettiin ”)”"
 msgid "`)' expected, found %s"
 msgstr "odotettiin ”)”, löydettiin %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: odotettiin unaarista operaattoria"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: odotettiin binääristä operaattoria"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "puuttuva ”]”"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "virheellinen signaalinumero"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2044,86 +2069,86 @@ msgstr ""
 "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen "
 "itselleni"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: virheellinen signaali %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "virhe tuotaessa ”%s”:n funktiomääritystä"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: ei funktiokontekstia nykytilassa"
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
+msgstr ""
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%d: virheellinen tiedostokahva: %s"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: ei funktiokontekstia nykytilassa"
 
-#: variables.c:4218
+#: variables.c:4698
 #, fuzzy, c-format
 msgid "%s has null exportstr"
 msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "virheellinen merkki %d %s:n exportstr:ssä"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "ei =:ä kohteen %s exportstr:ssä"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: ei global_variables-kontekstia"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien "
 "ympäristössä"
 
-#: variables.c:5619
+#: variables.c:6272
 #, fuzzy, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: ei voida avata: %s"
 
-#: variables.c:5624
+#: variables.c:6277
 #, fuzzy, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%d: virheellinen tiedostokahva: %s"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s rajojen ulkopuolella"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Copyright © 2009 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2149,22 +2174,22 @@ msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Takuuta ei ole lain määräämissä rajoissa.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: ei voida varata %lu tavua (varattiin %lu tavua)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "xmalloc: ei voitu varata %lu tavua"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: %s:%d: ei voida varata %lu tavua (varattiin %lu tavua)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "xmalloc: %s:%d: ei voida varata %lu tavua"
@@ -2388,13 +2413,13 @@ msgstr "umask [-p] [-S] [tila]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2483,7 +2508,7 @@ msgstr "printf [-v muuttuja] muoto [argumentit]"
 #: builtins.c:231
 #, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2503,7 +2528,7 @@ msgstr ""
 
 #: builtins.c:239
 #, fuzzy
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o valitsin] [nimi ...]"
 
 #: builtins.c:242
@@ -2516,9 +2541,10 @@ msgstr ""
 "[-C paluukutsu] [-c määrä] [taulukko]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u "
 "tiedostokahva] \n"
@@ -2696,6 +2722,7 @@ msgstr ""
 "    Paluuarvo on 0 ellei N ole suurempi tai yhtäsuuri kuin 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2706,7 +2733,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Suorita komentotulkin sisäänrakennettuja komentoja.\n"
 "    \n"
@@ -2944,11 +2971,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3069,6 +3096,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3102,7 +3135,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa onnistuneen ellei tapahdu virhettä."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3124,7 +3157,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa onnistuneen ellei tapahdu virhettä."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3178,7 +3211,7 @@ msgstr ""
 "sisäänrakennettu\n"
 "    komento tai tapahtuu virhe."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3197,7 +3230,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3277,7 +3310,7 @@ msgstr ""
 "valitsimet\n"
 "    loppuvat tai tapahtuu virhe."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3320,7 +3353,7 @@ msgstr ""
 "uudelleenohjauksessa\n"
 "    tapahtuu virhe."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3332,7 +3365,7 @@ msgstr ""
 "    Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n"
 "    on viimeisen komennon paluuarvo."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3345,7 +3378,7 @@ msgstr ""
 "    Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N.  Palauttaa\n"
 "    virheen jos ei olla sisäänkirjautumiskomentotulkissa."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3399,7 +3432,7 @@ msgstr ""
 "    Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n"
 "    poikkeava virhetilanteessa."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3420,7 +3453,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3446,7 +3479,7 @@ msgstr ""
 "tapahtuu\n"
 "    virhe."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3492,7 +3525,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu "
 "virheellinen valitsin."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3508,7 +3541,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3534,7 +3567,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n"
 "    virheellinen."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3544,7 +3577,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3600,7 +3634,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin "
 "tai     tapahtuu virhe."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3645,7 +3679,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n"
 "    tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3678,7 +3712,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on     "
 "virheellinen."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3722,7 +3756,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai "
 "tapahtuu virhe."
 
-#: builtins.c:942
+#: builtins.c:947
 #, fuzzy
 msgid ""
 "Evaluate arithmetic expressions.\n"
@@ -3811,7 +3845,7 @@ msgstr ""
 "    Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n"
 "    tapauksessa 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3833,7 +3867,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3902,7 +3936,7 @@ msgstr ""
 "    Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n"
 "    ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3926,7 +3960,7 @@ msgstr ""
 "suorittamassa\n"
 "    funktiota tai skriptiä."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4097,7 +4131,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4136,7 +4170,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
 "    tai NIMI on kirjoitussuojattu."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4170,7 +4204,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
 "    tai NIMI on virheellinen."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4209,7 +4243,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
 "    tai NIMI on virheellinen."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4228,7 +4262,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4253,7 +4287,7 @@ msgstr ""
 "epäonnistuu\n"
 "    mikäli TIEDOSTOA ei voida lukea."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4280,7 +4314,7 @@ msgstr ""
 "tapahtuu\n"
 "    virhe."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4443,7 +4477,7 @@ msgstr ""
 "    Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n"
 "    LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4455,7 +4489,7 @@ msgstr ""
 "    Tämä on sisäänrakennetun ”test”-komennon synonyymi, mutta viimeisen\n"
 "    argumentin pitää olla ”]”, joka sulkee avaavan ”[”:n."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4475,7 +4509,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Onnistuu aina."
 
-#: builtins.c:1357
+#: builtins.c:1362
 #, fuzzy
 msgid ""
 "Trap signals and other events.\n"
@@ -4557,7 +4591,7 @@ msgstr ""
 "annettu\n"
 "    virheellinen valitsin."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4614,7 +4648,7 @@ msgstr ""
 "    Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n"
 "    epäonnistuu."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4705,7 +4739,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
 "    tai tapahtuu virhe."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4740,7 +4774,7 @@ msgstr ""
 "    Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n"
 "    virheellinen valitsin."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4749,13 +4783,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4774,7 +4810,7 @@ msgstr ""
 "    Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
 "    virheellinen valitsin."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -4800,7 +4836,7 @@ msgstr ""
 "    Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
 "    virheellinen valitsin."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4822,7 +4858,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4854,7 +4890,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4891,7 +4927,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4920,7 +4956,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    KOMENTOKETJUN paluuarvo."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4939,7 +4975,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4973,7 +5009,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4991,7 +5027,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen komennon paluuarvo."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5009,7 +5045,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5032,7 +5068,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    KOMENNON paluuarvo."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5055,7 +5091,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Onnistuu, ellei NIMI ole kirjoitussuojattu."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5074,7 +5110,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Viimeisen suoritetun komennon paluuarvo."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5100,7 +5136,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Työn tila."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5118,7 +5154,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5172,7 +5208,7 @@ msgstr ""
 "    Paluuarvo:\n"
 "    0 tai 1 riippuen LAUSEKKEEN arvosta."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5275,7 +5311,7 @@ msgstr ""
 "    HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n"
 "    \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5334,7 +5370,7 @@ msgstr ""
 "tai\n"
 "    hakemiston vaihtaminen epäonnistuu."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5382,7 +5418,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n"
 "    hakemiston vaihto epäonnistuu."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5437,14 +5473,14 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
 "    tai tapahtuu virhe."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5475,7 +5511,7 @@ msgstr ""
 "    Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n"
 "    annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5535,7 +5571,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
 "    tapahtuu kirjoitus- tai sijoitusvirhe."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5554,10 +5590,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5583,7 +5623,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n"
 "    tapahtuu virhe."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5606,7 +5646,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
 "    tapahtuu virhe."
 
-#: builtins.c:1996
+#: builtins.c:2006
 #, fuzzy
 msgid ""
 "Modify or display completion options.\n"
@@ -5622,6 +5662,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5660,7 +5701,7 @@ msgstr ""
 "    Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
 "    NIMELLE ei ole määritetty täydennysmääritystä."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5734,7 +5775,7 @@ msgstr ""
 "    tai TAULUKKO on kirjoitussuojattu."
 
 # Changed " characters into ”...
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5744,9 +5785,15 @@ msgstr ""
 "    \n"
 "    ”mapfile”:n synonyymi."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc."
+#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)"
+
+#~ msgid "xrealloc: cannot allocate %lu bytes"
+#~ msgstr "xrealloc: ei voida varata %lu tavua"
+
+#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+#~ msgstr ""
+#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5759,32 +5806,3 @@ msgstr ""
 
 #~ msgid "times"
 #~ msgstr "times"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi <http://gnu.org/licenses/"
-#~ "gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)"
-
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: ei voida varata %lu tavua"
-
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr ""
-#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)"
index 7c7a736f1091506349a9c513c693a656556d946c..3277a3543314c1b21c171ca6081dda154e590ede 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index 4816b052f1299a2456d1f04994b15aa0859bbe09..dea194b0262270235ad9cf7ce91ac6b2a20f2c7a 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
 # Messages français pour GNU concernant bash.
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Michel Robitaille <robitail@IRO.UMontreal.CA>, 2004
 # Christophe Combelles <ccomb@free.fr>, 2008, 2009, 2010, 2011
-# Frédéric Marchal <fmarchal@perso.be>, 2015
+# Frédéric Marchal <fmarchal@perso.be>, 2018
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-17 13:49+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-01 19:00+0100\n"
 "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n >= 2);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "mauvais indice de tableau"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: retire l'attribut nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s : impossible de convertir un tableau indexé en associatif"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s : clé non valable pour le tableau associatif"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s : impossible d'assigner à un index non numérique"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s : impossible de créer : %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command : impossible de trouver le mappage clavier pour la "
 "commande"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s : le premier caractère non vide n'est pas « \" »"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "pas de « %c » de fermeture dans %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s : virgule de séparation manquante"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
-"expansion des accolades : échec lors de l'allocation mémoire pour %d éléments"
+"expansion des accolades : échec lors de l'allocation mémoire pour %u éléments"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "« %s » : nom d'alias non valable"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "édition de ligne non activée"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "« %s » : nom du mappage clavier invalide"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s : impossible de lire : %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "« %s » : impossible à délier"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "« %s » : nom de fonction inconnu"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s n'est lié à aucune touche.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s peut être appelé via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "« %s » : impossible à délier"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "nombre de boucles"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "ceci n'a un sens que dans une boucle « for », « while » ou « until »"
 
@@ -148,240 +149,239 @@ msgstr ""
 "    \n"
 "    Sans EXPR, renvoie"
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "« HOME » non défini"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "trop d'arguments"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "de répertoire se fait vers le nouveau répertoire supérieur."
+msgstr "répertoire nul"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "« OLDPWD » non défini"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "ligne %d : "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "avertissement :"
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s : utilisation :"
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s : l'option nécessite un argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s : argument numérique nécessaire"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s : non trouvé"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s : option non valable"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s : nom d'option non valable"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "« %s » : identifiant non valable"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "nombre octal non valable"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "nombre hexadécimal non valable"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "nombre non valable"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s : indication de signal non valable"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr ""
 "« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s : variable en lecture seule"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s : %s hors plage"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s hors plage"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s : tâche inexistante"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s : pas de contrôle de tâche"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "pas de contrôle de tâche"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s : restreint"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restreint"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s : ceci n'est pas une primitive du shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "erreur d'écriture : %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "erreur lors de la définition de l'attribut du terminal : %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "erreur lors de la récupération de l'attribut du terminal : %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s : spécification de tâche ambiguë"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "l'aide n'est pas disponible dans cette version"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s : nom d'action non valable"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s : pas d'indication de complètement"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi "
 "vous vous attendez"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi "
 "vous vous attendez"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "fonction de complétion actuellement non en cours d'exécution"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "utilisable seulement dans une fonction"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s : la variable de référence ne peut pas être un tableau"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s : références bouclées sur la même variable interdites"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s : référence de nom circulaire"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s : nom de variable invalide pour une référence de nom"
+msgstr "« %s » : nom de variable invalide pour une référence de nom"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s : fonction en lecture seule"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s : impossible de détruire des variables tableaux de cette façon"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s : impossible de convertir un tableau indexé en tableau associatif"
@@ -415,68 +415,68 @@ msgstr "%s : non chargé dynamiquement"
 msgid "%s: cannot delete: %s"
 msgstr "%s : impossible d'effacer : %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s : ceci est un répertoire"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s : ceci n'est pas un fichier régulier"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s : le fichier est trop grand"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s : ne peut exécuter le fichier binaire"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s : impossible d'exécuter : %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "déconnexion\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ce n'est pas un shell de connexion : utilisez « exit »"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Il y a des tâches stoppées.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Il y a des tâches en cours d'exécution.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "aucune commande trouvée"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "indication d'historique"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s : impossible d'ouvrir le fichier temporaire : %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "courant"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "tâche %d démarrée sans contrôle de tâche"
@@ -491,28 +491,27 @@ msgstr "%s : option non permise -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s : l'option nécessite un argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hachage désactivé"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s : table de hachage vide\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "occurrences\tcommande\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Commandes du shell correspondant au mot-clé « "
 msgstr[1] "Commandes du shell correspondant aux mots-clés « "
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -520,12 +519,12 @@ msgstr ""
 "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %"
 "s » ou « info %s »."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s : impossible d'ouvrir : %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -546,20 +545,21 @@ msgstr ""
 "Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "impossible d'utiliser plus d'une option parmi « -anrw »"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "position dans l'historique"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s : argument non valable"
+msgstr "%s : horodatage non valable"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s : l'expansion de l'historique a échoué"
@@ -573,17 +573,17 @@ msgstr "%s : « inlib » a échoué"
 msgid "no other options allowed with `-x'"
 msgstr "pas d'autre option permise avec « -x »"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr ""
 "%s : les arguments doivent être des identifiants de tâche ou de processus"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Erreur inconnue"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "une expression est attendue"
 
@@ -592,69 +592,69 @@ msgstr "une expression est attendue"
 msgid "%s: not an indexed array"
 msgstr "%s : n'est pas un tableau indexé"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s : spécification de descripteur de fichier non valable"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d : descripteur de fichier non valable : %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s : nombre de lignes non valable"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s : origine de tableau non valable"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s : quantum de callback non valable"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nom de variable tableau vide"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "nécessité de prise en charge des variables tableaux"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "« %s » : caractère de format manquant"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "« %c » : spécification de format d'heure incorrecte"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "« %c » : caractère de format non permis"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "avertissement : %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problème d'analyse du format : %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "chiffre hexadécimal manquant pour \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "chiffre unicode manquant pour \\%c"
@@ -668,19 +668,19 @@ msgstr "pas d'autre répertoire"
 msgid "%s: invalid argument"
 msgstr "%s : argument non valable"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<aucun répertoire courant>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "pile de répertoire vide"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "indice de pile de répertoire"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -723,7 +723,7 @@ msgstr ""
 "    -N\tAffiche le Nième élément en comptant de zéro depuis la droite de la\n"
 "    liste affichée par « dirs » lorsque celle-ci est appelée sans option."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -769,7 +769,7 @@ msgstr ""
 "    \n"
 "    Vous pouvez voir la pile des répertoires avec la commande « dirs »."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -813,44 +813,44 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s : spécification de délai d'expiration non valable"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "erreur de lecture : %d : %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "« return » n'est possible que depuis une fonction ou depuis un script exécuté "
 "par « source »"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 "« unset » ne peut pas s'appliquer simultanément à une fonction et à une "
 "variable"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s : « unset » impossible"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s : « unset » impossible : %s est en lecture seule"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s : n'est pas une variable tableau"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s : n'est pas une fonction"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s : impossible d'exporter"
@@ -859,22 +859,22 @@ msgstr "%s : impossible d'exporter"
 msgid "shift count"
 msgstr "nombre de « shift »"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "les options du shell ne peuvent pas être simultanément activées et "
 "désactivées"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s : nom d'option du shell non valable"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "nom de fichier nécessaire en argument"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s : fichier introuvable"
@@ -887,61 +887,61 @@ msgstr "suspension impossible"
 msgid "cannot suspend a login shell"
 msgstr "un shell de connexion ne peut pas être suspendu"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s est un alias vers « %s »\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s est un mot-clé du shell\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s est une fonction\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s est une primitive spéciale du shell\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s est une primitive du shell\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s est %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s est haché (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s : argument de limite non valable"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "« %c » : mauvaise commande"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s : impossible d'obtenir la limite : %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limite"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s : impossible de modifier la limite : %s"
@@ -960,363 +960,371 @@ msgstr "« %c » : opérateur de mode symbolique non valable"
 msgid "`%c': invalid symbolic mode character"
 msgstr "« %c » : caractère de mode symbolique non valable"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " ligne "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "dernière commande : %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Annulation…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "erreur de commande inconnue"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "mauvais type de commande"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "mauvais connecteur"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "mauvais saut"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s : variable sans liaison"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aattente de données expirée : déconnexion automatique\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT : « %c » : caractère de format non valable"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] existe encore"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "erreur de tube"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 "eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 "%s : dépassement de la profondeur maximum d'imbrication de sources (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 "%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s : commande introuvable"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s : %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s : %s : mauvais interpréteur"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s : impossible d'exécuter le fichier binaire : %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "« %s » : est une primitive spéciale"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "impossible de dupliquer le fd %d vers le fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "dépassement du niveau de récursivité dans l'expression"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "débordement négatif de la pile de récursivité"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "erreur de syntaxe dans l'expression"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "tentative d'affectation à une non-variable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "erreur de syntaxe dans l'affectation d'une variable"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "division par 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bogue : mauvais symbole pour expassign"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "« : » attendu pour une expression conditionnelle"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exposant négatif"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifiant attendu après un pré-incrément ou un pré-décrément"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "« ) » manquante"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "erreur de syntaxe : opérande attendu"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "erreur de syntaxe : opérateur arithmétique non valable"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s : %s (le symbole erroné est « %s »)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "base arithmétique non valable"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valeur trop grande pour la base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s : erreur d'expression\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd : ne peut accéder aux répertoires parents"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "impossible d'allouer un nouveau descripteur de fichier pour l'entrée de bash "
 "depuis le fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline : pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process : processus %5ld (%s) dans le_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process : pid %5ld (%s) signalé toujours en vie"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid : %ld : n° de processus inexistant"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Fini"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stoppé"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stoppé(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "En cours d'exécution"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Fini(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Termine %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "État inconnu"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd : %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "fils setpgid (%ld à %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait : le processus n°%ld n'est pas un fils de ce shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for : Aucun enregistrement du processus n°%ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job : la tâche %d est stoppée"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s : la tâche s'est terminée"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s : la tâche %d est déjà en arrière plan"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s : ligne %d : "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(maintenant, wd : %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control : getpgrp a échoué"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control : discipline de ligne"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control : setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "impossible de régler le groupe de processus du terminal (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "pas de contrôle de tâche dans ce shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc : échec de l'assertion : %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1325,39 +1333,39 @@ msgstr ""
 "\r\n"
 "malloc : %s:%d : assertion manquée\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "inconnu"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc : bloc écrasé sur liste libre"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free : appelé avec un bloc déjà libéré comme argument"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free : appelé avec un bloc non alloué comme argument"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free : les tailles de fragment au début et à la fin sont différentes"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc : appelé avec un bloc non alloué comme argument"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 "realloc : les tailles de fragment au début et à la fin sont différentes"
@@ -1400,23 +1408,23 @@ msgstr "%s : mauvaise spécification de chemin réseau"
 msgid "network operations not supported"
 msgstr "opérations sur le réseau non prises en charge"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 "setlocale : LC_ALL :  impossible de changer le paramètre de langue (%s) : %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr ""
@@ -1435,157 +1443,159 @@ msgstr "Vous avez du nouveau courrier dans $_"
 msgid "The mail in %s has been read\n"
 msgstr "Le courrier dans %s a été lu\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "erreur de syntaxe : expression arithmétique nécessaire"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "erreur de syntaxe : « ; » non attendu"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "erreur de syntaxe : « ((%s)) »"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document : le type d'instruction %d est incorrect"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %"
 "s »)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection : l'instruction de redirection « %d » est hors plage"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne "
+"tronquée"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "nombre maximum de documents en ligne (« here-document ») dépassé"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 "fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 "erreur de syntaxe dans une expression conditionnelle : symbole « %s » "
 "inattendu"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "erreur de syntaxe dans une expression conditionnelle"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "symbole inattendu « %s » au lieu de « ) »"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "« ) » attendu"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argument inattendu pour l'opérateur conditionnel à un argument"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "opérateur binaire conditionnel attendu"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argument inattendu pour l'opérateur binaire conditionnel"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "symbole « %c » inattendu dans la commande conditionnelle"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "symbole « %s » inattendu dans la commande conditionnelle"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "symbole « %d » inattendu dans la commande conditionnelle"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "erreur de syntaxe près du symbole inattendu « %s »"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "erreur de syntaxe près de « %s »"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "erreur de syntaxe : fin de fichier prématurée"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "erreur de syntaxe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Utilisez « %s » pour quitter le shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr ""
 "fin de fichier (EOF) prématurée lors de la recherche d'une « ) » "
 "correspondante"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "complètement : fonction « %s » non trouvée"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: boucle de ré-essai possible"
 
 #: pcomplib.c:182
 #, c-format
@@ -1611,92 +1621,96 @@ msgstr "xtrace_set : pointeur de fichier NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf : « %c » : caractère de format invalide"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descripteur de fichier hors plage"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s : redirection ambiguë"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s : impossible d'écraser le fichier existant"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s : restreint : impossible de rediriger la sortie"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr ""
 "impossible de créer un fichier temporaire pour le « here-document » : %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s : impossible d'affecter le descripteur de fichier à la variable"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr ""
 "erreur de redirection : impossible de dupliquer le descripteur de fichier"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "« /tmp » introuvable, veuillez le créer !"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "« /tmp » doit être un nom de répertoire valable"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c : option non valable"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "impossible de changer le uid en %d : uid effectif %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "impossible de changer le gid en %d: gid effectif %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "impossible de démarrer le débogueur: mode déboguage désactivé"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s : Ceci est un répertoire"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Je n'ai pas de nom !"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1705,54 +1719,54 @@ msgstr ""
 "Utilisation :\t%s [option longue GNU] [option] ...\n"
 "\t%s [option longue GNU] [option] fichier-script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Options longues GNU :\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Options du shell :\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ou -o option\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" "
 "».\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "page d'accueil de bash : <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Aide générale sur l'utilisation de logiciels GNU : <http://www.gnu.org/"
 "gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask : %d : opération non valable"
@@ -1926,93 +1940,97 @@ msgstr "N° de signal inconnu"
 msgid "Unknown Signal #%d"
 msgstr "Signal n°%d inconnu"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s : impossible d'affecter une liste à un élément de tableau"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "impossible de fabriquer un tube pour une substitution de processus"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "impossible de fabriquer un fils pour une substitution de processus"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "impossible d'ouvrir le tube nommé « %s » en lecture"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "impossible d'ouvrir le tube nommé « %s » en écriture"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s"
+msgstr "substitution de commande: octet nul ignoré en entrée"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "impossible de fabriquer un tube pour une substitution de commande"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr ""
 "impossible de fabriquer un processus fils pour une substitution de commande"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s : nom de variable invalide pour une référence de nom"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s : mauvaise substitution"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s : expansion indirecte invalide"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: nom de variable invalide"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s : paramètre non défini"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s : paramètre vide ou non défini"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s : expression de sous-chaîne négative"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s : mauvaise substitution"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s : affectation impossible de cette façon"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2020,12 +2038,12 @@ msgstr ""
 "les versions futures du shell forceront l'évaluation comme une substitution "
 "arithmétique"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "pas de correspondance : %s"
@@ -2048,30 +2066,37 @@ msgstr "« ) » attendue"
 msgid "`)' expected, found %s"
 msgstr "« ) » attendue au lieu de %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s : opérateur unaire attendu"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s : opérateur binaire attendu"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "« ] » manquant"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "numéro de signal non valable"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+"gestionnaire trap : dépassement de la profondeur maximum du gestionnaire "
+"« trap » (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2079,93 +2104,92 @@ msgstr ""
 "run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) "
 "à moi-même"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler : mauvais signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "erreur lors de l'importation de la définition de fonction pour « %s »"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "niveau de shell trop élevé (%d), initialisation à 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 "make_local_variable : aucun contexte de fonction dans le champ d'application "
 "actuel"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s : la variable ne peut se voir assigner une valeur"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s : nom de variable invalide pour une référence de nom"
+msgstr "%s : assigne un entier à la référence de nom"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 "all_local_variables : aucun contexte de fonction dans le champ d'application "
 "actuel"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s a un « exportstr » nul"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "caractère %d non valable dans « exportstr » pour %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "pas de « = » dans « exportstr » pour %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context : le début de « shell_variables » n'est pas un contexte de "
 "fonction"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context : aucun contexte à « global_variables »"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope : le début de « shell_variables » n'est pas un champ d'application "
 "temporaire d'environnement"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s : %s : impossible d'ouvrir comme FILE"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s : %s : valeur de compatibilité hors plage"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2190,22 +2214,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s : impossible d'allouer %lu octets"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s : %s:%d : impossible d'allouer %lu octets"
@@ -2333,9 +2357,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobspec ...]"
+msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2418,8 +2441,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2511,13 +2534,13 @@ msgstr "printf [-v var] format [arguments]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G motif_glob] "
-"[-W liste_mots]  [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] "
-"[-S suffixe] [nom ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G "
+"motif_glob] [-W liste_mots]  [-F fonction] [-C commande] [-X motif_filtre] [-"
+"P prefixe] [-S suffixe] [nom ...]"
 
 #: builtins.c:235
 msgid ""
@@ -2529,8 +2552,8 @@ msgstr ""
 "suffixe] [mot]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o option] [-DE] [nom ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o option] [-DEI] [nom ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2542,11 +2565,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C callback] [-"
-"c quantum] [tableau]"
+"readarray [-d delim] [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C "
+"callback] [-c quantum] [tableau]"
 
 #: builtins.c:256
 msgid ""
@@ -2744,7 +2767,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Exécute des commandes shell intégrées.\n"
 "    \n"
@@ -2759,7 +2782,7 @@ msgstr ""
 "    Code de retour :\n"
 "    Renvoie le code de retour de SHELL-BUILTIN, ou false si SHELL-BUILTIN "
 "n'est\n"
-"    pas une commande intégrée.."
+"    pas une commande intégrée."
 
 #: builtins.c:369
 msgid ""
@@ -3010,11 +3033,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3050,7 +3073,8 @@ msgstr ""
 "      -a\tpour faire de NOMs des tableaux indexés (si pris en charge)\n"
 "      -A\tpour faire de NOMs des tableaux associatifs (si pris en charge)\n"
 "      -i\tpour assigner l'attribut « integer » aux NOMs\n"
-"      -l\tpour convertir les NOMs en minuscules lors de l'affectation\n"
+"      -l\tpour convertir la valeur de chaque NOM en minuscules lors de "
+"l'affectation\n"
 "      -n\ttransforme NOM en une référence vers une variable nommée d'après "
 "sa valeur\n"
 "      -r\tpour mettre les NOMs en lecture seule\n"
@@ -3076,15 +3100,14 @@ msgstr ""
 "    erreur survienne lors de l'assignation d'une variable."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
 "    A synonym for `declare'.  See `help declare'."
 msgstr ""
-"Définit des valeurs ou des attributs de variables.\n"
+"Définit des valeurs et des attributs de variables.\n"
 "    \n"
-"    Obsolète.  Essayez « help declare »."
+"    Un synonyme de « déclare ».  Consultez « help declare »."
 
 #: builtins.c:538
 msgid ""
@@ -3120,6 +3143,7 @@ msgstr ""
 "    n'exécute pas une fonction."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3148,6 +3172,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3188,7 +3218,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de succès à moins qu'une erreur d'écriture survienne."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3210,7 +3240,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de succès à moins qu'une erreur d'écriture survienne."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3267,7 +3297,7 @@ msgstr ""
 "    Renvoie le code de succès à moins que NOM ne soit pas une commande "
 "intégrée ou qu'une erreur ne survienne."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3288,7 +3318,7 @@ msgstr ""
 "    Renvoie le même code de sortie que la commande, ou le code de succès si "
 "la commande est vide."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3382,7 +3412,7 @@ msgstr ""
 "la fin des options\n"
 "    est rencontrée ou si une erreur survient."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3425,7 +3455,7 @@ msgstr ""
 "ou\n"
 "    qu'une erreur de redirection ne survienne."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3437,7 +3467,7 @@ msgstr ""
 "    Termine le shell avec le code de retour « N ».  Si N est omis, le code\n"
 "    de retour est celui de la dernière commande exécutée."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3451,7 +3481,7 @@ msgstr ""
 "erreur\n"
 "    s'il n'est pas exécuté dans un shell de connexion."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3512,7 +3542,7 @@ msgstr ""
 "autre\n"
 "    chose que 0 si une erreur survient."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3533,7 +3563,7 @@ msgstr ""
 "    Celui de la commande placée au premier plan ou le code d'échec si une "
 "erreur survient."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3558,7 +3588,7 @@ msgstr ""
 "activé\n"
 "    ou qu'une erreur ne survienne."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3604,7 +3634,7 @@ msgstr ""
 "    Renvoie le code de succès à moins que le NOM ne soit pas trouvé ou\n"
 "    qu'une option non valable ne soit donnée."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3619,7 +3649,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3645,8 +3675,7 @@ msgstr ""
 "qu'une\n"
 "    option non valable ne soit donnée."
 
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3655,7 +3684,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3688,16 +3718,18 @@ msgstr ""
 "    \n"
 "    Options :\n"
 "      -c\tefface la liste d'historique en supprimant tous les éléments\n"
-"      -d offset\tefface l'élément d'historique à l'emplacement OFFSET.\n"
+"      -d offset\tefface l'élément d'historique à l'emplacement OFFSET. Un "
+"offset négatif\n"
+"    \t\tcompte à partir de la fin de la liste de l'historique\n"
 "    \n"
 "      -a\tajoute les lignes d'historique de cette session au fichier "
 "d'historique\n"
 "      -n\tlit toutes les lignes d'historique non déjà lues depuis le fichier "
 "d'historique\n"
+"    \t\tet les ajoute à la liste de l'historique\n"
 "      -r\tlit le fichier d'historique et ajoute le contenu à la liste "
 "d'historique\n"
-"      -w\técrit l'historique actuel dans le fichier d'historique\n"
-"    \t\tet l'ajoute à la liste d'historique\n"
+"      -w\técrit l'historique actuelle dans le fichier d'historique\n"
 "    \n"
 "      -p\teffectue un développement de l'historique sur chaque ARG et "
 "affiche le résultat\n"
@@ -3720,7 +3752,7 @@ msgstr ""
 "ou\n"
 "    qu'une erreur ne survienne."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3770,7 +3802,7 @@ msgstr ""
 "de\n"
 "    la COMMANDE est renvoyé."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3802,8 +3834,7 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option ou un JOBSPEC non\n"
 "    valable ne soit donné."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3840,6 +3871,7 @@ msgstr ""
 "    \t\tils sont supposés être des numéros de signaux pour lesquels les noms "
 "doivent\n"
 "    \t\têtre affichés\n"
+"      -L\tsynonyme de -l\n"
 "    \n"
 "    « kill » est une commande intégrée pour deux raisons : elle permet aux "
 "IDs de\n"
@@ -3854,7 +3886,7 @@ msgstr ""
 "ou qu'une\n"
 "    erreur ne survienne."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3943,7 +3975,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3964,7 +3996,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -4018,8 +4050,7 @@ msgstr ""
 "      -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit "
 "lu,\n"
 "    \t\tau lieu du retour à la ligne\n"
-"      -e\t\tutilise « Readline » pour obtenir la ligne dans un shell "
-"interactif\n"
+"      -e\t\tutilise « Readline » pour obtenir la ligne\n"
 "      -i texte\tUtilise TEXTE comme texte initial pour « Readline »\n"
 "      -n n\ttermine après avoir lu N caractères plutôt que d'attendre\n"
 "    \t\tun retour à la ligne, mais obéi à un délimiteur si moins de N "
@@ -4058,7 +4089,7 @@ msgstr ""
 "    ou qu'un descripteur de fichier non valable ne soit fourni comme "
 "argument à « -u »."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4080,8 +4111,7 @@ msgstr ""
 "    Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n"
 "    une fonction ou un script."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4251,11 +4281,11 @@ msgstr ""
 "        -P  Si défini, les liens symboliques ne sont pas suivis lors de "
 "l'exécution des\n"
 "            commandes telles que « cd » qui changent le répertoire courant.\n"
-"        -T  Si défini, l'interception DEBUG est héritée par les fonctions du "
-"shell.\n"
+"        -T  Si défini, l'interception de DEBUG et RETURN est héritée par les "
+"fonctions du shell.\n"
 "        --  Affecte tous les arguments restants aux paramètres de position.\n"
-"            S'il n'y a plus d'argument, les paramètres de position sont "
-"indéfinis.\n"
+"            S'il n'y a plus d'argument, les paramètres de position sont\n"
+"            indéfinis.\n"
 "        -   Affecter tous les arguments restants aux paramètres de "
 "position.\n"
 "            Les options « -x » et « -v » sont désactivées.\n"
@@ -4274,7 +4304,7 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option non valable ne soit "
 "donnée."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4316,7 +4346,7 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option non valable ne soit\n"
 "    donnée ou que NOM soit en lecture seule."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4353,7 +4383,7 @@ msgstr ""
 "données\n"
 "    ou que NOM ne soit pas valable."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4395,7 +4425,7 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option non valable ne soit\n"
 "    donnée ou que NOM ne soit pas valable."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4414,7 +4444,7 @@ msgstr ""
 "    Code de retour :\n"
 "    Renvoie le code de succès à moins que N soit négatif ou supérieur à $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4442,7 +4472,7 @@ msgstr ""
 "code\n"
 "    d'échec si NOMFICHIER ne peut pas être lu."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4470,7 +4500,7 @@ msgstr ""
 "activé\n"
 "    ou qu'une erreur survienne."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4642,7 +4672,7 @@ msgstr ""
 "fausse ou si\n"
 "    un argument non valable est donné."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4654,7 +4684,7 @@ msgstr ""
 "    Ceci est un synonyme de la primitive « test », mais le dernier argument\n"
 "    doit être le caractère « ] », pour fermer le « [ » correspondant."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4673,7 +4703,7 @@ msgstr ""
 "    Code de retour :\n"
 "    Toujours le code de succès."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4758,7 +4788,7 @@ msgstr ""
 "qu'une\n"
 "    option non valable ne soit donnée."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4822,7 +4852,7 @@ msgstr ""
 "si l'un\n"
 "    d'entre eux n'est pas trouvé."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4925,7 +4955,7 @@ msgstr ""
 "fournie ou\n"
 "    qu'une erreur ne survienne."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4963,7 +4993,7 @@ msgstr ""
 "qu'une\n"
 "    option non valable ne soit donnée."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4971,13 +5001,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4998,12 +5030,16 @@ msgstr ""
 "retourne\n"
 "    son code de retour.\n"
 "    \n"
+"    Si l'option -f est fournie et que le contrôle de tâche est activé, "
+"attends que\n"
+"    le ID spécifié soit terminé au lieu d'attendre qu'il change de statut.\n"
+"    \n"
 "    Code de retour :\n"
 "    Renvoie le même code que celui d'ID, ou le code d'échec si ID n'est pas "
 "valable\n"
 "    ou en cas d'option non valable."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -5031,7 +5067,7 @@ msgstr ""
 "valable ou\n"
 "    si une option non valable est donnée."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -5054,7 +5090,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -5085,7 +5121,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5121,7 +5157,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5152,7 +5188,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Le code de retour est celui du PIPELINE."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5172,7 +5208,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5210,7 +5246,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5229,7 +5265,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5248,8 +5284,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5270,9 +5305,9 @@ msgstr ""
 "    cours d'exécution. Le NOM par défaut est « COPROC ».\n"
 "    \n"
 "    Code de retour :\n"
-"    Renvoie le même code de retour que la COMMANDE."
+"    La commande coproc renvoie le code de sortie 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5298,7 +5333,7 @@ msgstr ""
 "    Code de retour :\n"
 "    Renvoie le code de succès à moins que NOM ne soit en lecture seule."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5316,7 +5351,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la dernière commande exécutée."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5342,7 +5377,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie le code de la commande reprise."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5360,7 +5395,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5415,7 +5450,7 @@ msgstr ""
 "    Code de sortie :\n"
 "    0 ou 1 selon la valeur de l'EXPRESSION."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5540,7 +5575,7 @@ msgstr ""
 "    \t\tdécider quelles commandes doivent être conservées dans la liste "
 "d'historique.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5603,7 +5638,7 @@ msgstr ""
 "fourni\n"
 "    ou que le changement de répertoire n'échoue."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5655,7 +5690,7 @@ msgstr ""
 "donné\n"
 "    ou que le changement de répertoire n'échoue."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5714,14 +5749,13 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option non valable ne soit\n"
 "    fournie ou qu'une erreur ne survienne."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5738,9 +5772,10 @@ msgstr ""
 "    \n"
 "    Change la valeur de chaque option du shell NOMOPT.  S'il n'y a pas "
 "d'argument\n"
-"    à l'option, la commande liste toutes les options du shell en indiquant "
-"si\n"
-"    elles sont actives ou non.\n"
+"    à l'option, liste chaque NOMOPT fourni ou toutes les options du shell si "
+"aucun\n"
+"    NOMOPT est donné, avec une indication montrant si chacun est actif ou "
+"non.\n"
 "    \n"
 "    Options :\n"
 "      -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -"
@@ -5750,12 +5785,12 @@ msgstr ""
 "      -s\tactive (set) chaque NOMOPT\n"
 "      -u\tdésactive (unset) chaque NOMOPT\n"
 "    \n"
-"    Code de retour :\n"
-"    Renvoie le code de succès si NOMOPT est active ; échec si une option non "
+"    Code de retour :\n"
+"    Renvoie le code de succès si NOMOPT est active ; échec si une option non "
 "valable\n"
 "    est donnée ou si NOMOPT est inactive."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5833,7 +5868,8 @@ msgstr ""
 "donnée ou qu'une\n"
 "    erreur d'écriture ou d'affectation ne survienne."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5851,22 +5887,26 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 "Spécifie la façon dont Readline complète les arguments.\n"
 "    \n"
-"    Pour chaque NOM, la commande spécifie la façon dont les arguments son "
+"    Pour chaque NOM, la commande spécifie la façon dont les arguments sont "
 "complétés\n"
 "    S'il n'y a pas d'option, le réglage actuel est affiché d'une manière\n"
 "    réutilisable comme une entrée.\n"
 "    \n"
-"    Options :\n"
+"    Options :\n"
 "      -p\taffiche le réglage d'auto-complètement actuel dans un format "
 "réutilisable\n"
 "      -r\tretire un réglage d'auto-complètement de chaque NOM ou, si aucun "
@@ -5877,19 +5917,24 @@ msgstr ""
 "    \t\tcommandes ne possédant aucun auto-complètement spécifique\n"
 "      -E\tapplique les auto-complètements et actions aux commandes vides\n"
 "    \t\t(auto-complètement tenté sur une ligne vide)\n"
+"      -I\tapplique les auto-complètements et actions au mot initial "
+"(habituellement\n"
+"    \t\tla commande)\n"
 "    \n"
 "    Lorsqu'un auto-complètement est tenté, les actions sont appliquées dans "
 "l'ordre\n"
-"    dans lequel les options en majuscule ci-dessus sont listées.  L'option « -"
-"D » est\n"
-"    prioritaire sur « -E ».\n"
+"    dans lequel les options en majuscule ci-dessus sont listées.  Si "
+"plusieurs\n"
+"    options sont fournies, l'option « -D » est prioritaire sur -E et les deux "
+"sont\n"
+"    prioritaires sur -I.\n"
 "    \n"
 "    Code de retour :\n"
 "    Renvoie le code de succès à moins qu'une option non valable ne soit "
 "fournie ou\n"
 "    qu'une erreur ne survienne."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5911,7 +5956,7 @@ msgstr ""
 "    Renvoie le code de succès à moins qu'une option non valable ne soit\n"
 "    fournie ou qu'une erreur ne survienne."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5926,6 +5971,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5956,6 +6002,7 @@ msgstr ""
 "    \t-D\t\tChange les options pour l'auto-complètement de commande par "
 "défaut\n"
 "    \t-E\t\tChange les options pour l'auto-complètement de commande vide\n"
+"    \t-I\t\tChange les options pour l'auto-complètement du mot initial\n"
 "    \n"
 "    Utiliser « +o » au lieu de « -o » désactive l'option spécifiée.\n"
 "    \n"
@@ -5976,7 +6023,7 @@ msgstr ""
 "fournie\n"
 "    ou que NOM n'ait aucun réglage d'auto-complètement."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -6059,7 +6106,7 @@ msgstr ""
 "donnée ou que\n"
 "    le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 6929134401085d104c9b3e2914713cb0176a056c..d7712deebc3aea7f906e201e7f0591914155bef8 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index 805c0d21c069a4d503b1abc831298901c90ee8f2..0254a01d0c230e8a9f8e05a2898a9c9b253605f6 100644 (file)
--- a/po/ga.po
+++ b/po/ga.po
-# translation of bash4.po to Irish
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# translation of bash.po to Irish
+# Copyright (C) 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 #
-# Séamus Ó Ciardhuáin <seoc(at)iolfree.ie>, 2009.
+# Séamus Ó Ciardhuáin <sociardhuain@gmail.com>, 2009, 2017, 2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.3-rc2\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-02-05 17:02-0000\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-06 21:34+0000\n"
 "Last-Translator: Séamus Ó Ciardhuáin <sociardhuain@gmail.com>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ga\n"
-"X-Generator: Poedit 1.7.4\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 2.0\n"
 "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
 "(n>6 && n<11) ? 3 : 4;\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "droch-fhoscript eagair"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: aitreabúid nameref (tagairt athróga) á baint"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 "%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil."
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: ní féidir cruthú: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: ní \" é an chéad charachtar nach spás bán é."
+msgstr "%s: ní \" an chéad charachtar nach spás bán é."
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
-msgstr "Níl \"%c\" dúnta i %s"
+msgstr "Níl '%c' dúnta i %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: deighilteoir idirstaid ar iarraidh"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
-msgstr ""
+msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
+"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %u eilimint"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr ""
+msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
-msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach"
+msgstr "'%s': ainm neamhbhailí ar mhapa eochrach"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "níl eagarthóireacht líne cumasaithe"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
-msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach "
+msgstr "'%s': ainm neamhbhailí ar mhapa eochrach "
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: ní féidir léamh: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "\"%s\": ní féidir dícheangail"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
-msgstr "\"%s\": ainm feidhme neamhaithnid"
+msgstr "'%s': ainm feidhme neamhaithnid"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "Níl %s ceangailte le heochair ar bith.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "Is féidir %s a ghlaoigh trí "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "'%s': ní féidir dícheangail"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "comhaireamh lúibe"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "Gan chiall ach i lúb \"for\", \"while\" nó \"until\""
+msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'"
 
 #: builtins/caller.def:136
 msgid ""
@@ -148,236 +150,236 @@ msgstr ""
 "    \n"
 "    Gan SLONN, aischuirtear "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Níl HOME socruithe"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "An iomarca argóintí"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "Níl comhadlann eile ann"
+msgstr "comhadlann neamhnitheach"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Níl OLDPWD socruithe"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "líne %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "rabhadh: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: úsáid: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: tá argóint riachtanach don rogha"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: argóint uimhriúil de dhíth"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: gan aimsiú"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: rogha neamhbhailí"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: ainm neamhbhailí rogha"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
-msgstr "\"%s\": ní aitheantóir bailí é"
+msgstr "'%s': ní aitheantóir bailí é"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "uimhir ochtnártha neamhbhailí"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "uimhir heicsidheachúlach neamhbhailí"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "uimhir neamhbhailí"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: sonrú neamhbhailí comhartha"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
-msgstr "\"%s\": ní aitheantas próisis nó sonrú jab bailí é"
+msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: athróg inléite amháin"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s as raon"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argóint"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s as raon"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
-msgstr "%s: níl a léithéid de jab ann."
+msgstr "%s: níl a léithéid de tasc ann."
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
-msgstr "%s: gan rialú jabanna."
+msgstr "%s: gan rialú tascanna."
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
-msgstr "Gan rialú jabanna."
+msgstr "Gan rialú tascanna."
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: srianta"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "srianta"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ní ordú ionsuite blaoisce é."
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "earráid scríofa: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "earráid agus airíonna teirminéil á socrú: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "earráid agus airíonna teirminéil á fáil: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
-msgstr "%s: sonrú jab athbhríoch"
+msgstr "%s: sonrú taisc athbhríoch"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "Níl cabhair ar fáil sa leagan seo."
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: ainm neamhbhailí gnímh"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: níl sonrú iomlánaithe ann."
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis."
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis."
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "Inúsáidte i bhfeidhmeanna amháin. "
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
+"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr ""
+msgstr "%s: tagairt ainm ciorclach"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach"
+msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
-msgstr "Ní féidir \"-f\" a úsáid chun feidhmeanna a dhéanamh"
+msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: feidhm inléite amháin"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: cáintear sannadh na gcomheagar athfhriotail"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: ní féidir athróga eagair a scrios mar seo."
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -401,6 +403,8 @@ msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s"
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
 msgstr ""
+"Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor "
+"luchtáladh é"
 
 #: builtins/enable.def:512
 #, c-format
@@ -412,71 +416,71 @@ msgstr "%s: níl sé luchtaithe go dinimiciúil"
 msgid "%s: cannot delete: %s"
 msgstr "%s: ní féidir scrios: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is comhadlann é"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ní gnáthchomhad é"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: tá an comhad ró-mhór"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: ní féidir comhad dénártha a rith"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: ní féidir rith: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
-msgstr "Ní blaosc logála isteach é seo: úsáid \"exit\""
+msgstr "Ní blaosc logála isteach é seo: úsáid 'exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
-msgstr "Tá jabanna stoptha ann.\n"
+msgstr "Tá tascanna stoptha ann.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
-msgstr "Tá jabanna ag rith.\n"
+msgstr "Tá tascanna ag rith.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "Níor aimsíodh ordú"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "Sonrú staire"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: ní féidir comhad sealadach a oscailt: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "reatha"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
-msgstr "Thosaigh jab %d gan rialú jabanna."
+msgstr "Tosaíodh tasc %d gan rialú tascanna."
 
 #: builtins/getopt.c:110
 #, c-format
@@ -488,31 +492,30 @@ msgstr "%s: rogha neamhdhleathach -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: tá argóint riachtanach don rogha -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "Tá haiseáil díchumasaithe."
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tá an tábla haiseála folamh.\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "amais\tordú\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal \""
-msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail \""
+msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal '"
+msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '"
 msgstr[2] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '"
 msgstr[3] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '"
 msgstr[4] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -520,12 +523,12 @@ msgstr ""
 "Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" "
 "nó \"man -k %s\" nó \"info %s\"."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: ní féidir oscailt: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -545,20 +548,21 @@ msgstr ""
 "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid."
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "suíomh staire"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: argóint neamhbhailí"
+msgstr "%s: stampa ama neamhbhailí"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: theip ar fhairsingiú staire."
@@ -570,18 +574,18 @@ msgstr "%s: theip ar inlib"
 
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
-msgstr "Níl roghanna eile ceadaithe le \"-x\""
+msgstr "Níl roghanna eile ceadaithe le '-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
-msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó jab"
+msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Earráid neamhaithnid"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "Ag súil le slonn"
 
@@ -590,69 +594,69 @@ msgstr "Ag súil le slonn"
 msgid "%s: not an indexed array"
 msgstr "%s: ní eagar innéacsaithe é"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: sonrú neamhbhailí tuairisceora comhaid"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: tuairisceoir comhaid neamhbhailí: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: comhaireamh neamhbhailí línte"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: bunphointe neamhbhailí eagair"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: candam neamhbhailí aisghlaoigh"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "ainm folamh athróga eagair"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "tacaíocht le hathróga eagair de dhíth"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
-msgstr "\"%s\": carachtar formáide ar iarraidh."
+msgstr "'%s': carachtar formáide ar iarraidh."
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
-msgstr "\"%c\": sonrú neamhbhailí formáide ama"
+msgstr "'%c': sonrú neamhbhailí formáide ama"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
-msgstr "\"%c\": carachtar formáide neamhbhailí."
+msgstr "'%c': carachtar formáide neamhbhailí."
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "rabhadh: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
-msgstr ""
+msgstr "fadhb i bpársáil formáide: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "digit Unicode ar iarraidh le haghaidh \\%c"
@@ -666,19 +670,19 @@ msgstr "Níl comhadlann eile ann"
 msgid "%s: invalid argument"
 msgstr "%s: argóint neamhbhailí"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<níl comhadlann reatha ann>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
-msgstr "cruach fholamh chomhadlainne"
+msgstr "cruach chomhadlainne fholamh"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
-msgstr "innéacs cruaiche comhadlainne"
+msgstr "innéacs chruach na gcomhadlann"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -701,8 +705,29 @@ msgid ""
 "by\n"
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
-
-#: builtins/pushd.def:718
+"Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n"
+"    Cuirtear comhadlanna ar an liosta leis an ordú \"pushd\". Is féidir dul\n"
+"    siar trín liosta leis an ordú \"popd\".\n"
+"    \n"
+"    Roghanna:\n"
+"      -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n"
+"      -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann "
+"bhaile\n"
+"      \tagus le tilde rompu\n"
+"      -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n"
+"      -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n"
+"      \ta háit sa chruach roimpi\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh "
+"clé\n"
+"      \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó "
+"náid.      -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó "
+"thaobh deas\n"
+"      \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó "
+"náid."
+
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -726,8 +751,32 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
+"Cuireann \"pushd\" comhadlann ar bharr na cruaiche comhadlanna, nó "
+"rothlaíonn\n"
+"    sé an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n"
+"    reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n"
+"    \n"
+"    Roghanna:\n"
+"    -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n"
+"    \tleis an gcruach; ní athraítear ach an chruach.\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n"
+"    \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag "
+"tosú\n"
+"    \tó náid) ar bharr.\n"
+"    \n"
+"      -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n"
+"    \tcomhaireamh ó thaobh deas an liosta a thaispeánann 'dirs' agus ag "
+"tosú\n"
+"    \tó náid) ar bharr.\n"
+"    \n"
+"      COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n"
+"      \tí mar an chomhadlann oibrithe reatha.\n"
+"    \n"
+"    Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -747,69 +796,89 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
+"Baineann \"popd\" comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear "
+"an\n"
+"    chomhadlann ó bharr na cruaiche, agus téann sé go dtí an chomhadlann\n"
+"    atá ar bharr.\n"
+"    \n"
+"    Roghanna:\n"
+"    -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n"
+"    \tleis an gcruach; ní athraítear ach an chruach.\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n"
+"    \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n"
+"    \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n"
+"    \n"
+"      -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n"
+"    \ta thaispeánann 'dirs' agus ag tosú ó náid. Mar shampla, baineann\n"
+"    \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n"
+"    \tleathdheireanach.\n"
+"    \n"
+"    Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann."
 
 #: builtins/read.def:279
 #, c-format
 msgid "%s: invalid timeout specification"
 msgstr "%s: sonrú neamhbhailí teorann ama"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
-msgstr "earráid léite: %d: %s"
+msgstr "Earráid léite: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
-"ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\""
+"Ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\""
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna."
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: ní féidir díshocrú"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: ní féidir díshocrú: %s inléite amháin"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ní athróg eagair é"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ní feidhm é."
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: ní féidir díshocrú"
+msgstr "%s: ní féidir easpórtáil"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "comhaireamh iomlaoide"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna."
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: ainm neamhbhailí ar rogha blaoisce"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "Is gá don argóint bheith ina ainm comhaid."
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: níor aimsíodh an comhad"
@@ -822,61 +891,61 @@ msgstr "Ní féidir cur ar fionraí."
 msgid "cannot suspend a login shell"
 msgstr "Ní féidir blaosc logála isteach a chur ar fionraí."
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
-msgstr "Tá %s ailiasáilte go \"%s\".\n"
+msgstr "Tá %s ailiasáilte go '%s'.\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "Is eochairfhocal blaoisce é %s.\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "Is feidhm é %s.\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "Is ordú ionsuite blaoisce é %s\n"
+msgstr "Is ordú ionsuite blaoisce speisialta é %s\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "Is ordú ionsuite blaoisce é %s\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "Tá %s %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "Tá %s haiseáilte (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: argóint teorann neamhbhailí"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
-msgstr "\"%c\": droch-ordú"
+msgstr "'%c': droch-ordú"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: ní féidir teorainn a fháil: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "teorainn"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: ní féidir teorainn a athrú: %s"
@@ -888,371 +957,379 @@ msgstr "uimhir ochtnártha"
 #: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
-msgstr "\"%c\": oibreoir neamhbhailí móid shiombalaigh"
+msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh"
 
 #: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
-msgstr "\"%c\": carachtar neamhbhailí móid shiombalaigh"
+msgstr "'%c': carachtar neamhbhailí móid shiombalaigh"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " líne "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "Ordú deireanach: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Ag tobscor..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "EOLAS: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "earráid ordaithe neamhaithnid"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "droch-chineál ordaithe"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "drochnascóir"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "drochléim"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: athróg neamhcheangailte"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\aimithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n"
+msgstr "\aImithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "FORMÁID_AMA: \"%c\": carachtar formáide neamhbhaií."
+msgstr "FORMÁID_AMA: '%c': carachtar formáide neamhbhaií."
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "earráid phíopa"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr ""
+msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: níor aimsíodh an t-ordú"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: drochléirmhínitheoir"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: ní féidir comhad dénártha a rith: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
-msgstr "Is ordú ionsuite speisialta é \"%s\""
+msgstr "Is ordú ionsuite speisialta é '%s'"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr ""
 "Ní féidir an tuairisceoir comhaid %d a dhúbailt mar thuairisceoir comhaid %d."
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
-msgstr "imithe thar leibhéal athchursála sloinn"
+msgstr "Imithe thar leibhéal athchursála sloinn"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
-msgstr "gannsreabhadh na cruaiche athchúrsála"
+msgstr "Gannsreabhadh na cruaiche athchúrsála"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "Earráid chomhréire sa slonn."
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "Deineadh iarracht sannadh go rud nach athróg é."
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "Earráid chomhréire i sannadh athróige."
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
-msgstr "roinnt ar 0"
+msgstr "Roinnt ar 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
-msgstr "fabht: droch-chomhartha expassign"
+msgstr "Fabht: droch-chomhartha expassign"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh."
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "Easpónant níos lú ná 0."
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte"
+msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "\")\" ar iarraidh"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann."
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
-msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta"
+msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (comhartha earráide \"%s\")"
+msgstr "%s%s%s: %s (comhartha earráide '%s')"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "Bonnuimhir uimhríochtúil neamhbhailí."
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "Tá an luach rómhór don bhonnuimhir."
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: earráid sloinn\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain."
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr ""
-"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid "
+"Ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid "
 "%d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "Ní féidir tuairisceoir comhaid nua a leithdháileadh le haghaidh ionchur bash "
 "ón tuairisceoir comhaid %d."
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid "
 "nua %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp píopa"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
-msgstr "tá an aitheantas an phróisis ghabhlaithe %d sa jab %d atá ag rith"
+msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
-msgstr "Tá an jab stoptha %d leis an ngrúpa próisis %ld á scrios."
+msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios."
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: próiseas %5ld (%s) sa phíblíne"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann."
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Comhartha %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Déanta"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stoptha"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stoptha(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Ag Rith"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Déanta(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Scoir %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Stádas neamhaithnid"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(cuimhne dumpáilte)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (comhadlann oibre: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid macphróisis (%ld go %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo."
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: níl taifead den phróiseas %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: tá an jab %d stoptha."
+msgstr "wait_for_job: tá an tasc %d stoptha."
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
-msgstr "%s: tá an jab críochnaithe."
+msgstr "%s: tá an tasc críochnaithe."
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
-msgstr "%s: tá an jab %d sa chúlra cheana."
+msgstr "%s: tá an tasc %d sa chúlra cheana."
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
+msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: líne %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (cuimhne dumpáilte)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(comhadlann oibre anois: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: theip ar getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: araíonacht líne"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
-msgstr "ní féidir grúpa próisis teirminéil a shocrú (%d)"
+msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
-msgstr "Níl rialú jabanna sa bhlaosc seo."
+msgstr "Níl rialú tascanna sa bhlaosc seo."
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: dearbhú teipthe: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1261,39 +1338,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: dearbhú ina phraiseach\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "neamhaithnid"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloc ar an liosta saor scriosta"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: glaoite le argóint bhloic á saoradh cheana"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: glaoite le argóint bhloic nár leithdháileadh"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: gannsreabhadh; tá mh_nbytes as raon"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: ní ionann méid na smután túis agus deiridh"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: ní ionann méideanna na smután túis agus deiridh"
 
@@ -1336,22 +1413,22 @@ msgstr "%s: drochshonrú conaire líonra"
 msgid "network operations not supported"
 msgstr "Ní thacaítear le oibríochtaí líonra."
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s"
@@ -1369,156 +1446,157 @@ msgstr "Tá ríomhphost nua agat i $_"
 msgid "The mail in %s has been read\n"
 msgstr "Tá an ríomhphost i %s léite\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith."
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
-msgstr "Earráid chomhréire: \";\" gan súil leis."
+msgstr "Earráid chomhréire: ';' gan súil leis."
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
-msgstr "Earráid chomhréire: \"((%s))\""
+msgstr "Earráid chomhréire: '((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: drochchineál ordaithe %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
-"cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á "
+"Cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á "
 "lorg)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: ordú atreoraithe \"%d\" as raon."
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX (%"
+"lu): líne giorraithe"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "Imithe thar uasfhad na cáipéise-anseo"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg."
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg."
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 "Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis."
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "Earráid chomhréire i slonn coinníollach."
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
-msgstr "Comhartha \"%s\" gan súil leis; ag súil le \")\"."
+msgstr "Comhartha '%s' gan súil leis; ag súil le ')'."
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "Ag súil le \")\""
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach."
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ."
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 "Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach "
 "dénártha."
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha."
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "Argóint \"%s\" gan súil lei go hoibreoir dénártha coinníollach."
+msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach."
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach."
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
-msgstr "Comhartha \"%c\" gan súil leis in ordú coinníollach."
+msgstr "Comhartha '%c' gan súil leis in ordú coinníollach."
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach."
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "Comhartha %d gan súil leis in ordú coinníollach."
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
-msgstr ""
-"Earráid chomhréire in aice comhartha \"%s\" nach rabhthas ag súil leis."
+msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis."
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
-msgstr "Earráid chomhréire in aice \"%s\""
+msgstr "Earráid chomhréire in aice '%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "Earráid chomhréire: deireadh comhaid gan súil leis."
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "Earráid chomhréire"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Úsáid \"%s\" le scoir den mblaosc.\n"
+msgstr "Úsáid '%s' le scoir den mblaosc.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
-msgstr "Deireadh comhaid gan súil leis agus \")\" á lorg le meaitseáil."
+msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil."
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr "Iomlánú: níor aimsíodh an fheidhm \"%s\"."
+msgstr "Iomlánú: níor aimsíodh an fheidhm '%s'."
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith ann"
 
 #: pcomplib.c:182
 #, c-format
@@ -1528,7 +1606,7 @@ msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach"
 #: print_cmd.c:302
 #, c-format
 msgid "print_command: bad connector `%d'"
-msgstr "print_command: drochnascóir \"%d\""
+msgstr "print_command: drochnascóir '%d'"
 
 #: print_cmd.c:375
 #, c-format
@@ -1537,101 +1615,106 @@ msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí"
 
 #: print_cmd.c:380
 msgid "xtrace_set: NULL file pointer"
-msgstr ""
+msgstr "xtrace_set: pointeoir folamh comhaid"
 
 #: print_cmd.c:384
 #, c-format
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: \"%c\": carachtar formáide neamhbhailí"
+msgstr "cprintf: '%c': carachtar formáide neamhbhailí"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "tuairisceoir comhaid as raon"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: atreorú athbhríoch"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh."
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: srianta: ní féidir aschur a atreorú."
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg."
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú."
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt."
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí."
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: rogha neamhbhailí"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr ""
-"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid "
-"%d"
+"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir "
+"éifeachtach %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr ""
-"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid "
-"%d"
+"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir "
+"éifeachtach %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
+"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe."
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: is comhadlann é"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Níl ainm orm!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, leagan %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1640,53 +1723,52 @@ msgstr ""
 "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n"
 "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Roghanna fada GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Roghanna blaoisce:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s nó -o rogha\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
-"Úsáid %s -c \"help set\" le haghaidh tuilleadh eolais faoi roghanna "
-"blaoisce.\n"
+"Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
-"Úsáid \"%s -c help\" le haghaidh tuilleadh eolais faoi orduithe ionsuite "
+"Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite "
 "blaoisce.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Úsáid an t-ordú \"bashbug\" le tuarascáil a sheoladh faoi fhabht.\n"
+msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "leathanach baile bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
+msgstr "Cabhair ghinearálta le bogearraí GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: oibríocht neamhbhailí"
@@ -1860,106 +1942,112 @@ msgstr "Comhartha neamhaithnid #"
 msgid "Unknown Signal #%d"
 msgstr "Comhartha neamhaithnid #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
-msgstr "Drochionadú: níl \"%s\" dúnta i %s"
+msgstr "Drochionadú: níl '%s' dúnta i %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: ní féidir liosta a shannadh go ball eagair."
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis."
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis."
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh."
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa."
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d."
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "drochionadú: níl  \"`\" dúnta i %s"
+msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe."
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe."
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 "command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid "
 "1."
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
-msgstr ""
+msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: drochionadú"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: comhaireamh neamhbhailí línte"
+msgstr "%s: fairsingiú neamhbhailí indíreach"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach"
+msgstr "%s: ainm neamhbhailí athróige"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: paraiméadar gan socrú."
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: paraiméadar neamhnitheach nó gan socrú."
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: slonn fotheaghráin < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: drochionadú"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: ní féidir sannadh mar seo."
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
+"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta "
+"éigeantach"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
-msgstr "drochionadú: níl  \"`\" dúnta i %s"
+msgstr "drochionadú: níl  '`' dúnta i %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "gan meaitseáil: %s"
@@ -1975,37 +2063,42 @@ msgstr "%s: ag súil le slonn slánuimhreach."
 
 #: test.c:265
 msgid "`)' expected"
-msgstr "Ag súil le \")\""
+msgstr "Ag súil le ')'"
 
 #: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
-msgstr "Ag súil le \")\", ach fuarthas %s."
+msgstr "Ag súil le ')', ach fuarthas %s."
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: ag súil le hoibreoir aonártha."
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: ag súil le hoibreoir dénártha."
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
-msgstr "\"]\" ar iarraidh"
+msgstr "']' ar iarraidh"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "Uimhir chomhartha neamhbhailí"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2013,85 +2106,84 @@ msgstr ""
 "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á "
 "athsheoladh chugam féin."
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: droch-chomhartha %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
-msgstr "Earráid agus sainmhíniú na feidhme \"%s\" á iompórtáil."
+msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil."
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1."
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha."
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: ní féidir luach a shannadh ar an athróg"
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
-msgstr ""
+msgstr "%s: slánuimhir a sannadh go tagairt ainm"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha"
 
-#: variables.c:4218
-#, fuzzy, c-format
+#: variables.c:4698
+#, c-format
 msgid "%s has null exportstr"
-msgstr "%s: paraiméadar neamhnitheach nó gan socrú."
+msgstr "Tá teaghrán easpórtála neamhnitheach ag %s"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s."
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
-msgstr "Níl \"=\" sa teaghrán easpórtála le haghaidh %s."
+msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s."
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: níl comhthéacs global_variables ann"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD"
 
-#: variables.c:5624
-#, fuzzy, c-format
+#: variables.c:6277
+#, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%d: tuairisceoir comhaid neamhbhailí: %s"
+msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe"
 
-#: variables.c:5669
-#, fuzzy, c-format
+#: variables.c:6322
+#, c-format
 msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s as raon"
+msgstr "%s: %s: luach comhoiriúnachta as raon"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Cóipcheart © 2013 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Cóipcheart © 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2115,23 +2207,23 @@ msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 "Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: ní féidir %lu beart a leithdháileadh"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr ""
 "%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh"
@@ -2149,6 +2241,9 @@ msgid ""
 "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
 "x keyseq:shell-command] [keyseq:readline-function or readline-command]"
 msgstr ""
+"bind [-lpsvPSVX] [-m MAPA_EOCHRACH] [-f AINM_CHOMHAID] [-q AINM] [-u AINM] [-"
+"r SRAITH_EOCHRACHA] [-x SRAITH_EOCHRACHA:ORDÚ_BLAOISCE] [SRAITH_EOCHRACHA:"
+"GNÍOMH_readline nó ORDÚ_readline]"
 
 #: builtins.c:56
 msgid "break [n]"
@@ -2180,12 +2275,11 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]"
 
 #: builtins.c:78
 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [ainm[=luach] ...]"
+msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] ainm[=luach] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2213,7 +2307,7 @@ msgstr "getopts teaghrán_roghanna ainm [argóint]"
 
 #: builtins.c:98
 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a ainm] [ordú [argóintí ...]] [atreorú ...]"
+msgstr "exec [-cl] [-a AINM] [ORDÚ [ARGÓINTÍ ...]] [ATREORÚ ...]"
 
 #: builtins.c:100
 msgid "exit [n]"
@@ -2230,11 +2324,11 @@ msgstr ""
 
 #: builtins.c:109
 msgid "fg [job_spec]"
-msgstr "fg [SONRÚ_JAB]"
+msgstr "fg [SONRÚ_TAISC]"
 
 #: builtins.c:113
 msgid "bg [job_spec ...]"
-msgstr "bg [SONRÚ_JAB ...]"
+msgstr "bg [SONRÚ_TAISC ...]"
 
 #: builtins.c:116
 msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
@@ -2254,20 +2348,19 @@ msgstr ""
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [SONRÚ_JAB ...] nó jobs -x ORDÚ [ARGÓINTÍ]"
+msgstr "jobs [-lnprs] [SONRÚ_TAISC ...] nó jobs -x ORDÚ [ARGÓINTÍ]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [SONRÚ_JAB ...]"
+msgstr "disown [-h] [-ar] [SONRÚ_TAISC ... | AITHEANTAS_PRÓISIS ...]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
-"kill [-s sonrú_comhartha | -n uimhir_chomhartha | -sonrú_comhartha] "
-"aitheantóir_próisis | sonrú_jab ... nó kill -l [sonrú_comhartha]"
+"kill [-s SONRÚ_COMHARTHA | -n UIMHIR_CHOMHARTHA | -SONRÚ_COMHARTHA] "
+"AITHEANTAS_PRÓISIS | SONRÚ_TAISC ... nó kill -l [SONRÚ_COMHARTHA]"
 
 #: builtins.c:136
 msgid "let arg [arg ...]"
@@ -2288,15 +2381,15 @@ msgstr "return [n]"
 
 #: builtins.c:142
 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o ainm-rogha] [--] [argóint ...]"
+msgstr "set [-abefhkmnptuvxBCHP] [-o AINM-ROGHA] [--] [ARGÓINT ...]"
 
 #: builtins.c:144
 msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [-n] [ainm ...]"
+msgstr "unset [-f] [-v] [-n] [AINM ...]"
 
 #: builtins.c:146
 msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [ainm[=luach] ...] nó export -p"
+msgstr "export [-fn] [AINM[=LUACH] ...] nó export -p"
 
 #: builtins.c:148
 msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
@@ -2308,7 +2401,7 @@ msgstr "shift [n]"
 
 #: builtins.c:152
 msgid "source filename [arguments]"
-msgstr "source comhadainm [argóintí]"
+msgstr "source AINM_COMHAID [ARGÓINTÍ]"
 
 #: builtins.c:154
 msgid ". filename [arguments]"
@@ -2335,21 +2428,20 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] ainm [ainm ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [teorainn]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
-msgstr "umask [-p] [-S] [mód]"
+msgstr "umask [-p] [-S] [MÓD]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [aitheantas ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [AITHEANTAS ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
-msgstr "wait [aitheantas_próisis ...]"
+msgstr "wait [AITHEANTAS_PRÓISIS ...]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2365,7 +2457,7 @@ msgstr "select AINM [in FOCAIL ... ;] do ORDUITHE; done"
 
 #: builtins.c:190
 msgid "time [-p] pipeline"
-msgstr "time [-p] píblíne"
+msgstr "time [-p] PÍBLÍNE"
 
 #: builtins.c:192
 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
@@ -2381,7 +2473,7 @@ msgstr ""
 
 #: builtins.c:196
 msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while ORDUITHE; do ORDUITHE; done"
+msgstr "while ORDUITHE1; do ORDUITHE2; done"
 
 #: builtins.c:198
 msgid "until COMMANDS; do COMMANDS; done"
@@ -2389,7 +2481,7 @@ msgstr "until ORDUITHE; do ORDUITHE; done"
 
 #: builtins.c:200
 msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [AINM] ordú [atreoruithe]"
+msgstr "coproc [AINM] ORDÚ [ATREORUITHE]"
 
 #: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
@@ -2401,7 +2493,7 @@ msgstr "{ ORDUITHE ; }"
 
 #: builtins.c:206
 msgid "job_spec [&]"
-msgstr "sonrú_jab [&]"
+msgstr "SONRÚ_TAISC [&]"
 
 #: builtins.c:208
 msgid "(( expression ))"
@@ -2413,7 +2505,7 @@ msgstr "[[ slonn ]]"
 
 #: builtins.c:212
 msgid "variables - Names and meanings of some shell variables"
-msgstr "Athróga - ainmneacha agus mínithe ar fathróga áirithe blaoisce"
+msgstr "athróga - ainmneacha agus mínithe ar athróga áirithe blaoisce"
 
 #: builtins.c:215
 msgid "pushd [-n] [+N | -N | dir]"
@@ -2429,7 +2521,7 @@ msgstr "dirs [-clpv] [+N] [-N]"
 
 #: builtins.c:226
 msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o] [ainm_rogha ...]"
+msgstr "shopt [-pqsu] [-o] [AINM_ROGHA ...]"
 
 #: builtins.c:228
 msgid "printf [-v var] format [arguments]"
@@ -2437,43 +2529,44 @@ msgstr "printf [-v athróg] formáid [argóintí]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o rogha] [-A gníomh] [-G patrún] [-W "
-"liosta_focal]  [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S "
-"iarmhír] [ainm ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ROGHA] [-A GNÍOMH] [-G PATRÚN] [-W "
+"LIOSTA_FOCAL]  [-F FEIDHM] [-C ORDÚ] [-X PATRÚN_SCAGAIRE] [-P RÉIMÍR] [-S "
+"IARMHÍR] [AINM ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
 "compgen [-abcdefgjksuv] [-o rogha]  [-A gníomh] [-G patrún] [-W "
 "liosta_focal]  [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S "
-"iarmhír] [FOCAL]"
+"iarmhír] [focal]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o rogha] [-DE] [ainm ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o ROGHA] [-DEI] [AINM ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
-msgstr "a"
+msgstr ""
+"mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] "
+"[-u TC] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]"
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr "t"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-"
+"t] [-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]"
 
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2494,22 +2587,20 @@ msgid ""
 msgstr ""
 "Sainigh nó taispeáin ailiasanna.\n"
 "    \n"
-"    Gan argóintí, priontálann \"alias\" an liosta ailiasanna san fhoirm\n"
-"    \"alias LUACH=VALUE\" ar an ngnáth-aschur.\n"
+"    Gan argóintí, priontáiltear an liosta ailiasanna san fhoirm\n"
+"    ath-inúsáidte 'alias AINM=LUACH' ar an ngnáth-aschur.\n"
 "    \n"
 "    I ngach cás eile, sainítear ailias do gach AINM a thugtar LUACH dó.\n"
 "    Má tá spás chun deiridh LUACH, déantar an chéad fhocal eile a sheiceáil\n"
 "    le haghaidh ionadú ailias nuair a fhairsingítear an ailias.\n"
 "    \n"
 "    Roghanna:\n"
-"      -p\tPriontáil gach ailias sainithe i bhfoirm inathúsáidte.\n"
+"      -p\tPriontáiltear gach ailias sainithe i bhfoirm ath-inúsáidte.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear an luach true mura thugtar AINM nach bhfuil\n"
-"    ailias sainithe dó."
+"    Aischuirtear fíor mura dtugtar AINM nach bhfuil ailias sainithe dó."
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2521,7 +2612,7 @@ msgstr ""
 "Bain gach AINM de liosta na n-ailiasanna sainithe.\n"
 "    \n"
 "    Roghanna:\n"
-"      -a\tbain gach sainiú ailias.\n"
+"      -a\tbaintear gach sainiú ailias.\n"
 "     \n"
 "    Aischuirtear rath ach sa chás nach bhfuil AINM ann."
 
@@ -2579,7 +2670,7 @@ msgid ""
 msgstr ""
 "Scoir de lúba for, while nó until.\n"
 "    \n"
-"    Scoir de lúb \"for\", \"while\" \"nó \"until\". Má shonraítear N, scoir\n"
+"    Scoir de lúb 'for', 'while' nó 'until'. Má shonraítear N, scoir\n"
 "    de N lúb mhórthimpeall.\n"
 "    \n"
 "    Stádas Scortha:\n"
@@ -2597,8 +2688,8 @@ msgid ""
 msgstr ""
 "Lean ar aghaidh le lúba for, while nó until.\n"
 "    \n"
-"    Tosaigh an chéad atriall eile den lúb mhórthimpeall \"for\", \"while\" "
-"nó \"until\".\n"
+"    Tosaigh an chéad atriall eile den lúb mhórthimpeall 'for', 'while' nó "
+"'until'.\n"
 "    Má shonraítear N, tosaigh an Nú lúb mhórthimpeall.\n"
 "    \n"
 "    Stádas Scortha:\n"
@@ -2615,19 +2706,19 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Rith orduithe ionsuite na blaoisce.\n"
 "    \n"
-"    Rith ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n"
-"    ordaithe a dhéanamh. Tá sé seo úsáideach más mian leat ordú blaoisce a\n"
+"    Ritear ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n"
+"    ordaithe a dhéanamh. Tá sé seo úsáideach más mian ordú blaoisce a\n"
 "    athshainiú mar fheidhm bhlaoisce agus gur ghá an t-ordú ionsuite a rith\n"
 "    laistigh den fheidhm.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa mura "
-"bhfuil\n"
-"    ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce."
+"    Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa sa chás "
+"nach\n"
+"    bhfuil ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce."
 
 #: builtins.c:369
 msgid ""
@@ -2646,12 +2737,12 @@ msgid ""
 msgstr ""
 "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n"
 "    \n"
-"    Gan SLONN, aischuirtear \"$line $filename\". Le SLONN, aischuirtear\n"
-"    \"$line $subroutine $filename\"; is féidir lorg cruaiche a sholáthar "
+"    Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n"
+"    '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar "
 "leis an\n"
 "    fhaisnéis bhreise seo.\n"
 "    \n"
-"    Taispeánann an luach atá ag SLONN an méis frámaí glaoigh le dul siar\n"
+"    Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n"
 "    roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n"
 "    \n"
 "    Stádas Scortha:\n"
@@ -2703,9 +2794,50 @@ msgid ""
 "when\n"
 "    -P is used; non-zero otherwise."
 msgstr ""
+"Athraigh comhadlann oibre na blaoisce.\n"
+"    \n"
+"    Athraíonn \"cd\" an chomhadlann reatha go COMHADLANN. Is é luach na "
+"hathróige\n"
+"    blaoisce HOME an réamhshocrú le haghaidh COMHADLANN.\n"
+"    \n"
+"    Sainmhíníonn an athróg CDPATH an chonair chuardaigh don chomhadlann ina\n"
+"    bhfuil COMHADLANN. Cuirtear idirstad (:) idir ainmneacha malartacha\n"
+"    comhadlainne i CDPATH.\n"
+"    Is ionann ainm comhadlainne folamh agus an chomhadlann reatha. Má "
+"thosaíonn\n"
+"    COMHADLANN le slaiste (/), ní usáidtear CDPATH.\n"
+"    \n"
+"    Mura aimsítear an chomhadlann, agus má ta an athróg bhlaoisce "
+"\"cdable_vars\"\n"
+"    socruithe, glactar leis an bhfocal mar ainm athróige. Má tá luach ag an "
+"athróg\n"
+"    sin, úsáidtear a luach i gcomhair COMHADLANN.\n"
+"    \n"
+"    Roghanna:\n"
+"      -L\tLean naisc shiombalaigh. Taifigh naisc shiombalaigh i COMHADLANN\n"
+"      \t\ttar éis gach \"..\" a phróiseáil.       -P\tÚsáid an chomhadlann "
+"fhisiciúil gan naisc shiombalaigh a leanúint.\n"
+"      \t\tTaifigh naisc shiombalaigh i COMHADLANN roimh \"..\" a "
+"phróiseáil.\n"
+"      -e\tMá tá an rogha -P ann, agus mura féidir an chomhadlann oibre "
+"reatha\n"
+"      \t\ta dhéanamh amach i gceart, scoir le stádas nach náid é.\n"
+"      -@\tMá thacaíonn an córas leis, taispeáin comhad le haitreabúidí "
+"bhreisithe\n"
+"      \t\tmar chomhadlann ina bhfuil na haitreabúidí bhreisithe.\n"
+"    \n"
+"    Leantar naisc shiombalaigh ar bhonn réamhshocraithe, mar a bheadh -L "
+"ann.\n"
+"    Chun \"..\" a phróiseáil, baintear páirt na conaire díreach roimhe siar "
+"go\n"
+"    slaiste (/) nó go tús COMHADLANN.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear 0 má athraíodh an chomhadlann, agus má d'éirigh le socrú "
+"$PWD\n"
+"    nuair a úsáidtear -P; i gcásanna eile aischuirtear luach nach náid é."
 
 #: builtins.c:425
-#, fuzzy
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -2724,13 +2856,14 @@ msgstr ""
 "    \n"
 "    Roghanna:\n"
 "      -L\tpriontáil luach $PWD má thugann sé ainm na comhadlainne\n"
-"    \toibre reatha.      -P\tpriontáil an chomhadlann fhisiciúil, gan naisc "
-"shiombalacha\n"
+"        \toibre reatha.\n"
+"       -P\tpriontáil an chomhadlann fhisiciúil, gan naisc shiombalacha\n"
 "    \n"
-"    Mar réamhshocrú, oibríonn \"pwd\" faoi mar a bheadh \"-L\" sonraithe.\n"
+"    Mar réamhshocrú, oibríonn 'pwd' faoi mar a bheadh '-L' sonraithe.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear luach de 0 mura thugtar rogha neamhbhailí nó mura féidir\n"
+"    Aischuirtear luach de 0 ach sa chás go dtugtar rogha neamhbhailí nó nach "
+"féidir\n"
 "    an chomhadlann reatha a léamh."
 
 #: builtins.c:442
@@ -2774,7 +2907,6 @@ msgstr ""
 "    Teipeann air i gcónaí."
 
 #: builtins.c:471
-#, fuzzy
 msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
@@ -2792,23 +2924,23 @@ msgid ""
 "    Exit Status:\n"
 "    Returns exit status of COMMAND, or failure if COMMAND is not found."
 msgstr ""
-"Rith ordú simplí nó taispeáin eolas maidir le horduithe.\n"
+"Ritheann \"command\" ordú simplí nó taispeánann eolas maidir le horduithe.\n"
 "    \n"
-"    Ritheann ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó "
-"taispeánann\n"
+"    Ritear ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó taispeántar\n"
 "    eolas maidir leis na horduithe sonraithe. Is féidir é seo a úsáid chun "
 "orduithe ar\n"
 "    diosca a rith má tá feidhm leis an ainm céanna ann.\n"
 "    \n"
 "    Roghanna:\n"
-"      -p\túsáid luach réamhshocraithe le haghaidh CONAIR a aimseoidh go "
+"      -p\túsáidtear luach réamhshocraithe le haghaidh CONAIR a aimseoidh go "
 "cinnte\n"
 "        \tgach ceann de na gnáthríomhchláir áirge.\n"
-"      -v\ttaispeáin cur síos ar ORDÚ cosúil leis an ordú ionsuite \"type\"\n"
-"      -V\ttaispeáin cur síos níos faide de gach ORDÚ\n"
+"      -v\ttaispeántar cur síos ar ORDÚ cosúil leis an ordú ionsuite 'type'\n"
+"      -V\ttaispeántar cur síos níos faide ar gach ORDÚ\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear an stádas scortha ó ORDÚ, nó teip mura aimsítear ORDÚ."
+"    Aischuirtear an stádas scortha ó ORDÚ, nó teip sa chás nach n-aimsítear "
+"ORDÚ."
 
 #: builtins.c:490
 msgid ""
@@ -2829,11 +2961,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2849,20 +2981,59 @@ msgid ""
 "    Returns success unless an invalid option is supplied or a variable\n"
 "    assignment error occurs."
 msgstr ""
+"Socraíonn \"declare\" luachanna agus airíonna athróige.\n"
+"    \n"
+"    Fograíonn \"declare\" athróga agus tugann sé aitreabúidí dóibh. Gan\n"
+"    AINMneacha, taispeántar a luach agus a haitreabúidí le haghaidh gach "
+"athróg.\n"
+"    \n"
+"    Roghanna:\n"
+"      -f\tGníomh nó taispeáint srianta le hainmneacha feidhmeanna agus "
+"sainithe.\n"
+"      -F\tGníomh le hainmneacha feidhmeanna amháin (móide uimhir líne agus\n"
+"      \t\tcomhad foinse le linn dífhabhtaithe).\n"
+"      -g\tCruthaítear athróga comhchoiteanna nuair a úsáidtear é laistigh "
+"de\n"
+"      \t\tfheidhm bhlaoisce; déantar neamhaird de i gcásanna eile.\n"
+"      -p\tTaispeántar a luach agus a haitreabúidí le haghaidh gach AINM.\n"
+"    \n"
+"    Roghanna a shocraíonn aitreabúidí:\n"
+"      -a\tAINMneacha mar eagair innéacsaithe (má thacaítear leo)\n"
+"      -A\tAINMneacha mar eagair chomhthiomsaitheacha (má thacaítear leo)\n"
+"      -i\tCuirtear an aitreabúid \"integer\" (.i. slonnuimhir) le "
+"hAINMneacha.\n"
+"      -l\tTiontaítear luach gach AINM go cás íochtair agus é á shannadh.\n"
+"      -n\tBíodh AINM ina thagairt don athróg ainmnithe ag a luach.\n"
+"      -r\tBíodh AINMneacha inléite amháin.\n"
+"      -t\tCuirtear an aitreabúid \"trace\" (.i. lorg) le hAINMneacha.\n"
+"      -u\tTiontaítear luach gach AINM go cás uachtair agus é á shannadh.\n"
+"      -x\tEaspórtálfar na hAINMneacha as seo amach.\n"
+"    \n"
+"    Le \"+\" in áit \"-\", múchtar an aitreabúid shonraithe.\n"
+"    \n"
+"    Má tá an aitreabúid \"integer\" ag athróg, déantar luacháil "
+"uimhríochtuil\n"
+"    (feic an t-ordú \"let\") nuair a shanntar leis an athróg.\n"
+"    \n"
+"    Nuair a úsáidtear \"declare\" laistigh de fheidhm, beidh na hAINMneacha\n"
+"    logánta, mar a bheadh leis an t-ordú \"local\". Stopann an rogha \"-g\" "
+"é seo.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go\n"
+"    dtarlaíonn earráid shannta."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
 "    A synonym for `declare'.  See `help declare'."
 msgstr ""
-"Socraigh luachanna agus airíonna athróg.\n"
+"Socraíonn \"typeset\" luachanna agus airíonna athróige.\n"
 "    \n"
-"    Imithe i léig. Feic \"help declare\"."
+"    Comhchiallach le \"declare\". Feic \"help declare\"."
 
 #: builtins.c:538
-#, fuzzy
 msgid ""
 "Define local variables.\n"
 "    \n"
@@ -2876,21 +3047,21 @@ msgid ""
 "    Returns success unless an invalid option is supplied, a variable\n"
 "    assignment error occurs, or the shell is not executing a function."
 msgstr ""
-"Sainigh athróga logánta.\n"
+"Sainíonn \"local\" athróga logánta.\n"
 "    \n"
-"    Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis. "
-"Is\n"
-"    féidir le ROGHA a bheith ceann ar bith de na roghanna a ghlacann "
-"\"declare\" leo.\n"
+"    Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis.\n"
+"    Is féidir ceann ar bith de na roghanna a ghlacann \"declare\" leo a "
+"úsáid\n"
+"    mar ROGHA.\n"
 "    \n"
 "    Ní féidir athróga logánta a úsáid ach laistigh de fheidhm. Tá siad "
 "infheicthe\n"
 "    san fheidhm ina shainítear iad agus a mic amháin.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear rath mura thugtar rogha neamhbhailí, nó mura tharlaíonn "
-"earráid,\n"
-"    nó mura bhfuil an bhlaosc ag rith feidhme."
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go "
+"dtarlaíonn earráid,\n"
+"    nó go bhfuil an bhlaosc ag rith feidhme."
 
 #: builtins.c:555
 #, fuzzy
@@ -2922,23 +3093,32 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 "Scríobh na hargóintí ar an ngnáthaschur.\n"
 "    \n"
-"    Taispeáin na hARGÓINTÍ ar an ngnáthaschur agus líne nua ina ndiadh.\n"
+"    Taispeántar na hARGÓINTÍ ar an ngnáthaschur le carachtair spáis eatarthu "
+"agus\n"
+"    líne nua ina ndiadh.\n"
 "    \n"
 "    Roghanna:\n"
-"      -n\tná hiarcheangail líne nua\n"
-"      -n\tcumasaigh na héaluithe cúlslaise       -E\tdíchumasaigh na "
-"héaluithe cúlslaise    \n"
-"    Tuigeann \"echo\" na carachtair éalaithe le cúlslais seo a leanas:\n"
+"      -n\tní hiarcheanglaítear líne nua\n"
+"      -e\tcumasaítear na héaluithe cúlslaise thíos\n"
+"      -E\tdíchumasaítear na héaluithe cúlslaise\n"
+"    Tuigeann 'echo' na carachtair éalaithe le cúlslais seo a leanas:\n"
 "      \\a\tairdeall (clog)\n"
 "      \\b\tcúlspás\n"
 "      \\c\tcur deireadh le aschur\n"
 "      \\e\tcaractar éalaithe\n"
+"      \\E\tcaractar éalaithe\n"
 "      \\f\tfotha foirme\n"
 "      \\n\tlíne nua\n"
 "      \\r\taisfhilleadh carráiste\n"
@@ -2955,7 +3135,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Aischuirtear rath ach i gcás earráide scríofa."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2977,7 +3157,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Aischuirtear rath ach i gcás earráide scríofa."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3004,7 +3184,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3024,7 +3204,7 @@ msgstr ""
 "    Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach "
 "é."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3065,7 +3245,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3087,8 +3267,27 @@ msgid ""
 "    Returns success unless COMMAND is not found or a redirection error "
 "occurs."
 msgstr ""
+"Cuir an t-ordú sonraithe in áit na blaoisce.\n"
+"    \n"
+"    Ritear ORDÚ, agus an ríomhchlár sonraithe curtha in áit na blaoisce "
+"seo.\n"
+"    Úsáidtear na hARGÓINTÍ mar argóintí don ORDÚ. Gan ÓRDÚ, cuirtear\n"
+"    atreoruithe i bhfeidhm sa bhlaosc reatha.\n"
+"    \n"
+"    Roghanna:\n"
+"      -a AINM\túsáidtear AINM mar argóint uimhir a náid don ORDÚ.\n"
+"      -c\tritear ORDÚ le timpeallacht fholamh\n"
+"      -l\tcuirtear fleiscín mar argóint uimhir a náid don ORDÚ.\n"
+"    \n"
+"    Sa chás nach féidir an t-ordú a rith, scoirfidh blaosc "
+"neamhidirghníomhach,\n"
+"    mura bhfuil an rogha blaoisce 'execfail' socruithe.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás nach bhfaightear ORDÚ nó go dtarlaíonn\n"
+"    earráid atreoraithe."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3100,7 +3299,7 @@ msgstr ""
 "    Scoireann den bhlaosc le stádas N. Má fhágtar N ar lár, is é stádas\n"
 "    an chéad ordaithe deireanaigh an stádas scortha."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3113,7 +3312,7 @@ msgstr ""
 "    Scoireann de bhlaosc logála isteach le stádas scortha N. Aischuirtear\n"
 "    earráid má ritear é i mblaosc nach blaosc logála isteach í."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3158,17 +3357,17 @@ msgstr ""
 "      -n\tfág uimhreacha na línte ar lár agus liosta á thaispeáint\n"
 "      -r\taisiompaigh ord na línte (.i. liostaigh an ceann is nuaí ar dtús)\n"
 "    \n"
-"    San fhormáid \"fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]\", ath-ritear ORDÚ\n"
+"    San fhormáid 'fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]', ath-ritear ORDÚ\n"
 "    tar éis an t-ionadú SEAN=NUA a dhéanamh.\n"
 "    \n"
-"    Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann \"r cc\" an t-"
-"ordú is deireanaí\n"
-"    a thosaíonn le \"cc\", agus ath-ritheann \"r\" an t-ordú is deireanaí.\n"
+"    Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann 'r cc' an t-ordú "
+"is deireanaí\n"
+"    a thosaíonn le 'cc', agus ath-ritheann 'r' an t-ordú is deireanaí.\n"
 "    \n"
 "    Stádas Scortha:n\\     Aischuirtear rath nó stádas an ordaithe rite; "
 "neamh-nialas má tharlaíonn earráid."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3179,17 +3378,18 @@ msgid ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
-"Bog jab go dtí an tulra.\n"
+"Bog tasc go dtí an tulra.\n"
 "    \n"
-"    Cuir an jab a shonraítear le SONRÚ_JAB sa tulra agus é mar an jab "
+"    Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc "
 "reatha.\n"
-"    Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na "
+"    Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na "
 "blaoisce.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Stádas an ordaithe curtha sa tulra, nó teip má tharlaíonn earráid."
+"    Aischuirtear stádas an ordaithe a cuireadh sa tulra, nó teip má "
+"tharlaíonn earráid."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3202,18 +3402,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
-"Bog jabanna go dtí an cúlra.\n"
+"Bog tascanna go dtí an cúlra.\n"
 "    \n"
-"    Cuir an jab a shonraítear le SONRÚ_JAB sa chúlra cosúil le é a thosú le "
-"\"&\".\n"
-"    Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na "
+"    Cuirtear an tasc a shonraítear le SONRÚ_TASC sa chúlra cosúil le é a "
+"thosú le '&'.\n"
+"    Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na "
 "blaoisce.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear rath ach má tharlaíonn earráid nó mura bhfuil\n"
-"    rialú jabanna cumasaithe."
+"    Aischuirtear rath ach sa chás go dtarlaíonn earráid nó nach bhfuil\n"
+"    rialú tascanna cumasaithe."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3236,9 +3436,30 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
+"Cuimhnigh ar nó taispeáin suíomhanna ríomhchláracha.\n"
+"    \n"
+"    Faigh agus cuimhnigh ar an gconair iomlán le haghaidh gach AINM.\n"
+"    Gan argóintí, taispeántar eolas maidir le orduithe a bhfuil cuimhne "
+"orthu.\n"
+"    \n"
+"    Roghanna:\n"
+"      -d\tDéantar dearmad ar shuíomh gach AINM.\n"
+"      -l\tTaispeáintear i bhformáid atá inúsáidte mar ionchur.\n"
+"      -p CONAIR\tÚsáidtear CONAIR mar an gconair iomlán le haghaidh AINM.\n"
+"      -r\tDéantar dearmad ar gach shuíomh atá coinnithe i gcuimhne.\n"
+"      -t\tPriontáiltear an suíomh atá i gcuimhne le haghaidh gach AINM, "
+"agus\n"
+"    \t\tcuirtear AINM roimh a shuíomh má thugtar níos mó ná AINM amháin.     "
+"Argóintí:\n"
+"      AINM\tLorgaítear gach AINM i $PATH agus cuirtear le liosta na n-"
+"orduithe\n"
+"    \t\tatá coinnithe i gcuimhne é.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás nach n-aimsítear AINM, nó go bhfuil\n"
+"    rogha neamhbhailí ann."
 
-#: builtins.c:812
-#, fuzzy
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3253,7 +3474,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3267,9 +3488,10 @@ msgstr ""
 "    i gcásanna eile taispeántar liosta na n-ábhar cabhrach.\n"
 "    \n"
 "    Roghanna:\n"
-"      -d\ttaispeáin cur síos gairid ar gach ábhar\n"
-"      -m\ttaispeáin úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n"
-"      -s\tná taispeáin ach achoimre gairid úsáide le haghaidh gach ábhair a\n"
+"      -d\ttaispeántar cur síos gairid ar gach ábhar\n"
+"      -m\ttaispeántar úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n"
+"      -s\tní thaispeántar ach achoimre gairid úsáide le haghaidh gach ábhair "
+"a\n"
 "        \tmheatseálann PATRÚN\n"
 "    \n"
 "    Argóintí:\n"
@@ -3279,7 +3501,7 @@ msgstr ""
 "    Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n"
 "    rogha neamhbhailí."
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3288,7 +3510,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3313,7 +3536,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3336,9 +3559,31 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
-
-#: builtins.c:899
-#, fuzzy
+"Taispeáin stádas tascanna.\n"
+"   \n"
+"   Liostáiltear na tascanna gníomhacha. Le SONRÚ_TAISC, ní thaispeántar ach "
+"an tasc sin.\n"
+"   Gan roghanna, taispeántar stádas gach tasc gníomhach.\n"
+"   \n"
+"   Roghanna:\n"
+"     -l\tliostáiltear aitheantais na bpróiseas chomh maith leis an ngnáth-"
+"eolas.\n"
+"     -n\tní liostáiltear ach na próisis le stádas athruithe ón chéad fógra "
+"roimhe seo\n"
+"     -p\tliostáiltear aitheantais na bpróiseas amháin\n"
+"     -r\tní liostáiltear ach tascanna atá ag rith\n"
+"     -s\tní liostáiltear ach tascanna atá stoptha\n"
+"   \n"
+"   Le -x, ritear ORDÚ tar éis gach SONRÚ_TAISC atá in ARGÓINTÍ a athrú go "
+"aitheantas\n"
+"   próisis an phríomh-phróisis i ngrúpa próiseas an taisc sin.\n"
+"   \n"
+"   Stádas Scortha:\n"
+"   Aischuirtear rath ach sa chás go dtugtar rogha neamhbailí nó go "
+"dtarlaíonn earráid.\n"
+"   Má úsáidtear -x, aischuirtear an stádas scortha ó ORDÚ.  "
+
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3354,22 +3599,23 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
-"Bain jabanna den mblaosc reatha.\n"
+"Bain tascanna den mblaosc reatha.\n"
 "    \n"
-"    Baintear gach SONRÚ_JAB den tábla de jabanna gníomhacha. Gan\n"
-"    SONRÚ_JAB ar bith úsáidtear an jab atá reatha dar leis an mblaosc.\n"
+"    Baintear gach SONRÚ_TAISC den tábla de tascanna gníomhacha. Gan\n"
+"    SONRÚ_TAISC ar bith úsáidtear an tasc atá reatha dar leis an mblaosc.\n"
 "    \n"
 "    Roghanna:\n"
-"      -a\tbain gach jab mura sholáraítear SONRÚ_JAB\n"
-"      -h\tmarcáil gach SONRÚ_JAB sa chaoi nach seolfar SIGHUP chuige má\n"
+"      -a\tbaintear gach tasc mura sholáraítear SONRÚ_TAISC\n"
+"      -h\tmarcáiltear gach SONRÚ_TAISC sa chaoi nach seolfar SIGHUP chuige "
+"má\n"
 "        \tfhaigheann an bhlaosc féin SIGHUP\n"
-"      -r\tná bain ach jabanna atá ag rith\n"
+"      -r\tní bhaintear ach tascanna atá ag rith\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí\n"
-"    nó SONRÚ_JAB neamhbhailí."
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó "
+"SONRÚ_TAISC neamhbhailí."
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3391,8 +3637,36 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
+"Seol comhartha chuig tasc.\n"
+"    \n"
+"    Seoltar an comhartha ainmnithe ag SONRÚ_COMHARTHA nó UIMHIR_CHOMHARTHA "
+"go dti\n"
+"    an tasc sonraithe le AITHEANTAS_PRÓISIS nó SONRÚ_TAISC. Mura bhfuil "
+"SONRÚ_COMHARTHA\n"
+"    nó UIMHIR_CHOMHARTHA ann, úsáidtear SIGTERM.\n"
+"    \n"
+"    Roghanna:\n"
+"      -s SONRÚ_COMHARTHA\n"
+"Is ainm comhartha é SONRÚ_COMHARTHA\n"
+"      -n UIMHIR_COMHARTHA\n"
+"Is uimhir chomhartha é SONRÚ_COMHARTHA\n"
+"      -l\tLiostáiltear ainmneacha na gcomharthaí. Má tá argóintí i ndiadh \"-"
+"l\",\n"
+"    \t\tglactar leo mar uimhreacha comharthaí agus taispeántar a n-"
+"ainmneacha.\n"
+"      -L\tMar an gcéanna le \"-l\"\n"
+"    \n"
+"    Tá \"kill\" ina ordú ionsuite blaoisce ar dhá chúis: is féidir "
+"aitheantais\n"
+"    tascanna a úsáid in ionad aitheantais próiseas, agus is féidir próisis a "
+"stopadh\n"
+"    fiú má tá uasmhéid na bpróiseas a bhfuil cead agat a chruthú sroichte "
+"agat.\n"
+"        Stádas Scortha:\n"
+"    Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla "
+"earráid."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3437,7 +3711,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3458,7 +3732,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3489,7 +3763,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3511,7 +3785,7 @@ msgstr ""
 "    Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme "
 "nó scripte."
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3597,7 +3871,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3619,7 +3893,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3637,8 +3911,25 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
+"Socraíonn \"export\" an aitreabúid easpórtála le haghaidh athróga blaoisce.\n"
+"    \n"
+"    Marcáiltear gach AINM le haghaidh easpórtáil uathoibríoch go dtí "
+"timpeallacht\n"
+"    na n-orduithe a ritear ina dhiaidh sin. Má sonraítear LUACH, sann LUACH\n"
+"    roimh easpórtáil.\n"
+"    \n"
+"    Roghanna:\n"
+"      -f\tcuirtear an aitreabúid i bhfeidhm ar feidhmeanna blaoisce\n"
+"      -n\tbaintear an aitreabúid ó gach AINM\n"
+"      -p\tpriontáiltear liosta de athróga agus feidhmeanna easpórtáilte\n"
+"    \n"
+"    Cuireann argóint de '--' deireadh le próiseáil na hargóintí.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil "
+"AINM neamhbhailí."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3659,7 +3950,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3669,8 +3960,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
+"Iomlaoidigh paraiméadair ionaid.\n"
+"    \n"
+"    Athainmnítear na paraiméadair ionaid $N+1,$N+2 ... mar $1,$2 ...\n"
+"    Gan N, glactar leis mar 1.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3683,8 +3981,19 @@ msgid ""
 "    Returns the status of the last command executed in FILENAME; fails if\n"
 "    FILENAME cannot be read."
 msgstr ""
+"Rith orduithe ó chomhad sa bhlaosc reatha.\n"
+"    \n"
+"    Léitear agus ritear orduithe ó AINM_CHOMHAID sa bhlaosc reatha.\n"
+"    Úsáidtear na hiontrálacha i $PATH chun an chomhadlann ina bhfuil\n"
+"    AINM_CHOMHAID a aimsiú. Má shonraítear ARGÓINTÍ, cuirtear iad mar\n"
+"    paraiméadair ionaid agus AINM_CHOMHAID á rith.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear stádas an ordaithe dheireanaigh a ritheadh in "
+"AINM_COMHAID.\n"
+"    Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3697,8 +4006,21 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
+"Cuir rith na blaoisce ar fionraí.\n"
+"    \n"
+"    Cuirtear rith na blaoisce seo ar fionraí go dtí go bhfaigheann sí\n"
+"    comhartha SIGCONT. Gan iallach, ní féidir blaosc logála isteach a\n"
+"    chur ar fionraí.\n"
+"    \n"
+"    Roghanna:\n"
+"      -f\tcuirtear iallach ar an t-ordú, fiú más blaosc logála isteach atá "
+"ann.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n"
+"    nó go dtarlaíonn earráid."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3781,7 +4103,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3794,7 +4116,7 @@ msgstr ""
 "    caithfear \"]\" go díreach a bheith ann mar an argóint\n"
 "    dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3814,7 +4136,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Éiríonn leis i gcónaí."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3858,7 +4180,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3888,7 +4210,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3937,7 +4259,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3954,8 +4276,24 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
+"Taispeáin nó socraigh masc mhód na gcomhad.\n"
+"    \n"
+"    Athraítear masc cruthaithe comhaid an úsáideora go MÓD. Gan MÓD,\n"
+"    taispeántar luach reatha an mhaisc.\n"
+"    \n"
+"    Ma thosaíonn MÓD le digit, glactar leis mar uimhir ochtnártha;\n"
+"    i gcásanna eile is teaghrán móid shiombalaigh é cosúil leis na cinn\n"
+"    a ghlacann chmod(1) leo.\n"
+"    \n"
+"    Roghanna:\n"
+"    -p\tgan mód, bíodh an aschur i bhformáid atá inúsáidte mar ionchur\n"
+"    -S\taschur siombalach; seachas sin aschuirfear uimhir ochtnártha\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n"
+"    nó go sonraítear rogha neamhbhailí."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3963,19 +4301,45 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
+"Fanann \"wait\" go gcríochnaíonn tasc agus aischuireann a stádas scortha.\n"
+"    \n"
+"    Fantar le gach próiseas ata sonraithe le AITHEANTAS, a d'fhéadann a "
+"bheith\n"
+"    ina aitheantas próisis nó sonrú taisc, agus tuairiscítear a stádas "
+"críochnaithe.\n"
+"    Gan AITHEANTAS, fantar le gach macphróiseas gníomhach reatha, agus "
+"aischuirtear 0.\n"
+"    Más sonrú taisc atá in AITHEANTAS, fantar le gach próiseas i bpíblíne an "
+"taisc sin.\n"
+"    \n"
+"    Má sonraítear an rogha -n, fantar leis an gcéad tasc eile a stopann "
+"agus\n"
+"    aischuirtear a stádas scortha.\n"
+"    \n"
+"    Má sonraítear an rogha -f agus má tá rialú jabanna cumasaithe, fantar go "
+"dtí\n"
+"    go stopann an AITHEANTAS sonraithe, in áit fanadh le athrú stádais sa "
+"tasc sin.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má "
+"tá\n"
+"    AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3989,8 +4353,20 @@ msgid ""
 "invalid\n"
 "    option is given."
 msgstr ""
+"Fanann \"wait\" go gcríochnaíonn próiseas agus aischuireann an stádas "
+"scortha.\n"
+"    \n"
+"    Fantar le gach próiseas atá sonraithe le AITHEANTAS_PRÓISIS, agus\n"
+"    tuairiscítear a stádais chríochnaithe. Gan AITHEANTAS_PRÓISIS, fantar\n"
+"    le gach macphróiseas gníomhach reatha, agus aischuirtear 0.\n"
+"    Ní mór d'AITHEANTAS_PRÓISIS bheith ina aitheantas próisis.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an\n"
+"    ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n"
+"    rogha neamhbhailí."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4002,8 +4378,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Rith orduithe le haghaidh gach mír i liosta.\n"
+"    \n"
+"    Ritheann an lúb 'for' sraith ordaithe le haghaidh gach mír i liosta\n"
+"    míreanna. Gan 'in WORDS ...;', úsáidtear 'in \"$@\"'.\n"
+"    Le haghaidh gach eilimint i bhFOCAIL, tugtar an luach sin do AINM agus\n"
+"    ritear na hORDUITHE.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4024,7 +4409,7 @@ msgstr ""
 "    Mar an gcéanna le\n"
 "    \t(( SLONN1 ))\n"
 "    \twhile (( SLONN2 )); do\n"
-"    \t\tORDAITHE\n"
+"    \t\tORDUITHE\n"
 "    \t\t(( SLONN3 ))\n"
 "    \tdone\n"
 "    Is sloinn uimhreachtúla iad SLONN1, SLONN2 agus SLONN3.\n"
@@ -4034,7 +4419,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4054,7 +4439,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4069,8 +4454,21 @@ msgid ""
 "    Exit Status:\n"
 "    The return status is the return status of PIPELINE."
 msgstr ""
+"Tuairscíonn \"time\" tréimhse rite píblíne.\n"
+"    \n"
+"    Ritear PÍBLÍNE agus taispeántar achoimre den fhíor-am, am LAP\n"
+"    an úsáideora agus am LAP an chórais a chaitheadh ag rith PÍBLÍNE\n"
+"    nuair a stopann sí.\n"
+"    \n"
+"    Roghanna:\n"
+"      -p\tTaispeántar an achoimre sa bhformáid iniompartha POSIX.\n"
+"    \n"
+"    Úsáidtear luach na hathróige TIMEFORMAT don fhormáid aschuir.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Is é stadas aischuir PÍBLÍNE an stádas aischuir ó \"time\"."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4080,8 +4478,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Rith orduithe de réir mheaitseála patrún.\n"
+"    \n"
+"    Ritear ORDUITHE de réir mar a mheaitseálann FOCAL an PATRÚN.\n"
+"    Úsáidtear '|' chun na patrúin a dheighilt.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4102,7 +4507,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4112,8 +4517,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Rith orduithe chomh fada agus a éiríonn le tástáil.\n"
+"   \n"
+"   Fairsingítear agus ritear ORDUITHE2 chomh fada agus atá stádas scortha\n"
+"   de náid ag an t-ordú deireanach sna hORDUITHE1 a leanann 'while'.\n"
+"   \n"
+"   Stádas Scortha:\n"
+"   Aischuirtear stádas an ordaithe deireanach a ritheadh."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4123,8 +4535,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Rith orduithe chomh fada agus a theipeann ar tástáil.\n"
+"   \n"
+"   Fairsingítear agus ritear ORDUITHE chomh fada agus atá stádas scortha\n"
+"   nach náid é ag an t-ordú deireanach sna hORDUITHE 'until'.\n"
+"   \n"
+"   Stádas Scortha:\n"
+"   Aischuirtear stádas an ordaithe deireanach a ritheadh."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4136,8 +4555,17 @@ msgid ""
 "    Exit Status:\n"
 "    The coproc command returns an exit status of 0."
 msgstr ""
+"Cruthaíonn \"coproc\" comhphróiseas ainmnithe AINM.\n"
+"    \n"
+"    Ritear ORDÚ go haisioncronach. Beidh gnáthaschur agus gnáthionchur\n"
+"    an ordaithe ceangailte trí phíopa le tuairisceoirí comhaid a bheidh\n"
+"    sannta do innéacsanna 0 agus 1 de eagar athróga ainmnithe AINM sa\n"
+"    bhlaosc atá ag rith. Is é \"COPROC\" an tAINM réamhshocraithe.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuireann an t-ordú \"coproc\" stádas scortha de 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4161,7 +4589,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Aischuirtear rath mura bhfuil AINM inléite amháin."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4179,7 +4607,7 @@ msgstr ""
 "    Stádas Scortha:\n"
 "    Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4192,8 +4620,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the resumed job."
 msgstr ""
-
-#: builtins.c:1708
+"Tosaigh tasc arís sa tulra.\n"
+"\n"
+"   Is ionann é seo agus an argóint SONRÚ_TAISC don ordú 'fg'.\n"
+"   Atosaítear tasc atá stoptha nó sa chúlra. Sonraíonnn SONRÚ_TAISC\n"
+"   ainm nó uimhir taisc. Má leanann '&' SONRÚ_TAISC, ritear an tasc sa\n"
+"   chúlra, cosúil leis an tasc a chur mar argóint le 'bg'.\n"
+"   \n"
+"   Stádas Scortha:\n"
+"   Aischuirtear stádas an taisc atosaithe."
+
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4203,8 +4640,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
+"Faigh luach sloinn uimhríochtúil.\n"
+"    \n"
+"    Faightear luach an tSLOINN de réir na rialacha a bhaineann le\n"
+"    luacháil uimhríochtúil. Tá an t-ordú seo mar an gcéanna le\n"
+"    \"let SLONN\".\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna "
+"eile."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -4232,7 +4678,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -4286,7 +4732,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -4316,8 +4762,36 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
+"Cuir comhadlanna ar an gcruach.\n"
+"    \n"
+"    Cuireann comhadlann ar bharr na cruaiche comhadlanna, nó rothlaíonn\n"
+"    an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n"
+"    reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n"
+"    \n"
+"    Roghanna:\n"
+"    -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n"
+"    \tleis an gcruach; ní athraítear ach an chruach.\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n"
+"    \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag "
+"tosú\n"
+"    \tó náid) ar bharr.\n"
+"    \n"
+"      -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n"
+"    \tcomhaireamh ó thaobh deas an liosta a thaispeánann \"dirs\" agus ag "
+"tosú\n"
+"    \tó náid) ar bharr.\n"
+"    \n"
+"      COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n"
+"      \tí mar an chomhadlann oibrithe reatha.\n"
+"    \n"
+"    Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann.     \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
+"    go dteipeann ar an athrú comhadlainne."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4343,8 +4817,37 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
+"Bain comhadlanna ón gcruach.\n"
+"    \n"
+"    Baintear comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear an\n"
+"    chomhadlann ó bharr na cruaiche, agus téann go dtí an chomhadlann\n"
+"    atá ar bharr.\n"
+"    \n"
+"    Roghanna:\n"
+"    -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n"
+"    \tleis an gcruach; ní athraítear ach an chruach.\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n"
+"    \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n"
+"    \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n"
+"    \n"
+"      -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n"
+"    \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n"
+"    \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n"
+"    \tleathdheireanach.\n"
+"    \n"
+"    \n"
+"      COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n"
+"      \tí mar an chomhadlann oibrithe reatha.\n"
+"    \n"
+"    Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
+"    go dteipeann ar an athrú comhadlainne."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4372,15 +4875,42 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
+"Taispeáin cruach na gcomhadlann.\n"
+"    \n"
+"    Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n"
+"    Cuirtear comhadlanna ar an liosta leis an ordú 'pushd'. Is féidir dul\n"
+"    siar trín liosta leis an ordú 'popd'.\n"
+"    \n"
+"    Roghanna:\n"
+"      -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n"
+"      -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann "
+"bhaile\n"
+"      \tagus le tilde rompu\n"
+"      -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n"
+"      -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n"
+"      \ta háit sa chruach roimpi\n"
+"    \n"
+"    Argóintí:\n"
+"      +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh "
+"clé\n"
+"      \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó "
+"náid.\n"
+"      -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh "
+"deas\n"
+"      \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó "
+"náid.\n"
+"      \n"
+"      Stádas Scortha:\n"
+"      Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla "
+"earráid."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4393,8 +4923,27 @@ msgid ""
 "    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
 "    given or OPTNAME is disabled."
 msgstr ""
+"Socraigh agus díshocraigh roghanna na blaoisce.\n"
+"    \n"
+"    Athraítear socrú gach rogha blaoisce AINM_ROGHA. Gan argóintí roghnacha "
+"ar bith,\n"
+"    liostáiltear gach AINM_ROGHA, nó gach rogha blaoisce mura bhfuil "
+"AINM_ROGHA\n"
+"    ann, lena stádas socruithe nó díshocraithe.\n"
+"    \n"
+"    Roghanna:\n"
+"      -o\tbíodh AINM_ROGHA srianta dóibh siúd atá inúsáidte le 'set -o'\n"
+"      -p\tpriontáiltear gach rogha blaoisce le comhartha dá stádas\n"
+"      -q\tcuir cosc ar aschur\n"
+"      -s\tcumasaigh (socraigh) gach AINM_ROGHA\n"
+"      -u\tdíchumasaigh (díshocraigh) gach AINM_ROGHA\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath má tá AINM_ROGHA cumasaithe. Teipeann ar shopt má "
+"thugtar\n"
+"    rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4433,7 +4982,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4451,16 +5000,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4474,16 +5027,16 @@ msgid ""
 msgstr ""
 "Taispeáin na hiomlánaithe atá ar fáil de réir na roghanna.\n"
 "    \n"
-"    Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a chruthaíonn "
+"    Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a dhéanann "
 "iomlánaithe.\n"
-"     Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n"
-"     atá comhoiriúnach le FOCAL.\n"
+"    Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n"
+"    atá comhoiriúnach le FOCAL.\n"
 "    \n"
 "    Stádas Scortha:\n"
-"    Aischuirtear rath mura thugtar rogha neamhbhailí agus mura tharlaíonn "
-"earráid."
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go "
+"dtarlaíonn earráid."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4498,6 +5051,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4513,8 +5067,35 @@ msgid ""
 "    Returns success unless an invalid option is supplied or NAME does not\n"
 "    have a completion specification defined."
 msgstr ""
+"Athraíonn nó taispeánann \"compopt\" na roghanna iomlánaithe.\n"
+"        Athraítear na roghanna iomlánaithe le haghaidh gach AINM,\n"
+"    nó gan AINMneacha taispeántar an t-iomlánú atá á dhéanamh faoi láthair.\n"
+"    Gan ROGHA ar bith, taispeántar na hiomlánaithe le haghaidh gach AINM\n"
+"    nó an mionsonrú iomlánaithe reatha.\n"
+"    \n"
+"    Roghanna:\n"
+"    \t-o ROGHA\tSocraítear an rogha iomlánaithe ROGHA le haghaidh gach "
+"AINM.\n"
+"    \t-D\t\tAthraítear roghanna don iomlánú ordaithe \"réamhshocraithe\".\n"
+"    \t-E\t\tAthraítear roghanna don iomlánú ordaithe \"folamh\".\n"
+"    \t-I\t\tAthraítear roghanna don iomlánú ar an gcéad focal.\n"
+"    \n"
+"    Le \"+o+ in áit \"-o\", múchtar an rogha shonraithe.\n"
+"    \n"
+"    Argóintí:\n"
+"    \n"
+"    Tagraíonn gach AINM do ordú a bhfuil mionsonrú iomlánaithe sainmhínithe\n"
+"    dó roimh ré leis an ordú ionsuite \"complete\". Gan AINM, ní mór "
+"\"compopt\"\n"
+"    a ghlaoigh ó fheidhm atá ag déanamh iomlánaithe ag an am, agus "
+"athraítear\n"
+"    na roghanna don déantóir iomlánaithe sin atá ag rith.\n"
+"    \n"
+"    Stádas Scortha:\n"
+"    Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n"
+"    bhfuil sonrú iomlánaithe ann le haghaih AINM."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4555,20 +5136,65 @@ msgid ""
 "or\n"
 "    not an indexed array."
 msgstr ""
+"Léann \"mapfile\" línte ón ngnáthionchur agus cuireann in athróg eagair "
+"innéacsaithe iad.\n"
+"    \n"
+"    Léann línte ón ngnáthionchur agus cuireann san athróg eagair "
+"innéacsaithe\n"
+"    EAGAR iad, nó léann ón dtuairisceoir comhaid TC má shonraítear -u. Is í "
+"an\n"
+"    athróg MAPFILE an eagar réamhshocraithe.\n"
+"    \n"
+"    Roghanna:\n"
+"      -d TEORMHARCÓIR\tÚsáidtear TEORMHARCÓIR chun deireadh a chur le "
+"línte.\n"
+"      -n COMHAIREAMH\tCóipeáiltear COMHAIREAMH líne ar a mhéid. Más 0 é "
+"COMHAIREAMH,\n"
+"      \t\tcóipeáiltear gach líne.\n"
+"      -O BUNÚS\tTosaítear ag sannadh go EAGAR ag an innéacs BUNÚS. Is é 0 an "
+"BUNÚS\n"
+"      \t\tréamhshocraithe.\n"
+"      -s COMHAIREAMH\tDéantar neamhaird de na chéad COMHAIREAMH líne a "
+"léitear.\n"
+"      -t\tBaintear TEORMHARCÓIR ó deireadh gach líne (carachtar líne nua\n"
+"      réamhshocraithe).\n"
+"      -u TC\tLéitear línte ón dtuairisceoir comhad TC in áit an "
+"ghnáthionchuir.\n"
+"      -C AISGHLAOCH\tLuacháiltear AISGHLAOCH tar éis gach CANDAM líne a "
+"léitear.\n"
+"      -c CANDAM\tLíon na línte atá le léamh idir glaoanna ar AISGHLAOCH.\n"
+"      \n"
+"      Argóintí:\n"
+"        EAGAR\tAinm an athróige eagair atá le húsáid le haghaidh sonraí "
+"comhaid.\n"
+"      \n"
+"      Má shonráitear -C gan -c, is é 5000 an CANDAM réamhshocraithe. Agus "
+"AISGHLAOCH\n"
+"      á luacháil, tugtar dó innéacs na céad eiliminte eile atá le sannadh "
+"agus\n"
+"      an líne atá le sannadh don eilimint sin mar argóintí breise.\n"
+"      \n"
+"      Gan BUNÚS sonraithe go soiléir, glanfaidh \"mapfile\" EAGAR roimh faic "
+"a\n"
+"      shannadh dó.\n"
+"      \n"
+"      Stádas Scortha:\n"
+"      Aischuirtear rath ach sa chás go sonraítear rogha neamhbhailí, nó go "
+"bhfuil\n"
+"      EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
-"Léigh línte ó chomhad agus cuir in athróg eagair iad.\n"
+"Léann línte ó chomhad agus cuireann in athróg eagair iad.\n"
 "    \n"
 "    Comhchiallach le \"mapfile\"."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Cóipcheart © 2013 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc."
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -4582,9 +5208,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc."
-
 #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
 #~ msgstr ""
 #~ "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)"
index de9d0aedba36639c59849a373e9564c7268c89c7..feaa792d0ead00c3c1a346f1f1db91219e4afff0 100644 (file)
Binary files a/po/gl.gmo and b/po/gl.gmo differ
index 7e101ced40fd99c94dee66a385c754bb4cf06565..081e0a384d699cee0818b78a65944f2eb6ac28cd 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 4.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2012-02-23 14:38+0100\n"
 "Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -21,123 +21,124 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: gl\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "subíndice de matriz incorrecto"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: non é posíbel converter a matriz de indizada a asociativa"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: índice de matriz asociativa non válido"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: non é posíbel asignar a un índice que non é numérico"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: non foi posíbel crear: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: non foi posíbel atopar a combinación de teclas "
 "para a orde"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no hai un `%c' que peche en %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: falta un `:' separador"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': nome de alias non válido"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "no se activó a edición de liña"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': nome de combinación de teclas non válido"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: non se pode leer: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "%s: non se pode borrar a asignación"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': nome de función descoñecido"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s non está asignado a ningunha tecla.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s pódese invocar a través de "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "%s: non se pode borrar a asignación"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "contía de ciclo"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "só ten significado nun ciclo `for', `while' ou `until'"
 
@@ -151,234 +152,234 @@ msgstr ""
 "    \n"
 "    Sen EXPR, devovle "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME non está definido"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "demasiados argumentos"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "non hai outro directorio"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD non está definido"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "liña %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "aviso: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uso: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: a opción require un argumento"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: requírese un argumento numérico"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: non se atopou"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: opción non válida"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nome de opción non válido"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': non é un identificador válido"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "número octal non válido"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "número hexadecimal non válido"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "número non válido"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: especificación de sinal non válida"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': no é un pid ou unha especificación válida de traballo"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variábel de só lectura"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fóra de rango"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumento"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s fóra de rango"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: non existe ese traballo"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: no hai control de traballos"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "no ha control de traballos"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restrinxido"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restrinxido"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: no é una orde interna do shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "erro de escritura: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "erro ao estabelecer os atributos da terminal: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "erro ao obtener os atributos da terminal: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: erro ao obtener o directorio actual: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: especificación de traballo ambigüa"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nome de acción non válido"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: non hai completado de especificación"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "aviso: é posíbel que a opción -F non funcione como se espera"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "aviso: é posíbel que a opción -C non funcione como se espera"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "non se está executando a función de completado"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "só se pode usar dentro dunha función"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
+msgstr "`%s': nome de alias non válido"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "non se pode use `-f' para facer funcións"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: función de só lectura"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: non é posíbel destruír variábeis de matriz desta forma"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: non é posíbel converter unha matriz asociativa a indizada"
@@ -412,68 +413,68 @@ msgstr "%s: non foi cargado dinamicamente"
 msgid "%s: cannot delete: %s"
 msgstr "%s: non foi posíbel eliminar: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: é un directorio"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: non é un ficheiro regular"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: o ficheiro é demasiado grande"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: non é posíbel executar o ficheiro binario"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: non foi posíbel executar: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "non é un shell de entrada: use `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Hai traballos pendentes.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Hay traballos en execución.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "non foi posíbel atopar a orde"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "especificación de historial"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: non é posíbel abrir o ficheiro temporal: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "actual"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "o traballo %d iniciou sen control de traballo"
@@ -488,28 +489,27 @@ msgstr "%s: opción ilegal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opción require un argumento -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "asociación desactivada"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: táboa de asociación baleira\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "coinc\torde\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Orde do shell que coincide coa palabra `"
 msgstr[1] "Orde do shell que coincide coas palabras `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -517,12 +517,12 @@ msgstr ""
 "non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k %s» "
 "ou «info %s»"
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: non foi posíbel abrir: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -543,20 +543,21 @@ msgstr ""
 "Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "non foi posíbel usar máis dun de -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posición no historial"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: límite de argumento non válido"
+msgstr "%s: nome de opción non válido"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: fallou a expansión do historial"
@@ -570,16 +571,16 @@ msgstr "%s: fallou inlib"
 msgid "no other options allowed with `-x'"
 msgstr "non se permiten outras opcións con «-x»"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: os argumentos deben ser procesos ou IDs de traballos"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Erro descoñecido"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "agardábase unha expresión"
 
@@ -588,69 +589,69 @@ msgstr "agardábase unha expresión"
 msgid "%s: not an indexed array"
 msgstr "%s: non é unha matriz indizada"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: especificación de descritor de ficheiro non válida"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: descritor de ficheiro non válido: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: conta de liñas non válida"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: orixe de matriz non válido"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: quantum de chamada non válido"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nome de variábel de matriz baleiro"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "requírese a compatibilidade de variábel de matriz"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': falta o carácter de formato"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': especificación de formato de tempo non válida"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': carácter de formato non válido"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "aviso: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "falta o díxito hexadecimal para \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "falta o díxito unicode para \\%c"
@@ -664,19 +665,19 @@ msgstr "non hai outro directorio"
 msgid "%s: invalid argument"
 msgstr "%s: límite de argumento non válido"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<non hai directorio actual>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "a pila de directorios está baleira"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "índice da pila de directorios"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -720,7 +721,7 @@ msgstr ""
 "\tlista mostrada por dirs cando se chama sen opcións,\n"
 "\tcomezando desde cero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -762,7 +763,7 @@ msgstr ""
 "    \n"
 "    A orde interna `dirs' mostra a rima de directorios."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -807,40 +808,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: especificación de tempo de expiración non válida"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "erro de lectura: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "só se pode usar «return» nunha función ou guión lido con «source»"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: non é posíbel borrar"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: non é posíbel borrar: %s é de só lectura"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: non é unha variábel de matriz"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: non é unha función"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: non é posíbel borrar"
@@ -849,20 +850,20 @@ msgstr "%s: non é posíbel borrar"
 msgid "shift count"
 msgstr "conta de shift"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nome de opción do shell non válido"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "requírese un argumento de nome de ficheiro"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: non se atopou o ficheiro"
@@ -875,61 +876,61 @@ msgstr "non é posíbel suspender"
 msgid "cannot suspend a login shell"
 msgstr "non é posíbel suspender un shell de entrada"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s é un alias de `%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s é unha palabra chave do shell\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s é unha función\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s é unha orde interna do shell\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s é unha orde interna do shell\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s é %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s está asociado (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: límite de argumento non válido"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': orde errónea"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: non é posíbel obter o límite: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "límite"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: non é posíbel modificar o límite: %s"
@@ -948,361 +949,371 @@ msgstr "`%c': operador de modo simbólico non válido"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': carácter de modo simbólico non válido"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " liña "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "última orde: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Abortando…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "erro de orde descoñecido"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "tipo de orde erróneo"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "conector erróneo"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "salto erróneo"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variable sen asignar"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': carácter de formato non válido"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "erro de canalización"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: non se atopou a orde"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: intérprete erróneo"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: non é posíbel executar o ficheiro binario"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s é unha orde interna do shell\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "no se pode duplicar o df %d ao df %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "excedeuse o nivel de recursión da expresión"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "desbordamento da base da pila de recursión"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "erro de sintaxe na expresión"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "tentouse asignar a algo que non é unha variábel"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "erro de sintaxe na expresión"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "división entre 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "erro: elemento de asignación de expresión erróneo"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "agardábase `:' para a expresión condicional"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "expoñente menor que 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "agardábase un identificador despois do pre-incremento ou pre-decremento"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "falta un `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "erro de sintaxe: agardábase un operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "erro de sintaxe: operador aritmético non válido"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (o elemento de erro é \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "base aritmética non válida"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valor demasiado grande para a base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: erro de expresión\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: non é posíbel acceder aos directorios pai"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "non é posíbel asignar un novo descritor de ficheiros para a entrada de bash "
 "desde o fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "save_bash_input: o almacenamento intermedio xa existe para o novo fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: tubería de pgrp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "o pid `forked' %d aparece no traballo en execución %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "borrando o trabajo detido %d con grupo de proceso %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: o proceso %5ld (%s) en the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) márcase como vivo aínda"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: non existe tal pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Sinal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Feito"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Detido"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Detido(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "En execución"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Feito(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Saída %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Estado descoñecido"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(«core» xerado) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (dir agora: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid fillo (%ld a %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld non é un proceso fillo desta shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Non hai un rexistro do proceso %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: o traballo %d está detido"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: o traballo rematou"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: o trabajo %d xa está en segundo plano"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: liña %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " («core» generado)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(dir agora: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_jobs_control: fallou getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_jobs_control: disciplina de liña"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_jobs_control: disciplina de liña"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_jobs_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "non hai control de trabalos nesta shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: fallou a aserción: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1311,40 +1322,40 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: aserción arruinada\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "descoñecido"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloque na lista libre sobreescrito"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: chamouse cun argumento de bloque previamente liberado"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: chamouse cun argumento de bloque sen asignar"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: os tamaños dos anacos de inicio e fin son diferentes"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: chamouse cun argumento de bloque sen asignar"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes"
 
@@ -1386,23 +1397,23 @@ msgstr "%s: especificación de ruta de rede errónea"
 msgid "network operations not supported"
 msgstr "non hai compatibilidade para operacións de rede"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 "setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s"
@@ -1420,149 +1431,149 @@ msgstr "Ten unha nova mensaxe en $_"
 msgid "The mail in %s has been read\n"
 msgstr "O correo en %s foi lido\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "error de sintaxe: requírese unha expresión aritmética"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "error sintáctico: `;' non esperado"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "erro de sintaxe: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipo de instrución %d erróneo"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `%"
 "s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "EOF inesperado mentres se buscaba un `%c' coincidente"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF inesperado mentres se buscaba `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "error sintáctico na expresión condicional"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "elemento inesperado `%s', agardábase `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "agardábase `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argumento inesperado `%s' para o operador unario condicional"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argumento inesperado para o operador unario condicional"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "elemento inesperado `%s', agardábase un operador binario condicional"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "agardábase un operador binario condicional"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argumento inesperado `%s' para o operador binario condicional"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argumento inesperado para o operador binario condicional"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "elemento inesperado `%c' na orde condicional"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "elemento inesperado `%s' na orde condicional"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "elemento inesperado %d na orde condicional"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "error de sintaxe perto do elemento inesperado `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "erro de sintaxe cerca de «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "error de sintaxe: non se agardaba o final do fichero"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use «%s» para deixar o shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF non agardado mentres se buscaba un «)» coincidente"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: non se atopa a función `%s'"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1591,90 +1602,94 @@ msgstr "xtrace_set: punteiro a ficheiro NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': carácter de formato non válido"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descritor de ficheiro fóra de rango"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redireccionamento ambigüo"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: non se pode sobreescribir un fichero existente"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restrinxido: no se pode redirixir a saída"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "non se pode crear un fichero temporal para o documento-aquí: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: non é posíbel asignar o gd á variábel"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "erro de redirección: non é posíbel duplicar o fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "non é posíbel atopar /tmp, por favor creeo!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp debe ser un nome de directorio válido"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opción non válida"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: é un directorio"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Non teño nome!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versión %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1683,54 +1698,54 @@ msgstr ""
 "Uso:\t%s [opción GNU longa] [opción] ...\n"
 "\t%s [opción GNU longa] [opción] guión-do-shell\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Opcións GNU longas:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opcións do shell:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ou -o opción\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Escriba `%s -c \"help set\"' para máis información sobre as opcións do "
 "shell.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Escriba `%s -c help' para máis información sobre as ordes internas do "
 "shell.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Use a orden `bashbug' para reportar erros.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operación non válida"
@@ -1904,92 +1919,97 @@ msgstr "Sinal descoñecido #"
 msgid "Unknown Signal #%d"
 msgstr "Sinal descoñecido #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "susbtitución errónea: non hai un `%s' que peche en %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: no é posíbel asignar unha lista a un membro da matriz"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "non é posíbel crear a tubería para a sustitución do proceso"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "non é posíbel crear un proceso fillo para a substitución do proceso"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "non é posíbel abrir a tubería chamada %s para lectura"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "non é posíbel abrir a tubería chamada %s para escritura"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "non é posíbel duplicar a tubería chamada %s como df %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "non é posíble crear a tubería para a substitución da orde"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "non é posíbel crear un proceso fillo para a substitución da orde"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, fuzzy, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: substitución errónea"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: conta de liñas non válida"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "`%s': nome de alias non válido"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parámetro nulo ou non estabelecido"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parámetro nulo ou non estabelecido"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expresión de subcadea < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: substitución errónea"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: non é posíbel asignar de esta forma"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1997,12 +2017,12 @@ msgstr ""
 "versiones futuras do intérprete obligarán a evaluación como unha "
 "substitución aritmética"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "non hai concidencia: %s"
@@ -2025,30 +2045,35 @@ msgstr "agardábase `)'"
 msgid "`)' expected, found %s"
 msgstr "`)' agardábase, atopouse %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: agardábase un operador unario"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: agardábase un operador binario"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "falta un «]»"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "número de sinal non válido"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2056,86 +2081,86 @@ msgstr ""
 "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí "
 "mesmo"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: sinal errónea %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "erro ao importar a definición da función para «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: non hai contexto de función no ámbito actual"
 
-#: variables.c:2432
+#: variables.c:2674
 #, fuzzy, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: non é posíbel asignar o gd á variábel"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: non hai contexto de función no ámbito actual"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s ten exportstr nulo"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "carácter non válido %d en exportsrt para %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "non hai «=» en exportstr para %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: a cabezak de shell_variables non é un contexto de función"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: non é un contexto global_variables "
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: non é posíbel abrir como FICHEIRO"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s fóra de rango"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2161,22 +2186,22 @@ msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Non hai GARANTÍA, á extensión permitida pola ley.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: non é posíbel asignar %lu bytes (%lu bytes asignados)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: non é posíbel asignar %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: non é posíbel asignar %lu bytes (%lu bytes asignados)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: non é posíbel asignar %lu bytes"
@@ -2395,13 +2420,13 @@ msgstr "umask [-p] [-S] [modo]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2486,8 +2511,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] formato [argumentos]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2506,7 +2532,8 @@ msgstr ""
 "sufixo] [palabra]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o opción] [-DE] [nome ...]"
 
 #: builtins.c:242
@@ -2519,9 +2546,10 @@ msgstr ""
 "quantum] [matriz]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c "
 "quantum] [matriz]"
@@ -2699,6 +2727,7 @@ msgstr ""
 "    O estado de salida é 0 a menos que N non sexa maior ou igual a 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2709,7 +2738,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Executa ordes internas do shell\n"
 "    \n"
@@ -2904,11 +2933,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2992,12 +3021,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3010,7 +3045,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3037,7 +3072,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3056,7 +3091,7 @@ msgstr ""
 "    Estado de saída:\n"
 "    Devolve o estado de saida da orde ou éxito se a orde é nula."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3097,7 +3132,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3120,7 +3155,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3132,7 +3167,7 @@ msgstr ""
 "    Termina o shell cun estado de N.  Se se omite N, o estado de saída\n"
 "    é o mismo da última orde executada."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3145,7 +3180,7 @@ msgstr ""
 "    Termina un shell de entrada cun estado de saída de N. Devolve un\n"
 "    erro se non se executa nunha shell de entrada."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3175,7 +3210,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3196,7 +3231,7 @@ msgstr ""
 "    O estado da orde localizada en primeiro plano, ou falla se sucede un "
 "erro."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3210,7 +3245,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3234,7 +3269,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3249,14 +3284,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3265,7 +3300,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3290,7 +3326,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3314,7 +3350,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3331,7 +3367,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3354,7 +3390,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3399,7 +3435,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3420,7 +3456,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3451,7 +3487,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3463,7 +3499,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3549,7 +3585,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3571,7 +3607,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3590,7 +3626,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3611,7 +3647,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3622,7 +3658,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3636,7 +3672,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3662,7 +3698,7 @@ msgstr ""
 "    Devolve con éxito a menos que non estea activo o control de traballos o\n"
 "    se produza un erro."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3745,7 +3781,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3757,7 +3793,7 @@ msgstr ""
 "    Este é un sinónimo para a orde interna \"test\", pero o último\n"
 "    argumento debe ser un `]' literal, que coincida co `[' inicial."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3776,7 +3812,7 @@ msgstr ""
 "    Estado de saída:\n"
 "    Sempre con éxito."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3820,7 +3856,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3850,7 +3886,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3899,7 +3935,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3917,8 +3953,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
-#, fuzzy
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3926,28 +3961,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
-"Agarda a terminación do traballo e devolve o estado de saída.\n"
-"    \n"
-"    Espera ao proceso especificado e reporta o seu estado de saída.  Se\n"
-"    non se fornece un PID, agarda a todos os procesos fillo activos,\n"
-"    e o código de devolución é cero.  PID debe ser un ID de proceso.\n"
-"    \n"
-"    Estado de Saída:\n"
-"    Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n"
-"    opción non válida."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -3972,7 +4000,7 @@ msgstr ""
 "    Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n"
 "    opción non válida."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3994,7 +4022,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devuelve o estado da última orden executada."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4024,7 +4052,7 @@ msgstr ""
 "    Estado de saída:\n"
 "    Devolve o estado da última orde executada."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4044,7 +4072,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4060,7 +4088,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4078,7 +4106,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve o estado da última orde executada."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4099,7 +4127,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4117,7 +4145,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve o estado da última orde executada."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4135,7 +4163,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve o estado da última orde executada."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -4158,7 +4186,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve o estado de saída da ORDE."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4172,7 +4200,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4190,7 +4218,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve o estado da última orde executada."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4204,7 +4232,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4222,7 +4250,7 @@ msgstr ""
 "    Estado de Saída:\n"
 "    Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -4250,7 +4278,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -4304,7 +4332,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -4353,7 +4381,7 @@ msgstr ""
 "    \n"
 "    A orde interna `dirs' mostra a rima de directorios."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -4400,7 +4428,7 @@ msgstr ""
 "    \n"
 "    A orde interna `dirs' mostra a pila de directorios."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -4450,14 +4478,14 @@ msgstr ""
 "\tlista mostrada por dirs cando se chama sen opcións,\n"
 "\tcomezando desde cero."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4487,7 +4515,7 @@ msgstr ""
 "    Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n"
 "    unha opción non válida ou NOME_OPCIÓN está desactivado."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4526,7 +4554,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4544,16 +4572,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4575,7 +4607,7 @@ msgstr ""
 "    Devolve con éxito a menos que se forneza unha opción non válida o\n"
 "    se produza un erro."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4590,6 +4622,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4606,7 +4639,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4648,7 +4681,7 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -4658,9 +4691,15 @@ msgstr ""
 "    \n"
 "    Un sinónimo de `mapfile'."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
+#~ "html>\n"
+#~ msgstr ""
+#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior <http://gnu.org/"
+#~ "licenses/gpl.html>\n"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -4673,20 +4712,3 @@ msgstr ""
 
 #~ msgid "times"
 #~ msgstr "times"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior <http://gnu.org/"
-#~ "licenses/gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
index cc117fe74db6dcf7761e88de5ab0a0dd0768179f..44224b1e531e3174be6466381f405e076dc03c2b 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index f914d13a33be01aef4540aaeb370b35a31c8ba07..14e12dea6ac0ead5e581eeb7caacfdd9d659fe72 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
 # Translation of bash to Croatian.
-# Copyright © 2012 Free Software Foundation, Inc.
+# Copyright © 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012, 2013.
 #
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012, 2013.
+# Božidar Putanec <bozidarp@yahoo.com>, 2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.2\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2013-04-18 01:00+0200\n"
-"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-05 17:31-0800\n"
+"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: hr\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"X-Generator: Poedit 2.2\n"
+"X-Poedit-Basepath: ../sources\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPath-1: bash-5.0-beta2\n"
+"X-Poedit-SearchPath-2: bash-5.0-beta2/builtins\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
-msgstr "neispravan indeks polja"
+msgstr "nevaljani indeks polja"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: uklanja se atribut nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: ne mogu pretvoriti indeksirano u asocijativno polje"
+msgstr "%s: nije moguće pretvoriti indeksirano u asocijativno polje"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s: neispravan ključ asocijativnog polja"
+msgstr "%s: nevaljani ključ asocijativnoga polja"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: ne mogu pridružiti nenumeričkom indeksu"
+msgstr "%s: indeks mora biti numerički"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: mora koristiti indeks pri pridruživanju asocijativnog polja"
+msgstr "%s: %s: mora se koristiti indeks pri dodijeli asocijativnoga polja"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
-msgstr "%s: ne mogu napraviti: %s"
+msgstr "%s: nije moguće napraviti: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: ne mogu pronaći tipkovničku mapu za naredbu"
+msgstr "bash_execute_unix_command: nije moguće pronaći keymap za naredbu"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: prvi znak različit od praznine nije „\"”"
+msgstr "%s: prvi znak, koji nije bjelina, nije „\"“"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
-msgstr "nema zatvorene „%c” u %s"
+msgstr "nema zaključnoga „%c“ u %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
-msgstr "%s: nedostaje dvotočje za razdvajanje"
+msgstr "%s: nema razdjelnika dvotočke"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
+"brace expansion: nije moguće dodijeliti memoriju za %s\n"
+"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)"
 
-#: braces.c:427
+# Brace expansion is a mechanism by which arbitrary strings may be generated
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
+"brace expansion: nije uspjelo dodijeliti memoriju za %u elemenata\n"
+"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
+"brace expansion: nije uspjelo dodijeliti memoriju za „%s“\n"
+"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
-msgstr "â\80\9e%sâ\80\9d: neispravno drugo ime"
+msgstr "â\80\9e%sâ\80\9c: nevaljano ime aliasa"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
-msgstr "uređivanje redaka nije omogućeno"
+msgstr "redigiranje retka nije omogućeno"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
-msgstr "â\80\9e%sâ\80\9d: neispravno ime tipkovniÄ\8dke mape"
+msgstr "â\80\9e%sâ\80\9c: nevaljano ime za keymap"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
-msgstr "%s: ne mogu čitati: %s"
-
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s”: ne mogu ukloniti vezu"
+msgstr "%s: nije moguće pročitati: %s"
 
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
-msgstr "â\80\9e%sâ\80\9d: nepoznato ime funkcije"
+msgstr "â\80\9e%sâ\80\9c: nepoznato ime funkcije"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
-msgstr "%s nije pridružen nijednoj tipki.\n"
+msgstr "%s nije vezano s nijednom tipkom.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s se može pozvati pomoću "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: nije moguće razvezati"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
-msgstr "broj ponavljanja"
+msgstr "broj ponavljanja"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "ima značenje samo u petljama „for”, „while” ili „until”"
+msgstr "ima značenje samo u „for“, „while“ ili „until“ petljama"
 
 #: builtins/caller.def:136
 msgid ""
@@ -141,241 +154,240 @@ msgid ""
 "    \n"
 "    Without EXPR, returns "
 msgstr ""
-"Vraća kontekst poziva trenutnog potprograma.\n"
+"Vraća kontekst od trenutačnoga poziva funkciji.\n"
 "    \n"
-"    Bez IZRAZA vraća "
+"    Bez EXPR, rezultati "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
-msgstr "HOME nije postavljen"
+msgstr "HOME varijabla nije definirana"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "previše argumenata"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "nema drugog direktorija"
+msgstr "null direktorij"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
-msgstr "OLDPWD nije postavljen"
+msgstr "OLDPWD nije postavljeni"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "redak %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "upozorenje: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uporaba: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: opcija zahtijeva argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
-msgstr "%s: potreban je numerički argument"
+msgstr "%s: zahtijeva se numerički argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
-msgstr "%s: nije pronađen"
+msgstr "%s: nije pronađeno"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
-msgstr "%s: neispravna opcija"
+msgstr "%s: nevaljana opcija"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
-msgstr "%s: neispravno ime opcije"
+msgstr "%s: nevaljano ime opcije"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
-msgstr "â\80\9e%sâ\80\9d: nije ispravan identifikator"
+msgstr "â\80\9e%sâ\80\9c: nije valjani identifikator"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
-msgstr "neispravan oktalni broj"
+msgstr "nevaljani oktalni broj"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
-msgstr "neispravan heksadekadski broj"
+msgstr "nevaljani heksadecimalni broj"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
-msgstr "neispravan broj"
+msgstr "nevaljani broj"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
-msgstr "%s: neispravno naveden signal"
+msgstr "%s: nevaljana specifikacija signala"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
-msgstr "â\80\9e%sâ\80\9d: nije pid ili ispravno naveden zadatak"
+msgstr "â\80\9e%sâ\80\9c: nije PID ili valjani pokazatelj posla"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: varijabla samo za čitanje"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
-msgstr "%s: %s je izvan granica"
+msgstr "%s: %s je izvan raspona"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
-msgstr "%s je izvan granica"
+msgstr "%s je izvan raspona"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
-msgstr "%s: nema takvog zadatka"
+msgstr "%s: nema takvoga posla"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
-msgstr "%s: nema kontrole zadataka"
+msgstr "%s: nema kontrole nad poslovima u ovoj ljuski"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
-msgstr "nema kontrole zadataka"
+msgstr "nema kontrole nad poslovima u ovoj ljuski"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
-msgstr "%s: ograničeno"
+msgstr "%s: ograničeni način"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
-msgstr "ograničeno"
+msgstr "ograničeni način"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
-msgstr "%s: nije ugrađen u ljusku"
+msgstr "%s: nije ugrađena bash naredba"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "greška pisanja: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "greška pri postavljanju svojstava terminala: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "greška pri preuzimanju svojstava terminala: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: greška pri otkrivanju trenutnog direktorija: %s: %s\n"
+msgstr "%s: nije moguće pronaći trenutačno direktorij: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
-msgstr "%s: višeznačan navod zadatka"
+msgstr "%s: dvosmisleni pokazatelj posla"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "u ovoj inačici pomoć nije ugrađena"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
-msgstr "%s: neispravno ime radnje"
+msgstr "%s: nevaljano ime za akciju"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
-msgstr "%s: nije navedeno nadopunjavanje"
+msgstr "%s: dovršavanje nije specificirano"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
-msgstr "upozorenje: opcija -F možda neće raditi kako želite"
+msgstr "upozorenje: opcija -F možda neće raditi prema očekivanju"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
-msgstr "upozorenje: opcija -C možda neće raditi kako želite"
+msgstr "upozorenje: opcija -C možda neće raditi prema očekivanju"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
-msgstr "trenutno ne izvršavam funkciju nadopunjavanja"
+msgstr "trenutačno se ne izvršava funkcija kompletiranja"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "može se koristiti samo u funkciji"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: referentna varijabla ne može biti polje"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
-msgstr ""
+msgstr "%s: varijabla nameref ukazuje na samu sebe, a to nije dopušteno"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr ""
+msgstr "%s: kružna referencija na ime"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "â\80\9e%sâ\80\9d: neispravno drugo ime"
+msgstr "â\80\9e%sâ\80\9c: nevaljano ime varijable za referenciju na ime"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
-msgstr "ne mogu koristiti „-f” za izradu funkcija"
+msgstr "„-f“ se ne može koristiti za definiranje funkcije"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkcija samo za čitanje"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: dodjeljivanje citiranoga složenog polja je zastarjelo"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: ne mogu uništiti varijable polja na ovaj način"
+msgstr "%s: nije moguće uništiti varijable polja na ovaj način"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: ne mogu pretvoriti asocijativno u indeksirano polje"
+msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje"
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
@@ -384,17 +396,17 @@ msgstr "dinamičko učitavanje nije dostupno"
 #: builtins/enable.def:343
 #, c-format
 msgid "cannot open shared object %s: %s"
-msgstr "ne mogu otvoriti dijeljeni objekt %s: %s"
+msgstr "nije moguće otvoriti dijeljeni objekt %s: %s"
 
 #: builtins/enable.def:369
 #, c-format
 msgid "cannot find %s in shared object %s: %s"
-msgstr "ne mogu pronaći %s u dijeljenom objektu %s: %s"
+msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s"
 
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "funkcija učitavanja za %s završila je s  pogreškom (%d): nije učitano"
 
 #: builtins/enable.def:512
 #, c-format
@@ -404,120 +416,120 @@ msgstr "%s: nije dinamički učitan"
 #: builtins/enable.def:538
 #, c-format
 msgid "%s: cannot delete: %s"
-msgstr "%s: ne mogu ukloniti: %s"
+msgstr "%s: nije moguće izbrisati: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: to je direktorij"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: nije obična datoteka"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: datoteka je prevelika"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
-msgstr "%s: ne mogu izvršiti binarnu datoteku"
+msgstr "%s: nije moguće izvršiti binarnu datoteku"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
-msgstr "%s: ne mogu izvršiti: %s"
+msgstr "%s: nije moguće izvršiti: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "odjava\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
-msgstr "nije prijavna ljuska: koristite „exit”"
+msgstr "nije prijavna ljuska: odjavite se s „exit“"
 
-#: builtins/exit.def:124
+# stopped > pauzirano ili zaustavljeno
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
-msgstr "Ima zaustavljenih zadataka.\n"
+msgstr "Ima zaustavljenih poslova.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
-msgstr "Ima pokrenutih zadataka.\n"
+msgstr "Ima pokrenutih poslova.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "naredba nije pronađena"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
-msgstr "specifikacija povijesti"
+msgstr "prikaz povijesti naredbi"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
-msgstr "%s: ne mogu otvoriti privremenu datoteku: %s"
+msgstr "%s: nije moguće otvoriti privremenu datoteku: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
-msgstr "trenutno"
+msgstr "trenutno"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
-msgstr "zadatak %d pokrenut bez kontrole zadataka"
+msgstr "posao %d je pokrenut bez kontrole nad njim"
 
 #: builtins/getopt.c:110
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: nedozvoljena opcija -- %c\n"
+msgstr "%s: nedopuštena opcija -- %c\n"
 
 #: builtins/getopt.c:111
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opcija zahtijeva argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
-msgstr "raspršivanje onemogućeno"
+msgstr "hash-tablica je onemogućena"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
-msgstr "%s: tablica raspršivanja prazna\n"
+msgstr "%s: hash-tablica je prazna\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
-msgstr "pogoci\tnaredba\n"
+msgstr "pogodci\tnaredba\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Naredbe ljuske koje odgovaraju ključnoj riječi „"
-msgstr[1] "Naredbe ljuske koje odgovaraju ključnim riječima „"
-msgstr[2] "Naredbe ljuske koje odgovaraju ključnim riječima „"
+msgstr[0] "Naredba koja odgovara ključnoj riječi „"
+msgstr[1] "Naredbe koje odgovaraju ključnim riječima „"
+msgstr[2] "Naredbi koje odgovaraju ključnim riječima „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
-"nisu pronaÄ\91ene teme pomoÄ\87i za â\80\9e%sâ\80\9d. PokuÅ¡ajte â\80\9ehelp helpâ\80\9d, â\80\9eman -k %sâ\80\9d ili "
-"â\80\9einfo %sâ\80\9d."
+"nisu pronaÄ\91ene teme pomoÄ\87i za â\80\9e%sâ\80\9c. PokuÅ¡ajte s â\80\9ehelp helpâ\80\9c, â\80\9eman -k %sâ\80\9c ili "
+"â\80\9einfo %sâ\80\9c."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
-msgstr "%s: ne mogu otvoriti: %s"
+msgstr "%s: nije moguće otvoriti: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -528,29 +540,30 @@ msgid ""
 "A star (*) next to a name means that the command is disabled.\n"
 "\n"
 msgstr ""
-"Ove naredbe ljuske su interno definirane. Upišite „help” za prikaz popisa.\n"
-"UpiÅ¡ite â\80\9ehelp imeâ\80\9d za viÅ¡e podataka o funkciji â\80\9eimeâ\80\9d.\n"
-"Koristite â\80\9einfo bashâ\80\9d za više općenitih podataka o ljusci.\n"
-"Koristite â\80\9eman -kâ\80\9d ili â\80\9einfoâ\80\9d za više podataka o naredbama izvan ovog "
+"Ove bash naredbe su interno definirane. Upišite „help“ za prikaz popisa.\n"
+"UpiÅ¡ite â\80\9ehelp imeâ\80\9c za viÅ¡e podataka o funkciji â\80\9eimeâ\80\9c.\n"
+"Koristite â\80\9einfo bashâ\80\9c za više općenitih podataka o ljusci.\n"
+"Koristite â\80\9eman -kâ\80\9c ili â\80\9einfoâ\80\9c za više podataka o naredbama izvan ovog "
 "popisa.\n"
 "\n"
 "Zvjezdica (*) pokraj imena označava onemogućenu naredbu.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
-msgstr "ne mogu koristiti više od jedne od opcija -anrw"
+msgstr "smije se rabiti samo jedna od opcija -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
-msgstr "mjesto u povijesti"
+msgstr "mjesto u povijesti naredbi"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: neispravan argument ograničenja"
+msgstr "%s: nevaljana vremenska oznaka"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: proširenje povijesti nije uspjelo"
@@ -562,89 +575,89 @@ msgstr "%s: inlib nije uspio"
 
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
-msgstr "nisu dozvoljene druge opcije uz „-x”"
+msgstr "nisu dopuštene druge opcije uz „-x“"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
-msgstr "%s: argumenti moraju biti identifikatori procesa ili zadataka"
+msgstr "%s: argumenti moraju biti ID-ovi procesa ili posla"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Nepoznata greška"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
-msgstr "očekujem izraz"
+msgstr "očekivao se izraz"
 
 #: builtins/mapfile.def:178
 #, c-format
 msgid "%s: not an indexed array"
 msgstr "%s: nije indeksirano polje"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
-msgstr "%s: neispravno naveden opisnik datoteke"
+msgstr "%s: nevaljana specifikacija deskriptora datoteke"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
-msgstr "%d: neispravan opisnik datoteke: %s"
+msgstr "%d: nevaljani deskriptor datoteke: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
-msgstr "%s: neispravan broj redaka"
+msgstr "%s: nevaljani količina redaka"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
-msgstr "%s: neispravan izvor polja"
+msgstr "%s: nevaljani početak polja"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
-msgstr "%s: neispravan element povratnog poziva"
+msgstr "%s: nevaljana količina od callback"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "prazno ime varijable polja"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
-msgstr "potrebna je podrška varijable polja"
+msgstr "potrebna podrška varijable polja nije podržana u ovoj ljusci"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
-msgstr "â\80\9e%sâ\80\9d: nedostaje znak oblika"
+msgstr "â\80\9e%sâ\80\9c: nedostaje znak za format"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
-msgstr "â\80\9e%câ\80\9d: neispravno naveden oblik vremena"
+msgstr "â\80\9e%câ\80\9c: nevaljana specifikacija za format vremena"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
-msgstr "â\80\9e%câ\80\9d: neispravan znak oblika"
+msgstr "â\80\9e%câ\80\9c: nevaljani znak za format"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "upozorenje: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
-msgstr ""
+msgstr "greška pri analizi: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
-msgstr "nedostaje heksadekadska znamenka za \\x"
+msgstr "nedostaje heksadecimalna znamenka za \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "nedostaje unicode znamenka za \\%c"
@@ -654,23 +667,23 @@ msgid "no other directory"
 msgstr "nema drugog direktorija"
 
 #: builtins/pushd.def:360
-#, fuzzy, c-format
+#, c-format
 msgid "%s: invalid argument"
-msgstr "%s: neispravan argument ograničenja"
+msgstr "%s: nevaljani argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
-msgstr "<nema trenutnog direktorija>"
+msgstr "<nema trenutnog direktorija>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
-msgstr "stog direktorija je prazan"
+msgstr "snop direktorija je prazan"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "indeks stoga direktorija"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -693,28 +706,24 @@ msgid ""
 "by\n"
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
-"Prikaži popis trenutno zapamćenih direktorija. Direktoriji se dodaju\n"
-"    na popis naredbom „pushd”, kroz popis se možete vraćati naredbom\n"
-"    „popd”.\n"
-"    \n"
+"Pokaže popis trenutačno zapamćenih direktorija. Direktoriji se unose\n"
+"    na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n"
+"\n"
 "    Opcije:\n"
-"      -c\točisti stog direktorija uklanjanjem svih elemenata\n"
-"      -l\tne ispisuj tildom prefiksirane inačice direktorija\n"
-"    \trelativno u odnosu na početni direktorij\n"
-"      -p\tispiši stog direktorija jednu stavku po retku\n"
-"      -v\tispiši stog direktorija jednu stavku po retku\n"
-"    \tprefiksiranu položajem u stogu\n"
-"    \n"
+"      -c   počisti snop direktorija brisanjem svih elemenata\n"
+"      -l   ispiše apsolutne staze direktorija u odnosu na osobni\n"
+"             direktorij (ne skraćuje staze upotrebom tilde)\n"
+"      -p   ispiše sadržaj snopa po jedan direktorij po retku\n"
+"      -v   kao „-p“, ali s prefiksom koji pokazuje\n"
+"             poziciju direktorija snopu\n"
+"\n"
 "    Argumenti:\n"
-"      +N\tPrikazuje N-tu stavku s lijeve strane popisa koju prikazuje "
-"naredba\n"
-"    \t„dirs” pozvana bez opcija, počevši od nule.\n"
-"    \n"
-"      -N\tPrikazuje N-tu stavku s desne strane popisa koju prikazuje "
-"naredba\n"
-"\t„dirs” pozvana bez opcija, počevši od nule."
+"      +N   Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n"
+"             lijeve strane popisa kȁd se „dirs“ pokrene bez opcija.\n"
+"      -N   Pokaže N-ti direktorij iz snopa, brojeći od nule s\n"
+"             desne strane popisa kȁd se „dirs“ pokrene bez opcija."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -738,8 +747,29 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
+"Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n"
+"    učini novi vrh snopa trenutačnim radnim direktorijem. Bez argumenata\n"
+"    razmijeni pozicije dva direktorija na vrhu snopa.\n"
+"\n"
+"    Opcije:\n"
+"      -n   izostavi uobičajenu promjenu direktorija kȁd dodaje\n"
+"           direktorije u snop, odnosno samo manipulira sa snopom\n"
+"\n"
+"     Argumenti:\n"
+"      +N   Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule "
+"s\n"
+"             lijeve strane popisa prikazanoga s „dirs“) postane novi vrh "
+"snopa.\n"
+"      -N   Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule "
+"s\n"
+"             desne strane popisa prikazanoga s „dirs“) postane novi vrh "
+"snopa.\n"
+"      DIREKTORIJ  Doda DIREKTORIJ na vrh snopa direktorija i\n"
+"                    učini ga novim aktualnim radnim direktorijem.\n"
+"\n"
+"      Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -759,138 +789,154 @@ msgid ""
 "    \n"
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
+"Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n"
+"    direktorij na vrhu snopa i premjesti se u novi najviši direktorij.\n"
+"\n"
+"    Opcije:\n"
+"      -n   izostavi uobičajenu promjenu direktorija kȁd uklanja\n"
+"           direktorije iz snopa, odnosno samo manipulira sa snopom\n"
+"\n"
+"    Argumenti:\n"
+"      +N   Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n"
+"           strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n"
+"           ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n"
+"      +N   Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n"
+"           strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
+"           ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
+"\n"
+"    Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija."
 
 #: builtins/read.def:279
 #, c-format
 msgid "%s: invalid timeout specification"
-msgstr "%s: neispravno navedeno vremensko ograničenje"
+msgstr "%s: nevaljana specifikacija za istek vremena"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "greška čitanja: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
-msgstr "pozivanje „return” je moguće samo iz funkcije ili pokrenute skripte"
+msgstr "„return“ je mogući samo iz funkcije ili iz pokrenute skripte"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
-msgstr "ne mogu istovremeno poništiti funkciju i varijablu"
+msgstr "nije moguće istovremeno poništiti funkciju i varijablu"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
-msgstr "%s: ne mogu poništiti"
+msgstr "%s: nije moguće poništiti"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
-msgstr "%s: ne mogu poništiti: %s je samo za čitanje"
+msgstr "%s: nije moguće poništiti: %s je moguće samo čitati"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: nije varijabla polja"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: nije funkcija"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: ne mogu poništiti"
+msgstr "%s: nije moguće eksportirati"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
-msgstr "broj pomaka"
+msgstr "broj pomaka"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
-msgstr "ne mogu istovremeno postaviti i poništiti opcije ljuske"
+msgstr "nije moguće istovremeno postaviti i poništiti opcije ljuske"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
-msgstr "%s: neispravno ime opcije ljuske"
+msgstr "%s: nevaljano ime za opciju ljuske"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
-msgstr "potrebno je ime datoteke kao argument"
+msgstr "zahtijeva se ime datoteke kao argument"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: datoteka nije pronađena"
 
 #: builtins/suspend.def:102
 msgid "cannot suspend"
-msgstr "ne mogu zaustaviti"
+msgstr "obustava nije moguća"
 
 #: builtins/suspend.def:112
 msgid "cannot suspend a login shell"
-msgstr "ne mogu zaustaviti prijavnu ljusku"
+msgstr "nije moguće obustaviti prijavnu ljusku"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
-msgstr "%s je drugo ime za „%s”\n"
+msgstr "%s je alias za „%s“\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s je ključna riječ ljuske\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s je funkcija\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s je ugrađen u ljusku\n"
+msgstr "%s je specijalna ugrađena funkcija ljuske\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
-msgstr "%s je ugrađen u ljusku\n"
+msgstr "%s je ugrađena funkcija ljuske\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s je %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
-msgstr "%s je raspršen (%s)\n"
+msgstr "za %s izračunata hash vrijednost (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
-msgstr "%s: neispravan argument ograničenja"
+msgstr "%s: nevaljani argument za ograničenje"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
-msgstr "â\80\9e%câ\80\9d: neispravna naredba"
+msgstr "â\80\9e%câ\80\9c: loÅ¡a naredba"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
-msgstr "%s: ne mogu otkriti ograničenje: %s"
+msgstr "%s: nije moguće dobiti ograničenje: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "ograničenje"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
-msgstr "%s: ne mogu urediti ograničenje: %s"
+msgstr "%s: nije moguće promijeniti ograničenje: %s"
 
 #: builtins/umask.def:115
 msgid "octal number"
@@ -899,424 +945,434 @@ msgstr "oktalni broj"
 #: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
-msgstr "â\80\9e%câ\80\9d: neispravan operator simboliÄ\8dkog naÄ\8dina"
+msgstr "â\80\9e%câ\80\9c: nevaljani operator u simboliÄ\8dkom naÄ\8dinu"
 
 #: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
-msgstr "â\80\9e%câ\80\9d: neispravan znak simboliÄ\8dkog naÄ\8dina"
+msgstr "â\80\9e%câ\80\9c: nevaljani znak u simboliÄ\8dkom naÄ\8dinu"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " redak "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "posljednja naredba: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
-msgstr "Prekidam..."
+msgstr "Prekida se..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "informacije: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "nepoznata greška naredbe"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
-msgstr "neispravna vrsta naredbe"
+msgstr "loša vrsta naredbe"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
-msgstr "neispravno spajanje"
+msgstr "loš konektor"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
-msgstr "neispravan skok"
+msgstr "loši skok"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: nepovezana varijabla"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\avrijeme čekanja ulaza je isteklo: automatska-odjava\n"
+msgstr "\avrijeme čekanja na ulaz je isteklo: automatska-odjava\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "ne mogu preusmjeriti standardni ulaz iz /dev/null: %s"
+msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: â\80\9e%câ\80\9d: neispravan znak oblika"
+msgstr "TIMEFORMAT: â\80\9e%câ\80\9c: nevaljani znak za format"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
-msgstr "greška cjevovoda"
+msgstr "greška cijevi"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr ""
+msgstr "eval: prekoračena je dopuštena razina eval gniježđenja (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: prekoračena je dopuštena razina source gniježđenja (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: prekoračena je dopuštena razina gniježđenja funkcije (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: ograničeno: ne možete navesti „/” u imenu naredbe"
+msgstr "%s: ograničeni način: znak „/“ nije dopušten u imenima naredba"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: naredba nije pronađena"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: neispravan tumač"
+msgstr "%s: %s: loši interpreter"
 
-#: execute_cmd.c:5545
-#, fuzzy, c-format
+#: execute_cmd.c:5757
+#, c-format
 msgid "%s: cannot execute binary file: %s"
-msgstr "%s: ne mogu izvršiti binarnu datoteku"
+msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvršiti"
 
-#: execute_cmd.c:5623
-#, fuzzy, c-format
+#: execute_cmd.c:5843
+#, c-format
 msgid "`%s': is a special builtin"
-msgstr "%s je ugrađen u ljusku\n"
+msgstr "„%s“ je specijalna funkcija ugrađena u ljusku"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
-msgstr "ne mogu udvostručiti opisnik datoteke %d u opisnik datoteke %d"
+msgstr "nije moguće kopirati deskriptor datoteke %d u deskriptor datoteke %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
-msgstr "razina rekurzije izraza je prekoračena"
+msgstr "izraz ima preveliki broj rekurzija"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
-msgstr "podljev stoga rekurzije"
+msgstr "snop rekurzija je prazan"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
-msgstr "sintaksna greška u izrazu"
+msgstr "sintaktička greška u izrazu"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
-msgstr "pokušaj pridruživanja ne-varijabli"
+msgstr "vrijednost se može dodijeliti samo varijabli"
+
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "sintaktička greška zadavanja varijable"
 
-#: expr.c:495 expr.c:858
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "dijeljenje s 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
-msgstr "greška: neispravan simbol expassign"
+msgstr "**interna greška** : loši token u izrazu za dodjelu"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
-msgstr "očekujem „:” za uvjetni izraz"
+msgstr "znak „:“ je nužan u uvjetnom izrazu"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponent je manji od 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "očekujem identifikator nakon pred-povećanja ili pred-smanjenja"
+msgstr "nakon pre-increment ili pre-decrement očekuje se identifikator"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
-msgstr "nedostaje „)”"
+msgstr "nema „)“"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
-msgstr "sintaksna greška: očekujem operand"
+msgstr "sintaktička greška: očekivao se operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
-msgstr "sintaksna greška: neispravan aritmetički operator"
+msgstr "sintaktička greška: nevaljani aritmetički operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (simbol greÅ¡ke je â\80\9e%sâ\80\9d)"
+msgstr "%s%s%s: %s (simbol greÅ¡ke je â\80\9e%sâ\80\9c)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
-msgstr "neispravna aritmetička baza"
+msgstr "nevaljana aritmetička baza"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "vrijednost baze je prevelika"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
-msgstr "%s: greška izraza\n"
+msgstr "%s: greška u izrazu\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
-msgstr "getcwd: ne mogu pristupiti nadređenim direktorijima"
+msgstr "getcwd(): nije moguće pristupiti nadređenim direktorijima"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
+msgstr "ne može se onemogućiti nodelay način za deskriptor datoteke %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "ne mogu alocirati novi datotečni opisnik za bash ulaz iz fd %d"
+msgstr "nije moguće dodijeliti novi datotečni deskriptor za bash ulaz iz fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: međuspremnik već postoji za novi fd %d"
+msgstr "save_bash_input(): međuspremnik već postoji za novi fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
-msgstr "start_pipeline: pgrp pipe"
+msgstr "start_pipeline(): pgrp pipe (procesna grupa cijevi)"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
-msgstr "razdvojen pid %d se javlja u pokrenutom zadatku %d"
+msgstr "potproces PID %d javlja se u pokrenutom poslu %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
-msgstr "uklanjam zaustavljeni zadatak %d s grupom procesa %ld"
+msgstr "uklanja se zaustavljeni posao %d s grupom procesa %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: proces %5ld (%s) u the_pipeline"
+msgstr "add_process(): proces %5ld (%s) u cjevovodu"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: pid %5ld (%s) označen kao još živ"
+msgstr "add_process(): PID %5ld (%s) označen kao još uvijek aktivan"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: ne postoji takav pid"
+msgstr "describe_pid(): %ld: PID ne postoji"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Gotovo"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
-msgstr "Zaustavljen"
+msgstr "Zaustavljeno"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
-msgstr "Zaustavljen(%s)"
+msgstr "Zaustavljeno(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
-msgstr "Pokrenut"
+msgstr "Pokrenuto"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Gotovo(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Izlaz %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
-msgstr "Nepoznato stanje"
+msgstr "Nepoznati status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
-msgstr "(jezgra izbačena) "
+msgstr "(stanje memorije zapisano) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
-msgstr ""
+msgstr "postavljanje procesne grupe %2$ld od potomka %1$ld"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: pid %ld nije dijete ove ljuske"
+msgstr "wait: PID %ld nije potomak ove ljuske"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
-msgstr "wait_for: Ne postoji zapis o procesu %ld"
+msgstr "wait_for: nema zapisa o procesu %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: zadatak %d je zaustavljen"
+msgstr "wait_for_job: posao %d je zaustavljen"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
-msgstr "%s: zadatak je dovršen"
+msgstr "%s: posao je prekinut"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
-msgstr "%s: zadatak %d je već u pozadini"
+msgstr "%s: posao %d je već u pozadini"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
+msgstr "waitchld(): omogući WNOHANG da se izbjegne neodređeno blokiranje"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: redak %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
-msgstr " (jezgra izbačena)"
+msgstr " (stanje memorije zapisano)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
-msgstr "(sadašnji wd: %s)\n"
+msgstr "(radni direktorij je sada: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_job_control: getpgrp nije uspio"
+msgstr "initialize_job_control: neuspješni getpgrp()"
+
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: nema kontrole nad pozadinskim poslovima"
 
-#: jobs.c:4104
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
-msgstr ""
+msgstr "initialize_job_control: line discipline"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
-msgstr "initialize_job_control: setpgid"
+msgstr "initialize_job_control: setpgid()"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
-msgstr "ne mogu postaviti grupu procesa terminala (%d)"
+msgstr "nije moguće postaviti procesnu grupu (%d) terminala"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
-msgstr "nema kontrole zadataka u ovoj ljusci"
+msgstr "nema kontrole nad poslovima u ovoj ljusci"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
-msgstr ""
+msgstr "malloc(): neuspješni kontrolni test: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
+"\r\n"
+"malloc(): %s:%d: loše provedena proba\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "nepoznato"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
-msgstr ""
+msgstr "malloc(): prepisani je blok na popisu slobodne memorije"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
-msgstr "free: pozvan s argumentom već oslobođenog bloka"
+msgstr "free(): pozvan s argumentom za već slobodni memorijski blok"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
-msgstr "free: pozvan s argumentom nealociranog bloka"
+msgstr "free(): pozvan s argumentom za ne dodijeljeni memorijski blok"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: otkriven podljev, mh_nbytes izvan granica"
+msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
-msgstr ""
+msgstr "free(): veličine segmenta od početka i kraja su različite"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
-msgstr "realloc: pozvan s argumentom nealociranog bloka"
+msgstr "realloc(): pozvan s argumentom za ne dodijeljeni memorijski blok"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: otkriven podljev, mh_nbytes izvan granica"
+msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
-msgstr ""
+msgstr "realloc(): veličine segmenta od početka i kraja su različite"
 
 #: lib/malloc/table.c:191
 #, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
+msgstr "register_alloc(): rezervacijska tablica je popunjena s FIND_ALLOC??\n"
 
 #: lib/malloc/table.c:200
 #, c-format
 msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
+msgstr "register_alloc(): %p je već rezervirani u tablici??\n"
 
 #: lib/malloc/table.c:253
 #, c-format
 msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: %p već u tablici kao oslobođen?\n"
+msgstr "register_free(): %p je već slobodan u tablici??\n"
 
 #: lib/sh/fmtulong.c:102
 msgid "invalid base"
-msgstr "neispravna baza"
+msgstr "nevaljana baza"
 
 #: lib/sh/netopen.c:168
 #, c-format
@@ -1326,36 +1382,36 @@ msgstr "%s: nepoznato računalo"
 #: lib/sh/netopen.c:175
 #, c-format
 msgid "%s: invalid service"
-msgstr "%s: neispravna usluga"
+msgstr "%s: nevaljani servis"
 
 #: lib/sh/netopen.c:306
 #, c-format
 msgid "%s: bad network path specification"
-msgstr "%s: neispravno navedena mrežna putanja"
+msgstr "%s: loša specifikacija za mrežnu stazu"
 
 #: lib/sh/netopen.c:347
 msgid "network operations not supported"
 msgstr "mrežne operacije nisu podržane"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s)"
+msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s): %s"
+msgstr "setlocale(): LC_ALL: nije moguće promijeniti jezično područje (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: ne mogu promijeniti lokal (%s)"
+msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: ne mogu promijeniti lokal (%s): %s"
+msgstr "setlocale(): %s: nije moguće promijeniti jezično područje (%s): %s"
 
 #: mailcheck.c:439
 msgid "You have mail in $_"
@@ -1368,319 +1424,330 @@ msgstr "Imate novu poštu u $_"
 #: mailcheck.c:480
 #, c-format
 msgid "The mail in %s has been read\n"
-msgstr "Pošta u %s je pročitana\n"
+msgstr "Pošta u %s je već pročitana\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
-msgstr "sintaksna greška: potreban aritmetički izraz"
+msgstr "sintaktička greška: zahtijeva se aritmetički izraz"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
-msgstr "sintaksna greška: neočekivana „;”"
+msgstr "sintaktička greška: neočekivani „;“ znak"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
-msgstr "sintaksna greška: „((%s))”"
+msgstr "sintaktička greška: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document: neispravna vrsta instrukcije %d"
+msgstr "make_here_document(): loša vrsta instrukcije %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
+msgstr "redak %d od here-document ima za razdjelnik EOF (očekuje se „%s“)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
+"make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc(): shell_input_line_size (%zu) je veća od SIZE_MAX (%lu): "
+"skraćuje se"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "maksimalni broj za here-document je prekoračeni"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
-msgstr "neoÄ\8dekivani EOF pri traženju odgovarajuÄ\87eg â\80\9e%câ\80\9d"
+msgstr "neoÄ\8dekivani EOF pri traženju odgovarajuÄ\87eg â\80\9e%câ\80\9c"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
-msgstr "neoÄ\8dekivani EOF pri traženju â\80\9e]]â\80\9d"
+msgstr "neoÄ\8dekivani EOF pri traženju â\80\9e]]â\80\9c"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "sintaksna greška u uvjetnom izrazu: neočekivani simbol „%s”"
+msgstr "sintaktička greška u uvjetnom izrazu: neočekivani token „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
-msgstr "sintaksna greška u uvjetnom izrazu"
+msgstr "sintaktička greška u uvjetnom izrazu"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
-msgstr "neočekivani simbol „%s”, očekujem „)”"
+msgstr "neočekivani token „%s“ umjesto očekivane „)“"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
-msgstr "očekujem „)”"
+msgstr "očekivana je „)“"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "neoÄ\8dekivani argument â\80\9e%sâ\80\9d uvjetnom unarnom operatoru"
+msgstr "neoÄ\8dekivani argument â\80\9e%sâ\80\9c uvjetnom unarnom operatoru"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
-msgstr "neočekivani argument uvjetnom unarnom operatoru"
+msgstr "neočekivani argument za uvjetni unarni operator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "neočekivani simbol „%s”, očekujem uvjetni binarni operator"
+msgstr "neočekivani token „%s“; očekivao se uvjetni binarni operator"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
-msgstr "očekujem uvjetni binarni operator"
+msgstr "očekivao se uvjetni binarni operator"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "neoÄ\8dekivani argument â\80\9e%sâ\80\9d uvjetnom binarnom operatoru"
+msgstr "neoÄ\8dekivani argument â\80\9e%sâ\80\9c za uvjetni binarni operator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
-msgstr "neočekivani argument uvjetnom binarnom operatoru"
+msgstr "neočekivani argument za uvjetni binarni operator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
-msgstr "neočekivani simbol „%c” u uvjetnoj naredbi"
+msgstr "neočekivani token „%c“ u uvjetnoj naredbi"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
-msgstr "neočekivani simbol „%s” u uvjetnoj naredbi"
+msgstr "neočekivani token „%s“ u uvjetnoj naredbi"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
-msgstr "neočekivani simbol %d u uvjetnoj naredbi"
+msgstr "neočekivani token %d u uvjetnoj naredbi"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
-msgstr "sintaksna greška kod neočekivanog simbola „%s”"
+msgstr "sintaktička greška blizu neočekivanog tokena „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
-msgstr "sintaksna greška kod „%s”"
+msgstr "sintaktička greška blizu „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
-msgstr "sintaksna greška: neočekivani kraj datoteke"
+msgstr "sintaktička greška: neočekivani kraj datoteke"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
-msgstr "sintaksna greška"
+msgstr "sintaktička greška"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Koristite „%s” za napuštanje ljuske.\n"
+msgstr "Koristite \"%s\" da napustite ljusku.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
-msgstr "neoÄ\8dekivani EOF pri traženju odgovarajuÄ\87e â\80\9e\80\9d"
+msgstr "neoÄ\8dekivani EOF pri traženju odgovarajuÄ\87e â\80\9e\80\9c"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr "completion: funkcija „%s” nije pronađena"
+msgstr "completion(): funkcija „%s“ nije pronađena"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion(): %s: moguća je beskonačna petlja"
 
 #: pcomplib.c:182
 #, c-format
 msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert(): %s: prazni COMPSPEC"
 
 #: print_cmd.c:302
 #, c-format
 msgid "print_command: bad connector `%d'"
-msgstr ""
+msgstr "print_command(): loši konektor „%d“"
 
 #: print_cmd.c:375
 #, c-format
 msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "xtrace_set: %d: neispravan opisnik datoteke"
+msgstr "xtrace_set(): %d: nevaljani deskriptor datoteke"
 
 #: print_cmd.c:380
 msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: NULL pokazivač na datoteku"
+msgstr "xtrace_set(): prazni pokazivač na datoteku"
 
 #: print_cmd.c:384
 #, c-format
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
+msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
-msgstr ""
+msgstr "cprintf(): „%c“: nevaljani znak za format"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
-msgstr "opisnik datoteke izvan granica"
+msgstr "deskriptor datoteke je izvan raspona"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
-msgstr "%s: višeznačno preusmjeravanje"
+msgstr "%s: dvosmisleno preusmjeravanje"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
-msgstr "%s: ne mogu pisati preko postojeće datoteke"
+msgstr "%s: nije moguće pisati preko postojeće datoteke"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
-msgstr "%s: ograničeno: ne mogu preusmjeriti izlaz"
+msgstr "%s: ograničeno: nije moguće preusmjeriti izlaz"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
-msgstr "ne mogu napraviti privremenu datoteku za here-document: %s"
+msgstr "nije moguće napraviti privremenu datoteku za here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
-msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli"
+msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
-msgstr "greška preusmjeravanja: ne mogu udvostručiti opisnik datoteke"
+msgstr "greška  preusmjeravanja: nije moguće kopirati deskriptor datoteke"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
-msgstr "ne mogu pronaći /tmp, molim, napravite ga!"
+msgstr "nije bilo moguće pronaći /tmp; napravite taj direktorij!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp mora biti ispravno ime direktorija"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "u interaktivnoj ljusci pretty-printing se ignorira"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
-msgstr "%c%c: neispravna opcija"
+msgstr "%c%c: nevaljana opcija"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr ""
+msgstr "nije moguće postaviti UID na %d: efektivni UID je %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr ""
+msgstr "nije moguće postaviti GID na %d: efektivni GID je %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "nije moguće pokrenuti debugger; debugiranje je onemogućeno"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: to je direktorij"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nemam ime!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, inačica %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 msgstr ""
 "Uporaba: %s [GNU dugačka opcija] [opcija] ...\n"
-"\t %s [GNU dugačka opcija] [opcija] skripta ...\n"
+"         %s [GNU dugačka opcija] [opcija] skripta ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU dugačke opcije:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opcije ljuske:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
+msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA    (samo za pokretanje)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
-msgstr ""
+msgstr "\t-%s ili -o opcija\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
+"„%s -c \"help set\"“  pokaže vam dodatne informacije o opcijama ljuske.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
+"„%s -c help set“  pokaže vam više informacija o ugrađenim funkcijama "
+"ljuske.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Koristite naredbu â\80\9ebashbugâ\80\9d za prijavljivanje grešaka.\n"
+msgstr "Koristite naredbu â\80\9ebashbugâ\80\9c za prijavljivanje grešaka.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "bash Web stranica: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"Općenita pomoć za korištenje GNU softvera: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
-msgstr ""
+msgstr "sigprocmask(): %d: nevaljana operacija"
 
 #: siglist.c:48
 msgid "Bogus signal"
-msgstr "Lažan signal"
+msgstr "Lažni signal"
 
 #: siglist.c:51
 msgid "Hangup"
@@ -1696,11 +1763,11 @@ msgstr "Izlaz"
 
 #: siglist.c:63
 msgid "Illegal instruction"
-msgstr "Nedozvoljena instrukcija"
+msgstr "Nedopuštena instrukcija"
 
 #: siglist.c:67
 msgid "BPT trace/trap"
-msgstr "BPT praćenje/zamka"
+msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)"
 
 #: siglist.c:75
 msgid "ABORT instruction"
@@ -1712,15 +1779,15 @@ msgstr "EMT instrukcija"
 
 #: siglist.c:83
 msgid "Floating point exception"
-msgstr "Iznimka pomičnog zareza"
+msgstr "Iznimka/greška u radu s realnim brojem"
 
 #: siglist.c:87
 msgid "Killed"
-msgstr "Prekinut"
+msgstr "Ubijen"
 
 #: siglist.c:91
 msgid "Bus error"
-msgstr "Sabirnička greška"
+msgstr "Greška adresiranja"
 
 #: siglist.c:95
 msgid "Segmentation fault"
@@ -1728,11 +1795,11 @@ msgstr "Segmentacijska greška"
 
 #: siglist.c:99
 msgid "Bad system call"
-msgstr "Neispravan poziv sustava"
+msgstr "Loši sustavski poziv"
 
 #: siglist.c:103
 msgid "Broken pipe"
-msgstr "Prekinut cjevovod"
+msgstr "Prekinuta cijev"
 
 #: siglist.c:107
 msgid "Alarm clock"
@@ -1740,7 +1807,7 @@ msgstr "Budilica"
 
 #: siglist.c:111
 msgid "Terminated"
-msgstr "Završen"
+msgstr "Završeno"
 
 #: siglist.c:115
 msgid "Urgent IO condition"
@@ -1748,15 +1815,15 @@ msgstr "Hitno U/I stanje"
 
 #: siglist.c:119
 msgid "Stopped (signal)"
-msgstr "Zaustavljen (signalom)"
+msgstr "Zaustavljeno (signalom)"
 
 #: siglist.c:127
 msgid "Continue"
-msgstr "Nastavi"
+msgstr "Nastavljanje"
 
 #: siglist.c:135
 msgid "Child death or stop"
-msgstr "Dijete je umrlo ili zaustavljeno"
+msgstr "Potomak-proces ubijen ili zaustavljen"
 
 #: siglist.c:139
 msgid "Stopped (tty input)"
@@ -1768,7 +1835,7 @@ msgstr "Zaustavljen (tty izlaz)"
 
 #: siglist.c:147
 msgid "I/O ready"
-msgstr "U/I spreman"
+msgstr "U/I je spreman"
 
 #: siglist.c:151
 msgid "CPU limit"
@@ -1780,19 +1847,19 @@ msgstr "Ograničenje datoteke"
 
 #: siglist.c:159
 msgid "Alarm (virtual)"
-msgstr "Budilica (virtualna)"
+msgstr "Alarm (virtualni)"
 
 #: siglist.c:163
 msgid "Alarm (profile)"
-msgstr ""
+msgstr "Alarm (profil)"
 
 #: siglist.c:167
 msgid "Window changed"
-msgstr "Promijenjen prozor"
+msgstr "Prozor promijenjen"
 
 #: siglist.c:171
 msgid "Record lock"
-msgstr ""
+msgstr "Zapis zaključan"
 
 #: siglist.c:175
 msgid "User signal 1"
@@ -1804,7 +1871,7 @@ msgstr "Korisnički signal 2"
 
 #: siglist.c:183
 msgid "HFT input data pending"
-msgstr ""
+msgstr "HFT ulazni podaci čekaju"
 
 #: siglist.c:187
 msgid "power failure imminent"
@@ -1824,15 +1891,15 @@ msgstr "greška programiranja"
 
 #: siglist.c:203
 msgid "HFT monitor mode granted"
-msgstr ""
+msgstr "HFT nadzor dopušten"
 
 #: siglist.c:207
 msgid "HFT monitor mode retracted"
-msgstr ""
+msgstr "HFT nadzor oduzet"
 
 #: siglist.c:211
 msgid "HFT sound sequence has completed"
-msgstr ""
+msgstr "HFT sekvencija zvukova je završena"
 
 #: siglist.c:215
 msgid "Information request"
@@ -1840,249 +1907,260 @@ msgstr "Zahtjev za informacijom"
 
 #: siglist.c:223
 msgid "Unknown Signal #"
-msgstr "Nepoznat signal #"
+msgstr "Nepoznati signal #"
 
 #: siglist.c:225
 #, c-format
 msgid "Unknown Signal #%d"
-msgstr "Nepoznat signal #%d"
+msgstr "Nepoznati signal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
-msgstr "neispravna zamjena: nema zatvorene „%s” u %s"
+msgstr "loša supstitucija: nema zaključnoga „%s“ u %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
-msgstr "%s: ne mogu pridružiti popis elementu polja"
+msgstr "%s: nije moguće dodijeliti popis elementu polja"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
-msgstr "ne mogu napraviti cjevovod za zamjenu procesa"
+msgstr "nije moguće napraviti cijev za zamjenu procesa"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
-msgstr "ne mogu napraviti dijete za zamjenu procesa"
+msgstr "nije moguće napraviti potomka za zamjenu procesa"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
-msgstr "ne mogu otvoriti imenovani cjevovod %s za čitanje"
+msgstr "nije moguće otvoriti imenovanu cijev %s za čitanje"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
-msgstr "ne mogu otvoriti imenovani cjevovod %s za pisanje"
+msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "ne mogu udvostručiti imenovani cjevovod %s kao opisnik datoteke %d"
+msgstr "nije moguće kopirati imenovanu cijev %s kao deskriptor datoteke %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "neispravna zamjena: nema zatvorenog „`” u %s"
+msgstr "nevaljana supstitucija: ignorirani NULL bajt na ulazu"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
-msgstr "ne mogu napraviti cjevovod za zamjenu naredbi"
+msgstr "nije moguće napraviti cijev za zamjenu naredbi"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
-msgstr "ne mogu napraviti dijete za zamjenu naredbi"
+msgstr "nije moguće napraviti potomka za zamjenu naredbi"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
-"command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1"
+"command_substitute(): nije moguće kopirati cijev kao deskriptor datoteke 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
-msgstr ""
+msgstr "%s: nevaljano ime varijable za naziv referencije"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: neispravna zamjena"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: neispravan broj redaka"
+msgstr "%s: nevaljana indirektna ekspanzija"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "„%s”: neispravno drugo ime"
+msgstr "„%s“: nevaljano ime varijable"
+
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametar nije postavljen"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
-msgstr "%s: parametar prazan ili nije postavljen"
+msgstr "%s: prazni parametar ili nije postavljen"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
-msgstr "%s: izraz podniza < 0"
+msgstr "%s: rezultat od izraza dijela stringa < 0"
+
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: loša supstitucija"
 
-#: subst.c:8450
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
-msgstr "$%s: ne mogu pridružiti na ovaj način"
+msgstr "$%s: nije moguće dodijeliti na ovaj način"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
-msgstr "buduće inačice ljuske će prisiliti procjenu kao aritmetičku zamjenu"
+msgstr ""
+"buduće inačice ljuske će prisiliti procjenu kao aritmetičku supstituciju"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
-msgstr "neispravna zamjena: nema zatvorenog „`” u %s"
+msgstr "loša supstitucija: nema zaključnoga znaka „`“ u %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "nema podudaranja: %s"
 
 #: test.c:147
 msgid "argument expected"
-msgstr "očekujem argument"
+msgstr "očekuje se argument"
 
 #: test.c:156
 #, c-format
 msgid "%s: integer expression expected"
-msgstr "%s: očekujem cjelobrojni izraz"
+msgstr "%s: očekuje se cijelo brojni izraz"
 
 #: test.c:265
 msgid "`)' expected"
-msgstr "očekujem „)”"
+msgstr "očekivana je „)“"
 
 #: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
-msgstr "očekujem „)”, našao %s"
+msgstr "očekuje se „)“, nađen %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
-msgstr "%s: očekujem unarni operator"
+msgstr "%s: očekuje se unarni operator"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
-msgstr "%s: očekujem binarni operator"
+msgstr "%s: očekuje se binarni operator"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
-msgstr "nedostaje â\80\9e\80\9d"
+msgstr "nedostaje â\80\9e\80\9c"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
-msgstr "neispravan broj signala"
+msgstr "nevaljani broj za signal"
+
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: prekoračena je dopuštena razina gniježđenja (%d)"
 
-#: trap.c:387
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
+msgstr "run_pending_traps(): loša vrijednost u trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
+"run_pending_traps: signalom manipulira SIG_DFL, opet šalje %d (%s) na samoga "
+"sebe"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: neispravan signal %d"
+msgstr "trap_handler(): loši signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
-msgstr "greška pri uvozu definicije funkcije za „%s”"
+msgstr "greška pri importiranju definicije funkcije za „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
-msgstr "razina ljuske (%d) je previsoka, vraćam na 1"
+msgstr "razina ljuske (%d) je previsoka, vraća se na 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
-msgstr ""
+msgstr "make_local_variable(): u trenutačnom području nema konteksta funkcije"
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli"
+msgstr "%s: varijabli se ne može dodijeliti vrijednost"
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
-msgstr ""
+msgstr "%s: nazivu referencije se pripisuje cijeli broj"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
-msgstr ""
+msgstr "all_local_variables(): u trenutačnom području nema konteksta funkcije"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
-msgstr "%s ima prazan exportstr"
+msgstr "*** %s ima prazni exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
-msgstr ""
+msgstr "*** nevaljani znak %d u exportstr za %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
-msgstr ""
+msgstr "*** nema „=“ u exportstr za %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
+msgstr "pop_var_context(): vrh od „shell_variables“ nije funkcijski kontekst"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
-msgstr ""
+msgstr "pop_var_context(): nije „global_variables“ kontekst"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
+msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni kontekst okoline"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: ne mogu otvoriti kao DATOTEKU"
+msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
+msgstr "%s: %s: nevaljana vrijednost za praćenje deskriptora datoteke"
 
-#: variables.c:5669
-#, fuzzy, c-format
+#: variables.c:6322
+#, c-format
 msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s je izvan granica"
+msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright © 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
 "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
 "html>\n"
 msgstr ""
-"Licenca GPLv3+: GNU GPL inačica 3 ili novija <http://gnu.org/licenses/gpl."
-"html>\n"
+"Licencija:\n"
+"GPLv3+: GNU GPL inačica 3 ili novija <http://gnu.org/licenses/gpl.html>\n"
 
 #: version.c:86 version2.c:86
 #, c-format
@@ -2090,68 +2168,70 @@ msgid "GNU bash, version %s (%s)\n"
 msgstr "GNU bash, inačica %s (%s)\n"
 
 #: version.c:91 version2.c:91
-#, fuzzy
 msgid "This is free software; you are free to change and redistribute it."
-msgstr "Ovo je slobodan softver, slobodno ga smijete mijenjati i dijeliti.\n"
+msgstr "Ovo je slobodni softver; slobodno ga mijenjajte i dijelite."
 
 #: version.c:92 version2.c:92
-#, fuzzy
 msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr "NEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n"
+msgstr "NEMA JAMSTVA do granica dopuštenih zakonom."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)"
+msgstr "%s: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: ne mogu alocirati %lu bajtova"
+msgstr "%s: nije moguće dodijeliti %lu bajtova"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)"
+msgstr ""
+"%s: %s:%d: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova"
+msgstr "%s: %s:%d: nije moguće dodijeliti %lu bajtova"
 
 #: builtins.c:45
 msgid "alias [-p] [name[=value] ... ]"
-msgstr "alias [-p] [ime[=vrijednost] ... ]"
+msgstr "alias [-p] [IME[=VRIJEDNOST]... ]"
 
 #: builtins.c:49
 msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] ime [ime ...]"
+msgstr "unalias [-a] IME..."
 
 #: builtins.c:53
 msgid ""
 "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
 "x keyseq:shell-command] [keyseq:readline-function or readline-command]"
 msgstr ""
+"bind [-lpsvPSVX] [-m TIPKOVNICA] [-f DATOTEKA] [-q IME] [-u IME]\n"
+"           [-r PREČAC] [-x PREČAC:SHELL_NAREDBA]\n"
+"           [PREČAC:READLINE_FUNKCIJA | READLINE_NAREDBA]"
 
 #: builtins.c:56
 msgid "break [n]"
-msgstr ""
+msgstr "break [N]"
 
 #: builtins.c:58
 msgid "continue [n]"
-msgstr ""
+msgstr "continue [N]"
 
 #: builtins.c:60
 msgid "builtin [shell-builtin [arg ...]]"
-msgstr ""
+msgstr "builtin [UGRAĐENA_SHELL_FUNKCIJA [ARGUMENT...]]"
 
 #: builtins.c:63
 msgid "caller [expr]"
-msgstr ""
+msgstr "caller [IZRAZ]"
 
 #: builtins.c:66
 msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr ""
+msgstr "cd [-L|[-P [-e]] [-@]] [DIREKTORIJ]"
 
 #: builtins.c:68
 msgid "pwd [-LP]"
@@ -2159,238 +2239,246 @@ msgstr "pwd [-LP]"
 
 #: builtins.c:76
 msgid "command [-pVv] command [arg ...]"
-msgstr ""
+msgstr "command [-pVv] NAREDBA [ARGUMENT...]"
 
 #: builtins.c:78
-#, fuzzy
 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "alias [-p] [ime[=vrijednost] ... ]"
+msgstr "declare [-aAfFgilnrtux] [-p] [IME[=VRIJEDNOST]...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "alias [-p] [ime[=vrijednost] ... ]"
+msgstr "typeset [-aAfFgilnrtux] [-p] IME[=VRIJEDNOST]..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
-msgstr ""
+msgstr "local [OPCIJA] IME[=VRIJEDNOST]..."
 
 #: builtins.c:85
 msgid "echo [-neE] [arg ...]"
-msgstr ""
+msgstr "echo [-neE] [ARGUMENT...]"
 
 #: builtins.c:89
 msgid "echo [-n] [arg ...]"
-msgstr ""
+msgstr "echo [-n] [ARGUMENT...]"
 
 #: builtins.c:92
 msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr ""
+msgstr "enable [-a] [-dnps] [-f DATOTEKA] [IME...]"
 
 #: builtins.c:94
 msgid "eval [arg ...]"
-msgstr ""
+msgstr "eval [ARGUMENT...]"
 
 #: builtins.c:96
 msgid "getopts optstring name [arg]"
-msgstr ""
+msgstr "getopts OPCIJA_STRING IME [ARGUMENT]"
 
 #: builtins.c:98
 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr ""
+msgstr "exec [-cl] [-a IME] [NAREDBA [ARGUMENT...]] [PREUSMJERAVANJE...]"
 
 #: builtins.c:100
 msgid "exit [n]"
-msgstr ""
+msgstr "exit [N]"
 
 #: builtins.c:102
 msgid "logout [n]"
-msgstr ""
+msgstr "logout [N]"
 
 #: builtins.c:105
 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
 msgstr ""
+"fc [-e EDITOR] [-lnr] [PRVA] [ZADNJA] ili: fc -s [UZORAK=ZAMJENA] [NAREDBA]"
 
 #: builtins.c:109
 msgid "fg [job_spec]"
-msgstr ""
+msgstr "fg [JOBSPEC]"
 
 #: builtins.c:113
 msgid "bg [job_spec ...]"
-msgstr ""
+msgstr "bg [JOBSPEC...]"
 
 #: builtins.c:116
 msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr ""
+msgstr "hash [-lr] [-p IME_STAZE] [-dt] [IME...]"
 
 #: builtins.c:119
 msgid "help [-dms] [pattern ...]"
-msgstr ""
+msgstr "help [-dms] [UZORAK ...]"
 
 #: builtins.c:123
 msgid ""
 "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
 "[arg...]"
 msgstr ""
+"history [-c] [-d POZICIJA] [N]\n"
+"    ili: history -anrw [DATOTEKA]\n"
+"    ili: history -ps ARGUMENT..."
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr ""
+msgstr "jobs [-lnprs] [JOBSPEC...] ili: jobs -x NAREDBA [ARGUMENT...]"
 
 #: builtins.c:131
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr ""
+msgstr "disown [-h] [-ar] [JOBSPEC... | PID...]"
 
 #: builtins.c:134
 msgid ""
 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
 "[sigspec]"
 msgstr ""
+"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] pid | JOBSPEC\n"
+" ili: kill -l [SIGSPEC]"
 
 #: builtins.c:136
 msgid "let arg [arg ...]"
-msgstr ""
+msgstr "let ARGUMENT..."
 
 #: builtins.c:138
 msgid ""
 "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
 "prompt] [-t timeout] [-u fd] [name ...]"
 msgstr ""
+"read [-ers] [-a POLJE] [-d MEĐA] [-i TEKST] [-p PROMPT]\n"
+"           [-n BROJ_ZNAKOVA] [-N BROJ_ZNAKOVA] [-t SEKUNDA]\n"
+"           [-u FD] [IME...]"
 
 #: builtins.c:140
 msgid "return [n]"
-msgstr ""
+msgstr "return [N]"
 
 #: builtins.c:142
 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr ""
+msgstr "set [-abefhkmnptuvxBCHP] [-o IME_OPCIJE] [--] [ARGUMENT...]"
 
 #: builtins.c:144
-#, fuzzy
 msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unalias [-a] ime [ime ...]"
+msgstr "unset [-f] [-v] [-n] [IME...]"
 
 #: builtins.c:146
 msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr ""
+msgstr "export [-fn] [IME[=VRIJEDNOST]...] ili: export -p"
 
 #: builtins.c:148
 msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr ""
+msgstr "readonly [-aAf] [IME[=VRIJEDNOST]...] ili: readonly -p"
 
 #: builtins.c:150
 msgid "shift [n]"
-msgstr ""
+msgstr "shift [N]"
 
 #: builtins.c:152
 msgid "source filename [arguments]"
-msgstr ""
+msgstr "source DATOTEKA [ARGUMENTI]"
 
 #: builtins.c:154
 msgid ". filename [arguments]"
-msgstr ""
+msgstr ". DATOTEKA [ARGUMENTI]"
 
 #: builtins.c:157
 msgid "suspend [-f]"
-msgstr ""
+msgstr "suspend [-f]"
 
 #: builtins.c:160
 msgid "test [expr]"
-msgstr ""
+msgstr "test [IZRAZ]"
 
 #: builtins.c:162
 msgid "[ arg... ]"
-msgstr ""
+msgstr "[ ARGUMENT... ]"
 
 #: builtins.c:166
 msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr ""
+msgstr "trap [-lp] [[ARGUMENT] SIGNAL_SPEC...]"
 
 #: builtins.c:168
 msgid "type [-afptP] name [name ...]"
-msgstr ""
+msgstr "type [-afptP] IME..."
 
 #: builtins.c:171
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr ""
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMIT]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
-msgstr ""
+msgstr "umask [-p] [-S] [MODE]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr ""
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [ID...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
-msgstr ""
+msgstr "wait [PID...]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr ""
+msgstr "for IME [in RIJEČIMA...]; do NAREDBE; done"
 
 #: builtins.c:186
 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr ""
+msgstr "for (( IZRAZ_1; IZRAZ_2; IZRAZ_3 )); do NAREDBE; done"
 
 #: builtins.c:188
 msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr ""
+msgstr "select IME [in RIJEČIMA...;]; do NAREDBE; done"
 
 #: builtins.c:190
 msgid "time [-p] pipeline"
-msgstr ""
+msgstr "time [-p] CJEVOVOD"
 
 #: builtins.c:192
 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr ""
+msgstr "case RIJEČ in [UZORAK [| UZORAK]...) NAREDBE;;]... esac"
 
 #: builtins.c:194
 msgid ""
 "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
 "COMMANDS; ] fi"
 msgstr ""
+"if NAREDBE; then NAREDBE; [elif NAREDBE; then NAREDBE;]... [else NAREDBE;]\n"
+"    fi"
 
 #: builtins.c:196
 msgid "while COMMANDS; do COMMANDS; done"
-msgstr ""
+msgstr "while NAREDBE; do NAREDBE; done"
 
 #: builtins.c:198
 msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
+msgstr "until NAREDBE; do NAREDBE; done"
 
 #: builtins.c:200
 msgid "coproc [NAME] command [redirections]"
-msgstr ""
+msgstr "coproc [IME] NAREDBA [PREUSMJERAVANJA]"
 
 #: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr ""
+msgstr "function IME {NAREDBE;} ili: IME () {NAREDBE;}"
 
 #: builtins.c:204
 msgid "{ COMMANDS ; }"
-msgstr ""
+msgstr "{ NAREDBE; }"
 
 #: builtins.c:206
 msgid "job_spec [&]"
-msgstr ""
+msgstr "JOBSPEC [&]"
 
 #: builtins.c:208
 msgid "(( expression ))"
-msgstr "(( izraz ))"
+msgstr "(( IZRAZ ))"
 
 #: builtins.c:210
 msgid "[[ expression ]]"
-msgstr "[[ izraz ]]"
+msgstr "(( IZRAZ ))"
 
 #: builtins.c:212
 msgid "variables - Names and meanings of some shell variables"
-msgstr ""
+msgstr "varijable — imena i značenje nekih varijabla ljuske"
 
 #: builtins.c:215
 msgid "pushd [-n] [+N | -N | dir]"
-msgstr "pushd [-n] [+N | -N | direktorij]"
+msgstr "pushd [-n] [+N | -N | DIREKTORIJ]"
 
 #: builtins.c:219
 msgid "popd [-n] [+N | -N]"
@@ -2398,44 +2486,54 @@ msgstr "popd [-n] [+N | -N]"
 
 #: builtins.c:223
 msgid "dirs [-clpv] [+N] [-N]"
-msgstr ""
+msgstr "dirs [-clpv] [+N] [-N]"
 
 #: builtins.c:226
 msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr ""
+msgstr "shopt [-pqsu] [-o] [IME_OPCIJE...]"
 
 #: builtins.c:228
 msgid "printf [-v var] format [arguments]"
-msgstr ""
+msgstr "printf [-v VARIJABLA] FORMAT [ARGUMENTI]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIJA] [-A AKCIJA]\n"
+"                   [-C NAREDBA] [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS]\n"
+"                   [-S SUFIKS] [-W POPIS_RIJEČI] [-X FILTAR_UZORAKA] [IME...]"
 
 #: builtins.c:235
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
+"compgen [-abcdefgjksuv] [-o OPCIJA] [-A AKCIJA] [-C NAREDBA]\n"
+"                 [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS] [-S SUFIKS]\n"
+"                 [-W POPIS_RIJEČI] [-X FILTAR_UZORAKA] [RIJEČ]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr ""
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o OPCIJA] [-DEI] [IME...]"
 
 #: builtins.c:242
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
+"mapfile [-d MEĐA] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n"
+"                 [-C FUNKCIJA] [-c TOLIKO] [POLJE]"
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
+"readarray [-d DELIM] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n"
+"                     [-C FUNKCIJA] [-c TOLIKO] [POLJE]"
 
 #: builtins.c:256
 msgid ""
@@ -2456,6 +2554,15 @@ msgid ""
 "been\n"
 "    defined."
 msgstr ""
+"Definira ili prikaže aliase.\n"
+"\n"
+"    Bez argumenata, „alias“ ispiše popis aliasa na standardni izlaz u\n"
+"    iskoristivom formatu: alias IME='ZAMJENA'.\n"
+"    S argumentima, alias je definirani za svako IME za koje je dȃna\n"
+"    ZAMJENA. Ako ZAMJENA završi s razmakom (bjelinom), onda pri ekspanziji\n"
+"    alias provjeri je li je i sljedeća riječ alias.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako nije definirani alias za dȃno IME."
 
 #: builtins.c:278
 msgid ""
@@ -2466,6 +2573,11 @@ msgid ""
 "    \n"
 "    Return success unless a NAME is not an existing alias."
 msgstr ""
+"Ukloni svako dȃno IME iz popisa definiranih aliasa.\n"
+"\n"
+"    S opcijom „-a“ izbriše sve definirane aliase.\n"
+"\n"
+"    Završi s uspjehom osim ako IME nije postojeći alias."
 
 #: builtins.c:291
 msgid ""
@@ -2508,6 +2620,42 @@ msgid ""
 "    Exit Status:\n"
 "    bind returns 0 unless an unrecognized option is given or an error occurs."
 msgstr ""
+"Odredi i postavi „readline“ prečace i varijable.\n"
+"\n"
+"    Poveže sekvencije tipki (prečace) na „readline“ funkciju, ili makro ili\n"
+"    „readline“ varijablu. Sintaksa argumenta koji nije opcija je ista kao\n"
+"    u ~/.inputrc, ali mora biti proslijeđeni kao pojedinačni argument,\n"
+"    na primjer: '\"\\C-x\\C-r\": re-read-init-file'.\n"
+"\n"
+"    Opcije:\n"
+"      -f DATOTEKA        pročita prečace iz ove DATOTEKE\n"
+"      -l                 izlista sve poznate funkcije\n"
+"      -m TIPKOVNICA      koristi ovu TIPKOVNICU dok traje ova naredba;\n"
+"                         moguće TIPKOVNICE su emacs, emacs-standard,\n"
+"                         emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n"
+"                         i vi-insert.\n"
+"      -P                 izlista imena funkcija i prečaca\n"
+"      -p                 ispiše imena funkcija i prečaca u formatu\n"
+"                           koji se može iskoristiti kao ulaz\n"
+"      -r PREČAC          ukloni sekvenciju tipki za ovaj prečac\n"
+"      -q FUNKCIJA        pokaže tipke koje pozivaju ovu FUNKCIJU\n"
+"      -S                 pokaže sekvencije tipki poje pozivaju makroe\n"
+"                           s njihovim vrijednostima\n"
+"      -s                 ispiše sekvencije tipki poje pozivaju makroe s\n"
+"                           njihovim vrijednostima u formatu koji se može\n"
+"                           iskoristiti kao ulaz\n"
+"      -u FUNKCIJA        poništi sve prečace vezane na ovu FUNKCIJU\n"
+"      -V                 izlista imena varijabli s njihovim vrijednostima\n"
+"      -v                 ispiše imena varijabli s njihovim vrijednostima\n"
+"                           u formatu koji se može iskoristiti kao ulaz\n"
+"      -x PREČAC:SHELL_NAREDBA  učini da se izvrši ova SHELL_NAREDBA kȁd god\n"
+"                                 se unese taj PREČAC (sekvencija tipki)\n"
+"      -X                 ispiše prečace (sekvencije tipki) vezane s „-x“ i\n"
+"                           njima pridružene naredbe u formatu koji se može\n"
+"                           iskoristiti kao ulaz\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna neprepoznata opcija\n"
+"    ili se dogodila greška."
 
 #: builtins.c:330
 msgid ""
@@ -2519,6 +2667,11 @@ msgid ""
 "    Exit Status:\n"
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
+"Izlaz iz for, while ili until petlji.\n"
+"\n"
+"    Ako je dȃn N, ukida se N ugnježđenih petlji.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je N manji od 1."
 
 #: builtins.c:342
 msgid ""
@@ -2530,6 +2683,10 @@ msgid ""
 "    Exit Status:\n"
 "    The exit status is 0 unless N is not greater than or equal to 1."
 msgstr ""
+"Nastavlja sljedeću iteraciju ugnježđenih for, while ili until petlji.\n"
+"    Ako je dȃn N, nastavlja se N-tom ugnježđenom petljom.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je N manji od 1."
 
 #: builtins.c:354
 msgid ""
@@ -2542,8 +2699,19 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
+"Izvrši ugrađenu funkciju ljuske (shell builtins).\n"
+"\n"
+"    Izvrši dȃnu UGRAĐENU_SHELL_FUNKCIJU (SHELL-BUILTIN) funkciju s dȃnim\n"
+"    ARGUMENTIMA. To je korisno ako želite redefinirati implementaciju\n"
+"    ugrađene shell funkcije kao vlastitu shell funkciju (skriptu s istim\n"
+"    imenom kao ugrađena shell funkcija), a potrebna vam je funkcionalnost\n"
+"    te ugrađene shell funkcije unutar vaše vlastite skripte (shell "
+"funkcije).\n"
+"\n"
+"    Završi s kȏdom UGRAĐENE_SHELL_FUNKCIJE ili s kȏdom 1 ako\n"
+"    UGRAĐENA_SHELL_FUNKCIJA nije ugrađene funkcija ljuske (shell builtin)."
 
 #: builtins.c:369
 msgid ""
@@ -2560,6 +2728,17 @@ msgid ""
 "    Returns 0 unless the shell is not executing a shell function or EXPR\n"
 "    is invalid."
 msgstr ""
+"Vrati kontekst trenutačnoga poziva potprogramu.\n"
+"\n"
+"    Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n"
+"    „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n"
+"    za „stack trace“.\n"
+"\n"
+"    Vrijednost IZRAZA pokazuje koliko se treba vratiti unazad od\n"
+"    trenutačne pozicije, s time da je pozicija 0 trenutačna pozicija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako ljuska ne izvršava ljuskinu funkciju\n"
+"    ili je IZRAZ nevaljani."
 
 #: builtins.c:387
 msgid ""
@@ -2605,6 +2784,42 @@ msgid ""
 "when\n"
 "    -P is used; non-zero otherwise."
 msgstr ""
+"Promjeni trenutačni direktorij.\n"
+"\n"
+"    Promijeni trenutačni direktorij u dȃni DIREKTORIJ. Zadano, DIREKTORIJ\n"
+"    je vrijednost varijable HOME.\n"
+"\n"
+"    Varijabla CDPATH definira staze (direktorije) po kojima se\n"
+"    traži dȃni DIREKTORIJ.\n"
+"\n"
+"    Nazivi direktorija (staza) u CDPATH su razdvojeni s dvotočkom (:);\n"
+"    prazni naziv za direktorij je isto kao i trenutačni direktorij (.).\n"
+"    Ako dȃni DIREKTORIJ započinje s kosom crtom (/), onda se CDPATH\n"
+"    ne koristi.\n"
+"\n"
+"    Ako se dȃni direktorij ne pronađe, a omogućena je opcija „cdable_vars“,\n"
+"    tada se dȃna riječ uzme kao ime varijable; ako ta varijabla sadrži\n"
+"    naziv, „cd“ prijeđe u direktorij s tim nazivom.\n"
+"\n"
+"    Opcije:\n"
+"      -L    slijedi simboličke veze; simboličke veze u DIREKTORIJu\n"
+"              razriješi nakon procesiranja „..“ instancije DIREKTORIJa;\n"
+"              opcija „-L“ je aktivna u zadanom (početnom) stanju\n"
+"      -P    rabi fizičku strukturu direktorija umjesto da slijedi\n"
+"              simboličke veze; simboličke veze DIREKTORIJa\n"
+"              razriješi prije procesiranja „..“ instancije DIREKTORIJa\n"
+"      -e    ako je dȃna s opcijom „-P“, i trenutačni radni direktorij nije\n"
+"              moguće uspješno odrediti nakon uspješne promjene direktorija,\n"
+"              „cd“ završi s kȏdom različitim od 0.\n"
+"      -@    opiše proširene atribute povezane s datotekom kao direktorij\n"
+"              koji sadrži atribute datoteke (ako sustav to podržava)\n"
+"\n"
+"    Token „..“ se procesira uklanjanjem komponente staze koja mu neposredno\n"
+"    prethodi unatrag do kose crte „/“ ili do početka DIREKTORIJA.\n"
+"\n"
+"    Završi s kȏdom 0 ako je direktorij promijenjen i ako je\n"
+"    varijabla okoline PWD uspješno postavljena kȁd je dȃna opcija „-P“;\n"
+"    u suprotnom završi s kȏdom 1."
 
 #: builtins.c:425
 msgid ""
@@ -2621,6 +2836,16 @@ msgid ""
 "    Returns 0 unless an invalid option is given or the current directory\n"
 "    cannot be read."
 msgstr ""
+"Ispiše ime trenutačnoga radnog direktorija.\n"
+"\n"
+"    Opcije:\n"
+"      -L   ispiše vrijednost od $PWD ako sadrži trenutačni radni direktorij\n"
+"      -P   ispiše stvarnu fizičku stazu do direktorija bez simboličkih veza\n"
+"\n"
+"    U zadanom stanju „pwd“ se ponaša kao da je aktivna „-L“ opcija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako nije dȃna nevaljana opcija\n"
+"    ili se trenutačni radni direktorij ne može pročitati."
 
 #: builtins.c:442
 msgid ""
@@ -2630,13 +2855,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Always succeeds."
-msgstr ""
-"Prazna naredba.\n"
-"    \n"
-"    Nema efekta, ova naredba ne radi ništa.\n"
-"    \n"
-"    Izlazno stanje:\n"
-"    Uvijek uspješno."
+msgstr "Naredba nema nikakvog efekta, ne radi ništa; uvijek završi s kȏdom 0."
 
 #: builtins.c:453
 msgid ""
@@ -2644,11 +2863,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Always succeeds."
-msgstr ""
-"Vrati uspješan rezultat.\n"
-"    \n"
-"    Izlazno stanje:\n"
-"    Uvijek uspješno."
+msgstr "Uvijek završi uspješno s kȏdom 0."
 
 #: builtins.c:462
 msgid ""
@@ -2656,11 +2871,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Always fails."
-msgstr ""
-"Vrati neuspješan rezultat.\n"
-"    \n"
-"    Izlazno stanje:\n"
-"    Uvijek neuspješno."
+msgstr "Uvijek završi neuspješno s kȏdom 1."
 
 #: builtins.c:471
 msgid ""
@@ -2680,6 +2891,20 @@ msgid ""
 "    Exit Status:\n"
 "    Returns exit status of COMMAND, or failure if COMMAND is not found."
 msgstr ""
+"Izvrši jednostavnu naredbu ili pokaže informacije o naredbama.\n"
+"\n"
+"    Izvrši dȃnu NAREDBU s dȃnim ARGUMENTIMA ignorirajući pritom bilo\n"
+"    koju funkciju ljuske s istim imenom (naredba). Može se koristiti da\n"
+"    pokrenete naredbu na disku i onda kȁd postoji funkcija s istim imenom.\n"
+"\n"
+"    Opcije:\n"
+"      -p   rabi zadanu vrijednost za PATH kao garanciju\n"
+"             pronalaženja svih standardnih programa\n"
+"      -v   ispiše opis NAREDBE, slično kao „type“ builtin\n"
+"      -V   ispiše opširniji opis svake dȃne NAREDBE\n"
+"\n"
+"    Završi s izlaznim statusom NAREDBE\n"
+"    ili s 1 ako NAREDBA nije pronađena."
 
 #: builtins.c:490
 msgid ""
@@ -2700,11 +2925,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2720,17 +2945,50 @@ msgid ""
 "    Returns success unless an invalid option is supplied or a variable\n"
 "    assignment error occurs."
 msgstr ""
+"Postavlja vrijednosti i atribute varijablama.\n"
+"\n"
+"    Deklarira varijable i dodjeljuje im atribute. Ako IMEna nisu dȃna,\n"
+"    prikaže atribute i vrijednosti svih varijabli.\n"
+"\n"
+"    Opcije:\n"
+"      -f   prikaže samo definirane funkcije (ne pokaže varijable)\n"
+"      -F   prikaže samo imena funkcija bez definicija\n"
+"      -g   kreira globalne varijable samo za upotrebu u funkciji ljuske;\n"
+"             inače se ignoriraju\n"
+"      -p   prikaže atribute i vrijednost za svako dȃno IME\n"
+"\n"
+"    Atributi:\n"
+"      -a   učini od dȃnih IMEna indeksirana polja (ako je to podržano)\n"
+"      -A   učini od dȃnih IMEna asocijativna polja (ako je to podržano)\n"
+"      -i   učini da dȃna IMEna dobiju „integer“ svojstva\n"
+"      -l   pretvori slova dȃnih IMEna u mala slova prilikom upotrebe\n"
+"      -n   učini dȃno IME referencijom na drugu varijablu s imenom\n"
+"             jednakim „vrijednost od varijable IME“\n"
+"      -r   učini dȃna IMEna readonly\n"
+"      -t   učini da dȃna IMEna dobiju „trace“ svojstva\n"
+"      -u   pretvori slova dȃnih IMEna u velika slova prilikom upotrebe\n"
+"      -x   označi dȃna IMEna za ekport\n"
+"\n"
+"    „+“ umjesto „-“ isključi dȃni atribut.\n"
+"\n"
+"    Varijable s „integer“ atributom obavljaju aritmetičke operacije tijekom\n"
+"    izvođenja i upotrebe (pogledajte „let“ naredbu).\n"
+"\n"
+"    Unutar funkcije „declare“ učini dȃna IMEna lokalnima, slično kao\n"
+"    naredba „local“. Opcija „-g“ spriječi takvo ponašanje.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška prilikom zadavanja varijabli."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
 "    A synonym for `declare'.  See `help declare'."
 msgstr ""
 "Postavi vrijednosti i svojstva varijabli.\n"
-"    \n"
-"    Zastarjelo. Pogledajte „help declare”."
+"\n"
+"    Sinonim za „declare“.  Za detalje upišite „help declare“."
 
 #: builtins.c:538
 msgid ""
@@ -2746,8 +3004,19 @@ msgid ""
 "    Returns success unless an invalid option is supplied, a variable\n"
 "    assignment error occurs, or the shell is not executing a function."
 msgstr ""
+"Definira lokalne varijable.\n"
+"\n"
+"    Kreira lokalnu varijablu IME i dodijeli joj vrijednost. OPCIJA\n"
+"    može biti bilo koja od opcija koju prihvaća naredba „declare“.\n"
+"\n"
+"    Lokalne varijable mogu se koristiti samo unutar neke funkcije a\n"
+"    vidljive su samo funkciji u kojoj su definirane i njezinim potomcima.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako su dȃne nevaljane opcije,\n"
+"    dogodila se greška pri dodijeli ili ljuska ne izvrši funkciju."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2776,12 +3045,47 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
+"Dȃne argumente ispiše na standardni izlaz.\n"
+"\n"
+"    Ispiše dȃne argumente na standardni izlaz, međusobno odvojene s\n"
+"    jednim razmakom (bjelina) i na kraju s novim retkom.\n"
+"\n"
+"    Opcije:\n"
+"      -n   ne pripoji novi redak (znak novog retka)\n"
+"      -e   interpretira sljedeće sekvencije maskirane\n"
+"             s obratnom kosom crtom (backslash escapes)\n"
+"      -E   ne interpretira sekvencije maskirane\n"
+"             s obratnom kosom crtom (backslash escapes)\n"
+"\n"
+"    „echo“ interpretira ove kontrolne kodove (sekvencije maskirane\n"
+"    s obratnom kosom crtom — backslash escapes):\n"
+"      \\a   alert (zvučni signal)\n"
+"      \\b   backspace\n"
+"      \\c   spriječi daljni izlaz\n"
+"      \\e   znak za escape (ESC)\n"
+"      \\E   znak za escape (ESC)\n"
+"      \\f   nova stranica (znak za FF, form feed)\n"
+"      \\n   novi redak (znak za LF, line feed)\n"
+"      \\r   na početak novoga retka (Enter, znak za CR, carriage return)\n"
+"      \\t   horizontalni tabulator\n"
+"      \\v   vertikalni tabulator\n"
+"      \\\\     backslash (\\)\n"
+"      \\0NNN   znak s ASCII kȏdom NNN (oktalni, 1 do 3 znamenke)\n"
+"      \\xHH    znak s ASCII kȏdom HH (heksadecimalni, 1 do 2 znamenke)\n"
+"\n"
+"    Završi s kȏdom 0 osim ako se ne dogodi greška pisanja."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2793,8 +3097,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
+"Ispiše argumente na standardni izlaz.\n"
+"\n"
+"    Prikaže ARGUMENTE na standardnom izlazu (pripoji im znak za novi "
+"redak).\n"
+"    Opcijom „-n“ može se isključiti pripajanje znaka za novi redak.\n"
+"\n"
+"    Završi s kȏdom 0 ako se ne dogodi greška pisanja."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2820,8 +3131,33 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
+"Omogući ili onemogući ugrađene opcije ljuske.\n"
+"\n"
+"    Aktivira i deaktivira ugrađene opcije ljuske. Deaktiviranje vam\n"
+"    omogućava pokrenuti naredbu na disku s istim imenom kao ugrađena\n"
+"    komanda bez potrebe specificiranja kompletne staze.\n"
+"\n"
+"    Opcije:\n"
+"      -a   ispiše ugrađene naredbe i pokaže jesu ili nisu omogućene\n"
+"      -n   onemogući IMEnovane naredbe ili izlista onemogućene naredbe\n"
+"      -p   generira izlaz koji se može koristi za ulaz (zadano)\n"
+"      -s   ispiše samo imena specijalnih POSIX ugrađenih naredbi\n"
+"\n"
+"    Opcije koje upravljaju dinamičko učitavanje:\n"
+"      -f   učita ugrađenu naredbu IME iz dijeljenoga objekta DATOTEKA\n"
+"      -d   ukloni ugrađenu naredbu učitanu s „-f“\n"
+"\n"
+"    Bez opcija, omogućena su sva dȃna IMEna. Bez imena prikazane su\n"
+"    omogućene naredbe (ili s „-n“ onemogućene).\n"
+"\n"
+"    Primjer: da koristite binarnu datoteku „test“ koja se nalazi na putu\n"
+"    pretraživanja PATH, umjesto ugrađene (test) naredbe, upišite\n"
+"    „enable -n test“.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako IME nije ugrađena naredba\n"
+"    ili se nije dogodila greška."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2832,8 +3168,14 @@ msgid ""
 "    Exit Status:\n"
 "    Returns exit status of command or success if command is null."
 msgstr ""
+"Izvrši argumente kao naredbu ljuske.\n"
+"\n"
+"    Združi argumente u jedinstveni string, upotrijebi ga kao ulaz za ljusku\n"
+"    i izvrši rezultirajuću naredbu.\n"
+"\n"
+"    Završi s kȏdom naredbe ili uspješno ako je naredba prazna."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2873,8 +3215,48 @@ msgid ""
 "    Returns success if an option is found; fails if the end of options is\n"
 "    encountered or an error occurs."
 msgstr ""
+"Analiza argumenata opcija.\n"
+"\n"
+"    Procedure ljuske koriste „getopts“ za analizu položajnih parametara\n"
+"    kao opcije.\n"
+"    \n"
+"    OPCIJA_STRING sadrži slova opcije koje treba prepoznati; ako iza\n"
+"    slova slijedi dvotočka, očekuje se da opcija ima argument koji treba\n"
+"    biti bjelinom odvojen od opcije.\n"
+"\n"
+"    Svaki put kȁd se pozove, getopts će smjestiti sljedeću opciju u "
+"ljuskinu\n"
+"    varijablu IME (ako IME ne postoji, getopts ga inicijalizira), a indeks\n"
+"    sljedećeg argumenta koji treba procesirati u ljuskinu varijablu OPTIND.\n"
+"    OPTIND je inicijaliziran na 1 pri svakom pozivanju ljuske ili ljuskine\n"
+"    skripte. Ako opcija zahtijeva argument, getopts smjesti taj argument u\n"
+"    ljuskinu varijablu OPTARG.\n"
+"\n"
+"    getopts javlja greške na jedan od dva načina. Ako je dvotočka prvi znak "
+"u\n"
+"    OPCIJA_STRING, getopts tiho prijavi grešku (ne ispisuje poruke o "
+"greškama).\n"
+"    Ako naiđe na nevaljanu opciju, getopts smjesti nađeni znak opcije u "
+"OPTARG.\n"
+"    Ako zahtijevani argument nije pronađen, getopts smjesti „:“ u IME i "
+"postavi\n"
+"    OPTARG na pronađeni znak opcije. Ako getopts ne radi tiho i naiđe na\n"
+"    nevaljanu opciju, getopts smjesti „?“ u IME i poništi OPTARG.\n"
+"    Ako zahtijevani argument nije pronađen, getopts smjesti „?“ u IME, "
+"poništi\n"
+"    OPTARG i ispiše poruku o greškama.\n"
+"\n"
+"    Ako ljuskina varijabla OPTERR ima vrijednost 0, getopts onemogući ispis\n"
+"    poruka o greškama, čak i kȁd prvi znak u OPCIJA_STRING nije dvotočka.\n"
+"    Zadano, OPTERR ima vrijednost 1.\n"
+"\n"
+"    Obično getopts analizira položajne parametre ($0 - $9), ali ako je\n"
+"    dȃno više argumenata, onda analizira te argumente.\n"
+"\n"
+"    Završi s kȏdom 0 ako pronađe opciju; ako naiđe na kraj opcija\n"
+"    ili ako se dogodi greška, završi s neuspjehom."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2896,20 +3278,35 @@ msgid ""
 "    Returns success unless COMMAND is not found or a redirection error "
 "occurs."
 msgstr ""
+"Zamjeni ljusku s dȃnom naredbom.\n"
+"\n"
+"    Izvrši dȃnu NAREDBU, zamijenivši ovu ljusku s ovim programom.\n"
+"    Eventualni ARGUMENTI postanu argumenti NAREDBE. Ako NAREDBA nije\n"
+"    specificirana, sva preusmjeravanja se dogode u trenutačnoj ljusci.\n"
+"\n"
+"    Opcije:\n"
+"      -a IME   dȁde IME kao nulti argument NAREDBI\n"
+"      -c       izvrši NAREDBU u praznoj okolini\n"
+"      -l       smjesti spojnicu („-“) kao nulti argument NAREDBI\n"
+"\n"
+"    Ako se naredba ne može izvršiti, ne-interaktivna ljuska završi,\n"
+"    osim ako je aktivna opcija ljuske „execfail“.\n"
+"\n"
+"    Završi s kȏdom 0, osim ako NAREDBA nije pronađena,\n"
+"    ili se dogodila greška preusmjeravanja."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
 "    Exits the shell with a status of N.  If N is omitted, the exit status\n"
 "    is that of the last command executed."
 msgstr ""
-"Izađi iz ljuske.\n"
-"    \n"
-"    Izlazi iz ljuske sa stanjem N. Ako N nije naveden, izlazno stanje je\n"
-"    isto kao i stanje zadnje izvršene naredbe."
+"Izlaz iz ljuske.\n"
+"\n"
+"    Završi s kȏdom N. Bez N završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2917,12 +3314,11 @@ msgid ""
 "executed\n"
 "    in a login shell."
 msgstr ""
-"Izađi iz prijavne ljuske.\n"
-"    \n"
-"    Izlazi iz prijavne ljuske s izlaznim stanjem N. Vraća grešku ako nije\n"
-"    izvršeno u prijavnoj ljusci."
+"Izlaz iz prijavne ljuske.\n"
+"\n"
+"    Završi s kȏdom N. Završi s greškom ako to nije prijavna ljuska."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2951,8 +3347,27 @@ msgid ""
 "    Returns success or status of executed command; non-zero if an error "
 "occurs."
 msgstr ""
+"Prikaže ili izvrši naredbe iz popisa povijesti.\n"
+"\n"
+"    Koristi se za prikazivanje dosadašnjih, za uređivanje, ili za ponovno\n"
+"    pokretanje naredbi. PRVA i ZADNJA mogu biti brojevi koji specificiraju\n"
+"    raspon, ili PRVA može biti string koji pokazuje na posljednju naredbu\n"
+"    čije ime započinje sa stringom.\n"
+"\n"
+"    Opcije:\n"
+"      -e EDITOR  ime EDITORA koji će se koristi; zadano, koristi se FCEDIT,\n"
+"                   zatim EDITOR ili konačno „vi“\n"
+"      -l         izlista popis naredbi (umjesto uređivanja)\n"
+"      -n         popis bez brojeva\n"
+"      -r         popis s obrnutim redoslijedom (najnovija prvo)\n"
+"\n"
+"    Prikladni alias s ovom funkcijom je r='fc -s'. Tako uneseni „r“ izvrši\n"
+"    ponovno posljednju naredbu, a uneseni „r cc“ izvrši posljednju naredbu\n"
+"    koja započinje s „cc“.\n"
+"\n"
+"    Završi s kȏdom izvršene naredbe; različito od 0 ako se dogodi greška."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2963,8 +3378,16 @@ msgid ""
 "    Exit Status:\n"
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
+"Premjesti posao u interaktivni način.\n"
+"\n"
+"    Smjesti posao JOBSPEC u interaktivni način i učini ga\n"
+"    trenutačnim poslom. Bez dȃnoga JOBSPEC, ljuska rabi svoj pojam\n"
+"    o trenutačnom poslu.\n"
+"\n"
+"    Završi s kȏdom naredbe smještene u interaktivni način\n"
+"    ili s neuspjehom ako se dogodi greška."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -2977,8 +3400,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
+"Premjesti poslove u pozadinu.\n"
+"\n"
+"    Smjesti poslove idenificirane sa svakim JOBSPEC u pozadinu, kao da su\n"
+"    pokrenuti s „&“. Bez dȃnih JOBSPEC, ljuska rabi svoj pojam\n"
+"    o trenutačnom poslu.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako kontrola nad poslovima nije omogućena\n"
+"    ili se dogodila greška."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3001,8 +3432,25 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
+"Zapamti ili prikaže lokacije programa.\n"
+"\n"
+"    Odredi i zapamti apsolutnu stazu za svaku naredbu IME. Ako nisu\n"
+"    dȃni argumenti, prikaže informacije o zapamćenim naredbama.\n"
+"\n"
+"    Opcije:\n"
+"      -d            zaboravi zapamćene lokacije za svako IME\n"
+"      -l            generira izlaz koji se može koristi za ulaz\n"
+"      -p IME_STAZE  rabi IME_STAZE kao kao apsolutnu stazu za IME\n"
+"      -r            zaboravi sve zapamćene lokacije\n"
+"      -t            ispiše zapamćene lokacije za svako IME\n"
+"                      (s prefiksom IME ako je dȃno više IMEna)\n"
+"    Svako dȃno IME se traži u $PATH i doda se popisu zapamćenih\n"
+"    naredbi.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako nije pronađeno IME\n"
+"    ili je dȃna nevaljana opcija."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3017,14 +3465,28 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
+"Prikaže informacije o ugrađenim (builtin) naredbama.\n"
+"\n"
+"    Prikaže kratke sažetke o ugrađenim naredbama. Ako je specificirani\n"
+"    UZORAK, pokaže detaljnu pomoć za sve naredbe koje podudare UZORAK,\n"
+"    inače ispiše popis tema za koje možete potražiti detalje.\n"
+"\n"
+"    Opcije:\n"
+"      -d   ukratko opisano djelovanje naredbe\n"
+"      -m   prikaže uporabu u pseudo manpage formatu\n"
+"      -s   prikaže samo sinopsis uporabe za svaku\n"
+"             naredbu koja podudara UZORAK\n"
+"\n"
+"    Završi s kȏdom 0 osim ako UZORAK nije pronađen,\n"
+"    ili je dȃna nevaljana opcija."
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3033,7 +3495,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3057,8 +3520,39 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
+"Prikaže ili manipulira povijest naredbi.\n"
+"\n"
+"    Prikaže numerirani popis izvršenih naredbi (povijest); ispred\n"
+"    modificiranih stavki stoji prefiks „*“. Ako je dȃn argument N,\n"
+"    ispiše N najmlađih (zadnjih) redaka povijesti.\n"
+"\n"
+"    Opcije:\n"
+"      -c   počisti povijest iz memorije; zaboravi sve izvršene naredbe\n"
+"      -d   POZICIJA  izbriše redak povijesti na POZICIJI\n"
+"\n"
+"      -a   pripoji trenutačnu povijest „povijesnoj“ datoteci\n"
+"      -n   pripoji sve nepročitane retke povijesne datoteke\n"
+"             trenutačnom popisu povijesti\n"
+"      -r   pročita i pripoji povijesnu datoteku\n"
+"             trenutačnom popisu povijesti\n"
+"      -w   trenutačnu povijest zapiše u povijesnu datoteku\n"
+"\n"
+"      -p   proširi povijest na svakom ARGUMENTU i prikaže rezultat\n"
+"             bez spremanja u povijesni popis\n"
+"      -s   Pripoji ARGUMENTe popisu povijesti kao pojedinačne stavke \n"
+"\n"
+"    Kao povijesna datoteka koristi se DATOTEKA ako je dȃna; ako nije dȃna,\n"
+"    koristi se varijabla HISTFILE (ako ima vrijednost), inače se koristi\n"
+"    ~/.bash_history.\n"
+"\n"
+"    Ako HISTTIMEFORMAT varijabla postoji i nije nula, njezinu vrijednost\n"
+"    koristi strftime(3) kao format string za ispis vremenskih oznaka\n"
+"    povijesnih stavki; inače, vremenske oznake se ne ispisuju.\n"
+"\n"
+"    Završi s statusom 0 osim ako nije dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3081,8 +3575,27 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
+"Prikaže status poslova.\n"
+"\n"
+"    Izlista aktivne poslove. JOBSPEC ograniči izlaz na taj posao.\n"
+"    Bez opcija, prikaže status svih aktivnih poslova.\n"
+"\n"
+"    Opcije:\n"
+"      -l   pokaže i ID-ove procesa uz uobičajene informacije\n"
+"      -n   pokaže samo procese koji su se promijenili od zadnjeg izvješća\n"
+"      -p   pokaže samo ID-ove procesa\n"
+"      -r   ograniči izlaz samo na trenutačno pokrenute poslove\n"
+"      -s   ograniči izlaz samo na zaustavljene poslove\n"
+"\n"
+"    Ako je dȃna opcija -x, „jobs“ zamijeni svaki JOBSPEC\n"
+"    pronađen u NAREDBI ili u ARGUMENTIMA s odgovarajućim\n"
+"    ID-om procesne grupe i izvrši NAREDBU s ARGUMENTIMA.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija ili se dogodila "
+"greška.\n"
+"    Ako je dȃna opcija -x, završi sa izlaznim statusom NAREDBE."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3098,8 +3611,22 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
+"Ukloni poslove iz trenutačne ljuske.\n"
+"\n"
+"    Ukloni svaki JOBSPEC argument iz tablice aktivnih poslova.\n"
+"    Bez ikakvih JOBSPEC ljuska rabi svoj pojam o trenutačnom\n"
+"    poslu.\n"
+"\n"
+"    Opcije:\n"
+"      -a   ukloni sve poslove ako nije dȃni JOBSPEC\n"
+"      -h   označi svaki JOBSPEC tako da se SIGHUP ne šalje\n"
+"           poslu ako ljuska primi SIGHUP\n"
+"      -r   ukloni samo pokrenute poslove\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili nije dȃni JOBSPEC."
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3121,8 +3648,29 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
+"Pošalje signal poslu.\n"
+"\n"
+"    Pošalje signal dȃn u SIGSPEC ili SIGNUM procesima koji su\n"
+"    identificirani s PID-om ili s JOBSPEC. Ako nije\n"
+"    dȃn nijedan signal (ni SIGSPEC ni SIGNUM), pošalje se SIGTERM.\n"
+"\n"
+"    Opcije:\n"
+"      -s IME   IME je ime signala koji se šalje\n"
+"      -n BROJ  BROJ je broj signala koji se šalje\n"
+"      -l       izlista imena dostupnih signala; ako su dȃni argumenti iza\n"
+"               „-l“, to su brojevi signala čija odgovarajuća imena\n"
+"               treba ispisati\n"
+"      -L       isto kao -l\n"
+"\n"
+"    „kill“ je ugrađena ljuskina naredba iz dva razloga: dopušta vam da se\n"
+"    koristi ID posla umjesto ID procesa i također vam dopušta ubiti procese\n"
+"    iako ste dostigli vaše ograničenje broja procesa koje možete kreirati;\n"
+"    tj. ne morate pokrenuti novi proces da ubijete prekobrojne procese.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3166,8 +3714,48 @@ msgid ""
 "    Exit Status:\n"
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
+"Evaluira aritmetičke izraze.\n"
+"\n"
+"    Evaluira svaki ARGUMENT kao aritmetički izraz. Evaluacija se\n"
+"    obavlja za cijele brojeve fiksne širine bez provjere prelijevanja.\n"
+"    Ipak, dijeljenje s nulom se detektira i prijavi kao greška.\n"
+"\n"
+"    Popis koji slijedi opisuje operatore s jednakim prioritetom u\n"
+"    istoj grupi, a grupe su poredane po opadajućemu prioritetu.\n"
+"\n"
+"        var++, var--    post-increment, post-decrement varijable\n"
+"        ++var, --var    pre-increment, pre-decrement varijable\n"
+"        -, +            unarni minus, unarni plus\n"
+"        !, ~            logička i bitovska negacija\n"
+"        **              potenciranje\n"
+"        *, /, %         množenje, dijeljenje, ostatak dijeljenja\n"
+"        +, -            zbrajanje, oduzimanje\n"
+"        <<, >>          pomak za bit ulijevo i udesno\n"
+"        <=, >=, <, >    usporedba\n"
+"        ==, !=          jednako, nejednako\n"
+"        &               bitovski AND\n"
+"        ^               bitovski XOR\n"
+"        |               bitovski OR\n"
+"        &&              logički AND\n"
+"        ||              logički OR\n"
+"\n"
+"        expr ? expr : expr    uvjetni izraz\n"
+"\n"
+"        =, *=, /=, %=, +=, -=, <<=, >>=,  &=, ^=, |=    pridruživanje\n"
+"\n"
+"    Varijable ljuske su dopuštene kao parametri. Ime varijable se zamijeni\n"
+"    s njezinom vrijednošću (ako treba, pretvori se u cijeli broj).\n"
+"    Varijable, za upotrebu u izrazima, ne moraju imati atribut cijelog\n"
+"    broja.\n"
+"\n"
+"    Operatori se evaluiraju prema pravilima prioriteta. Najprije se\n"
+"    evaluiraju pod-izrazi u zagradama i tako mogu prevagnuti nad gore\n"
+"    opisanim pravilima prioriteta.\n"
+"\n"
+"    Ako zadnji ARGUMENT evaluira na 0 (nula), „let“ završi s kȏdom 1;\n"
+"    inače završi s kȏdom 0."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3188,7 +3776,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3218,8 +3806,49 @@ msgid ""
 "occurs,\n"
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
+"Pročita redak iz standardnoga ulaza i razdijeli ga na polja.\n"
+"\n"
+"    Pročita jedan redak iz standardnoga ulaza (ili dȃnoga deskriptora "
+"datoteke\n"
+"    FD ako je dȃna opcija „-u“) i dodijeli prvu riječ prvom IMEnu, drugu "
+"riječ\n"
+"    drugom IMEnu, i tako dalje; višak riječi dodijeli je zadnjem IMEnu\n"
+"    Samo znakovi sadržani u  varijabli IFS prepoznaju se kao MEĐA\n"
+"    (razdjelnik riječi). Ako nije dȃno nijedno IME, pročitani redak se\n"
+"    spremi u varijablu REPLY.\n"
+"\n"
+"    Opcije:\n"
+"      -a POLJE   pročitane riječi dodijeli sekvencijalno indeksima POLJA\n"
+"                   počevši od nule\n"
+"      -d MEĐA    nastavi čitati sve dok ne pročita prvu MEĐU (umjesto LF "
+"znaka)\n"
+"      -e           rabi „readline“ za dobaviti redak\n"
+"      -i TEKST   rabi TEKST kao početni tekst za „readline“\n"
+"      -n BROJ    zaustavi čitanje nakon pročitanih ne više od BROJ znakova\n"
+"                   ili nakon LF znaka (umjesto da uvijek čeka na LF znak)\n"
+"      -N BROJ    zaustavi čitanje samo nakon pročitanih ne više od BROJ\n"
+"                   znakova ili nakon EOF znaka ili nakon isteka „t SEKUNDA\n"
+"      -p PROMPT  ispiše string PROMPT kao prompt (bez završnog znaka novog\n"
+"                    retka) prije početka čitanja retka\n"
+"      -r         onemogući maskiranje kódova s obratnom kosom crtom\n"
+"      -s         siguran ulaz — ne odjekuje ulaz na terminal\n"
+"      -t BROJ    nakon isteka BROJ SEKUNDI prestane čekati na ulaz i završi\n"
+"                   s kȏdom većim od 128; zadano, broj sekundi čekanja je\n"
+"                   vrijednost varijable TMOUT; BROJ može biti i realni "
+"broj;\n"
+"                   Ako je BROJ = 0, „read“ završi odmah bez da išta čita, a\n"
+"                   samo ako je ulaz dostupni na specificiranom deskriptoru\n"
+"                   datoteke Završi s kȏdom 0\n"
+"\n"
+"      -u FD      čita iz deskriptora datoteke FD umjesto iz standardnoga "
+"ulaza\n"
+"\n"
+"      Završi s kȏdom 0 osim ako ne naiđe na konac datoteke\n"
+"      (EOF), ili je isteklo vrijeme čekanja, ili se dogodila greška\n"
+"      pri dodjeli, ili je specificirani nevaljani deskriptor datoteke\n"
+"      kao argument opciji „-u“."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3230,8 +3859,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
+"Povrat iz funkcije ljuske.\n"
+"\n"
+"    Učini da funkcija ili pokrenuta skripta završi sa izlaznom vrijednošću\n"
+"    specificiranom s N. Ako N nije dȃn, završi s kȏdom zadnje naredbe\n"
+"    izvršene unutar funkcije ili skripte.\n"
+"\n"
+"    Vrati vrijednost N ili 1 ako ljuska ne izvrši\n"
+"    funkciju ili skriptu."
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3316,8 +3953,88 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 msgstr ""
+"Postavi vrijednosti opcija ljuske i položajnih parametara.\n"
+"\n"
+"    Omogući/onemogući svojstva ljuske ili mijenja vrijednosti položajnih\n"
+"    parametara. Bez opcija ili argumenata „set“ prikaže imena i vrijednosti\n"
+"    svih definiranih varijabli i funkcija u formatu upotrebljivom kao\n"
+"    ulaz za postavljanje/poništavanje trenutačno postavljenih varijabli.\n"
+"    Dostupne su sljedeće opcije („+“ umjesto „-“ isključi dȃnu opciju):\n"
+"\n"
+"      -a  automatski eksportira nove ili modificirane varijable i funkcije\n"
+"      -B  izvrši brace expansion, npr. echo a{d,c}e -> ade, ace (zadano)\n"
+"      -b  odmah prijavi prekid posla (ne čeka da završi trenutna naredba)\n"
+"      -C  onemogući da preusmjereni eksport piše preko regularnih datoteka\n"
+"      -E  omogući da bilo koji ERR „trap“ naslijede funkcije ljuske i "
+"potomci\n"
+"      -e  završi odmah ako naredba završi s kȏdom različitim od nula\n"
+"      -f  onemogući zamjenske znakove za imena datoteka (isključi "
+"„globbing“)\n"
+"      -H  omogući upotrebu znaka „!“ za supstituciju povijesti naredbi\n"
+"      -h  pamti (apslolutne) lokacije izvršenih naredbi (zadano)\n"
+"      -k  smjesti sve argumente dodijeljene varijablama u okolinu\n"
+"            (a ne samo one koje prethode imenu naredbe)\n"
+"      -m  kontrola nad poslovima je omogućena (zadano)\n"
+"      -n  pročita, ali ne izvrši naredbe („testiranje“)\n"
+"      -o IME_OPCIJE  omogući IME_OPCIJU (v. niže za dugačka imena opcija)\n"
+"      -P  ne razriješi simboličke veze pri izvršavanju naredbi poput „cd“\n"
+"            koje promjene trenutačni direktorij\n"
+"      -p  uključi privilegirani mȏd: datoteke BASH_ENV i ENV se ignoriraju,\n"
+"            funkcije ljuske se ne importiraju iz okoline, a ignoriraju se i\n"
+"            sve SHELLOPTS; taj mȏd se automatski aktivira kȁd god se realni\n"
+"            i efektivni UID i GID ne podudaraju. Isključivanje ove opcije\n"
+"            učini da je efektivni UID i GID isti kao i realni UID i GID.\n"
+"      -T  DEBUG i RETURN „trap“ naslijede funkcije ljuske i potomci\n"
+"      -t  završi nakon čitanja i izvršenja jedne naredbe\n"
+"      -u  nepostojeće varijable tretira kao grešku kȁd supstituira\n"
+"      -v  ispisuju ulaz (odjekuje ih) istovremeno s čitanjem\n"
+"      -x  ispisuje naredbe s argumentima istovremeno s izvršavanjem\n"
+"      --  argumenti koji slijede su položajni parametri; ako ih nema,\n"
+"            postojeći položajni argumenti se brišu (uklanjaju se)\n"
+"      -   isključi opcije -v i -x; argumenti koji slijede su položajni\n"
+"            parametri; ali ako ih nema, postojeći položajni argumenti\n"
+"            se ne brišu (ostaju)\n"
+"\n"
+"    Opcije se također mogu koristiti pri pokretanju ljuske. Postojeće\n"
+"    stanje opcija može se naći u $-. Za eventualne dodatne argumente iz\n"
+"    „set“ uzima se da su položajni parametri i dodjeljuje se, po redu, na\n"
+"    $1, $2, ... $N.\n"
+"\n"
+"    Dugački nazivi koji se koriste s opcijom -o (ili +o)\n"
+"      allexport    isto kao -a\n"
+"      braceexpand  isto kao -B  (brace ekspanzija, npr. echo a{d,c}e -> ade, "
+"ace\n"
+"      emacs        za uređivanje redaka koristi sučelje u „emacs“ stilu\n"
+"      errexit      isto kao -e\n"
+"      errtrace     isto kao -E\n"
+"      functrace    isto kao -T\n"
+"      hashall      isto kao -h\n"
+"      histexpand   isto kao -H\n"
+"      history      omogući naredbu „history“\n"
+"      ignoreeof    ignorira Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n"
+"      interactive-comments  dopusti komentiranje u interaktivnim naredbama\n"
+"      keyword      isto kao -k\n"
+"      monitor      isto kao -m\n"
+"      noclobber    isto kao -C\n"
+"      noexec       isto kao -n\n"
+"      noglob       isto kao -f\n"
+"      nolog        (prepoznata, ali se ignorira)\n"
+"      notify       isto kao -b\n"
+"      nounset      isto kao -u\n"
+"      onecmd       isto kao -t\n"
+"      physical     isto kao -P\n"
+"      pipefail     cjevovod vrati vrijednost izlaznog statusa zadnje "
+"neuspješne\n"
+"                     naredbe ili 0 ako su svi poslovi uspješno završeni\n"
+"      posix        striktno poštuje POSIX standard\n"
+"      privileged   isto kao -p\n"
+"      verbose      isto kao -v\n"
+"      vi           za uređivanje redaka koristi sučelje u „vi“ stilu\n"
+"      xtrace       isto kao -x\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3338,8 +4055,24 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
+"Ukloni vrijednosti i atribute varijabli i funkcija ljuske.\n"
+"\n"
+"    Za svako IME ukloni odgovarajuću varijablu ili funkciju\n"
+"\n"
+"    Opcije:\n"
+"      -f   tretira svako IME kao funkciju ljuske\n"
+"      -v   tretira svako IME kao varijablu ljuske\n"
+"      -n   tretira svako IME kao referenciju na neki objekt i ukloni\n"
+"             samu varijablu IME umjesto referiranog objekta\n"
+"\n"
+"    Bez dȃnih opcija, „unset“ prvo pokuša ukloniti varijablu, a ako to\n"
+"    ne uspije, onda pokuša ukloniti funkciju. Neke varijable nije moguće\n"
+"    ukloniti; pogledajte „readonly.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili IME je „samo-za-čitanje“."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3357,8 +4090,23 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
+"Postavi eksportni atribut na varijable ljuske.\n"
+"\n"
+"    Označi automatski svako dȃno IME za eksport u okolinu za naknadno\n"
+"    izvršavanje naredbi. Ako je dȃna VRIJEDNOST, dodijeli im VRIJEDNOST\n"
+"    prije eksportiranja.\n"
+"\n"
+"    Opcije:\n"
+"      -f   dȃna IMEna se odnose samo na funkcije\n"
+"      -n   ukloni eksportni atribut iz svakoga IMEna \n"
+"      -p   izlista popis svih eksportiranih varijabli i funkcija\n"
+"\n"
+"    Argument „--“ spriječi daljnje procesiranje opcija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili dȃno IME nije valjano."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3378,8 +4126,26 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
+"Označi varijable ljuske kao nepromjenjive.\n"
+"\n"
+"    Označi svako IME kao nepromjenjivo (readonly), tako da se vrijednosti\n"
+"    ovih IMEna ne može promijeniti kasnijim operacijama. Ako je dȃna\n"
+"    VRIJEDNOST, prvo mu dodijeli VRIJEDNOST, a zatim ga označi "
+"nepromjenjivim.\n"
+"\n"
+"    Opcije:\n"
+"      -a  svako IME se odnosi na varijable indeksiranoga polja\n"
+"      -A  svako IME se odnosi na varijable asocijativnoga polja\n"
+"      -f  svako IME se odnosi na funkcije ljuske\n"
+"      -p  prikaže popis svih nepromjenjivih varijabli ili funkcija\n"
+"            ovisno o opciji „-f“ (je li ili nije dȃna).\n"
+"\n"
+"    Argument „--“ onemogući daljnje procesiranje opcija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili je IME nevaljano."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3389,8 +4155,14 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
+"Pomakne položajne parametre.\n"
+"\n"
+"    Preimenuje položajne parametre $N+1,$N+2,... u $1,$2,...\n"
+"    Ako nije dȃni N, uzima se da je N = 1.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je N negativni ili veći od $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3403,8 +4175,17 @@ msgid ""
 "    Returns the status of the last command executed in FILENAME; fails if\n"
 "    FILENAME cannot be read."
 msgstr ""
+"Izvrši naredbe iz datoteke u trenutačnoj ljusci.\n"
+"\n"
+"    Čita i izvrši naredbe iz DATOTEKE u trenutačnoj ljusci.\n"
+"    Direktorij s DATOTEKOM traži se po stazama sadržanima u varijabli\n"
+"    PATH. Ako su dȃni ikoji ARGUMENTI, oni postaju položajni parametri\n"
+"    tijekom izvršavanja DATOTEKE.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe iz DATOTEKE,\n"
+"    ili sa statusom 1 ako se DATOTEKA ne može pročitati."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3417,8 +4198,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
+"Obustavi rad ljuske.\n"
+"\n"
+"    Obustavi rad u ovoj ljusci sve dok ne primi SIGCONT signal.\n"
+"    Ako nije prisiljena, rad prijavne ljuske se ne može obustaviti.\n"
+"\n"
+"    Opcije:\n"
+"      -f  prisili obustavu, čak i ako je to prijavna ljuska\n"
+"\n"
+"    Završi s kȏdom 0 osim ako kontrola nad poslovima nije omogućena\n"
+"    ili se dogodila greška."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3500,16 +4291,90 @@ msgid ""
 "    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
 "    false or an invalid argument is given."
 msgstr ""
+"Evaluira uvjetni izraz.\n"
+"\n"
+"    Evaluira dȃni IZRAZ; ovisno o rezultatu evaluacije, završi sa\n"
+"    statusom 0 (istina), ili 1 (neistina, laž). Izrazi mogu biti unarni\n"
+"    ili binarni. Unarni izrazi se često koriste za ispitivanje statusa\n"
+"    datoteke. Također postoje operatori za usporedbu stringova i brojeva.\n"
+"\n"
+"    Ponašanje od „test“ ovisi o broju argumenata. Potražite u „bash“\n"
+"    uputama detalje za uporabu.\n"
+"\n"
+"    Operatori za datoteke:\n"
+"        -a DATOTEKA       istina ako datoteka postoji\n"
+"        -b DATOTEKA       istina ako je datoteka blok uređaj\n"
+"        -c DATOTEKA       istina ako je datoteka znakovni uređaj\n"
+"        -d DATOTEKA       istina ako je datoteka direktorij\n"
+"        -e DATOTEKA       istina ako datoteka postoji\n"
+"        -f DATOTEKA       istina ako je datoteka regularna datoteka\n"
+"        -G DATOTEKA       istina ako je datoteka efektivno vlasništvo vaše "
+"grupe\n"
+"        -g DATOTEKA       istina ako je datoteka SETGUID\n"
+"        -h DATOTEKA       istina ako je datoteka simbolička veza\n"
+"        -k DATOTEKA       istina ako datoteka ima postavljeni \"sticky\" "
+"bit\n"
+"        -L DATOTEKA       istina ako je datoteka simbolička veza\n"
+"        -N DATOTEKA       istina ako se datoteka promijenila od zadnjeg "
+"čitanja\n"
+"        -O DATOTEKA       istina ako je datoteka efektivno vaše vlasništvo\n"
+"        -p DATOTEKA       istina ako je datoteka imenovana cijev\n"
+"        -r DATOTEKA       istina ako vi možete čitati datoteku\n"
+"        -S DATOTEKA       istina ako je datoteka utičnica\n"
+"        -s DATOTEKA       istina ako datoteka nije prazna\n"
+"        -t DESKRIPTOR     istina ako je deskriptor datoteke otvoren u "
+"terminalu\n"
+"        -u DATOTEKA       istina ako je datoteka SETUID\n"
+"        -w DATOTEKA       istina ako vi možete pisati datoteku\n"
+"        -x DATOTEKA       istina ako vi možete izvršiti datoteku\n"
+"\n"
+"      DTEKA1 -nt DTEKA2   istina ako je prva datoteka promijenjena\n"
+"                            kasnije od druge\n"
+"      DTEKA1 -ot DTEKA2   istina ako je prva datoteka promijenjena\n"
+"                            ranije od druge\n"
+"      DTEKA1 -ef DTEKA2   istina ako je prva datoteka čvrsta veza na drugu\n"
+"\n"
+"    Operatori za stringove:\n"
+"        -z STRING         istina ako je string prazni\n"
+"        -n STRING         istina ako string nije prazni\n"
+"        STRING            istina ako string nije prazni\n"
+"      STRING1 = STRING2   istina ako su stringovi jednaki\n"
+"      STRING1 != STRING2  istina ako stringovi nisu jednaki\n"
+"      STRING1 < STRING2   istina ako se leksikografski prvi string\n"
+"                            razvrsta ispred drugoga\n"
+"      STRING1 > STRING2   istina ako se leksikografski prvi string\n"
+"                            razvrsta iza drugoga\n"
+"\n"
+"    Ostali operatori:\n"
+"        -o OPCIJA         istina ako je ova OPCIJA ljuske omogućena\n"
+"        -v VARIJABLA      istina ako ova VARIJABLA ima vrijednost\n"
+"        -R VARIJABLA      istina ako je ova VARIJABLA referencija "
+"(nameref) \n"
+"        ! IZRAZ           istina ako IZRAZ neistiniti\n"
+"      IZRAZ1 -a IZRAZ2    istina ako su oba izraza istinita\n"
+"      IZRAZ1 -o IZRAZ2    laž ako su oba izraza neistinita\n"
+"      ARG1 OP ARG2        istina ako je aritmetika ispravna; operator OP je\n"
+"                            jedan od: -eq, -ne, -lt, -le, -gt, ili -ge;\n"
+"                            koji znače: jednako, nejednako, manje od, "
+"manje,\n"
+"                            ili jednako, veće od, veće ili jednako.\n"
+"\n"
+"    Završi s kȏdom 0 ako je IZRAZ istiniti, 1 ako je IZRAZ neistiniti,\n"
+"    ili 2 ako je dȃn nevaljani argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
 "    This is a synonym for the \"test\" builtin, but the last argument must\n"
 "    be a literal `]', to match the opening `['."
 msgstr ""
+"Provjeri uvjetni izraz.\n"
+"\n"
+"    To je sinonim za ugrađenu funkciju „test“, ali zadnji argument\n"
+"    mora biti zagrada „]“ kao par zagradi „[“ na početku."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3520,8 +4385,14 @@ msgid ""
 "    Exit Status:\n"
 "    Always succeeds."
 msgstr ""
+"Prikaže potrošnju vremena procesa.\n"
+"    \n"
+"    Prikaže ukupno potrošeno vrijeme korisnikom i sustavom; prvo, vrijeme\n"
+"    potrošeno samom ljuskom, a zatim svim potomcima pokrenutih ljuskom.\n"
+"\n"
+"    Završi uvijek s kȏdom 0."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3564,8 +4435,40 @@ msgid ""
 "    Returns success unless a SIGSPEC is invalid or an invalid option is "
 "given."
 msgstr ""
+"Prikupljanje (hvatanje) signala i drugih događaja.\n"
+"\n"
+"    Definira i aktivira postupke rukovanja koji se pokrenu kȁd ljuska\n"
+"    primi signal ili se dogodi neki drugi slučaj.\n"
+"\n"
+"    ARGUMENT je naredba koja se pročita i izvrši kȁd ljuska primi jedan od\n"
+"    specificiranih signala (SIGNAL_SPEC). Ako nema ARGUMENTA (i dȃn je samo\n"
+"    jedan signal), ili ARGUMENT je „-“, specificirani signal zadobije svoju\n"
+"    originalnu vrijednost (koju je imao na startu ove ljuske). Ako je "
+"ARGUMENT\n"
+"    prazni string, ljuska i njezini potomci ignoriraju svaki SIGNAL_SPEC.\n"
+"\n"
+"    Ako je SIGNAL_SPEC 0 ili EXIT, ARGUMENT se izvrši kȁd zatvorite\n"
+"    (exit) ljusku. Ako je SIGNAL_SPEC DEBUG, ARGUMENT se izvrši prije\n"
+"    svake jednostavne naredbe. Ako je SIGNAL_SPEC RETURN, ARGUMENT se\n"
+"    izvrši svaki put kȁd funkcija ljuske ili skripta izvršena s . ili\n"
+"    „ugrađeni source“ završi izvršavanje. SIGNAL_SPEC ERR znači da se\n"
+"    ARGUMENT izvrši nakon neuspješne naredbe koja bi uzrokovala da ljuska\n"
+"    završi (exit) kȁd je opcija „-e“ omogućena.\n"
+"\n"
+"    Bez argumenta, „trap“ izlista popis koji pokaže asocijaciju\n"
+"    između naredbi i signala.\n"
+"\n"
+"    Opcije:\n"
+"      -l   popis imena signala i njihov odgovarajući broj\n"
+"      -p   pokaže koja naredba je povezana na svaki dȃni signal\n"
+"\n"
+"    Svaki je SIGNAL_SPEC ili ime signala iz <signal.h> ili broj signala.\n"
+"    Signal se može poslati ljusci s „kill -signal $$“.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako SIGNAL_SPEC nije valjani\n"
+"    ili je dȃna nevaljana opcija."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3594,8 +4497,29 @@ msgid ""
 "    Returns success if all of the NAMEs are found; fails if any are not "
 "found."
 msgstr ""
+"Informacije o tipu naredbe.\n"
+"\n"
+"    Za svako dȃno IME pokaže kako će se interpretirati\n"
+"    ako se koristi kao naredba.\n"
+"\n"
+"    Opcije:\n"
+"     -a   pokaže sve lokacije koje sadrže izvršnu datoteku IME; uključuje i\n"
+"            lokacije s aliasima, ugrađenim naredbama i funkcijama, ali onda\n"
+"            i samo onda ako nije dȃna opcija „-p“\n"
+"     -f   ignorira funkcije kao da nisu definirane\n"
+"     -P   traži dȃno IME po stazama definiranim u PATH (također ako je IME\n"
+"            alias, ugrađena naredba (builtin) ili funkcija)\n"
+"            i ispiše puni naziv datoteke na disku koja bi se izvršila\n"
+"     -p   ispiše puni naziv datoteke na disku koja bi se izvršila ili\n"
+"            ništa ako je IME alias, ugrađena naredba (builtin) ili funkcija\n"
+"     -t   ispiše samo tip navedenih IMEna: „alias“, „builtin“, „file“,\n"
+"            „function“ ili „keyword“, ovisno o tome je li riječ o aliasu,\n"
+"            ugrađenoj funkciji (builtin), datoteci na disku, definiranoj\n"
+"            funkciji ili ključnoj riječi; ili ništa, ako je ime nepoznato\n"
+"\n"
+"    Završi s kȏdom 0 ako se pronađu sva IMEna, inače s 1."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3643,8 +4567,53 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
+"Upravlja i modificira ograničenja ljuske.\n"
+"\n"
+"    Omogući upravljanje s resursima koji su dostupni ovoj ljusci i\n"
+"    procesima koje kreira -- na sustavima koji to dopuštaju.\n"
+"\n"
+"    Opcije:\n"
+"      -S    rabi „mekano“ (soft) ograničenje resursa\n"
+"      -H    rabi „tvrdo“ (hard) ograničenje resursa\n"
+"      -a    popis svih trenutačnih ograničenja\n"
+"      -b    maks. veličina međuspremnika utičnice\n"
+"      -c    maks. veličina „core“ datoteka (u kB)\n"
+"      -d    maks. veličina segmenta s procesnim podacima (in kB)\n"
+"      -e    maks. prioritet raspoređivanja („nice“ vrijednost)\n"
+"      -f    maks. veličina datoteka ljuska i njeni potomci mogu zapisati\n"
+"      -i    maks. broj signala koji može biti na čekanju\n"
+"      -l    maks. veličina koju proces može zaključati u memoriju\n"
+"      -k    maks. broj rezerviranih/dodijeljenih „kqueues“ za taj proces\n"
+"      -m    maks. iznos fizičke memorije procesa (in kB)\n"
+"      -n    maks. broj otvorenih deskriptora datoteka\n"
+"      -p    maks. veličina međuspremnika cijevi\n"
+"      -q    maks. broj bajtova za red POSIX poruka\n"
+"      -r    maks. prioritet raspoređivanja u realnom vremenu\n"
+"      -s    maks. veličina snopa (stack) (u kB)\n"
+"      -t    maks. iznos CPU vremena (u sekundama)\n"
+"      -u    maks. broj korisničkih procesa\n"
+"      -v    maks. veličina virtualne memorije (u kB)\n"
+"      -x    maks. broj datotečnih brava (lokota, locks)\n"
+"      -P    maks. broj pseudo terminala\n"
+"      -T    maks. broj dretvi\n"
+"\n"
+"    Nisu sve opisane opcije dostupne na svim platformama.\n"
+"\n"
+"    Ako je specificirani, LIMIT postane nova vrijednost za specificirani\n"
+"    resurs, inače se prikažu trenutačne vrijednosti. Specijalne "
+"vrijednosti,\n"
+"    „soft“, „hard“, i „unlimited“ su trenutačni soft limit, trenutačni hard\n"
+"    limit i unlimited. Ako nijedna opcija nije specificirana, podrazumijeva\n"
+"    se da je aktivna „-f“ opcija.\n"
+"\n"
+"    Vrijednosti su višekratnik od 1024 bajta, osim za „-t“ koji je\n"
+"    u sekundama, „-p“ koji je višekratnik od 512 bajta i „-u“ je apsolutni\n"
+"    broj procesa.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3661,8 +4630,23 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
+"Prikaže ili postavi masku prilikom kreiranje datoteke.\n"
+"\n"
+"    Postavi masku datoteke koju kreira korisnik na MODE.\n"
+"    Ako MODE nije dȃn, ispiše trenutačnu vrijednost maske.\n"
+"\n"
+"    Ako MODE počinje sa znamenkom, interpretira se kao oktalni broj;\n"
+"    inače to je simbolički mode string kakav prihvaća chmod(1).\n"
+"\n"
+"    Opcije:\n"
+"      -p   ako nije dȃn MODE, generira izlaz u formatu\n"
+"             koji se može iskoristiti kao ulaz\n"
+"      -S   napravi simbolički izlaz; inače izlaz je oktalni broj\n"
+"\n"
+"    Završi s kȏdom 0 osim ako MODE nije valjan\n"
+"    ili je dȃna  nevaljana opcija."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3670,19 +4654,37 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
+"Čeka da posao završi i vrati njegov izlazni status.\n"
+"\n"
+"    Čeka na svaki posao identificirani s ID — to jest indikatorom posla ili\n"
+"    indikatorom procesa — i izvijesti njegov završni status. Ako nije dȃn\n"
+"    ID, čeka na sve trenutačno aktivne potomke, a završni status je nula.\n"
+"    Ako je ID specifikacija posla, čeka na sve procese u cjevovodu tog "
+"posla.\n"
+"\n"
+"    Ako je dȃna opcija „-n“, čeka na završetak sljedećeg posla i vrati\n"
+"    njegov izlazni status.\n"
+"\n"
+"    Ako je dȃna opcija „-f“ i kontrola nad poslovima je omogućena, čeka dok\n"
+"    specificirani ID ne završi, umjesto da promijeni status.\n"
+"\n"
+"    Završi s kȏdom zadnjeg ID-a, a s kȏdom 1 ako je ID nevaljani\n"
+"    ili je dȃna nevaljana opcija."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3696,8 +4698,16 @@ msgid ""
 "invalid\n"
 "    option is given."
 msgstr ""
+"Čeka da proces završi i vrati njegov izlazni status.\n"
+"\n"
+"    Čeka na svaki proces identificirani s PID i izvijesti njegov završni\n"
+"    status. Ako nije dȃn PID, čeka na sve trenutačno aktivne potomke,\n"
+"    a završni status je nula. PID mora biti proces ID.\n"
+"\n"
+"    Završi s kȏdom zadnjeg PID-a, s kȏdom 1 ako je PID nevaljani,\n"
+"    ili s 2 ako je dȃna nevaljana opcija."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3709,8 +4719,17 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Izvrši naredbe za svakoga člana u popisu.\n"
+"\n"
+"    Petlja „for“ izvrši sekvenciju naredbi za svakoga člana u popisu "
+"stavki.\n"
+"    Ako nema operanda „in RIJEČIMA...;“, podrazumijeva se operand\n"
+"    „in \"$@\"“. Svakom elementu u RIJEČIMA, IME se postavi na taj element\n"
+"    i izvrše se NAREDBE.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3726,8 +4745,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Aritmetička „for“ petlja.\n"
+"\n"
+"    Isto kao:\n"
+"\n"
+"        (( EXP1 )); while (( EXP2 )); do NAREDBE; (( EXP3 )); done\n"
+"\n"
+"    EXP1, EXP2, EXP3 su aritmetički izrazi. Ako bilo koji izraz nije\n"
+"    dȃn, uzima se da mu je vrijednost jednaka 1.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3746,8 +4775,26 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Pripremi izbornik i izvrši izabrane naredbe.\n"
+"\n"
+"    Proširenjem RIJEČI, „select“ generira i prikaže izbornik na standardnom\n"
+"    izlazu za greške s brojem ispred svake riječi. Ako operand „u RIJEČIMA“\n"
+"    nije dȃn, podrazumijeva se operand „in \"$@\"“.\n"
+"    Nakon izbornika prikaže se PS3 prompt i redak se čita iz standardnoga\n"
+"    ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n"
+"    riječi, onda varijabla IME dobije vrijednost te riječi; ako je redak\n"
+"    prazan, RIJEČI i prompt se ponovno prikažu; ako se pročita EOF „select“\n"
+"    naredba završi s poslom. Bilo koja druga vrijednost koja se pročita "
+"učini\n"
+"    da se IME isprazni (nulira). Pročitani redak spremi se u varijablu "
+"REPLY.\n"
+"    NAREDBE se izvršavaju nakon svakog izbora, tako dugo dok „break“ "
+"naredba\n"
+"    ne prekine posao.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3762,8 +4809,19 @@ msgid ""
 "    Exit Status:\n"
 "    The return status is the return status of PIPELINE."
 msgstr ""
+"Prikaže vrijeme potrošeno cjevovodom.\n"
+"\n"
+"    Nakon završetka izvršavanja CJEVOVODA prikaže sažetak statistike\n"
+"    trošenja vremena: ukupno potrošeno vrijeme, CPU vrijeme potrošeno\n"
+"    korisnikom i CPU vrijeme potrošeno sustavom za izvršavanje naredbi.\n"
+"\n"
+"    Izlazni format se može prilagoditi s varijablom okoline TIMEFORMAT.\n"
+"    Opcija „-p“ ignorira TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n"
+"    formatu.\n"
+"\n"
+"    Završi s izlaznim statusom CJEVOVODA."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3773,8 +4831,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Izvrši naredbe ovisno o slaganju s uzorkom.\n"
+"\n"
+"    Izvrši onu NAREDBU koja odgovara prvom UZORKU koji se podudara s "
+"RIJEČI.\n"
+"    Znak „|“ rabi se za razdvajanje više uzoraka.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3794,8 +4859,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Izvršavanje uvjetovanih naredbi.\n"
+"\n"
+"    Prvo izvrši zadatke iza „if“; ako „if“ završi s kȏdom nula, izvrši\n"
+"    zadatke iza prvog „then“; inače, izvrše se zadatci iza sljedećeg „elif“\n"
+"    (ako postoji), ili „else“ (ako postoji). Ako „elif“ završi s kȏdom\n"
+"    nula, izvrše se zadatci iza odgovarajućih „then“. Ako više nema „elif“,\n"
+"    ili „else“, ili nakon izvršenja zadataka iza „then“, „if“ naredba "
+"završi.\n"
+"\n"
+"    „if“ završi s kȏdom zadnjeg izvršenoga zadatka."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3805,8 +4880,14 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Izvršava naredbe tako dugo dok je test uspješan.\n"
+"\n"
+"    Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n"
+"    „while“ NAREDBI Završi s kȏdom 0.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3816,8 +4897,14 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Izvršava naredbe tako dugo dok test ne uspije.\n"
+"\n"
+"    Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n"
+"    „until“ NAREDBAMA završi s kȏdom različitim od nule.\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3829,8 +4916,16 @@ msgid ""
 "    Exit Status:\n"
 "    The coproc command returns an exit status of 0."
 msgstr ""
+"Kreira coprocess (suproces) s imenom IME.\n"
+"\n"
+"    Izvrši NAREDBU asinkrono, sa standardnim izlazom i standardnim ulazom\n"
+"    naredbe spojene preko cijevi na deskriptore datoteke dodijeljene\n"
+"    indeksima 0 i 1 varijable polja IME u izvršnoj ljusci.\n"
+"    Zadano, IME je \"COPROC\".\n"
+"\n"
+"    Naredba coproc završi s kȏdom 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3843,8 +4938,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless NAME is readonly."
 msgstr ""
+"Definira funkciju ljuske.\n"
+"\n"
+"    Kreira funkciju ljuske nazvanu IME. Kȁd se pokrene kao jednostavna\n"
+"    naredba, IME izvrši NAREDBE unutar konteksta ljuske pozivanja.\n"
+"    Kȁd se IME pozove, argumenti se proslijede funkciji kao $0...$N,\n"
+"    a ime funkcije je $FUNCNAME.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je IME readonly (samo-za-čitanje)."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3854,8 +4957,14 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
+"Grupira naredbe u jednu cjelinu.\n"
+"\n"
+"    Izvrši skup naredbi kao grupu. To je jedan od načina za preusmjeravanje\n"
+"    čitavog skupa naredbi\n"
+"\n"
+"    Završi s kȏdom zadnje izvršene naredbe."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3868,8 +4977,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the resumed job."
 msgstr ""
+"Nastavi posao u interaktivnom načinu.\n"
+"\n"
+"    Nastavi dȃni obustavljeni ili pozadinski posao u interaktivnom mȏdu\n"
+"    To je ekvivalentno naredbi „fg“. JOBSPEC može specificirati\n"
+"    ili ime posla ili broj posla.  Ako „&“ slijedi iza JOBSPEC\n"
+"    onda posao prelazi u pozadinu. To je ekvivalentno naredbi „bg“\n"
+"\n"
+"    Završi s kȏdom nastavljenoga posla."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3879,8 +4996,15 @@ msgid ""
 "    Exit Status:\n"
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
+"Izračuna aritmetički izraz.\n"
+"\n"
+"    IZRAZ se izračuna po aritmetičkim pravilima.\n"
+"    To je isto kao \"let IZRAZ\".\n"
+"\n"
+"    Završi s kȏdom 1 ako je rezultat IZRAZA jednaki 0;\n"
+"    inače završi s kȏdom 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3907,8 +5031,30 @@ msgid ""
 "    Exit Status:\n"
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
+"Izvrši uvjetnu naredbu.\n"
+"\n"
+"    Evaluira dani uvjetni IZRAZ; ovisno o rezultatu evaluacije završi sa\n"
+"    statusom 0 (istina) ili 1 (neistina, laž).  Izrazi koriste iste osnovne\n"
+"    komponente koje koristi ugrađena naredba (builtin) „test“, i mogu se\n"
+"    kombinirati sa sljedećim operatorima:\n"
+"\n"
+"        ( IZRAZ )     vrati vrijednost danoga IZRAZa\n"
+"        ! IZRAZ       istina ako je IZRAZ istina, inače laž\n"
+"        IZRAZ1 && IZRAZ2    istina ako su oba izraza istinita, inače laž\n"
+"        IZRAZ1 || IZRAZ2    laž ako su oba izraza neistinita, inače istina\n"
+"\n"
+"    Ako se rabe operatori „==“ ili „!=“, onda se string desno od operatora\n"
+"    smatra za uzorak i  provodi se podudaranje uzoraka.\n"
+"    Ako se rabi operator „=~“, onda se string na desno od operatora "
+"podudara\n"
+"    kao regularni izraz.\n"
+"\n"
+"    Operatori „&&“ i „|| ne evaluiraju IZRAZ2 ako je IZRAZ1 dovoljan za\n"
+"    određivanje konačnog rezurlata.\n"
+"\n"
+"    Završi s kȏdom 0 ili 1 ovisno o IZRAZU."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3961,8 +5107,57 @@ msgid ""
 "    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
-
-#: builtins.c:1803
+"Značenje i upotreba standardnih varijabli ljuske.\n"
+"\n"
+"    U nastavku je opis brojnih varijabli od kojih neke sadrže popis\n"
+"    elemenata. U svakom od tih popisa elementi su razdvojeni dvotočkama.\n"
+"\n"
+"    BASH_VERSION  inačica ovog „bash“ programa\n"
+"    CDPATH        popis direktorija u kojima se traži direktorij\n"
+"                    kȁd argument od „cd“ (direktorij) nije u\n"
+"                    trenutačnom radnom direktoriju\n"
+"    GLOBIGNORE    popis uzoraka koji opisuju imena datoteka koje\n"
+"                    se ignoriraju prilikom ekspanzije imena staza\n"
+"    HISTFILE      ime datoteke koja sadrži povijest vaših naredbi\n"
+"    HISTFILESIZE  maksimalni broj redaka datoteke s povijesti naredba\n"
+"    HISTIGNORE    popis uzoraka koji opisuju naredbe koje ne treba zapisati\n"
+"                    u datoteku koja sadrži povijest vaših naredbi\n"
+"    HISTSIZE      maksimalni broj redaka koje aktualna ljuska može "
+"dosegnuti\n"
+"    HOME          puni naziv staze do vašega osobnoga direktorija\n"
+"    HOSTNAME      ime računala na kojem se izvršava „bash“\n"
+"    HOSTTYPE      tip CPU-a na kojem se izvršava „bash“\n"
+"    IGNOREEOF     broj ignoriranih Ctrl-D (EOF) prije zatvaranja ljuske\n"
+"    MACHTYPE      tip računala na kojem se izvršava „bash“\n"
+"    MAILCHECK     kako često (u sekundama) „bash“ gleda ima li nove pošte\n"
+"    MAILPATH      popis datoteka koje „bash“ provjeri za novu poštu\n"
+"    OSTYPE        distribucija Unix-a no kojem se izvršava ovaj „bash“\n"
+"    PATH          popis direktorija u kojima se traže naredbe\n"
+"    PROMPT_COMMAND  naredba koja se izvrši prije ispisa primarnoga prompta\n"
+"    PS1           string koji opisuje primarni prompt\n"
+"    PS2           string koji opisuje sekundarni prompt (zadano, „>“)\n"
+"    PWD           puni naziv staze trenutačnoga radnoga direktorija\n"
+"    SHELLOPTS     popis svih omogućenih opcija ljuske\n"
+"    TERM          naziv vrste trenutačnoga terminala\n"
+"    TIMEFORMAT    pravilo za format ispisa „time“ statistika\n"
+"    auto_resume   ako nije prazan, učini da se naredbena riječ na "
+"naredbenom\n"
+"                    retku prvo potraži na popisu obustavljenih poslova,\n"
+"                    i ako se tamo pronađe, taj se posao premjesti u\n"
+"                    interaktivni mȏd; vrijednost „exact“ znači da naredbena\n"
+"                    riječ mora strikno podudariti naredbu iz popisa;\n"
+"                    vrijednost „substring“ znači da naredbena riječ mora\n"
+"                    podudariti podstring naredbe iz popisa; bilo koja druga\n"
+"                    vrijednost znači da naredbena riječ mora biti prefiks\n"
+"                    obustavljene naredbe\n"
+"    histchars     znakovi koje upravljaju s proširenjem i brzom "
+"supstitucijom\n"
+"                    povijesti; prvi znak je znak za „supstituciju\n"
+"                    povijesti“, obično „!“; drugi znak je „znak brze\n"
+"                    supstitucije“, obično „^“; treći znak je „komentar\n"
+"                    povijesti“, obično „#“.\n"
+
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -3992,8 +5187,34 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
+"Doda direktorije na snop.\n"
+"\n"
+"    Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n"
+"    učini novi vrh snopa trenutačnim radnim direktorijem. Bez argumenata\n"
+"    razmijeni pozicije dva direktorija na vrhu snopa.\n"
+"\n"
+"    Opcije:\n"
+"      -n   izostavi uobičajenu promjenu direktorija kȁd dodaje\n"
+"           direktorije u snop, odnosno samo manipulira sa snopom\n"
+"\n"
+"    Argumenti:\n"
+"      DIREKTORIJ  Doda DIREKTORIJ na vrh snopa direktorija i\n"
+"                    učini ga novim aktualnim radnim direktorijem.\n"
+"      +N   Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule "
+"s\n"
+"             lijeve strane popisa prikazanoga s „dirs“) postane novi vrh "
+"snopa.\n"
+"      -N   Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule "
+"s\n"
+"             desne strane popisa prikazanoga s „dirs“) postane novi vrh "
+"snopa.\n"
+"\n"
+"      Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili nije uspjela promjena direktorija."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4019,9 +5240,29 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
+"Ukloni direktorije iz snopa.\n"
+"\n"
+"    Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n"
+"    direktorij na vrhu snopa i premjesti se u novi najviši direktorij.\n"
+"\n"
+"    Opcije:\n"
+"      -n   izostavi uobičajenu promjenu direktorija kȁd uklanja\n"
+"           direktorije iz snopa, odnosno samo manipulira sa snopom\n"
+"\n"
+"    Argumenti:\n"
+"      +N   Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n"
+"             strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n"
+"             ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n"
+"      +N   Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n"
+"             strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
+"             ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
+"\n"
+"    Naredba „dirs“ prikaže trenutačni sadržaj snopa direktorija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili nije uspjela promjena direktorija."
 
-#: builtins.c:1867
-#, fuzzy
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4049,35 +5290,35 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
-"Prikaži popis trenutno zapamćenih direktorija. Direktoriji se dodaju\n"
-"    na popis naredbom „pushd”, kroz popis se možete vraćati naredbom\n"
-"    „popd”.\n"
+"Ispiše sadržaj snopa direktorija.\n"
+"\n"
+"    Pokaže popis trenutačno zapamćenih direktorija. Direktoriji se unose\n"
+"    na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n"
 "    \n"
 "    Opcije:\n"
-"      -c\točisti stog direktorija uklanjanjem svih elemenata\n"
-"      -l\tne ispisuj tildom prefiksirane inačice direktorija\n"
-"    \trelativno u odnosu na početni direktorij\n"
-"      -p\tispiši stog direktorija jednu stavku po retku\n"
-"      -v\tispiši stog direktorija jednu stavku po retku\n"
-"    \tprefiksiranu položajem u stogu\n"
-"    \n"
+"      -c   počisti snop direktorija brisanjem svih elemenata\n"
+"      -l   ispiše apsolutne staze direktorija u odnosu na osobni\n"
+"             direktorij (ne skraćuje staze upotrebom tilde)\n"
+"      -p   ispiše sadržaj snopa po jedan direktorij po retku\n"
+"      -v   kao „-p“, ali s prefiksom koji pokazuje\n"
+"             poziciju direktorija snopu\n"
+"\n"
 "    Argumenti:\n"
-"      +N\tPrikazuje N-tu stavku s lijeve strane popisa koju prikazuje "
-"naredba\n"
-"    \t„dirs” pozvana bez opcija, počevši od nule.\n"
-"    \n"
-"      -N\tPrikazuje N-tu stavku s desne strane popisa koju prikazuje "
-"naredba\n"
-"\t„dirs” pozvana bez opcija, počevši od nule."
+"      +N   Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n"
+"             lijeve strane popisa kȁd se „dirs“ pokrene bez opcija.\n"
+"      -N   Pokaže N-ti direktorij iz snopa, brojeći od nule s\n"
+"             desne strane popisa kȁd se „dirs“ pokrene bez opcija.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4090,8 +5331,25 @@ msgid ""
 "    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
 "    given or OPTNAME is disabled."
 msgstr ""
+"Uključi ili isključi opcije ljuske.\n"
+"\n"
+"    Promjeni postavku svakoj opciji ljuske IME_OPCIJE. Bez ikakvih opcija i\n"
+"    argumenta, „shopt“ izlista sve opcije ljuske pokazujući je li, ili nije\n"
+"    uključena.\n"
+"\n"
+"    Opcije:\n"
+"      -o   ograniči IME_OPCIJE na ona koja su definirana\n"
+"             za upotrebu sa „set -o“\n"
+"      -p   generira izlaz koji se može koristi za ulaz\n"
+"      -q   izostavi izlaz (ništa ne ispisuje)\n"
+"      -s   omogući (uključi) sve dȃne IME_OPCIJE\n"
+"      -u   onemogući (isključi) sve dȃne IME_OPCIJE\n"
+"\n"
+"    Bez opcija (ili samo s „-q“ opcijom) Završi s kȏdom 0 ako je IME_OPCIJE\n"
+"    uključeno, a s 1 ako je isključeno. Završi također s 1 ako je dȃno\n"
+"    nevaljano ime opcije, a završi s 2 ako je dȃna nevaljana opcija."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4129,8 +5387,37 @@ msgid ""
 "assignment\n"
 "    error occurs."
 msgstr ""
+"Oblikuje ispis ARGUMENATA prema pravilima FORMATA.\n"
+"\n"
+"    Ispiše dane ARGUMENTE u danom FORMATU.\n"
+"\n"
+"    Opcije:\n"
+"      -v VARIJABLA  preusmjeri (dodijeli) izlaz (ispis) u VARIJABLU\n"
+"                    umjesto na standardni izlaz\n"
+"\n"
+"    FORMAT je znakovni string koji sadrži tri vrste objekta:\n"
+"    obične znakove koji se jednostavno kopiraju na izlaz; kontrolne znakove\n"
+"    (maskirane sekvencije) koji se pretvore i kopiraju na izlaz; i\n"
+"    specifikacije formata od kojih svaka uzrokuje ispisivanje sljedećeg\n"
+"    sukcesivnoga argumenta.\n"
+"\n"
+"    Pored standardnih simbola za format opisanih u printf(1),\n"
+"    printf dodatno interpretira:\n"
+"      %b       proširi maskirane sekvencije s obratnom kosom crtom\n"
+"                 (backslash escape sequences) u relevantim argumentima\n"
+"      %q       citira argument tako, da se može iskoristiti kao ulaz\n"
+"      %(fmt)T  ispis vremena rezultira upotrebom FMT kao\n"
+"                 format stringa za strftime(3)\n"
+"\n"
+"    Dani format se koristi sve dok se ne potroše svi argumenti. Ako ima\n"
+"    manje od očekivanoga broja argumenata, suvišne format specifikacije\n"
+"    se ponašaju kao da im je vrijednost nula, ili prazni string.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dana nevaljana opcija\n"
+"    ili se dogodila greška pisanja ili greška pri dodijeli."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4148,16 +5435,44 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
+"Specificira kako „readline“ treba kompletirati argumente.\n"
+"\n"
+"    Za svako dȃno IME specificira kako se kompletiraju argumenti. Bez\n"
+"    dȃnih opcija ispiše postojeće specifikacije koje se mogu ponovno\n"
+"    iskoristiti kao ulaz.\n"
+"\n"
+"    Opcije:\n"
+"      -p   ispiše postojeće specifikacije kompletiranja u formatu\n"
+"             upotrebljivom za ulaz\n"
+"      -r   ukloni specifikaciju kompletiranja za svako dȃno IME\n"
+"             ili ukloni sve specifikacije ako nisu dȃna IMEna\n"
+"      -D   na naredbe koje nemaju vlastitu specifikaciju za kompletiranje\n"
+"             primjeni „zadano“ ponašanje specifikacija i akcija\n"
+"      -E   primjeni zadano ponašanje specifikacija i akcija i na „prazne“\n"
+"             naredbe, to jest pokuša kompletirati prazni redak\n"
+"      -I   primjeni zadano ponašanje specifikacija i akcija i na početnu\n"
+"             (obično naredbu) riječ\n"
+"\n"
+"    Redoslijed akcija pri pokušaju kompletiranja slijedi gore dȃni poredak\n"
+"    opcija u verzalu. Opcija „-D“ ima veći prioritet od opcije „-E“.\n"
+"    a obje imaju veći prioritet od opcije „-I“\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4169,8 +5484,16 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
+"Prikaže moguća kompletiranja ovisno o opcijama.\n"
+"\n"
+"    „compgen“ je namijenjen za upotrebu unutar funkcije koja generira\n"
+"    moguća kompletiranja. Ako je dȃna neobvezna opcija RIJEČ, generira\n"
+"    samo moguća kompletiranja podudarna s opcijom RIJEČ.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n"
+"    ili se dogodila greška."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4185,6 +5508,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4200,8 +5524,31 @@ msgid ""
 "    Returns success unless an invalid option is supplied or NAME does not\n"
 "    have a completion specification defined."
 msgstr ""
+"Izmjena ili prikaz opcija za kompletiranje.\n"
+"\n"
+"    Izmijenite opcije kompletiranja za svako IME u skladu s opcijama,\n"
+"    ili za kompletiranje koje se trenutačno vrši ako nisu dȃna IMEna.\n"
+"    Ako nema opcija, ispišu se opcije kompletiranja za svako IME ili\n"
+"    za trenutačno kompletiranje.\n"
+"\n"
+"    Opcije:\n"
+"      -o OPCIJA   ovu OPCIJU kompletiranja postavi za svako IME\n"
+"      -D          promijeni opcije za kompletiranje „zadanih“ naredba\n"
+"      -E          promijeni opcije za kompletiranje „praznih“ naredba\n"
+"      -I          promijeni opcije za kompletiranje za početnu riječ\n"
+"\n"
+"    „+“ umjesto „-“ isključi odgovarajuću opciju.\n"
+"\n"
+"    Svako IME ukazuje na naredbu za koju specifikacija kompletiranja mora\n"
+"    već prije biti definirana pomoću ugrađene naredbe „complete“. Ako nije\n"
+"    dȃno nijedno IME, funkcija koja trenutačno generira kompletiranja mora\n"
+"    pozvati „compopt“; time se onda promjene opcije za taj generator koji\n"
+"    trenutačno izvršava kompletiranja.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako nije dȃna nevaljana opcija\n"
+"    ili nije definirana specifikacija za kompletiranje IMEna."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4242,27 +5589,46 @@ msgid ""
 "or\n"
 "    not an indexed array."
 msgstr ""
+"Mapira pročitane retke iz standardnoga ulaza u varijablu tipa polje.\n"
+"\n"
+"    Učitane retke iz standardnoga ulaza mapira u indeksiranu varijablu "
+"POLJE.\n"
+"    Ako nema argumenta POLJE, koristi se (zadano) varijabla MAPFILE.\n"
+"\n"
+"    Opcije:\n"
+"      -d MEĐA      prvi znak u MEĐI (umjesto LF) je znak za kraj retka\n"
+"      -n BROJ      kopira ne više od BROJ redaka (0 znači sve retke)\n"
+"      -O POČETAK   mapiranje započinje s indeksom POČETAK (zadano 0)\n"
+"      -s BROJ      preskoči (izostavi) prvih BROJ redaka\n"
+"      -t           ukloni zaostalu MEĐU (zadano LF) iz svakog učitanoga "
+"retka\n"
+"      -u FD        čita retke iz FD (deskriptora datoteke) umjesto iz stdin\n"
+"      -C FUNKCIJA  evaluira FUNKCIJU nakon svako TOLIKO pročitanih redaka\n"
+"      -c TOLIKO    nakon svako TOLIKO pročitanih redaka pozove FUNKCIJU\n"
+"\n"
+"    Argument:\n"
+"      POLJE        ime varijable polja u koju se mapiraju pročitani redci\n"
+"\n"
+"    Ako je opcija „-C“ dȃna bez opcije „-c“, TOLIKO je 5000 (zadano).\n"
+"    Kȁd FUNKCIJA evaluira — dobiva indeks sljedećeg elementa polja koji se\n"
+"    mapira i redak koji će biti dodijeljen tom elementu — kao dodatne "
+"argumente.\n"
+"\n"
+"    Ako nije dȃni eksplicitni POČETAK, „mapfile“ počisti polje\n"
+"    prije početka mapiranja.\n"
+"\n"
+"    Završi s kȏdom 0 osim ako je POLJE readonly (samo-za-čitanje)\n"
+"    ili nije polje; ili je dȃna nevaljana opcija."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
-"Učitaj retke iz datoteke u varijablu polja.\n"
-"    \n"
-"    Sinonim za „mapfile”."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
+"Učita retke iz datoteke u varijablu tipa indeksirano polje.\n"
+"\n"
+"    Sinonim za „mapfile“."
 
 #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
 #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
@@ -4273,3 +5639,6 @@ msgstr ""
 #~ msgstr ""
 #~ "Licenca GPLv2+: GNU GPL inačica 2 ili novija <http://gnu.org/licenses/gpl."
 #~ "html>\n"
+
+#~ msgid ":"
+#~ msgstr ":"
index a1b022e3669d6342b32cb4b782ec173d3a392c34..478db67699babfcdd48c1d7d485df0ef2aef436c 100644 (file)
Binary files a/po/hu.gmo and b/po/hu.gmo differ
index c206a0eff1359c75956d429c4939186d53c2ba14..4fec6895494ac4ad727fc46e33f8ba62f072a405 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
 # Hungarian translation for bash.
-# Copyright (C) 2010, 2016 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2016, 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 #
 # Mate Ory <orymate@ubuntu.com>, 2010, 2016.
 # Gabor Kelemen <kelemeng@gnome.hu>, 2016.
+# Balázs Úr <urbalazs@gmail.com>, 2017.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-01-03 23:59+0100\n"
-"Last-Translator: Mate Ory <orymate@ubuntu.com>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-04-27 21:42+0200\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: hu\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 1.2\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "Hibás tömbindex"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: névhivatkozás attribútum eltávolítása"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: érvénytelen asszociatívtömb-index"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nem hozható létre: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: nem található billentyűkiosztás a parancshoz"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: az első nem szóközkarakter nem „\"”"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "nincs záró „%c” a következőben: %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: hiányzó kettőspont-elválasztó"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %d elem számára"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s” számára"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s”: érvénytelen alias-név"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "nincs engedélyezve a sorszerkesztés"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s”: érvénytelen billentyűkiosztás-név"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nem olvasható a következő: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s”: nem lehetséges a kötés megszüntetése"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s”: ismeretlen függvénynév"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s nincs kötve egy billentyűhöz sem.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s a következő módon hajtható végre: "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s”: nem lehetséges a kötés megszüntetése"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "ciklusszám"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "csak „for”, „while” és „until” ciklusokban értelmezhető"
 
@@ -149,234 +151,233 @@ msgstr ""
 "    \n"
 "    EXPR nélkül a "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Nincs beállítva HOME"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "túl sok argumentum"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "nincs másik könyvtár"
+msgstr "null könyvtár"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Nincs beállítva OLDPWD"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "%d. sor: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "figyelmeztetés: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: használat: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: a kapcsolónak kötelező argumentuma van"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: a kötelező argumentum egy szám"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: nem található"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: érvénytelen kapcsoló"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: érvénytelen kapcsolónév"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s”: érvénytelen azonosító"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "érvénytelen oktális szám"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "érvénytelen hexadecimális szám"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "érvénytelen szám"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: érvénytelen szignálmegadás"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s”: nem pid vagy munkaazonosító"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: csak olvasható változó"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s kívül esik a tartományon"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumentum"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s kívül esik a tartományon"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: nincs ilyen munka"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: nincs munkakezelés"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "nincs munkakezelés"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: korlátozott"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "korlátozott"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: nem beépített parancs"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "írási hiba: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "hiba a terminálattribútum beállításakor: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "hiba a terminálattribútum lekérdezésekor: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: kétértelmű munkamegadás"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "ebben a verzióban nem érhető el súgó"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: érvénytelen műveletnév"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: nincs kiegészítés meghatározva"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "csak függvényben használható"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: a referenciaváltozó nem lehet tömb"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: körkörös névhivatkozás"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: érvénytelen változóérték a névhivatkozáshoz"
+msgstr "„%s”: érvénytelen változónév a névhivatkozáshoz"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "nem használható a „-f” függvény létrehozására"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: csak olvasható függvény"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: az idézőjelezett összetett tömb értékadása elavult"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: ilyen módon nem lehet tömböt megszüntetni"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása"
@@ -410,68 +411,68 @@ msgstr "%s: nem dinamikusan van betöltve"
 msgid "%s: cannot delete: %s"
 msgstr "%s: nem törölhető: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s egy könyvtár"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: nem normál fájl"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: a fájl túl nagy"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: bináris nem hajtható végre"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nem hajtható végre: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "kijelentkezés\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "nem bejelentkező parancsértelmező: használja az „exit”-et"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Vannak leállított munkák.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Vannak futó munkák.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "nincs ilyen parancs"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "előzményválasztás"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: az átmeneti fájl nem nyitható meg: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "aktuális"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "a(z) %d. munka munkakezelés nélkül indult"
@@ -486,28 +487,27 @@ msgstr "%s: érvénytelen kapcsoló – %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a kapcsolónak kötelező argumentuma van – %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "a hashelés le van tiltva"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: a hashtábla üres\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "t.szám\tparancs\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "A következő kifejezésre illeszkedő parancsok: „"
 msgstr[1] "A következő kifejezésekre illeszkedő parancsok: „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -515,12 +515,12 @@ msgstr ""
 "nem illeszkedik egy szócikk sem a következőre: „%s”.\n"
 "A „help help”, „man -k '%s'” vagy „info '%s'” parancsok segíthetnek."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nem nyitható meg: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -539,20 +539,21 @@ msgstr ""
 "A parancs nevét követő csillag (*) azt jelzi, hogy le van tiltva.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "a következő kapcsolók kizárják egymást: -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "előzménypozíció"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: érvénytelen argumentum"
+msgstr "%s: érvénytelen időbélyeg"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: sikertelen előzményből való kiegészítés"
@@ -566,16 +567,16 @@ msgstr "%s: sikertelen inlib"
 msgid "no other options allowed with `-x'"
 msgstr "a „-x” mellett nem használható más kapcsoló"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Ismeretlen hiba"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "az értelmező kifejezést várt"
 
@@ -584,69 +585,69 @@ msgstr "az értelmező kifejezést várt"
 msgid "%s: not an indexed array"
 msgstr "%s: nem egy indexelt tömb"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: érvénytelen fájlleíró-megadás"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: érvénytelen fájlleíró: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: sorok száma érvénytelen"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: érvénytelen tömbkezdet"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: érvénytelen parancshívási távolság"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "üres tömbváltozó-név"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "a tömbök használata nincs támogatva"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s”: hiányzó formátumkarakter"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "„%c”: érvénytelen időformátum-megadás"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c”: érvénytelen formátumkarakter"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "figyelmeztetés: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "formátumfeldolgozási probléma: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "hiányzó unicode számjegy a következőhöz: \\%c"
@@ -660,19 +661,19 @@ msgstr "nincs másik könyvtár"
 msgid "%s: invalid argument"
 msgstr "%s: érvénytelen argumentum"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<nincs munkakönyvtár>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "a könyvtárverem üres"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "könyvtárveremindex"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -712,7 +713,7 @@ msgstr ""
 "      -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n"
 "    \táltal megjelenített listán jobbról számolva, nullától kezdve."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -758,7 +759,7 @@ msgstr ""
 "    \n"
 "    A „dirs” beépített parancs listázza a könyvtárvermet."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -800,42 +801,42 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: érvénytelen időkorlát-megadás"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "olvasási hiba: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "csak függvényből vagy source-olt parancsfájlból lehet „return”-nel "
 "visszatérni"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "nem lehet egyszerre függvényt és változót megszüntetni"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nem szüntethető meg"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nem szüntethető meg: csak olvasható %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: nem egy tömbváltozó"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: nem függvény"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: nem exportálható"
@@ -844,21 +845,21 @@ msgstr "%s: nem exportálható"
 msgid "shift count"
 msgstr "shift-szám"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "nem lehet egyszerre beállítani és törölni parancsértelmező-beállításokat"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "fájlnévargumentum szükséges"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: a fájl nem található"
@@ -871,61 +872,61 @@ msgstr "nem lehet szüneteltetni"
 msgid "cannot suspend a login shell"
 msgstr "nem lehet bejelentkező parancsértelmezőt szüneteltetni"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s egy alias a következőre: „%s”\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s egy parancsértelmező-kulcsszó\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s egy függvény\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s egy speciális beépített parancs\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s egy beépített parancs\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s: %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s hashelve van (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: érvénytelen korlátérték"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c”: érvénytelen parancs"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: nem kérdezhető le a korlát: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "korlát"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: nem módosítható a korlát: %s"
@@ -944,358 +945,368 @@ msgstr "„%c”: érvénytelen szimbolikus módoperátor"
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c”: érvénytelen szimbolikus módkarakter"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " sor: "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "utolsó parancs: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Megszakítás..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "hiba: érvénytelen parancs"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "hibás parancstípus"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "hibás csatlakozó"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "hibás ugrás"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: kötetlen változó"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aidőtúllépés bemenetre várva: automatikus kijelentkezés\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "IDŐFORMÁTUM: „%c”: érvénytelen formátumkarakter"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "hibás csővezeték"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: a maximális eval beágyazási szint túllépve (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: a maximális source beágyazási szint túllépve (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: korlátozott: nem adható meg „/” a parancsok nevében"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: parancs nem található"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: rossz parancsértelmező"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: a bináris nem hajtható végre: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "„%s”: egy speciális beépített parancs"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "a kifejezés rekurziókorlátot"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "alulcsordult a rekurziós verem"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "szintaktikai hiba a kifejezésben"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "nem változóhoz próbált értéket rendelni"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "szintaktikai hiba a kifejezésben"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "0-val osztás"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: rossz expassign token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "„:” egy feltételkifejezés szükséges"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "0-nál kisebb kitevő"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "prefix növelés vagy csökkentés után azonosító kell következzen"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "hiányzó „)”"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "szintaktikai hiba: operandus kell következzen"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (hibás token: „%s”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "érvénytelen számrendszer"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "túl nagy érték a számrendszerhez"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: hibás kifejezés\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: nem érhetőek el a szülőkönyvtárak"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "nem lehet új fájlleírót foglalni a bash bemenetéhez a(z) %d. fájlleíróból"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp csővezeték"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: %5ld. folyamat (%s) még élőként van jelölve"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: nincs ilyen pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "%d. szignál"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Kész"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Megállítva"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Megállítva(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Fut"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Kész(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Kilépett(%d)"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Ismeretlen állapot"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core készült) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr " (mk: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "gyermek setpgid (innen: %ld ide: %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezőnek"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: %d. számú munka le lett állítva"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: a munka be lett fejezve"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: %d. számú munka már a háttérben van"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: %d. sor: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core készült)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(mk most: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp sikertelen"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: line discipline"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: line discipline"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "nem állítható be a terminál folyamatcsoportja (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "nincsen munkakezelés ebben a parancsértelmezőben"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: nem teljesülő feltételezés: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1304,39 +1315,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: téves feltételezés\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "ismeretlen"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: a szabadlistán lévő blokk felülírva"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: már felszabadított blokkal lett hívva"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: nem lefoglalt blokkal lett hívva"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: kezdő- és záródarab mérete eltér"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: nem lefoglalt blokkal lett hívva"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: kezdő- és záródarab mérete eltér"
 
@@ -1378,22 +1389,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás"
 msgid "network operations not supported"
 msgstr "a hálózati műveletek nincsenek támogatva"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s"
@@ -1411,150 +1422,152 @@ msgstr "Új levél a következőben: $_"
 msgid "The mail in %s has been read\n"
 msgstr "A(z) „%s” helyen lévő levél el van olvasva\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "szintaktikai hiba: váratlan „;”"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "szintaktikai hiba: „((%s))”"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: hibás utasítástípus: %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s” helyett)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét "
+"(%lu): a sor csonkolva"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "a maximális here-document szám túllépve"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "váratlan EOF „%c” helyett"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "váratlan EOF „]]” helyett"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "szintaktikai hiba a feltételben: váratlan token: „%s”"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "szintaktikai hiba a feltételben"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "váratlan token (%s) „)” helyett"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "„)” szükséges"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "feltételes kétoperandusú operátor szükséges"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "váratlan token (%c) feltételes parancsban"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "váratlan token (%s) feltételes parancsban"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "váratlan token (%d) feltételes parancsban"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "szintaktikai hiba „%s” váratlan token közelében"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "szintaktikai hiba „%s” közelében"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "szintaktikai hiba: váratlan fájlvége"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "szintaktikai hiba"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "„%s” használatával lehet elhagyni a parancsértelmezőt.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "váratlan EOF „)” helyett"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "kiegészítés: nem található „%s” függvény"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: lehetséges újrapróbálási hurok"
 
 #: pcomplib.c:182
 #, c-format
@@ -1580,90 +1593,94 @@ msgstr "xtrace_set: NULL fájlmutató"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c”: érvénytelen formátumkarakter"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "fájlleíró kívül esik a tartományon"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: kétértelmű átirányítás"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: nem lehet felülírni létező fájlt"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: nem lehet változóhoz fájlleírót rendelni"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "nem található /tmp, hozza létre!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp érvényes könyvtárnév kell legyen"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: érvénytelen kapcsoló"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "az uid nem állítható be %d értékre: a hatásos uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "a gid nem állítható be %d értékre: a hatásos gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: ez egy könyvtár"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nincs nevem!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, %s-(%s) verzió\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1672,53 +1689,53 @@ msgstr ""
 "Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n"
 "\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU hosszú kapcsolók:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Parancsértelmező-kapcsolók:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s vagy -o kapcsoló\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "A „%s -c \"help set\"” további információt ad a parancsértelmező-"
 "beállításokról.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "A „%s -c help” további információt ad a beépített parancsokról.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "A „bashbug” paranccsal jelenthet hibákat.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "a bash honlapja: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Általános segítség a GNU szoftverek használatához: <http://www.gnu.org/"
 "gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: érvénytelen művelet"
@@ -1892,92 +1909,96 @@ msgstr "Ismeretlen szignál #"
 msgid "Unknown Signal #%d"
 msgstr "%d. számú ismeretlen szignál"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "hibás helyettesítés: nincs záró „%s” a következőben: %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: lista nem adható tömbelemnek értékül"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "nem nyitható meg olvasásra a(z) %s csővezeték"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "nem nyitható meg írásra a(z) %s csővezeték"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s"
+msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: nem duplikálható a csővezeték 1. fájlleíróként"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: érvénytelen változóérték a névhivatkozáshoz"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: rossz helyettesítés"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: az indirekt kiegészítés érvénytelen"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: érvénytelen változónév"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: a paraméter null vagy nincs beállítva"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: a paraméter null vagy nincs beállítva"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: részkarakterlánc-kifejezés < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: rossz helyettesítés"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: nem lehet így értéket adni"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1985,12 +2006,12 @@ msgstr ""
 "a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai "
 "kiértékelést"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "nincs találat: %s"
@@ -2013,115 +2034,120 @@ msgstr "„)” szükséges"
 msgid "`)' expected, found %s"
 msgstr "„)” szükséges %s helyett"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: egyoperandusú operátor szükséges"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: kétoperandusú operátor szükséges"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "hiányzó „]”"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "érvénytelen szignálszám"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: a maximális eval beágyazási szint túllépve (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: szignálkezelő a SIG_DFL, %d (%s) újraküldése önmagunknak"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: rossz szignál: %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "hiba a függvénydefiníció betöltésekor: „%s”"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "a parancsértelmező szintje (%d) túl magas, visszaállítás 1-re"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: nem lehet a változóhoz értéket rendelni"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: érvénytelen változóérték a névhivatkozáshoz"
+msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s exportstr-je null"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "érvénytelen karakter (%d) %s exportstr-jében"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "nincs „=” %s exportstr-jében"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: nincs global_variables környezet"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: nem nyitható meg FILE-ként"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright © 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright © 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2144,22 +2170,22 @@ msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: nem lehetséges %lu byte foglalása (%lu byte lett foglalva)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: nem lehetséges %lu byte foglalása"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d nem lehetséges %lu byte foglalása (%lu byte lett foglalva)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d nem lehetséges %lu byte foglalása"
@@ -2287,9 +2313,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [munkaszám ...] vagy jobs -x parancs [args]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [munkaszám ...]"
+msgstr "disown [-h] [-ar] [munkaszám ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2372,7 +2397,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mód]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2464,8 +2490,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v változó] formátum [argumentumok]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2483,7 +2510,8 @@ msgstr ""
 "szuffixum] [szó]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o beállítás] [-DE] [név ...]"
 
 #: builtins.c:242
@@ -2495,9 +2523,10 @@ msgstr ""
 "parancs] [-c távolság] [tömb]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c "
 "távolság] [tömb]"
@@ -2673,6 +2702,7 @@ msgstr ""
 "    A kilépési kód 0, ha N >= 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2683,7 +2713,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Beépített parancsok végrehajtása.\n"
 "    \n"
@@ -2909,6 +2939,7 @@ msgstr ""
 "    található a PARANCS."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2927,11 +2958,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2986,7 +3017,6 @@ msgstr ""
 "    hiba történik."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2994,7 +3024,7 @@ msgid ""
 msgstr ""
 "Változóértékek és attribútumok beállítása.\n"
 "    \n"
-"    Elavult. Lásd „help declare”."
+"    A „declare” szinonimája. Lásd: „help declare”."
 
 #: builtins.c:538
 msgid ""
@@ -3023,6 +3053,7 @@ msgstr ""
 "    hiba történik, vagy nem függvényben lett hívva."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3051,6 +3082,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3084,7 +3121,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve írási hiba esetén."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3106,7 +3143,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve írási hiba esetén."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3158,7 +3195,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha a NÉV nem egy beépített parancs, vagy\n"
 "    hiba történt."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3177,7 +3214,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a parancs."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3255,7 +3292,7 @@ msgstr ""
 "    Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n"
 "    kapcsolók, vagy hiba történt."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3297,7 +3334,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve, ha a PARANCS nem található vagy sikertelen\n"
 "    az átirányítás."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3310,7 +3347,7 @@ msgstr ""
 "utolsó\n"
 "    parancs kilépési kódjával lép ki."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3323,7 +3360,7 @@ msgstr ""
 "    Kilép a bejelentkező parancsértelmezőből az N kilépési kóddal. Hibával\n"
 "    tér vissza, ha nem bejelentkező parancsértelmezőből hívják."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3381,7 +3418,7 @@ msgstr ""
 "eltérőt\n"
 "    hiba esetén."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3403,7 +3440,7 @@ msgstr ""
 "    Az előtérbe hozott parancs állapota (annak kilépésekor), vagy nem nulla\n"
 "    hiba esetén."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3427,7 +3464,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy\n"
 "    hiba történt."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3470,7 +3507,8 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve, ha a NÉV nem található vagy érvénytelen\n"
 "    kapcsolót kap."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3485,7 +3523,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3509,7 +3547,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3519,7 +3557,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3551,17 +3590,19 @@ msgstr ""
 "    bejegyzést listázza.\n"
 "    \n"
 "    Kapcsolók:\n"
-"      -c\tminden előzmény törlése\n"
-"      -d szám\ta SZÁM számú bejegyzés törlése\n"
-"      -a\ta futó munkamenet előzményeinek központi fájlba írása\n"
-"      -n\tminden olvasatlan előzménysor kiírása az előzményfájlból\n"
-"      -r\telőzményfájl beolvasása és előzménylistához írása\n"
-"      -w\taz aktuális előzmények előzményfájlba írása és\n"
-"      \t\telőzménylistához írása\n"
+"      -c\taz előzménylista törlése az összes bejegyzésének törlésével\n"
+"      -d eltolás\taz ELTOLÁS pozícióban lévő előzménybejegyzés törlése\n"
+"      -a\ta munkamenet előzménysorainak hozzáfűzése az előzményfájlhoz\n"
+"      -n\tminden olyan előzménysor beolvasása, amelyek még nem lettek\n"
+"    \t\tbeolvasva az előzményfájlból, és azok hozzáfűzése az\n"
+"    \t\telőzménylistához\n"
+"      -r\telőzményfájl beolvasása, és a tartalom hozzáfűzése az\n"
+"    \t\telőzménylistához\n"
+"      -w\taz aktuális előzmények előzményfájlba írása\n"
 "    \n"
 "      -p\telőzménykiegészítés végrehajtása minden ARGUMENTUMON, és az\n"
-"      \t\teredmény kiírása előzménylistán való tárolás nélkül\n"
-"      -s\tARGUMENTUMOK hozzáírása egyetlen bejegyzésként a listához\n"
+"      \t\teredmény megjelenítése előzménylistán való tárolás nélkül\n"
+"      -s\tARGUMENTUMOK hozzáfűzése egyetlen bejegyzésként a listához\n"
 "    \n"
 "    Ha FÁJLNÉV is meg van adva, az lesz előzményfájlként használva. "
 "Különben\n"
@@ -3575,7 +3616,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n"
 "    történik."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3620,7 +3661,7 @@ msgstr ""
 "    Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n"
 "    hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3652,8 +3693,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÁMOT"
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3683,21 +3723,22 @@ msgstr ""
 "    \n"
 "    Kapcsolók:\n"
 "      -s sig\ta SIG egy szignálnév\n"
-"      -n sig\taSIG egy szignálszám\n"
-"      -l\ta szignálnevek listázása; ha argumentumok is követik, akkor\n"
-"    \t\taz általuk meghatározott szignálok nevei kerülnek listázásra\n"
+"      -n sig\ta SIG egy szignálszám\n"
+"      -l\ta szignálnevek listázása; ha argumentumok követik a -l kapcsolót,\n"
+"    \t\takkor azok szignálszámoknak lesznek tekintve ahhoz, hogy mely\n"
+"    \t\tneveket kell listázni\n"
 "      -L\ta -l szinonimája\n"
 "    \n"
-"    A kill két okból beépített parancs: így lehetővé teszi munkaszámok\n"
-"    használatát PID helyett, továbbá lehetségessé válik folyamatok "
-"kilövése,\n"
-"    ha a folyamatok számának korlátja kimerült.\n"
+"    A kill két okból beépített parancs: így lehetővé teszi munkaazonosítók\n"
+"    használatát folyamatazonosítók helyett, továbbá lehetségessé válik a\n"
+"    folyamatok kilövése, ha a folyamatok számának korlátja elérve.\n"
 "    \n"
 "    Kilépési kód:\n"
-"    Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n"
+"    Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, vagy nem "
+"történik\n"
 "    hiba."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3780,7 +3821,8 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3801,7 +3843,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3869,7 +3911,7 @@ msgstr ""
 "    A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n"
 "    (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3891,8 +3933,7 @@ msgstr ""
 "    N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n"
 "    visszatérni – ekkor sikertelenséget jelez."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4011,7 +4052,7 @@ msgstr ""
 "              noclobber    mint -C\n"
 "              noexec       mint -n\n"
 "              noglob       mint -f\n"
-"              nolog        (jelenleg nincs hatása)\n"
+"              nolog        jelenleg elfogadott, de mellőzött\n"
 "              notify       mint -b\n"
 "              nounset      mint -u\n"
 "              onecmd       mint -t\n"
@@ -4042,7 +4083,7 @@ msgstr ""
 "          parancsértelmezőnél alapértelmezés\n"
 "      -P  Parancsok végrehajtásánál szimbolikus linkek követésének tiltása\n"
 "          (például cd esetében)\n"
-"      -T  A DEBUG csapdát öröklik a függvények\n"
+"      -T  A DEBUG és RETURN csapdát öröklik a függvények\n"
 "      --  A további argumentumok hozzárendelése a pozicionális "
 "paraméterekhez.\n"
 "          Ha nincsenek további argumentumok, akkora a pozicionális "
@@ -4062,7 +4103,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4104,7 +4145,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n"
 "    olvasható."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4138,7 +4179,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4176,7 +4217,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4194,7 +4235,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4219,7 +4260,7 @@ msgstr ""
 "sikertelenül,\n"
 "    ha a FÁJLNÉV nem olvasható."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4245,7 +4286,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n"
 "    történt."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4406,7 +4447,7 @@ msgstr ""
 "vagy\n"
 "    érvénytelen argumentumokat kap."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4418,7 +4459,7 @@ msgstr ""
 "    Ez a „test” beépített parancs szinonimája, de annyiban eltér tőle,\n"
 "    hogy az utolsó argumentuma „]” kell legyen – a nyitó „]”-lel összhangban."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4437,7 +4478,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Mindig sikeres."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4520,7 +4561,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha a SZIGNÁL érvénytelen, vagy érvénytelen\n"
 "    kapcsolót kap."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4572,7 +4613,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4667,7 +4708,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4703,7 +4744,8 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4711,13 +4753,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4738,7 +4782,7 @@ msgstr ""
 "    ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n"
 "    sikertelenül."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4763,7 +4807,7 @@ msgstr ""
 "kapcsoló\n"
 "    esetén sikertelenül."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4785,7 +4829,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsó parancs kilépési kódját adja vissza."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4816,7 +4860,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsó parancs kilépési kódját adja."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4852,7 +4896,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsó parancs kilépési kódját adja vissza."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4882,7 +4926,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    A kilépési kód a CSŐVEZETÉK kilépési kódja lesz."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4902,7 +4946,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsó parancs kilépési kódját adja vissza."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4935,7 +4979,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utoljára végrehajtott parancs kilépési kódja."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4954,7 +4998,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsónak végrehajtott parancs kilépési kódja."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4973,8 +5017,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsónak végrehajtott parancs kilépési kódja."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4988,15 +5031,15 @@ msgid ""
 msgstr ""
 "Egy NÉV nevű társfolyamat létrehozása.\n"
 "    \n"
-"    A PARANCS aszinkron végrehajtása, a szabványos ki- és bemenet\n"
-"    átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb\n"
-"    0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n"
+"    PARANCS aszinkron végrehajtása, a parancs szabványos ki- és bemenetének\n"
+"    átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb-\n"
+"    változó 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n"
 "    Az alapértelmezett NÉV: „COPROC”.\n"
 "    \n"
 "    Kilépési kód:\n"
-"    A PARANCS kilépési kódjával tér vissza."
+"    A coproc parancs 0-s kilépési kóddal tér vissza."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5020,7 +5063,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve ha a NÉV csak olvasható."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5038,7 +5081,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Az utolsó parancs kilépési kódját adja vissza."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5062,7 +5105,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    A visszaállított parancs kilépési kódjával lép ki."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5080,7 +5123,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5129,7 +5172,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    0 vagy 1 a KIFEJEZÉSTŐL függően."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5230,7 +5273,7 @@ msgstr ""
 "    HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n"
 "    \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5288,7 +5331,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
 "    során történő hiba esetén."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5337,7 +5380,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
 "    során történő hiba esetén."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5387,14 +5430,14 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5424,7 +5467,7 @@ msgstr ""
 "    Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n"
 "    hibás kapcsolókat kap vagy az OPTNÉV tiltva van."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5494,7 +5537,8 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n"
 "    értékadás hibával járt."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5512,10 +5556,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5543,7 +5591,7 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5565,7 +5613,8 @@ msgstr ""
 "    Kilépési kód:\n"
 "    Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5580,6 +5629,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5622,7 +5672,7 @@ msgstr ""
 "nincs\n"
 "    még megadva."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5694,7 +5744,7 @@ msgstr ""
 "    Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n"
 "    vagy nem indexelt TÖMB megadása esetén."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5703,50 +5753,3 @@ msgstr ""
 "Sorok olvasása egy tömbváltozóba.\n"
 "    \n"
 "    A „mapfile” szinonimája."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
-
-#~ msgid ""
-#~ ".  With EXPR, returns\n"
-#~ "    "
-#~ msgstr ""
-#~ "kifejezéssel, EXPR-rel a\n"
-#~ "    "
-
-#~ msgid ""
-#~ "; this extra information can be used to\n"
-#~ "    provide a stack trace.\n"
-#~ "    \n"
-#~ "    The value of EXPR indicates how many call frames to go back before "
-#~ "the\n"
-#~ "    current one; the top frame is frame 0."
-#~ msgstr ""
-#~ " kifejezéssel tér vissza. Ez az adat stack trace kiírásához\n"
-#~ "    lehet hasznos.\n"
-#~ "    \n"
-#~ "    Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen "
-#~ "mélyre\n"
-#~ "    lépjen vissza; a verem tetején a 0-s keret van."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "A licenc GPLv2+: a GNU GPL 2. vagy újabb változata <http://gnu.org/"
-#~ "licenses/gpl.html>\n"
index 388299aaf9b040bfae8188138d865f9b69c4a31a..118b170a9eda2d579432e714b769734bae339a25 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index b78f067a3368b3bb4e87bf39fe9157a238bf937a..596273dac34caa258dff97d233a2dd205d38d5a7 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 4.3-rc2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2014-08-06 12:45+0700\n"
 "Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -15,121 +15,122 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: id\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "array subscript buruk"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: kunci array assosiasi tidak valid"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: tidak dapat mengassign ke index tidak-numeric"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: tidak dapat membuat: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "tidak menutup '%c' dalam %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: hilang pemisah colon"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "brace expansion: cannot allocate memory for %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "brace expansion: failed to allocate memory for %d elements"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "brace expansion: failed to allocate memory for `%s'"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': nama alias tidak valid"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "pengubahan baris tidak aktif"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "'%s': nama keymap tidak valid"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: tidak dapat membaca: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "'%s': tidak dapat melepaskan"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "'%s': nama fungsi tidak dikenal"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s tidak terikat ke kunci apapun.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s dapat dipanggil melalui "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "'%s': tidak dapat melepaskan"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "jumlah loop"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop"
 
@@ -143,236 +144,236 @@ msgstr ""
 "    \n"
 "    Tanpa EXPR, kembali "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME tidak diset"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "terlalu banyak argumen"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "top direktori yang baru."
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD tidak diset"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "baris %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "peringatan: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: penggunaan: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: pilihan membutuhkan sebuah argumen"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: argumen numeric dibutuhkan"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: tidak ditemukan"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: pilihan tidak valid"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nama pilihan tidak valid"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': bukan sebuah identifier yang valid"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "nomor oktal tidak valid"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "nomor hexa tidak valid"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "nomor tidak valid"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: spesifikasi sinyal tidak valid"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variabel baca-saja"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s diluar jangkauan"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumen"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s diluar jangkauan"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: tidak ada pekerjaan seperti itu"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: tidak ada pengontrol kerja"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "tidak ada pengontrol kerja"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: terbatas"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "terbatas"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: bukan sebuah builtin shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "gagal menulis: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "error menentukan atribut terminal: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "error mendapatkan atribut terminal: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error mengambil direktori saat ini: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: spesifikasi pekerjaan ambigu"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nama aksi tidak valid"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: tidak ada spesifikasi completion"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 "peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 "peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "saat ini sedang tidak menjalankan fungsi completion"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "hanya dapat digunakan dalam sebuah fungsi"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: reference variable cannot be an array"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: nameref variable self references not allowed"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: circular name reference"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: fungsi baca-saja"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: tidak dapat menghapus variabel array secara ini"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: tidak dapat mengubah assosiasi ke array index"
@@ -406,68 +407,68 @@ msgstr "%s: bukan dinamically loaded"
 msgid "%s: cannot delete: %s"
 msgstr "%s: tidak dapat menghapus: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: bukan sebuah direktori"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: bukan sebuah file umum"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file terlalu besar"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: tidak dapat menjalankan berkas binary"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: tidak dapat menjalankan: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "bukan sebuah login shell: gunakan `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Ada pekerjaan yang terhenti.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Ada pekerjaan yang sedang berjalan.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "perintah tidak ditemukan"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "spesifikasi sejarah"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: tidak dapat membuka file sementara: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "sekarang"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "pekerjaan %d dimulai tanpa pengontrol pekerjaan"
@@ -482,28 +483,27 @@ msgstr "%s: pilihan tidak legal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing dinonaktifkan"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tabel hash kosong\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "tekan\tperintah\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Perintah shell cocok dengan kata kunci `"
 msgstr[1] "Perintah shell cocok dengan kata kunci `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -511,12 +511,12 @@ msgstr ""
 "tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -"
 "k %s' atau `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: tidak dapat membuka: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -539,20 +539,21 @@ msgstr ""
 "aktif.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posisi sejarah"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: argumen limit tidak valid"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: expansi sejarah gagal"
@@ -566,16 +567,16 @@ msgstr "%s: inlib gagal"
 msgid "no other options allowed with `-x'"
 msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumen harus diproses atau ID pekerjaan"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Kesalahan tidak diketahui"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "diduga sebuah ekspresi"
 
@@ -584,69 +585,69 @@ msgstr "diduga sebuah ekspresi"
 msgid "%s: not an indexed array"
 msgstr "%s: bukan sebuah indeks array"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: spesifikasi file deskripsi tidak valid"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: file deskriptor %s tidak valid"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: jumlah baris tidak valid"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: asal array tidak valid"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: nama aksi tidak valid"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nama variabel array kosong"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "bantuan array variabel dibutuhkan"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': hilang karakter format"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': spesifikasi timeout tidak valid"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': karakter format tidak valid"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "peringatan: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "format parsing problem: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "hilang digit hexa untuk \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "hilang digit hexa untuk \\%c"
@@ -660,19 +661,19 @@ msgstr "tidak ada direktori lain"
 msgid "%s: invalid argument"
 msgstr "%s: argumen limit tidak valid"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<direktori saat ini>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "direktori stack kosong"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "index direktori stack"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -717,7 +718,7 @@ msgstr ""
 "ditampilkan oleh\n"
 "    \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -764,7 +765,7 @@ msgstr ""
 "    \n"
 "    Builtin `dirs' menampilkan direktori stack."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -805,40 +806,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: spesifikasi timeout tidak valid"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "error baca: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: tidak dapat unset"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: tidak dapat unset: baca-saja %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: bukan sebuah variabel array"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: bukan sebuah fungsi"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: tidak dapat unset"
@@ -847,20 +848,20 @@ msgstr "%s: tidak dapat unset"
 msgid "shift count"
 msgstr "shift terhitung"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nama pilihan shell tidak valid"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "argumen nama file dibutuhkan"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: berkas tidak ditemukan"
@@ -873,61 +874,61 @@ msgstr "tidak dapat suspend"
 msgid "cannot suspend a login shell"
 msgstr "tidak dapat suspend sebuah login shell"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s sudah dialiasi ke `%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s adalah sebuah shell dengan kata kunci\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s adalah sebuah fungsi\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s adalah sebuah shell builtin\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s adalah sebuah shell builtin\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s adalah %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s memiliki hash (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: argumen limit tidak valid"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': perintah buruk"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: tidak dapat get limit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "batas"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: tidak dapat memodifikasi batas: %s"
@@ -946,360 +947,370 @@ msgstr "`%c': operator mode symbolic tidak valid"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': mode karakter symbolic tidak valid"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " baris "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "perintah terakhir: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "membatalkan..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "perintah error tidak diketahui"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "tipe perintah buruk"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "konektor buruk"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "lompat buruk"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variabel tidak terikat"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': karakter format tidak valid"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "pipe error"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, fuzzy, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "%s: maximum function nesting level exceeded (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, fuzzy, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximum function nesting level exceeded (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximum function nesting level exceeded (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: perintah tidak ditemukan"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: interpreter buruk"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: tidak dapat menjalankan berkas binary: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "`%s': adalah sebuah shell builtin"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "tidak dapat menduplikasikan fd %d ke fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "expresi level rekursi terlewati"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "rekursi stack underflow"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntax error dalam expresi"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "mencoba menempatkan ke bukan sebuah variabel"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "syntax error dalam expresi"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "dibagi oleh 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: tanda expassign buruk"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "`:' diharapkan untuk sebuah pernyataan kondisional"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponen kurang dari 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "hilang `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntax error: operand diharapkan"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntax error: operator arithmetic tidak valid"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (error token adalah \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "basis arithmetic tidak valid"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "nilai terlalu besar untuk basis"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: expresi error\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: tidak dapat mengakses direktori orang tua"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "tidak dapat mereset mode nodelay untuk fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "tidak dapat mengalokasikan berkas deskripsi bari untuk masukan bash dari fd %"
 "d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "simpan bash_input: buffer telah ada untuk fd %d baru"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: process %5ld (%s) dalam the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: tidak ada pid seperti itu"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "sinyal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Selesai"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Terhenti"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Terhenti(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Berjalan"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Selesai(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Keluar %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Status tidak diketahui"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core didump) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "anak setpgid (%ld ke %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld bukan sebuah anak dari shell ini"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Tidak ada catatan untuk proses %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: pekerjaan %d terhenti"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: pekerjaan telah selesai"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: baris %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core didump)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd sekarang: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp gagal"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: baris disiplin"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: baris disiplin"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "tidak dapat menset terminal proses grup (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "tidak ada pengontrol pekerjaan dalam shell ini"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: gagal assertion: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1308,39 +1319,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: assertion rusak\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "tidak diketahui"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blok dalam daftar bebas clobbered"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: awal dan akhir dari ukuran potongan berbeda"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: awal dan akhir dari ukuran potongan berbeda"
 
@@ -1383,22 +1394,22 @@ msgstr "%s: spesifikasi jalur network buruk"
 msgid "network operations not supported"
 msgstr "operasi jaringan tidak dilayani"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s"
@@ -1416,148 +1427,148 @@ msgstr "Anda memiliki surat baru dalam $_"
 msgid "The mail in %s has been read\n"
 msgstr "Surat dalam %s telah dibaca\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntax error: membutuhkan ekspresi arithmetic"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntax error: `;' tidak terduga"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntax error: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipe instruksi buruk %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF tidak terduga ketika mencari untuk `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntax error dalam ekspresi kondisional"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "tanda `%s' tidak terduga, diduga `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "diduga `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argumen tidak terduga `%s' ke operator kondisional unary"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argumen tidak terduga untuk operasi unary kondisional"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "operator binary kondisional diduga"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argumen `%s' tidak terduga ke operator binary kondisional"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argumen tidak terduga ke operasi binary kondisional"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "tanda `%c' tidak terduga dalam perintah kondisional"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "tanda `%s' tidak terduga dalam perintah kondisional"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "tanda %d tidak terduga dalam perintah kondisional"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntax error didekat tanda `%s' yang tidak terduga"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntax error didekat `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: tidak terduga diakhir dari berkas"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntax error"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: fungsi `%s' tidak ditemukan"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1586,90 +1597,94 @@ msgstr "xtrace_set: berkas penunjuk KOSONG"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: '%c': format karakter tidak valid"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "berkas deskripsi diluar dari jangkauan"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redirect ambigu"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: tidak dapat menulis berkas yang sudah ada"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricted: tidak dapat meredirect keluaran"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "redirection error: tidak dapat menduplikasi fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "tidak dapat menemukan /tmp, tolong buat!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp harus berupa sebuah nama direktori yang valid"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: pilihan tidak valid"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "tidak dapat mereset mode nodelay untuk fd %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "tidak dapat mereset mode nodelay untuk fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: bukan sebuah direktori"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Aku tidak memiliki nama!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versi %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1678,54 +1693,54 @@ msgstr ""
 "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n"
 "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU pilihan panjang:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Pilihan shell:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s atau pilihan -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan "
 "shell.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting "
 "shell.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operasi tidak valid"
@@ -1899,92 +1914,97 @@ msgstr "Sinyal tidak diketahui #"
 msgid "Unknown Signal #%d"
 msgstr "Sinyal tidak diketahui #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "tidak dapat membuat pipe untuk proses substitusi"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "tidak dapat membuat anak untuk proses substitusi"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "tidak dapat membuka named pipe %s untuk membaca"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "tidak dapat membukan named pipe %s untuk menulis"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "tidak dapat membuat pipe untuk perintah substitusi"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "tidak dapat membuat anak untuk perintah substitusi"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: substitusi buruk"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: jumlah baris tidak valid"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "`%s': nama alias tidak valid"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter kosong atau tidak diset"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter kosong atau tidak diset"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expresi < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: substitusi buruk"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: tidak dapat meng-assign dengan cara ini"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1992,12 +2012,12 @@ msgstr ""
 "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian "
 "aritmetika"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "tidak cocok: %s"
@@ -2020,30 +2040,35 @@ msgstr "')' diduga"
 msgid "`)' expected, found %s"
 msgstr "`)' diduga, ditemukan %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: operator unary diduga"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: operator binary diduga"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "hilang `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "nomor sinyal tidak valid"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "%s: maximum function nesting level exceeded (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2051,87 +2076,87 @@ msgstr ""
 "run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d (%"
 "s) kediri sendiri"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: sinyal buruk %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error mengimpor definisi fungsi untuk `%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "level shell (%d) terlalu tinggi, mereset ke 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: tidak ada context fungsi di scope ini"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
 
-#: variables.c:3043
+#: variables.c:3453
 #, fuzzy, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: tidak ada context fungsi dalam scope ini"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s memiliki exportstr kosong"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "karakter %d tidak valid dalam exporstr untuk %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "bukan `=' dalam exportstr untuk %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: bukan global_variable context"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan "
 "sementara"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: tidak dapat membuka sebagai BERKAS"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: diluar jangkauan"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2157,22 +2182,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: tidak dapat mengalokasikan %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s: %d: tidak dapat teralokasi %lu bytes"
@@ -2387,7 +2412,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2479,8 +2505,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] format [argumen]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2498,7 +2525,8 @@ msgstr ""
 "F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]"
 
 #: builtins.c:242
@@ -2511,9 +2539,10 @@ msgstr ""
 "quantum] [array]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c "
 "quantum] [array]"
@@ -2699,6 +2728,7 @@ msgstr ""
 "    Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2709,7 +2739,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Menjalankan shell builtins.\n"
 "    \n"
@@ -2957,11 +2987,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3080,6 +3110,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3112,7 +3148,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan sukses kecuali sebuah penulisan error terjadi."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3134,7 +3170,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan sukses kecuali sebuah penulisan error terjadi."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3190,7 +3226,7 @@ msgstr ""
 "   Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah "
 "error terjadi."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3211,7 +3247,7 @@ msgstr ""
 "    Mengembalikan status keluar dari perintah atau sukses jika perintah "
 "adalah kosong."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3297,7 +3333,7 @@ msgstr ""
 "dari pilihan\n"
 "    ditemui atau sebuah error terjadi."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3341,7 +3377,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah "
 "redireksi error terjadi."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3354,7 +3390,7 @@ msgstr ""
 "keluaran\n"
 "    adalah status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3368,7 +3404,7 @@ msgstr ""
 "error jika tidak dijalankan\n"
 "    dalam sebuah login shell."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3427,7 +3463,7 @@ msgstr ""
 "    Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-"
 "nol jika sebuah error terjadi."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3448,7 +3484,7 @@ msgstr ""
 "    Status dari perintah yang ditempatkan di foreground, atau gagal jika "
 "sebuah error terjadi."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3472,7 +3508,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau "
 "sebuah error terjadi."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3519,7 +3555,7 @@ msgstr ""
 "   Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan "
 "tidak valid telah diberikan."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3535,7 +3571,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3561,7 +3597,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak "
 "valid diberikan."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3571,7 +3607,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3637,7 +3674,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah error terjadi."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3686,7 +3723,7 @@ msgstr ""
 "sebuah error terjadi.\n"
 "    Jika -x digunakan, mengembalikan status keluar dari PERINTAH."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3719,7 +3756,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC "
 "diberikan."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3764,7 +3801,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah error terjadi."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3852,7 +3889,7 @@ msgstr ""
 "    Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 "
 "dikembalikan Jika tidak."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3874,7 +3911,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3955,7 +3992,7 @@ msgstr ""
 "    atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -"
 "u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3977,7 +4014,7 @@ msgstr ""
 "    Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau "
 "script."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4154,7 +4191,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4194,7 +4231,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah NAMA adalah baca-saja."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4229,7 +4266,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "NAMA tidak valid."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4270,7 +4307,7 @@ msgstr ""
 "    Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau "
 "NAMA tidak valid."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4288,7 +4325,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4314,7 +4351,7 @@ msgstr ""
 "BERKAS; gagal jika\n"
 "    NAMA BERKAS tidak dapat dibaca."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4340,7 +4377,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau "
 "sebuah error terjadi."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4507,7 +4544,7 @@ msgstr ""
 "EXPR mengevaluasi ke\n"
 "       salah atau sebuah argumen tidak valid diberikan."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4519,7 +4556,7 @@ msgstr ""
 "    Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n"
 "    harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4539,7 +4576,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Selalu sukses."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4620,7 +4657,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau "
 "sebuah pilihan tidak valid diberikan."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4683,7 +4720,7 @@ msgstr ""
 "    Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada "
 "yang tidak ditemukan."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4777,7 +4814,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah error terjadi."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4815,7 +4852,8 @@ msgstr ""
 "    Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak "
 "valid diberikan."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4823,13 +4861,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4850,7 +4890,7 @@ msgstr ""
 "pilihan tidak\n"
 "    valid diberikan."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4876,7 +4916,7 @@ msgstr ""
 "pilihan tidak valid\n"
 "    diberikan."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4900,7 +4940,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4930,7 +4970,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4967,7 +5007,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4995,7 +5035,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Status kembali adalah status kembali dari PIPELINE."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5013,7 +5053,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan setatus dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5051,7 +5091,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5069,7 +5109,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5086,7 +5126,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dijalankan."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5110,7 +5150,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status keluar dari PERINTAH."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5135,7 +5175,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan sukses kecuali NAMA adalah baca-saja."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5154,7 +5194,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari perintah terakhir yang dieksekusi."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5181,7 +5221,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan status dari pekerjaan yang dilanjutkan."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5199,7 +5239,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5256,7 +5296,7 @@ msgstr ""
 "    Status Keluar:\n"
 "    0 atau 1 tergantun dari nilai dari EKSPRESI."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5370,7 +5410,7 @@ msgstr ""
 "digunakan untuk menentukan dimana\n"
 "    \t\tperintah seharusnya disimpan dalam daftar sejarah.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5431,7 +5471,7 @@ msgstr ""
 "atau pemindahan\n"
 "    direktori gagal."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5487,7 +5527,7 @@ msgstr ""
 "atau pemindahan\n"
 "    direktori gagal."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5544,14 +5584,14 @@ msgstr ""
 "    Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan "
 "atau sebuah error terjadi."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5583,7 +5623,7 @@ msgstr ""
 "tidak valid diberikan\n"
 "    atau OPTNAME dinonaktifkan."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5648,7 +5688,7 @@ msgstr ""
 "sebuah penulisan atau penempatan\n"
 "    error terjadi."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5667,10 +5707,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5702,7 +5746,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah error terjadi."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5725,7 +5769,8 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "sebuah error terjadi."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5740,6 +5785,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5787,7 +5833,7 @@ msgstr ""
 "NAMA tidak memiliki\n"
 "    spesifikasi penyelesaian yang terdefinisi."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5865,7 +5911,7 @@ msgstr ""
 "    Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
 "ARRAY adalah baca-saja."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5875,9 +5921,8 @@ msgstr ""
 "    \n"
 "    Sebuah sinonim untuk `mapfile'."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc."
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5891,9 +5936,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "kali"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc."
-
 #~ msgid ""
 #~ ".  With EXPR, returns\n"
 #~ "    "
index 99e98a493ca7f469b76b05c4b36cb400bc5a85a7..bda505ca7452b914563f2d8ec7bd5affb0d78f6d 100644 (file)
Binary files a/po/it.gmo and b/po/it.gmo differ
index 6bff65a299079108706d6f7b1e970664a2581980..97ed1ae7461cd0d9a6271dad2c8cbf210a02ce84 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash-4.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2011-10-17 09:14+0200\n"
 "Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -15,123 +15,124 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural= (n != 1)\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "indice dell'array errato"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: impossibile convertire un array indicizzato in uno associativo"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: chiave dell'array associativo non valida"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: impossibile assegnare a un indice non numerico"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s: %s: deve essere usato un indice nell'assegnazione di un array associativo"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: impossibile creare: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: impossibile trovare una mappatura per il comando"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: il primo carattere non spazio non è \"\"\""
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "carattere di chiusura \"%c\" non presente in %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: separatore di tipo due punti mancante"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "\"%s\": nome alias non valido"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "modifica delle righe non abilitata"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "\"%s\": nome della mappatura non valido"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: impossibile leggere: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "\"%s\": impossibile eliminare l'associazione"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "\"%s\" nome della funzione sconosciuto"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s non è associato ad alcun tasto.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s può essere invocato tramite "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "\"%s\": impossibile eliminare l'associazione"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "numero di cicli"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\""
 
@@ -145,234 +146,234 @@ msgstr ""
 "    \n"
 "    Senza ESPR, restituisce "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME non impostata"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "troppi argomenti"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "nessun'altra directory"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD non impostata"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "riga %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "attenzione: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uso: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: l'opzione richiede un argomento"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: è necessario un argomento numerico"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: non trovata"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: opzione non valida"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nome dell'opzione non valido"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "\"%s\": non è un identificatore valido"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "numero ottale non valido"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "numero esadecimale non valido"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "numero non valido"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: specifica di segnale non valida"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "\"%s\": non è un pid o un numero di job valido"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variabile in sola lettura"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fuori dall'intervallo"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argomento"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s fuori dall'intervallo"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: job inesistente"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: nessun controllo dei job"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "nessun controllo dei job"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: limitato"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "limitato"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: non è un comando interno di shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "errore in scrittura: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "errore nell'impostazione degli attributi del terminale: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "errore nel recupero degli attributi del terminale: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: errore nel recupero della directory corrente: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: specifica di job ambigua"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nome azione non valido"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: nessun completamento specificato"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "funzione di completamento attualmente non in esecuzione"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "può essere usato solo in una funzione"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
+msgstr "\"%s\": nome alias non valido"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "impossibile usare \"-f\" per creare funzioni"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funzione in sola lettura"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: impossibile eliminare variabili array in questo modo"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: impossibile convertire un array associativo in uno indicizzato"
@@ -406,68 +407,68 @@ msgstr "%s: non caricato dinamicamente"
 msgid "%s: cannot delete: %s"
 msgstr "%s: impossibile eliminare: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: è una directory"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: non è un file regolare"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file troppo grande"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: impossibile eseguire il file binario"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: impossibile eseguire: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "non è una shell di login: utilizzare \"exit\""
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Sono presenti job interrotti.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Ci sono job in esecuzione.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "nessun comando trovato"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "specifica della cronologia"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: impossibile aprire il file temp: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "attuale"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d avviato senza controllo dei job"
@@ -482,28 +483,27 @@ msgstr "%s: opzione illecita -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: l'opzione richiede un argomento -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing disabilitato"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s tabella di hash vuota\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "rich.\tcomando\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Comandi di shell corrispondenti alla parola chiave \""
 msgstr[1] "Comandi di shell corrispondenti alle parole chiave \""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -511,12 +511,12 @@ msgstr ""
 "nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o "
 "\"man -k %s\" o \"info %s\"."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: impossibile aprire: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -537,20 +537,21 @@ msgstr ""
 "Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "impossibile usare più di uno tra -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posizione nella cronologia"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: argomento di limite non valido"
+msgstr "%s: nome dell'opzione non valido"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: espansione della cronologia non riuscita"
@@ -564,16 +565,16 @@ msgstr "%s: inlib non riuscito"
 msgid "no other options allowed with `-x'"
 msgstr "nessuna altra opzione permessa con \"-x\""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: gli argomenti devono essere ID di processo o di job"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Errore sconosciuto"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "attesa espressione"
 
@@ -582,69 +583,69 @@ msgstr "attesa espressione"
 msgid "%s: not an indexed array"
 msgstr "%s: non è un array indicizzato"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: specifica di descrittore di file non valida"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: descrittore di file non valido: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: numero di righe non valido"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: origine dell'array non valida"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: quantum di callback non valido"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nome della variabile array vuoto"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "necessario il supporto alla variabile array"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "\"%s\": manca il carattere di formato"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "\"%c\": specifica di formato dell'orario non valida"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "\"%c\": carattere di formato non valido"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "attenzione: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "cifra esadecimale mancante in \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "cifra unicode mancante in \\%c"
@@ -658,19 +659,19 @@ msgstr "nessun'altra directory"
 msgid "%s: invalid argument"
 msgstr "%s: argomento di limite non valido"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<nessuna directory corrente>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "stack delle directory vuoto"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "indice dello stack delle directory"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -713,7 +714,7 @@ msgstr ""
 "      -N\tVisualizza l'N-sima voce contando a partire da destra dell'elenco\n"
 "\tmostrato da dirs quando invocato senza opzioni, iniziando da zero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -759,7 +760,7 @@ msgstr ""
 "    \n"
 "    Il comando interno \"dirs\" visualizza lo stack delle directory."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -802,41 +803,41 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: specifica di timeout non valida"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "errore in lettura: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "è possibile eseguire \"return\" solo da una funzione o da uno script chiamato"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "impossibile azzerare contemporaneamente una funzione e una variabile"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: impossibile azzerare"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: impossibile azzerare: %s in sola lettura"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: non è una variabile array"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: non è una funzione"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: impossibile azzerare"
@@ -845,20 +846,20 @@ msgstr "%s: impossibile azzerare"
 msgid "shift count"
 msgstr "numero di scorrimenti"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nome dell'opzione di shell non valido"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "necessario un nome file come argomento"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: file non trovato"
@@ -871,61 +872,61 @@ msgstr "impossibile sospendere"
 msgid "cannot suspend a login shell"
 msgstr "impossibile sospendere una shell di login"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s ha \"%s\" come alias\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s è una parola chiave di shell\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s è una funzione\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s è un comando interno di shell\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s è un comando interno di shell\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s è %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "hash effettuato su %s (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: argomento di limite non valido"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "\"%c\": comando errato"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: impossibile recuperare il limite: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limite"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: impossibile modificare il limite: %s"
@@ -944,359 +945,369 @@ msgstr "\"%c\": operatore di modo simbolico non valido"
 msgid "`%c': invalid symbolic mode character"
 msgstr "\"%c\": carattere di modo simbolico non valido"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " riga "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "ultimo comando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Interruzione..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "errore di comando sconosciuto"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "tipo di comando errato"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "connettore errato"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "salto errato"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variabile non assegnata"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atempo di attesa scaduto per l'input: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "impossibile redirigere lo standard input da /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "errore della pipe"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: comando non trovato"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: interprete errato"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: impossibile eseguire il file binario"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s è un comando interno di shell\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "impossibile duplicare fd %d su fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "superato il livello di ricorsione dell'espressione"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "underflow dello stack di ricorsione"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "errore di sintassi nell'espressione"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "tentata un'assegnazione a una non variabile"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "errore di sintassi nell'espressione"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "divisione per 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "bug: token di expassign errato"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "atteso \":\" per l'espressione condizionale"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "esponente minore di 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "\")\" mancante"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "errore di sintassi: atteso un operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "errore di sintassi: operatore aritmetico non valido"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (il token dell'errore è \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "base aritmetica non valida"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valore troppo grande per la base"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: errore di espressione\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: impossibile accedere alle directory padre"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "impossibile reimpostare il modo nodelay per fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "impossibile allocare un nuovo descrittore di file per l'input della bash da "
 "fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer già esistente per il nuovo fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pipe pgrp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "il pid %d del fork appare nel job in esecuzione %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: processo %5ld (%s) in the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) segnato come ancora in vita"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: pid inesistente"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Segnale %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Completato"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Fermato"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Fermato(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "In esecuzione"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Eseguito(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Uscita %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Stato sconosciuto"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dump creato) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (dir: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid del figlio (%ld a %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: il pid %ld non è un figlio di questa shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: nessun record del processo %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: il job %d è fermo"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: il job è terminato"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: il job %d è già in background"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: riga %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dump creato)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(dir ora: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp non riuscita"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: disciplina di linea"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: disciplina di linea"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "impossibile impostare il gruppo di processi del terminale (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "nessun controllo dei job in questa shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: asserzione non riuscita: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1305,39 +1316,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: asserzione non riuscita\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "sconosciuto"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blocco eliminato nell'elenco dei disponibili"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: chiamata con un argomento di blocco già liberato"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: chiamata con un argomento di blocco non allocato"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: dimensioni diverse dei blocchi di inizio e di fine"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: chiamata con un argomento di blocco non allocato"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine"
 
@@ -1380,22 +1391,22 @@ msgstr "%s: specifica del percorso di rete errata"
 msgid "network operations not supported"
 msgstr "operazione di rete non supportata"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s"
@@ -1413,150 +1424,150 @@ msgstr "È presente della nuova posta in $_"
 msgid "The mail in %s has been read\n"
 msgstr "La posta in %s è stata letta\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "errore di sintassi: richiesta espressione aritmetica"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "errore di sintassi: \";\" non atteso"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "errore di sintassi: \"((%s))\""
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipo di istruzione errata %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "EOF non atteso durante la ricerca di \"%c\""
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF non atteso durante la ricerca di \"]]\""
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 "errore di sintassi nell'espressione condizionale: token non atteso \"%s\""
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "errore di sintassi nell'espressione condizionale"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "token non atteso \"%s\", era atteso \")\""
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "atteso \")\""
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argomento non atteso per l'operatore unario condizionale"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "atteso operatore binario condizionale"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argomento non atteso per l'operatore binario condizionale"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "token non atteso \"%c\" nel comando condizionale"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "token non atteso \"%s\" nel comando condizionale"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "token non atteso %d nel comando condizionale"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "errore di sintassi vicino al token non atteso \"%s\""
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "errore di sintassi vicino a \"%s\""
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "errore di sintassi: EOF non atteso"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "errore di sintassi"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Usare \"%s\" per uscire dalla shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF non atteso durante la ricerca di \")\""
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: funzione \"%s\" non trovata"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1585,90 +1596,94 @@ msgstr "xtrace_set: puntatore a file NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != numfile xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: \"%c\": carattere di formato non valido"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descrittore di file fuori dell'intervallo"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redirezione ambigua"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: impossibile sovrascrivere il file esistente"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: limitato: impossibile redirigere l'output"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "impossibile creare un file temporaneo per here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: impossibile assegnare fd a una variabile"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port non supportata senza rete"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "errore di reindirizzamento: impossibile duplicare fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "impossibile trovare /tmp, è necessario crearla"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp deve essere un nome di directory valido"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opzione non valida"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "impossibile reimpostare il modo nodelay per fd %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "impossibile reimpostare il modo nodelay per fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: è una directory"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Manca il nome"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versione %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1677,54 +1692,54 @@ msgstr ""
 "Uso:\t%s [opzione lunga GNU] [opzione] ...\n"
 "\t%s [opzione lunga GNU] [opzione] file-script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Opzioni lunghe GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opzioni di shell:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\topzione -%s oppure -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di "
 "shell.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di "
 "shell.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operazione non valida"
@@ -1898,92 +1913,97 @@ msgstr "Numero di segnale sconosciuto"
 msgid "Unknown Signal #%d"
 msgstr "Segnale sconosciuto n° %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: impossibile assegnare una lista a un membro di un array"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "impossibile creare una pipe per la sostituzione del processo"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "impossibile creare un figlio per la sostituzione del processo"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "impossibile aprire la pipe con nome %s in lettura"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "impossibile aprire la pipe con nome %s in scrittura"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "impossibile duplicare una pipe con nome %s come fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "sostituzione errata: manca «\"» di chiusura in %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "impossibile creare una pipe per la sostituzione del comando"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "impossibile creare un figlio per la sostituzione del comando"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: impossibile duplicare la pipe come fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, fuzzy, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: sostituzione errata"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: numero di righe non valido"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "\"%s\": nome alias non valido"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametro nullo o non impostato"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametro nullo o non impostato"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expressione di sottostringa < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: sostituzione errata"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: impossibile assegnare in questo modo"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1991,12 +2011,12 @@ msgstr ""
 "le versioni future della shell forzeranno la valutazione come fosse una "
 "sostituzione aritmetica"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "sostituzione errata: manca «\"» di chiusura in %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "nessuna corrispondenza: %s"
@@ -2019,30 +2039,35 @@ msgstr "atteso \")\""
 msgid "`)' expected, found %s"
 msgstr "atteso \")\", trovato %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: atteso operatore unario"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: atteso operatore binario"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "\"]\" mancante"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "numero di segnale non valido"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: valore errato in trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2050,88 +2075,88 @@ msgstr ""
 "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato "
 "nuovamente %d (%s)"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: segnale errato %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "errore nell'importazione della definizione di funzione per \"%s\""
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "livello di shell (%d) troppo alto, reimpostato a 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente"
 
-#: variables.c:2432
+#: variables.c:2674
 #, fuzzy, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: impossibile assegnare fd a una variabile"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s ha exportstr null"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "carattere non valido %d in exportstr per %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "nessun \"=\" in exportstr per %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: la prima parte di shell_variables non è un contesto di "
 "funzione"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: nessun contesto global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: la prima parte di shell_variables non è un ambito temporaneo "
 "d'ambiente"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: impossibile aprire come FILE"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s fuori dall'intervallo"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Copyright © 2011 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2157,22 +2182,22 @@ msgstr "Questo è software libero; è possibile modificarlo e ridistribuirlo.\
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Non c'è ALCUNA GARANZIA, nei limiti permessi dalla legge.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: impossibile allocare %lu byte (%lu byte allocati)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: impossibile allocare %lu byte"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: impossibile allocare %lu byte (%lu byte allocati)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: impossibile allocare %lu byte"
@@ -2391,13 +2416,13 @@ msgstr "umask [-p] [-S] [modo]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2484,8 +2509,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] formato [argomenti]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2504,7 +2530,8 @@ msgstr ""
 "suffisso] [parola]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o opzione] [-DE] [nome ...]"
 
 #: builtins.c:242
@@ -2517,9 +2544,10 @@ msgstr ""
 "quantità] [array]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-"
 "c quantità] [array]"
@@ -2705,6 +2733,7 @@ msgstr ""
 "    Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2715,7 +2744,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Esegue comandi interni di shell.\n"
 "    \n"
@@ -2974,11 +3003,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3107,6 +3136,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3144,7 +3179,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga riscontrato un errore di "
 "scrittura."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3167,7 +3202,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga riscontrato un errore di "
 "scrittura."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3223,7 +3258,7 @@ msgstr ""
 "    Restituisce successo a meno che NOME non sia un comando interno di shell "
 "o si riscontri un errore."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3243,7 +3278,7 @@ msgstr ""
 "    Restituisce lo stato di uscita del comando o successo se il comando è "
 "nullo."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3334,7 +3369,7 @@ msgstr ""
 "raggiunta\n"
 "    la fine delle opzioni o viene riscontrato un errore."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3378,7 +3413,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia trovato il COMANDO o si "
 "riscontri un errore di ridirezione."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3390,7 +3425,7 @@ msgstr ""
 "    Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n"
 "    è quello dell'ultimo comando eseguito."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3404,7 +3439,7 @@ msgstr ""
 "se non eseguito\n"
 "    in una shell di login."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3464,7 +3499,7 @@ msgstr ""
 "    Restituisce successo o lo stato del comando eseguito, non zero se si "
 "riscontra un errore."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3485,7 +3520,7 @@ msgstr ""
 "    Stato del comando messo in primo piano, o insuccesso se si riscontra un "
 "errore."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3510,7 +3545,7 @@ msgstr ""
 "    Restituisce successo a meno che il controllo dei job non sia abilitato o "
 "si riscontri un errore."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3558,7 +3593,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia trovato NOME o sia fornita una "
 "opzione non valida."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3574,7 +3609,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3602,7 +3637,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga trovato il MODELLO o sia "
 "fornita una opzione non valida."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3612,7 +3647,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3677,7 +3713,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "si riscontri un errore."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3725,7 +3761,7 @@ msgstr ""
 "si riscontri un errore.\n"
 "    Se viene usato -x, restituisce lo stato di uscita del COMANDO."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3759,7 +3795,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga fornita una opzione non valida "
 "o uno SPECJOB."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3806,7 +3842,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "si riscontri un errore."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3901,7 +3937,7 @@ msgstr ""
 "    Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti "
 "restituisce 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3923,7 +3959,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -4006,7 +4042,7 @@ msgstr ""
 "timeout in lettura\n"
 "    o venga fornito un descrittore di file non valido come argomento per -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4028,7 +4064,7 @@ msgstr ""
 "    Restituisce N, oppure insuccesso se la shell non sta eseguendo una "
 "funzione o uno script."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4214,7 +4250,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce successo a meno che non venga fornita una opzione non valida."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4255,7 +4291,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "NOME sia in sola lettura."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4291,7 +4327,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "il NOME non sia valido."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4331,7 +4367,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga fornita una opzione non valida "
 "o NOME non sia valido."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4349,7 +4385,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce successo a meno che N non sia negativo o maggiore di $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4374,7 +4410,7 @@ msgstr ""
 "insuccesso se\n"
 "    il NOMEFILE non può essere letto."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4400,7 +4436,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia abilitato il controllo job o si "
 "riscontri un errore."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4570,7 +4606,7 @@ msgstr ""
 "viene valutata\n"
 "    falsa o viene fornito un argomento non valido."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4583,7 +4619,7 @@ msgstr ""
 "deve\n"
 "    essere un \"]\" letterale per corrispondere al \"[\" di apertura."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4603,7 +4639,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Sempre successo."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4689,7 +4725,7 @@ msgstr ""
 "    Restituisce successo a meno che SPEC_SEGNALE non sia valido o si "
 "fornisca una opzione non valida."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4752,7 +4788,7 @@ msgstr ""
 "    Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso "
 "contrario."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4848,7 +4884,7 @@ msgstr ""
 "    Restituisce successo a meno che non venga fornita una opzione non valida "
 "o venga riscontrato un errore."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4885,7 +4921,7 @@ msgstr ""
 "    Restituisce successo a meno che MODO non sia valido o venga fornita una "
 "opzione non valida."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4894,13 +4930,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4921,7 +4959,7 @@ msgstr ""
 "fornita una\n"
 "    opzione non valida."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -4949,7 +4987,7 @@ msgstr ""
 "fornita una opzione non\n"
 "    valida."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4974,7 +5012,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -5005,7 +5043,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5043,7 +5081,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato di uscita dell'ultimo comando eseguito."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5072,7 +5110,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Viene restituito lo stato della PIPELINE."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5091,7 +5129,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5130,7 +5168,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5148,7 +5186,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5166,7 +5204,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5192,7 +5230,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato di uscita del COMANDO."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5218,7 +5256,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce successo a meno che il NOME non sia in sola lettura."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5237,7 +5275,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato dell'ultimo comando eseguito."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5261,7 +5299,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce lo stato del job ripristinato."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5279,7 +5317,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5336,7 +5374,7 @@ msgstr ""
 "    Stato di uscita:\n"
 "    0 o 1 a seconda del valore dell'ESPRESSIONE."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5464,7 +5502,7 @@ msgstr ""
 "decidere quale\n"
 "    \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5524,7 +5562,7 @@ msgstr ""
 "non abbia\n"
 "    successo il cambio di directory."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5576,7 +5614,7 @@ msgstr ""
 "valido o non\n"
 "    abbia successo il cambio di directory."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5630,14 +5668,14 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita un'opzione non valida o "
 "si riscontri un errore."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5671,7 +5709,7 @@ msgstr ""
 "fornita\n"
 "    una opzione non valida o NOMEOPZ è disabilitato."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5741,7 +5779,7 @@ msgstr ""
 "o si riscontri\n"
 "    un errore di scrittura o assegnazione."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5760,10 +5798,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5797,7 +5839,7 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "si riscontri un errore."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5821,7 +5863,8 @@ msgstr ""
 "    Restituisce successo a meno che non sia fornita una opzione non valida o "
 "si riscontri un errore."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5836,6 +5879,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5885,7 +5929,7 @@ msgstr ""
 "o NOME non\n"
 "    abbia una specifica di completamento definita."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5966,7 +6010,7 @@ msgstr ""
 "valida, ARRAY sia\n"
 "    in sola lettura oppure non indicizzato."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5976,9 +6020,15 @@ msgstr ""
 "    \n"
 "    Sinonimo per \"mapfile\"."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
+#~ "html>\n"
+#~ msgstr ""
+#~ "Licenza GPLv2+: GNU GPL versione 2 o successive <http://gnu.org/licenses/"
+#~ "gpl.html>\n"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5991,20 +6041,3 @@ msgstr ""
 
 #~ msgid "times"
 #~ msgstr "times"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licenza GPLv2+: GNU GPL versione 2 o successive <http://gnu.org/licenses/"
-#~ "gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
index 3f5a091a3c26ab390283a565c9033a619775c54d..bace2114c21ac11b7c65041304162041fa433a97 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index 171eadb3432b12aa90f3b6ba058678e28e314f50..b1feb4fdb1945f034ee6fd5ad0b3b9c693c03b8a 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
 # This file is distributed under the same license as the bash package.
 # Kyoichi Ozaki <k@afromania.org>, 2000.
 # Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2011, 2013.
-# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011, 2014.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011, 2014, 2017.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bash 4.3-rc2\n"
+"Project-Id-Version: GNU bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2014-10-30 05:04+0100\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-07-02 01:46+0100\n"
 "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: Japanese\n"
+"Language: ja\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.2\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "誤った配列の添字"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: インデックス配列から連想配列に変換することはできません"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: 無効な連想配列のキーです"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: 配列の添字に非数字を設定できません"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: 連想配列を設定するときには添字をつけなければいけません"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: %s を作成できません"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: コマンドのキーマップがありません"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: 最初の非空白類文字が `\"' ではありません"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "閉じる `%c' が %s にありません"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: 区切り文字コロン(:)がありません"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "中括弧展開: %s へメモリを割り当てられません"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 "中括弧展開: failed to allocate memory for %d 要素のメモリの割り当てに失敗しま"
 "した"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "中括弧展開: `%s' へのメモリ割り当てに失敗しました"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': 無効なエイリアス名です"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "行編集が有効になっていません"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': 無効なキーマップ名です"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: %s を読み込めません"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': 割り当て解除できません"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': 不明な関数名です"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s はどのキーにも割り当てられていません。\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s は次を通して起動します "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': 割り当て解除できません"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "ループ回数"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "`for'、`while' または `until' ループでのみ意味があります"
 
@@ -146,234 +148,234 @@ msgstr ""
 "    \n"
 "    EXPR が無い場合、次を返します "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME が設定されていません"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "引数が多すぎます"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "他のディレクトリはありません"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD が設定されていません"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "%d 行: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "警告: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: 使用法: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: オプションには引数が必要です"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: 数字の引数が必要です"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: 見つかりません"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: 無効なオプションです"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: 無効なオプション名です"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': 有効な識別子ではありません"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "無効な八進数です"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "無効な十六進数です"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "無効な数字です"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: 無効なシグナル指定です"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': pid または有効なジョブ指定ではありません"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: 読み取り専用の変数です"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s が範囲外です"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "引数"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s が範囲外です"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: そのようなジョブはありません"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ジョブ制御が無効になっています"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ジョブ制御が無効になっています"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: 制限されています"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "制限されています"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: シェルのビルトイン関数ではありません"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "書き込みエラー: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "ターミナル属性の設定時にエラーが発生しました : %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "ターミナル属性の取得時にエラーが発生しました : %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: カレントディレクトリの取得時にエラーが発生しました : %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: 曖昧なジョブ指定です"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "このバージョンではヘルプが利用できません"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: 無効なアクション名です"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: 補完指定がありません"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "警告: -F オプションは期待通りに動作しないかもしれません"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "警告: -C オプションは期待通りに動作しないかもしれません"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "補完機能は現在実行されていません"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "関数の中でのみ使用できます"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: 参照変数は配列であってはいけません"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: 自身を参照する名前参照変数は許可されていません"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: 循環名前参照です"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: 名前参照として無効な変数です"
+msgstr "`%s': 名前参照として無効な変数です"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "関数作成時に `-f' を使用できません"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: 読み取り専用関数です"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: この方法で配列変数を消去することはできません"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: 連想配列からインデックス配列に変換することはできません"
@@ -395,7 +397,7 @@ msgstr "%s が共有オブジェクト %s に存在しません: %s"
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "関数 %s のロードが失敗を返しました(%d): ロードされませんでした"
 
 #: builtins/enable.def:512
 #, c-format
@@ -407,68 +409,68 @@ msgstr "%s: 動的にロードされていません"
 msgid "%s: cannot delete: %s"
 msgstr "%s: 削除できません: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: ディレクトリです"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: 通常ファイルではありません"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: ファイルが大きすぎます"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: バイナリファイルを実行できません"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: 実行できません: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "ログアウト\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ログインシェルではありません: `exit' を使用してください"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "停止しているジョブがあります。\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "動作中のジョブがあります。\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "コマンドが見つかりません"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "ヒストリ指定"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: 一時ファイルを開くことができません: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "カレント"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "ジョブ %d がジョブ制御なしで開始されました"
@@ -483,27 +485,26 @@ msgstr "%s: 不正なオプションです -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: オプションには引数が必要です -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "ハッシュが無効になっています"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: ハッシュテーブルが空です\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "hits\tcommand\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "キーワードに一致したシェルコマンド `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -511,12 +512,12 @@ msgstr ""
 "`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info "
 "%s' を試してください"
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: 開くことができません: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -538,20 +539,21 @@ msgstr ""
 "味します。\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "-anrw を2つ以上一緒に使用することはできません"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "ヒストリ位置"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: 無効な引数です"
+msgstr "%s: 無効なタイムスタンプです"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: ヒストリの展開に失敗しました"
@@ -565,16 +567,16 @@ msgstr "%s: inlib が失敗しました"
 msgid "no other options allowed with `-x'"
 msgstr "`-x' は他のオプションを同時に使用できません"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: 引数はプロセスIDかジョブIDでなければいけません"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "不明なエラーです"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "式が予期されます"
 
@@ -583,69 +585,69 @@ msgstr "式が予期されます"
 msgid "%s: not an indexed array"
 msgstr "%s: インデックス配列ではありません"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: 無効なファイル記述子指定です"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: 無効なファイル記述子: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: 無効な行数です"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: 無効な配列の原点です"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: コールバックの quantum が無効です"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "空の配列変数名です"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "配列変数のサポートが必要です"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': 書式指定文字がありません"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': 無効な時間書式指定です"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': 無効な書式指定文字です"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "警告: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "書式解析問題です: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "\\x 用の十六進数字がありません"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "\\%c 用のユニコード数値がありません"
@@ -659,19 +661,19 @@ msgstr "他のディレクトリはありません"
 msgid "%s: invalid argument"
 msgstr "%s: 無効な引数です"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<カレントディレクトリがありません>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "ディレクトリスタックが空です"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "ディレクトリスタックのインデックス"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -713,7 +715,7 @@ msgstr ""
 "      -N\tオプションなしで起動された場合にリストの末尾から数えて\n"
 "\tN番目の要素を表示します。開始番号は0です。"
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -757,7 +759,7 @@ msgstr ""
 "    \n"
 "    `dirs' ビルトインコマンドでディレクトリスタックを表示します。"
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -800,62 +802,62 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: 無効なタイムアウト指定です"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "読み込みエラー: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "`return' は関数または source されたスクリプト内のみで利用できます"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "変数と関数を同時に消去することはできません"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: 消去できません"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: 消去できません: %s は読み取り専用です"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: 配列変数ではありません"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: 関数ではありません"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: 消去できません"
+msgstr "%s: export できません"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "シフト回数"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "シェルオプションを同時に有効かつ無効にできません"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: 無効なシェルオプション名です"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "ファイル名が引数として必要です"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: ファイルが見つかりません"
@@ -868,61 +870,61 @@ msgstr "中断できません"
 msgid "cannot suspend a login shell"
 msgstr "ログインシェルを中断できません"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s は `%s' のエイリアスです\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s はシェルの予約語です\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s は関数です\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s はシェル組み込み関数です\n"
+msgstr "%s は特殊シェル組み込み関数です\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s はシェル組み込み関数です\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s は %s です\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s はハッシュされています (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: limit の無効な引数です"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': 誤ったコマンドです"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: limit を取得できません: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: limit を変更できません : %s"
@@ -941,357 +943,367 @@ msgstr "`%c': 無効なシンボリックモード演算子です"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': 無効なシンボリックモード文字です"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " 行 "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "最後のコマンド: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "中止しています..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "情報: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "不明なコマンドエラーです"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "誤ったコマンドタイプです"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "誤った接続です"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "誤ったジャンプです"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: 未割り当ての変数です"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\a入力待ちがタイムアウトしました: 自動ログアウト\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "/dev/null から標準入力に対してリダイレクトできません: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': 無効な書式文字です"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "パイプエラー"
 
-#: execute_cmd.c:4496
-#, fuzzy, c-format
+#: execute_cmd.c:4671
+#, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)"
+msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)"
 
-#: execute_cmd.c:4508
-#, fuzzy, c-format
+#: execute_cmd.c:4683
+#, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)"
+msgstr "%s: source の入れ子レベルの最大値を超えています (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: 制限されています:  `/' をコマンド名の中に指定できません"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: コマンドが見つかりません"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: 誤ったインタプリタです"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: バイナリファイルを実行できません: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "`%s': 特殊シェル組み込み関数です"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "fd %d を fd %d に複製できません"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "式の再帰可能レベルを越えました"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "再帰スタックがアンダーフローしました"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "式に構文エラーがあります"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "非変数に割り当てを行おうとしてます"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "式に構文エラーがあります"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "0 による除算です"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "バグ: 誤った式のトークンです"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "条件式には `:' が予期されます"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "0より小さい指数部です"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "識別子は前置インクリメントまたは前置デクリメントが予期されます"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "`)' がありません"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "構文エラー: オペランドが予期されます"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "構文エラー: 無効な計算演算子です"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (エラーのあるトークンは \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "無効な基底の数値です"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "基底の値が大きすぎます"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: 式のエラー\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: 親ディレクトリにアクセスできません"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "新規ファイル記述子(fd) %d を bash の入力として割り当てられません"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "実行中のジョブ %2$d で fork した pid %1$d が出現しました"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "プロセスグループ %2$ld のジョブ %1$d を削除しています"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: プロセス %5ld (%s) が the_pipeline にあります"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) はまだ存在しているとマークされています"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: そのような pid は存在しません"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "シグナル %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "終了"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "停止"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "停止 (%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "実行中"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "終了(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "終了 %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "不明なステータス"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(コアダンプ) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "子プロセス setpgid (%ld から %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld はこのシェルの子プロセスではありません"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: プロセス %ld の記録がありません"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: ジョブ %d は停止しています"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: ジョブは終了しました"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: ジョブ %d はすでにバックグラウンドで動作しています"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: 不定のブロックを避けるために WNOHANG をオンにしました。"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: %d 行: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (コアダンプ)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd now: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp が失敗しました"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: line discipline"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: line discipline"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "端末プロセスグループを設定できません (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "このシェルではジョブ制御が無効になっています"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: 失敗したアサーション: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1300,39 +1312,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: アサーション失敗\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "不明"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: free ブロックリストが壊れています"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: 既に free されたブロックを引数として呼び出されました"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: 未割当のブロックを引数として呼び出されました"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: アンダーフローを検出しました。 mh_nbytes が範囲外です"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: 開始と終了の塊の大きさが異なっています"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: 未割当のブロックを引数として呼び出されました"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: アンダーフローを検出しました。 mh_nbytes が範囲外です"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: 開始と終了の塊の大きさが異なっています"
 
@@ -1374,22 +1386,22 @@ msgstr "%s: ネットワークパス指定に誤りがあります"
 msgid "network operations not supported"
 msgstr "ネットワーク操作はサポートされていません"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: ロケールを変更できません (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: ロケールを変更できません (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: ロケールを変更できません (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: ロケールを変更できません (%s): %s"
@@ -1407,148 +1419,148 @@ msgstr "新しいメールが $_ にあります"
 msgid "The mail in %s has been read\n"
 msgstr "%s のメールは既読です\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "構文エラー: 数値の式が必要です"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "構文エラー: 予期しない `;' です"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "構文エラー: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: 誤った指定の種類 %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: リダイレクト指定 `%d' は範囲外です"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "対応する `%c' を探索中に予期しないファイル終了 (EOF) です"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "`]]' を探索中に予期しないファイル終了 (EOF) です"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "条件式に構文エラー: 予期しないトークン `%s' です"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "条件式に構文エラーがあります"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "予期しないトークン `%s' です。`)' が予期されます"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "`)' が予期されます"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "条件単項演算子に予期しない引数 `%s' です"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "条件単項演算子に予期しない引数です"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "`%s` は予期しないトークンです。条件二項演算子が予期されます"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "条件二項演算子が予期されます"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "条件二項演算子に予期しない引数 `%s' です"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "条件二項演算子に予期しない引数です"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "条件コマンドに予期しないトークン `%c' があります"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "条件コマンドに予期しないトークン `%s' があります"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "条件コマンドに予期しないトークン %d があります"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "予期しないトークン `%s' 周辺に構文エラーがあります"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "`%s' 周辺に構文エラーがあります"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "構文エラー: 予期しないファイル終了 (EOF) です"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "構文エラー"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "シェルから脱出するには \"%s\" を使用してください。\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "対応する `)' を探索中に予期しないファイル終了(EOF)です"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: 関数 `%s' が見つかりません"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1577,90 +1589,94 @@ msgstr "xtrace_set: NULL ファイルポインタです"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': 無効な書式文字です"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "ファイル記述子が範囲外です"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: 曖昧なリダイレクトです"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: 存在するファイルを上書きできません"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: 制限されています: 出力をリダイレクト出来ません"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "ヒアドキュメント用一時ファイルを作成できません: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: ファイル記述子 (fd) を変数に設定することはできません"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "ネットワークが無効な場合 /dev/(tcp|udp)/host/port はサポートされません"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "リダイレクトエラー: ファイル記述子を複製できません"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "/tmp が見つかりません。作成してください!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp は有効なディレクトリ名でなければいけません"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: 無効なオプション"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません"
+msgstr "uidを %d に設定できません: 実効uid %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません"
+msgstr "gidを %d に設定できません: 実効gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "デバッガを開始できません。デバッガモードが無効になっています"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: ディレクトリです"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "私は名前がありません!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, バージョン %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1669,50 +1685,51 @@ msgstr ""
 "使用法:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU 形式の長いオプション:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "シェルオプション:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD, -c command または -O shopt_option\t\t(起動時のみ)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s または -o option\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "シェル組み込みコマンドについては `%s -c help' と入力してください。\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "バグ報告をする場合は `bashbug' コマンドを使用してください。\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "bashホームページ: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"GNUソフトウェアを使用する時の一般的なヘルプ : <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: 無効な操作です"
@@ -1886,103 +1903,108 @@ msgstr "不明なシグナル番号"
 msgid "Unknown Signal #%d"
 msgstr "不明なシグナル番号 %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "誤った代入: 閉じる `%s' が %s に存在しません"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: リストを配列要素に割り当てできません"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "プロセス代入ではパイプを作成できません"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "プロセス代入では子プロセスを作成できません"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "名前付きパイプ %s を読み込み用に開けません"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "名前付きパイプ %s を書き込み用に開けません"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "名前付きパイプ %s をファイル記述子(fd) %d として複製できません"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "誤った代入: %s に閉じる \"`\" がありません"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "コマンド代入ではパイプを作成できません"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "コマンド代入では子プロセスを作成できません"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: パイプを fd 1 として複製できません"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: 名前参照として無効な変数です"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: 誤った代入です"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: 無効な行数です"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "`%s': 無効なエイリアス名です"
+msgstr "%s: 無効な変数名です"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: パラメータが null または設定されていません"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: パラメータが null または設定されていません"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expression < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: 誤った代入です"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: この方法で割当はできません"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr "将来のバージョンのシェルでは強制的に数値代入として評価されます"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "誤った代入: %s に閉じる \"`\" がありません"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "一致しません: %s"
@@ -2005,30 +2027,35 @@ msgstr "`)' が予期されます"
 msgid "`)' expected, found %s"
 msgstr "`)' が予期されますが、見つかったのは %s です"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: 単項演算子が予期されます"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: 二項演算子が予期されます"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "`]'がありません"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "無効なシグナル番号"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: trap_list[%d] に誤った値があります: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2036,86 +2063,86 @@ msgstr ""
 "run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送し"
 "ます。"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: 誤ったシグナル %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "`%s' の関数定義をインポート中にエラーが発生しました"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "シェルレベル (%d) は高すぎます。1に再設定されました"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: 現在のスコープは関数コンテキストではありません"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: 変数が初期化されていないかもしれません"
 
-#: variables.c:3043
+#: variables.c:3453
 #, fuzzy, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: 名前参照として無効な変数です"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: 現在のスコープは関数コンテキストではありません"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s は null の exportstr を持っています"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%2$s に対する exportstr で %1$d は無効な文字です"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "%s に対する exportstr に `=' がありません"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: shell_variables の先頭です。関数コンテキストではありません"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: global_variables コンテキストではありません"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: shell_variables の先頭です。一時環境スコープではありません"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: ファイルとして開くことができません"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: トレースファイル記述子として無効な値です"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: 値の互換性が範囲外です"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2138,22 +2165,22 @@ msgstr "This is free software; you are free to change and redistribute it."
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "There is NO WARRANTY, to the extent permitted by law."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %lu バイトを割当できません (%lu バイトを割当済み)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: %lu バイトを割当できません"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: %lu バイトを割当できません (%lu バイトを割当済み)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: %lu バイトを割当できません"
@@ -2207,9 +2234,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2280,9 +2306,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [jobspec ...] または jobs -x command [args]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobspec ...]"
+msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2357,16 +2382,16 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] name [name ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [mode]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2458,8 +2483,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] format [arguments]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2468,31 +2494,31 @@ msgstr ""
 "suffix] [name ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
-"compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  "
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o option] [-DE] [name ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
 "quantum] [array]"
@@ -2672,6 +2698,7 @@ msgstr ""
 "    N  が1未満の場合を除き、終了ステータスは 0 です。"
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2682,7 +2709,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "シェル組み込みコマンドを実行します。\n"
 "    \n"
@@ -2932,11 +2959,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3057,6 +3084,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3089,7 +3122,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    書き込みエラーが発生しない限り成功を返します。"
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3111,7 +3144,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    書き込みエラーが発生しない限り成功を返します。"
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3163,7 +3196,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    NAME が組み込み関数ではないかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3183,7 +3216,7 @@ msgstr ""
 "    コマンドの終了ステータスを返します。コマンドが null の場合は成功を\n"
 "    返します。"
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3260,7 +3293,7 @@ msgstr ""
 "    オプションが見つかった場合に成功を返します。オプションの終わり\n"
 "    に到達するかエラーが発生した時に失敗を返します。"
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3303,7 +3336,7 @@ msgstr ""
 "    COMMAND が見つからないかリダイレクトエラーが発生しない限り成功を返しま"
 "す。"
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3315,7 +3348,7 @@ msgstr ""
 "    終了ステータス N でシェルを終了します。 N を指定しない場合は\n"
 "    最後に実行したコマンドの終了ステータスになります。"
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3329,7 +3362,7 @@ msgstr ""
 "ル\n"
 "    内で無い場合はエラーを返します。"
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3389,7 +3422,7 @@ msgstr ""
 "0 \n"
 "    以外の値になります。"
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3414,7 +3447,7 @@ msgstr ""
 "が\n"
 "    発生した時に失敗を返します。"
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3438,7 +3471,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    ジョブ制御が有効になっていないかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3482,7 +3515,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    NAME が見つからないか、無効なオプションが与えられない限り成功を返します。"
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3498,7 +3531,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3523,7 +3556,7 @@ msgstr ""
 "    PATTERN が見つからないか無効なオプションが与えられない限り成功を返しま"
 "す。"
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3533,7 +3566,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3590,7 +3624,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3637,7 +3671,7 @@ msgstr ""
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。\n"
 "    もし -x が使用された場合、COMMAND の終了ステータスを返します。"
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3670,7 +3704,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションか JOBSPEC が与えられない限り成功を返します。"
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3716,7 +3750,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3801,7 +3835,7 @@ msgstr ""
 "    ARG の最終的な評価値が 0 の場合 let は 1 を返します。それ以外の場合は\n"
 "     let は 0 を返します。"
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3823,7 +3857,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3900,7 +3934,7 @@ msgstr ""
 "エ\n"
 "    ラーが発生、 -u に無効なファイル記述子が与えられた場合を除き0を返します。"
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3924,7 +3958,7 @@ msgstr ""
 "を\n"
 "    返します。"
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4090,7 +4124,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられない限り成功を返します。"
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4132,7 +4166,7 @@ msgstr ""
 "    無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返し"
 "ます。"
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4167,7 +4201,7 @@ msgstr ""
 "    無効なオプションが与えられるか、無効な NAME が与えられない限り成功\n"
 "    を返します。"
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4207,7 +4241,7 @@ msgstr ""
 "    無効なオプションが与えられるか、与えられた NAME が無効な場合を除き成功\n"
 "    を返します。"
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4225,7 +4259,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    Nが負の値または $# より大きい場合を除き成功を返します。"
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4249,7 +4283,7 @@ msgstr ""
 "    FILENAME で最後に実行したコマンドのステータスを返します。FILENAME が\n"
 "    読み込めなかった場合は失敗を返します。"
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4273,7 +4307,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    ジョブ制御が有効でないかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4435,7 +4469,7 @@ msgstr ""
 "または\n"
 "    引数が無効な場合に失敗を返します。"
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4448,7 +4482,7 @@ msgstr ""
 "致\n"
 "    するように文字`]'を与えなければいけません。"
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4468,7 +4502,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    常に成功を返します。"
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4550,7 +4584,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。"
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4609,7 +4643,7 @@ msgstr ""
 "合\n"
 "    は失敗を返します。"
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4702,7 +4736,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションを与えるか、エラーが発生しない限り、成功を返します。"
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4736,7 +4770,8 @@ msgstr ""
 "    終了ステータス:\n"
 "    MODE が無効か、無効なオプションが与えられない限り成功を返します。"
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4744,13 +4779,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4767,7 +4804,7 @@ msgstr ""
 "    最後の ID の終了ステータスを返します。IDが無効であるか、無効なオプ\n"
 "    ションが与えられた場合には失敗を返します。"
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4793,7 +4830,7 @@ msgstr ""
 "えられた\n"
 "    場合は失敗します。"
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4814,7 +4851,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4844,7 +4881,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4879,7 +4916,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4907,7 +4944,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    PIPELINE の戻り値が終了ステータスとなります。"
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4926,7 +4963,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4960,7 +4997,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドの終了ステータスを返します。"
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4978,7 +5015,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4996,7 +5033,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5019,7 +5056,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    COMMAND の終了ステータスを返します。"
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5044,7 +5081,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    NAME が読み取り専用でない限り成功を返します。"
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5062,7 +5099,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    最後に実行したコマンドのステータスを返します。"
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5085,7 +5122,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    再開されたジョブの終了ステータスを返します。"
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5103,7 +5140,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。"
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5158,7 +5195,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    EXPRESSION の値に基づいて 0 または 1 を返します。"
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5259,7 +5296,7 @@ msgstr ""
 "    HISTIGNORE\tヒストリ一覧に保存されるコマンドを決める時に使用される\n"
 "    \t\tコロン (:) で区切られたパターンの一覧。\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5319,7 +5356,7 @@ msgstr ""
 "    無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n"
 "    返します。"
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5371,7 +5408,7 @@ msgstr ""
 "    無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n"
 "    返します。"
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5424,14 +5461,14 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5460,7 +5497,7 @@ msgstr ""
 "    OPTNAME が有効な場合は成功を返します。無効なオプションが与えられた場合\n"
 "    または OPTNAME が無効な場合は失敗を返します。"
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5530,7 +5567,7 @@ msgstr ""
 "    無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返し"
 "ます。"
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5549,10 +5586,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5580,7 +5621,7 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5602,7 +5643,8 @@ msgstr ""
 "    終了ステータス:\n"
 "    無効なオプションが与えられるかエラーが発生しない限り成功を返します。"
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5617,6 +5659,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5658,7 +5701,7 @@ msgstr ""
 "合\n"
 "    を除き、成功を返します。"
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5735,7 +5778,7 @@ msgstr ""
 "列で無い\n"
 "    場合を除き成功を返します。"
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5745,9 +5788,8 @@ msgstr ""
 "    \n"
 "    `mapfile'の別名です。"
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5760,6 +5802,3 @@ msgstr ""
 
 #~ msgid "times"
 #~ msgstr "times"
-
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
index 36a1279523be80e76c24d450a6f40b156592bc43..6abd02a014d2cc7fb98f0a2bb555442c33b812b1 100644 (file)
Binary files a/po/lt.gmo and b/po/lt.gmo differ
index 2594d1d1a20d8cd66c3980e2a1a29fdd76e02ee5..30f0ec1dd7e4bfe82d39bc1dd5733c770a11de36 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash-4.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2009-03-25 16:49+0200\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -15,123 +15,124 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: lt\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Generator: KBabel 1.11.4\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
 "100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "blogas masyvo indeksas"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, fuzzy, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: netaisyklingas veiksmo pavadinimas"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: nepavyko priskirti prie neskaitinio indekso"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nepavyko sukurti: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: pirmas ne tarpo simbolis nėra „\"“"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "nėra uždarančiojo „%c“ %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: trūksta dvitaškio skirtuko"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, fuzzy, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "eilutės redagavimas neįgalintas"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nepavyko perskaityti: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s“: nepavyko atjungti (unbind)"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s“: nežinomas funkcijos pavadinimas"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s nėra priskirtas jokiam klavišui.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s gali būti iškviestas su "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: nepavyko atjungti (unbind)"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr ""
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "prasminga tik „for“, „while“ arba „until“ cikle"
 
@@ -143,234 +144,234 @@ msgid ""
 "    Without EXPR, returns "
 msgstr "Grąžina esamos procedūros kontekstą."
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME nenustatytas"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "per daug argumentų"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "steko viršūnėje esančiu."
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD nenustatytas"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "eilutė %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "įspėjimas: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: naudojimas: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: parametrui reikia argumento"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: reikia skaitinio argumento"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: nerasta"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: negalimas parametras"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: netaisyklingas parametro vardas"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': netaisyklingas identifikatorius"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "netaisyklingas aštuonetainis skaičius"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "netaisyklingas šešioliktainis skaičius"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "netaisyklingas skaičius"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: netaisyklinga signalo specifikacija"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: kintamasis tik skaitymui"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s išėjo už ribų"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumentas"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s už ribų"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: nėra tokio darbo"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: nėra darbų valdymo"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "nėra darbų valdymo"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: apribota"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "apribota"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ne vidinė aplinkos komanda"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "rašymo klaida: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: klaida skaitant esamą aplanką: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: dviprasmis darbo aprašymas"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: netaisyklingas veiksmo pavadinimas"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: nėra baigimo specifikacijos"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr ""
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "galima naudoti tik funkcijoje"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%d: netaisyklingas failo deskriptorius: %s"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%d: netaisyklingas failo deskriptorius: %s"
+msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "negalima naudoti „-f“ funkcijoms kurti"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkcija tik skaitymui"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -404,68 +405,68 @@ msgstr "%s: nedinamiškai įkrauta"
 msgid "%s: cannot delete: %s"
 msgstr "%s: nepavyko ištrinti: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: aplankas"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ne paprastas failas"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: failas per didelis"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: negalima vykdyti dvejetainių failų"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nepavyko paleisti: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr ""
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ne prisijungimo aplinka: naudokite „exit“"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Yra sustabdytų darbų.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Yra veikiančių darbų.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "komandų nerasta"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "istorijos specifikacija"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: nepavyko atverti laikinojo failo: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr ""
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "darbas %d pradėtas be darbų valdymo"
@@ -480,29 +481,29 @@ msgstr "%s: neleistinas parametras -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: parametrui reikia argumento -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "maiša išjungta"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: maišos lentelė tuščia\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, fuzzy, c-format
 msgid "hits\tcommand\n"
 msgstr "paskutinė komanda: %s\n"
 
-#: builtins/help.def:135
-#, fuzzy, c-format
+#: builtins/help.def:133
+#, fuzzy
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Aplinkos komandos, atitinkančios raktažodį „"
 msgstr[1] "Aplinkos komandos, atitinkančios raktažodį „"
 msgstr[2] "Aplinkos komandos, atitinkančios raktažodį „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -510,12 +511,12 @@ msgstr ""
 "nėra žinyno temų, atitinkančių „%s“. Bandykite „help help“, „man -k %s“ arba "
 "„info %s“."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nepavyko atverti: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -536,20 +537,21 @@ msgstr ""
 "Žvaigždutė (*) prie vardo reiškia, kad komanda išjungta.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "negalima naudoti daugiau negu vieno parametro iš -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "istorijos pozicija"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: netaisyklingas limito argumentas"
+msgstr "%s: netaisyklingas parametro vardas"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: istorijos išskleidimas nesėkmingas"
@@ -563,16 +565,16 @@ msgstr "%s: istorijos išskleidimas nesėkmingas"
 msgid "no other options allowed with `-x'"
 msgstr "su „-x“ neleidžiama naudoti kitų parametrų"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumentai turi būti procesų arba darbų ID"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Nežinoma klaida"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "tikėtasi išraiškos"
 
@@ -581,70 +583,70 @@ msgstr "tikėtasi išraiškos"
 msgid "%s: not an indexed array"
 msgstr "%s: ne masyvo kintamasis"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: netaisyklingas failo deskriptorius: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, fuzzy, c-format
 msgid "%s: invalid line count"
 msgstr "%s: nesamas parametras"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, fuzzy, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: nesamas parametras"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, fuzzy, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: netaisyklingas veiksmo pavadinimas"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 #, fuzzy
 msgid "empty array variable name"
 msgstr "%s: ne masyvo kintamasis"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr ""
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s“: trūksta formato simbolio"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, fuzzy, c-format
 msgid "`%c': invalid time format specification"
 msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c“: netaisyklingas formato simbolis"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "įspėjimas: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, fuzzy, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
@@ -658,20 +660,20 @@ msgstr "nėra kito aplanko"
 msgid "%s: invalid argument"
 msgstr "%s: netaisyklingas limito argumentas"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<nėra esamo aplanko>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr ""
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 #, fuzzy
 msgid "directory stack index"
 msgstr "rekursijos steko atvirkštinis perpildymas"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -695,7 +697,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -720,7 +722,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -746,40 +748,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "skaitymo klaida: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "negalima kartu ištrinti funkcijos ir kintamojo"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nepavyko ištrinti"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nepavyko ištrinti: %s tik skaitymui"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ne masyvo kintamasis"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ne funkcija"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: nepavyko ištrinti"
@@ -788,20 +790,20 @@ msgstr "%s: nepavyko ištrinti"
 msgid "shift count"
 msgstr "postūmių skaičius"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "negalima aplinkos nuostatos vienu metu įjungti ir išjungti"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "reikia failo pavadinimo argumento"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: failas nerastas"
@@ -814,61 +816,61 @@ msgstr "nepavyko sustabdyti"
 msgid "cannot suspend a login shell"
 msgstr "nepavyko sustabdyti prisijungimo aplinkos"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s yra „%s“ sinonimas\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s yra aplinkos raktinis žodis\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s yra funkcija\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s yra aplinkos vidinė komanda\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s yra aplinkos vidinė komanda\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s yra %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s yra hešuotas (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: netaisyklingas limito argumentas"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': bloga komanda"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: nepavyko gauti limito: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "riba"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: nepavyko pakeisti limito: %s"
@@ -887,359 +889,368 @@ msgstr "„%c“: netaisyklingas simbolinės veiksenos operatorius"
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c“: netaisyklingas simbolinės veiksenos simbolis"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " eilutė "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "paskutinė komanda: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Nutraukiama..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "nežinoma komandos klaida"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "blogas komandos tipas"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "blogas jungtukas"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "blogas šuolis"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: nepriskirtas kintamasis"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "nepavyko peradresuoti standartinio įvedimo iš /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 #, fuzzy
 msgid "pipe error"
 msgstr "rašymo klaida: %s"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: komanda nerasta"
 
-#: execute_cmd.c:5470
-#, fuzzy, c-format
+#: execute_cmd.c:5682
+#, c-format
 msgid "%s: %s"
-msgstr "%s yra %s\n"
+msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: blogas interpretatorius"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: negalima vykdyti dvejetainių failų"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s yra aplinkos vidinė komanda\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "nepavyko dublikuoti fd %d į fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "viršytas išraiškos rekursijos lygis"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "rekursijos steko atvirkštinis perpildymas"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "sintaksės klaida išraiškoje"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "bandymas priskirti ne kintamajam"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "sintaksės klaida išraiškoje"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "dalyba iš 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "klaida: bloga expassign leksema"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "sąlygos išraiškoje tikėtasi „:“"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponentė mažesnis už 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "po prieš-didinimo ar prieš-mažinimo operatoriaus tikėtasi identifikatoriaus"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "Trūksta „)“"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "sintaksės klaida: tikėtasi operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr ""
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "netaisyklingas aritmetinis pagrindas"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "per didelė pagrindo reikšmė"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: išraiškos klaida\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, fuzzy, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "nepavyko dublikuoti fd %d į fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "nepavyko išskirti naujo failo deskriptoriaus bash įvedimui iš fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: tokio pid nėra"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signalas %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Atlikta"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr ""
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr ""
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr ""
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Atlikta(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr ""
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Nežinoma būsena"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr ""
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr ""
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr ""
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld nėra šios aplinkos dukterinis procesas"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: nėra proceso %ld įrašo"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: darbas %d yra sustabdytas"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: darbas užsibaigė"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: darbas %d jau fone"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: %d eilutė: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr ""
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr ""
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr ""
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr ""
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr ""
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr ""
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr ""
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "šioje aplinkoje nėra darbų valdymo"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: pažeista prielaida: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1248,39 +1259,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: prielaida pažeista\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "nežinoma"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blokas iš laisvų blokų sąrašo sugadintas"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: iškviestas su jau atlaisvintu bloku"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: iškviestas su nerezervuotu bloku"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: iškviestas su nerezervuotu bloku"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
 
@@ -1322,22 +1333,22 @@ msgstr "%s: netaisyklingas tinklo kelias"
 msgid "network operations not supported"
 msgstr "tinklo operacijos nepalaikomos"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
+#: locale.c:272
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
 
-#: locale.c:261
+#: locale.c:274
 #, fuzzy, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
@@ -1355,147 +1366,147 @@ msgstr "Turite naujų laiškų $_"
 msgid "The mail in %s has been read\n"
 msgstr "Paštas %s perskaitytas\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "sintaksės klaida: reikia aritmetinės išraiškos"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "sintaksės klaida: netikėtas „;“"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "sintaksės klaida: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: blogas instrukcijos tipas %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "netikėta failo pabaiga ieškant „]]“"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "sintaksės klaida sąlygos išraiškoje: netikėta leksema „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "sintaksės klaida sąlygos išraiškoje"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "netikėta leksema „%s“, tikėtasi „)“"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "tikėtasi „)“"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "netikėtas argumentas sąlygos unariniam operatoriui"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "tikėtasi sąlygos binarinio operatoriaus"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "netikėtas argumentas sąlygos binariniam operatoriui"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "netikėta leksema „%c“ sąlygos komandoje"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "netikėta leksema „%s“ sąlygos komandoje"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "netikėta leksema %d sąlygos komandoje"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "sintaksės klaida prie netikėtos leksemos: „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "sintaksės klaida prie „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "sintaksės klaida: netikėta failo pabaiga"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "sintaksės klaida"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "netikėta failo pabaiga ieškant atitinkamo „)“"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: funkcija „%s“ nerasta"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1524,90 +1535,94 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c“: netaisyklingas formato simbolis"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "failo deskriptorius už ribų"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: ambiguous redirect"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: negalima perrašyti egzistuojančio failo"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: apribota: negalima peradresuoti išvedimo"
 
-#: redir.c:192
+#: redir.c:188
 #, fuzzy, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: negalima priskirti sąrašo masyvo elementui"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "nukreipimo klaida: nepavyko dublikuoti fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp turi būti taisyklingas aplanko pavadinimas"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: netaisyklingas parametras"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "nepavyko dublikuoti fd %d į fd %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "nepavyko dublikuoti fd %d į fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: aplankas"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Neturiu vardo!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versija %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1616,53 +1631,53 @@ msgstr ""
 "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n"
 "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU ilgi parametrai:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Aplinkos parametrai:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iškvietimui)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s arba -o nustatymas\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, fuzzy, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau "
 "informacijos.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, fuzzy, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos."
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Naudokite komandą „bashbug“ klaidoms pranešti.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: netaisyklinga operacija"
@@ -1837,103 +1852,108 @@ msgstr "Nežinomas signalas #"
 msgid "Unknown Signal #%d"
 msgstr "Nežinomas signalas #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "blogas keitinys: trūksta „%s“ %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: negalima priskirti sąrašo masyvo elementui"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr ""
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr ""
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr ""
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr ""
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "blogas keitinys: trūksta „%s“ %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr ""
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr ""
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 
-#: subst.c:6580 subst.c:8939
-#, fuzzy, c-format
-msgid "%s: invalid variable name for name reference"
-msgstr "%d: netaisyklingas failo deskriptorius: %s"
-
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6710 subst.c:9623
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: blogas keitinys"
+msgid "%s: invalid variable name for name reference"
+msgstr ""
 
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: nesamas parametras"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
-msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
+msgstr "%s: netaisyklingas veiksmo pavadinimas"
+
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametras tuščias arba nenustatytas"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametras tuščias arba nenustatytas"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: posekio išraiška < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: blogas keitinys"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: negalima tokiu būdu priskirti"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, fuzzy, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "blogas keitinys: trūksta „%s“ %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "nėra atitikmenų: %s"
@@ -1956,113 +1976,118 @@ msgstr "tikėtasi „)“"
 msgid "`)' expected, found %s"
 msgstr "tikėtasi „)“, rasta %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: tikėtasi unarinio operatoriaus"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: tikėtasi binarinio operatoriaus"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "trūksta „]“"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "netaisyklingas signalo numeris"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: bloga trap_list[%d] reikšmė: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: signalo doroklė yra SIG_DFL, siunčiamas %d (%s) sau"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: blogas signalas %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "klaida importuojant funkcijos apibrėžimą „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "aplinkos lygmuo (%d) per aukštas, nustatoma į 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s: negalima priskirti sąrašo masyvo elementui"
+msgstr ""
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%d: netaisyklingas failo deskriptorius: %s"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, fuzzy, c-format
 msgid "%s has null exportstr"
 msgstr "%s: parametras tuščias arba nenustatytas"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "netaisyklingas simbolis %d %s exportstr'e"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "%s exportstr'e trūksta „=“"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: nėra global_variables konteksto"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
+#: variables.c:6272
 #, fuzzy, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: nepavyko atverti: %s"
 
-#: variables.c:5624
+#: variables.c:6277
 #, fuzzy, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%d: netaisyklingas failo deskriptorius: %s"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s išėjo už ribų"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2089,22 +2114,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Nėra JOKIOS GARANTIJOS, kiek tik tą leidžia įstatymas.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: nepavyko išskirti %lu baitų (%lu baitų išskirta)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "xmalloc: nepavyko išskirti %lu baitų"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "xmalloc: %s:%d: nepavyko išskirti %lu baitų"
@@ -2318,13 +2343,13 @@ msgstr "umask [-p] [-S] [režimas]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2412,7 +2437,7 @@ msgstr "printf [-v kint] formatas [argumentai]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2425,7 +2450,7 @@ msgstr ""
 
 #: builtins.c:239
 #, fuzzy
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "shopt [-pqsu] [-o] [optvardas ...]"
 
 #: builtins.c:242
@@ -2436,8 +2461,8 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 
 #: builtins.c:256
@@ -2560,7 +2585,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2727,11 +2752,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2799,12 +2824,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2817,7 +2848,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2844,7 +2875,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2856,7 +2887,7 @@ msgid ""
 "    Returns exit status of command or success if command is null."
 msgstr ""
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2897,7 +2928,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2920,7 +2951,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 #, fuzzy
 msgid ""
 "Exit the shell.\n"
@@ -2932,7 +2963,7 @@ msgstr ""
 "nustatomas\n"
 "    paskutinės vykdytos komandos klaidos kodas."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2941,7 +2972,7 @@ msgid ""
 "    in a login shell."
 msgstr ""
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2971,7 +3002,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2983,7 +3014,7 @@ msgid ""
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -2997,7 +3028,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3021,7 +3052,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3036,14 +3067,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3052,7 +3083,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3077,7 +3109,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3101,7 +3133,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3118,7 +3150,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3141,7 +3173,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3186,7 +3218,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3207,7 +3239,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3238,7 +3270,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3250,7 +3282,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3336,7 +3368,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3358,7 +3390,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3377,7 +3409,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3398,7 +3430,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3409,7 +3441,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 #, fuzzy
 msgid ""
 "Execute commands from a file in the current shell.\n"
@@ -3428,7 +3460,7 @@ msgstr ""
 "    Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iškvietus\n"
 "    FAILĄ."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3442,7 +3474,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3525,7 +3557,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3533,7 +3565,7 @@ msgid ""
 "    be a literal `]', to match the opening `['."
 msgstr ""
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3545,7 +3577,7 @@ msgid ""
 "    Always succeeds."
 msgstr ""
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3589,7 +3621,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3619,7 +3651,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3668,7 +3700,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3686,7 +3718,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3694,19 +3726,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3721,7 +3755,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3734,7 +3768,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3751,7 +3785,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3771,7 +3805,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3787,7 +3821,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3798,7 +3832,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3819,7 +3853,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 #, fuzzy
 msgid ""
 "Execute commands as long as a test succeeds.\n"
@@ -3833,7 +3867,7 @@ msgstr ""
 "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
 "    „while“ komandų grąžina klaidos kodą 0."
 
-#: builtins.c:1641
+#: builtins.c:1649
 #, fuzzy
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
@@ -3847,7 +3881,7 @@ msgstr ""
 "Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
 "    „until“ komandų grąžina klaidos kodą, nelygų 0."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3860,7 +3894,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3874,7 +3908,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 #, fuzzy
 msgid ""
 "Group commands as a unit.\n"
@@ -3888,7 +3922,7 @@ msgstr ""
 "Vykdyti eilę komandų grupėje.  Tai yra vienas iš būdų nukreipti\n"
 "    visos eilės komandų įvedimą/išvedimą."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3902,7 +3936,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3913,7 +3947,7 @@ msgid ""
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3941,7 +3975,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3995,7 +4029,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -4026,7 +4060,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4053,7 +4087,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4082,14 +4116,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4103,7 +4136,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -4154,7 +4187,7 @@ msgstr ""
 "    Jei pateiktas parametras -v, išvedimas įrašomas į aplinkos kintamąjį\n"
 "    KINT, užuot spausdinus į standartinį išvedimą."
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4172,16 +4205,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 #, fuzzy
 msgid ""
 "Display possible completions depending on the options.\n"
@@ -4199,7 +4236,7 @@ msgstr ""
 "    Jei pateiktas nebūtinasis ŽODŽIO argumentas, išvedami įrašai,\n"
 "    atitinkantys ŽODĮ."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4214,6 +4251,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4230,7 +4268,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4272,16 +4310,21 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc."
+#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+#~ msgstr "xrealloc: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
+
+#~ msgid "xrealloc: cannot allocate %lu bytes"
+#~ msgstr "xrealloc: nepavyko išskirti %lu baitų"
+
+#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+#~ msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -4295,34 +4338,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc."
-
-#, fuzzy
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licencija GPLv3+: GNU GPL versija 3 arba naujesnė <http://gnu.org/"
-#~ "licenses/gpl.html>\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
-
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: nepavyko išskirti %lu baitų"
-
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
-
 #~ msgid " "
 #~ msgstr " "
 
index 63a485d600b59f8b415c04d3847a3780a065f064..c423521126d8d8baff42c97ead82cac99290700d 100644 (file)
Binary files a/po/nb.gmo and b/po/nb.gmo differ
index 441d8a003c99d434ba7448c1371af12ae18a4df0..1aa973d153862a7d8b396496ddb17f62e1b5d93f 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
 # Norwegian (bokmål) translation of GNU Bash
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2017 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Åka Sikrom <a4@hush.com>, 2015.
+# Åka Sikrom <a4@hush.com>, 2015-2017.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-22 12:19+0100\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-03-02 10:45+0100\n"
 "Last-Translator: Åka Sikrom <a4@hush.com>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: Norwegian bokmål\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "feil i tabell-underskript"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: fjerner navnref-egenskap"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: ugyldig nøkkel for assosiativ tabell"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: kan ikke tildeles ikke-numerisk indeks"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: underskript må brukes ved tildeling av assosiative tabeller"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: klarte ikke å opprette: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: første ikke-blanktegn må være «\"»"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "avsluttende «%c» mangler i %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: kolon-skilletegn mangler"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "brace-utvidelse: klarte ikke å tildele minne for %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "brace-utvidelse: klarte ikke å tildele minne for %d elementer"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "brace-utvidelse: klarte ikke å tildele minne for «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "«%s»: ugyldig alias"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "linjeredigering er ikke slått på"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "«%s»: ugyldig navn på tastaturoppsett"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: klarte ikke å lese: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "«%s»: klarte ikke å fjerne tildeling"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "«%s»: ukjent funksjonsnavn"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s er ikke tilknyttet en knapp.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s kan startes via"
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "«%s»: klarte ikke å fjerne tildeling"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "antall sløyfer"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer"
 
@@ -144,234 +145,233 @@ msgstr ""
 "    \n"
 "    Hvis EXPR mangler, vises"
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME har ingen verdi"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "for mange argumenter"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "ingen annen mappe"
+msgstr "null-mappe"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD har ingen verdi"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linje %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "advarsel:"
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: bruk: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: valget krever et argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: valget krever et tall-argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
-msgstr "%s: ikke funnet"
+msgstr "fant ikke %s"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: ugyldig valg"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: ugyldig valgnavn"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "«%s»: ugyldig navn"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "ugyldig oktal-tall"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "ugldig heksadesimalt tall"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "ugyldig tall"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: ugyldig signalspesifikasjon"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: skrivebeskyttet variabel"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s er utenfor rekkevidde"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s er utenfor rekkevidde"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: jobben finnes ikke"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ingen jobbkontroll"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ingen jobbkontroll"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: begrenset"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "begrenset"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ikke innebygd i skall"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "skrivefeil: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
-msgstr "feil ved endring av terminal-egenskaper: %s"
+msgstr "feil under endring av terminal-egenskaper: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
-msgstr "feil ved henting av terminal-egenskaper: %s"
+msgstr "feil under henting av terminal-egenskaper: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: feil ved henting av gjeldende mappe: %s: %s\n"
+msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: flertydig jobbspesifikasjon"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "hjelp er ikke tilgjengelig for denne versjonen"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: ugyldig handlingsnavn"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: ingen spesifikasjon for fullføring"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "fullføringsfunksjon kjøres ikke nå"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "kan bare brukes i funksjoner"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: referansevariabler kan ikke være tabeller (arrays)"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: navnref.-variabler kan ikke referere til seg selv"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: sirkulær navnreferanse"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: ugyldig variabelnavn for navnreferanse"
+msgstr "«%s»: ugyldig variabelnavn for navnreferanse"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "valget«-f» kan ikke brukes til å lage funksjoner"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: skrivebeskyttet funksjon"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: tabellvariabler kan ikke ødelegges på denne måten"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller"
@@ -405,68 +405,68 @@ msgstr "%s: ikke dynamisk innlastet"
 msgid "%s: cannot delete: %s"
 msgstr "%s: klarte ikke å slette: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: er en mappe"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ikke en vanlig fil"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: fila er for stor"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: klarte ikke å kjøre binærfil"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: klarte ikke å kjøre: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logg ut\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ikke innloggingsskall. Bruk «exit»"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Bakgrunnsjobb(er) venter.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Bakgrunnsjobb(er) kjører.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "fant ingen kommando"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "historikk-spesifikasjon"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: klarte ikke å åpne midlertidig fil: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "gjeldende"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "jobb %d startet uten jobbkontroll"
@@ -481,28 +481,27 @@ msgstr "%s: -- %c er et ugyldig valg\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: -- %c krever et argument\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "nøkkelsummering er slått av"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: kontrollsum-tabell er tom\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "treff\tkommando\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `"
 msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -510,12 +509,12 @@ msgstr ""
 "ingen hjelpeemner samsvarer med «%s».  Prøv «help help», «man -k %s» eller «info "
 "%s»."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: klarte ikke å åpne: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -537,20 +536,21 @@ msgstr ""
 "slått av.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "du kan ikke bruke flere enn ett av valgene -anrw på én gang"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "historikkposisjon"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: ugyldig argument"
+msgstr "%s: ugyldig tidsstempel"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: historikk-utvidelse mislyktes"
@@ -564,16 +564,16 @@ msgstr "%s: inlib mislyktes"
 msgid "no other options allowed with `-x'"
 msgstr "valget «-x» kan ikke brukes i kombinasjon med andre valg"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenter må være prosess- eller jobb-ID-er"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Ukjent feil"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "forventet uttrykk"
 
@@ -582,69 +582,69 @@ msgstr "forventet uttrykk"
 msgid "%s: not an indexed array"
 msgstr "%s: ikke en indeksert tabell"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: ugyldig spesifikasjon av fildeskriptor"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: ugyldig fildeskriptor: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: ugyldig linjeantall"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: ugyldig tabellopphav"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: ugyldig tilbakekallsmengde"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "tomt navn på tabellvariabel"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "støtte for tabellvariabler kreves"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "«%s»: formattegn mangler"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "«%c»: ugyldig spesifikasjon av tidsformat"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "«%c»: ugyldig formattegn"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "advarsel: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problem med tolkning av format: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "heks-siffer mangler for \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "unicode-siffer mangler for  \\%c"
@@ -658,19 +658,19 @@ msgstr "ingen annen mappe"
 msgid "%s: invalid argument"
 msgstr "%s: ugyldig argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<ingen gjeldende mappe>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "mappestabel er tom"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "mappestabel-indeks"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -712,7 +712,7 @@ msgstr ""
 "      -N\tVis N-te  mappe talt fra null\n"
 "\tpå høyre side av lista (gjelder når programmet kjøres uten valg)."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -756,7 +756,7 @@ msgstr ""
 "    \n"
 "    Den innebygde funksjonen «dirs» viser mappestabelen."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -800,42 +800,42 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: ugyldig spesifikasjon av tidsavbrudd"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "lesefeil: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "du kan bare «return» fra en funksjon eller kildeskript"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 "du kan ikke utføre «unset» (tømme både en funksjon og en variabel for "
 "verdier) samtidig"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: klarte ikke å fjerne verdi"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ikke en tabellvariabel"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ikke en funksjon"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: klarte ikke å eksportere"
@@ -844,20 +844,20 @@ msgstr "%s: klarte ikke å eksportere"
 msgid "shift count"
 msgstr "shift-antall"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "du kan ikke både definere og fjerne skallvalg samtidig"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: ugyldig navn på skallvalg"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "filnavn-argument kreves"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: fant ikke fil"
@@ -870,61 +870,61 @@ msgstr "klarte ikke å sette i hvilemodus"
 msgid "cannot suspend a login shell"
 msgstr "klarte ikke å sette et innloggingsskall i hvilemodus"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s har alias «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s er et skall-nøkkelord\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s er en funksjon\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s er en innebygd skallkommando\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s er en innebygget skallfunksjon\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s er %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s er nøkkelsummert («hashed») (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: ugyldig grenseargument"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "«%c»: ugyldig kommando"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: klarte ikke å hente grense: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "grense"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: klarte ikke å endre grense: %s"
@@ -943,359 +943,369 @@ msgstr "«%c»: ugyldig symbolsk modus-operatør"
 msgid "`%c': invalid symbolic mode character"
 msgstr "«%c»: ugyldig symbolsk modustegn"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " linje "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "forrige kommando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Abryter …"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "ukjent kommandofeil"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "ugyldig kommandotype"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "ugyldig tilkobling"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "ugyldig hopp"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: utildelt variabel"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atidsavbrudd for inndata: auto-utlogging\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "klarte ikke å videresende standard inndata fra «/dev/null». %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "datarør-feil"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 "eval: grensa for nivåer av eval-funksjoner i eval-funksjoner (%d) er "
 "overskredet"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: grensa for nivåer av kilder i kilder (%d) er overskredet"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: grensa for nivåer av funksjoner i funksjoner (%d) er overskredet"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
-msgstr "%s: fant ikke kommando"
+msgstr "fant ikke kommando %s"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: ugyldig tolk"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: klarte ikke å kjøre binærfil: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "«%s» er en innebygd spesialfunksjon"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "klarte ikke å duplisere fd %d til fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "grensa for rekursjonsnivåer i uttrykk er overskredet"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "rekursjonsstabelen er tom"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "uttrykk inneholder syntaksfeil"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "du forsøkte å tilordne en verdi til noe som ikke er en variabel"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "uttrykk inneholder syntaksfeil"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "forsøkte å dele på 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "programfeil: ugyldig expassign-symbol"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "forventet «:» for betinget uttrykk"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponent er lavere enn 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "forventet identifikator etter pre-økning eller pre-forminskelse"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "mangler «)»"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntaksfeil: forventet operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntaksfeil: ugyldig aritmetisk operatør"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (feilaktig symbol er «%s»)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "ugyldig aritmetisk grunntall"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "verdien er for høy for grunntallet"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: feil i uttrykk\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: fikk ikke tilgang til foreldermapper"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "klarte ikke å tilbakestille nodelay-modus for fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "klarte ikke å knytte ny fildeskriptor til bash-inndata fra fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp-datarør"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "kopiert pid %d finnes i kjørende jobb %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: prosess %5ld (%s) i _kommandokø"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: markert PID %5ld (%s) som levende"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: pid-en finnes ikke"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Ferdig"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Venter"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Venter(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Kjører"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Ferdig(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Avsluttet %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Ukjent status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(kjerne lagret i fil) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "underprosess setpgid (%ld til %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld er ikke en underprosess av dette skallet"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Ingen kjennskap til prosess %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: prosess %d venter"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: jobben er avsluttet"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: jobb %d kjører allerede i bakgrunnen"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: slår på WNOHANG for å unngå kronisk blokkering"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: linje %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (kjerne lagret i fil)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd nå: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp mislyktes"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: linjeregler"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: linjeregler"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "klarte ikke å velge terminal-prosessgruppe (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "ingen jobbkontroll i dette skallet"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: mislykket premiss: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1304,39 +1314,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: urimelig premiss\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "ukjent"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: rotete blokk på befrielsesliste"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: ble bedt om å behandle blokk som allerede er ledig"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: ble bedt om å behandle blokk som ikke er tildelt"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: start- og sluttdel er av ulik størrelse"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: ble bedt om å behandle blokk som ikke er tildelt"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: start- og sluttdel er av ulik størrelse"
 
@@ -1378,22 +1388,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti"
 msgid "network operations not supported"
 msgstr "nettverkshandlinger støttes ikke"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: klarte ikke å bytte region (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: klarte ikke å bytte region (%s): %s"
@@ -1411,151 +1421,153 @@ msgstr "Du har ny e-post i $_"
 msgid "The mail in %s has been read\n"
 msgstr "Posten i %s er lest\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntaksfeil: aritmetisk uttrykk kreves"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntaksfeil: uforventet «;»"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntaksfeil: «((%s))»"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: %d er en ugyldig instrukstype"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "here-dokument ved linje %d adskilt av slutt på fil (forventet «%s»)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja "
+"er forkortet"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "grensa for maksimalt antall here-dokumenter er overskredet"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "uforventet slutt på fil (EOF) under søk etter «%c»"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "uforventet slutt på fil (EOF) under søk etter «]]»"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntaksfeil i betinget uttrykk"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "forventet ikke symbolet «%s», men «)»"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "forventet «)»"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "«%s» er et uforventet argument for betinget unær operatør"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "uforventet argument for betinget unær operatør"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "forventet betinget binæroperatør"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "«%s» er et uforventet argument for betinget binæroperatør"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "uforventet argument for betinget binæroperatør"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "«%c» er et uforventet symbol i en betinget kommando"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "«%s» er et uforventet symbol i en betinget kommando"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "«%d» er et uforventet symbol i en betinget kommando"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntaksfeil ved «%s», som er et uforventet symbol"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntaksfeil ved «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntaksfeil: uforventet slutt på fil"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntaksfeil"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Bruk «%s» for å gå ut av skallet.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "uforventet slutt på fil (EOF) under søk etter «)»"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "fullføring: fant ikke funksjonen «%s»"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: mulig løkke av nye forsøk"
 
 #: pcomplib.c:182
 #, c-format
@@ -1581,90 +1593,94 @@ msgstr "xtrace_set: filpeker er NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: «%c»: ugyldig formattegn"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "fildeskriptor er utenfor tillatt rekkevidde"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: flertydig videresending"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: klarte ikke å overskrive fil"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: ikke tillatt: klarte ikke å videresende utdata"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "klarte ikke å lage midlertidig fil for here-dokument: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: klarte ikke å knytte fd til variabel"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "videresendingsfeil: klarte ikke å duplisere fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "fant ikke «/tmp». Opprett denne mappa!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "«/tmp» må være et gyldig mappenavn"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: ugyldig valg"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "klarte ikke å velge %d som uid. Effektiv uid: %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "klarte ikke å velge %d som gid. Effektiv gid: %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "klarte ikke å starte feilsøkingsverktøy. Feilsøkingsmodus slått av"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: er en mappe"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Jeg manger navn!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versjon %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1673,51 +1689,51 @@ msgstr ""
 "Bruk:\t%s [langt GNU-valg] [valg] …\n"
 "\t%s [langt GNU-valg] [valg] skriptfil …\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Lange GNU-valg:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Skallvalg:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t«-ilrsD»,  «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t«-%s» eller «-o»\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Bruk kommandoen «bashbug» for å rapportere programfeil.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash-nettside: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Generell hjelp til bruk av GNU-programvare: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: ugyldig handling"
@@ -1891,92 +1907,96 @@ msgstr "Ukjent signal #"
 msgid "Unknown Signal #%d"
 msgstr "#%d er et ukjent signal"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: klarte ikke å knytte liste til tabellmedlem"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "klarte ikke å lage datarør for substitusjon av prosess"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "klarte ikke å lage underprosess for substitusjon av prosess"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "klarte ikke å åpne navngitt datarør %s for lesing"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "klarte ikke å åpne navngitt datarør %s for skriving"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "klarte ikke å duplisere navngitt datarør %s som fd %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "ugyldig substitusjon. %s mangler avsluttende «`»"
+msgstr "kommandosubstitusjon: null-byte i inndata ignorert"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "klarte ikke å lage datarør for substitusjon av kommando"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "klarte ikke å lage underprosess for substitusjon av kommando"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: klarte ikke å duplisere datarør som fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: ugyldig variabelnavn for navnreferanse"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: ugyldig substitusjon"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: ugyldig indirekte utvidelse"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: ugyldig variabelnavn"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter har null-verdi eller står tomt"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter har null-verdi eller står tomt"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: understreng-uttrykk < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: ugyldig substitusjon"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: du kan ikke tildele på denne måten"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1984,12 +2004,12 @@ msgstr ""
 "fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk "
 "substitusjon"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "ugyldig substitusjon. %s mangler avsluttende «`»"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "ingen treff på %s"
@@ -2012,30 +2032,37 @@ msgstr "forventet «)»"
 msgid "`)' expected, found %s"
 msgstr "forventet «)», men fant %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: forventet unær operatør"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: forventet binær operatør"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "«]» mangler"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "ugyldig signalnummer"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+"eval: grensa for nivåer av eval-funksjoner i eval-funksjoner (%d) er "
+"overskredet"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2043,86 +2070,86 @@ msgstr ""
 "run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv "
 "på nytt"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: %d er et ugyldig signal"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "feil under importering av definisjonen av funksjonen «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "skallnivået (%d) er for høyt. Tilbakestiller til 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: variabel kan ikke tilknyttes verdi"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: ugyldig variabelnavn for navnreferanse"
+msgstr "%s: knytter heltall til navnreferanse"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s har exportstr som er null"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%d er et ugyldig tegn i exportstr for %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "exportstr for %s mangler «=»"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: kontekst for «global_variables» mangler"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: klarte ikke å åpne som FIL"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Opphavsrett (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Opphavsrett (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2147,22 +2174,22 @@ msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 "Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: klarte ikke å tildele %lu byte (%lu byte tildelt)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: klarte ikke å tildele %lu byte"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: klarte ikke å tildele %lu byte (%lu byte tildelt)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: klarte ikke å tildele %lu byte"
@@ -2289,9 +2316,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [jobbspes …] eller jobs -x kommando [arg]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobbspes …]"
+msgstr "disown [-h] [-ar] [jobbspes … | pid …]"
 
 #: builtins.c:134
 msgid ""
@@ -2374,7 +2400,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [modus]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id …]"
 
 #: builtins.c:181
@@ -2466,8 +2493,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] format [argumenter]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2484,7 +2512,8 @@ msgstr ""
 "[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o valg] [-DE] [navn …]"
 
 #: builtins.c:242
@@ -2496,9 +2525,10 @@ msgstr ""
 "tilbakekall] [-c mengde] [tabell]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] "
 "[-c mengde] [tabell]"
@@ -2535,8 +2565,8 @@ msgstr ""
 "      -p\tSkriv ut alle definerte alias i brukbart format\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    alias avslutter med positiv verdi («true»), med mindre brukeren angir et "
-"NAVN\n"
+"    alias avslutter med positiv verdi («true»), med mindre bruker skriver inn "
+"et NAVN\n"
 "    som mangler definert alias."
 
 #: builtins.c:278
@@ -2553,8 +2583,8 @@ msgstr ""
 "    Valg:\n"
 "      -a\tfjern alle alias-definisjoner.\n"
 "    \n"
-"    Programmet avslutter som vellykket med mindre brukeren velger et "
-"aliasNAVN som ikke finnes."
+"    Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN "
+"som ikke finnes."
 
 #: builtins.c:291
 msgid ""
@@ -2636,8 +2666,8 @@ msgstr ""
 "                         i et format som kan gjenbrukes i inndata.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    bind avslutter med 0, med mindre brukeren tar et ukjent valg eller det "
-"oppstår en feil."
+"    bind avslutter med 0, med mindre bruker tar et ukjent valg eller det "
+"oppstår feil."
 
 #: builtins.c:330
 msgid ""
@@ -2674,6 +2704,7 @@ msgstr ""
 "    Statuskoden er 0, med mindre N er mindre enn 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2684,7 +2715,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Kjør innebygde skallfunksjoner.\n"
 "    \n"
@@ -2828,7 +2859,7 @@ msgstr ""
 "    «pwd» kjører med valget «-L» som standard.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Status er 0, med mindre brukeren tar et ugyldig valg eller\n"
+"    Status er 0, med mindre bruker tar et ugyldig valg eller\n"
 "    programmet ikke klarer å lese gjeldende mappe."
 
 #: builtins.c:442
@@ -2908,6 +2939,7 @@ msgstr ""
 "finnes."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2926,11 +2958,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2980,11 +3012,10 @@ msgstr ""
 "    kommandoen «local». Valget «-g» slår av denne oppførselen.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller\n"
+"    Vellykket, med mindre bruker tar et ugyldig valg eller\n"
 "    det oppstår en variabel-tildelingsfeil."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2992,7 +3023,7 @@ msgid ""
 msgstr ""
 "Gi verdier og attributter til variabler.\n"
 "    \n"
-"    Denne funksjonen er utgått.  Se «help declare»."
+"    Dette er synonymt med «declare» (se «help declare»)."
 
 #: builtins.c:538
 msgid ""
@@ -3018,10 +3049,11 @@ msgstr ""
 "    for funksjonen de lages innenfor, samt underfunksjoner.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg, det oppstår\n"
+"    Vellykket, med mindre bruker tar et ugyldig valg, det oppstår\n"
 "    en feil under variabeltildeling eller skallet ikke kjører en funksjon."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3050,6 +3082,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3083,7 +3121,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket, med mindre det oppstår en skrivefeil."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3105,7 +3143,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket, med mindre det oppstår en skrivefeil."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3154,10 +3192,9 @@ msgstr ""
 "    versjonen som er innebygd i skallet.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstår en "
-"feil."
+"    Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstår feil."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3176,7 +3213,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som valgt kommando, eller vellykket hvis kommando er null."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3234,7 +3271,7 @@ msgstr ""
 "    \n"
 "    getopts rapporterer feil på én av to måter. Hvis første tegn i "
 "VALGSTRENG\n"
-"    er kolon, rapporteres feil uten direkte feilmeldinger til brukeren.\n"
+"    er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n"
 "    Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n"
 "    Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN "
 "og\n"
@@ -3255,7 +3292,7 @@ msgstr ""
 "    Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n"
 "    eller det oppstår en annen feil."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3297,7 +3334,7 @@ msgstr ""
 "    Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en "
 "videresendingsfeil."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3309,7 +3346,7 @@ msgstr ""
 "    Avslutt skallet med status N. Hvis N utelates, er statuskoden\n"
 "    den samme som forrige kjørte kommando."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3323,7 +3360,7 @@ msgstr ""
 "det\n"
 "    ikke kjøres i et innloggingsskall."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3379,7 +3416,7 @@ msgstr ""
 "    Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis "
 "det oppstår feil."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3398,9 +3435,9 @@ msgstr ""
 "    \n"
 "    Avslutningsstatus:\n"
 "    Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det "
-"oppstår en feil."
+"oppstår feil."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3421,9 +3458,9 @@ msgstr ""
 "    som gjeldende i skallet.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre jobbkontroll er slått av eller det oppstår en feil."
+"    Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3464,10 +3501,10 @@ msgstr ""
 "    \t\tover lagrede kommandoer.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre NAVN ikke finnes eller brukeren tar et ugyldig "
-"valg."
+"    Vellykket, med mindre NAVN ikke finnes eller bruker tar et ugyldig valg."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3482,7 +3519,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3504,10 +3541,10 @@ msgstr ""
 "      MØNSTER\tVelger hjelpeemne\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre et MØNSTER ikke finnes eller brukeren tar et "
-"ugyldig valg."
+"    Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig "
+"valg."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3517,7 +3554,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3543,7 +3581,7 @@ msgid ""
 msgstr ""
 "Vis eller gjør endringer i kommandohistorikk.\n"
 "    \n"
-"    Vis historikk som en liste med linjenumre, og legg til en «*» foran\n"
+"    Vis historikk som en liste med linjenumre, og legg til «*» foran\n"
 "    endrede oppføringer.  Argumentet N viser siste N antall oppføringer.\n"
 "    \n"
 "    Valg:\n"
@@ -3570,10 +3608,9 @@ msgstr ""
 "    hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3613,11 +3650,11 @@ msgstr ""
 "    jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår "
 "feil.\n"
 "    Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3646,10 +3683,9 @@ msgstr ""
 "      -r\tbare fjern kjørende jobber\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar ugyldig(e) valg eller JOBBSPES."
+"    Vellykket, med mindre bruker tar ugyldig(e) valg eller JOBBSPES."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3671,7 +3707,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
-"Send et signal til en jobb.\n"
+"Send signal til en jobb.\n"
 "    \n"
 "    Gi prosesser (valgt med PID eller JOBBSPES) et signal\n"
 "    (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er "
@@ -3683,18 +3719,17 @@ msgstr ""
 "      -n sig\tSIG er et signalnummer\n"
 "      -l\tvis signalnavn. Hvis «-l» etterfølges av argumenter,\n"
 "    \tantas disse å være signalnumre som det skal vises navn på\n"
+"      -L\ttilsvarer «-l»\n"
 "    \n"
 "    Kill er en innebygget skallkommando av to grunner: den tillater bruk av "
 "jobb-ID\n"
-"    i stedet for prosess-ID, og lar brukeren drepe prosesser hvis grensa "
-"for\n"
+"    i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n"
 "    antall tillatte prosesser er nådd.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3777,7 +3812,8 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3798,7 +3834,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3872,7 +3908,7 @@ msgstr ""
 "tidelingsfeil,\n"
 "    eller valget «-u» argumenteres med en ugyldig fildeskriptor."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3892,8 +3928,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3980,7 +4015,7 @@ msgid ""
 msgstr ""
 "Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n"
 "    \n"
-"    Endre verdien av skall-attributter og posisjonsparametre, eller\n"
+"    Endre verdier av skall-attributter og posisjonsparametre, eller\n"
 "    vis navn og verdier av skallvariabler.\n"
 "    \n"
 "    Valg:\n"
@@ -4048,20 +4083,20 @@ msgstr ""
 "          som «cd».\n"
 "      -T  Gi DEBUG-felle videre til skallfunksjoner.\n"
 "      --  Tildel gjenstående argumenter til posisjonsparametre.\n"
-"          Hvis ingen argumenter gjenstår, tømmes posisjonsparametrene..\n"
-"      -   Knytt gjenstående argumenter til posisjonsparametrene.\n"
+"          Hvis ingen argumenter gjenstår, tømmes posisjonsparametrene.\n"
+"      -   Knytt gjenstående argumenter til posisjonsparametre.\n"
 "          Valgene «-x» og «-v» er slått av.\n"
 "    \n"
-"    Bruk «+» i stedet for «-» for å skru av disse valgene.\n"
-"    De kan også brukes når skalelt kalles. Gjeldende valgsett finnes\n"
+"    Bruk «+» i stedet for «-» for å s av disse valgene.\n"
+"    De kan også brukes når skallet kalles. Gjeldende valgsett finnes\n"
 "    i «$-». Gjenstående antall ARGumenter er posisjonsparametre,\n"
 "    og tildeles i rekkefølge til $1, $2, … $n. Hvis ingen\n"
 "    ARGumenter er brukt, skrives alle skallvariabler ut.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg."
+"    Vellykket, med mindre bruker tar et ugyldig valg."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4099,10 +4134,10 @@ msgstr ""
 "    Enkelte variabler kan ikke tømmes. Se også «readonly».\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller et NAVN er "
+"    Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er "
 "skrivebeskyttet."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4135,10 +4170,10 @@ msgstr ""
 "    Bruk argumentet«--» for å slå av videre behandling av valg.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg, eller et NAVN er "
+"    Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er "
 "ugyldig."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4176,9 +4211,9 @@ msgstr ""
 "    Bruk argumentet «--» for å slå av videre behandling av valg.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller NAVN."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4196,7 +4231,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket, med mindre N er negativ eller større enn $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4220,7 +4255,7 @@ msgstr ""
 "    Samme som siste kommando som ble kjørt via FILNAVN, eller\n"
 "    mislykket hvis FILNAVN ikke kan leses."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4244,9 +4279,9 @@ msgstr ""
 "      -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre jobbkontroll er slått av eller det oppstår en feil."
+"    Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4410,9 +4445,9 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ "
 "verdi eller\n"
-"    brukeren bruker et ugyldig argument."
+"    bruker skriver inn et ugyldig argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4424,7 +4459,7 @@ msgstr ""
 "    Dette er synonymt med den innebygde kommandoen «test», men\n"
 "    siste argument må være «]» for å samsvare med «[»."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4443,7 +4478,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Alltid vellykket."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4525,7 +4560,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4583,7 +4618,7 @@ msgstr ""
 "    Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke "
 "finnes."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4676,10 +4711,9 @@ msgstr ""
 "prosesser.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4698,8 +4732,7 @@ msgid ""
 msgstr ""
 "Vis eller endre filmodus-maske.\n"
 "    \n"
-"    Endrer brukerens standardmaske for nye filer til valgt MODUS. Hvis "
-"ingen\n"
+"    Endrer brukers standardmaske for nye filer til valgt MODUS. Hvis ingen\n"
 "    MODUS er valgt, skrives gjeldende maskeverdi ut.\n"
 "    \n"
 "    Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n"
@@ -4711,10 +4744,10 @@ msgstr ""
 "      -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre MODUS er ugyldig eller brukeren tar et ugyldig "
-"valg."
+"    Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4722,13 +4755,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4748,9 +4783,9 @@ msgstr ""
 "    \n"
 "    Avslutningsstatus:\n"
 "    Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n"
-"    brukeren tar et ugyldig valg."
+"    bruker tar et ugyldig valg."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4774,9 +4809,9 @@ msgstr ""
 "    \n"
 "    Avslutningsstatus:\n"
 "    Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n"
-"    brukeren tar et ugyldig valg."
+"    bruker tar et ugyldig valg."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4797,7 +4832,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørte kommando."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4827,7 +4862,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørte kommando."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4863,7 +4898,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørt kommando."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4893,7 +4928,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som statuskoden fra valgt DATARØR."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4911,7 +4946,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørte kommando."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4945,7 +4980,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørt kommando."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4963,7 +4998,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørte kommando."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4981,8 +5016,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørte kommando."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4994,7 +5028,7 @@ msgid ""
 "    Exit Status:\n"
 "    The coproc command returns an exit status of 0."
 msgstr ""
-"Lag en medprosess med valgt NAVN.\n"
+"Lag medprosess med valgt NAVN.\n"
 "    \n"
 "    Kjør valgt KOMMANDO synkront, med standard inn- og utdata for "
 "kommandoen\n"
@@ -5003,10 +5037,9 @@ msgstr ""
 "    med oppgitt NAVN i kjørende skall.\n"
 "\v    StandardNAVN er «COPROC».\n"
 "    \n"
-"    Avslutningsstatus:\n"
-"    Samme som valgt KOMMANDO."
+"    coproc avslutter med kode 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5030,7 +5063,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Vellykket, med mindre valgt NAVN er skrivebeskyttet."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5048,7 +5081,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som sist kjørt kommando."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5072,7 +5105,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    Samme som statuskoden for gjenopptatt jobb."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5090,7 +5123,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    1 hvis UTTRYKK blir 0, og ellers 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5141,7 +5174,7 @@ msgstr ""
 "    Avslutningsstatus:\n"
 "    0 eller 1, avhengig av UTTRYKKets verdi."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5246,7 +5279,7 @@ msgstr ""
 "    HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n"
 "    \t\thvilke kommandoer som skal lagres i historikklista.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5302,7 +5335,7 @@ msgstr ""
 "    Vellykket, med mindre et ugyldig argument er brukt eller\n"
 "    mappebytte mislykkes."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5351,7 +5384,7 @@ msgstr ""
 "    Vellykket, med mindre et ugyldig argument er brukt eller\n"
 "    mappebytte mislykkes."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5381,11 +5414,11 @@ msgid ""
 msgstr ""
 "Vis mappestabel.\n"
 "    \n"
-"    Vis lista over hurtiglagrede mapper som er hurtiglagret med\n"
+"    Vis liste over hurtiglagrede mapper som er hurtiglagret med\n"
 "    kommandoen «pushd». Du kan gå opp igjen med kommandoen «popd».    \n"
 "    Valg:\n"
 "      -c\ttøm mappestabel ved å slette alle elementer\n"
-"      -l\tikke skriv ut undermapper av brukerens hjemmemappe som\n"
+"      -l\tikke skriv ut undermapper av brukers hjemmemappe som\n"
 "    \trelative stier med tilde-prefiks\n"
 "      -p\tskriv ut mappestabel med én oppføring per linje\n"
 "      -v\ttilsvarer «-p», men med stabelposisjon som prefiks\n"
@@ -5395,17 +5428,16 @@ msgstr ""
 "      -N\tVis N-te oppføring (talt fra null til høyre, etter «dirs»).\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5432,10 +5464,10 @@ msgstr ""
 "      -u\tslå av (tilbakestill) hvert VALGNAVN\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten brukeren \n"
+"    Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten bruker \n"
 "    tar et ugyldig valg eller VALGNAVN er slått av."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5500,10 +5532,11 @@ msgstr ""
 "    formatstrenger seg som om de var 0-verdier eller null-strenger.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en\n"
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår en\n"
 "    skrive- eller tidelingsfeil."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5521,10 +5554,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5547,10 +5584,9 @@ msgstr ""
 "    fremfor «-E».\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5569,10 +5605,10 @@ msgstr ""
 "    søketreff på ORD.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstår en "
-"feil."
+"    Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5587,6 +5623,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5626,10 +5663,10 @@ msgstr ""
 "    Valgene for den aktuelle fullføringsgeneratoren blir i så fall endret.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN\n"
+"    Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n"
 "    mangler fullføringsoppsett."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5705,11 +5742,10 @@ msgstr ""
 "tildelt noe.\n"
 "    \n"
 "    Avslutningsstatus:\n"
-"    Vellykket, med mindre brukeren tar et ugyldig valg eller TABELL enten "
-"er\n"
+"    Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n"
 "    skrivebeskyttet eller en ikke-indeksert tabell."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 34efe81bfaba603a10ed5ea20a6a1543187b9524..369c1956e6dad480d6d428bf8ddcdd841c4ea281 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index f1c2b472934834e233ed7d99e2326542e394f241..88eb7d2a719729a3c74c17bef3eeb2f64f763d9e 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,8 +1,8 @@
 # Dutch translations for GNU bash.
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2016 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 #
-# “Änderung des Speises tut essen.”
+# «Lernfähiger Software! Ich lach mich kaputt!»
 #
 # De vertaling van de ruim 70 laatste hulpteksten (65%) in dit bestand
 # volgt niet helemaal het normale stramien van "onbepaalde wijs voor
 # om stilstaan en niet om finale opgave.  Een alternatieve vertaling
 # zou dus "Stilstand" kunnen zijn.
 #
-# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014, 2015.
+# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014, 2015, 2016.
 # Erwin Poeze <erwin.poeze@gmail.com>, 2009.
 # Julie Vermeersch <julie@lambda1.be>, 2004.
 # Erick Branderhorst <branderh@iaehv.nl>, 1996.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-18 21:37+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2016-11-12 16:31+0100\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: nl\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Generator: Lokalize 1.0\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "ongeldige array-index"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: 'nameref'-eigenschap wordt verwijderd"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: ongeldige sleutel voor associatief array"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: niet-numerieke index is niet mogelijk"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: een index is nodig bij toekenning aan associatief array"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "Kan %s niet aanmaken: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: eerste teken dat geen witruimte is is niet '\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "geen sluit-'%c' in %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: ontbrekend scheidingsteken (dubbele punt)"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %d elementen"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "'%s': ongeldige naam voor alias"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "regelbewerking is niet ingeschakeld"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "'%s': ongeldige naam voor toetsenkaart"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "Kan %s niet lezen: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "Kan %s niet losmaken"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "'%s': onbekende functienaam"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s is aan geen enkele toets gebonden\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s kan worden aangeroepen via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "Kan %s niet losmaken"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "herhalingsaantal"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus"
 
@@ -163,234 +164,233 @@ msgstr ""
 "\n"
 "    Zonder EXPR, resulteert "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME is niet gedefinieerd"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "te veel argumenten"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "geen andere map"
+msgstr "null-map"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD is niet gedefinieerd"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "regel %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "waarschuwing: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: Gebruik:  "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: optie vereist een argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: vereist een numeriek argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: niet gevonden"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: ongeldige optie"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: ongeldige optienaam"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "'%s': is geen geldige naam"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "ongeldig octaal getal"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "ongeldig hexadecimaal getal"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "ongeldig getal"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: ongeldige signaalaanduiding"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "'%s': is geen PID en geen geldige taakaanduiding"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: is een alleen-lezen variabele"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s valt buiten bereik"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s valt buiten bereik"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: taak bestaat niet"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: geen taakbesturing"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "geen taakbesturing"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: beperkte modus"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "beperkte modus"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: is geen ingebouwde opdracht van de shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "schrijffout: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "fout tijdens instellen van terminaleigenschappen: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: taakaanduiding is niet eenduidig"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "hulp is niet beschikbaar in deze versie"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: ongeldige actienaam"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: is geen completerings-aanduiding"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "kan alleen worden gebruikt binnen een functie"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: verwijzingsvariabele mag geen array zijn"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: circulaire naamsverwijzing"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: ongeldige variabelenaam voor naamsverwijzing"
+msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "'-f' kan niet gebruikt worden om een functie te definiëren"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: is een alleen-lezen functie"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: kan array-variabelen niet op deze manier verwijderen"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array"
@@ -424,68 +424,68 @@ msgstr "%s: is niet dynamisch geladen"
 msgid "%s: cannot delete: %s"
 msgstr "Kan %s niet verwijderen: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is een map"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: is geen normaal bestand"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: bestand is te groot"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: kan binair bestand niet uitvoeren"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "Kan %s niet uitvoeren: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "uitgelogd\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "geen login-shell; gebruik 'exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Er zijn nog gepauzeerde taken.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Er zijn nog draaiende taken.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "geen opdracht gevonden"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "geschiedenisaanduiding"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "Kan tijdelijk bestand '%s' niet openen: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "huidige"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "taak %d is gestart zonder taakbesturing"
@@ -500,28 +500,27 @@ msgstr "%s: ongeldige optie -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: optie vereist een argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashen is uitgeschakeld"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: de hash-tabel is leeg\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "treffers commando\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Shell-opdrachten die overeenkomen met '"
 msgstr[1] "Shell-opdrachten die overeenkomen met '"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -529,12 +528,12 @@ msgstr ""
 "Er is geen hulptekst voor '%s'.\n"
 "Probeer 'help help' of 'man -k %s' of 'info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "Kan %s niet openen: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -556,20 +555,21 @@ msgstr ""
 "is.)\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "geschiedenispositie"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: ongeldig argument"
+msgstr "%s: ongeldig tijdsstempel"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: geschiedenisexpansie is mislukt"
@@ -583,16 +583,16 @@ msgstr "%s: 'inlib' is mislukt"
 msgid "no other options allowed with `-x'"
 msgstr "bij '-x' zijn geen andere opties toegestaan"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Onbekende fout"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "uitdrukking werd verwacht"
 
@@ -601,71 +601,71 @@ msgstr "uitdrukking werd verwacht"
 msgid "%s: not an indexed array"
 msgstr "%s: is geen geïndexeerd array"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: ongeldige aanduiding van bestandsdescriptor"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: ongeldige bestandsdescriptor: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: ongeldig regelaantal"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: ongeldig array-begin"
 
 # Quantum is een hoeveelheid regels, een getal.
 # Callback is de aan te roepen functie, maar onnodig in de vertaling.
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: ongeldige hoeveelheid"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "lege naam van array-variabele"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "ondersteuning van arrayvariabelen is vereist"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "'%s': ontbrekend opmaakteken"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "'%c': ongeldige aanduiding van tijdsopmaak"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "'%c': ongeldig opmaakteken"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "waarschuwing: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "probleem bij ontleden van opmaak: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "ontbrekend hexadecimaal cijfer bij \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "ontbrekend Unicode-cijfer bij \\%c"
@@ -679,19 +679,19 @@ msgstr "geen andere map"
 msgid "%s: invalid argument"
 msgstr "%s: ongeldig argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<geen huidige map>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "mappenstapel is leeg"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "mappenstapelindex"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -731,7 +731,7 @@ msgstr ""
 "      -N   Toont het N-de item, tellend vanaf rechts, van de lijst getoond\n"
 "           door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -773,7 +773,7 @@ msgstr ""
 "\n"
 "    De opdracht 'dirs' toont de huidige mappenstapel."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -816,42 +816,42 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: ongeldige aanduiding van tijdslimiet"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "leesfout: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "kan alleen een 'return' doen uit een functie of een uit script aangeroepen "
 "met 'source'"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "kan niet tegelijk een functie en een variabele verwijderen"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "Kan '%s' niet verwijderen"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: is geen array-variabele"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: is geen functie"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "Kan '%s' niet exporteren"
@@ -860,20 +860,20 @@ msgstr "Kan '%s' niet exporteren"
 msgid "shift count"
 msgstr "shift-aantal"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: ongeldige shell-optienaam"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "vereist een bestandsnaam als argument"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: bestand niet gevonden"
@@ -886,61 +886,61 @@ msgstr "kan niet pauzeren"
 msgid "cannot suspend a login shell"
 msgstr "kan een inlog-shell niet pauzeren"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s is een alias voor '%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s is een shell-sleutelwoord\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s is een functie\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s is een speciale ingebouwde shell-functie\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s is een ingebouwde shell-functie\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is gehasht (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: ongeldige limietwaarde"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "'%c': ongeldige opdracht"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: kan de limiet niet bepalen: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limiet"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: kan de limiet niet wijzigen: %s"
@@ -959,362 +959,372 @@ msgstr "'%c': ongeldige operator in symbolische modus"
 msgid "`%c': invalid symbolic mode character"
 msgstr "'%c': ongeldig teken in symbolische modus"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " regel "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "laatste opdracht: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Afbreken..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "informatie: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "onbekende opdrachtfout"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "ongeldig opdrachttype"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "ongeldige verbinder"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "ongeldige sprong"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: ongebonden variabele"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "pijpfout"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: opdracht niet gevonden"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: ongeldige interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: kan binair bestand %s niet uitvoeren"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "'%s' is een speciale ingebouwde shell-functie"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "recursieniveau van expressies is overschreden"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "recursiestapel-onderloop"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntaxfout in expressie"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "poging tot toewijzing aan een niet-variabele"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "syntaxfout in expressie"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "deling door nul"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "':' werd verwacht voor een voorwaardelijke expressie"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponent is kleiner dan 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "naam verwacht na pre-increment of pre-decrement"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "ontbrekend ')'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntaxfout: operator verwacht"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntaxfout: ongeldige rekenkundige operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "ongeldige rekenkundige basis"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "waarde is te groot voor basis"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: expressiefout\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "kan geen nieuwe bestandsdescriptor reserveren voor bash-invoer vanuit "
 "bestandsdescriptor %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline(): procesgroep van pijp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "afgesplitst PID %d hoort bij draaiende taak %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..."
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process(): proces %5ld (%s) in de pijplijn"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid(): PID %ld bestaat niet"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signaal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Klaar"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Gepauzeerd"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Gepauzeerd(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Wordt uitgevoerd"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Klaar(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Exit %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Onbekende afsluitwaarde"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(geheugendump gemaakt) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (werkmap: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "instellen van procesgroep %2$ld van dochter %1$ld"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait(): PID %ld is geen dochterproces van deze shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for(): proces %ld is nergens geregistreerd"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job(): taak %d is gepauzeerd"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: taak is afgesloten"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: taak %d draait al op de achtergrond"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te "
 "vermijden"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: regel %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (geheugendump gemaakt)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(werkmap is nu: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp() is mislukt"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: lijnprotocol"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: lijnprotocol"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid()"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "kan procesgroep (%d) van terminal niet instellen"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "er is geen taakbesturing in deze shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc(): controletest is mislukt: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1323,39 +1333,39 @@ msgstr ""
 "\r\n"
 "malloc(): %s:%d: controletest is mislukt\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "onbekend"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free(): aangeroepen met als argument een ongebruikt blok"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free(): blokgroottes van begin en eind zijn verschillend"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc(): aangeroepen met als argument een ongebruikt blok"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc(): blokgroottes van begin en eind zijn verschillend"
 
@@ -1397,22 +1407,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad"
 msgid "network operations not supported"
 msgstr "netwerkoperaties worden niet ondersteund"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s"
@@ -1430,153 +1440,155 @@ msgstr "U hebt nieuwe post in $_"
 msgid "The mail in %s has been read\n"
 msgstr "De post in %s is gelezen.\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntaxfout: een rekenkundige uitdrukking is vereist"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntaxfout: onverwachte ';'"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntaxfout: '((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document(): ongeldig instructietype %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%"
 "s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): "
+"regel is afgekapt"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "maximum aantal \"hier\"-documenten is overschreden"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntaxfout in conditionele expressie"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "onverwacht symbool '%s'; ')' werd verwacht"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "')' werd verwacht"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "onverwacht argument bij eenzijdige conditionele operator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "tweezijdige conditionele operator werd verwacht"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "onverwacht argument bij tweezijdige conditionele operator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "onverwacht symbool '%c' in conditionele opdracht"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "onverwacht symbool '%s' in conditionele opdracht"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "onverwacht symbool %d in conditionele opdracht"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntaxfout nabij onverwacht symbool '%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntaxfout nabij '%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntaxfout: onverwacht bestandseinde"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntaxfout"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Gebruik \"%s\" om de shell te verlaten.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion(): functie '%s' niet gevonden"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion(): %s: mogelijke herprobeerlus"
 
 #: pcomplib.c:182
 #, c-format
@@ -1604,90 +1616,94 @@ msgstr ""
 "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer "
 "(%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf(): '%c': ongeldig opmaakteken"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "bestandsdescriptor valt buiten bereik"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: omleiding is niet eenduidig"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: kan bestaand bestand niet overschrijven"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "Kan /tmp niet vinden; maak deze aan!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp dient een geldige mapnaam te zijn"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: ongeldige optie"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "kan UID niet op %d instellen; effectieve UID is %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "kan GID niet op %d instellen; effectieve GID is %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: is een map"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Ik heb geen naam!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versie %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1696,51 +1712,51 @@ msgstr ""
 "Gebruik:  %s [opties]\n"
 "          %s [opties] scriptbestand...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Lange opties:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Korte opties:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD,  of -c OPDRACHT,  of -O SHOPT-OPTIE    (enkel bij aanroep)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s,  of -o optie    (veranderbaar via 'set')\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Webpagina van 'bash': <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Algemene hulp bij gebruik van GNU-software: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask(): %d: ongeldige operatie"
@@ -1917,93 +1933,97 @@ msgstr "Onbekend signaalnummer"
 msgid "Unknown Signal #%d"
 msgstr "Onbekend signaal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "ongeldige vervanging: geen sluit-'%s' in %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: kan geen lijst toewijzen aan een array-element"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "kan geen pijp maken voor procesvervanging"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "kan geen dochterproces maken voor procesvervanging"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "kan pijp genaamd %s niet openen om te lezen"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "kan pijp genaamd %s niet openen om te schrijven"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "ongeldige vervanging: geen afsluitende '`' in %s"
+msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "kan geen pijp maken voor opdrachtvervanging"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "kan geen dochterproces maken voor opdrachtvervanging"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: ongeldige variabelenaam voor naamsverwijzing"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: ongeldige vervanging"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: ongeldige indirecte expansie"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: ongeldige variabelenaam"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: lege parameter, of niet ingesteld"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: lege parameter, of niet ingesteld"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: ongeldige vervanging"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: kan niet op deze manier toewijzen"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2011,12 +2031,12 @@ msgstr ""
 "toekomstige versies van de shell zullen dit als een rekenkundige vervanging "
 "evalueren"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "ongeldige vervanging: geen afsluitende '`' in %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "geen overeenkomst: %s"
@@ -2039,30 +2059,35 @@ msgstr "')' werd verwacht"
 msgid "`)' expected, found %s"
 msgstr "')' werd verwacht; %s gevonden"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "eenzijdige operator werd verwacht, %s gevonden"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "tweezijdige operator werd verwacht, %s gevonden"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "ontbrekende ']'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "ongeldig signaalnummer"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2070,88 +2095,88 @@ msgstr ""
 "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan "
 "mezelf..."
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler(): ongeldig signaal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "fout tijdens importeren van functiedefinitie voor '%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell-niveau is te hoog (%d); teruggezet op 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: aan variabele mag geen waarde toegewezen worden"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: ongeldige variabelenaam voor naamsverwijzing"
+msgstr "%s: toekenning van geheel getal aan naamsverwijzing"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "*** %s heeft lege export-tekenreeks"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "*** geen '=' in export-tekenreeks voor %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context(): er is geen 'global_variables'-context"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: Kan %s niet openen als BESTAND"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2175,22 +2200,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: kan geen %lu bytes reserveren (%lu bytes gereserveerd)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: kan geen %lu bytes reserveren"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: kan geen %lu bytes reserveren"
@@ -2289,8 +2314,8 @@ msgstr "logout [N]"
 #: builtins.c:105
 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
 msgstr ""
-"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE]  of: fc -s [PATROON=VERVANGING] "
-"[OPDRACHT]"
+"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE]   of:  fc -s "
+"[PATROON=VERVANGING] [OPDRACHT]"
 
 #: builtins.c:109
 msgid "fg [job_spec]"
@@ -2313,17 +2338,17 @@ msgid ""
 "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
 "[arg...]"
 msgstr ""
-"history [-c] [-d POSITIE] [N]  of: history -anrw [BESTANDSNAAM]  of: history "
-"-ps ARGUMENT..."
+"history [-c] [-d POSITIE] [N]   of:  history -anrw [BESTANDSNAAM]   of:  "
+"history -ps ARGUMENT..."
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [TAAKAANDUIDING...]  of: jobs -x OPDRACHT [ARGUMENT...]"
+msgstr ""
+"jobs [-lnprs] [TAAKAANDUIDING...]   of:  jobs -x OPDRACHT [ARGUMENT...]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [TAAKAANDUIDING...]"
+msgstr "disown [-h] [-ar] [TAAKAANDUIDING... | PID...] "
 
 #: builtins.c:134
 msgid ""
@@ -2360,11 +2385,11 @@ msgstr "unset [-f] [-v] [-n] [NAAM...]"
 
 #: builtins.c:146
 msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [NAAM[=WAARDE] ...]   of   export -p"
+msgstr "export [-fn] [NAAM[=WAARDE] ...]   of:  export -p"
 
 #: builtins.c:148
 msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-aAf] [NAAM[=WAARDE] ...]   of   readonly -p"
+msgstr "readonly [-aAf] [NAAM[=WAARDE] ...]   of:  readonly -p"
 
 #: builtins.c:150
 msgid "shift [n]"
@@ -2407,7 +2432,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [MODUS]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [ID ...]"
 
 #: builtins.c:181
@@ -2456,7 +2482,7 @@ msgstr "coproc [NAAM] OPDRACHT [OMLEIDINGEN]"
 
 #: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function NAAM { OPDRACHTEN ; }   of   NAAM () { OPDRACHTEN ; }"
+msgstr "function NAAM { OPDRACHTEN ; }   of:  NAAM () { OPDRACHTEN ; }"
 
 #: builtins.c:204
 msgid "{ COMMANDS ; }"
@@ -2476,7 +2502,7 @@ msgstr "[[ EXPRESSIE ]]"
 
 #: builtins.c:212
 msgid "variables - Names and meanings of some shell variables"
-msgstr "variables - enkele shell-variabelen"
+msgstr "var - namen en betekenissen van enkele shell-variabelen"
 
 #: builtins.c:215
 msgid "pushd [-n] [+N | -N | dir]"
@@ -2499,8 +2525,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2518,7 +2545,8 @@ msgstr ""
 "                 [-W WOORDENLIJST] [-X FILTERPATROON]  [WOORD]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o OPTIE] [-DE] [NAAM...]"
 
 #: builtins.c:242
@@ -2531,9 +2559,10 @@ msgstr ""
 "[ARRAY]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n"
 "                     [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]"
@@ -2702,6 +2731,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij N kleiner dan 1 is."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2712,7 +2742,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Een ingebouwde shell-functie uitvoeren.\n"
 "\n"
@@ -2923,6 +2953,7 @@ msgstr ""
 "    of 1 als de OPDRACHT niet gevonden is."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2941,11 +2972,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3002,7 +3033,6 @@ msgstr ""
 "    toekenningsfout optrad."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3010,7 +3040,7 @@ msgid ""
 msgstr ""
 "Waarden en eigenschappen van variabelen instellen.\n"
 "\n"
-"    Deze opdracht is verouderd.  Zie 'help declare'."
+"    Een synoniem van 'declare'.  Zie 'help declare'."
 
 #: builtins.c:538
 msgid ""
@@ -3039,6 +3069,7 @@ msgstr ""
 "    toekenningsfout optrad, of de shell geen functie aan het uitvoeren is."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3067,6 +3098,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3099,7 +3136,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij een schrijffout optrad."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3118,7 +3155,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij een schrijffout optrad."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3174,7 +3211,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n"
 "    er een fout optreedt."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3195,7 +3232,7 @@ msgstr ""
 "opdracht\n"
 "    leeg is."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3271,7 +3308,7 @@ msgstr ""
 "    Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n"
 "    Maar als er argumenten gegeven worden, dan worden deze ontleed."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3312,7 +3349,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n"
 "    omleidingsfout optreedt."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3324,7 +3361,7 @@ msgstr ""
 "    Beëindigt de shell met een afsluitwaarde van N.  Zonder N is de\n"
 "    afsluitwaarde die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3337,7 +3374,7 @@ msgstr ""
 "    Beëindigt een login-shell met een afsluitwaarde van N.  Geeft een\n"
 "    foutmelding als de huidige shell geen login-shell is."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3392,7 +3429,7 @@ msgstr ""
 "    De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n"
 "    er een fout optreedt."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3415,7 +3452,7 @@ msgstr ""
 "er\n"
 "    een fout optreedt."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3440,7 +3477,7 @@ msgstr ""
 "fout\n"
 "    optreedt."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3482,7 +3519,8 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n"
 "    optie gegeven werd."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3497,7 +3535,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3519,7 +3557,7 @@ msgstr ""
 "ongeldige\n"
 "    optie gegeven werd."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3529,7 +3567,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3566,9 +3605,10 @@ msgstr ""
 "\n"
 "      -a   huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n"
 "      -n   alle nog niet gelezen regels uit het geschiedenisbestand lezen\n"
-"      -r   het geschiedenisbestand lezen en toevoegen aan einde van\n"
-"             huidige geschienis\n"
-"      -w   huidige geschiedenis aan einde van geschiedenisbestand toevoegen\n"
+"             en toevoegen aan het einde van huidige geschiedenis\n"
+"      -r   het geschiedenisbestand lezen en toevoegen aan het einde van\n"
+"             huidige geschiedenis\n"
+"      -w   huidige geschiedenis naar het geschiedenisbestand schrijven\n"
 "\n"
 "      -p   geschiedenisopzoeking uitvoeren voor elk ARGUMENT en het "
 "resultaat\n"
@@ -3589,7 +3629,7 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3635,7 +3675,7 @@ msgstr ""
 "een\n"
 "    fout optrad.  Met optie '-x' is de afsluitwaarde die van OPDRACHT."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3667,8 +3707,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n"
 "    gegeven werd."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3702,6 +3741,7 @@ msgstr ""
 "argumenten\n"
 "                    volgen, dan wordt voor elk nummer de bijbehorende naam\n"
 "                    getoond, en voor elke naam het bijbehorende nummer\n"
+"      -L          synoniem van '-l'\n"
 "\n"
 "    'kill' is om  twee redenen een ingebouwde shell-opdracht: het "
 "accepteert\n"
@@ -3714,7 +3754,7 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3803,7 +3843,8 @@ msgstr ""
 "    Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n"
 "    'let' 1; anders 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3824,7 +3865,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3905,7 +3946,7 @@ msgstr ""
 "    de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n"
 "    ongeldige bestandsdescriptor als argument van '-u' gegeven werd."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3926,8 +3967,7 @@ msgstr ""
 "    uitvoeren is."
 
 # Voor de duidelijkheid is de tekstvolgorde veranderd.
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4055,8 +4095,8 @@ msgstr ""
 "          ingeschakeld als effectieve en echte UID of GID niet "
 "overeenkomen;\n"
 "          uitschakelen maakt dan effectieve UID en GID gelijk aan de echte\n"
-"      -T  een 'trap' op DEBUG door laten werken in functies en "
-"dochterprocessen\n"
+"      -T  een 'trap' op DEBUG of RETURN door laten werken in functies en\n"
+"          dochterprocessen\n"
 "      -t  afsluiten na het lezen en uitvoeren van één opdracht\n"
 "      -u  het gebruik van niet-bestaande variabelen behandelen als een fout\n"
 "      -v  invoerregel weergeven (\"echoën\") zodra deze gelezen is\n"
@@ -4113,7 +4153,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4151,7 +4191,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n"
 "    NAAM alleen-lezen is."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4185,7 +4225,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4223,7 +4263,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4240,7 +4280,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0 tenzij N negatief is of groter dan $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4265,7 +4305,7 @@ msgstr ""
 "gegeven\n"
 "    bestand, of 1 als dit bestand niet gelezen kan worden."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4291,7 +4331,7 @@ msgstr ""
 "fout\n"
 "    optreedt."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4441,7 +4481,7 @@ msgstr ""
 "    De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n"
 "    en 2 als een ongeldig argument gegeven werd."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4453,7 +4493,7 @@ msgstr ""
 "    Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n"
 "    het laatste argument een ']' moet zijn, horend bij de begin-'['."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4472,7 +4512,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is altijd 0."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4560,7 +4600,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n"
 "    gegeven werd."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4613,7 +4653,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4711,7 +4751,7 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4747,7 +4787,8 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n"
 "    gegeven werd."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4755,13 +4796,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4784,7 +4827,7 @@ msgstr ""
 "    De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n"
 "    of 2 als een ongeldige optie gegeven werd."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4808,7 +4851,7 @@ msgstr ""
 "    De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n"
 "    of 2 als een ongeldige optie gegeven werd."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4829,7 +4872,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4856,7 +4899,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4893,7 +4936,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4920,7 +4963,7 @@ msgstr ""
 "    overdraagbare standaardopmaak.\n"
 "    De afsluitwaarde is die van de PIJPLIJN."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4938,7 +4981,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4973,7 +5016,7 @@ msgstr ""
 "uitgevoerde\n"
 "    deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4990,7 +5033,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5007,8 +5050,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5027,9 +5069,9 @@ msgstr ""
 "    indices 0 en 1 van array-variabele NAAM in de uitvoerende shell.\n"
 "    De standaard-NAAM is \"COPROC\".\n"
 "\n"
-"    De afsluitwaarde is die van de OPDRACHT."
+"    De afsluitwaarde van coproc is 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5051,7 +5093,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0, tenzij NAAM onveranderbaar is."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5068,7 +5110,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de laatst uitgevoerde opdracht."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5092,7 +5134,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is die van de hervatte taak."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5109,7 +5151,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5164,7 +5206,7 @@ msgstr ""
 "\n"
 "    De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5278,7 +5320,7 @@ msgstr ""
 "het\n"
 "                    geschiedeniscommentaarteken, gewoonlijk '#'\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5331,7 +5373,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
 "    mapwijziging mislukte."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5380,7 +5422,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
 "    mapwijziging mislukte."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5431,14 +5473,14 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5474,7 +5516,7 @@ msgstr ""
 "    een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n"
 "    ongeldige optie gegeven werd."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5544,7 +5586,8 @@ msgstr ""
 "een\n"
 "    schrijf- of toekenningsfout optrad."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5562,10 +5605,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5594,7 +5641,7 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5616,7 +5663,8 @@ msgstr ""
 "een\n"
 "    fout optrad."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5631,6 +5679,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5672,7 +5721,7 @@ msgstr ""
 "    De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n"
 "    NAAM geen completeringsvoorschrift gedefinieerd is."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5747,7 +5796,7 @@ msgstr ""
 "of\n"
 "    een ongeldige optie gegeven werd."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5757,12 +5806,6 @@ msgstr ""
 "\n"
 "    Een synoniem voor 'mapfile'."
 
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
 # Dit is een commandonaam.
 #~ msgid "true"
 #~ msgstr "true"
@@ -5771,12 +5814,10 @@ msgstr ""
 #~ msgid "false"
 #~ msgstr "false"
 
+# Dit is een commandonaam.
 #~ msgid "times"
 #~ msgstr "times"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
-
 #~ msgid ""
 #~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
 #~ "html>\n"
index a67cbd54c932731eb0aaafdf898b1067e3118434..ebbd8756ec59f738ab6126514d8fd4dd6eb52a94 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index 9f97f368bb88725895b9c76b8bbb2e61e4ca1ebe..924bb10c233a7a6c3e3dbb9ba291389c2df1e81a 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
 # Polish translation of bash
-# Copyright (C) 2007, 2010, 2011, 2013, 2014 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Andrzej M. Krzysztofowicz <ankry@mif.pg.gda.pl> 2006,2007.
-# Jakub Bogusz <qboosh@pld-linux.org> 2010-2015.
+# Jakub Bogusz <qboosh@pld-linux.org> 2010-2018.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-24 22:34+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-11-28 17:15+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pl\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "nieprawidłowy indeks tablicy"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: usuwanie atrybutu nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: błędny klucz tablicy asocjacyjnej"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: nie można przypisać do nienumerycznego indeksu"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nie można utworzyć: %s"
 
 # ???
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "brak zamykającego `%c' w %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: brak separującego dwukropka"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "rozwijanie nawiasów: nie można przydzielić pamięci dla %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 "rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w "
-"liczbie %d"
+"liczbie %u"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla `%s'"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': błędna nazwa aliasu"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "edycja wiersza nie została włączona"
 
 # ???
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': nieprawidłowa nazwa mapy klawiszy"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nie można odczytać: %s"
 
-# ???
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': nie można usunąć dowiązania"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': nie znana nazwa funkcji"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s nie jest przypisany do żadnego klawisza.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s może być wywołany przez "
 
-#: builtins/break.def:79 builtins/break.def:121
+# ???
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': nie można usunąć dowiązania"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "licznik pętli"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "ma sens tylko w pętli `for', `while' lub `until'"
 
@@ -151,234 +152,233 @@ msgstr ""
 "    \n"
 "    Bez WYRAŻENIA zwraca "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Nie ustawiono HOME"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "za dużo argumentów"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "brak innego katalogu"
+msgstr "zerowy katalog"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Nie ustawiono OLDPWD"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linia %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "uwaga: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: składnia: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: opcja wymaga argumentu"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: wymagany argument numeryczny"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: nie znaleziono"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: nieprawidłowa opcja"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nieprawidłowa nazwa opcji"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': nieprawidłowy identyfikator"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "błędna liczba ósemkowa"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "błędna liczba szesnastkowa"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "nieprawidłowa liczba"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: nieprawidłowo określony sygnał"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': nie jest to nr PID ani prawidłowe określenie zadania"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: zmienna tylko do odczytu"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s poza zakresem"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s poza zakresem"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: brak takiego zadania"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: brak kontroli zadań"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "brak kontroli zadań"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: ograniczony"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "ograniczony"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: nie jest to polecenie powłoki"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "błąd zapisu: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "błąd podczas ustawiania atrybutów terminala: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "błąd podczas pobierania atrybutów terminala: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: błąd przy określaniu katalogu bieżącego: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: niejednoznaczne określenie zadania"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "pomoc nie jest dostępna w tej wersji"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nieprawidłowa nazwa akcji"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: brak definicji dla uzupełnienia"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "aktualnie nie jest wykonywana funkcja dopełniania"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "można używać tylko w funkcji"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: zmienna referencyjna nie może być tablicą"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: zmienna referencyjna nie może wskazywać na siebie"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: cykliczne odwołanie do nazwy"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy"
+msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "nie można używać `-f' do tworzenia funkcji"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkcja tylko do odczytu"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną"
@@ -412,68 +412,68 @@ msgstr "%s: nie jest ładowany dynamicznie"
 msgid "%s: cannot delete: %s"
 msgstr "%s: nie można usunąć: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: jest katalogiem"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: nie jest zwykłym plikiem"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: plik jest za duży"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: nie można uruchomić pliku binarnego"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nie można uruchomić: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "wylogowanie\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "to nie jest powłoka logowania: użyj `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Istnieją zatrzymane zadania.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Istnieją działające zadania.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "nie znaleziono polecenia"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "specyfikacja historii"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: nie udało się otworzyć pliku tymczasowego: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "bieżące"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "zadanie %d uruchomiono bez kontroli zadań"
@@ -488,29 +488,28 @@ msgstr "%s: niedozwolona opcja -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opcja wymaga argumentu -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "zapamiętywanie ścieżek poleceń w tablicy asocjacyjnej wyłączone"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tablica asocjacyjna pusta\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "trafienia\tpolecenie\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Polecenia powłoki pasujące do słowa kluczowego `"
 msgstr[1] "Polecenia powłoki pasujące do słów kluczowych `"
 msgstr[2] "Polecenia powłoki pasujące do słów kluczowych `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -518,12 +517,12 @@ msgstr ""
 "żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n"
 "lub `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nie można otworzyć: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -545,20 +544,21 @@ msgstr ""
 "Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "nie można używać więcej niż jednego spośród -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "pozycja historii"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: nieprawidłowy argument"
+msgstr "%s: nieprawidłowy znacznik czasu"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: rozwinięcie wg historii nie powiodło się"
@@ -572,16 +572,16 @@ msgstr "%s: inlib nie powiodło się"
 msgid "no other options allowed with `-x'"
 msgstr "nie można używać innych opcji przy `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumentami muszą być numery procesów lub zadań"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Nieznany błąd"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "spodziewano się wyrażenia"
 
@@ -590,69 +590,69 @@ msgstr "spodziewano się wyrażenia"
 msgid "%s: not an indexed array"
 msgstr "%s: nie jest tablicą indeksowaną"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: nieprawidłowo określony deskryptor pliku"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: nieprawidłowy deskryptor pliku: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: błędna liczba linii"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: błędny początek tablicy"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: błędna liczba linii między wywołaniami"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "pusta nazwa zmiennej tablicowej"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "wymagana obsługa zmiennych tablicowych"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': brak znaku formatującego"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': błędne określenie formatu czasu"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': nieprawidłowy znak formatujący"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "uwaga: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problem z analizą formatu: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "brak cyfry szesnastkowej dla \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "brak cyfry unikodowej dla \\%c"
@@ -666,19 +666,19 @@ msgstr "brak innego katalogu"
 msgid "%s: invalid argument"
 msgstr "%s: nieprawidłowy argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<brak katalogu bieżącego>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "pusty stos katalogów"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "indeks stosu katalogów"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -721,7 +721,7 @@ msgstr ""
 "      -N\tWypisanie N-tej pozycji licząc od prawej strony listy wypisywanej\n"
 "\tprzez dirs wywołane bez opcji, począwszy od zera."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -765,7 +765,7 @@ msgstr ""
 "    \n"
 "    Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -809,40 +809,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: nieprawidłowo określony limit czasu"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "błąd odczytu: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "wyjście przez `return' możliwe tylko z funkcji lub skryptu"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nie można anulować definicji"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: nie jest zmienną tablicową"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: nie jest funkcją"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: nie można wyeksportować"
@@ -851,20 +851,20 @@ msgstr "%s: nie można wyeksportować"
 msgid "shift count"
 msgstr "licznik przesunięcia"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nieprawidłowa nazwa opcji powłoki"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "wymagany argument w postaci nazwy pliku"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: nie znaleziono pliku"
@@ -877,61 +877,61 @@ msgstr "nie można wstrzymać"
 msgid "cannot suspend a login shell"
 msgstr "nie można wstrzymać powłoki logowania"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s jest aliasem do %s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s jest słowem kluczowym powłoki\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s jest funkcją\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s jest specjalnym wewnętrznym poleceniem powłoki\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s jest wewnętrznym poleceniem powłoki\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s jest %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "ścieżka do %s jest zapamiętana (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: nieprawidłowy argument stanowiący ograniczenie"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': złe polecenie"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: nie można odczytać ograniczenia: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "ograniczenie"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: nie można zmienić ograniczenia: %s"
@@ -950,361 +950,369 @@ msgstr "`%c': nieprawidłowy operator trybu symbolicznego"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': nieprawidłowy znak trybu symbolicznego"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " linia "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "ostatnie polecenie: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Przerywanie..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "nieznany błąd polecenia"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "zły rodzaj polecenia"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "zły łącznik"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "zły skok"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: nieustawiona zmienna"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "nie można przekierować standardowego wejścia z /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: koproces [%d:%s] nadal istnieje"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "błąd potoku"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: nie znaleziono polecenia"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: zły interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: nie można uruchomić pliku binarnego: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "`%s' jest specjalnym poleceniem wewnętrznym"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "nie można skopiować deskryptora pliku %d do %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "niedomiar stosu rekursji"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "błąd składniowy w wyrażeniu"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "próba przypisania do nie-zmiennej"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "błąd składniowy w przypisaniu zmiennej"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "dzielenie przez 0"
 
 # ???
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "błąd: zły prefiks operatora przypisującego"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "spodziewano się `:' w wyrażeniu warunkowym"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "wykładnik mniejszy niż 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "brakujący `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "błąd składni: spodziewany argument"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "błąd składni: nieprawidłowy operator arytmetyczny"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (błędny znacznik to \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "nieprawidłowa podstawa arytmetyczna"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "wartość za duża na podstawę"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: błąd w wyrażeniu\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "nie można przydzielić nowego deskryptora pliku dla wejścia basha z %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
 # ???
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "proces o PID %d występuje w działającym zadaniu %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: proces %5ld (%s) w potoku"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: brak takiego PID-u"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Sygnał %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Zakończono"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Zatrzymano"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Zatrzymano(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Działa"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Zakończono(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Kod wyjścia %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Stan nieznany"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(zrzut pamięci) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (katalog: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid potomka (%ld na %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: PID %ld nie jest potomkiem tej powłoki"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Brak rekordu dla procesu %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: zadanie %d jest zatrzymane"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: zadanie zostało przerwane"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: zadanie %d już pracuje w tle"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: linia %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (zrzut pamięci)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(katalog: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp nie powiodło się"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: brak kontroli zadań w tle"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: dyscyplina linii"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "nie można ustawić grupy procesów terminala (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "w tej powłoce nie ma kontroli zadań"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: założenie, że %s nie jest spełnione\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1313,40 +1321,40 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: spartaczone założenie\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "nieznany"
 
 # ???
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: nieprawidłowy blok na liście wolnych bloków"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: wywołane dla bloku, który już został zwolniony"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: wywołane dla bloku, który nie został przydzielony"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: rozmiar początkowy i końcowy fragmentu są różne"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: wywołane dla bloku, który nie został przydzielony"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne"
 
@@ -1388,22 +1396,22 @@ msgstr "%s: źle określona ścieżka sieciowa"
 msgid "network operations not supported"
 msgstr "operacje sieciowe nie są wspierane"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s"
@@ -1421,151 +1429,153 @@ msgstr "Masz nową pocztę w $_"
 msgid "The mail in %s has been read\n"
 msgstr "Poczta w %s jest przeczytana\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "błąd składni: oczekiwano wyrażenia arytmetycznego"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "błąd składni: oczekiwany `;'"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "błąd składni: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: zły rodzaj instrukcji %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia "
+"skrócona"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "przekroczono maksymalną liczbę dokumentów w miejscu"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `%c'"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "nieoczekiwany EOF podczas poszukiwania `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "błąd składni w wyrażeniu warunkowym"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "oczekiwano `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "oczekiwano dwuargumentowego operatora warunkowego"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "błąd składni przy `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "błąd składni: nieoczekiwany koniec pliku"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "błąd składni"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `)'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "uzupełnienie: nie znaleziono funkcji `%s'"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: możliwe zapętlenie wznowień"
 
 #: pcomplib.c:182
 #, c-format
@@ -1591,90 +1601,94 @@ msgstr "xtrace_set: pusty wskaźnik pliku"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': nieprawidłowy znak formatujący"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "deskryptor pliku poza zakresem"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: niejednoznaczne przekierowanie"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: nie można nadpisać istniejącego pliku"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: ograniczony: nie można przekierować wyjścia"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: nie można przypisać deskryptora pliku do zmiennej"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port nie są wspierane bez sieci"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "błąd przekierowania: nie można powielić deskryptora pliku"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "nie można znaleźć /tmp, proszę o utworzenie!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp musi być prawidłową nazwą katalogu"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "tryb ładnego wypisywania jest ignorowany w powłokach interaktywnych"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: nieprawidłowa opcja"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "nie można ustawić uid-a na %d: efektywny uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "nie można ustawić gid-a na %d: efektywny gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: jest katalogiem"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nie mam nazwy!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, wersja %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1683,55 +1697,55 @@ msgstr ""
 "Użycie:\t%s [długa opcja GNU] [opcja] ...\n"
 "\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Długie opcje GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opcje powłoki:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywołanie)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s lub -o opcja\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set"
 "\"'.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Aby uzyskać więcej informacji o poleceniach wewnętrznych powłoki,\n"
 "napisz `%s -c help'.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "strona domowa basha: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Ogólna pomoc przy użytkowaniu oprogramowania GNU: <http://www.gnu.org/"
 "gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: nieprawidłowa operacja"
@@ -1905,92 +1919,96 @@ msgstr "Nieznany sygnał #"
 msgid "Unknown Signal #%d"
 msgstr "Nieznany sygnał #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "złe podstawienie: brak zamykającego `%s' w %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: nie można przypisać listy do elementu tablicy"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "nie można utworzyć potoku dla podstawienia procesu"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "nie można otworzyć nazwanego potoku %s do odczytu"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "nie można otworzyć nazwanego potoku %s do zapisu"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "złe podstawienie: brak zamykającego \"`\" w %s"
+msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "nie można utworzyć potoku dla podstawienia polecenia"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: nie można powielić potoku jako deskryptora 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: złe podstawienie"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: błędne rozwinięcie niebezpośrednie"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "`%s': błędna nazwa zmiennej"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametr nieustawiony"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametr pusty lub nieustawiony"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: wyrażenie dla podłańcucha < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: złe podstawienie"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: nie można przypisywać w ten sposób"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1998,12 +2016,12 @@ msgstr ""
 "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie "
 "arytmetyczne"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "złe podstawienie: brak zamykającego \"`\" w %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "brak pasującego: %s"
@@ -2026,30 +2044,35 @@ msgstr "oczekiwano `)'"
 msgid "`)' expected, found %s"
 msgstr "oczekiwano `)', znaleziono %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: oczekiwano operatora jednoargumentowego"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: oczekiwano operatora dwuargumentowego"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "brakujący `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "nieprawidłowy numer sygnału"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "obsługa pułapki: przekroczono maksymalny poziom obsługi pułapek (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: zła wartość trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2057,86 +2080,85 @@ msgstr ""
 "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%"
 "s) do siebie"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: zły sygnał %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "błąd importu definicji funkcji dla `%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "poziom powłoki (%d) jest za duży, ustawiono na 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: nie można przypisać wartości do zmiennej"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy"
+msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s ma pusty exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "nieprawidłowy znak %d w exportstr dla %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "brak `=' w exportstr dla %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: brak kontekstu global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: nie można otworzyć jako PLIK"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: wartość zgodności poza zakresem"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2161,22 +2183,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Nie ma ŻADNEJ GWARANCJI w granicach dopuszczanych przez prawo."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: nie można przydzielić %lu bajtów (przydzielono %lu)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: nie można przydzielić %lu bajtów"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: nie można przydzielić %lu bajtów (przydzielono %lu)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: nie można przydzielić %lu bajtów"
@@ -2304,9 +2326,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [zadanie ...] lub jobs -x polecenie [argumenty]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [zadanie ...]"
+msgstr "disown [-h] [-ar] [zadanie ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2389,8 +2410,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [uprawnienia]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2482,12 +2503,12 @@ msgstr "printf [-v var] format [argumenty]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o opcja] [-A akcja] [-G wzorzec-glob] "
-"[-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P "
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opcja] [-A akcja] [-G wzorzec-"
+"glob] [-W lista-słów]  [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P "
 "przedrostek] [-S przyrostek] [nazwa ...]"
 
 #: builtins.c:235
@@ -2500,8 +2521,8 @@ msgstr ""
 "przyrostek] [słowo]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o opcja] [-DE] [nazwa ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o opcja] [-DEI] [nazwa ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2513,11 +2534,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] "
-"[-c co-ile] [tablica]"
+"readarray [-d ogranicznik] [-n liczba] [-O początek] [-s liczba] [-t] [-u "
+"fd] [-C wywołanie] [-c krok] [tablica]"
 
 #: builtins.c:256
 msgid ""
@@ -2712,7 +2733,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Wywołanie polecenia wbudowanego powłoki.\n"
 "    \n"
@@ -2958,11 +2979,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2995,12 +3016,13 @@ msgstr ""
 "      -a\tczyni NAZWĘ tablicą indeksowaną (jeśli są one obsługiwane)\n"
 "      -A\tczyni NAZWĘ tablicą asocjacyjną (jeśli są one obsługiwane)\n"
 "      -i\tnadaje NAZWIE atrybut `integer' (zmiennej całkowitej)\n"
-"      -l\tprzekształca NAZWĘ na małe litery przy przypisaniu\n"
+"      -l\tprzekształca wartość każdej NAZWY na małe litery przy przypisaniu\n"
 "      -n\tczyni NAZWĘ odwołaniem do zmiennej o nazwie wskazanej przez "
 "wartość\n"
 "      -r\tczyni NAZWĘ tylko do odczytu\n"
 "      -t\tnadaje NAZWIE atrybut `trace'\n"
-"      -u\tprzekształca NAZWĘ na wielkie litery przy przypisaniu\n"
+"      -u\tprzekształca wartość każdej NAZWY na wielkie litery przy "
+"przypisaniu\n"
 "      -x\teksportuje NAZWĘ\n"
 "    \n"
 "    Użycie `+' zamiast `-' wyłącza podany atrybut.\n"
@@ -3015,7 +3037,6 @@ msgstr ""
 "    Polecenie zwraca prawdę, chyba że podano błędną opcję lub wystąpi błąd."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3023,7 +3044,7 @@ msgid ""
 msgstr ""
 "Ustawienie wartości i atrybutów zmiennej.\n"
 "    \n"
-"    Polecenie przestarzałe - p. `help declare'."
+"    Synonim `declare' - p. `help declare'."
 
 #: builtins.c:538
 msgid ""
@@ -3052,6 +3073,7 @@ msgstr ""
 "    przypisaniu zmiennej lub powłoka nie wykonuje żadnej funkcji."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3080,6 +3102,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3117,7 +3145,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że wystąpi błąd zapisu."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3139,7 +3167,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że wystąpi błąd zapisu."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3193,7 +3221,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że NAZWA nie jest poleceniem wbudowanym lub\n"
 "    wystąpi błąd."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3213,7 +3241,7 @@ msgstr ""
 "    Zwracany jest stan wyjściowy polecenia lub prawdę, jeśli polecenie jest\n"
 "    puste."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3299,7 +3327,7 @@ msgstr ""
 "koniec\n"
 "    opcji lub błąd."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3340,7 +3368,7 @@ msgstr ""
 "wystąpi\n"
 "    błąd przekierowania."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3352,7 +3380,7 @@ msgstr ""
 "    Opuszczenie powłoki z kodem zakończenia N. Jeśli N pominięto, kodem\n"
 "    zakończenia będzie kod zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3365,7 +3393,7 @@ msgstr ""
 "    Opuszczenie powłoki logowania z kodem zakończenia N. Zwraca błąd, jeśli\n"
 "    powłoka nie jest powłoką logowania."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3424,7 +3452,7 @@ msgstr ""
 "    Zwracana jest prawda lub stan wykonanego polecenia; wartość niezerowa\n"
 "    w przypadku błędu."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3445,7 +3473,7 @@ msgstr ""
 "    Stan zadania umieszczonego na pierwszym planie lub fałsz, jeśli wystąpi\n"
 "    błąd."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3468,7 +3496,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że sterowanie zadaniami nie jest włączone\n"
 "    lub wystąpi błąd."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3512,7 +3540,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że nie znaleziono NAZWY lub podano błędną\n"
 "    opcję."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3527,7 +3555,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3553,8 +3581,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że WZORCA nie znaleziono lub podano błędną\n"
 "    opcję."
 
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3563,7 +3590,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3595,11 +3623,13 @@ msgstr ""
 "    \n"
 "    Opcje:\n"
 "      -c\twyczyszczenie listy historii poprzez usunięcie wszystkich wpisów\n"
-"      -d offset\tusunięcie wpisu historii o podanym OFFSECIE\n"
+"      -d offset\tusunięcie wpisu historii o podanym OFFSECIE. Ujemne "
+"offsety\n"
+"    \t\tliczą się wstecz od końca listy historii\n"
 "    \n"
 "      -a\tdołączenie linii historii z tej sesji do pliku historii\n"
 "      -n\todczyt wszystkich jeszcze nie przeczytanych linii z pliku\n"
-"    \t\thistorii\n"
+"    \t\thistorii i dołączenie ich do listy historii\n"
 "      -r\todczyt pliku historii i dołączenie zawartości do listy historii\n"
 "      -w\tzapis bieżącej historii do pliku historii\n"
 "    \n"
@@ -3623,7 +3653,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3668,7 +3698,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd.\n"
 "    Jeśli użyto -x, zwracany jest stan wyjściowy POLECENIA."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3698,8 +3728,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub ZADANIE."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3734,6 +3763,7 @@ msgstr ""
 "      -l\tlista nazw sygnałów; jeśli `-l' występuje z argumentami, są one\n"
 "    \t\ttraktowane jako numery sygnałów, dla których mają być wypisane "
 "nazwy\n"
+"      -L\tsynonim -l\n"
 "    \n"
 "    Kill jest poleceniem wewnętrznym z dwóch powodów: umożliwia korzystanie\n"
 "    z identyfikatorów zadań zamiast numerów PID oraz, w przypadku "
@@ -3744,7 +3774,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest sukces, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3833,7 +3863,7 @@ msgstr ""
 "    Jeśli wartością ostatniego argumentu jest 0, let zwraca 1;\n"
 "    w pozostałych przypadkach zwracane jest 0."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3854,7 +3884,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3903,7 +3933,7 @@ msgstr ""
 "      -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku "
 "nowej\n"
 "    \t\tlinii\n"
-"      -e\tużycie Readline'a do odczytania wiersza w powłoce interaktywnej\n"
+"      -e\tużycie Readline'a do odczytania wiersza\n"
 "      -o tekst\tużycie TEKSTU jako początkowego tekstu dla Readline'a\n"
 "      -n liczba\tpowrót po odczycie LICZBY znaków zamiast oczekiwania na\n"
 "    \t\tznak nowej linii; ogranicznik jest honorowany, jeśli odczytano "
@@ -3933,7 +3963,7 @@ msgstr ""
 "    błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n"
 "    argumentu -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3954,8 +3984,7 @@ msgstr ""
 "    Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n"
 "    funkcji ani skryptu."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4115,7 +4144,8 @@ msgstr ""
 "      -P  Gdy ustawione, nierozwiązywanie dowiązań symbolicznych podczas\n"
 "          uruchamiania poleceń takich, jak cd, które zmieniają katalog\n"
 "          bieżący.\n"
-"      -T  Gdy ustawione, dziedziczenie pułapki DEBUG przez funkcje powłoki.\n"
+"      -T  Gdy ustawione, dziedziczenie pułapek DEBUG i RETURN przez "
+"funkcje.\n"
 "      --  Przypisanie pozostałych argumentów do parametrów pozycyjnych.\n"
 "          Jeśli nie ma więcej argumentów, parametry pozycyjne są anulowane.\n"
 "      -   Przypisanie pozostałych argumentów do argumentów pozycyjnych.\n"
@@ -4131,7 +4161,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano nieprawidłową opcję."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4173,7 +4203,7 @@ msgstr ""
 "do\n"
 "    odczytu."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4208,7 +4238,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4248,7 +4278,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4266,7 +4296,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4291,7 +4321,7 @@ msgstr ""
 "jeśli\n"
 "    PLIKU nie udało się odczytać."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4319,7 +4349,7 @@ msgstr ""
 "wystąpi\n"
 "    błąd."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4492,7 +4522,7 @@ msgstr ""
 "    Zwracana jest prawda, jeśli wartością WYRAŻENIA jest prawda; fałsz, gdy\n"
 "    wartością WYRAŻENIA jest fałsz lub podano błędny argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4504,7 +4534,7 @@ msgstr ""
 "    Jest to synonim dla wbudowanego polecenia \"test\", ale wymagający, by\n"
 "    ostatnim argumentem był `]' pasujący do początkowego `['."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4524,7 +4554,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zawsze prawda."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4609,7 +4639,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędny SYGNAŁ lub błędną opcję."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4667,7 +4697,7 @@ msgstr ""
 "jeśli\n"
 "    którakolwiek nie zostanie znaleziona."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4766,7 +4796,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4801,7 +4831,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną "
 "opcję."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4809,13 +4839,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4834,11 +4866,14 @@ msgstr ""
 "    Jeśli podano opcję -n, oczekiwanie na zakończenie następnego zadania\n"
 "    i zwrócenie jego kodu zakończenia.\n"
 "    \n"
+"    Jeśli podano opcję -f, a kontrola zadań jest włączona, oczekiwanie na\n"
+"    zakończenie podanego ID zamiast czekania na zmianę jego stanu.\n"
+"    \n"
 "    Stan wyjściowy:\n"
 "    Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n"
 "    nieprawidłowe lub podano błędną opcję."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4867,7 +4902,7 @@ msgstr ""
 "podano\n"
 "    nieprawidłową opcję."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4890,7 +4925,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4920,7 +4955,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4957,7 +4992,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4987,7 +5022,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Polecenie zwraca status zakończenia POTOKU poleceń."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5005,7 +5040,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5041,7 +5076,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5059,7 +5094,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5077,8 +5112,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5098,9 +5132,9 @@ msgstr ""
 "    przypisanymi do indeksów 0 i 1 zmiennej tablicowej NAZWA w powłoce.\n"
 "    Domyślną NAZWĄ jest \"COPROC\".\n"
 "    Stan wyjściowy:\n"
-"    Zwracany jest status zakończenia POLECENIA."
+"    Polecenie coproc zwraca status wyjścia 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5125,7 +5159,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5143,7 +5177,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest status zakończenia ostatniego wykonanego polecenia."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5169,7 +5203,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracany jest stan wznowionego zadania."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5189,7 +5223,7 @@ msgstr ""
 "    Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym "
 "wypadku."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5244,7 +5278,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    0 lub 1 w zależności od wartości WYRAŻENIA."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5352,7 +5386,7 @@ msgstr ""
 "    \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n"
 "    \t\thistorii.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5410,7 +5444,7 @@ msgstr ""
 "katalogu\n"
 "    się nie powiedzie."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5462,7 +5496,7 @@ msgstr ""
 "katalogu\n"
 "    się nie powiedzie."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5516,14 +5550,13 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5540,7 +5573,9 @@ msgstr ""
 "    \n"
 "    Zmiana ustawienia każdej z NAZWY-OPCJI. Bez argumentów będących "
 "opcjami,\n"
-"    wypisywane są wszystkie opcje powłoki z zaznaczeniem włączonych.\n"
+"    wypisywane są wszystkie podane NAZWY-OPCJI, lub wszystkie opcje "
+"powłoki,\n"
+"    jeśli nie podano NAZW-OPCJI, wraz z zaznaczeniem włączonych.\n"
 "    \n"
 "    Opcje:\n"
 "      -o\tograniczenie NAZW-OPCJI do używanych z `set -o'\n"
@@ -5554,7 +5589,7 @@ msgstr ""
 "jeśli\n"
 "    podano błędną opcję lub NAZWA-OPCJI jest wyłączona."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5626,7 +5661,9 @@ msgstr ""
 "    Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n"
 "    przypisanie zakończy się niepowodzeniem."
 
-#: builtins.c:1953
+# FIXME: s/intial/initial/
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5644,10 +5681,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5667,14 +5708,17 @@ msgstr ""
 "    \t\tokreślonych żadnych konkretnych reguł dopełniania\n"
 "      -E\tstosowanie dopełniania i akcji dla \"pustych\" poleceń -\n"
 "    \t\tpróby dopełnienia w pustej linii\n"
+"      -I\tstosowanie dopełniania i akcji do początkowego słowa (zwykle\n"
+"    \t\tpolecenia)\n"
 "    \n"
 "    Przy próbie dopełnienia akcje są wykonywane w kolejności takiej, jak\n"
-"    wielkie litery wymienione powyżej. Opcja -D ma priorytet nad -E.\n"
+"    wielkie litery wymienione powyżej. Jeśli podano wiele opcji, opcja -D\n"
+"    ma priorytet nad -E, a obie mają priorytet nad -I.\n"
 "    \n"
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5695,7 +5739,7 @@ msgstr ""
 "    Stan wyjściowy:\n"
 "    Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5710,6 +5754,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5736,6 +5781,7 @@ msgstr ""
 "    \t-o opcja\tUstawienie podanej OPCJI dopełniania dla każdej NAZWY\n"
 "    \t-D\t\tZmiana opcji dla \"domyślnego\" dopełniania polecenia\n"
 "    \t-E\t\tZmiana opcji dla dopełniania \"pustego\" polecenia\n"
+"    \t-I\t\tZmiana opcji dla dopełniania dla początkowego słowa\n"
 "    \n"
 "    Użycie `+o' zamiast `-o' wyłącza podaną opcję.\n"
 "    \n"
@@ -5753,7 +5799,7 @@ msgstr ""
 "    Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n"
 "    zdefiniowanej specyfikacji dopełniania."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5829,7 +5875,7 @@ msgstr ""
 "tylko\n"
 "    do odczytu, lub nie jest tablicą indeksowaną."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5838,18 +5884,3 @@ msgstr ""
 "Odczyt linii z pliku do zmiennej tablicowej.\n"
 "    \n"
 "    Synonim polecenia `mapfile'."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
diff --git a/po/pt.gmo b/po/pt.gmo
new file mode 100644 (file)
index 0000000..e14daa9
Binary files /dev/null and b/po/pt.gmo differ
diff --git a/po/pt.po b/po/pt.po
new file mode 100644 (file)
index 0000000..b200262
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,5888 @@
+# Bash - Bourne Again Shell.
+# Copyright (C) 2018 Free Software Foundation, Inc.
+# This file is distributed under the same license as the Bash package.
+# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bash-5.0-beta2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-11-29 07:29+0000\n"
+"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
+"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=n !=1;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: arrayfunc.c:58
+msgid "bad array subscript"
+msgstr "subscrito de matriz inválido"
+
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
+#, c-format
+msgid "%s: removing nameref attribute"
+msgstr "%s: a remover atributo nameref"
+
+#: arrayfunc.c:402 builtins/declare.def:851
+#, c-format
+msgid "%s: cannot convert indexed to associative array"
+msgstr "%s: impossível converter matriz indexada para associativa"
+
+#: arrayfunc.c:586
+#, c-format
+msgid "%s: invalid associative array key"
+msgstr "%s: chave de matriz associativa inválida"
+
+#: arrayfunc.c:588
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr "%s: impossível atribuir a índice não numérico"
+
+#: arrayfunc.c:633
+#, c-format
+msgid "%s: %s: must use subscript when assigning associative array"
+msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa"
+
+#: bashhist.c:451
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr "%s: impossível criar: %s"
+
+#: bashline.c:4144
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr ""
+"bash_execute_unix_command: impossível encontrar mapa de teclado para o "
+"comando"
+
+#: bashline.c:4254
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr "%s: o 1º carácter não-espaço não é \"\"\""
+
+#: bashline.c:4283
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr "sem \"%c\" de fecho em %s"
+
+#: bashline.c:4317
+#, c-format
+msgid "%s: missing colon separator"
+msgstr "%s: separador dois pontos em falta"
+
+#: braces.c:331
+#, c-format
+msgid "brace expansion: cannot allocate memory for %s"
+msgstr "expansão: impossível alocar memória para %s"
+
+#: braces.c:429
+#, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "expansão: falha ao alocar memória para %u elementos"
+
+#: braces.c:474
+#, c-format
+msgid "brace expansion: failed to allocate memory for `%s'"
+msgstr "expansão: falha ao alocar memória para \"%s\""
+
+#: builtins/alias.def:131 variables.c:1842
+#, c-format
+msgid "`%s': invalid alias name"
+msgstr "\"%s\": aliás inválido"
+
+#: builtins/bind.def:122 builtins/bind.def:125
+msgid "line editing not enabled"
+msgstr "Edição de linha não activada"
+
+#: builtins/bind.def:212
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr "\"%s\": mapa de teclado inválido"
+
+#: builtins/bind.def:252
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr "%s: impossível ler: %s"
+
+#: builtins/bind.def:304 builtins/bind.def:334
+#, c-format
+msgid "`%s': unknown function name"
+msgstr "\"%s\": nome de função desconhecido"
+
+#: builtins/bind.def:312
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr "%s: não tem associação a qualquer tecla.\n"
+
+#: builtins/bind.def:316
+#, c-format
+msgid "%s can be invoked via "
+msgstr "%s pode ser chamado via "
+
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "\"%s\": impossível desassociar"
+
+#: builtins/break.def:77 builtins/break.def:119
+msgid "loop count"
+msgstr "total de ciclos"
+
+#: builtins/break.def:139
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\""
+
+#: builtins/caller.def:136
+msgid ""
+"Returns the context of the current subroutine call.\n"
+"    \n"
+"    Without EXPR, returns "
+msgstr ""
+"Devolve o contexto da presente chamada a sub-rotina.\n"
+"    \n"
+"    Sem EXPR, devolve "
+
+#: builtins/cd.def:326
+msgid "HOME not set"
+msgstr "HOME não definida"
+
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+msgid "too many arguments"
+msgstr "demasiados argumentos"
+
+#: builtins/cd.def:341
+msgid "null directory"
+msgstr "pasta nula"
+
+#: builtins/cd.def:352
+msgid "OLDPWD not set"
+msgstr "OLDPWD não definida"
+
+#: builtins/common.c:96
+#, c-format
+msgid "line %d: "
+msgstr "linha %d: "
+
+#: builtins/common.c:134 error.c:264
+#, c-format
+msgid "warning: "
+msgstr "aviso: "
+
+#: builtins/common.c:148
+#, c-format
+msgid "%s: usage: "
+msgstr "%s: uso: "
+
+#: builtins/common.c:193 shell.c:510 shell.c:838
+#, c-format
+msgid "%s: option requires an argument"
+msgstr "%s: a opção requer um argumento"
+
+#: builtins/common.c:200
+#, c-format
+msgid "%s: numeric argument required"
+msgstr "%s: requer um argumento numérico"
+
+#: builtins/common.c:207
+#, c-format
+msgid "%s: not found"
+msgstr "%s: não encontrado"
+
+#: builtins/common.c:216 shell.c:851
+#, c-format
+msgid "%s: invalid option"
+msgstr "%s: opção inválida"
+
+#: builtins/common.c:223
+#, c-format
+msgid "%s: invalid option name"
+msgstr "%s: nome de opção inválido"
+
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr "\"%s\": identificador inválido"
+
+#: builtins/common.c:240
+msgid "invalid octal number"
+msgstr "número octal inválido"
+
+#: builtins/common.c:242
+msgid "invalid hex number"
+msgstr "número hexadecimal inválido"
+
+#: builtins/common.c:244 expr.c:1564
+msgid "invalid number"
+msgstr "número inválido"
+
+#: builtins/common.c:252
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr "%s: especificação de sinal inválida"
+
+#: builtins/common.c:259
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr "\"%s\": especificação de pid ou tarefa inválida"
+
+#: builtins/common.c:266 error.c:510
+#, c-format
+msgid "%s: readonly variable"
+msgstr "%s: variável só de leitura"
+
+#: builtins/common.c:274
+#, c-format
+msgid "%s: %s out of range"
+msgstr "%s: %s fora do intervalo"
+
+#: builtins/common.c:274 builtins/common.c:276
+msgid "argument"
+msgstr "argumento"
+
+#: builtins/common.c:276
+#, c-format
+msgid "%s out of range"
+msgstr "%s fora do intervalo"
+
+#: builtins/common.c:284
+#, c-format
+msgid "%s: no such job"
+msgstr "%s: tarefa inexistente"
+
+#: builtins/common.c:292
+#, c-format
+msgid "%s: no job control"
+msgstr "%s: sem controlo da tarefa"
+
+#: builtins/common.c:294
+msgid "no job control"
+msgstr "sem controlo da tarefa"
+
+#: builtins/common.c:304
+#, c-format
+msgid "%s: restricted"
+msgstr "%s: restrita"
+
+#: builtins/common.c:306
+msgid "restricted"
+msgstr "restrita"
+
+#: builtins/common.c:314
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr "%s: não é interno da consola"
+
+#: builtins/common.c:323
+#, c-format
+msgid "write error: %s"
+msgstr "erro de escrita: %s"
+
+#: builtins/common.c:331
+#, c-format
+msgid "error setting terminal attributes: %s"
+msgstr "erro ao definir atributos do terminal: %s"
+
+#: builtins/common.c:333
+#, c-format
+msgid "error getting terminal attributes: %s"
+msgstr "erro ao obter atributos do terminal: %s"
+
+#: builtins/common.c:579
+#, c-format
+msgid "%s: error retrieving current directory: %s: %s\n"
+msgstr "%s: erro ao obter a pasta actual: %s: %s\n"
+
+#: builtins/common.c:645 builtins/common.c:647
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr "%s: especificação de tarefa ambígua"
+
+#: builtins/common.c:908
+msgid "help not available in this version"
+msgstr "ajuda indisponível nesta versão"
+
+#: builtins/complete.def:281
+#, c-format
+msgid "%s: invalid action name"
+msgstr "%s: nome de acção inválido"
+
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
+#, c-format
+msgid "%s: no completion specification"
+msgstr "%s: sem especificação de conclusão"
+
+#: builtins/complete.def:733
+msgid "warning: -F option may not work as you expect"
+msgstr "aviso: a opção -F pode não resultar como esperado"
+
+#: builtins/complete.def:735
+msgid "warning: -C option may not work as you expect"
+msgstr "aviso: a opção -C pode não resultar como esperado"
+
+#: builtins/complete.def:883
+msgid "not currently executing completion function"
+msgstr "a função de conclusão não está em execução"
+
+#: builtins/declare.def:132
+msgid "can only be used in a function"
+msgstr "só pode ser usado numa função"
+
+#: builtins/declare.def:369 builtins/declare.def:756
+#, c-format
+msgid "%s: reference variable cannot be an array"
+msgstr "%s: variável de referência não pode ser uma matriz"
+
+#: builtins/declare.def:380 variables.c:3363
+#, c-format
+msgid "%s: nameref variable self references not allowed"
+msgstr "%s: não são permitidas auto-referências de nameref"
+
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
+msgid "%s: circular name reference"
+msgstr "%s: referência circular de nome"
+
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
+msgid "`%s': invalid variable name for name reference"
+msgstr "\"%s\": nome de variável inválido para referência de nome"
+
+#: builtins/declare.def:520
+msgid "cannot use `-f' to make functions"
+msgstr "impossível usar \"-f\" para fazer funções"
+
+#: builtins/declare.def:532 execute_cmd.c:5852
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: função só de leitura"
+
+#: builtins/declare.def:824
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: atribuição de matriz composta citada obsoleta"
+
+#: builtins/declare.def:838
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: impossível destruir variáveis de matriz assim"
+
+#: builtins/declare.def:845 builtins/read.def:788
+#, c-format
+msgid "%s: cannot convert associative to indexed array"
+msgstr "%s: impossível converter matriz associativa em indexada"
+
+#: builtins/enable.def:143 builtins/enable.def:151
+msgid "dynamic loading not available"
+msgstr "carregamento dinâmico indisponível"
+
+#: builtins/enable.def:343
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr "impossível abrir objecto partilhado %s: %s"
+
+#: builtins/enable.def:369
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr "impossível encontrar %s no objecto partilhado %s: %s"
+
+#: builtins/enable.def:387
+#, c-format
+msgid "load function for %s returns failure (%d): not loaded"
+msgstr "carregamento da função %s devolve falha (%d): não carregada"
+
+#: builtins/enable.def:512
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr "%s: não carregada dinamicamente"
+
+#: builtins/enable.def:538
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr "%s: impossível eliminar: %s"
+
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#, c-format
+msgid "%s: is a directory"
+msgstr "%s: é uma pasta"
+
+#: builtins/evalfile.c:144
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: não é um ficheiro normal"
+
+#: builtins/evalfile.c:153
+#, c-format
+msgid "%s: file is too large"
+msgstr "%s: ficheiro muito grande"
+
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr "%s: impossível executar o binário"
+
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr "%s: impossível executar: %s"
+
+#: builtins/exit.def:64
+#, c-format
+msgid "logout\n"
+msgstr "logout\n"
+
+#: builtins/exit.def:89
+msgid "not login shell: use `exit'"
+msgstr "não é consola de sessão: use \"exit\""
+
+#: builtins/exit.def:121
+#, c-format
+msgid "There are stopped jobs.\n"
+msgstr "Há tarefas interrompidas.\n"
+
+#: builtins/exit.def:123
+#, c-format
+msgid "There are running jobs.\n"
+msgstr "Há tarefas em curso.\n"
+
+#: builtins/fc.def:265
+msgid "no command found"
+msgstr "sem comando encontrado"
+
+#: builtins/fc.def:323 builtins/fc.def:372
+msgid "history specification"
+msgstr "especificação de histórico"
+
+#: builtins/fc.def:393
+#, c-format
+msgid "%s: cannot open temp file: %s"
+msgstr "%s: impossível abrir ficheiro temporário: %s"
+
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
+msgid "current"
+msgstr "actual"
+
+#: builtins/fg_bg.def:161
+#, c-format
+msgid "job %d started without job control"
+msgstr "tarefa %d começou sem controlo de tarefa"
+
+#: builtins/getopt.c:110
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opção ilegal -- %c\n"
+
+#: builtins/getopt.c:111
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a opção requer um argumento -- %c\n"
+
+#: builtins/hash.def:91
+msgid "hashing disabled"
+msgstr "hashing desactivado"
+
+#: builtins/hash.def:138
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr "%s: tabela de hash vazia\n"
+
+#: builtins/hash.def:266
+#, c-format
+msgid "hits\tcommand\n"
+msgstr "sucessos\tcomando\n"
+
+#: builtins/help.def:133
+msgid "Shell commands matching keyword `"
+msgid_plural "Shell commands matching keywords `"
+msgstr[0] "Comandos de consola correspondentes à palavra-chave \""
+msgstr[1] "Comandos de consola correspondentes a palavras-chave \""
+
+#: builtins/help.def:185
+#, c-format
+msgid ""
+"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"nenhum tópico de ajuda para \"%s\".  Tente \"help help\", \"man -k %s\" ou "
+"\"info %s\"."
+
+#: builtins/help.def:224
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: impossível abrir: %s"
+
+#: builtins/help.def:524
+#, c-format
+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 ""
+"Estes comandos de consola são definidos internamente. Insira \"help\" para "
+"ver a lista.\n"
+"Insira \"help nome\" para saber mais sobre a função \"nome\".\n"
+"Use \"info bash\" para saber mais sobre a consola em geral.\n"
+"Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n"
+"\n"
+"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n"
+"\n"
+
+#: builtins/history.def:154
+msgid "cannot use more than one of -anrw"
+msgstr "impossível usar mais de um -anrw"
+
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+msgid "history position"
+msgstr "posição do histórico"
+
+#: builtins/history.def:331
+#, c-format
+msgid "%s: invalid timestamp"
+msgstr "%s: datação inválida"
+
+#: builtins/history.def:442
+#, c-format
+msgid "%s: history expansion failed"
+msgstr "%s: falha na expansão do histórico"
+
+#: builtins/inlib.def:71
+#, c-format
+msgid "%s: inlib failed"
+msgstr "%s: falha inlib"
+
+#: builtins/jobs.def:109
+msgid "no other options allowed with `-x'"
+msgstr "não são permitidas mais opções com \"-x\""
+
+#: builtins/kill.def:211
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas"
+
+#: builtins/kill.def:274
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+msgid "expression expected"
+msgstr "esperada expressão"
+
+#: builtins/mapfile.def:178
+#, c-format
+msgid "%s: not an indexed array"
+msgstr "%s: não é uma matriz indexada"
+
+#: builtins/mapfile.def:271 builtins/read.def:307
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr "%s: especificação de descritor de ficheiro inválida"
+
+#: builtins/mapfile.def:279 builtins/read.def:314
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr "%d: descritor de ficheiro inválido: %s"
+
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#, c-format
+msgid "%s: invalid line count"
+msgstr "%s: total de linhas inválido"
+
+#: builtins/mapfile.def:299
+#, c-format
+msgid "%s: invalid array origin"
+msgstr "%s: origem de matriz inválida"
+
+#: builtins/mapfile.def:316
+#, c-format
+msgid "%s: invalid callback quantum"
+msgstr "%s: callback inválida"
+
+#: builtins/mapfile.def:349
+msgid "empty array variable name"
+msgstr "nome de variável de matriz vazio"
+
+#: builtins/mapfile.def:370
+msgid "array variable support required"
+msgstr "requerido suporte a variáveis de matriz"
+
+#: builtins/printf.def:420
+#, c-format
+msgid "`%s': missing format character"
+msgstr "%s: carácter de formato em falta"
+
+#: builtins/printf.def:475
+#, c-format
+msgid "`%c': invalid time format specification"
+msgstr "\"%c\": especificação de formato de hora inválida"
+
+#: builtins/printf.def:677
+#, c-format
+msgid "`%c': invalid format character"
+msgstr "\"%c\": carácter de formato inválido"
+
+#: builtins/printf.def:703
+#, c-format
+msgid "warning: %s: %s"
+msgstr "aviso: %s: %s"
+
+#: builtins/printf.def:789
+#, c-format
+msgid "format parsing problem: %s"
+msgstr "problema de análise de formato: %s"
+
+#: builtins/printf.def:886
+msgid "missing hex digit for \\x"
+msgstr "dígito hex em falta para \\x"
+
+#: builtins/printf.def:901
+#, c-format
+msgid "missing unicode digit for \\%c"
+msgstr "dígito unicode em falta para \\%c"
+
+#: builtins/pushd.def:199
+msgid "no other directory"
+msgstr "nenhuma outra pasta"
+
+#: builtins/pushd.def:360
+#, c-format
+msgid "%s: invalid argument"
+msgstr "%s: argumento inválido"
+
+#: builtins/pushd.def:480
+msgid "<no current directory>"
+msgstr "<sem pasta actual>"
+
+#: builtins/pushd.def:524
+msgid "directory stack empty"
+msgstr "pilha de pastas vazia"
+
+#: builtins/pushd.def:526
+msgid "directory stack index"
+msgstr "índice da pilha de pastas"
+
+#: builtins/pushd.def:701
+msgid ""
+"Display the list of currently remembered directories.  Directories\n"
+"    find their way onto the list with the `pushd' command; you can get\n"
+"    back up through the list with the `popd' command.\n"
+"    \n"
+"    Options:\n"
+"      -c\tclear the directory stack by deleting all of the elements\n"
+"      -l\tdo not print tilde-prefixed versions of directories relative\n"
+"    \tto your home directory\n"
+"      -p\tprint the directory stack with one entry per line\n"
+"      -v\tprint the directory stack with one entry per line prefixed\n"
+"    \twith its position in the stack\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
+"    \tdirs when invoked without options, starting with zero.\n"
+"    \n"
+"      -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
+"\tdirs when invoked without options, starting with zero."
+msgstr ""
+"Mostrar a lista de pastas actualmente lembradas.  As pastas\n"
+"    entram na lista com o comando \"pushd\"; pode recuar\n"
+"    na lista com o comando \"popd\".\n"
+"    \n"
+"    Opções:\n"
+"      -c\tlimpar a pilha de pastas eliminando todos os elementos\n"
+"      -l\tnão imprimir versões com prefixo til de pastas relativas\n"
+"    \tà sua pasta home\n"
+"      -p\timprimir a pilha de pastas com uma entrada por linha\n"
+"      -v\timprimir a pilha de pastas com uma entrada por linha com a sua\n"
+"    \tposição na pilha como prefixo\n"
+"    \n"
+"    Argumentos:\n"
+"      +N\tmostra a N entrada a contar da esquerda da lista mostrada por\n"
+"    \tpastas quando chamada sem opções, começando com zero.\n"
+"    \n"
+"      -N\tmostra a N entrada a contar da direita da lista mostrada por\n"
+"    \tpastas quando chamada sem opções, começando com zero."
+
+#: builtins/pushd.def:723
+msgid ""
+"Adds a directory to the top of the directory stack, or rotates\n"
+"    the stack, making the new top of the stack the current working\n"
+"    directory.  With no arguments, exchanges the top two directories.\n"
+"    \n"
+"    Options:\n"
+"      -n\tSuppresses the normal change of directory when adding\n"
+"    \tdirectories to the stack, so only the stack is manipulated.\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tRotates the stack so that the Nth directory (counting\n"
+"    \tfrom the left of the list shown by `dirs', starting with\n"
+"    \tzero) is at the top.\n"
+"    \n"
+"      -N\tRotates the stack so that the Nth directory (counting\n"
+"    \tfrom the right of the list shown by `dirs', starting with\n"
+"    \tzero) is at the top.\n"
+"    \n"
+"      dir\tAdds DIR to the directory stack at the top, making it the\n"
+"    \tnew current working directory.\n"
+"    \n"
+"    The `dirs' builtin displays the directory stack."
+msgstr ""
+"Adiciona uma pasta ao cimo da pilha de pastas ou roda a pilha\n"
+"    tornando a pasta actual o novo cimo da pilha.\n"
+"    Sem argumentos, troca as duas pastas superiores.\n"
+"    \n"
+"    Opções:\n"
+"      -n\tSuprime a troca normal de pastas ao adicionar\n"
+"    \tpastas à pilha, só a pilha é manipulada.\n"
+"    \n"
+"    Argumentos:\n"
+"      +N\tRoda a pilha de forma a que a N pasta (contando\n"
+"    \tda esquerda da lista mostrada por pastas, começando com\n"
+"    \tzero) fique no topo.\n"
+"    \n"
+"      -N\tRoda a pilha de forma a que a N pasta (contando\n"
+"    \tda direita da lista mostrada por pastas, começando com\n"
+"    \tzero) fique no topo.\n"
+"    \n"
+"      PST\tAdiciona PST ao cimo da pilha de pastas, tornando-a a\n"
+"    \tnova pasta de trabalho actual.\n"
+"    \n"
+"    O \"dirs\" interno mostra a pilha de pastas."
+
+#: builtins/pushd.def:748
+msgid ""
+"Removes entries from the directory stack.  With no arguments, removes\n"
+"    the top directory from the stack, and changes to the new top directory.\n"
+"    \n"
+"    Options:\n"
+"      -n\tSuppresses the normal change of directory when removing\n"
+"    \tdirectories from the stack, so only the stack is manipulated.\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tRemoves the Nth entry counting from the left of the list\n"
+"    \tshown by `dirs', starting with zero.  For example: `popd +0'\n"
+"    \tremoves the first directory, `popd +1' the second.\n"
+"    \n"
+"      -N\tRemoves the Nth entry counting from the right of the list\n"
+"    \tshown by `dirs', starting with zero.  For example: `popd -0'\n"
+"    \tremoves the last directory, `popd -1' the next to last.\n"
+"    \n"
+"    The `dirs' builtin displays the directory stack."
+msgstr ""
+"Remove entradas da pilha de pastas.  Sem argumentos, remove\n"
+"    a pasta superior da pilha e muda para a nova pasta de topo.\n"
+"    \n"
+"    Opções:\n"
+"      -n\tSuprime a troca normal de pastas ao remover\n"
+"    \tpastas da pilha, só a pilha é manipulada.\n"
+"    \n"
+"    Argumentos:\n"
+"      +N\tRemove a N pasta contando da esquerda da lista\n"
+"    \tmostrada por pastas, começando com zero  Por exemplo: \"popd +0\"\n"
+"    \tremove a primeira pasta, \"popd +1\" a segunda.\n"
+"    \n"
+"      -N\tRemove a N pasta contando da direita da lista\n"
+"    \tmostrada por pastas, começando com zero  Por exemplo: \"popd +0\"\n"
+"    \tremove a última pasta, \"popd +1\" a penúltima.\n"
+"    \n"
+"    O \"dirs\" interno mostra a pilha de pastas."
+
+#: builtins/read.def:279
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr "%s: especificação de inacção inválida"
+
+#: builtins/read.def:733
+#, c-format
+msgid "read error: %d: %s"
+msgstr "erro de leitura: %d: %s"
+
+#: builtins/return.def:68
+msgid "can only `return' from a function or sourced script"
+msgstr "só pode usar \"return\" a partir de uma função ou script baseado"
+
+#: builtins/set.def:852
+msgid "cannot simultaneously unset a function and a variable"
+msgstr "impossível desactivar simultaneamente uma função e uma variável"
+
+#: builtins/set.def:904
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: impossível desactivar"
+
+#: builtins/set.def:925 variables.c:3813
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: impossível desactivar: %s só de leitura"
+
+#: builtins/set.def:938
+#, c-format
+msgid "%s: not an array variable"
+msgstr "%s: não é variável de matriz"
+
+#: builtins/setattr.def:189
+#, c-format
+msgid "%s: not a function"
+msgstr "%s: não é função"
+
+#: builtins/setattr.def:194
+#, c-format
+msgid "%s: cannot export"
+msgstr "%s: impossível exportar"
+
+#: builtins/shift.def:73 builtins/shift.def:79
+msgid "shift count"
+msgstr "total de trocas"
+
+#: builtins/shopt.def:310
+msgid "cannot set and unset shell options simultaneously"
+msgstr "impossível definir e desactivar opções da consola em simultâneo"
+
+#: builtins/shopt.def:420
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr "%s: nome de opção da consola inválido"
+
+#: builtins/source.def:128
+msgid "filename argument required"
+msgstr "requerido argumento de nome de ficheiro"
+
+#: builtins/source.def:154
+#, c-format
+msgid "%s: file not found"
+msgstr "%s: ficheiro não encontrado"
+
+#: builtins/suspend.def:102
+msgid "cannot suspend"
+msgstr "impossível suspender"
+
+#: builtins/suspend.def:112
+msgid "cannot suspend a login shell"
+msgstr "impossível suspender uma consola de sessão"
+
+#: builtins/type.def:235
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr "%s usa o aliás \"%s\"\n"
+
+#: builtins/type.def:256
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr "%s é palavra-chave da consola\n"
+
+#: builtins/type.def:275
+#, c-format
+msgid "%s is a function\n"
+msgstr "%s é uma função\n"
+
+#: builtins/type.def:299
+#, c-format
+msgid "%s is a special shell builtin\n"
+msgstr "%s é opção interna especial da consola\n"
+
+#: builtins/type.def:301
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr "%s é opção interna da consola\n"
+
+#: builtins/type.def:323 builtins/type.def:408
+#, c-format
+msgid "%s is %s\n"
+msgstr "%s é %s\n"
+
+#: builtins/type.def:343
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr "%s tem hash (%s)\n"
+
+#: builtins/ulimit.def:396
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr "%s: argumento de limite inválido"
+
+#: builtins/ulimit.def:422
+#, c-format
+msgid "`%c': bad command"
+msgstr "\"%c\": comando errado"
+
+#: builtins/ulimit.def:451
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr "%s: impossível obter limite: %s"
+
+#: builtins/ulimit.def:477
+msgid "limit"
+msgstr "limite"
+
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr "%s: impossível modificar limite: %s"
+
+#: builtins/umask.def:115
+msgid "octal number"
+msgstr "número octal"
+
+#: builtins/umask.def:232
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr "\"%c\": operador de modo simbólico inválido"
+
+#: builtins/umask.def:287
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr "\"%c\": carácter de modo simbólico inválido"
+
+#: error.c:89 error.c:347 error.c:349 error.c:351
+msgid " line "
+msgstr " linha "
+
+#: error.c:164
+#, c-format
+msgid "last command: %s\n"
+msgstr "último comando: %s\n"
+
+#: error.c:172
+#, c-format
+msgid "Aborting..."
+msgstr "A abortar..."
+
+#. TRANSLATORS: this is a prefix for informational messages.
+#: error.c:287
+#, c-format
+msgid "INFORM: "
+msgstr "INFORM.: "
+
+#: error.c:462
+msgid "unknown command error"
+msgstr "erro de comando desconhecido"
+
+#: error.c:463
+msgid "bad command type"
+msgstr "tipo de comando errado"
+
+#: error.c:464
+msgid "bad connector"
+msgstr "conector errado"
+
+#: error.c:465
+msgid "bad jump"
+msgstr "salto errado"
+
+#: error.c:503
+#, c-format
+msgid "%s: unbound variable"
+msgstr "%s: variável desassociada"
+
+#: eval.c:245
+#, c-format
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n"
+
+#: execute_cmd.c:536
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr "impossível redireccionar entrada padrão de /dev/null: %s"
+
+#: execute_cmd.c:1306
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr "FORMATOHORA: \"%c\": carácter de formato inválido"
+
+#: execute_cmd.c:2361
+#, c-format
+msgid "execute_coproc: coproc [%d:%s] still exists"
+msgstr "execute_coproc: coproc [%d:%s] ainda existe"
+
+#: execute_cmd.c:2485
+msgid "pipe error"
+msgstr "erro de pipe"
+
+#: execute_cmd.c:4671
+#, c-format
+msgid "eval: maximum eval nesting level exceeded (%d)"
+msgstr "eval: nível máximo de aninhamento de eval excedido (%d)"
+
+#: execute_cmd.c:4683
+#, c-format
+msgid "%s: maximum source nesting level exceeded (%d)"
+msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)"
+
+#: execute_cmd.c:4791
+#, c-format
+msgid "%s: maximum function nesting level exceeded (%d)"
+msgstr "%s: nível máximo de aninhamento de função excedido (%d)"
+
+#: execute_cmd.c:5340
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando"
+
+#: execute_cmd.c:5438
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: comando não encontrado"
+
+#: execute_cmd.c:5682
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: execute_cmd.c:5720
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: interpretador errado"
+
+#: execute_cmd.c:5757
+#, c-format
+msgid "%s: cannot execute binary file: %s"
+msgstr "%s: impossível executar binário: %s"
+
+#: execute_cmd.c:5843
+#, c-format
+msgid "`%s': is a special builtin"
+msgstr "%s: é uma opção interna especial"
+
+#: execute_cmd.c:5895
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr "impossível duplicar fd %d para fd %d"
+
+#: expr.c:263
+msgid "expression recursion level exceeded"
+msgstr "nível de recursão da expressão excedido"
+
+#: expr.c:291
+msgid "recursion stack underflow"
+msgstr "sub-fluxo da pilha de recursividade"
+
+#: expr.c:477
+msgid "syntax error in expression"
+msgstr "erro de sintaxe na expressão"
+
+#: expr.c:521
+msgid "attempted assignment to non-variable"
+msgstr "tentativa de atribuição a não-variável"
+
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "erro de sintaxe na atribuição de variável"
+
+#: expr.c:544 expr.c:910
+msgid "division by 0"
+msgstr "divisão por 0"
+
+#: expr.c:591
+msgid "bug: bad expassign token"
+msgstr "problema: símbolo expassign errado"
+
+#: expr.c:645
+msgid "`:' expected for conditional expression"
+msgstr "\":\" esperados para expressão condicional"
+
+#: expr.c:971
+msgid "exponent less than 0"
+msgstr "expoente menor que 0"
+
+#: expr.c:1028
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr "identificador esperado após pré-incremento ou pré-decremento"
+
+#: expr.c:1055
+msgid "missing `)'"
+msgstr "\")\" em falta"
+
+#: expr.c:1106 expr.c:1484
+msgid "syntax error: operand expected"
+msgstr "erro de sintaxe: operando esperado"
+
+#: expr.c:1486
+msgid "syntax error: invalid arithmetic operator"
+msgstr "erro de sintaxe: operador aritmético inválido"
+
+#: expr.c:1510
+#, c-format
+msgid "%s%s%s: %s (error token is \"%s\")"
+msgstr "%s%s%s: %s (símbolo de erro é \"%s\")"
+
+#: expr.c:1568
+msgid "invalid arithmetic base"
+msgstr "base aritmética inválida"
+
+#: expr.c:1588
+msgid "value too great for base"
+msgstr "valor muito grande para a base"
+
+#: expr.c:1637
+#, c-format
+msgid "%s: expression error\n"
+msgstr "%s: erro de expressão\n"
+
+#: general.c:69
+msgid "getcwd: cannot access parent directories"
+msgstr "getcwd: impossível aceder a pastas-mãe"
+
+#: input.c:99 subst.c:5930
+#, c-format
+msgid "cannot reset nodelay mode for fd %d"
+msgstr "impossível repor modo nodelay para fd %d"
+
+#: input.c:266
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr ""
+"impossível alocar novo descritor de ficheiro para entrada bash de fd %d"
+
+#: input.c:274
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr "save_bash_input: buffer já existe para o novo fd %d"
+
+#: jobs.c:529
+msgid "start_pipeline: pgrp pipe"
+msgstr "start_pipeline: pipe pgrp"
+
+#: jobs.c:1084
+#, c-format
+msgid "forked pid %d appears in running job %d"
+msgstr "pid %d aparece em tarefa em execução %d"
+
+#: jobs.c:1203
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld"
+
+#: jobs.c:1307
+#, c-format
+msgid "add_process: process %5ld (%s) in the_pipeline"
+msgstr "add_process: processo %5ld (%s) na _pipeline"
+
+#: jobs.c:1310
+#, c-format
+msgid "add_process: pid %5ld (%s) marked as still alive"
+msgstr "add_process: pid %5ld (%s) marcado como ainda activo"
+
+#: jobs.c:1639
+#, c-format
+msgid "describe_pid: %ld: no such pid"
+msgstr "describe_pid: %ld: pid não existente"
+
+#: jobs.c:1654
+#, c-format
+msgid "Signal %d"
+msgstr "Sinal %d"
+
+#: jobs.c:1668 jobs.c:1694
+msgid "Done"
+msgstr "Feito"
+
+#: jobs.c:1673 siglist.c:123
+msgid "Stopped"
+msgstr "Interrompido"
+
+#: jobs.c:1677
+#, c-format
+msgid "Stopped(%s)"
+msgstr "Interrompido(%s)"
+
+#: jobs.c:1681
+msgid "Running"
+msgstr "Em execução"
+
+#: jobs.c:1698
+#, c-format
+msgid "Done(%d)"
+msgstr "Feito(%d)"
+
+#: jobs.c:1700
+#, c-format
+msgid "Exit %d"
+msgstr "Sair de %d"
+
+#: jobs.c:1703
+msgid "Unknown status"
+msgstr "Estado desconhecido"
+
+#: jobs.c:1790
+#, c-format
+msgid "(core dumped) "
+msgstr "(núcleo despejado) "
+
+#: jobs.c:1809
+#, c-format
+msgid "  (wd: %s)"
+msgstr "  (wd: %s)"
+
+#: jobs.c:2037
+#, c-format
+msgid "child setpgid (%ld to %ld)"
+msgstr "setpgid filho (%ld para %ld)"
+
+#: jobs.c:2399 nojobs.c:657
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr "wait: pid %ld não é um filho desta consola"
+
+#: jobs.c:2695
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr "wait_for: sem registo do processo %ld"
+
+#: jobs.c:3055
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr "wait_for_tarefa: tarefa %d está interrompida"
+
+#: jobs.c:3362
+#, c-format
+msgid "%s: job has terminated"
+msgstr "%s: tarefa terminada"
+
+#: jobs.c:3371
+#, c-format
+msgid "%s: job %d already in background"
+msgstr "%s: tarefa %d já em 2º plano"
+
+#: jobs.c:3597
+msgid "waitchld: turning on WNOHANG to avoid indefinite block"
+msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido"
+
+#: jobs.c:4120
+#, c-format
+msgid "%s: line %d: "
+msgstr "%s: linha %d: "
+
+#: jobs.c:4134 nojobs.c:900
+#, c-format
+msgid " (core dumped)"
+msgstr " (núcleo despejado)"
+
+#: jobs.c:4146 jobs.c:4159
+#, c-format
+msgid "(wd now: %s)\n"
+msgstr "(wd agora: %s)\n"
+
+#: jobs.c:4191
+msgid "initialize_job_control: getpgrp failed"
+msgstr "initialize_job_control: getpgrp falhou"
+
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: sem controlo de tarefa em 2º plano"
+
+#: jobs.c:4263
+msgid "initialize_job_control: line discipline"
+msgstr "initialize_job_control: disciplina de linha"
+
+#: jobs.c:4273
+msgid "initialize_job_control: setpgid"
+msgstr "initialize_job_control: setpgid"
+
+#: jobs.c:4294 jobs.c:4303
+#, c-format
+msgid "cannot set terminal process group (%d)"
+msgstr "impossível definir grupo de processo do terminal (%d)"
+
+#: jobs.c:4308
+msgid "no job control in this shell"
+msgstr "não há controlo de tarefa nesta consola"
+
+#: lib/malloc/malloc.c:331
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr "malloc: asserção falhada: %s\n"
+
+#: lib/malloc/malloc.c:347
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+"\r\n"
+"malloc: %s:%d: asserção frustrada\r\n"
+
+#: lib/malloc/malloc.c:348
+msgid "unknown"
+msgstr "desconhecido"
+
+#: lib/malloc/malloc.c:855
+msgid "malloc: block on free list clobbered"
+msgstr "malloc: bloqueio na lista livre clobbered"
+
+#: lib/malloc/malloc.c:932
+msgid "free: called with already freed block argument"
+msgstr "free: chamado com argumento de bloco já liberto"
+
+#: lib/malloc/malloc.c:935
+msgid "free: called with unallocated block argument"
+msgstr "free: chamado com argumento de bloco não alocado"
+
+#: lib/malloc/malloc.c:954
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo"
+
+#: lib/malloc/malloc.c:960
+msgid "free: start and end chunk sizes differ"
+msgstr "free: tamanho dos pontos inicial e final difere"
+
+#: lib/malloc/malloc.c:1070
+msgid "realloc: called with unallocated block argument"
+msgstr "realloc: chamado com argumento de bloco não alocado"
+
+#: lib/malloc/malloc.c:1085
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo"
+
+#: lib/malloc/malloc.c:1091
+msgid "realloc: start and end chunk sizes differ"
+msgstr "realloc: tamanho dos pontos inicial e final difere"
+
+#: lib/malloc/table.c:191
+#, c-format
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr "register_alloc: tabela de alocação cheia com FIND_ALLOC?\n"
+
+#: lib/malloc/table.c:200
+#, c-format
+msgid "register_alloc: %p already in table as allocated?\n"
+msgstr "register_alloc: %p já na tabela como alocado?\n"
+
+#: lib/malloc/table.c:253
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr "register_free: %p já na tabela como livre?\n"
+
+#: lib/sh/fmtulong.c:102
+msgid "invalid base"
+msgstr "base inválida"
+
+#: lib/sh/netopen.c:168
+#, c-format
+msgid "%s: host unknown"
+msgstr "%s: anfitrião desconhecido"
+
+#: lib/sh/netopen.c:175
+#, c-format
+msgid "%s: invalid service"
+msgstr "%s: serviço inválido"
+
+#: lib/sh/netopen.c:306
+#, c-format
+msgid "%s: bad network path specification"
+msgstr "%s: especificação de caminho de rede errada"
+
+#: lib/sh/netopen.c:347
+msgid "network operations not supported"
+msgstr "operações de rede não suportadas"
+
+#: locale.c:205
+#, c-format
+msgid "setlocale: LC_ALL: cannot change locale (%s)"
+msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)"
+
+#: locale.c:207
+#, c-format
+msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
+msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s"
+
+#: locale.c:272
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s)"
+msgstr "setlocale: %s: não pode alterar o idioma (%s)"
+
+#: locale.c:274
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s): %s"
+msgstr "setlocale: %s: não pode alterar o idioma (%s): %s"
+
+#: mailcheck.c:439
+msgid "You have mail in $_"
+msgstr "Tem correio em $_"
+
+#: mailcheck.c:464
+msgid "You have new mail in $_"
+msgstr "Tem novo correio em $_"
+
+#: mailcheck.c:480
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr "O correio em %s já foi lido\n"
+
+#: make_cmd.c:317
+msgid "syntax error: arithmetic expression required"
+msgstr "erro de sintaxe: requerida expressão aritmética"
+
+#: make_cmd.c:319
+msgid "syntax error: `;' unexpected"
+msgstr "erro de sintaxe: \";\" inesperado"
+
+#: make_cmd.c:320
+#, c-format
+msgid "syntax error: `((%s))'"
+msgstr "erro de sintaxe: \"((%s))\""
+
+#: make_cmd.c:572
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr "make_here_document: tipo de instrução %d errado"
+
+#: make_cmd.c:657
+#, c-format
+msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
+msgstr ""
+"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")"
+
+#: make_cmd.c:756
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr ""
+"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo"
+
+#: parse.y:2380
+#, c-format
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha "
+"truncada"
+
+#: parse.y:2786
+msgid "maximum here-document count exceeded"
+msgstr "total here-document máximo excedido"
+
+#: parse.y:3536 parse.y:3906
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr "EOF inesperado ao procurar \"%c\" correspondentes"
+
+#: parse.y:4606
+msgid "unexpected EOF while looking for `]]'"
+msgstr "EOF inesperado ao procurar \"]]\""
+
+#: parse.y:4611
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\""
+
+#: parse.y:4615
+msgid "syntax error in conditional expression"
+msgstr "erro de sintaxe em expressão condicional"
+
+#: parse.y:4693
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr "símbolo inesperado \"%s\", esperado \")\""
+
+#: parse.y:4697
+msgid "expected `)'"
+msgstr "esperado \")\""
+
+#: parse.y:4725
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr "argumento \"%s\" inesperado para operador unário condicional"
+
+#: parse.y:4729
+msgid "unexpected argument to conditional unary operator"
+msgstr "argumento inesperado para operador unário condicional"
+
+#: parse.y:4775
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional"
+
+#: parse.y:4779
+msgid "conditional binary operator expected"
+msgstr "esperado operador binário condicional"
+
+#: parse.y:4801
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr "argumento \"%s\" inesperado para operador binário condicional"
+
+#: parse.y:4805
+msgid "unexpected argument to conditional binary operator"
+msgstr "argumento inesperado para operador binário condicional"
+
+#: parse.y:4816
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr "símbolo \"%c\" inesperado em comando condicional"
+
+#: parse.y:4819
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr "símbolo \"%s\" inesperado em comando condicional"
+
+#: parse.y:4823
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr "símbolo %d inesperado em comando condicional"
+
+#: parse.y:6245
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado"
+
+#: parse.y:6263
+#, c-format
+msgid "syntax error near `%s'"
+msgstr "erro de sintaxe junto a \"%s\""
+
+#: parse.y:6273
+msgid "syntax error: unexpected end of file"
+msgstr "erro de sintaxe: fim de ficheiro inesperado"
+
+#: parse.y:6273
+msgid "syntax error"
+msgstr "erro de sintaxe"
+
+#: parse.y:6335
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr "Use \"%s\" para sair da consola.\n"
+
+#: parse.y:6497
+msgid "unexpected EOF while looking for matching `)'"
+msgstr "EOF inesperado ao procurar o \")\" correspondente"
+
+#: pcomplete.c:1132
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr "completion: função \"%s\" não encontrada"
+
+#: pcomplete.c:1722
+#, c-format
+msgid "programmable_completion: %s: possible retry loop"
+msgstr "programmable_completion: %s: possível ciclo de repetição"
+
+#: pcomplib.c:182
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert: %s: NULL COMPSPEC"
+
+#: print_cmd.c:302
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr "print_command: conector \"%d\" errado"
+
+#: print_cmd.c:375
+#, c-format
+msgid "xtrace_set: %d: invalid file descriptor"
+msgstr "xtrace_set: %d: descritor de ficheiro inválido"
+
+#: print_cmd.c:380
+msgid "xtrace_set: NULL file pointer"
+msgstr "xtrace_set: ponteiro de ficheiro NULL"
+
+#: print_cmd.c:384
+#, c-format
+msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
+msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
+
+#: print_cmd.c:1540
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr "cprintf: \"%c\": carácter de formato inválido"
+
+#: redir.c:121 redir.c:167
+msgid "file descriptor out of range"
+msgstr "descritor de ficheiro fora de alcance"
+
+#: redir.c:174
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr "%s: redireccionamento ambíguo"
+
+#: redir.c:178
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr "%s: impossível sobrescrever ficheiro existente"
+
+#: redir.c:183
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr "%s: restricto: impossível redireccionar saída"
+
+#: redir.c:188
+#, c-format
+msgid "cannot create temp file for here-document: %s"
+msgstr "impossível criar ficheiro temporário para here-document: %s"
+
+#: redir.c:192
+#, c-format
+msgid "%s: cannot assign fd to variable"
+msgstr "%s: impossível atribuir fd a variável"
+
+#: redir.c:591
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede"
+
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+msgid "redirection error: cannot duplicate fd"
+msgstr "erro de redireccionamento: impossível duplicar fd"
+
+#: shell.c:343
+msgid "could not find /tmp, please create!"
+msgstr "impossível encontrar /tmp, por favor crie-a!"
+
+#: shell.c:347
+msgid "/tmp must be a valid directory name"
+msgstr "/tmp tem de ser um nome de pasta válido"
+
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "modo pretty-printing ignorado em consolas interactivas"
+
+#: shell.c:940
+#, c-format
+msgid "%c%c: invalid option"
+msgstr "%c%c: opção inválida"
+
+#: shell.c:1299
+#, c-format
+msgid "cannot set uid to %d: effective uid %d"
+msgstr "impossível definir uid como %d: uid efectiva %d"
+
+#: shell.c:1306
+#, c-format
+msgid "cannot set gid to %d: effective gid %d"
+msgstr "impossível definir gid como %d: gid efectiva %d"
+
+#: shell.c:1494
+msgid "cannot start debugger; debugging mode disabled"
+msgstr "impossível iniciar o depurador; modo de depuração desactivado"
+
+#: shell.c:1608
+#, c-format
+msgid "%s: Is a directory"
+msgstr "%s: é uma pasta"
+
+#: shell.c:1826
+msgid "I have no name!"
+msgstr "Não tenho nome!"
+
+#: shell.c:1980
+#, c-format
+msgid "GNU bash, version %s-(%s)\n"
+msgstr "GNU bash, versão %s-(%s)\n"
+
+#: shell.c:1981
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+"Uso:\t%s [opção longa GNU] [opção] ...\n"
+"\t%s [opção longa GNU] [opção] script-file ...\n"
+
+#: shell.c:1983
+msgid "GNU long options:\n"
+msgstr "Opções longas GNU:\n"
+
+#: shell.c:1987
+msgid "Shell options:\n"
+msgstr "Opções da consola:\n"
+
+#: shell.c:1988
+msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n"
+
+#: shell.c:2007
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr "\topção -%s ou -o\n"
+
+#: shell.c:2013
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr ""
+"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n"
+
+#: shell.c:2014
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr ""
+"Insira \"%s -c help\" para mais informação sobre comandos internos da "
+"consola.\n"
+
+#: shell.c:2015
+#, c-format
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr "Use o comando \"bashbug\" para reportar erros.\n"
+
+#: shell.c:2017
+#, c-format
+msgid "bash home page: <http://www.gnu.org/software/bash>\n"
+msgstr "Página inicial do bash: <http://www.gnu.org/software/bash>\n"
+
+#: shell.c:2018
+#, c-format
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr "Ajuda geral para usar programas GNU: <http://www.gnu.org/gethelp/>\n"
+
+#: sig.c:730
+#, c-format
+msgid "sigprocmask: %d: invalid operation"
+msgstr "sigprocmask: %d: operação inválida"
+
+#: siglist.c:48
+msgid "Bogus signal"
+msgstr "Sinal falso"
+
+#: siglist.c:51
+msgid "Hangup"
+msgstr "Desligar"
+
+#: siglist.c:55
+msgid "Interrupt"
+msgstr "Interromper"
+
+#: siglist.c:59
+msgid "Quit"
+msgstr "Sair"
+
+#: siglist.c:63
+msgid "Illegal instruction"
+msgstr "Instrução ilegal"
+
+#: siglist.c:67
+msgid "BPT trace/trap"
+msgstr "BPT trace/trap"
+
+#: siglist.c:75
+msgid "ABORT instruction"
+msgstr "Instrução ABORT"
+
+#: siglist.c:79
+msgid "EMT instruction"
+msgstr "Instrução EMT"
+
+#: siglist.c:83
+msgid "Floating point exception"
+msgstr "Excepção de vírgula flutuante"
+
+#: siglist.c:87
+msgid "Killed"
+msgstr "Morto"
+
+#: siglist.c:91
+msgid "Bus error"
+msgstr "Erro de bus"
+
+#: siglist.c:95
+msgid "Segmentation fault"
+msgstr "Falha de segmentação"
+
+#: siglist.c:99
+msgid "Bad system call"
+msgstr "Chamada de sistema errada"
+
+#: siglist.c:103
+msgid "Broken pipe"
+msgstr "Pipe quebrado"
+
+#: siglist.c:107
+msgid "Alarm clock"
+msgstr "Alarme"
+
+#: siglist.c:111
+msgid "Terminated"
+msgstr "Terminado"
+
+#: siglist.c:115
+msgid "Urgent IO condition"
+msgstr "Condição IO urgente"
+
+#: siglist.c:119
+msgid "Stopped (signal)"
+msgstr "Parado (sinal)"
+
+#: siglist.c:127
+msgid "Continue"
+msgstr "Continuar"
+
+#: siglist.c:135
+msgid "Child death or stop"
+msgstr "Morte ou paragem do filho"
+
+#: siglist.c:139
+msgid "Stopped (tty input)"
+msgstr "Parado (entrada tty)"
+
+#: siglist.c:143
+msgid "Stopped (tty output)"
+msgstr "Parado (saída tty)"
+
+#: siglist.c:147
+msgid "I/O ready"
+msgstr "I/O pronto"
+
+#: siglist.c:151
+msgid "CPU limit"
+msgstr "Limite do CPU"
+
+#: siglist.c:155
+msgid "File limit"
+msgstr "Limite do ficheiro"
+
+#: siglist.c:159
+msgid "Alarm (virtual)"
+msgstr "Alarme (virtual)"
+
+#: siglist.c:163
+msgid "Alarm (profile)"
+msgstr "Alarme (perfil)"
+
+#: siglist.c:167
+msgid "Window changed"
+msgstr "Janela alterada"
+
+#: siglist.c:171
+msgid "Record lock"
+msgstr "Bloqueio de registo"
+
+#: siglist.c:175
+msgid "User signal 1"
+msgstr "Sinal de utilizador 1"
+
+#: siglist.c:179
+msgid "User signal 2"
+msgstr "Sinal de utilizador 2"
+
+#: siglist.c:183
+msgid "HFT input data pending"
+msgstr "entrada de dados HTF pendente"
+
+#: siglist.c:187
+msgid "power failure imminent"
+msgstr "falha de energia iminente"
+
+#: siglist.c:191
+msgid "system crash imminent"
+msgstr "acidente do sistema iminente"
+
+#: siglist.c:195
+msgid "migrate process to another CPU"
+msgstr "migrar processo para outro CPU"
+
+#: siglist.c:199
+msgid "programming error"
+msgstr "erro de programação"
+
+#: siglist.c:203
+msgid "HFT monitor mode granted"
+msgstr "concedido modo de monitor HTF"
+
+#: siglist.c:207
+msgid "HFT monitor mode retracted"
+msgstr "retirado modo de monitor HTF"
+
+#: siglist.c:211
+msgid "HFT sound sequence has completed"
+msgstr "sequência de som HTF terminou"
+
+#: siglist.c:215
+msgid "Information request"
+msgstr "Pedido de informação"
+
+#: siglist.c:223
+msgid "Unknown Signal #"
+msgstr "Sinal desconhecido #"
+
+#: siglist.c:225
+#, c-format
+msgid "Unknown Signal #%d"
+msgstr "Sinal desconhecido #%d"
+
+#: subst.c:1454 subst.c:1644
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr "má substituição: sem \"%s\" de fecho em %s"
+
+#: subst.c:3231
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr "%s: impossível atribuir lista a membro de matriz"
+
+#: subst.c:5789 subst.c:5805
+msgid "cannot make pipe for process substitution"
+msgstr "impossível fazer pipe para substituição de processo"
+
+#: subst.c:5851
+msgid "cannot make child for process substitution"
+msgstr "impossível fazer filho para substituição de processo"
+
+#: subst.c:5920
+#, c-format
+msgid "cannot open named pipe %s for reading"
+msgstr "impossível abrir pipe chamado %s para leitura"
+
+#: subst.c:5922
+#, c-format
+msgid "cannot open named pipe %s for writing"
+msgstr "impossível abrir pipe chamado %s para escrita"
+
+#: subst.c:5945
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr "imossível duplicar pipe chamado %s como fd %d"
+
+#: subst.c:6062
+msgid "command substitution: ignored null byte in input"
+msgstr "substituição de comando: byte nulo ignorado na entrada"
+
+#: subst.c:6190
+msgid "cannot make pipe for command substitution"
+msgstr "impossível fazer pipe para substituição de comando"
+
+#: subst.c:6233
+msgid "cannot make child for command substitution"
+msgstr "impossível fazer filho para substituição de comando"
+
+#: subst.c:6259
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr "command_substitute: impossível duplicar pipe como fd 1"
+
+#: subst.c:6710 subst.c:9623
+#, c-format
+msgid "%s: invalid variable name for name reference"
+msgstr "%s: nome de variável inválido para referência de nome"
+
+#: subst.c:6806 subst.c:6824 subst.c:6979
+#, c-format
+msgid "%s: invalid indirect expansion"
+msgstr "%s: expansão indirecta inválida"
+
+#: subst.c:6840 subst.c:6987
+#, c-format
+msgid "%s: invalid variable name"
+msgstr "%s: nome de variável inválido"
+
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parâmetro não definido"
+
+#: subst.c:7058
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: parâmetro nulo ou não definido"
+
+#: subst.c:7295 subst.c:7310
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr "%s: expressão de sub-cadeia < 0"
+
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: má substituição"
+
+#: subst.c:9082
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr "$%s: impossível atribuir desta forma"
+
+#: subst.c:9485
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr ""
+"futuras versões da consola vão forçar a avaliação como uma substituição "
+"aritmética"
+
+#: subst.c:10043
+#, c-format
+msgid "bad substitution: no closing \"`\" in %s"
+msgstr "má substituição: sem \"\"\" de fecho em %s"
+
+#: subst.c:11070
+#, c-format
+msgid "no match: %s"
+msgstr "sem par:%s"
+
+#: test.c:147
+msgid "argument expected"
+msgstr "argumento esperado"
+
+#: test.c:156
+#, c-format
+msgid "%s: integer expression expected"
+msgstr "%s: expressão inteira esperada"
+
+#: test.c:265
+msgid "`)' expected"
+msgstr "\")\" esperado"
+
+#: test.c:267
+#, c-format
+msgid "`)' expected, found %s"
+msgstr "\")\" esperado, encontrado %s"
+
+#: test.c:282 test.c:750 test.c:753
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: operador unáro esperado"
+
+#: test.c:469 test.c:793
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: operador bináro esperado"
+
+#: test.c:875
+msgid "missing `]'"
+msgstr "\"]\" em falta"
+
+#: trap.c:216
+msgid "invalid signal number"
+msgstr "número de sinal inválido"
+
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)"
+
+#: trap.c:408
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr "run_pending_traps: valor errado em trap_list[%d]: %p"
+
+#: trap.c:412
+#, c-format
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim "
+"próprio"
+
+#: trap.c:470
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr "trap_handler: sinal errado %d"
+
+#: variables.c:412
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr "erro ao importar definição de função para \"%s\""
+
+#: variables.c:821
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr "nível da consola (%d) muito alto, a repor para 1"
+
+#: variables.c:2655
+msgid "make_local_variable: no function context at current scope"
+msgstr "make_local_variável: sem contexto de função no âmbito actual"
+
+#: variables.c:2674
+#, c-format
+msgid "%s: variable may not be assigned value"
+msgstr "%s: não pode atribuir um valor à variável"
+
+#: variables.c:3453
+#, c-format
+msgid "%s: assigning integer to name reference"
+msgstr "%s: a atribuir inteiro à referência de nome"
+
+#: variables.c:4365
+msgid "all_local_variables: no function context at current scope"
+msgstr "all_local_variables: sem contexto de função no âmbito actual"
+
+#: variables.c:4698
+#, c-format
+msgid "%s has null exportstr"
+msgstr "%s tem exportstr nulo"
+
+#: variables.c:4703 variables.c:4712
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr "carácter %d inválido em exportstr para %s"
+
+#: variables.c:4718
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr "sem \"=\" em exportstr para %s"
+
+#: variables.c:5243
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr "pop_var_context: cabeça de consola_variables não é contexto de função"
+
+#: variables.c:5256
+msgid "pop_var_context: no global_variables context"
+msgstr "pop_var_context: sem contexto de global_variables"
+
+#: variables.c:5336
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr ""
+"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário"
+
+#: variables.c:6272
+#, c-format
+msgid "%s: %s: cannot open as FILE"
+msgstr "%s: %s: impossível abrir como FICHEIRO"
+
+#: variables.c:6277
+#, c-format
+msgid "%s: %s: invalid value for trace file descriptor"
+msgstr "%s: %s: valor inválido para descritor de ficheiro trace"
+
+#: variables.c:6322
+#, c-format
+msgid "%s: %s: compatibility value out of range"
+msgstr "%s: %s: valor de compatibilidade fora do intervalo"
+
+#: version.c:46 version2.c:46
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+
+#: version.c:47 version2.c:47
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"html>\n"
+
+#: version.c:86 version2.c:86
+#, c-format
+msgid "GNU bash, version %s (%s)\n"
+msgstr "GNU bash, versão %s (%s)\n"
+
+#: version.c:91 version2.c:91
+msgid "This is free software; you are free to change and redistribute it."
+msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade."
+
+#: version.c:92 version2.c:92
+msgid "There is NO WARRANTY, to the extent permitted by law."
+msgstr "Não há QUALQUER GARANTIA, até aos limites previstos pela Lei."
+
+#: xmalloc.c:93
+#, c-format
+msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)"
+
+#: xmalloc.c:95
+#, c-format
+msgid "%s: cannot allocate %lu bytes"
+msgstr "%s: impossível alocar %lu bytes"
+
+#: xmalloc.c:165
+#, c-format
+msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)"
+
+#: xmalloc.c:167
+#, c-format
+msgid "%s: %s:%d: cannot allocate %lu bytes"
+msgstr "%s: %s:%d: impossível alocar %lu bytes"
+
+#: builtins.c:45
+msgid "alias [-p] [name[=value] ... ]"
+msgstr "alias [-p] [nome[=valor] ... ]"
+
+#: builtins.c:49
+msgid "unalias [-a] name [name ...]"
+msgstr "unalias [-a] nome [nome ...]"
+
+#: builtins.c:53
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr ""
+"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r "
+"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-"
+"readline]"
+
+#: builtins.c:56
+msgid "break [n]"
+msgstr "break [n]"
+
+#: builtins.c:58
+msgid "continue [n]"
+msgstr "continue [n]"
+
+#: builtins.c:60
+msgid "builtin [shell-builtin [arg ...]]"
+msgstr "builtin [consola-interno [arg ...]]"
+
+#: builtins.c:63
+msgid "caller [expr]"
+msgstr "caller [expr]"
+
+#: builtins.c:66
+msgid "cd [-L|[-P [-e]] [-@]] [dir]"
+msgstr "cd [-L|[-P [-e]] [-@]] [pst]"
+
+#: builtins.c:68
+msgid "pwd [-LP]"
+msgstr "pwd [-LP]"
+
+#: builtins.c:76
+msgid "command [-pVv] command [arg ...]"
+msgstr "comando [-pVv] comando [arg ...]"
+
+#: builtins.c:78
+msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgstr "declare [-aAfFgilnrtux] [-p] [nome[=valor] ...]"
+
+#: builtins.c:80
+msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] nome[=valor] ..."
+
+#: builtins.c:82
+msgid "local [option] name[=value] ..."
+msgstr "local [opção] nome[=valor] ..."
+
+#: builtins.c:85
+msgid "echo [-neE] [arg ...]"
+msgstr "echo [-neE] [arg ...]"
+
+#: builtins.c:89
+msgid "echo [-n] [arg ...]"
+msgstr "echo [-n] [arg ...]"
+
+#: builtins.c:92
+msgid "enable [-a] [-dnps] [-f filename] [name ...]"
+msgstr "enable [-a] [-dnps] [-f ficheiro] [nome ...]"
+
+#: builtins.c:94
+msgid "eval [arg ...]"
+msgstr "eval [arg ...]"
+
+#: builtins.c:96
+msgid "getopts optstring name [arg]"
+msgstr "getopts optstring name [arg]"
+
+#: builtins.c:98
+msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgstr ""
+"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]"
+
+#: builtins.c:100
+msgid "exit [n]"
+msgstr "exit [n]"
+
+#: builtins.c:102
+msgid "logout [n]"
+msgstr "logout [n]"
+
+#: builtins.c:105
+msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
+msgstr "fc [-e ename] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [comando]"
+
+#: builtins.c:109
+msgid "fg [job_spec]"
+msgstr "fg [job_spec]"
+
+#: builtins.c:113
+msgid "bg [job_spec ...]"
+msgstr "bg [job_spec ...]"
+
+#: builtins.c:116
+msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
+msgstr "hash [-lr] [-p caminho] [-dt] [nome ...]"
+
+#: builtins.c:119
+msgid "help [-dms] [pattern ...]"
+msgstr "help [-dms] [padrão ...]"
+
+#: builtins.c:123
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
+msgstr ""
+"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg "
+"[arg...]"
+
+#: builtins.c:127
+msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
+msgstr "tarefas [-lnprs] [tarefaspec ...] ou tarefas -x comando [args]"
+
+#: builtins.c:131
+msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
+msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]"
+
+#: builtins.c:134
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
+msgstr ""
+"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l "
+"[sigspec]"
+
+#: builtins.c:136
+msgid "let arg [arg ...]"
+msgstr "let arg [arg ...]"
+
+#: builtins.c:138
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+msgstr ""
+"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p "
+"prompt] [-t inacção] [-u fd] [nome ...]"
+
+#: builtins.c:140
+msgid "return [n]"
+msgstr "return [n]"
+
+#: builtins.c:142
+msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]"
+
+#: builtins.c:144
+msgid "unset [-f] [-v] [-n] [name ...]"
+msgstr "unset [-f] [-v] [-n] [nome ...]"
+
+#: builtins.c:146
+msgid "export [-fn] [name[=value] ...] or export -p"
+msgstr "export [-fn] [nome[=valor] ...] ou export -p"
+
+#: builtins.c:148
+msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
+msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p"
+
+#: builtins.c:150
+msgid "shift [n]"
+msgstr "shift [n]"
+
+#: builtins.c:152
+msgid "source filename [arguments]"
+msgstr "source ficheiro [argumentos]"
+
+#: builtins.c:154
+msgid ". filename [arguments]"
+msgstr ". ficheiro [argumentos]"
+
+#: builtins.c:157
+msgid "suspend [-f]"
+msgstr "suspend [-f]"
+
+#: builtins.c:160
+msgid "test [expr]"
+msgstr "test [expr]"
+
+#: builtins.c:162
+msgid "[ arg... ]"
+msgstr "[ arg... ]"
+
+#: builtins.c:166
+msgid "trap [-lp] [[arg] signal_spec ...]"
+msgstr "trap [-lp] [[arg] signal_spec ...]"
+
+#: builtins.c:168
+msgid "type [-afptP] name [name ...]"
+msgstr "type [-afptP] nome [nome ...]"
+
+#: builtins.c:171
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]"
+
+#: builtins.c:174
+msgid "umask [-p] [-S] [mode]"
+msgstr "umask [-p] [-S] [modo]"
+
+#: builtins.c:177
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id ...]"
+
+#: builtins.c:181
+msgid "wait [pid ...]"
+msgstr "wait [pid ...]"
+
+#: builtins.c:184
+msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
+msgstr "for NOME [in PALAVRAS ... ] ; do COMANDOS; done"
+
+#: builtins.c:186
+msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
+msgstr "for (( exp1; exp2; exp3 )); do COMANDOS; done"
+
+#: builtins.c:188
+msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
+msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done"
+
+#: builtins.c:190
+msgid "time [-p] pipeline"
+msgstr "time [-p] pipeline"
+
+#: builtins.c:192
+msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
+msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac"
+
+#: builtins.c:194
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else "
+"COMANDOS; ] fi"
+
+#: builtins.c:196
+msgid "while COMMANDS; do COMMANDS; done"
+msgstr "while COMANDOS; do COMANDOS; done"
+
+#: builtins.c:198
+msgid "until COMMANDS; do COMMANDS; done"
+msgstr "until COMANDOS; do COMANDOS; done"
+
+#: builtins.c:200
+msgid "coproc [NAME] command [redirections]"
+msgstr "coproc [NOME] comando [redireccionamentos]"
+
+#: builtins.c:202
+msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
+msgstr "nome de função { COMANDOS ; } ou nome () { COMANDOS ; }"
+
+#: builtins.c:204
+msgid "{ COMMANDS ; }"
+msgstr "{ COMANDOS ; }"
+
+#: builtins.c:206
+msgid "job_spec [&]"
+msgstr "job_spec [&]"
+
+#: builtins.c:208
+msgid "(( expression ))"
+msgstr "(( expressão ))"
+
+#: builtins.c:210
+msgid "[[ expression ]]"
+msgstr "[[ expressão ]]"
+
+#: builtins.c:212
+msgid "variables - Names and meanings of some shell variables"
+msgstr "variáveis - nomes e significados de algumas variáveis da consola"
+
+#: builtins.c:215
+msgid "pushd [-n] [+N | -N | dir]"
+msgstr "pushd [-n] [+N | -N | pasta]"
+
+#: builtins.c:219
+msgid "popd [-n] [+N | -N]"
+msgstr "popd [-n] [+N | -N]"
+
+#: builtins.c:223
+msgid "dirs [-clpv] [+N] [-N]"
+msgstr "dirs [-clpv] [+N] [-N]"
+
+#: builtins.c:226
+msgid "shopt [-pqsu] [-o] [optname ...]"
+msgstr "shopt [-pqsu] [-o] [nomeopção ...]"
+
+#: builtins.c:228
+msgid "printf [-v var] format [arguments]"
+msgstr "printf [-v var] formato [argumentos]"
+
+#: builtins.c:231
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G "
+"padrãoglobal] [-W listapalavras]  [-F função] [-C comando] [-X filterpat] [-"
+"P prefixo] [-S sufixo] [nome ...]"
+
+#: builtins.c:235
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
+"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr ""
+"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrglob] [-W listpal]  [-"
+"F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] [palavra]"
+
+#: builtins.c:239
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o opção] [-DEI] [nome ...]"
+
+#: builtins.c:242
+msgid ""
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C "
+"callback] [-c quantia] [matriz]"
+
+#: builtins.c:244
+msgid ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C "
+"callback] [-c quantum] [matriz]"
+
+#: builtins.c:256
+msgid ""
+"Define or display aliases.\n"
+"    \n"
+"    Without arguments, `alias' prints the list of aliases in the reusable\n"
+"    form `alias NAME=VALUE' on standard output.\n"
+"    \n"
+"    Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
+"    A trailing space in VALUE causes the next word to be checked for\n"
+"    alias substitution when the alias is expanded.\n"
+"    \n"
+"    Options:\n"
+"      -p\tprint all defined aliases in a reusable format\n"
+"    \n"
+"    Exit Status:\n"
+"    alias returns true unless a NAME is supplied for which no alias has "
+"been\n"
+"    defined."
+msgstr ""
+"Definir ou mostrar aliás.\n"
+"    \n"
+"    Sem argumentos, \"alias imprime a lista de aliás na forma\n"
+"    reutilizável \"alias NOME=VALOR\" na saída padrão.\n"
+"    \n"
+"    Com argumetos, é definido um aliás para cada NOME cujo VALOR é dado.\n"
+"    Um espaço final em VALOR causa uma verificação à palavra seguinte para\n"
+"    substituição do aliás quando o aliás for expandido.\n"
+"    \n"
+"    Opções:\n"
+"      -p\timprimir todos os aliás definidos em formato reutilizável\n"
+"    \n"
+"    Estado de saída:\n"
+"    alias devolve verdadeiro a não ser que seja fornecido um NOME para o "
+"qual\n"
+"ainda não haja um aliás."
+
+#: builtins.c:278
+msgid ""
+"Remove each NAME from the list of defined aliases.\n"
+"    \n"
+"    Options:\n"
+"      -a\tremove all alias definitions\n"
+"    \n"
+"    Return success unless a NAME is not an existing alias."
+msgstr ""
+"Remover cada NOME da lista de aliás definidos.\n"
+"    \n"
+"    Opções:\n"
+"      -a\tremove todas as definições de aliás\n"
+"    \n"
+"    Devolve sucesso a não ser que NOME seja um aliás inexistente."
+
+#: builtins.c:291
+msgid ""
+"Set Readline key bindings and variables.\n"
+"    \n"
+"    Bind a key sequence to a Readline function or a macro, or set a\n"
+"    Readline variable.  The non-option argument syntax is equivalent to\n"
+"    that found in ~/.inputrc, but must be passed as a single argument:\n"
+"    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
+"    \n"
+"    Options:\n"
+"      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
+"                         command.  Acceptable keymap names are emacs,\n"
+"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
+"                         vi-command, and vi-insert.\n"
+"      -l                 List names of functions.\n"
+"      -P                 List function names and bindings.\n"
+"      -p                 List functions and bindings in a form that can be\n"
+"                         reused as input.\n"
+"      -S                 List key sequences that invoke macros and their "
+"values\n"
+"      -s                 List key sequences that invoke macros and their "
+"values\n"
+"                         in a form that can be reused as input.\n"
+"      -V                 List variable names and values\n"
+"      -v                 List variable names and values in a form that can\n"
+"                         be reused as input.\n"
+"      -q  function-name  Query about which keys invoke the named function.\n"
+"      -u  function-name  Unbind all keys which are bound to the named "
+"function.\n"
+"      -r  keyseq         Remove the binding for KEYSEQ.\n"
+"      -f  filename       Read key bindings from FILENAME.\n"
+"      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
+"    \t\t\t\tKEYSEQ is entered.\n"
+"      -X                 List key sequences bound with -x and associated "
+"commands\n"
+"                         in a form that can be reused as input.\n"
+"    \n"
+"    Exit Status:\n"
+"    bind returns 0 unless an unrecognized option is given or an error occurs."
+msgstr ""
+"Definir associações de teclas e variáveis para Readline.\n"
+"    \n"
+"    Associar uma sequência de teclas a uma função ou macro Readline, ou\n"
+"    defina uma variável Readline. A sintaxe de argumento não-opção é "
+"equivalente\n"
+"    à encontrada em ~/.inputrc, mas tem de ser passada como argumento "
+"único:\n"
+"     e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n"
+"     \n"
+"     Opções:\n"
+"        -m  maptecl            Use MAPTECL como mapa de teclado para a "
+"duração deste\n"
+"                                 comando. Nomes de mapas aceitáveis são "
+"emacs,\n"
+"                                 emacs-standard, emacs-meta, emacs-ctlx, vi, "
+"vi-move,\n"
+"                                 vi-command, e vi-insert.\n"
+"        -l                      Listar nomes de funções.\n"
+"        -P                      Listar nomes de funções e associações.\n"
+"        -p                      Listar funções funçãos e associações de "
+"forma a que possam\n"
+"                                 ser reutilizados como entrada.\n"
+"        -S                      Listar sequências de teclas que chamem "
+"macros e seus valores\n"
+"        -s                      Listar sequências de teclas que chamem "
+"macros e seus valores\n"
+"                                 de forma a que possam ser reutilizados como "
+"entrada.\n"
+"        -V                      Listar nomes de variáveis e seus valores\n"
+"        -v                      Listar nomes de variáveis e seus valores de "
+"forma a que possam\n"
+"                                 ser reutilizados como entrada.\n"
+"        -q  nome-função     Consultar que teclas chamaram a função em "
+"causa.\n"
+"        -u  nome-função     Unbind all keys which are bound to the named "
+"função.\n"
+"        -r  seqtecl          Remover associação de SEQTECL.\n"
+"        -f  nomefich         Ler associações de teclas a partir de "
+"NOMEFICH.\n"
+"        -x  seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL "
+"quando\n"
+"     \t\t\t\tSEQTECL for inserido.\n"
+"        -X                      Listarsequências de teclas associadas a -x e "
+"comandos ligados\n"
+"                                 de forma a que possam ser reutilizados como "
+"entrada.\n"
+"     \n"
+"     Estado de saída:\n"
+"     bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra "
+"um erro."
+
+#: builtins.c:330
+msgid ""
+"Exit for, while, or until loops.\n"
+"    \n"
+"    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n"
+"    loops.\n"
+"    \n"
+"    Exit Status:\n"
+"    The exit status is 0 unless N is not greater than or equal to 1."
+msgstr ""
+"Sair de ciclos for, while, ou until.\n"
+"     \n"
+"     Sai de um ciclo FOR, WHILE ou UNTIL.  Se N for especificado, quebrar N "
+"ciclos\n"
+"     envolventes.\n"
+"     \n"
+"     Estado de saída:\n"
+"     O estado de saída é 0 a não ser que N não seja maior ou igual que 1."
+
+#: builtins.c:342
+msgid ""
+"Resume for, while, or until loops.\n"
+"    \n"
+"    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
+"    If N is specified, resumes the Nth enclosing loop.\n"
+"    \n"
+"    Exit Status:\n"
+"    The exit status is 0 unless N is not greater than or equal to 1."
+msgstr ""
+"Retomar ciclos for, while, ou until.\n"
+"     \n"
+"     Retoma a iteração seguinte do ciclo FOR, WHILE ou UNTIL envolvente.\n"
+"     Se N for especificado, retoma o N-ésimo ciclo envolvente.\n"
+"     \n"
+"     Estado de saída:\n"
+"     O estado de saída é 0 a não ser que N não seja maior ou igual que 1."
+
+#: builtins.c:354
+msgid ""
+"Execute shell builtins.\n"
+"    \n"
+"    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
+"    lookup.  This is useful when you wish to reimplement a shell builtin\n"
+"    as a shell function, but need to execute the builtin within the "
+"function.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
+"    not a shell builtin."
+msgstr ""
+"Executa comandos internos da consola.\n"
+"     \n"
+"     Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do "
+"comando.\n"
+"     Útil quando deseja re-implementar um comando interno da consola como\n"
+"     função da consola, mas tem de executar o comando interno dentro da "
+"função.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO "
+"não\n"
+"     for um comando interno da consola."
+
+#: builtins.c:369
+msgid ""
+"Return the context of the current subroutine call.\n"
+"    \n"
+"    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
+"    \"$line $subroutine $filename\"; this extra information can be used to\n"
+"    provide a stack trace.\n"
+"    \n"
+"    The value of EXPR indicates how many call frames to go back before the\n"
+"    current one; the top frame is frame 0.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns 0 unless the shell is not executing a shell function or EXPR\n"
+"    is invalid."
+msgstr ""
+"Devolver o contexto da actual chamada a sub-rotina.\n"
+"     \n"
+"     Sem EXPR, devolve \"$linha $nomefich\".  Com EXPR, devolve\n"
+"     \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n"
+"     para obter um rasto da pilha.\n"
+"     \n"
+"     O valor de EXPR indica quantas chamadas deve recuar antes da\n"
+"     actual; a chamada superior é a chamada 0.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve 0 a não ser que a consola não esteja a executar uma função ou "
+"EXPR\n"
+"     seja inválida."
+
+#: builtins.c:387
+msgid ""
+"Change the shell working directory.\n"
+"    \n"
+"    Change the current directory to DIR.  The default DIR is the value of "
+"the\n"
+"    HOME shell variable.\n"
+"    \n"
+"    The variable CDPATH defines the search path for the directory "
+"containing\n"
+"    DIR.  Alternative directory names in CDPATH are separated by a colon "
+"(:).\n"
+"    A null directory name is the same as the current directory.  If DIR "
+"begins\n"
+"    with a slash (/), then CDPATH is not used.\n"
+"    \n"
+"    If the directory is not found, and the shell option `cdable_vars' is "
+"set,\n"
+"    the word is assumed to be  a variable name.  If that variable has a "
+"value,\n"
+"    its value is used for DIR.\n"
+"    \n"
+"    Options:\n"
+"      -L\tforce symbolic links to be followed: resolve symbolic\n"
+"    \t\tlinks in DIR after processing instances of `..'\n"
+"      -P\tuse the physical directory structure without following\n"
+"    \t\tsymbolic links: resolve symbolic links in DIR before\n"
+"    \t\tprocessing instances of `..'\n"
+"      -e\tif the -P option is supplied, and the current working\n"
+"    \t\tdirectory cannot be determined successfully, exit with\n"
+"    \t\ta non-zero status\n"
+"      -@\ton systems that support it, present a file with extended\n"
+"    \t\tattributes as a directory containing the file attributes\n"
+"    \n"
+"    The default is to follow symbolic links, as if `-L' were specified.\n"
+"    `..' is processed by removing the immediately previous pathname "
+"component\n"
+"    back to a slash or the beginning of DIR.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns 0 if the directory is changed, and if $PWD is set successfully "
+"when\n"
+"    -P is used; non-zero otherwise."
+msgstr ""
+"Alterar a pasta de trabalho da consola.\n"
+"     \n"
+"     Altera a pasta actual para PASTA. A PASTA predefinida é o valor da "
+"variável\n"
+"     HOME.\n"
+"     \n"
+"     A variável CDPATH define o caminho de procura para a pasta que contém\n"
+"     PASTA. Nomes de pasta alternativos em CDPATH são separados por \":"
+"\" (:).\n"
+"     Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar "
+"com\n"
+"     uma barra (/), CDPATH não é usada.\n"
+"     \n"
+"     Se a pasta não for encontrada e a opção de consola \"cdable_vars\" "
+"estiver definida,\n"
+"     a palavra é assumida como nome de variável. Se essa variável tiver um "
+"valor,\n"
+"     será usado como PASTA.\n"
+"     \n"
+"     Opções:\n"
+"        -L\tforçar seguimento de ligações simbólicas: resolve ligações\n"
+"     \t\tsimbólicas em PASTA após processar instâncias de \"..\"\n"
+"        -P\tusa a estrutura física de pastas sem seguir ligações\n"
+"     \t\tsimbólicas: resolve ligações simbólicas em PASTA antes de\n"
+"     \t\tprocessar instâncias de \"..\"\n"
+"        -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n"
+"     \t\tser determinada com sucesso, sair com\n"
+"     \t\testado não-zero\n"
+"        -@\tem sistemas que o suportam, apresentar um ficheiro com "
+"atributos\n"
+"     \t\testendidos como uma pasta contendo os atributos do ficheiro.\n"
+"     \n"
+"     A predefinição é seguir ligações simbólicas, como se \"-L\" fosse "
+"especificada.\n"
+"     \"..\" é processado colocando o componente de caminho imediatamente "
+"anterior\n"
+"     como barra ou o começo de PASTA.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso "
+"quando\n"
+"     -P é usada; caso contrário, não-zero."
+
+#: builtins.c:425
+msgid ""
+"Print the name of the current working directory.\n"
+"    \n"
+"    Options:\n"
+"      -L\tprint the value of $PWD if it names the current working\n"
+"    \t\tdirectory\n"
+"      -P\tprint the physical directory, without any symbolic links\n"
+"    \n"
+"    By default, `pwd' behaves as if `-L' were specified.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns 0 unless an invalid option is given or the current directory\n"
+"    cannot be read."
+msgstr ""
+"Imprimir o nome da actual pasta de trabalho.\n"
+"     \n"
+"     Opções:\n"
+"        -L\tImprimir o valor de $PWD se nomear a actual pasta de\n"
+"     \t\ttrabalho\n"
+"        -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n"
+"     \n"
+"     Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse "
+"especificada.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta "
+"actual\n"
+"     não possa ser lida."
+
+#: builtins.c:442
+msgid ""
+"Null command.\n"
+"    \n"
+"    No effect; the command does nothing.\n"
+"    \n"
+"    Exit Status:\n"
+"    Always succeeds."
+msgstr ""
+"Comando nulo.\n"
+"     \n"
+"     Sem efeito; o comando não faz nada.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Sempre com sucesso."
+
+#: builtins.c:453
+msgid ""
+"Return a successful result.\n"
+"    \n"
+"    Exit Status:\n"
+"    Always succeeds."
+msgstr ""
+"Devolve um resultado com sucesso.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Sempre com sucesso."
+
+#: builtins.c:462
+msgid ""
+"Return an unsuccessful result.\n"
+"    \n"
+"    Exit Status:\n"
+"    Always fails."
+msgstr ""
+"Devolve um resultado sem sucesso.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Falha sempre."
+
+#: builtins.c:471
+msgid ""
+"Execute a simple command or display information about commands.\n"
+"    \n"
+"    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
+"    information about the specified COMMANDs.  Can be used to invoke "
+"commands\n"
+"    on disk when a function with the same name exists.\n"
+"    \n"
+"    Options:\n"
+"      -p    use a default value for PATH that is guaranteed to find all of\n"
+"            the standard utilities\n"
+"      -v    print a description of COMMAND similar to the `type' builtin\n"
+"      -V    print a more verbose description of each COMMAND\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns exit status of COMMAND, or failure if COMMAND is not found."
+msgstr ""
+"Executar um comando simples ou mostrar informação sobre comandos.\n"
+"     \n"
+"     Executa COMANDO com ARGS suprimindo procura de funções da consola ou "
+"mostra\n"
+"     informação acerca dos COMANDOs especificados. Pode ser usado para "
+"chamar comandos\n"
+"     em disco quando existe uma função com o mesmo nome.\n"
+"     \n"
+"     Opções:\n"
+"        -p     usar valor predefinido para CAMINHO que garanta que se "
+"encontram\n"
+"                todos os utilitários padrão\n"
+"        -v     imprimir uma descrição de COMANDO similar ao interno \"type"
+"\"\n"
+"        -V     imprimir uma descrição mais detalhada de COMANDO\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado de saída de COMANDO ou falha se COMANDO não for "
+"encontrado."
+
+#: builtins.c:490
+msgid ""
+"Set variable values and attributes.\n"
+"    \n"
+"    Declare variables and give them attributes.  If no NAMEs are given,\n"
+"    display the attributes and values of all variables.\n"
+"    \n"
+"    Options:\n"
+"      -f\trestrict action or display to function names and definitions\n"
+"      -F\trestrict display to function names only (plus line number and\n"
+"    \t\tsource file when debugging)\n"
+"      -g\tcreate global variables when used in a shell function; otherwise\n"
+"    \t\tignored\n"
+"      -p\tdisplay the attributes and value of each NAME\n"
+"    \n"
+"    Options which set attributes:\n"
+"      -a\tto make NAMEs indexed arrays (if supported)\n"
+"      -A\tto make NAMEs associative arrays (if supported)\n"
+"      -i\tto make NAMEs have the `integer' attribute\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
+"      -n\tmake NAME a reference to the variable named by its value\n"
+"      -r\tto make NAMEs readonly\n"
+"      -t\tto make NAMEs have the `trace' attribute\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
+"      -x\tto make NAMEs export\n"
+"    \n"
+"    Using `+' instead of `-' turns off the given attribute.\n"
+"    \n"
+"    Variables with the integer attribute have arithmetic evaluation (see\n"
+"    the `let' command) performed when the variable is assigned a value.\n"
+"    \n"
+"    When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
+"    command.  The `-g' option suppresses this behavior.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or a variable\n"
+"    assignment error occurs."
+msgstr ""
+"Define valores e atributos de variáveis.\n"
+"     \n"
+"     Declara variáveis e dá-lhes atributos. Se não indicar NOMEs,\n"
+"     mostrar os atributos e valores de todas as variáveis.\n"
+"     \n"
+"     Opções:\n"
+"        -f\trestringe acção ou exibição a nomes e definições de função\n"
+"        -F\trestringe exibição só a nomes de função (mais nº de linha e\n"
+"     \t\tficheiro fonte ao depurar)\n"
+"        -g\tcria variáveis globais quando usadas numa função da consola; "
+"senão\n"
+"     \t\té ignorada\n"
+"        -p\tmostra atributos e valores de cada NOME\n"
+"     \n"
+"     Opções que definem atributos:\n"
+"        -a\tpara tornar NOMEs matrizes indexadas (se suportado)\n"
+"        -A\tpara tornar NOMEs matrizes associativas (se suportado)\n"
+"        -i\tpara dar a NOMEs o atributo \"integer\"\n"
+"        -l\tpara converter NOMEs em minúsculas ao atribuir\n"
+"        -n\ttornar NOME uma referência à variável chamada pelo seu valor\n"
+"        -r\tpara tornar NOMEs só de leitura\n"
+"        -t\tpara dar a NOMEs o atributo \"trace\"\n"
+"        -u\tpara converter NOMEs em maiúsculas ao atribuir\n"
+"        -x\tpara tornar NOMEs exportáveis\n"
+"     \n"
+"     Usar \"+\" em vez de \"-\" desliga o atributo indicado.\n"
+"     \n"
+"     Variáveis com o atributo integer têm avaliação aritmética (veja o\n"
+"     comando \"let\") realizada quando lhe é atribuído um valor.\n"
+"     \n"
+"     Quando usado numa função, \"declare\" torna NOMEs locais, como o "
+"comando\n"
+"     \"local\". A opção \"-g\" suprime este comportamento.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que seja indicada uma opção inválida ou "
+"ocorra um\n"
+"     erro de atribuição da variável."
+
+#: builtins.c:530
+msgid ""
+"Set variable values and attributes.\n"
+"    \n"
+"    A synonym for `declare'.  See `help declare'."
+msgstr ""
+"Define variáveis e atributos.\n"
+"     \n"
+"     Um sinónimo para \"declare\".  Veja \"help declare\"."
+
+#: builtins.c:538
+msgid ""
+"Define local variables.\n"
+"    \n"
+"    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
+"    be any option accepted by `declare'.\n"
+"    \n"
+"    Local variables can only be used within a function; they are visible\n"
+"    only to the function where they are defined and its children.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied, a variable\n"
+"    assignment error occurs, or the shell is not executing a function."
+msgstr ""
+"Define variáveis locais.\n"
+"     \n"
+"     Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n"
+"     ser qualquer opção aceite por \"declare\".\n"
+"     \n"
+"     Variáveis locais só podem ser usadas dentro de uma função; só são "
+"visíveis\n"
+"     para a função onde foram definidas e para os seus filhos.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que uma opção inválida seja fornecida, "
+"ocorra \n"
+"     um erro de atribuição ou a consola não esteja a executar uma função."
+
+#: builtins.c:555
+#, fuzzy
+msgid ""
+"Write arguments to the standard output.\n"
+"    \n"
+"    Display the ARGs, separated by a single space character and followed by "
+"a\n"
+"    newline, on the standard output.\n"
+"    \n"
+"    Options:\n"
+"      -n\tdo not append a newline\n"
+"      -e\tenable interpretation of the following backslash escapes\n"
+"      -E\texplicitly suppress interpretation of backslash escapes\n"
+"    \n"
+"    `echo' interprets the following backslash-escaped characters:\n"
+"      \\a\talert (bell)\n"
+"      \\b\tbackspace\n"
+"      \\c\tsuppress further output\n"
+"      \\e\tescape character\n"
+"      \\E\tescape character\n"
+"      \\f\tform feed\n"
+"      \\n\tnew line\n"
+"      \\r\tcarriage return\n"
+"      \\t\thorizontal tab\n"
+"      \\v\tvertical tab\n"
+"      \\\\\tbackslash\n"
+"      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n"
+"    \t\t0 to 3 octal digits\n"
+"      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
+"    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless a write error occurs."
+msgstr ""
+"Escreve argumentos para a saída padrão.\n"
+"     \n"
+"     Mostrar ARGs, separados por espaço único e seguidos de nova linha (LF)\n"
+"     na saída padrão.\n"
+"     \n"
+"     Opções:\n"
+"        -n\tnaõ acrescentar nova linha\n"
+"        -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n"
+"        -E\tsuprimir explicitamente interpretação de escapes com barra "
+"esquerda\n"
+"     \n"
+"     \"echo\" interpreta os seguintes caracteres de escapes com barra "
+"esquerda:\n"
+"        \\a\talerta (bell)\n"
+"        \\b\tbackspace\n"
+"        \\c\tsuprimir mais saídas\n"
+"        \\e\tcarácter de escape\n"
+"        \\E\tcarácter de escape\n"
+"        \\f\tform feed\n"
+"        \\n\tnova linha (LF)\n"
+"        \\r\tcarriage return (CR)\n"
+"        \\t\ttabulação horizontal\n"
+"        \\v\ttabulação vertical\n"
+"        \\\\\tbarra esquerda (\"\\\")\n"
+"        \\0nnn\to carácter cujo código ASCII é NNN (octal).  NNN pode ter\n"
+"     \t\tde 0 a 3 dígitos octais\n"
+"        \\xHH\to carácter de 8-bit cujo valor é HH (hexadecimal).  HH\n"
+"     \t\tpode ter um ou dois dígitos hexadecimais\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que ocorra um erro de escrita."
+
+#: builtins.c:595
+msgid ""
+"Write arguments to the standard output.\n"
+"    \n"
+"    Display the ARGs on the standard output followed by a newline.\n"
+"    \n"
+"    Options:\n"
+"      -n\tdo not append a newline\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless a write error occurs."
+msgstr ""
+"Escreve argumentos para a saída padrão.\n"
+"     \n"
+"     Mostrar ARGs na saída padrão seguidos de nova linha (LF).\n"
+"     \n"
+"     Opções:\n"
+"        -n\tnão acrescentar nova linha\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que ocorra um erro de escrita."
+
+#: builtins.c:610
+msgid ""
+"Enable and disable shell builtins.\n"
+"    \n"
+"    Enables and disables builtin shell commands.  Disabling allows you to\n"
+"    execute a disk command which has the same name as a shell builtin\n"
+"    without using a full pathname.\n"
+"    \n"
+"    Options:\n"
+"      -a\tprint a list of builtins showing whether or not each is enabled\n"
+"      -n\tdisable each NAME or display a list of disabled builtins\n"
+"      -p\tprint the list of builtins in a reusable format\n"
+"      -s\tprint only the names of Posix `special' builtins\n"
+"    \n"
+"    Options controlling dynamic loading:\n"
+"      -f\tLoad builtin NAME from shared object FILENAME\n"
+"      -d\tRemove a builtin loaded with -f\n"
+"    \n"
+"    Without options, each NAME is enabled.\n"
+"    \n"
+"    To use the `test' found in $PATH instead of the shell builtin\n"
+"    version, type `enable -n test'.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless NAME is not a shell builtin or an error occurs."
+msgstr ""
+"Activar e desactivar internos da consola.\n"
+"     \n"
+"     Activa e desactiva comandos internos da consola. Desativar permite\n"
+"     executar um comando de disco com o mesmo nome que comando interno\n"
+"     sem ter de usar um caminho completo.\n"
+"     \n"
+"     Opções:\n"
+"        -a\timprimir lista de internos mostrando se estão ou não activos\n"
+"        -n\tdesactivar cada NOME ou mostrar uma lista de internos "
+"desactivados\n"
+"        -p\timprimir a lista de internos em formato reutilizável\n"
+"        -s\timprimir só os nomes de internos \"especiais\" Posix\n"
+"     \n"
+"     Opções que controlam o carregamento dinâmico:\n"
+"        -f\tCarregar interno NOME de objecto partilhado NOMEFICH\n"
+"        -d\tRemover um interno carregado com -f\n"
+"     \n"
+"     Sem opções, cada NOME é activado.\n"
+"     \n"
+"     Para usar o \"test\" encontado em $PATH em vez do interno da consola\n"
+"     insira \"enable -n test\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que NOME não seja um interno da consola ou "
+"ocorra um erro."
+
+#: builtins.c:638
+msgid ""
+"Execute arguments as a shell command.\n"
+"    \n"
+"    Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
+"    and execute the resulting commands.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns exit status of command or success if command is null."
+msgstr ""
+"Executa argumentos como comando da consola.\n"
+"     \n"
+"     Combina ARGs numa única cadeia, usa o resultado como entrada da "
+"consola,\n"
+"     e executa os comandos resultantes.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve estado de saída do comando ou sucesso se o comando for nulo."
+
+#: builtins.c:650
+msgid ""
+"Parse option arguments.\n"
+"    \n"
+"    Getopts is used by shell procedures to parse positional parameters\n"
+"    as options.\n"
+"    \n"
+"    OPTSTRING contains the option letters to be recognized; if a letter\n"
+"    is followed by a colon, the option is expected to have an argument,\n"
+"    which should be separated from it by white space.\n"
+"    \n"
+"    Each time it is invoked, getopts will place the next option in the\n"
+"    shell variable $name, initializing name if it does not exist, and\n"
+"    the index of the next argument to be processed into the shell\n"
+"    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n"
+"    a shell script is invoked.  When an option requires an argument,\n"
+"    getopts places that argument into the shell variable OPTARG.\n"
+"    \n"
+"    getopts reports errors in one of two ways.  If the first character\n"
+"    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n"
+"    this mode, no error messages are printed.  If an invalid option is\n"
+"    seen, getopts places the option character found into OPTARG.  If a\n"
+"    required argument is not found, getopts places a ':' into NAME and\n"
+"    sets OPTARG to the option character found.  If getopts is not in\n"
+"    silent mode, and an invalid option is seen, getopts places '?' into\n"
+"    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n"
+"    is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
+"    printed.\n"
+"    \n"
+"    If the shell variable OPTERR has the value 0, getopts disables the\n"
+"    printing of error messages, even if the first character of\n"
+"    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n"
+"    \n"
+"    Getopts normally parses the positional parameters ($0 - $9), but if\n"
+"    more arguments are given, they are parsed instead.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success if an option is found; fails if the end of options is\n"
+"    encountered or an error occurs."
+msgstr ""
+"Analisa argumentos da opção.\n"
+"     \n"
+"     Getopts é usado pelos procedimentos da consola para analisar parâmetros "
+"posicionais\n"
+"     como opções.\n"
+"     \n"
+"     CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n"
+"     for seguida de \":\", espera-se que a opção tenha um argumento,\n"
+"     separado da opção por um espaço.\n"
+"     \n"
+"     Sempre que é chamado, getopts coloca a opção seguinte na variável\n"
+"     da consola $name, inicializa name se não existir e o índice do\n"
+"     argumento seguinte a processar na variável da consola OPTIND.\n"
+"     OPTIND é inicializado em 1 sempre que a consola ou um script da\n"
+"     shellé chamado. Quando uma opção requer um argumento, o\n"
+"     getopts coloca esse argumento  na variável da consola OPTARG.\n"
+"     \n"
+"     O getopts reporta erros de duas formas. Se o primeiro carácter\n"
+"     de OPTCADEIA é \":\", o getopts usa um relatório de erro\n"
+"     silencioso. Neste modo não verá mensagens de erro. Se for vista uma\n"
+"     opção inválida is seen, o getopts põe o carácter de opção em OPTARG.\n"
+"     Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n"
+"     define OPTARG como o carácter de opção encontrado. Se o getopts não\n"
+"     estiver em modo silêncio e for vista uma opção inválida, o getopts\n"
+"     põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento "
+"requeriso,\n"
+"     é posto \"?\" no NOME, OPTARG é limpoe é imprimida uma mensagem de\n"
+"     diagnóstico.\n"
+"     \n"
+"     Se a variável da consola OPTERR tiver valor 0, o getopts desactiva a\n"
+"     impressão de mensagens de erro, mesmo que o 1º carácter de\n"
+"     CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n"
+"     \n"
+"     O getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas "
+"se\n"
+"     receber mais argumentos, são eles que são analisados.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n"
+"     encontrado ou se ocorrer um erro."
+
+#: builtins.c:692
+msgid ""
+"Replace the shell with the given command.\n"
+"    \n"
+"    Execute COMMAND, replacing this shell with the specified program.\n"
+"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
+"specified,\n"
+"    any redirections take effect in the current shell.\n"
+"    \n"
+"    Options:\n"
+"      -a name\tpass NAME as the zeroth argument to COMMAND\n"
+"      -c\texecute COMMAND with an empty environment\n"
+"      -l\tplace a dash in the zeroth argument to COMMAND\n"
+"    \n"
+"    If the command cannot be executed, a non-interactive shell exits, "
+"unless\n"
+"    the shell option `execfail' is set.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless COMMAND is not found or a redirection error "
+"occurs."
+msgstr ""
+"Substitui a consola com o comando indicado.\n"
+"     \n"
+"     Executar COMANDO, substituindo esta consola pelo programa "
+"especificado.\n"
+"     ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for "
+"especificado,\n"
+"     quaisquer redireccionamentos têm efeito na consola actual.\n"
+"     \n"
+"     Opções:\n"
+"        -a nome\tpassa NOME como argumento 0 a COMANDO\n"
+"        -c\texecuta COMANDO com um ambiente vazio\n"
+"        -l\tpõe uma barra no argumento 0 de COMANDO\n"
+"     \n"
+"     Se o comando não puder ser executado, uma consola não interactiva sai, "
+"a não ser que\n"
+"     a opção de consola \"execfail\" esteja definida.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um "
+"erro de redireccionamento."
+
+#: builtins.c:713
+msgid ""
+"Exit the shell.\n"
+"    \n"
+"    Exits the shell with a status of N.  If N is omitted, the exit status\n"
+"    is that of the last command executed."
+msgstr ""
+"Sai da consola.\n"
+"     \n"
+"     Sai da consola com estado N. Se N for omitido, o estado de saída\n"
+"     é o do último comando executado."
+
+#: builtins.c:722
+msgid ""
+"Exit a login shell.\n"
+"    \n"
+"    Exits a login shell with exit status N.  Returns an error if not "
+"executed\n"
+"    in a login shell."
+msgstr ""
+"Sai de uma consola com sessão.\n"
+"     \n"
+"     Sai de uma consola com sessão com estado de saída N.  Devolve um erro "
+"se não for\n"
+"     executado numa consola com sessão."
+
+#: builtins.c:732
+msgid ""
+"Display or execute commands from the history list.\n"
+"    \n"
+"    fc is used to list or edit and re-execute commands from the history "
+"list.\n"
+"    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
+"    string, which means the most recent command beginning with that\n"
+"    string.\n"
+"    \n"
+"    Options:\n"
+"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
+"EDITOR,\n"
+"    \t\tthen vi\n"
+"      -l \tlist lines instead of editing\n"
+"      -n\tomit line numbers when listing\n"
+"      -r\treverse the order of the lines (newest listed first)\n"
+"    \n"
+"    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
+"    re-executed after the substitution OLD=NEW is performed.\n"
+"    \n"
+"    A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
+"    runs the last command beginning with `cc' and typing `r' re-executes\n"
+"    the last command.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success or status of executed command; non-zero if an error "
+"occurs."
+msgstr ""
+"Mostra ou executa comandos da lista do histórico.\n"
+"     \n"
+"     fc é usado para listar ou editar e re-executar comandos da lsiat do "
+"histórico.\n"
+"     PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou "
+"PRIMEIRO pode ser\n"
+"     cadeia, que significa o comando mais recente começado por essa\n"
+"     cadeia.\n"
+"     \n"
+"     Opções:\n"
+"        -e NOMEED\tseleciona o editor a usar.  A predefinição é FCEDIT, "
+"depois EDITOR,\n"
+"     \t\tdepois vi\n"
+"        -l \tlistar linhas em vez de editar\n"
+"        -n\tomitir nºs de linha ao ouvir\n"
+"        -r\treverter a ordem das linhas (mais recentes primeiro)\n"
+"     \n"
+"     Com o formato \"fc -s [pat=rep ...] [comando]\", COMANDO é\n"
+"     re-executado após a substituição VELHO=NOVO ser realizada.\n"
+"     \n"
+"     Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n"
+"     executa o último comando começado por \"cc\" e inserir \"r\" re-"
+"executa\n"
+"     o último comando.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso ou estado do comando executado; não-zero se ocorrer um "
+"erro."
+
+#: builtins.c:762
+msgid ""
+"Move job to the foreground.\n"
+"    \n"
+"    Place the job identified by JOB_SPEC in the foreground, making it the\n"
+"    current job.  If JOB_SPEC is not present, the shell's notion of the\n"
+"    current job is used.\n"
+"    \n"
+"    Exit Status:\n"
+"    Status of command placed in foreground, or failure if an error occurs."
+msgstr ""
+"Move a tarefa para 1º plano.\n"
+"     \n"
+"     Coloca a tarefa identificada com JOB_SPEC em 1º plano, tornando-a a\n"
+"     tarefa actual. Se JOB_SPEC não existir, é usada a noção da consola de\n"
+"     tarefa actual.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Estado do comando colocado em 1º plano ou falha se ocorrer um erro."
+
+#: builtins.c:777
+msgid ""
+"Move jobs to the background.\n"
+"    \n"
+"    Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
+"notion\n"
+"    of the current job is used.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless job control is not enabled or an error occurs."
+msgstr ""
+"Move a tarefa para 2º plano.\n"
+"     \n"
+"     Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se "
+"tivessem\n"
+"     sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da "
+"consola de\n"
+"     tarefa actual.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou "
+"ocorra um erro."
+
+#: builtins.c:791
+msgid ""
+"Remember or display program locations.\n"
+"    \n"
+"    Determine and remember the full pathname of each command NAME.  If\n"
+"    no arguments are given, information about remembered commands is "
+"displayed.\n"
+"    \n"
+"    Options:\n"
+"      -d\tforget the remembered location of each NAME\n"
+"      -l\tdisplay in a format that may be reused as input\n"
+"      -p pathname\tuse PATHNAME as the full pathname of NAME\n"
+"      -r\tforget all remembered locations\n"
+"      -t\tprint the remembered location of each NAME, preceding\n"
+"    \t\teach location with the corresponding NAME if multiple\n"
+"    \t\tNAMEs are given\n"
+"    Arguments:\n"
+"      NAME\tEach NAME is searched for in $PATH and added to the list\n"
+"    \t\tof remembered commands.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless NAME is not found or an invalid option is given."
+msgstr ""
+"Recorda ou mostra localizações de programas.\n"
+"     \n"
+"     Determina e recorda o caminho completo de cada comando NOME. Se\n"
+"     não tiver argumentos, é mostrada informação sobre comando recordados.\n"
+"     \n"
+"     Opções:\n"
+"        -d\tesquecer a localização recordada de cada NOME\n"
+"        -l\tmostrar num formato que possa ser usado como entrada\n"
+"        -p caminho\tuse CAMINHO como caminho completo para NOME\n"
+"        -r\tesquecer todas as localizações recordadas\n"
+"        -t\timprimir a localização recordada de cada NOME, precedendo-a\n"
+"     \t\tdo correspondente NOME se forem\n"
+"     \t\tindicados múltiplos NOMEs\n"
+"     Argumentos:\n"
+"        NOME\tCada NOME é procurado no $PATH e adicionado à lista\n"
+"     \t\tde comandos lembrados.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que NOME não seja encontrado ou indique uma "
+"opção inválida."
+
+#: builtins.c:816
+msgid ""
+"Display information about builtin commands.\n"
+"    \n"
+"    Displays brief summaries of builtin commands.  If PATTERN is\n"
+"    specified, gives detailed help on all commands matching PATTERN,\n"
+"    otherwise the list of help topics is printed.\n"
+"    \n"
+"    Options:\n"
+"      -d\toutput short description for each topic\n"
+"      -m\tdisplay usage in pseudo-manpage format\n"
+"      -s\toutput only a short usage synopsis for each topic matching\n"
+"    \t\tPATTERN\n"
+"    \n"
+"    Arguments:\n"
+"      PATTERN\tPattern specifying a help topic\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless PATTERN is not found or an invalid option is "
+"given."
+msgstr ""
+"Mostra informação sobre comandos internos.\n"
+"     \n"
+"     Mostra breves resumos de comandos internos. Se PADRÃO for\n"
+"     especificado, dá ajuda detalhada em todos os comandos que cumpram "
+"PADRÃO,\n"
+"     senão imprime a lista de tópicos de ajuda.\n"
+"     \n"
+"     Opções:\n"
+"        -d\tmostra uma descrição breve de cada tópico\n"
+"        -m\tmostra uso em formato pseudo-manpage\n"
+"        -s\tmostra só uma sinopse curta para cada tópico que cumpre\n"
+"     \t\tPADRÃO\n"
+"     \n"
+"     Argumentos:\n"
+"        PADRÃO\tPadrão que especifica um tópico de ajuda\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma "
+"opção inválida."
+
+#: builtins.c:840
+msgid ""
+"Display or manipulate the history list.\n"
+"    \n"
+"    Display the history list with line numbers, prefixing each modified\n"
+"    entry with a `*'.  An argument of N lists only the last N entries.\n"
+"    \n"
+"    Options:\n"
+"      -c\tclear the history list by deleting all of the entries\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
+"    \n"
+"      -a\tappend history lines from this session to the history file\n"
+"      -n\tread all history lines not already read from the history file\n"
+"    \t\tand append them to the history list\n"
+"      -r\tread the history file and append the contents to the history\n"
+"    \t\tlist\n"
+"      -w\twrite the current history to the history file\n"
+"    \n"
+"      -p\tperform history expansion on each ARG and display the result\n"
+"    \t\twithout storing it in the history list\n"
+"      -s\tappend the ARGs to the history list as a single entry\n"
+"    \n"
+"    If FILENAME is given, it is used as the history file.  Otherwise,\n"
+"    if HISTFILE has a value, that is used, else ~/.bash_history.\n"
+"    \n"
+"    If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
+"    as a format string for strftime(3) to print the time stamp associated\n"
+"    with each displayed history entry.  No time stamps are printed "
+"otherwise.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or an error occurs."
+msgstr ""
+"Mostra ou manipula a lista do histórico.\n"
+"     \n"
+"     Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n"
+"     modificada com um \"*\". Um argumento de N lista só as últimas N "
+"entradas.\n"
+"     \n"
+"     Opções:\n"
+"        -c\tlimpa a lista eliminado todas as entradas\n"
+"        -d desvio\telimina a entrada do histórico na posição DESVIO.\n"
+"    \t\tDesvios negativos contam-se do final da lista do histórico\n"
+"     \n"
+"        -a\tacrescenta linhas de histórico desta sessão ao ficheiro de "
+"histórico\n"
+"        -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de "
+"histórico\n"
+"     \t\te acrescenta-as à lista de histórico\n"
+"        -r\tlê o ficheiro de histórico e acrescenta o conteúdo à lista de\n"
+"     \t\thistórico\n"
+"        -w\tescreve o histórico actual no ficheiro de histórico\n"
+"     \n"
+"        -p\trealiza expansão do histórico em cada ARG e mostra o resultado\n"
+"     \t\tsem gravar na lista de histórico\n"
+"        -s\tacrescenta ARGs à lista de histórico como entrada única\n"
+"     \n"
+"     Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n"
+"     se FICHHIST tiver um valor, será usado, caso contrário ~/."
+"bash_history.\n"
+"     \n"
+"     Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é "
+"usado\n"
+"     como cadeia de formato para strftime(3) para imprimir o carimbo "
+"associado\n"
+"     a cada entrada de histórico mostrada. Senão, não são imprimidos "
+"quaisquer carimbos.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
+
+#: builtins.c:877
+msgid ""
+"Display status of jobs.\n"
+"    \n"
+"    Lists the active jobs.  JOBSPEC restricts output to that job.\n"
+"    Without options, the status of all active jobs is displayed.\n"
+"    \n"
+"    Options:\n"
+"      -l\tlists process IDs in addition to the normal information\n"
+"      -n\tlists only processes that have changed status since the last\n"
+"    \t\tnotification\n"
+"      -p\tlists process IDs only\n"
+"      -r\trestrict output to running jobs\n"
+"      -s\trestrict output to stopped jobs\n"
+"    \n"
+"    If -x is supplied, COMMAND is run after all job specifications that\n"
+"    appear in ARGS have been replaced with the process ID of that job's\n"
+"    process group leader.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or an error occurs.\n"
+"    If -x is used, returns the exit status of COMMAND."
+msgstr ""
+"Mostra o estado das tarefas.\n"
+"     \n"
+"     Lista as tarefas activas. JOBSPEC rea cadeiae a saída a essa tarefa.\n"
+"     Sem opções, é mostrado o estado de todas as tarefas activas.\n"
+"     \n"
+"     Opções:\n"
+"        -l\tlista IDs de processo além da informação normal\n"
+"        -n\tlista só processos com estado alterado desde a última\n"
+"     \t\tnotificação\n"
+"        -p\tlista só IDs de processo\n"
+"        -r\trea cadeiae saída a tarefas em execução\n"
+"        -s\trea cadeiae saída a tarefas paradas\n"
+"     \n"
+"     Se -x for usado, COMANDO é executado após todas as especificações de "
+"tarefas\n"
+"     que aparecem em ARGS terem sido substituídas pela ID de processo do "
+"líder de\n"
+"     grupo do processo dessat tarefa.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro.\n"
+"     Se -x for usado, devolve o estado de saída de COMANDO."
+
+#: builtins.c:904
+msgid ""
+"Remove jobs from current shell.\n"
+"    \n"
+"    Removes each JOBSPEC argument from the table of active jobs.  Without\n"
+"    any JOBSPECs, the shell uses its notion of the current job.\n"
+"    \n"
+"    Options:\n"
+"      -a\tremove all jobs if JOBSPEC is not supplied\n"
+"      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
+"    \t\tshell receives a SIGHUP\n"
+"      -r\tremove only running jobs\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option or JOBSPEC is given."
+msgstr ""
+"Remove tarefas da consola actual.\n"
+"     \n"
+"     Remove cada argumento JOBSPEC da tabela de tarefas activas. Sem\n"
+"     JOBSPECs, a consola usa a sua noção de tarefa actual.\n"
+"     \n"
+"     Opções:\n"
+"        -a\tremove todas as tarefas se JOBSPEC não for indicado\n"
+"        -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a "
+"tarefa\n"
+"     \t\tse a consola receber um SIGHUP\n"
+"        -r\tremove só tarefas em execução\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja "
+"indicada."
+
+#: builtins.c:923
+msgid ""
+"Send a signal to a job.\n"
+"    \n"
+"    Send the processes identified by PID or JOBSPEC the signal named by\n"
+"    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
+"    SIGTERM is assumed.\n"
+"    \n"
+"    Options:\n"
+"      -s sig\tSIG is a signal name\n"
+"      -n sig\tSIG is a signal number\n"
+"      -l\tlist the signal names; if arguments follow `-l' they are\n"
+"    \t\tassumed to be signal numbers for which names should be listed\n"
+"      -L\tsynonym for -l\n"
+"    \n"
+"    Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
+"    instead of process IDs, and allows processes to be killed if the limit\n"
+"    on processes that you can create is reached.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or an error occurs."
+msgstr ""
+"Envia um sinal a uma tarefa.\n"
+"     \n"
+"     Envia aos processos identificados por PID ou JOBSPEC o sinal chamado\n"
+"     SIGSPEC ou SIGNUM. Se nem SIGSPEC nem SIGNUM estiverem presentes,\n"
+"     SIGTERM é presumido.\n"
+"     \n"
+"     Opções:\n"
+"        -s sig\tSIG é um nome de sinal\n"
+"        -n sig\tSIG é um número de sinal\n"
+"        -l\tlista nomes de sinais; se se seguirem argumentos, são\n"
+"     \t\tassumidos como nºs de sinal para listar os nomes\n"
+"        -L\tsinónimo de -l\n"
+"     \n"
+"     Mata um interno da consola por dois motivos: permite usar as IDs de "
+"tarefa\n"
+"     em vez de IDs de processo e permite matar processos se o limite de\n"
+"     processos que pode criar for atingido.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
+
+#: builtins.c:947
+msgid ""
+"Evaluate arithmetic expressions.\n"
+"    \n"
+"    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
+"    fixed-width integers with no check for overflow, though division by 0\n"
+"    is trapped and flagged as an error.  The following list of operators is\n"
+"    grouped into levels of equal-precedence operators.  The levels are "
+"listed\n"
+"    in order of decreasing precedence.\n"
+"    \n"
+"    \tid++, id--\tvariable post-increment, post-decrement\n"
+"    \t++id, --id\tvariable pre-increment, pre-decrement\n"
+"    \t-, +\t\tunary minus, plus\n"
+"    \t!, ~\t\tlogical and bitwise negation\n"
+"    \t**\t\texponentiation\n"
+"    \t*, /, %\t\tmultiplication, division, remainder\n"
+"    \t+, -\t\taddition, subtraction\n"
+"    \t<<, >>\t\tleft and right bitwise shifts\n"
+"    \t<=, >=, <, >\tcomparison\n"
+"    \t==, !=\t\tequality, inequality\n"
+"    \t&\t\tbitwise AND\n"
+"    \t^\t\tbitwise XOR\n"
+"    \t|\t\tbitwise OR\n"
+"    \t&&\t\tlogical AND\n"
+"    \t||\t\tlogical OR\n"
+"    \texpr ? expr : expr\n"
+"    \t\t\tconditional operator\n"
+"    \t=, *=, /=, %=,\n"
+"    \t+=, -=, <<=, >>=,\n"
+"    \t&=, ^=, |=\tassignment\n"
+"    \n"
+"    Shell variables are allowed as operands.  The name of the variable\n"
+"    is replaced by its value (coerced to a fixed-width integer) within\n"
+"    an expression.  The variable need not have its integer attribute\n"
+"    turned on to be used in an expression.\n"
+"    \n"
+"    Operators are evaluated in order of precedence.  Sub-expressions in\n"
+"    parentheses are evaluated first and may override the precedence\n"
+"    rules above.\n"
+"    \n"
+"    Exit Status:\n"
+"    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
+msgstr ""
+"Avalia as expressões aritméticas.\n"
+"     \n"
+"     Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n"
+"     inteiros de largura fixa sem verificação de transporte, embora a "
+"divisão\n"
+"     por 0 seja sinalizada como erro. A seguinte lista de operadores é "
+"agrupada\n"
+"     em níveis de igual prioridade. Os níveis estão listados\n"
+"     por ordem de precedência decrescente.\n"
+"     \n"
+"     \tid++, id--\tvariável pós-incremento, pós-decremento\n"
+"     \t++id, --id\tvariável pré-incremento, pré-decremento\n"
+"     \t-, +\t\tmenos, mais unário\n"
+"     \t!, ~\t\tnegação lógica e bitwise\n"
+"     \t**\t\texponenciação\n"
+"     \t*, /, %\t\tmultiplicação, divisão, resto\n"
+"     \t+, -\t\tadição, subtracção\n"
+"     \t<<, >>\t\tdeslocação esquerda e direita bitwise\n"
+"     \t<=, >=, <, >\tcomparação\n"
+"     \t==, !=\t\tigualdade, não igualdade\n"
+"     \t&\t\tE bitwise\n"
+"     \t^\t\tOUEX bitwise\n"
+"     \t|\t\tOU bitwise\n"
+"     \t&&\t\tE lógico\n"
+"     \t||\t\tOU lógico\n"
+"     \texpr ? expr : expr\n"
+"     \t\t\toperador condicional\n"
+"     \t=, *=, /=, %=,\n"
+"     \t+=, -=, <<=, >>=,\n"
+"     \t&=, ^=, |=\tatribuição\n"
+"     \n"
+"     As variáveis de consola são permitidas como operandos. O nome da "
+"variável\n"
+"     é substituído pelo seu valor (convertido em inteiro de largura fixa) "
+"dentro\n"
+"     de uma expressão. A variável não tem de ter o seu atributo inteiro\n"
+"     activado para ser usado numa expressão.\n"
+"     \n"
+"     Os operadores são avaliados por ordem de precedência. Sub-expressões\n"
+"     entre parênteses são avaliadas primeiro e ignoram as regras de\n"
+"     precedência acima.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0."
+
+#: builtins.c:992
+msgid ""
+"Read a line from the standard input and split it into fields.\n"
+"    \n"
+"    Reads a single line from the standard input, or from file descriptor FD\n"
+"    if the -u option is supplied.  The line is split into fields as with "
+"word\n"
+"    splitting, and the first word is assigned to the first NAME, the second\n"
+"    word to the second NAME, and so on, with any leftover words assigned to\n"
+"    the last NAME.  Only the characters found in $IFS are recognized as "
+"word\n"
+"    delimiters.\n"
+"    \n"
+"    If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
+"    \n"
+"    Options:\n"
+"      -a array\tassign the words read to sequential indices of the array\n"
+"    \t\tvariable ARRAY, starting at zero\n"
+"      -d delim\tcontinue until the first character of DELIM is read, rather\n"
+"    \t\tthan newline\n"
+"      -e\tuse Readline to obtain the line\n"
+"      -i text\tuse TEXT as the initial text for Readline\n"
+"      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
+"    \t\tfor a newline, but honor a delimiter if fewer than\n"
+"    \t\tNCHARS characters are read before the delimiter\n"
+"      -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
+"    \t\tEOF is encountered or read times out, ignoring any\n"
+"    \t\tdelimiter\n"
+"      -p prompt\toutput the string PROMPT without a trailing newline before\n"
+"    \t\tattempting to read\n"
+"      -r\tdo not allow backslashes to escape any characters\n"
+"      -s\tdo not echo input coming from a terminal\n"
+"      -t timeout\ttime out and return failure if a complete line of\n"
+"    \t\tinput is not read within TIMEOUT seconds.  The value of the\n"
+"    \t\tTMOUT variable is the default timeout.  TIMEOUT may be a\n"
+"    \t\tfractional number.  If TIMEOUT is 0, read returns\n"
+"    \t\timmediately, without trying to read any data, returning\n"
+"    \t\tsuccess only if input is available on the specified\n"
+"    \t\tfile descriptor.  The exit status is greater than 128\n"
+"    \t\tif the timeout is exceeded\n"
+"      -u fd\tread from file descriptor FD instead of the standard input\n"
+"    \n"
+"    Exit Status:\n"
+"    The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+"    (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
+"    or an invalid file descriptor is supplied as the argument to -u."
+msgstr ""
+"Lê uma linha da entrada padrão e divide-a em campos.\n"
+"     \n"
+"     Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n"
+"     se a opção -u for usada. A linha é dividida em campos como na divisão\n"
+"     de palavras e a primeira palavra é atribuída ao primeiro NOME, a "
+"segunda\n"
+"     ao segundo NOME, e assim por diante, com quaisquer palavras que "
+"sobrem \n"
+"     atribuídas ao último NOME. Só caracteres encontrados em $IFS são "
+"reconhecidos\n"
+"     como delimitadores de palavras.\n"
+"     \n"
+"     Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n"
+"     \n"
+"     Opções:\n"
+"        -a matriz\tatribui as palavras lidas a índices sequenciais da "
+"MATRIZ\n"
+"     \t\tcomeçando em zero\n"
+"        -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, "
+"em vez de\n"
+"     \t\tnewline\n"
+"        -e\tusa Readline para obter a linha numa consola interactiva\n"
+"        -i texto\tusa TEXTO como texto inicial para Readline\n"
+"        -n ncars\tvolta após ler NCARS caracteres em vez de esperar\n"
+"     \t\tpor newline, mas respeita um delimitador se estiver\n"
+"     \t\tantes de NCARS caracteres\n"
+"        -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser "
+"que\n"
+"     \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n"
+"     \t\tqualquer delimitador\n"
+"        -p prompt\timprime PROMPT na saída sem newline final antes de\n"
+"     \t\ttentar ler\n"
+"        -r\tnão permite que barras esquerdas escapem qualquer carácter\n"
+"        -s\tnão ecoa entradas vindas de um terminal\n"
+"        -t inacção\tesgota o tempo e devolve falha se uma linha completa\n"
+"     \t\tde entrada não for lida em INACÇÃO segundos. O valor da\n"
+"     \t\tvariável TMOUT é o predefinido de inacção. INACÇÃO pode ser\n"
+"     \t\tuma fracção. Se INACÇÃO for 0, read volta\n"
+"     \t\timediatamente, sem tentar ler quaisquer dados, devolvendo\n"
+"     \t\tsucesso só se a entrada estiver disponível no descritor de\n"
+"     \t\tficheiro especificado. O estado de saída é maior que 128\n"
+"     \t\tse a inacção for excedida\n"
+"        -u fd\tlê do descritor de ficheiro FD em vez da entrada padrão\n"
+"     \n"
+"     Estado de saída:\n"
+"     O código devolvido é zero, a não ser que end-of-file seja encontrado, "
+"haja\n"
+"     inacção (caso em que é maior que 128), ocorra um erro de atribuição de "
+"variável,\n"
+"     ou seja indicado um descritor de ficheiro inválido como argumento de -u."
+
+#: builtins.c:1039
+msgid ""
+"Return from a shell function.\n"
+"    \n"
+"    Causes a function or sourced script to exit with the return value\n"
+"    specified by N.  If N is omitted, the return status is that of the\n"
+"    last command executed within the function or script.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns N, or failure if the shell is not executing a function or script."
+msgstr ""
+"Volta de uma função de consola.\n"
+"     \n"
+"     Força a saída de uma função ou script baseado com o valor especificado\n"
+"     por N. Se N for omitido, o estado de saída é o do último comando\n"
+"     executado dentro da função ou script.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve N, ou falha se a consola não estiver a executar uma função ou "
+"script."
+
+#: builtins.c:1052
+msgid ""
+"Set or unset values of shell options and positional parameters.\n"
+"    \n"
+"    Change the value of shell attributes and positional parameters, or\n"
+"    display the names and values of shell variables.\n"
+"    \n"
+"    Options:\n"
+"      -a  Mark variables which are modified or created for export.\n"
+"      -b  Notify of job termination immediately.\n"
+"      -e  Exit immediately if a command exits with a non-zero status.\n"
+"      -f  Disable file name generation (globbing).\n"
+"      -h  Remember the location of commands as they are looked up.\n"
+"      -k  All assignment arguments are placed in the environment for a\n"
+"          command, not just those that precede the command name.\n"
+"      -m  Job control is enabled.\n"
+"      -n  Read commands but do not execute them.\n"
+"      -o option-name\n"
+"          Set the variable corresponding to option-name:\n"
+"              allexport    same as -a\n"
+"              braceexpand  same as -B\n"
+"              emacs        use an emacs-style line editing interface\n"
+"              errexit      same as -e\n"
+"              errtrace     same as -E\n"
+"              functrace    same as -T\n"
+"              hashall      same as -h\n"
+"              histexpand   same as -H\n"
+"              history      enable command history\n"
+"              ignoreeof    the shell will not exit upon reading EOF\n"
+"              interactive-comments\n"
+"                           allow comments to appear in interactive commands\n"
+"              keyword      same as -k\n"
+"              monitor      same as -m\n"
+"              noclobber    same as -C\n"
+"              noexec       same as -n\n"
+"              noglob       same as -f\n"
+"              nolog        currently accepted but ignored\n"
+"              notify       same as -b\n"
+"              nounset      same as -u\n"
+"              onecmd       same as -t\n"
+"              physical     same as -P\n"
+"              pipefail     the return value of a pipeline is the status of\n"
+"                           the last command to exit with a non-zero status,\n"
+"                           or zero if no command exited with a non-zero "
+"status\n"
+"              posix        change the behavior of bash where the default\n"
+"                           operation differs from the Posix standard to\n"
+"                           match the standard\n"
+"              privileged   same as -p\n"
+"              verbose      same as -v\n"
+"              vi           use a vi-style line editing interface\n"
+"              xtrace       same as -x\n"
+"      -p  Turned on whenever the real and effective user ids do not match.\n"
+"          Disables processing of the $ENV file and importing of shell\n"
+"          functions.  Turning this option off causes the effective uid and\n"
+"          gid to be set to the real uid and gid.\n"
+"      -t  Exit after reading and executing one command.\n"
+"      -u  Treat unset variables as an error when substituting.\n"
+"      -v  Print shell input lines as they are read.\n"
+"      -x  Print commands and their arguments as they are executed.\n"
+"      -B  the shell will perform brace expansion\n"
+"      -C  If set, disallow existing regular files to be overwritten\n"
+"          by redirection of output.\n"
+"      -E  If set, the ERR trap is inherited by shell functions.\n"
+"      -H  Enable ! style history substitution.  This flag is on\n"
+"          by default when the shell is interactive.\n"
+"      -P  If set, do not resolve symbolic links when executing commands\n"
+"          such as cd which change the current directory.\n"
+"      -T  If set, the DEBUG and RETURN traps are inherited by shell "
+"functions.\n"
+"      --  Assign any remaining arguments to the positional parameters.\n"
+"          If there are no remaining arguments, the positional parameters\n"
+"          are unset.\n"
+"      -   Assign any remaining arguments to the positional parameters.\n"
+"          The -x and -v options are turned off.\n"
+"    \n"
+"    Using + rather than - causes these flags to be turned off.  The\n"
+"    flags can also be used upon invocation of the shell.  The current\n"
+"    set of flags may be found in $-.  The remaining n ARGs are positional\n"
+"    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
+"    ARGs are given, all shell variables are printed.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given."
+msgstr ""
+"Define ou limpa valores de opções ou parâmetros posicionais da consola.\n"
+"     \n"
+"     Altera o valor de atributos ou parâmetros posicionais da consola, ou\n"
+"     mostra os nomes e valores de variáveis da consola.\n"
+"     \n"
+"     Opções:\n"
+"        -a  Marca variáveis modificadas ou criadas para exportação.\n"
+"         -b Notifica o fim da tarefa imediatamente.\n"
+"         -e Sai imediatamente se um comando sair com estado diferente de "
+"zero.\n"
+"         -f Desactiva geração de nome de ficheiro (globbing).\n"
+"         -h Recordar localização de comandos à medida que são procurados.\n"
+"         -k Todos os argumentos de atribuição são colocados no ambiente para "
+"um\n"
+"             comando, não só os que precedem o nome do comando.\n"
+"         -m Activa o controlo de tarefas.\n"
+"         -n Lê comandos, mas não os executa.\n"
+"         -option-name\n"
+"             Define a variável correspondente a option-name:\n"
+"                  allexport     igual a -a\n"
+"                  braceexpand  igual a -B\n"
+"                  emacs          usa estilo emacs de edição de linhas\n"
+"                  errexit        igual a -e\n"
+"                  errtrace      igual a -E\n"
+"                  functrace     igual a -T\n"
+"                  hashall        igual a -h\n"
+"                  histexpand    igual a -H\n"
+"                  history        activa histórico de comandos\n"
+"                  ignoreeof     a consola não sai após ler EOF\n"
+"                  interactive-comments\n"
+"                                    permite que comentários apareçam em "
+"comandos interactivos\n"
+"                  keyword        igual a -k\n"
+"                  monitor        igual a -m\n"
+"                  noclobber     igual a -C\n"
+"                  noexec         igual a -n\n"
+"                  noglob         igual a -f\n"
+"                  nolog          actualmente aceite mas ignorado\n"
+"                  notify         igual a -b\n"
+"                  nounset        igual a -u\n"
+"                  onecmd         igual a -t\n"
+"                  physical      igual a -P\n"
+"                  pipefail      o valor devolvido de um pipeline é o estado "
+"do\n"
+"                                    último comando a sair com estado não-"
+"zero,\n"
+"                                    ou zero se nenhum saiu com estado não-"
+"zero\n"
+"                  posix          altera o comportamento do bash onde a "
+"operação\n"
+"                                    predefinida diferir da norma Posix para "
+"cumprir\n"
+"                                    a norma\n"
+"                  privileged    igual a -p\n"
+"                  verbose        igual a -v\n"
+"                  vi              usa estilo vi de edição de linhas\n"
+"                  xtrace         igual a -x\n"
+"        -p  Activado sempre que as ID de utilizador reais e efectivas não\n"
+"             coincidam. Desactiva o processamento do ficheiro $ ENV e a \n"
+"             importação de funções da consola. Desligar esta opção faz com\n"
+"             que os uid e gid efectivos sejam definidos para os uid e gid "
+"reais.\n"
+"        -t  Sair depois de ler e executar um comando.\n"
+"        -u  Trata as variáveis ​​não definidas como erro ao substituir.\n"
+"        -v  Imprime as linhas de entrada da consola à medida que são lidas.\n"
+"        -x  Imprime comandos e seus argumentos à medida que são executados.\n"
+"        -B  a consola realizará expansão de suporte\n"
+"        -C  Se definido, não permitir que ficheiros normais existentes "
+"sejam\n"
+"             sobrescritos pelo redireccionamento da saída.\n"
+"        -E  se definido, ERR é herdada pelas funções de consola.\n"
+"        -H  Activa estilo ! de substituição do histórico. Esta bandeira\n"
+"             está activada por predefinição, em consolas interativas.\n"
+"        -P  Se definido, não resolve ligações simbólicas ao executar\n"
+"             comandos como \"cd\" que altera a pasta actual.\n"
+"        -T  Se definido, DEBUG e RETURN são herdadas por funções de "
+"consola.\n"
+"        --  Atribui quaisquer outros argumentos aos parâmetros posicionais.\n"
+"             Se não houver mais argumentos, os parâmetros posicionais\n"
+"             são limpos.\n"
+"        -    Atribui quaisquer outros argumentos aos parâmetros "
+"posicionais.\n"
+"             As opções -x e -v são desactivadas.\n"
+"     \n"
+"     Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n"
+"     bandeiras também podem ser usadas por chamada da consola. O actual\n"
+"     conjunto de bandeiras pode ser encontrado em $-. Os n restantes ARGs\n"
+"     são parâmetros posicionais e são atribuídos, em ordem, a $1, $2 .. $n.\n"
+"     Se não houver ARGs, todas as variáveis de consola são imprimidas.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida."
+
+#: builtins.c:1137
+msgid ""
+"Unset values and attributes of shell variables and functions.\n"
+"    \n"
+"    For each NAME, remove the corresponding variable or function.\n"
+"    \n"
+"    Options:\n"
+"      -f\ttreat each NAME as a shell function\n"
+"      -v\ttreat each NAME as a shell variable\n"
+"      -n\ttreat each NAME as a name reference and unset the variable itself\n"
+"    \t\trather than the variable it references\n"
+"    \n"
+"    Without options, unset first tries to unset a variable, and if that "
+"fails,\n"
+"    tries to unset a function.\n"
+"    \n"
+"    Some variables cannot be unset; also see `readonly'.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or a NAME is read-only."
+msgstr ""
+"Limpa valores e atributos de variáveis e funções da consola.\n"
+"     \n"
+"     Para cada NOME, remove a correspondente variável ou função.\n"
+"     \n"
+"     Opções:\n"
+"        -f\ttrata cada NOME como função de consola\n"
+"        -v\ttrata cada NOME como variável de consola\n"
+"        -n\ttrata cada NOME como referência de nome e limpa a própria\n"
+"     \t\tvariável em vez da variável que referencia\n"
+"     \n"
+"     Sem opções, unset primeiro tenta limpar uma variável e, se falhar,\n"
+"     tenta limpar uma função.\n"
+"     \n"
+"     Algumas variáveis não podem ser limpas; veja também \"readonly\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"só de leitura."
+
+#: builtins.c:1159
+msgid ""
+"Set export attribute for shell variables.\n"
+"    \n"
+"    Marks each NAME for automatic export to the environment of subsequently\n"
+"    executed commands.  If VALUE is supplied, assign VALUE before "
+"exporting.\n"
+"    \n"
+"    Options:\n"
+"      -f\trefer to shell functions\n"
+"      -n\tremove the export property from each NAME\n"
+"      -p\tdisplay a list of all exported variables and functions\n"
+"    \n"
+"    An argument of `--' disables further option processing.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or NAME is invalid."
+msgstr ""
+"Define o atributo de exportação em variáveis de consola.\n"
+"     \n"
+"     Marca cada NOME para exportação automática para o ambiente de futuros\n"
+"     comandos executados. Se VALOR for fornecido, atribui VALOR antes de "
+"exportar.\n"
+"     \n"
+"     Opções:\n"
+"        -f\trefere funções de consola\n"
+"        -n\tremove a propriedade de exportação de cada NOME\n"
+"        -p\tmostra uma lista de todas as funções e variáveis exportadas\n"
+"     \n"
+"     Um argumento \"--\" desactiva futuro processamento da opção.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"inválido."
+
+#: builtins.c:1178
+msgid ""
+"Mark shell variables as unchangeable.\n"
+"    \n"
+"    Mark each NAME as read-only; the values of these NAMEs may not be\n"
+"    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n"
+"    before marking as read-only.\n"
+"    \n"
+"    Options:\n"
+"      -a\trefer to indexed array variables\n"
+"      -A\trefer to associative array variables\n"
+"      -f\trefer to shell functions\n"
+"      -p\tdisplay a list of all readonly variables or functions,\n"
+"    \t\tdepending on whether or not the -f option is given\n"
+"    \n"
+"    An argument of `--' disables further option processing.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or NAME is invalid."
+msgstr ""
+"Marca as variáveis de consola como imutáveis.\n"
+"     \n"
+"     Marca cada NOME como só de leitura; os valores destes NOMEs não podem\n"
+"     ser alterados por subsequentes atribuições. Se VALOR for fornecido,\n"
+"     atribui VALOR antes de marcar como só de leitura.\n"
+"    \n"
+"     Opções:\n"
+"        -a\trefere a variáveis de matriz indexadas\n"
+"        -A\trefere a variáveis de matriz associativas\n"
+"        -f\trefere a funções de consola\n"
+"        -p\tmostra uma lista de todas as variáveis ou funções só de "
+"leitura,\n"
+"     \t\tdependendo ou não se a opção -f é indicada\n"
+"     \n"
+"     Um argumento \"--\" desactiva futuro processamento da opção.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"inválido."
+
+#: builtins.c:1200
+msgid ""
+"Shift positional parameters.\n"
+"    \n"
+"    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n"
+"    not given, it is assumed to be 1.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless N is negative or greater than $#."
+msgstr ""
+"Deslocar parâmetros posicionais.\n"
+"     \n"
+"     Renomear os parâmetros posicionais $N+1,$N+2 ... para $1,$2 ... Se N\n"
+"     for omitido, presume-se como 1.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que N seja negativo ou maior que $#."
+
+#: builtins.c:1212 builtins.c:1227
+msgid ""
+"Execute commands from a file in the current shell.\n"
+"    \n"
+"    Read and execute commands from FILENAME in the current shell.  The\n"
+"    entries in $PATH are used to find the directory containing FILENAME.\n"
+"    If any ARGUMENTS are supplied, they become the positional parameters\n"
+"    when FILENAME is executed.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed in FILENAME; fails if\n"
+"    FILENAME cannot be read."
+msgstr ""
+"Executa comandos de um ficheiro na consola actual.\n"
+"     \n"
+"     Lê e execute comandos do NOMEFICH na consola actual. As\n"
+"     entradas em $PATH são usadas para encontrar a pasta contendo NOMEFICH.\n"
+"     Se nenhum ARGUMENTO for fornecido,tornam-se parâmetros posicionais\n"
+"     quando NOMEFICH é executado.\n"
+"    \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado em NOMEFICH; falha se\n"
+"     NOMEFICH não pode ser lido."
+
+#: builtins.c:1243
+msgid ""
+"Suspend shell execution.\n"
+"    \n"
+"    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
+"    Unless forced, login shells cannot be suspended.\n"
+"    \n"
+"    Options:\n"
+"      -f\tforce the suspend, even if the shell is a login shell\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless job control is not enabled or an error occurs."
+msgstr ""
+"Suspende a execução da consola.\n"
+"     \n"
+"     Suspende a execução desta consola até receber um sinal SIGCONT.\n"
+"     Se não forem forçadas, as consolas com sessão não podem ser suspensas.\n"
+"     \n"
+"     Opções:\n"
+"        -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou "
+"ocorra um erro."
+
+#: builtins.c:1259
+msgid ""
+"Evaluate conditional expression.\n"
+"    \n"
+"    Exits with a status of 0 (true) or 1 (false) depending on\n"
+"    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n"
+"    expressions are often used to examine the status of a file.  There\n"
+"    are string operators and numeric comparison operators as well.\n"
+"    \n"
+"    The behavior of test depends on the number of arguments.  Read the\n"
+"    bash manual page for the complete specification.\n"
+"    \n"
+"    File operators:\n"
+"    \n"
+"      -a FILE        True if file exists.\n"
+"      -b FILE        True if file is block special.\n"
+"      -c FILE        True if file is character special.\n"
+"      -d FILE        True if file is a directory.\n"
+"      -e FILE        True if file exists.\n"
+"      -f FILE        True if file exists and is a regular file.\n"
+"      -g FILE        True if file is set-group-id.\n"
+"      -h FILE        True if file is a symbolic link.\n"
+"      -L FILE        True if file is a symbolic link.\n"
+"      -k FILE        True if file has its `sticky' bit set.\n"
+"      -p FILE        True if file is a named pipe.\n"
+"      -r FILE        True if file is readable by you.\n"
+"      -s FILE        True if file exists and is not empty.\n"
+"      -S FILE        True if file is a socket.\n"
+"      -t FD          True if FD is opened on a terminal.\n"
+"      -u FILE        True if the file is set-user-id.\n"
+"      -w FILE        True if the file is writable by you.\n"
+"      -x FILE        True if the file is executable by you.\n"
+"      -O FILE        True if the file is effectively owned by you.\n"
+"      -G FILE        True if the file is effectively owned by your group.\n"
+"      -N FILE        True if the file has been modified since it was last "
+"read.\n"
+"    \n"
+"      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n"
+"                       modification date).\n"
+"    \n"
+"      FILE1 -ot FILE2  True if file1 is older than file2.\n"
+"    \n"
+"      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n"
+"    \n"
+"    String operators:\n"
+"    \n"
+"      -z STRING      True if string is empty.\n"
+"    \n"
+"      -n STRING\n"
+"         STRING      True if string is not empty.\n"
+"    \n"
+"      STRING1 = STRING2\n"
+"                     True if the strings are equal.\n"
+"      STRING1 != STRING2\n"
+"                     True if the strings are not equal.\n"
+"      STRING1 < STRING2\n"
+"                     True if STRING1 sorts before STRING2 "
+"lexicographically.\n"
+"      STRING1 > STRING2\n"
+"                     True if STRING1 sorts after STRING2 lexicographically.\n"
+"    \n"
+"    Other operators:\n"
+"    \n"
+"      -o OPTION      True if the shell option OPTION is enabled.\n"
+"      -v VAR         True if the shell variable VAR is set.\n"
+"      -R VAR         True if the shell variable VAR is set and is a name\n"
+"                     reference.\n"
+"      ! EXPR         True if expr is false.\n"
+"      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
+"      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
+"    \n"
+"      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n"
+"                     -lt, -le, -gt, or -ge.\n"
+"    \n"
+"    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
+"    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
+"    than ARG2.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
+"    false or an invalid argument is given."
+msgstr ""
+"Avalia a expressão condicional.\n"
+"     \n"
+"     Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n"
+"     avaliação de EXPR. As expressões podem ser unárias ou binárias. "
+"Expressões\n"
+"     uinárias são frequentemente usadas para examinar o estado de um "
+"ficheiro. Há\n"
+"     também operadores de cadeias e operadores de comparação numérica.\n"
+"     \n"
+"     O comportamento do teste depende do número de argumentos. Leia a\n"
+"     página do manual do bash para a especificação completa.\n"
+"     \n"
+"     Operadores de ficheiros:\n"
+"     \n"
+"        -a FICHEIRO     Verdadeiro se o ficheiro existir.\n"
+"        -b FICHEIRO     Verdadeiro se o ficheiro for bloqueio especial.\n"
+"        -c FICHEIRO     Verdadeiro se o ficheiro for especial de "
+"caracteres.\n"
+"        -d FICHEIRO     Verdadeiro se o ficheiro for uma pasta.\n"
+"        -e FICHEIRO     Verdadeiro se o ficheiro existir.\n"
+"        -f FICHEIRO     Verdadeiro se o ficheiro existe e é um ficheiro "
+"normal.\n"
+"        -g FICHEIRO     Verdadeiro se o ficheiro for set-group-id.\n"
+"        -h FICHEIRO     Verdadeiro se o ficheiro for uma ligação simbólica.\n"
+"        -L FICHEIRO     Verdadeiro se o ficheiro for uma ligação simbólica.\n"
+"        -k FICHEIRO     Verdadeiro se o ficheiro tiver o bit \"sticky\" "
+"definido.\n"
+"        -p FICHEIRO     Verdadeiro se o ficheiro for um pipe com nome.\n"
+"        -r FICHEIRO     Verdadeiro se o ficheiro for legível.\n"
+"        -s FICHEIRO     Verdadeiro se o ficheiro existe e não está vazio.\n"
+"        -S FICHEIRO     Verdadeiro se o ficheiro for um socket.\n"
+"        -t FD             Verdadeiro se FD for aberto num terminal.\n"
+"        -u FICHEIRO     Verdadeiro se o ficheiro for set-user-id.\n"
+"        -w FICHEIRO     Verdadeiro se o ficheiro for gravável por si.\n"
+"        -x FICHEIRO     Verdadeiro se o ficheiro for executável por si.\n"
+"        -O FICHEIRO     Verdadeiro se o ficheiro for efectivamente sua "
+"propriedade.\n"
+"        -G FICHEIRO     Verdadeiro se o ficheiro for efectivamente "
+"propriedade do seu grupo.\n"
+"        -N FICHEIRO     Verdadeiro se o ficheiro foi modificado desde a "
+"última vez que foi lido.\n"
+"     \n"
+"         FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo "
+"que\n"
+"                                         o ficheiro2 (de acordo com a data "
+"de modificação).\n"
+"     \n"
+"         FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que "
+"o ficheiro2.\n"
+"     \n"
+"         FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação "
+"rígida a file2.\n"
+"     \n"
+"     Operadores de cadeias:\n"
+"     \n"
+"         -z CADEIA        Verdadeiro se a cadeia estiver vazia.\n"
+"     \n"
+"         -n CADEIA\n"
+"             CADEIA        Verdadeiro se a cadeia não estiver vazia.\n"
+"     \n"
+"         CADEIA1 = CADEIA2\n"
+"                             Verdadeiro se as cadeias são iguais.\n"
+"         CADEIA1 != CADEIA2\n"
+"                             Verdadeiro se as cadeias não são iguais.\n"
+"         CADEIA1 < CADEIA2\n"
+"                             Verdadeiro se CADEIA1 ficar antes de CADEIA2 "
+"lexicamente.\n"
+"         CADEIA1 > CADEIA2\n"
+"                             Verdadeiro se CADEIA1 ficar após CADEIA2 "
+"lexicamente.\n"
+"     \n"
+"     Outros operadores:\n"
+"     \n"
+"        -o OPÇÃO         Verdadeiro se a opção de consola OPÇÃO está "
+"activada.\n"
+"        -v VAR            Verdadeiro se a variável de consola VAR estiver "
+"definida.\n"
+"        -R VAR            Verdadeiro se a variável de consola VAR estiver "
+"definida e for um nome\n"
+"                            referência.\n"
+"        ! EXPR            Verdadeiro se EXPR for falso.\n"
+"        EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n"
+"        EXPR1 -o EXPR2 Verdadeiro se EXPR1 OU EXPR2 forem verdadeiros.\n"
+"     \n"
+"        arg1 OP arg2    Testes aritméticos. OP é um de -eq, -ne,\n"
+"                           -lt, -le, -gt, ou -ge.\n"
+"     \n"
+"     Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, "
+"não\n"
+"     igual, menor que, menor ou igual que, maior que ou maior ou igual que\n"
+"     ARG2.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR "
+"for\n"
+"     avaliado como falso ou for indicado um argumento inválido."
+
+#: builtins.c:1341
+msgid ""
+"Evaluate conditional expression.\n"
+"    \n"
+"    This is a synonym for the \"test\" builtin, but the last argument must\n"
+"    be a literal `]', to match the opening `['."
+msgstr ""
+"Avalia uma expressão condicional.\n"
+"     \n"
+"     Este é um sinónimo para o interno \"test\", mas o último argumento tem\n"
+"     de ser um \"]\" literal, para fechar o \"[\" aberto."
+
+#: builtins.c:1350
+msgid ""
+"Display process times.\n"
+"    \n"
+"    Prints the accumulated user and system times for the shell and all of "
+"its\n"
+"    child processes.\n"
+"    \n"
+"    Exit Status:\n"
+"    Always succeeds."
+msgstr ""
+"Mostrar tempos de processo.\n"
+"     \n"
+"     Imprime os tempos acumulados de utilizador e sistema para a consola e "
+"todos\n"
+"     os seus processos-filho.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Sempre com sucesso."
+
+#: builtins.c:1362
+msgid ""
+"Trap signals and other events.\n"
+"    \n"
+"    Defines and activates handlers to be run when the shell receives "
+"signals\n"
+"    or other conditions.\n"
+"    \n"
+"    ARG is a command to be read and executed when the shell receives the\n"
+"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
+"    is supplied) or `-', each specified signal is reset to its original\n"
+"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
+"    shell and by the commands it invokes.\n"
+"    \n"
+"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
+"If\n"
+"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  "
+"If\n"
+"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
+"a\n"
+"    script run by the . or source builtins finishes executing.  A "
+"SIGNAL_SPEC\n"
+"    of ERR means to execute ARG each time a command's failure would cause "
+"the\n"
+"    shell to exit when the -e option is enabled.\n"
+"    \n"
+"    If no arguments are supplied, trap prints the list of commands "
+"associated\n"
+"    with each signal.\n"
+"    \n"
+"    Options:\n"
+"      -l\tprint a list of signal names and their corresponding numbers\n"
+"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
+"    \n"
+"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
+"number.\n"
+"    Signal names are case insensitive and the SIG prefix is optional.  A\n"
+"    signal may be sent to the shell with \"kill -signal $$\".\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
+msgstr ""
+"Capturar sinais e outros eventos.\n"
+"     \n"
+"     Define e activa gestores a executar quando a consola recebe sinais ou\n"
+"     outras condições.\n"
+"     \n"
+"     ARG é um comando a ser lido e executado quando a consola recebe o(s)\n"
+"     sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n"
+"     for fornecido) ou \"-\", cada sinal especificado é reposto no seu "
+"valor\n"
+"     original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n"
+"     pela consola e pelos comandos que chama.\n"
+"     \n"
+"     Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n"
+"     SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n"
+"     SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de "
+"consola\n"
+"     ou um script executado pelo . ou os internos terminam a execução. "
+"SIGNAL_SPEC\n"
+"     de ERR significa executar ARG cada vez que uma falha do comando faça "
+"com\n"
+"     que a consola sair quando a opção -e está activa.\n"
+"     \n"
+"     Se nenhum argumento for fornecido, trap imprime a lista de comandos \n"
+"     associados a cada sinal.\n"
+"     \n"
+"     Opções:\n"
+"        -l imprime uma lista de nomes de sinais e seus números "
+"correspondentes\n"
+"        -p mostra os comandos trap associados a cada SIGNAL_SPEC\n"
+"     \n"
+"     Cada SIGNAL_SPEC é um nome de sinal em <signal.h> ou um número de "
+"sinal.\n"
+"     Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é "
+"opcional.\n"
+"     Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma "
+"opção inválida."
+
+#: builtins.c:1398
+msgid ""
+"Display information about command type.\n"
+"    \n"
+"    For each NAME, indicate how it would be interpreted if used as a\n"
+"    command name.\n"
+"    \n"
+"    Options:\n"
+"      -a\tdisplay all locations containing an executable named NAME;\n"
+"    \t\tincludes aliases, builtins, and functions, if and only if\n"
+"    \t\tthe `-p' option is not also used\n"
+"      -f\tsuppress shell function lookup\n"
+"      -P\tforce a PATH search for each NAME, even if it is an alias,\n"
+"    \t\tbuiltin, or function, and returns the name of the disk file\n"
+"    \t\tthat would be executed\n"
+"      -p\treturns either the name of the disk file that would be executed,\n"
+"    \t\tor nothing if `type -t NAME' would not return `file'\n"
+"      -t\toutput a single word which is one of `alias', `keyword',\n"
+"    \t\t`function', `builtin', `file' or `', if NAME is an alias,\n"
+"    \t\tshell reserved word, shell function, shell builtin, disk file,\n"
+"    \t\tor not found, respectively\n"
+"    \n"
+"    Arguments:\n"
+"      NAME\tCommand name to be interpreted.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success if all of the NAMEs are found; fails if any are not "
+"found."
+msgstr ""
+"Mostra informações sobre o tipo de comando.\n"
+"     \n"
+"     Para cada NOME, indica como seria interpretado se usado como um\n"
+"     nome de comando.\n"
+"     \n"
+"     Opções:\n"
+"        -a\tmostra todos os locais contendo um executável chamado NOME;\n"
+"     \t\tinclui aliás, internos e funções, se e só se a opção \"-p\"\n"
+"     \t\ttambém não for usada\n"
+"        -f\tsuprime a procura da função de consola\n"
+"        -P\tforça uma procura em PATH para cada NOME, mesmo que seja um\n"
+"     \t\taliás, interno ou função e devolve o nome do ficheiro em disco\n"
+"     \t\tque seria executado\n"
+"        -p\tdevolve o nome do ficheiro em disco que seria executado,\n"
+"     \t\tou nada se \"type -t NOME\" não devolver \"file\"\n"
+"        -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", "
+"\"function\"\n"
+"     \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra "
+"reservada\n"
+"     \t\tda consola, função de consola, interno da consola, ficheiro em\n"
+"     \t\tdisco, ou não encontrados, respectivamente\n"
+"     \n"
+"     Argumentos:\n"
+"        Nome do comando NOME a interpretar.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não "
+"for."
+
+#: builtins.c:1429
+msgid ""
+"Modify shell resource limits.\n"
+"    \n"
+"    Provides control over the resources available to the shell and "
+"processes\n"
+"    it creates, on systems that allow such control.\n"
+"    \n"
+"    Options:\n"
+"      -S\tuse the `soft' resource limit\n"
+"      -H\tuse the `hard' resource limit\n"
+"      -a\tall current limits are reported\n"
+"      -b\tthe socket buffer size\n"
+"      -c\tthe maximum size of core files created\n"
+"      -d\tthe maximum size of a process's data segment\n"
+"      -e\tthe maximum scheduling priority (`nice')\n"
+"      -f\tthe maximum size of files written by the shell and its children\n"
+"      -i\tthe maximum number of pending signals\n"
+"      -k\tthe maximum number of kqueues allocated for this process\n"
+"      -l\tthe maximum size a process may lock into memory\n"
+"      -m\tthe maximum resident set size\n"
+"      -n\tthe maximum number of open file descriptors\n"
+"      -p\tthe pipe buffer size\n"
+"      -q\tthe maximum number of bytes in POSIX message queues\n"
+"      -r\tthe maximum real-time scheduling priority\n"
+"      -s\tthe maximum stack size\n"
+"      -t\tthe maximum amount of cpu time in seconds\n"
+"      -u\tthe maximum number of user processes\n"
+"      -v\tthe size of virtual memory\n"
+"      -x\tthe maximum number of file locks\n"
+"      -P\tthe maximum number of pseudoterminals\n"
+"      -T\tthe maximum number of threads\n"
+"    \n"
+"    Not all options are available on all platforms.\n"
+"    \n"
+"    If LIMIT is given, it is the new value of the specified resource; the\n"
+"    special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
+"    current soft limit, the current hard limit, and no limit, respectively.\n"
+"    Otherwise, the current value of the specified resource is printed.  If\n"
+"    no option is given, then -f is assumed.\n"
+"    \n"
+"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
+"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
+"    number of processes.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or an error occurs."
+msgstr ""
+"Modifica os limites de recursos da consola.\n"
+"     \n"
+"     Fornece controlo sobre os recursos disponíveis para consola e "
+"processos\n"
+"     que cria, em sistemas que permitem esse controlo.\n"
+"     \n"
+"     Opções:\n"
+"        -S\tusa o limite de recursos \"soft\"\n"
+"        -H\tusa o limite de recursos \"hard\"\n"
+"        -a\ttodos os limites actuais são reportados\n"
+"        -b\to tamanho do buffer de socket\n"
+"        -c\to tamanho máximo dos ficheiros núcleo criados\n"
+"        -d\to tamanho máximo do segmento de dados de um processo\n"
+"        -e\ta prioridade máxima de agendamento (\"nice\")\n"
+"        -f\to tamanho máximo dos ficheiros escritos pela consola e seus "
+"filhos\n"
+"        -i\to número máximo de sinais pendentes\n"
+"        -k\to número máximo de kqueues alocados para este processo\n"
+"        -l\to tamanho máximo que um processo pode bloquear na memória\n"
+"        -m\to tamanho máximo do conjunto residente\n"
+"        -n\to número máximo de descritores de ficheiros abertos\n"
+"        -p\to tamanho do buffer do pipe\n"
+"        -q\to número máximo de bytes nas filas de mensagens POSIX\n"
+"        -r\ta prioridade máxima de programação em tempo real\n"
+"        -s\to tamanho máximo da pilha\n"
+"        -t\ta quantidade máxima de tempo de CPU em segundos\n"
+"        -u\to número máximo de processos do utilizador\n"
+"        -v\to tamanho da memória virtual\n"
+"        -x\to número máximo de bloqueios de ficheiros\n"
+"        -P\to número máximo de pseudo-terminais\n"
+"        -T\to número máximo de threads\n"
+"     \n"
+"     Nem todas as opções estão disponíveis em todas as plataformas.\n"
+"     \n"
+"     Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n"
+"     valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n"
+"     olimite flexível actual, o limite rígido actual e nenhum limite, "
+"respectivamente.\n"
+"     Caso contrário, é imprimido o valor actual do recurso especificado. Se\n"
+"     nenhuma opção for indicada, então -f é assumido.\n"
+"     \n"
+"     Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em "
+"segundos,\n"
+"     -p, que é em incrementos de 512 bytes e -u, que é um número de "
+"processos\n"
+"     sem escala.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que seja indicada uma opção inválida ou "
+"ocorra um erro."
+
+#: builtins.c:1479
+msgid ""
+"Display or set file mode mask.\n"
+"    \n"
+"    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n"
+"    the current value of the mask.\n"
+"    \n"
+"    If MODE begins with a digit, it is interpreted as an octal number;\n"
+"    otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
+"    \n"
+"    Options:\n"
+"      -p\tif MODE is omitted, output in a form that may be reused as input\n"
+"      -S\tmakes the output symbolic; otherwise an octal number is output\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless MODE is invalid or an invalid option is given."
+msgstr ""
+"Mostrar ou definir a máscara do modo de ficheiro.\n"
+"     \n"
+"     Define a máscara do utilizador de criação de ficheiro para MODO. Se "
+"MODO\n"
+"     for omitido, imprime o valor actual da máscara.\n"
+"     \n"
+"     Se MODO começa com um dígito, é interpretado como um número octal;\n"
+"     caso contrário, é uma cadeia de modo simbólico como a aceite por chmod"
+"(1).\n"
+"     \n"
+"     Opções:\n"
+"        -p\tse MODO for omitido, saída de forma a que possa ser reutilizado "
+"como entrada\n"
+"        -S\ttorna a saída simbólica; caso contrário, a saída é um número "
+"octal\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que MODO seja inválido ou indique uma opção "
+"inválida."
+
+#: builtins.c:1499
+msgid ""
+"Wait for job completion and return exit status.\n"
+"    \n"
+"    Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
+"    job specification, and reports its termination status.  If ID is not\n"
+"    given, waits for all currently active child processes, and the return\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
+"    in that job's pipeline.\n"
+"    \n"
+"    If the -n option is supplied, waits for the next job to terminate and\n"
+"    returns its exit status.\n"
+"    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
+"    option is given."
+msgstr ""
+"Aguarda a conclusão da tarefa e devolve o estado de saída.\n"
+"     \n"
+"     Espera por cada processo identificado por uma ID, que pode ser uma ID "
+"de\n"
+"     processo ou uma especificação de tarefa e reporta o estado final. Se "
+"não\n"
+"     for dada uma ID, aguarda por todos os processos-filho actualmente "
+"activos e o\n"
+"     estado de saída é zero. Se ID for uma especificação de tarefa, espera "
+"por\n"
+"     todos os processos no pipeline da tarefa.\n"
+"     \n"
+"     Se a opção -n for fornecida, espera que a próxima tarefa termine e\n"
+"     devolve seu estado de saída.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado da última ID; falha se a ID for inválida ou for "
+"indicada\n"
+"     uma opção inválida."
+
+#: builtins.c:1523
+msgid ""
+"Wait for process completion and return exit status.\n"
+"    \n"
+"    Waits for each process specified by a PID and reports its termination "
+"status.\n"
+"    If PID is not given, waits for all currently active child processes,\n"
+"    and the return status is zero.  PID must be a process ID.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last PID; fails if PID is invalid or an "
+"invalid\n"
+"    option is given."
+msgstr ""
+"Aguarda a conclusão do processo e devolve o estado de saída.\n"
+"     \n"
+"     Espera por cada processo especificado por uma PID e reporta o estado "
+"final.\n"
+"     Se PID não for dada, aguarda por todos os processos-filho actualmente "
+"activos,\n"
+"     e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado da última PID; falha se PID for inválido ou for "
+"indicada\n"
+"     uma opção inválida."
+
+#: builtins.c:1538
+msgid ""
+"Execute commands for each member in a list.\n"
+"    \n"
+"    The `for' loop executes a sequence of commands for each member in a\n"
+"    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
+"    assumed.  For each element in WORDS, NAME is set to that element, and\n"
+"    the COMMANDS are executed.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Executa comandos para cada membro numa lista.\n"
+"     \n"
+"     O ciclo \"for\" executa uma seqüência de comandos para cada membro "
+"numa\n"
+"     lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@"
+"\" \" é\n"
+"     assumido. Para cada elemento em PALAVRAS, NOME está definido para "
+"esseelemento,\n"
+"     e os COMANDOS são executados.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1552
+msgid ""
+"Arithmetic for loop.\n"
+"    \n"
+"    Equivalent to\n"
+"    \t(( EXP1 ))\n"
+"    \twhile (( EXP2 )); do\n"
+"    \t\tCOMMANDS\n"
+"    \t\t(( EXP3 ))\n"
+"    \tdone\n"
+"    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n"
+"    omitted, it behaves as if it evaluates to 1.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Ciclo for aritmético.\n"
+"     \n"
+"     Equivalente a\n"
+"     \t(( EXP1 ))\n"
+"     \twhile (( EXP2 )); do\n"
+"     \t\tCOMANDOS\n"
+"     \t\t(( EXP3 ))\n"
+"     \tdone\n"
+"     EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for "
+"omitida\n"
+"     comporta-se como se fosse avaliada como 1.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1570
+msgid ""
+"Select words from a list and execute commands.\n"
+"    \n"
+"    The WORDS are expanded, generating a list of words.  The\n"
+"    set of expanded words is printed on the standard error, each\n"
+"    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n"
+"    is assumed.  The PS3 prompt is then displayed and a line read\n"
+"    from the standard input.  If the line consists of the number\n"
+"    corresponding to one of the displayed words, then NAME is set\n"
+"    to that word.  If the line is empty, WORDS and the prompt are\n"
+"    redisplayed.  If EOF is read, the command completes.  Any other\n"
+"    value read causes NAME to be set to null.  The line read is saved\n"
+"    in the variable REPLY.  COMMANDS are executed after each selection\n"
+"    until a break command is executed.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Selecciona palavras de uma lista e executa comandos.\n"
+"     \n"
+"     As PALAVRAS são expandidas, gerando uma lista de palavras. O\n"
+"     conjunto de palavras expandidas é imprimido no erro padrão, cada\n"
+"     um precedido por um número. Se \"in PALAVRAS\" não estiver presente,\n"
+"     \" in \"$@\" \" é assumido. O prompt PS3 é então exibido e é lida uma\n"
+"     linha da entrada padrão. Se a linha for constituída pelo número\n"
+"     correspondente a uma das palavras mostradas, NOME é definido para\n"
+"     essa palavra. Se a linha estiver vazia, PALAVRAS e o prompt são\n"
+"     mostrados de novo. Se for lido EOF, o comando é concluído. Qualquer\n"
+"     outro valor lido faz com que NOME seja definido como nulo. A linha\n"
+"     lida é gravada na variável RESPOSTA. COMANDOS são executados após cada\n"
+"     selecção até que um comando de interrupção seja executado.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1591
+msgid ""
+"Report time consumed by pipeline's execution.\n"
+"    \n"
+"    Execute PIPELINE and print a summary of the real time, user CPU time,\n"
+"    and system CPU time spent executing PIPELINE when it terminates.\n"
+"    \n"
+"    Options:\n"
+"      -p\tprint the timing summary in the portable Posix format\n"
+"    \n"
+"    The value of the TIMEFORMAT variable is used as the output format.\n"
+"    \n"
+"    Exit Status:\n"
+"    The return status is the return status of PIPELINE."
+msgstr ""
+"Reporta o tempo consumido pela execução do pipeline.\n"
+"     \n"
+"     Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n"
+"     utilizador e tempo de CPU do sistema na execução de PIPELINE quando "
+"terminar.\n"
+"     \n"
+"     Opções:\n"
+"        -p\timprime o resumo do tempo no formato portátil Posix\n"
+"    \n"
+"     O valor da variável FORMATOTEMPO é usado como formato de saída.\n"
+"    \n"
+"     Estado de saída:\n"
+"     O estado devolvido é o estado de PIPELINE."
+
+#: builtins.c:1608
+msgid ""
+"Execute commands based on pattern matching.\n"
+"    \n"
+"    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n"
+"    `|' is used to separate multiple patterns.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Executea comandos baseado em comparação de padrões.\n"
+"     \n"
+"     Executar selectivamente COMANDOS baseado na comparação entre PALAVRA e\n"
+"     PADRÃO. \"|\" é usado para separar múltiplos padrões.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1620
+msgid ""
+"Execute commands based on conditional.\n"
+"    \n"
+"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
+"the\n"
+"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
+"is\n"
+"    executed in turn, and if its exit status is zero, the corresponding\n"
+"    `then COMMANDS' list is executed and the if command completes.  "
+"Otherwise,\n"
+"    the `else COMMANDS' list is executed, if present.  The exit status of "
+"the\n"
+"    entire construct is the exit status of the last command executed, or "
+"zero\n"
+"    if no condition tested true.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Executa comandos com base em condicional.\n"
+"     \n"
+"     A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n"
+"     executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif "
+"COMANDOS\"\n"
+"     é executado por sua vez e se o estado de saída for zero, a "
+"correspondente\n"
+"     lista \"then COMANDOS\" é executada e o comando if é concluído. De "
+"outra forma,\n"
+"     a lista \"else COMANDOS\" é executada, se presente. O estado de saída "
+"da\n"
+"     construção inteira é o estado de saída do último comando executado, ou "
+"zero\n"
+"     se nenhuma condição for verdadeira.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1637
+msgid ""
+"Execute commands as long as a test succeeds.\n"
+"    \n"
+"    Expand and execute COMMANDS as long as the final command in the\n"
+"    `while' COMMANDS has an exit status of zero.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Executa comandos enquanto o teste tiver sucesso.\n"
+"     \n"
+"     Expande e executa COMANDOS enquanto o comando final no ciclo\n"
+"     \"while COMANDOS\" tenha um estado de saída zero.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1649
+msgid ""
+"Execute commands as long as a test does not succeed.\n"
+"    \n"
+"    Expand and execute COMMANDS as long as the final command in the\n"
+"    `until' COMMANDS has an exit status which is not zero.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Executa comandos enquanto o teste não tiver sucesso.\n"
+"     \n"
+"     Expande e executa COMANDOS enquanto o comando final no ciclo\n"
+"     \"until COMANDOS\" tenha um estado de saída não zero.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1661
+msgid ""
+"Create a coprocess named NAME.\n"
+"    \n"
+"    Execute COMMAND asynchronously, with the standard output and standard\n"
+"    input of the command connected via a pipe to file descriptors assigned\n"
+"    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
+"    The default NAME is \"COPROC\".\n"
+"    \n"
+"    Exit Status:\n"
+"    The coproc command returns an exit status of 0."
+msgstr ""
+"Cria um co-processo chamado NOME.\n"
+"     \n"
+"     Executa COMANDO assincronamente, com a saída e a entrada padrão "
+"ligadas\n"
+"     via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n"
+"     variável de matriz NOME na consola em execução.\n"
+"     O NOME predefinido é \"COPROC\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     O comando coproc devolve um estado de saída 0."
+
+#: builtins.c:1675
+msgid ""
+"Define shell function.\n"
+"    \n"
+"    Create a shell function named NAME.  When invoked as a simple command,\n"
+"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
+"invoked,\n"
+"    the arguments are passed to the function as $1...$n, and the function's\n"
+"    name is in $FUNCNAME.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless NAME is readonly."
+msgstr ""
+"Define uma função de consola.\n"
+"     \n"
+"     Cria uma função de consola chamada NOME. Quando chamado como comando\n"
+"     simples, NOME executa COMANDOs no contexto da consola. Quando NOME é\n"
+"     invoked, os argumentos são passados à função como $1...$n e o nome da\n"
+"     função está em $FUNCNAME.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que NOME seja só de leitura."
+
+#: builtins.c:1689
+msgid ""
+"Group commands as a unit.\n"
+"    \n"
+"    Run a set of commands in a group.  This is one way to redirect an\n"
+"    entire set of commands.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the last command executed."
+msgstr ""
+"Agrupa comandos como uma unidade.\n"
+"     \n"
+"     Executa um conjunto de comandos num grupo. Esta é uma maneira de\n"
+"     redireccionar um conjunto completo de comandos.\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado do último comando executado."
+
+#: builtins.c:1701
+msgid ""
+"Resume job in foreground.\n"
+"    \n"
+"    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n"
+"    stopped or background job.  JOB_SPEC can specify either a job name\n"
+"    or a job number.  Following JOB_SPEC with a `&' places the job in\n"
+"    the background, as if the job specification had been supplied as an\n"
+"    argument to `bg'.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns the status of the resumed job."
+msgstr ""
+"Retoma a tarefa em primeiro plano.\n"
+"     \n"
+"     Equivalente ao argumento JOB_SPEC para o comando \"fg\". Retoma uma\n"
+"     tarefa parada ou em 2º plano. JOB_SPEC pode especificar um nome de\n"
+"     tarefa ou um número de tarefa. Pôr \"&\" a seguir a JOB_SPEC coloca a\n"
+"     tarefa em 2º plano, como se a especificação da tarefa tivesse sido\n"
+"     fornecida como um argumento para \"bg\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve o estado da tarefa retomada."
+
+#: builtins.c:1716
+msgid ""
+"Evaluate arithmetic expression.\n"
+"    \n"
+"    The EXPRESSION is evaluated according to the rules for arithmetic\n"
+"    evaluation.  Equivalent to \"let EXPRESSION\".\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
+msgstr ""
+"Avalia uma expressão aritmética.\n"
+"     \n"
+"     A expressão EXPRESSÃO é avaliada de acordo com as regras aritméticas.\n"
+"     Equivalente a \"let EXPRESSÃO\".\n"
+"     \n"
+"     Estado de saída:\n"
+"     Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0."
+
+#: builtins.c:1728
+msgid ""
+"Execute conditional command.\n"
+"    \n"
+"    Returns a status of 0 or 1 depending on the evaluation of the "
+"conditional\n"
+"    expression EXPRESSION.  Expressions are composed of the same primaries "
+"used\n"
+"    by the `test' builtin, and may be combined using the following "
+"operators:\n"
+"    \n"
+"      ( EXPRESSION )\tReturns the value of EXPRESSION\n"
+"      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
+"      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
+"      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
+"    \n"
+"    When the `==' and `!=' operators are used, the string to the right of\n"
+"    the operator is used as a pattern and pattern matching is performed.\n"
+"    When the `=~' operator is used, the string to the right of the operator\n"
+"    is matched as a regular expression.\n"
+"    \n"
+"    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
+"    determine the expression's value.\n"
+"    \n"
+"    Exit Status:\n"
+"    0 or 1 depending on value of EXPRESSION."
+msgstr ""
+"Executa o comando condicional.\n"
+"     \n"
+"     Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n"
+"     condicional EXPRESSÃO. As expressões são compostas pelas mesmas "
+"primárias\n"
+"     usadas pelo interno \"test\" e pode ser combinado com os seguintes "
+"operadores:\n"
+"     \n"
+"        ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n"
+"        ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n"
+"        EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão "
+"falso\n"
+"        EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; "
+"senão falso\n"
+"     \n"
+"     Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do "
+"operador\n"
+"     é usada como padrão e é feita a comparação de padrões. Quando o "
+"operador \"= ~\"\n"
+"     é usado, a cadeia à direita do operador é comparada como expressão "
+"regular.\n"
+"     \n"
+"     Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n"
+"     determinar o valor da expressão."
+
+#: builtins.c:1754
+msgid ""
+"Common shell variable names and usage.\n"
+"    \n"
+"    BASH_VERSION\tVersion information for this Bash.\n"
+"    CDPATH\tA colon-separated list of directories to search\n"
+"    \t\tfor directories given as arguments to `cd'.\n"
+"    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
+"    \t\tbe ignored by pathname expansion.\n"
+"    HISTFILE\tThe name of the file where your command history is stored.\n"
+"    HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
+"    HISTSIZE\tThe maximum number of history lines that a running\n"
+"    \t\tshell can access.\n"
+"    HOME\tThe complete pathname to your login directory.\n"
+"    HOSTNAME\tThe name of the current host.\n"
+"    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
+"    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
+"    \t\tcharacter as the sole input.  If set, then the value\n"
+"    \t\tof it is the number of EOF characters that can be seen\n"
+"    \t\tin a row on an empty line before the shell will exit\n"
+"    \t\t(default 10).  When unset, EOF signifies the end of input.\n"
+"    MACHTYPE\tA string describing the current system Bash is running on.\n"
+"    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
+"    MAILPATH\tA colon-separated list of filenames which Bash checks\n"
+"    \t\tfor new mail.\n"
+"    OSTYPE\tThe version of Unix this version of Bash is running on.\n"
+"    PATH\tA colon-separated list of directories to search when\n"
+"    \t\tlooking for commands.\n"
+"    PROMPT_COMMAND\tA command to be executed before the printing of each\n"
+"    \t\tprimary prompt.\n"
+"    PS1\t\tThe primary prompt string.\n"
+"    PS2\t\tThe secondary prompt string.\n"
+"    PWD\t\tThe full pathname of the current directory.\n"
+"    SHELLOPTS\tA colon-separated list of enabled shell options.\n"
+"    TERM\tThe name of the current terminal type.\n"
+"    TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
+"    \t\t`time' reserved word.\n"
+"    auto_resume\tNon-null means a command word appearing on a line by\n"
+"    \t\titself is first looked for in the list of currently\n"
+"    \t\tstopped jobs.  If found there, that job is foregrounded.\n"
+"    \t\tA value of `exact' means that the command word must\n"
+"    \t\texactly match a command in the list of stopped jobs.  A\n"
+"    \t\tvalue of `substring' means that the command word must\n"
+"    \t\tmatch a substring of the job.  Any other value means that\n"
+"    \t\tthe command must be a prefix of a stopped job.\n"
+"    histchars\tCharacters controlling history expansion and quick\n"
+"    \t\tsubstitution.  The first character is the history\n"
+"    \t\tsubstitution character, usually `!'.  The second is\n"
+"    \t\tthe `quick substitution' character, usually `^'.  The\n"
+"    \t\tthird is the `history comment' character, usually `#'.\n"
+"    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
+"    \t\tcommands should be saved on the history list.\n"
+msgstr ""
+"Nomes e uso comuns de variáveis de consola.\n"
+"    \n"
+"    BASH_VERSION\tInformações de versão para esta bash.\n"
+"    CDPATH\tUma lista de pastas separadas por \":\" para procurar\n"
+"    \t\tpor pastas dadas como argumentos a \"cd\".\n"
+"    GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes "
+"de\n"
+"    ficheiro a ignorar pela expansão do nome do caminho.\n"
+"    HISTFILE\tNome de ficheiro onde o seu histórico de comandos é "
+"armazenado.\n"
+"    HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n"
+"    HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n"
+"    \t\texecução pode aceder.\n"
+"    HOME\tNome completo do caminho para a pasta de início de sessão.\n"
+"    HOSTNAME\tNome do anfitrião actual.\n"
+"    HOSTTYPE\tTipo de CPU em que esta versão do Bash está em execução.\n"
+"    IGNOREEOF\tControla a acção da consola ao receber um carácter EOF\n"
+"    \t\tcomo única entrada. Se definido, então o seu valor é o\n"
+"    \t\tnúmero de caracteres EOF que podem ser vistos numa linha\n"
+"    \t\tvazia antes que a consola saia (predefinição 10).\n"
+"    \t\tQuando não definido, EOF significa o fim da entrada.\n"
+"    MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n"
+"    MAILCHECK\tFrequência, em segundos, com que a bash procura novo "
+"correio.\n"
+"    MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n"
+"    \t\tnovas mensagens.\n"
+"    OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n"
+"    PATH\tLista de pastas separadas por \":\" a procurar quando\n"
+"    \t\tprocura comandos.\n"
+"    PROMPT_COMMAND\tComando a executar antes da impressão de cada\n"
+"    \t\tprompt primário.\n"
+"    PS1\t\tCadeia do prompt primário.\n"
+"    PS2\t\tCadeia do prompt secundário\n"
+"    PWD\t\tCaminho completo da pasta actual.\n"
+"    SHELLOPTS\tLista separada por \":\" de opções da consola activadas.\n"
+"    TERM\tNome do tipo de terminal actual.\n"
+"    TIMEFORMAT\tFormato de saída para estatísticas de tempo mostradas\n"
+"    pela palavra reservada \"time\".\n"
+"    auto_resume\tNão-nulo significa que uma palavra de comando numa linha\n"
+"    \t\tpor si só é procurada primeiro na lista de tarefas actualmente\n"
+"    \t\tparadas. Se encontrado, a tarefa passa a primeiro plano. Um\n"
+"    \t\tvalor \"exact\" significa que a palavra de comando deve ser\n"
+"    \t\texactamente igual a um comando na lista de tarefas paradas.\n"
+"    \t\t\"substring\" significa que a palavra de comando deve ser igual\n"
+"    \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n"
+"    \t\to comando deve ser um prefixo de uma tarefa interrompida.\n"
+"    histchars\tCaracteres que controlam a expansão do histórico e "
+"substituições\n"
+"    \t\trápidas. O primeiro carácter é o carácter de subtituição do\n"
+"    \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n"
+"    \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n"
+"    \t\tnormalmente \"#\".\n"
+"    HISTIGNORE\tLista de padrões separada por \":\" usados para decidir "
+"quais\n"
+"    \t\tos comandos que devem ser gravados na lista de histórico.\n"
+
+#: builtins.c:1811
+msgid ""
+"Add directories to stack.\n"
+"    \n"
+"    Adds a directory to the top of the directory stack, or rotates\n"
+"    the stack, making the new top of the stack the current working\n"
+"    directory.  With no arguments, exchanges the top two directories.\n"
+"    \n"
+"    Options:\n"
+"      -n\tSuppresses the normal change of directory when adding\n"
+"    \t\tdirectories to the stack, so only the stack is manipulated.\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tRotates the stack so that the Nth directory (counting\n"
+"    \t\tfrom the left of the list shown by `dirs', starting with\n"
+"    \t\tzero) is at the top.\n"
+"    \n"
+"      -N\tRotates the stack so that the Nth directory (counting\n"
+"    \t\tfrom the right of the list shown by `dirs', starting with\n"
+"    \t\tzero) is at the top.\n"
+"    \n"
+"      dir\tAdds DIR to the directory stack at the top, making it the\n"
+"    \t\tnew current working directory.\n"
+"    \n"
+"    The `dirs' builtin displays the directory stack.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid argument is supplied or the directory\n"
+"    change fails."
+msgstr ""
+"Adiciona pastas à pilha.\n"
+"    \n"
+"    Adiciona uma pasta ao topo da pilha de pastas, ou roda a pilha\n"
+"    tornando o novo topo da pilha a actual pasta de trabalho.\n"
+"    Sem argumentos, troca as duas pastas de topo.\n"
+"    \n"
+"    Opções:\n"
+"      -n\tSuprime a alteração normal de pasta ao adicionar\n"
+"    pastas à pilha, para que só a pilha seja manipulada.\n"
+"    \n"
+"    Argumentos:\n"
+"      +N\tRoda a pilha de modo a que a N-ésima pasta (contando\n"
+"    \t\tda esquerda da lista mostrada por \"dirs\", começando por\n"
+"    \t\tzero) fique no topo.\n"
+"    \n"
+"      -N\tRoda a pilha de modo a que a N-ésima pasta (contando\n"
+"    \t\tda direita da lista mostrada por \"dirs\", começando por\n"
+"    \t\tzero) fique no topo.\n"
+"    \n"
+"      dir\tAdiciona DIR à pilha de pastas no topo, tornando-a a\n"
+"    \t\tnova pasta de trabalho actual.\n"
+"    \n"
+"    O interno \"dirs\" mostra a pilha de pastas.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique um argumento inválido ou a\n"
+"    troca de pastas falhe."
+
+#: builtins.c:1845
+msgid ""
+"Remove directories from stack.\n"
+"    \n"
+"    Removes entries from the directory stack.  With no arguments, removes\n"
+"    the top directory from the stack, and changes to the new top directory.\n"
+"    \n"
+"    Options:\n"
+"      -n\tSuppresses the normal change of directory when removing\n"
+"    \t\tdirectories from the stack, so only the stack is manipulated.\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tRemoves the Nth entry counting from the left of the list\n"
+"    \t\tshown by `dirs', starting with zero.  For example: `popd +0'\n"
+"    \t\tremoves the first directory, `popd +1' the second.\n"
+"    \n"
+"      -N\tRemoves the Nth entry counting from the right of the list\n"
+"    \t\tshown by `dirs', starting with zero.  For example: `popd -0'\n"
+"    \t\tremoves the last directory, `popd -1' the next to last.\n"
+"    \n"
+"    The `dirs' builtin displays the directory stack.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid argument is supplied or the directory\n"
+"    change fails."
+msgstr ""
+"Remove pastas da pilha.\n"
+"    \n"
+"    Remove entradas da pilha de pastas. Sem argumentos, remove\n"
+"    a pasta do topo da pilha e muda para a nova pasta superior.\n"
+"    \n"
+"     Opções:\n"
+"       -n\tSuprime a alteração normal de pasta ao remover\n"
+"     \t\tpastas da pilha, para que só a pilha seja manipulada.\n"
+"    \n"
+"     Argumentos:\n"
+"       +N\tRemove a N-ésima entrada contando da esquerda da lista\n"
+"    \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd +0\"\n"
+"    \t\tremove a primeira pasta, \"popd +1\" a segunda.\n"
+"    \n"
+"       -N\tRemove a N-ésima entrada contando da direita da lista\n"
+"    \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd -0\"\n"
+"    \t\tremove a última pasta, \"popd -1\" a penúltima.\n"
+"    \n"
+"     O interno \"dirs\" mostra a pilha de pastas.\n"
+"    \n"
+"     Estado de saída:\n"
+"     Devolve sucesso a não ser que indique um argumento inválido ou a troca\n"
+"     de pastas falhe."
+
+#: builtins.c:1875
+msgid ""
+"Display directory stack.\n"
+"    \n"
+"    Display the list of currently remembered directories.  Directories\n"
+"    find their way onto the list with the `pushd' command; you can get\n"
+"    back up through the list with the `popd' command.\n"
+"    \n"
+"    Options:\n"
+"      -c\tclear the directory stack by deleting all of the elements\n"
+"      -l\tdo not print tilde-prefixed versions of directories relative\n"
+"    \t\tto your home directory\n"
+"      -p\tprint the directory stack with one entry per line\n"
+"      -v\tprint the directory stack with one entry per line prefixed\n"
+"    \t\twith its position in the stack\n"
+"    \n"
+"    Arguments:\n"
+"      +N\tDisplays the Nth entry counting from the left of the list\n"
+"    \t\tshown by dirs when invoked without options, starting with\n"
+"    \t\tzero.\n"
+"    \n"
+"      -N\tDisplays the Nth entry counting from the right of the list\n"
+"    \t\tshown by dirs when invoked without options, starting with\n"
+"    \t\tzero.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or an error occurs."
+msgstr ""
+"Mostra a pilha de pastas.\n"
+"    \n"
+"    Mostra a lista de pastas actualmente lembradas. As pastas\n"
+"    entram na lista com o comando \"pushd\"; pode recuar na\n"
+"    lista com o comando \"popd\".\n"
+"    \n"
+"    Opções:\n"
+"      -c\tlimpa a pilha de pastas eliminando todos os elementos\n"
+"      -l\tnão imprime versões prefixadas com til de pastas relativas\n"
+"    \t\tà sua pasta inicial\n"
+"      -p\timprime a pilha de pastas com uma entrada por linha\n"
+"      -v\timprime a pilha de pastas com uma entrada por linha prefixada\n"
+"    \t\tcom a sua posição na pilha\n"
+"    \n"
+"    Argumentos:\n"
+"      +N\tMostra a N-ésima entrada contando da esquerda da lista\n"
+"    \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n"
+"    \t\tpor zero.\n"
+"    \n"
+"      -N\tMostra a N-ésima entrada contando da direita da lista\n"
+"    \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n"
+"    \t\tpor zero.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro"
+
+#: builtins.c:1906
+msgid ""
+"Set and unset shell options.\n"
+"    \n"
+"    Change the setting of each shell option OPTNAME.  Without any option\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
+"    \n"
+"    Options:\n"
+"      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
+"      -p\tprint each shell option with an indication of its status\n"
+"      -q\tsuppress output\n"
+"      -s\tenable (set) each OPTNAME\n"
+"      -u\tdisable (unset) each OPTNAME\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success if OPTNAME is enabled; fails if an invalid option is\n"
+"    given or OPTNAME is disabled."
+msgstr ""
+"Define e cancela opções de consola.\n"
+"    \n"
+"    Altera a definição de cada opção de consola OPTNOME. Sem qualquer\n"
+"    argumento, lista todas as opções de consola com indicação de definição\n"
+"    ou não de estado.\n"
+"    \n"
+"     Opções:\n"
+"       -o\trestringe OPTNOMEs para os definidos para uso com \"set -o\"\n"
+"       -p\timprime cada opção de consola com indicação do seu estado\n"
+"       -q\tsuprime a saída\n"
+"       -s\tactiva (define) cada OPTNOME\n"
+"       -u\tdesactiva (limpa) cada OPTNOME\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n"
+"    inválida ou OPTNOME esteja desactivada."
+
+#: builtins.c:1927
+msgid ""
+"Formats and prints ARGUMENTS under control of the FORMAT.\n"
+"    \n"
+"    Options:\n"
+"      -v var\tassign the output to shell variable VAR rather than\n"
+"    \t\tdisplay it on the standard output\n"
+"    \n"
+"    FORMAT is a character string which contains three types of objects: "
+"plain\n"
+"    characters, which are simply copied to standard output; character "
+"escape\n"
+"    sequences, which are converted and copied to the standard output; and\n"
+"    format specifications, each of which causes printing of the next "
+"successive\n"
+"    argument.\n"
+"    \n"
+"    In addition to the standard format specifications described in printf"
+"(1),\n"
+"    printf interprets:\n"
+"    \n"
+"      %b\texpand backslash escape sequences in the corresponding argument\n"
+"      %q\tquote the argument in a way that can be reused as shell input\n"
+"      %(fmt)T\toutput the date-time string resulting from using FMT as a "
+"format\n"
+"    \t        string for strftime(3)\n"
+"    \n"
+"    The format is re-used as necessary to consume all of the arguments.  If\n"
+"    there are fewer arguments than the format requires,  extra format\n"
+"    specifications behave as if a zero value or null string, as "
+"appropriate,\n"
+"    had been supplied.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or a write or "
+"assignment\n"
+"    error occurs."
+msgstr ""
+"Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n"
+"    \n"
+"    Opções:\n"
+"      -v var\tatribui a saída à variável de consola VAR em vez de\n"
+"    \t\tmostrar na saída padrão\n"
+"    \n"
+"    FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n"
+"    caracteres simples, que são simplesmente copiados para a saída padrão;\n"
+"    sequências de escape, que são convertidas e copiadas para a saída "
+"padrão; e\n"
+"    especificações de formato, cada uma das quais causa a impressão do "
+"argumento\n"
+"    sucessivo seguinte.\n"
+"    \n"
+"    Além das especificações de formato padrão descritas em printf (1),\n"
+"    printf interpreta:\n"
+"    \n"
+"      %b\texpande sequências de escape para o argumento correspondente\n"
+"      %q\tcita o argumento de forma a ser reutilizado como entrada de "
+"consola\n"
+"      %(fmt)T\timprime a cadeia de data-hora resultante da utilização do "
+"FMT\n"
+"    \t\tcomo formato para strftime(3)\n"
+"    \n"
+"    O formato é reutilizado conforme necessário para consumir todos os "
+"argumentos.\n"
+"    E se há menos argumentos do que o formato requer, especificações de "
+"formato\n"
+"    extra comportam-se como um valor zero ou uma cadeia nula, conforme "
+"apropriado,\n"
+"    tenha sido fornecido.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro de\n"
+"    escrita ou atribuição."
+
+#: builtins.c:1961
+#, fuzzy
+msgid ""
+"Specify how arguments are to be completed by Readline.\n"
+"    \n"
+"    For each NAME, specify how arguments are to be completed.  If no "
+"options\n"
+"    are supplied, existing completion specifications are printed in a way "
+"that\n"
+"    allows them to be reused as input.\n"
+"    \n"
+"    Options:\n"
+"      -p\tprint existing completion specifications in a reusable format\n"
+"      -r\tremove a completion specification for each NAME, or, if no\n"
+"    \t\tNAMEs are supplied, all completion specifications\n"
+"      -D\tapply the completions and actions as the default for commands\n"
+"    \t\twithout any specific completion defined\n"
+"      -E\tapply the completions and actions to \"empty\" commands --\n"
+"    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
+"    \n"
+"    When completion is attempted, the actions are applied in the order the\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or an error occurs."
+msgstr ""
+"Especifica como os argumentos devem ser concluídos por Readline.\n"
+"    \n"
+"    Para cada NOME, especifica como os argumentos devem ser concluídos. Se "
+"não \n"
+"    fornecer opções, as especificações de conclusão existentes são "
+"imprimidas\n"
+"    de forma a permitir que sejam reutilizados como entrada.\n"
+"    \n"
+"    Opções:\n"
+"      -p\timprime especificações de conclusão existentes em formato "
+"reutilizável\n"
+"      -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n"
+"    \t\tforneceu NOMEs, todas as especificações de conclusão\n"
+"      -D\taplicar as conclusões e acções como predefinição para comandos\n"
+"     \t\tsem qualquer especificação de conclusão definida\n"
+"      -E\taplicar as conclusões e acções a comandos -- \"vazios\"\n"
+"     \t\tconclusão tentada numa linha em branco\n"
+"      -I\taplica as conclusões e acções à palavra inicial (normalmente o\n"
+"    \t\tcomando)\n"
+"    \n"
+"    Quando a conclusão é tentada, as acções são aplicadas na ordem em que \n"
+"    as opções de letras maiúsculas estão listadas acima. Se forem fornecidas "
+"múltiplas\n"
+"    opções, a opção -D toma precedência sobre -E e ambas têm precedência "
+"sobre -I.\n"
+"    \n"
+"    Estado da saída: Devolve sucesso a não ser que seja fornecida uma opção\n"
+"    inválida ou ocorra um erro."
+
+#: builtins.c:1991
+msgid ""
+"Display possible completions depending on the options.\n"
+"    \n"
+"    Intended to be used from within a shell function generating possible\n"
+"    completions.  If the optional WORD argument is supplied, matches "
+"against\n"
+"    WORD are generated.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or an error occurs."
+msgstr ""
+"Mostrar possíveis conclusões, dependendo das opções.\n"
+"    \n"
+"    Destinado a ser usado de dentro de uma função de consola gerando\n"
+"    possíveis conclusões. Se o argumento PALAVRA opcional for fornecido,\n"
+"    são geradas comparações com PALAVRA.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
+
+#: builtins.c:2006
+msgid ""
+"Modify or display completion options.\n"
+"    \n"
+"    Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+"    the completion currently being executed.  If no OPTIONs are given, "
+"print\n"
+"    the completion options for each NAME or the current completion "
+"specification.\n"
+"    \n"
+"    Options:\n"
+"    \t-o option\tSet completion option OPTION for each NAME\n"
+"    \t-D\t\tChange options for the \"default\" command completion\n"
+"    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
+"    \n"
+"    Using `+o' instead of `-o' turns off the specified option.\n"
+"    \n"
+"    Arguments:\n"
+"    \n"
+"    Each NAME refers to a command for which a completion specification must\n"
+"    have previously been defined using the `complete' builtin.  If no NAMEs\n"
+"    are supplied, compopt must be called by a function currently generating\n"
+"    completions, and the options for that currently-executing completion\n"
+"    generator are modified.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is supplied or NAME does not\n"
+"    have a completion specification defined."
+msgstr ""
+"Modifica ou mostra as opções de conclusão.\n"
+"    \n"
+"    Modifica as opções de conclusão para cada NOME, ou, se não fornecer "
+"NOME,\n"
+"    a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, "
+"imprime\n"
+"    as opções de conclusão para cada NOME ou a especificação de conclusão "
+"actual.\n"
+"    \n"
+"    Opções:\n"
+"    \t-o opção\tDefine opção de conclusão OPÇÃO para cada NOME\n"
+"    \t-D\t\tAltera opções para a conclusão do comando \"predefinido\"\n"
+"    \t-E\t\tAltera opções para a conclusão do comando \"vazio\"\n"
+"    \t-I\t\tAltera opções para a conclusão na palavra inicial\n"
+"    \n"
+"    Usar \"+ o\" em vez de \"-o\" desliga a opção especificada.\n"
+"    \n"
+"    Argumentos:\n"
+"    \n"
+"    Cada NOME refere-se a um comando para o qual uma especificação de "
+"conclusão\n"
+"    deve ter sido anteriormente definida usando o interno \"complete\". Se "
+"não\n"
+"    forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n"
+"    gerar conclusões e as opções para esse gerador de conclusões "
+"actualmente\n"
+"    em execução são modificadas.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique uma opção inválida ou NOME não "
+"tenha\n"
+"    uma especificação de conclusão definida."
+
+#: builtins.c:2037
+msgid ""
+"Read lines from the standard input into an indexed array variable.\n"
+"    \n"
+"    Read lines from the standard input into the indexed array variable "
+"ARRAY, or\n"
+"    from file descriptor FD if the -u option is supplied.  The variable "
+"MAPFILE\n"
+"    is the default ARRAY.\n"
+"    \n"
+"    Options:\n"
+"      -d delim\tUse DELIM to terminate lines, instead of newline\n"
+"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
+"copied\n"
+"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
+"index is 0\n"
+"      -s count\tDiscard the first COUNT lines read\n"
+"      -t\tRemove a trailing DELIM from each line read (default newline)\n"
+"      -u fd\tRead lines from file descriptor FD instead of the standard "
+"input\n"
+"      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
+"      -c quantum\tSpecify the number of lines read between each call to\n"
+"    \t\t\tCALLBACK\n"
+"    \n"
+"    Arguments:\n"
+"      ARRAY\tArray variable name to use for file data\n"
+"    \n"
+"    If -C is supplied without -c, the default quantum is 5000.  When\n"
+"    CALLBACK is evaluated, it is supplied the index of the next array\n"
+"    element to be assigned and the line to be assigned to that element\n"
+"    as additional arguments.\n"
+"    \n"
+"    If not supplied with an explicit origin, mapfile will clear ARRAY "
+"before\n"
+"    assigning to it.\n"
+"    \n"
+"    Exit Status:\n"
+"    Returns success unless an invalid option is given or ARRAY is readonly "
+"or\n"
+"    not an indexed array."
+msgstr ""
+"Lê linhas da entrada padrão para uma variável de matriz indexada.\n"
+"    \n"
+"    Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, "
+"ou\n"
+"    do descritor de ficheiro FD se a opção -u for fornecida. A variável "
+"MAPFILE\n"
+"    é a MATRIZ predefinida.\n"
+"    \n"
+"    Opções:\n"
+"      -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n"
+"      -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n"
+"      -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição "
+"é 0\n"
+"      -s total\tDescarta as primeiras TOTAL linhas lidas\n"
+"      -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova "
+"linha)\n"
+"      -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n"
+"      -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n"
+"      -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n"
+"    \t\t\tRETORNO\n"
+"    \n"
+"    Argumentos:\n"
+"      ARRAY\tNome de variável de matriz a usar para dados de ficheiro\n"
+"    \n"
+"    Se -C for fornecido sem -c, a quantidade predefinida é 5000. Quando\n"
+"    RETORNO é avaliado, é fornecido o índice do elemento seguinte da\n"
+"    matriz a ser atribuído e a linha a ser atribuída a esse elemento\n"
+"    como argumentos adicionais.\n"
+"    \n"
+"    Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ "
+"antes\n"
+"    de lhe fazer atribuições.\n"
+"    \n"
+"    Estado de saída:\n"
+"    Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja "
+"só\n"
+"    de leitura ou não seja uma matriz indexada."
+
+#: builtins.c:2073
+msgid ""
+"Read lines from a file into an array variable.\n"
+"    \n"
+"    A synonym for `mapfile'."
+msgstr ""
+"Lê linhas de um ficheiro para uma variável de matriz.\n"
+"     \n"
+"     Um sinónimo para \"mapfile\"."
index fd7eae62d024d92daf0c1815fd62405f793ccb00..37b8dcb1ce9fc9ea14373ec4ff2f4906d2ff9e31 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index a2b7bb0c040c820d58bc7603c46eaf5d7a28f477..188a7fcee52291916d775401a655e9dc2560383d 100644 (file)
 # Brazilian Portuguese translation for bash
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Halley Pacheco de Oliveira <halleypo@ig.com.br>, 2002.
-# Rafael Fontenelle <rffontenelle@gmail.com>, 2015, 2016.
-#
+# Rafael Fontenelle <rafaelff@gnome.org>, 2015, 2016, 2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2016-02-12 09:33-0200\n"
-"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-11-30 08:07-0200\n"
+"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
 "net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pt_BR\n"
-"X-Generator: Poedit 1.8.7\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Virtaal 1.0.0-beta1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "subscrito de array incorreto"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: removendo o atributo nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: impossível converter array indexado para associativo"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: chave de array associativo inválida"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: impossível atribuir a índice não numérico"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: impossível criar: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: impossível localizar mapa de teclas para comando"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: primeiro caractere não-espaço em branco não é `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "sem `%c' de fechamento em %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s faltando separador dois-pontos"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "expansão de chaves: impossível alocar memória para %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "expansão de chaves: falha ao alocar memória para %d elementos"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "expansão de chaves: falha ao alocar memória para %u elementos"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "expansão de chaves: falha ao alocar memória para `%s'"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': nome de apelido (alias) inválido"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "edição de linha não habilitada"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': nome de mapa de teclas inválido"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: impossível ler: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': impossível desassociar (unbind)"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': nome de função desconhecida"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s não está associada a qualquer tecla.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s pode ser chamado via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': impossível desassociar (unbind)"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "número de loops"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "significativo apenas em um loop de `for', `while' ou `until'"
 
@@ -147,236 +147,235 @@ msgstr ""
 "    \n"
 "    Sem EXPR, retorna "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME não definida"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "número excessivo de argumentos"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "\t\tencontrado no diretório atual."
+msgstr "diretório nulo"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD não definida"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linha %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "aviso: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uso: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: a opção requer um argumento"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: requer argumento numérico"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: não encontrado"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: opção inválida"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nome de opção inválido"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': não é um identificador válido"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "número octal inválido"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "número do hexa inválido"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "número inválido"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: especificação de sinal inválida"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr ""
 "`%s': não é um identificador de processo (pid) nem é uma especificação de "
 "trabalho válida"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: a variável permite somente leitura"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fora dos limites"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argumento"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s fora dos limites"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: trabalho não existe"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: nenhum controle de trabalho"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "nenhum controle de trabalho"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restrição"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "restrição"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: não é um comando interno do shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "erro de escrita: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "erro ao definir atributos do terminal: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "erro ao obter atributos do terminal: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: erro ao obter o diretório atual: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: especificação de trabalho ambígua"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "ajuda não disponível nesta versão"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nome de ação inválido"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: nenhuma especificação de completação"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "aviso: a opção -F pode não funcionar como esperado"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "aviso: a opção -C pode não funcionar como esperado"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "não se está executando atualmente função de completação"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "somente pode ser usado em uma função"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: variável de referência não pode ser um array"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: referência a si próprio da variável nameref não é permitido"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s referência circular de nome"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: nome de variável inválido para referência de nome"
+msgstr "\"%s\": nome de variável inválido para referência de nome"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "impossível usar `-f' para criar funções"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: função somente para leitura"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: atribuição de array composto com aspas está obsoleto"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: impossível destruir variáveis de array desta maneira"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: impossível converter array associativo para indexado"
@@ -410,68 +409,68 @@ msgstr "%s: não foi carregado dinamicamente"
 msgid "%s: cannot delete: %s"
 msgstr "%s: impossível excluir: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: é um diretório"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: não é um arquivo irregular"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: arquivo é muito grande"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: impossível executar o arquivo binário"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: impossível executar: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "sair\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "não é um shell de login: use `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Há trabalhos parados.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Há trabalhos em execução.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "nenhum comando encontrado"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "especificação do histórico"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: impossível abrir arquivo temporário: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "atual"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "o trabalho %d iniciou sem controle de trabalho"
@@ -486,28 +485,27 @@ msgstr "%s: opção ilegal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opção requer um argumento: -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing está desabilitado"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tabela de hash está vazia\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "número\tcomando\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Comandos shell correspondendo à palavra-chave `"
 msgstr[1] "Comandos shell correspondendo às palavras-chave `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -515,12 +513,12 @@ msgstr ""
 "nenhum tópico de ajuda corresponde a `%s'.  Tente `help help' ou `man -k %s' "
 "ou `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: impossível abrir: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -542,20 +540,21 @@ msgstr ""
 "Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "impossível usar mais de um dentre -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "posição no histórico"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s argumento inválido"
+msgstr "%s: marca de tempo inválida"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: expansão do histórico falhou"
@@ -569,16 +568,16 @@ msgstr "%s: inlib falhou"
 msgid "no other options allowed with `-x'"
 msgstr "nenhuma outra opção permitida com `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumentos devem ser IDs de trabalhos ou processo"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Erro desconhecido"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "esperava uma expressão"
 
@@ -587,69 +586,69 @@ msgstr "esperava uma expressão"
 msgid "%s: not an indexed array"
 msgstr "%s: não é um array indexado"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: especificação de descritor de arquivo inválida"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: descritor de arquivo inválido: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: número de linhas inválido"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: origem do array inválido"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: quantidade de chamadas inválida"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "nome de variável array vazio"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "requer suporte a variável de array"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': faltando caractere de formato"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': especificação de formato de tempo inválida"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': caractere de formato inválido"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "aviso: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problema ao analisar formato: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "faltando dígito hexa para \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "faltando dígito unicode para \\%c"
@@ -663,19 +662,19 @@ msgstr "nenhum outro diretório"
 msgid "%s: invalid argument"
 msgstr "%s argumento inválido"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<nenhum diretório atual>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "pilha de diretórios está vazia"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "índice de pilha de diretórios"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -717,7 +716,7 @@ msgstr ""
 "      -N\tExibe a n-ésima entrada a partir da esquerda da linha\n"
 "      \t\tmostrada por `dirs' chamado sem opções, iniciando com zero."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -764,7 +763,7 @@ msgstr ""
 "    \n"
 "     O comando interno `dirs' exibe a pilha de diretórios."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -807,43 +806,43 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: especificação de tempo limite inválida"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "erro de leitura: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "possível retornar (`return') apenas de uma função ou script carregado (com "
 "`source')"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr ""
 "impossível simultaneamente remover definição de uma função e uma variável"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: impossível remover definição"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: impossível remover definição: %s somente-leitura"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: não é uma variável array"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: não é uma função"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: impossível exportar"
@@ -852,21 +851,21 @@ msgstr "%s: impossível exportar"
 msgid "shift count"
 msgstr "número de shift"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 "impossível simultaneamente definir e remover definição de opções do shell"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nome de opção de shell inválido"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "requer argumento arquivo"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: arquivo não encontrado"
@@ -879,61 +878,61 @@ msgstr "impossível suspender"
 msgid "cannot suspend a login shell"
 msgstr "impossível suspender um shell de login."
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s está apelidada para `%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s é uma palavra-chave do shell\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s é uma função\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s é um comando interno especial do shell\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s é um comando interno do shell\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s é %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s está na tabela hash (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: argumento limite inválido"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': comando incorreto"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: impossível obter limite: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limite"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: impossível modificar limite: %s"
@@ -952,366 +951,374 @@ msgstr "`%c': operador de modo simbólico inválido"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': caractere de modo simbólico inválido"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " linha "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "último comando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Abortando..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "erro de comando desconhecido"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "tipo de comando incorreto"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "conector incorreto"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "desvio incorreto"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variável não associada"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 "\atempo limite de espera excedido aguardando entrada: fim automático da "
 "sessão\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "impossível redirecionar a entrada padrão para /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': caractere de formato inválido"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] ainda existe"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "erro de `pipe'"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: comando não encontrado"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: interpretador incorreto"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: impossível executar o arquivo binário: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "`%s': é um comando interno especial"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "excedido o nível de recursividade da expressão"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "esvaziamento de pilha de recursão"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "erro de sintaxe na expressão"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "tentativa de atribuição para algo que não é uma variável"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "erro de sintaxe na atribuição de variável"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "divisão por 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "erro de programação: token incorreto passado para expassign()"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "esperava `:' para expressão condicional"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponente menor que 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "faltando `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "erro de sintaxe: esperava operando"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "erro de sintaxe: operador aritmético inválido"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (token de erro é \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "base aritmética inválida"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valor muito grande para esta base de numeração"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: erro de expressão\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: impossível acessar os diretórios pais (anteriores)"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr ""
 "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a "
 "partir do fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr ""
 "save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: `pipe' de pgrp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em "
 "execução %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "excluindo trabalho parado %d com grupo de processo %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: processo %5ld (%s) em the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) marcado como ainda vivo"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: o identificador do processo (pid) não existe"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Sinal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Concluído"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Parado"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Parado(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Executando"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Concluído(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Fim da execução com status %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Status desconhecido"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(imagem do núcleo gravada)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "`setpgid' filho (%ld para %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: o pid %ld não é um processo filho deste shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Sem registro do processo %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: trabalho %d está parado"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: o trabalho terminou"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: o trabalho %d já está em plano de fundo"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s, linha %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (imagem do núcleo gravada)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd agora: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp falhou"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: disciplina da linha"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "impossível definir grupo do processo do terminal (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "nenhum controle de trabalho neste shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: asserção falhou: %s\n"
 
-#: lib/malloc/malloc.c:312
-#, fuzzy, c-format
+#: lib/malloc/malloc.c:347
+#, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
@@ -1319,40 +1326,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: asserção remendada\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "desconhecido"
 
-#: lib/malloc/malloc.c:801
-#, fuzzy
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloco socado em lista livre"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: chamado com argumento de bloco já liberado"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: chamado com argumento de bloco não alocado"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: tamanhos de porções do início e do fim são diferentes"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: chamado com argumento de bloco não alocado"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: tamanhos de porções do início e do fim são diferentes"
 
@@ -1394,22 +1400,22 @@ msgstr "%s: especificação de caminho de rede inválida"
 msgid "network operations not supported"
 msgstr "sem suporte a operações de rede"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: impossível alterar locale (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: impossível alterar locale (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: impossível alterar locale (%s): %s"
@@ -1427,151 +1433,152 @@ msgstr "Você tem mensagem nova de correio em $_"
 msgid "The mail in %s has been read\n"
 msgstr "As mensagens de correio em %s foram lidas\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "erro de sintaxe: requer expressão aritmética"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "erro de sintaxe: `;' inesperado"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "erro de sintaxe: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tipo da instrução incorreto %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "excedido o número máximo de here-document"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "encontrado EOF inesperado enquanto procurava por `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "erro de sintaxe na expressão condicional"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "token inesperado `%s', esperava`)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "esperava `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argumento inesperado `%s' para operador unário condicional"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "argumento inesperado para operador unário condicional"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "token inesperado `%s', esperava operador binário condicional"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "esperava operador binário condicional"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argumento inesperado `%s' para operador binário condicional"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "argumento inesperado para operador binário condicional"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "token inesperado `%c' em comando condicional"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "token inesperado `%s' em comando condicional"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "token inesperado %d em comando condicional"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "erro de sintaxe próximo ao token inesperado `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "erro de sintaxe próximo a `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "erro de sintaxe: fim prematuro do arquivo"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use \"%s\" para sair do shell.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: função `%s' não encontrada"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: possível loop de nova tentativa"
 
 # COMPSPEC é variável no código fonte, manter sem tradução para português.
 #: pcomplib.c:182
@@ -1598,90 +1605,94 @@ msgstr "xtrace_set: ponteiro de arquivo NULO"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': caractere de formato inválido"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "descritor de arquivo fora dos limites"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: redirecionamento ambíguo"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: impossível sobrescrever arquivo existente"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restrição: impossível redirecionar saída"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "impossível criar arquivo temporário para here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: impossível atribuir fd a variável"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "erro de redirecionamento: impossível duplicar fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "impossível localizar /tmp, por favor crie!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp deve ser um nome de diretório válido"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "modo de impressão bonita ignorada em shells interativos"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opção inválida"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "impossível definir uid para %d: uid efetivo %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "impossível definir gid para %d: gid efetivo %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "possível iniciar o depurador; modo de depuração desabilitado"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: É um diretório"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Eu não tenho nome!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versão %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1690,52 +1701,52 @@ msgstr ""
 "Utilização:\t%s [opção-longa-GNU] [opção] ...\n"
 "\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "opções-longas-GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opções do shell:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ou -o opção\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Digite `%s -c help' para mais informações sobre os comandos internos do "
 "shell.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Uso o comando `bashbug' para relatar erros.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "página do bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "Ajuda geral sobre uso de software GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operação inválida"
@@ -1909,106 +1920,110 @@ msgstr "Sinal desconhecido #"
 msgid "Unknown Signal #%d"
 msgstr "Sinal desconhecido #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "substituição incorreta: sem `%s' de fechamento em %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: impossível atribuir uma lista a um membro de um array"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "impossível criar `pipe' para a substituição do processo"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "impossível criar um processo filho para a substituição do processo"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "impossível abrir `pipe' %s para leitura"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "impossível abrir `pipe' %s para escrita"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "substituição incorreta: sem \"`\" de fechamento em %s"
+msgstr "substituição de comando: byte nulo ignorado na entrada"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "impossível criar um `pipe' para substituição do comando"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "impossível criar um processo filho para substituição do comando"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 "command_substitute: impossível duplicar o `pipe' como descritor de arquivo "
 "(fd) 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: nome de variável inválido para referência de nome"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: substituição incorreta"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: expansão indireta inválida"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: nome de variável inválido"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parâmetro não inicializado"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parâmetro nulo ou não inicializado"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expressão de substring < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: substituição incorreta"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: impossível atribuir desta maneira"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 "versões futuras do shell vão forçar avaliação como um substituto aritmético"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "substituição incorreta: sem \"`\" de fechamento em %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "sem correspondência: %s"
@@ -2031,30 +2046,36 @@ msgstr "esperava `)'"
 msgid "`)' expected, found %s"
 msgstr "esperava `)', encontrado %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: esperava operador unário"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: esperava operador binário"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "faltando `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "número de sinal inválido"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2062,88 +2083,87 @@ msgstr ""
 "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%"
 "s) para mim mesmo"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: sinal incorreto %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "erro ao importar a definição da função para `%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "nível do shell (%d) muito grande, redefinindo para 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: nenhum contexto de função no atual escopo"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: a variável pode não ter um valor atribuído"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: nome de variável inválido para referência de nome"
+msgstr "%s: atribuindo inteiro para referência de nome"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: nenhum contexto de função no escopo atual"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s possui a string de exportação nula"
 
 # exportstr é uma variável no código fonte do bash (arquivo variiables.c)
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "caractere inválido na %d na exportstr para %s"
 
 # exportstr é uma variável no código fonte do bash (arquivo variiables.c)
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "Sem `=' na exportstr para %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: nenhum contexto em no global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: impossível abrir como ARQUIVO"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: valor inválido para rastrear descritor de arquivo"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: valor de compatibilidade fora dos limites"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2166,22 +2186,22 @@ msgstr "Este é um software livre; você é livre para alterar e redistribuí-lo
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Há NENHUMA GARANTIA, na extensão permitida pela lei."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: impossível alocar %lu bytes"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: impossível alocar %lu bytes"
@@ -2309,9 +2329,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [ESPEC-JOB ...] ou jobs -x COMANDO [ARGS]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [ESPEC-JOB ...]"
+msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2394,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [MODO]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [ID ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [ID ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2488,11 +2507,11 @@ msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W "
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W "
 "LISTA-PALAVRAS]  [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S "
 "SUFIXO] [NOME ...]"
 
@@ -2506,8 +2525,8 @@ msgstr ""
 "[PALAVRA]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o OPÇÃO] [-DE] [NOME ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o OPÇÃO] [-DEI] [NOME ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2519,11 +2538,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C CHAMADA] [-c "
-"QUANTIDADE] [ARRAY]"
+"readarray [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C "
+"CHAMADA] [-c QUANTIDADE] [ARRAY]"
 
 # help alias
 #: builtins.c:256
@@ -2719,7 +2738,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Executa comandos internos (builtin) do shell.\n"
 "    \n"
@@ -2974,11 +2993,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3012,11 +3031,13 @@ msgstr ""
 "      -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n"
 "      -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n"
 "      -i\tpara fazer NOMEs terem o atributo `integer'\n"
-"      -l\tpara converter NOMEs para minúsculo em sua atribuição\n"
+"      -l\tpara converter o valor de cada NOME para minúsculo em sua "
+"atribuição\n"
 "      -n\tfazer de NOME uma referência à variável chamada por seu valor\n"
 "      -r\tpara fazer de NOMEs somente-leitura\n"
 "      -t\tpara fazer NOMEs terem o atributo `trace'\n"
-"      -u\tpara converter NOMEs para maiúsculo em sua atribuição\n"
+"      -u\tpara converter o valor de cada NOME para maiúsculo em sua "
+"atribuição\n"
 "      -x\tpra fazer NOMEs exportar\n"
 "    \n"
 "    Usar `+' ao invés de `-' desliga o atributo dado.\n"
@@ -3031,9 +3052,7 @@ msgstr ""
 "    Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n"
 "    ocorrer um erro de atribuição de variável."
 
-# help typeset
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3041,7 +3060,7 @@ msgid ""
 msgstr ""
 "Define valores e atributos de variável.\n"
 "    \n"
-"    Obsoleto.  Veja `help declare'."
+"    Um sinônimo para `declare'. Veja `help declare'."
 
 # help local
 #: builtins.c:538
@@ -3075,6 +3094,7 @@ msgstr ""
 
 # help echo
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3103,6 +3123,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3138,7 +3164,7 @@ msgstr ""
 "    Retorna sucesso, a menos que ocorra um erro de escrita."
 
 # help echo
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3161,7 +3187,7 @@ msgstr ""
 "    Retorna sucesso, a menos que ocorra um erro de escrita."
 
 # help enable
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3215,7 +3241,7 @@ msgstr ""
 "    ou ocorrer um erro."
 
 # help eval
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3235,7 +3261,7 @@ msgstr ""
 "    Retorna status de saída do comando ou sucesso, se o comando for nulo."
 
 # help getopts
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3317,7 +3343,7 @@ msgstr ""
 "    for encontrado ou ocorrer um erro."
 
 # help exec
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3359,7 +3385,7 @@ msgstr ""
 "    erro no redirecionamento."
 
 # help exit
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3372,7 +3398,7 @@ msgstr ""
 "    de saída é o mesmo do último comando executado."
 
 # help exit
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3386,7 +3412,7 @@ msgstr ""
 "    se não for executada em um shell de login."
 
 # help fc
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3442,7 +3468,7 @@ msgstr ""
 "    retorna não-zero."
 
 # help fg
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3464,7 +3490,7 @@ msgstr ""
 "erro."
 
 # help bg
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3488,7 +3514,7 @@ msgstr ""
 "    habilitado ou ocorra um erro."
 
 # help hash
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3518,23 +3544,23 @@ msgstr ""
 "    argumento for fornecido, exibe informação sobre comandos memorizados.\n"
 "    \n"
 "    Opções:\n"
-"      -d\t\t\tesquece a localização memorizada de cada NOME\n"
-"      -l\t\t\texibe em um formato que pode ser usado como entrada\n"
+"      -d\t\tesquece a localização memorizada de cada NOME\n"
+"      -l\t\texibe em um formato que pode ser usado como entrada\n"
 "      -p CAMINHO\tusa CAMINHO como o caminho completo de NOME\n"
-"      -r\t\t\tesquece de todas as localizações memorizadas\n"
-"      -t\t\t\tmostra a localização memorizada de cada NOME, iniciando\n"
-"      \t\t\t\tcada localização com o NOME correspondente, se múltiplos\n"
-"      \t\t\t\tNOMEs forem fornecidos\n"
+"      -r\t\tesquece de todas as localizações memorizadas\n"
+"      -t\t\tmostra a localização memorizada de cada NOME, iniciando\n"
+"      \t\t\tcada localização com o NOME correspondente, se múltiplos\n"
+"      \t\t\tNOMEs forem fornecidos\n"
 "    Argumentos:\n"
-"      NOME\t\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n"
-"      \t\t\t\tcomandos memorizados.\n"
+"      NOME\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n"
+"      \t\t\tcomandos memorizados.\n"
 "    \n"
 "    Status de saída:\n"
 "    Retorna sucesso, a menos que NOME não seja encontrado ou uma opção\n"
 "    inválida seja fornecida."
 
 # help help
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3549,7 +3575,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3574,9 +3600,7 @@ msgstr ""
 "    Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n"
 "    inválida seja fornecida."
 
-# help history
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3585,7 +3609,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3616,18 +3641,21 @@ msgstr ""
 "    últimas N entradas.\n"
 "    \n"
 "    Opções:\n"
-"      -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n"
-"      -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n"
-"      -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n"
-"      \t\t\t\thistórico\n"
-"      -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n"
-"      \t\t\t\tarquivo de histórico\n"
-"      -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n"
-"      -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n"
-"      \t\t\t\tanexa-os à lista de histórico    \n"
-"      -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n"
-"      \t\t\t\tresultado sem armazená-lo na lista de histórico\n"
-"      -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n"
+"      -c\t\tlimpa a lista de histórico ao excluir todas as entradas\n"
+"      -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO. "
+"Posições\n"
+"\t\t\tnegativas contam a partir do fim da lista de histórico\n"
+"    \n"
+"      -a\t\tanexa linhas de histórico desta sessão no arquivo de\n"
+"      \t\t\thistórico\n"
+"      -n\t\tlê todas as linhas de histórico ainda não lidas do\n"
+"      \t\t\tarquivo de histórico e anexa-os à lista de histórico\n"
+"      -r\t\tlê o histórico e anexa os conteúdos à lista de histórico\n"
+"      -w\t\tescreve o histórico atual para o arquivo de histórico\n"
+"    \n"
+"      -p\t\texecuta expansão de histórico em cada ARG e exibe o\n"
+"      \t\t\tresultado sem armazená-lo na lista de histórico\n"
+"      -s\t\tanexa os ARGs à lista de histórico como uma única entrada\n"
 "    \n"
 "    Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n"
 "    Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n"
@@ -3643,7 +3671,7 @@ msgstr ""
 "    ocorra um erro."
 
 # help jobs
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3689,7 +3717,7 @@ msgstr ""
 "    ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO."
 
 # help disown
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3721,8 +3749,7 @@ msgstr ""
 "    sejam fornecidos."
 
 # help kill
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3756,6 +3783,7 @@ msgstr ""
 "      -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n"
 "      \t\t\t\toutros argumentos, presume-se estes sejam números de\n"
 "      \t\t\t\tsinais para os quais nomes deveriam ser listados\n"
+"      -L\t\t\tsinônimo de -l\n"
 "    \n"
 "    `Kill' é um comando interno do shell por duas razões: ele permite\n"
 "    IDs de trabalho serem usados ao invés de IDs de processo e permite\n"
@@ -3767,7 +3795,7 @@ msgstr ""
 "    ocorra um erro."
 
 # help let
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3853,7 +3881,7 @@ msgstr ""
 "    let retorna 0."
 
 # help read
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3874,7 +3902,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3923,7 +3951,7 @@ msgstr ""
 "                    variável array ARRAY, iniciando em zero\n"
 "      -d DELIM      continua até o primeiro caractere de DELIM ser lido, ao\n"
 "                    invés de nova linha\n"
-"      -e            usa Readline para obter a linha em um shell interativo\n"
+"      -e            usa Readline para obter a linha\n"
 "      -i TEXTO      usa TEXTO como o texto inicial para Readline\n"
 "      -n NCHARS     retorna após ler NCHARS caracteres, ao invés de esperar\n"
 "                    por uma nova linha, mas respeita um delimitador se "
@@ -3960,7 +3988,7 @@ msgstr ""
 "    arquivo inválido seja fornecido como argumento para -u."
 
 # help return
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3982,8 +4010,7 @@ msgstr ""
 "    script."
 
 # help set
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4146,7 +4173,8 @@ msgstr ""
 "      -P  Se definida, não resolve links simbólicos ao sair de comandos, "
 "tais\n"
 "          como `cd' (que altera o diretório atual).\n"
-"      -T  Se definido, a armadilha DEBUG é herdada por funções do shell.\n"
+"      -T  Se definido, a armadilha DEBUG e RETURN são herdadas por funções "
+"do shell.\n"
 "      --  Atribui quaisquer argumentos restantes aos parâmetros "
 "posicionais.\n"
 "          Se não houver argumentos restantes, os parâmetros posicionais são\n"
@@ -4168,7 +4196,7 @@ msgstr ""
 "    Retorna sucesso, a menos que uma opção inválida seja fornecida."
 
 # help unset
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4209,7 +4237,7 @@ msgstr ""
 "    um NOME seja somente-leitura."
 
 # help export
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4246,7 +4274,7 @@ msgstr ""
 "    NOME seja inválido."
 
 # help readonly
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4286,7 +4314,7 @@ msgstr ""
 "    NOME seja inválido."
 
 # help shift
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4306,7 +4334,7 @@ msgstr ""
 "    Retorna sucesso, a menos que N seja negativo ou maior que $#."
 
 # help source
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4331,7 +4359,7 @@ msgstr ""
 "    ARQUIVO não puder ser lido."
 
 # help suspend
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4357,7 +4385,7 @@ msgstr ""
 "    ou ocorra um erro."
 
 # help test
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4527,7 +4555,7 @@ msgstr ""
 "    avaliada como falsa ou um argumento inválido for informado."
 
 # help [
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4540,7 +4568,7 @@ msgstr ""
 "    argumento deve ser um `]' literal, para corresponder ao `[' que abriu."
 
 # help times
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4560,7 +4588,7 @@ msgstr ""
 "    Sempre com sucesso."
 
 # help trap
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4641,7 +4669,7 @@ msgstr ""
 "    uma opção inválida seja fornecida."
 
 # help type
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4698,7 +4726,7 @@ msgstr ""
 "    deles não for encontrado."
 
 # help ulimit
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4793,7 +4821,7 @@ msgstr ""
 "    ocorra um erro."
 
 # help umask
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4829,7 +4857,7 @@ msgstr ""
 "    inválida seja fornecida."
 
 # help wait
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4837,13 +4865,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4860,12 +4890,16 @@ msgstr ""
 "    Se a opção -n for fornecida, espera pelo próximo trabalho terminar e\n"
 "    retorna seu status de trabalho.\n"
 "    \n"
+"    Se a opção -f for fornecida, e o controle de trabalho estiver ativado,\n"
+"    espera o ID especificado terminar, em vez de esperar ele alterar o\n"
+"    status.\n"
+"    \n"
 "    Status de saída:\n"
 "    Retorna o status do último ID; falha, se ID for inválido ou uma opção\n"
 "    inválida for fornecida."
 
 # help wait
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4891,7 +4925,7 @@ msgstr ""
 "    inválida for fornecida."
 
 # help for
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4915,7 +4949,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help for ((    (?)
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4946,7 +4980,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help select
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4984,7 +5018,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help time
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5014,7 +5048,7 @@ msgstr ""
 "    O status de retorno é o status retornado por LINHA-COMANDOS."
 
 # help case
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5033,7 +5067,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help if
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5068,7 +5102,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help while
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5087,7 +5121,7 @@ msgstr ""
 "    Retorna o status do último comando executado."
 
 # help until
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5106,9 +5140,7 @@ msgstr ""
 "    Status de saída:\n"
 "    Retorna o status do último comando executado."
 
-# help coproc
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5128,10 +5160,10 @@ msgstr ""
 "    no shell em execução. O NOME padrão é \"COPROC\".\n"
 "    \n"
 "    Status de saída:\n"
-"    Retorna o status de saída de COMANDO."
+"    O comando coproc retorna um status de saída de 0."
 
 # help function
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5155,7 +5187,7 @@ msgstr ""
 "    Retorna sucesso, a menos que NOME seja somente-leitura."
 
 # help -m {
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5173,7 +5205,7 @@ msgstr ""
 "    Status de saída:\n"
 "    Retorna o status do último comando executado."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5199,7 +5231,7 @@ msgstr ""
 "    Retorna o status de um trabalho resumido."
 
 # help '(('
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5218,7 +5250,7 @@ msgstr ""
 "    Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0."
 
 # help '['
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5271,7 +5303,7 @@ msgstr ""
 "    0 ou 1 dependendo do valor de EXPRESSÃO."
 
 # help variables
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5387,7 +5419,7 @@ msgstr ""
 "    \t\t\t\thistórico.\n"
 
 # help pushd
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5447,7 +5479,7 @@ msgstr ""
 "    a alteração de diretório falhar."
 
 # help popd
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5498,7 +5530,7 @@ msgstr ""
 "    a alteração de diretório falhar."
 
 # help dirs
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5552,14 +5584,13 @@ msgstr ""
 "    ocorrer um erro."
 
 # help shopt
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5575,8 +5606,8 @@ msgstr ""
 "Define e remove definições de opções de shell.\n"
 "    \n"
 "    Altera a configuração de cada opção shell NOME-OPÇÃO. Sem qualquer\n"
-"    argumento de opção, lista todos shell com uma indicação de se cada\n"
-"    uma está definida ou não.\n"
+"    argumento de opção, lista cada OPTNAME fornecido com uma indicação\n"
+"    de se cada uma está definida ou não.\n"
 "    \n"
 "    Opções:\n"
 "      -o\trestringe NOME-OPÇÃO àqueles definidos para usar com `set -o'\n"
@@ -5590,7 +5621,7 @@ msgstr ""
 "    opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado."
 
 # help printf
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5660,7 +5691,8 @@ msgstr ""
 "    ocorra um erro de escrita ou atribuição."
 
 # help complete
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5678,10 +5710,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5702,9 +5738,13 @@ msgstr ""
 "      \t\tsem qualquer especificação definida\n"
 "      -E\taplica as completações e ações para tentativa de completar\n"
 "      \t\tcomandos -- \"vazios\" em uma linha vazia\n"
+"      -I\taplica completações e ações para a palavra inicial (geralmente o\n"
+"    \t\tcomando)\n"
 "    \n"
 "    Ao tentar completar, as ações são fornecidas na ordem em que as opções\n"
-"    de letras de caixa alta são listadas acima. A opção -D tem precedência\n"
+"    de letras de caixa alta são listadas acima. Se várias opções forem "
+"fornecidas,\n"
+"    a opção -D tem precedência sobre -E, e ambos têm precedência sobre -I.\n"
 "    sobre -E.\n"
 "    \n"
 "    Status de saída:\n"
@@ -5712,7 +5752,7 @@ msgstr ""
 "    ocorra um erro."
 
 # help compgen
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5735,7 +5775,7 @@ msgstr ""
 "    ocorra um erro."
 
 # help compopt
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5750,6 +5790,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5776,6 +5817,7 @@ msgstr ""
 "    \t-o OPÇÃO\tDefine a opção de completação OPÇÃO para cada NOME\n"
 "    \t-D\t\tAltera opções para a completação de comando \"padrão\"\n"
 "    \t-E\t\tAltera opções para a completação de comando \"vazio\"\n"
+"    \t-I\t\tAltera as opções para completação na palavra inicial\n"
 "    \n"
 "    Ao usar `+o', ao invés de `-o', desliga a opção especificada.\n"
 "    \n"
@@ -5793,7 +5835,7 @@ msgstr ""
 "    NOME não tem uma especificação de completação definida."
 
 # help mapfile
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5876,7 +5918,7 @@ msgstr ""
 "    somente leitura ou não for um array indexado."
 
 # help readarray
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5886,6 +5928,9 @@ msgstr ""
 "    \n"
 "    Um sinônimo para `mapfile'."
 
+#~ msgid "Copyright (C) 2015 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
+
 #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
 #~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
 
@@ -5900,10 +5945,362 @@ msgstr ""
 #~ msgid "false"
 #~ msgstr "false"
 
+#~ msgid "disown [-h] [-ar] [jobspec ...]"
+#~ msgstr "disown [-h] [-ar] [ESPEC-JOB ...]"
+
 # não traduzir, este é um comando
 #~ msgid "times"
 #~ msgstr "times"
 
+# help typeset
+#~ msgid ""
+#~ "Set variable values and attributes.\n"
+#~ "    \n"
+#~ "    Obsolete.  See `help declare'."
+#~ msgstr ""
+#~ "Define valores e atributos de variável.\n"
+#~ "    \n"
+#~ "    Obsoleto.  Veja `help declare'."
+
+# help history
+#~ msgid ""
+#~ "Display or manipulate the history list.\n"
+#~ "    \n"
+#~ "    Display the history list with line numbers, prefixing each modified\n"
+#~ "    entry with a `*'.  An argument of N lists only the last N entries.\n"
+#~ "    \n"
+#~ "    Options:\n"
+#~ "      -c\tclear the history list by deleting all of the entries\n"
+#~ "      -d offset\tdelete the history entry at offset OFFSET.\n"
+#~ "    \n"
+#~ "      -a\tappend history lines from this session to the history file\n"
+#~ "      -n\tread all history lines not already read from the history file\n"
+#~ "      -r\tread the history file and append the contents to the history\n"
+#~ "    \t\tlist\n"
+#~ "      -w\twrite the current history to the history file\n"
+#~ "    \t\tand append them to the history list\n"
+#~ "    \n"
+#~ "      -p\tperform history expansion on each ARG and display the result\n"
+#~ "    \t\twithout storing it in the history list\n"
+#~ "      -s\tappend the ARGs to the history list as a single entry\n"
+#~ "    \n"
+#~ "    If FILENAME is given, it is used as the history file.  Otherwise,\n"
+#~ "    if HISTFILE has a value, that is used, else ~/.bash_history.\n"
+#~ "    \n"
+#~ "    If the HISTTIMEFORMAT variable is set and not null, its value is "
+#~ "used\n"
+#~ "    as a format string for strftime(3) to print the time stamp "
+#~ "associated\n"
+#~ "    with each displayed history entry.  No time stamps are printed "
+#~ "otherwise.\n"
+#~ "    \n"
+#~ "    Exit Status:\n"
+#~ "    Returns success unless an invalid option is given or an error occurs."
+#~ msgstr ""
+#~ "Exibe ou manipula a lista de histórico.\n"
+#~ "    \n"
+#~ "    Exibe a lista de histórico com números de linhas, prefixando cada\n"
+#~ "    entrada modificada com um `*'.  Um argumento de N lista apenas as\n"
+#~ "    últimas N entradas.\n"
+#~ "    \n"
+#~ "    Opções:\n"
+#~ "      -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n"
+#~ "      -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n"
+#~ "      -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n"
+#~ "      \t\t\t\thistórico\n"
+#~ "      -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n"
+#~ "      \t\t\t\tarquivo de histórico\n"
+#~ "      -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n"
+#~ "      -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n"
+#~ "      \t\t\t\tanexa-os à lista de histórico    \n"
+#~ "      -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n"
+#~ "      \t\t\t\tresultado sem armazená-lo na lista de histórico\n"
+#~ "      -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n"
+#~ "    \n"
+#~ "    Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n"
+#~ "    Do contrário, se a variável HISTFILE tiver um valor, este será "
+#~ "usado;\n"
+#~ "    senão, usa de ~/.bash_history.\n"
+#~ "    \n"
+#~ "    Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor "
+#~ "é\n"
+#~ "    usado como uma string de formato para strftime(3) para mostrar a "
+#~ "marca\n"
+#~ "    de tempo associada com cada entrada de histórico exibida. Do "
+#~ "contrário,\n"
+#~ "    nenhuma marca de tempo é mostrada.\n"
+#~ "    \n"
+#~ "    Status de saída:\n"
+#~ "    Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n"
+#~ "    ocorra um erro."
+
+# help kill
+#~ msgid ""
+#~ "Send a signal to a job.\n"
+#~ "    \n"
+#~ "    Send the processes identified by PID or JOBSPEC the signal named by\n"
+#~ "    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n"
+#~ "    SIGTERM is assumed.\n"
+#~ "    \n"
+#~ "    Options:\n"
+#~ "      -s sig\tSIG is a signal name\n"
+#~ "      -n sig\tSIG is a signal number\n"
+#~ "      -l\tlist the signal names; if arguments follow `-l' they are\n"
+#~ "    \t\tassumed to be signal numbers for which names should be listed\n"
+#~ "    \n"
+#~ "    Kill is a shell builtin for two reasons: it allows job IDs to be "
+#~ "used\n"
+#~ "    instead of process IDs, and allows processes to be killed if the "
+#~ "limit\n"
+#~ "    on processes that you can create is reached.\n"
+#~ "    \n"
+#~ "    Exit Status:\n"
+#~ "    Returns success unless an invalid option is given or an error occurs."
+#~ msgstr ""
+#~ "Envia um sinal para um trabalho.\n"
+#~ "\n"
+#~ "    Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n"
+#~ "    informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n"
+#~ "    não estiverem presentes, então, SIGTERM é presumido.\n"
+#~ "    \n"
+#~ "    Opções:\n"
+#~ "      -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n"
+#~ "      -n SIGNUM\t\tSIGNUM representa um número de sinal\n"
+#~ "      -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n"
+#~ "      \t\t\t\toutros argumentos, presume-se estes sejam números de\n"
+#~ "      \t\t\t\tsinais para os quais nomes deveriam ser listados\n"
+#~ "    \n"
+#~ "    `Kill' é um comando interno do shell por duas razões: ele permite\n"
+#~ "    IDs de trabalho serem usados ao invés de IDs de processo e permite\n"
+#~ "    que processos sejam matados caso o limite de processos que você pode\n"
+#~ "    criar seja atingido.\n"
+#~ "    \n"
+#~ "    Status de saída:\n"
+#~ "    Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n"
+#~ "    ocorra um erro."
+
+# help set
+#~ msgid ""
+#~ "Set or unset values of shell options and positional parameters.\n"
+#~ "    \n"
+#~ "    Change the value of shell attributes and positional parameters, or\n"
+#~ "    display the names and values of shell variables.\n"
+#~ "    \n"
+#~ "    Options:\n"
+#~ "      -a  Mark variables which are modified or created for export.\n"
+#~ "      -b  Notify of job termination immediately.\n"
+#~ "      -e  Exit immediately if a command exits with a non-zero status.\n"
+#~ "      -f  Disable file name generation (globbing).\n"
+#~ "      -h  Remember the location of commands as they are looked up.\n"
+#~ "      -k  All assignment arguments are placed in the environment for a\n"
+#~ "          command, not just those that precede the command name.\n"
+#~ "      -m  Job control is enabled.\n"
+#~ "      -n  Read commands but do not execute them.\n"
+#~ "      -o option-name\n"
+#~ "          Set the variable corresponding to option-name:\n"
+#~ "              allexport    same as -a\n"
+#~ "              braceexpand  same as -B\n"
+#~ "              emacs        use an emacs-style line editing interface\n"
+#~ "              errexit      same as -e\n"
+#~ "              errtrace     same as -E\n"
+#~ "              functrace    same as -T\n"
+#~ "              hashall      same as -h\n"
+#~ "              histexpand   same as -H\n"
+#~ "              history      enable command history\n"
+#~ "              ignoreeof    the shell will not exit upon reading EOF\n"
+#~ "              interactive-comments\n"
+#~ "                           allow comments to appear in interactive "
+#~ "commands\n"
+#~ "              keyword      same as -k\n"
+#~ "              monitor      same as -m\n"
+#~ "              noclobber    same as -C\n"
+#~ "              noexec       same as -n\n"
+#~ "              noglob       same as -f\n"
+#~ "              nolog        currently accepted but ignored\n"
+#~ "              notify       same as -b\n"
+#~ "              nounset      same as -u\n"
+#~ "              onecmd       same as -t\n"
+#~ "              physical     same as -P\n"
+#~ "              pipefail     the return value of a pipeline is the status "
+#~ "of\n"
+#~ "                           the last command to exit with a non-zero "
+#~ "status,\n"
+#~ "                           or zero if no command exited with a non-zero "
+#~ "status\n"
+#~ "              posix        change the behavior of bash where the default\n"
+#~ "                           operation differs from the Posix standard to\n"
+#~ "                           match the standard\n"
+#~ "              privileged   same as -p\n"
+#~ "              verbose      same as -v\n"
+#~ "              vi           use a vi-style line editing interface\n"
+#~ "              xtrace       same as -x\n"
+#~ "      -p  Turned on whenever the real and effective user ids do not "
+#~ "match.\n"
+#~ "          Disables processing of the $ENV file and importing of shell\n"
+#~ "          functions.  Turning this option off causes the effective uid "
+#~ "and\n"
+#~ "          gid to be set to the real uid and gid.\n"
+#~ "      -t  Exit after reading and executing one command.\n"
+#~ "      -u  Treat unset variables as an error when substituting.\n"
+#~ "      -v  Print shell input lines as they are read.\n"
+#~ "      -x  Print commands and their arguments as they are executed.\n"
+#~ "      -B  the shell will perform brace expansion\n"
+#~ "      -C  If set, disallow existing regular files to be overwritten\n"
+#~ "          by redirection of output.\n"
+#~ "      -E  If set, the ERR trap is inherited by shell functions.\n"
+#~ "      -H  Enable ! style history substitution.  This flag is on\n"
+#~ "          by default when the shell is interactive.\n"
+#~ "      -P  If set, do not resolve symbolic links when executing commands\n"
+#~ "          such as cd which change the current directory.\n"
+#~ "      -T  If set, the DEBUG trap is inherited by shell functions.\n"
+#~ "      --  Assign any remaining arguments to the positional parameters.\n"
+#~ "          If there are no remaining arguments, the positional parameters\n"
+#~ "          are unset.\n"
+#~ "      -   Assign any remaining arguments to the positional parameters.\n"
+#~ "          The -x and -v options are turned off.\n"
+#~ "    \n"
+#~ "    Using + rather than - causes these flags to be turned off.  The\n"
+#~ "    flags can also be used upon invocation of the shell.  The current\n"
+#~ "    set of flags may be found in $-.  The remaining n ARGs are "
+#~ "positional\n"
+#~ "    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n"
+#~ "    ARGs are given, all shell variables are printed.\n"
+#~ "    \n"
+#~ "    Exit Status:\n"
+#~ "    Returns success unless an invalid option is given."
+#~ msgstr ""
+#~ "Define ou remove definição de valores das opções e dos parâmetros "
+#~ "posicionais\n"
+#~ "do shell:\n"
+#~ "    \n"
+#~ "    Altera o valor de opções e de parâmetros posicionais do shell ou "
+#~ "mostra\n"
+#~ "    os nomes ou valores de variáveis shell.\n"
+#~ "    \n"
+#~ "    Opções:\n"
+#~ "      -a  Marca variáveis, que foram modificadas ou criadas, para "
+#~ "exportação.\n"
+#~ "      -b  Notifica sobre terminação de trabalho imediatamente.\n"
+#~ "      -e  Sai imediatamente se um comando sai com um status não-zero.\n"
+#~ "      -f  Desabilita a geração de nome de arquivo (\"globbing\").\n"
+#~ "      -h  Memoriza a localização de comandos à medida em que são "
+#~ "procurados.\n"
+#~ "      -k  Todos argumentos de atribuição são colocados no ambiente para "
+#~ "um\n"
+#~ "          comando, e não apenas aqueles que precedem o nome do comando.\n"
+#~ "      -m  Controle de trabalho está habilitado.\n"
+#~ "      -n  Lê comandos, mas não os executa.\n"
+#~ "      -o NOME-OPÇÃO\n"
+#~ "          Define a variável correspondendo a NOME-OPÇÃO:\n"
+#~ "              allexport    mesmo que -a\n"
+#~ "              braceexpand  mesmo que -B\n"
+#~ "              emacs        usa interface de edição de linha estilo Emacs\n"
+#~ "              errexit      mesmo que -e\n"
+#~ "              errtrace     mesmo que -E\n"
+#~ "              functrace    mesmo que -T\n"
+#~ "              hashall      mesmo que -h\n"
+#~ "              histexpand   mesmo que -H\n"
+#~ "              history      habilita histórico de comandos\n"
+#~ "              ignoreeof    shell não vai sair após leitura de EOF\n"
+#~ "              interactive-comments\n"
+#~ "                           permite mostrar comentários em comandos "
+#~ "interativos\n"
+#~ "              keyword      mesmo que -k\n"
+#~ "              monitor      mesmo que -m\n"
+#~ "              noclobber    mesmo que -C\n"
+#~ "              noexec       mesmo que -n\n"
+#~ "              noglob       mesmo que -f\n"
+#~ "              nolog        atualmente aceito, mas ignorado\n"
+#~ "              notify       mesmo que -b\n"
+#~ "              nounset      mesmo que -u\n"
+#~ "              onecmd       mesmo que -t\n"
+#~ "              physical     mesmo que -P\n"
+#~ "              pipefail     o valor de retorno de uma linha de comandos é "
+#~ "o\n"
+#~ "                           status do último comando a sair com status não-"
+#~ "zero,\n"
+#~ "                           ou zero se nenhum comando saiu com status não "
+#~ "zero\n"
+#~ "              posix        altera o comportamento do bash, onde a "
+#~ "operação\n"
+#~ "                           padrão diverge dos padrões do Posix para\n"
+#~ "                           corresponder a estes padrões\n"
+#~ "              privileged   mesmo que -p\n"
+#~ "              verbose      mesmo que -v\n"
+#~ "              vi           usa interface de edição de linha estilo vi\n"
+#~ "              xtrace       mesmo que -x\n"
+#~ "      -p  Ligado sempre que IDs de usuário real e efetivo não "
+#~ "corresponderem.\n"
+#~ "          Desabilita processamento do arquivo $ENV e importação de "
+#~ "funções da\n"
+#~ "          shell. Ao desligar essa opção, causa o uid e o gid efetivo "
+#~ "serem\n"
+#~ "          os uid e gid reais.\n"
+#~ "      -t  Sai após a leitura e execução de um comando.\n"
+#~ "      -u  Trata limpeza (unset) de variáveis como um erro quando "
+#~ "substituindo.\n"
+#~ "      -v  Mostra linhas de entrada do shell na medida em que forem "
+#~ "lidas.\n"
+#~ "      -x  Mostra comandos e seus argumentos na medida em que forme "
+#~ "executados.\n"
+#~ "      -B  o shell vai realizar expansão de chaves\n"
+#~ "      -C  Se definido, não permite arquivos normais existentes serem\n"
+#~ "          sobrescritos por redirecionamento da saída.\n"
+#~ "      -E  Se definido, a armadilha ERR é herdada por funções do shell.\n"
+#~ "      -H  Habilita substituição de histórico estilo \"!\". Essa "
+#~ "sinalização está\n"
+#~ "          habilitada por padrão quando  shell é interativa.\n"
+#~ "      -P  Se definida, não resolve links simbólicos ao sair de comandos, "
+#~ "tais\n"
+#~ "          como `cd' (que altera o diretório atual).\n"
+#~ "      -T  Se definido, a armadilha DEBUG é herdada por funções do shell.\n"
+#~ "      --  Atribui quaisquer argumentos restantes aos parâmetros "
+#~ "posicionais.\n"
+#~ "          Se não houver argumentos restantes, os parâmetros posicionais "
+#~ "são\n"
+#~ "          limpos (unset).\n"
+#~ "      -   Atribui quaisquer argumentos restantes aos parâmetros "
+#~ "posicionais.\n"
+#~ "          As opções -x e -v são desligadas.\n"
+#~ "    \n"
+#~ "    Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n"
+#~ "    sinalizações também podem ser usadas por meio de chamada do shell. "
+#~ "As\n"
+#~ "    sinalizações atualmente definidas podem ser encontradas em $-. Os n "
+#~ "ARGs\n"
+#~ "    restantes são parâmetros posicionais e são atribuídos, em ordem, a "
+#~ "$1, $2,\n"
+#~ "    .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n"
+#~ "    mostradas.\n"
+#~ "    \n"
+#~ "    Status de saída:\n"
+#~ "    Retorna sucesso, a menos que uma opção inválida seja fornecida."
+
+# help coproc
+#~ msgid ""
+#~ "Create a coprocess named NAME.\n"
+#~ "    \n"
+#~ "    Execute COMMAND asynchronously, with the standard output and "
+#~ "standard\n"
+#~ "    input of the command connected via a pipe to file descriptors "
+#~ "assigned\n"
+#~ "    to indices 0 and 1 of an array variable NAME in the executing shell.\n"
+#~ "    The default NAME is \"COPROC\".\n"
+#~ "    \n"
+#~ "    Exit Status:\n"
+#~ "    Returns the exit status of COMMAND."
+#~ msgstr ""
+#~ "Cria um coprocesso chamado NOME.\n"
+#~ "    \n"
+#~ "    Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n"
+#~ "    do comando conectados via um `pipe' (redirecionamento) para "
+#~ "descritores\n"
+#~ "    de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n"
+#~ "    no shell em execução. O NOME padrão é \"COPROC\".\n"
+#~ "    \n"
+#~ "    Status de saída:\n"
+#~ "    Retorna o status de saída de COMANDO."
+
 #~ msgid "Missing `}'"
 #~ msgstr "Faltando `}'"
 
@@ -7830,6 +8227,9 @@ msgstr ""
 #~ msgid "\t\twhen the argument to `cd' is not found in the current"
 #~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for"
 
+#~ msgid "\t\tdirectory."
+#~ msgstr "\t\tencontrado no diretório atual."
+
 #~ msgid ""
 #~ "HISTFILE        The name of the file where your command history is stored."
 #~ msgstr ""
index 5c7cb9a8b68c7a1d270bcfe31216572cf17ad18d..572d6424425a7d1c3597164af16e55f5e3e2880a 100644 (file)
Binary files a/po/ro.gmo and b/po/ro.gmo differ
index 2b91db364dad0f1232ac7089eb3947ccc3ece5fa..2daed94ed510355c8013d2921578771edd298be0 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 2.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 1997-08-17 18:42+0300\n"
 "Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -14,121 +14,121 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ro\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "incluziune greºitã în interval"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr ""
 
-#: arrayfunc.c:578
-#, fuzzy, c-format
+#: arrayfunc.c:586
+#, c-format
 msgid "%s: invalid associative array key"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: nu se poate atribui cãtre index ne-numeric"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr ""
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr ""
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr ""
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
-#, fuzzy, c-format
+#: builtins/alias.def:131 variables.c:1842
+#, c-format
 msgid "`%s': invalid alias name"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr ""
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr ""
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, fuzzy, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/bind.def:270
-#, fuzzy, c-format
-msgid "`%s': cannot unbind"
-msgstr "%s: comandã negãsitã"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, fuzzy, c-format
 msgid "`%s': unknown function name"
 msgstr "%s: funcþie doar în citire (readonly)"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr ""
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr ""
 
-#: builtins/break.def:79 builtins/break.def:121
-#, fuzzy
+#: builtins/bind.def:353 builtins/bind.def:368
+#, fuzzy, c-format
+msgid "`%s': cannot unbind"
+msgstr "%s: comandã negãsitã"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
-msgstr "logout"
+msgstr ""
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr ""
 
@@ -139,241 +139,240 @@ msgid ""
 "    Without EXPR, returns "
 msgstr ""
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr ""
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "prea mulþi parametri"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
-msgstr "\t\tdirectorul curent."
+msgstr "director superior."
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr ""
 
-#: builtins/common.c:102
-#, fuzzy, c-format
+#: builtins/common.c:96
+#, c-format
 msgid "line %d: "
-msgstr "slot %3d: "
+msgstr ""
 
-#: builtins/common.c:140 error.c:265
-#, fuzzy, c-format
+#: builtins/common.c:134 error.c:264
+#, c-format
 msgid "warning: "
-msgstr "în scriere"
+msgstr ""
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr ""
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, fuzzy, c-format
 msgid "%s: option requires an argument"
 msgstr "opþiunea necesitã un parametru: -"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr ""
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, fuzzy, c-format
 msgid "%s: not found"
 msgstr "%s: comandã negãsitã"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, fuzzy, c-format
 msgid "%s: invalid option"
 msgstr "%c%c: opþiune invalidã"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, fuzzy, c-format
 msgid "%s: invalid option name"
 msgstr "%c%c: opþiune invalidã"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, fuzzy, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s' nu este un identificator valid"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 #, fuzzy
 msgid "invalid octal number"
 msgstr "numãr de semnal invalid"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 #, fuzzy
 msgid "invalid hex number"
 msgstr "numãr de semnal invalid"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 #, fuzzy
 msgid "invalid number"
 msgstr "numãr de semnal invalid"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr ""
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr ""
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variabilã doar în citire"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr ""
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 #, fuzzy
 msgid "argument"
 msgstr "se aºteaptã parametru"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr ""
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr ""
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, fuzzy, c-format
 msgid "%s: no job control"
 msgstr "nici un control de job în acest shell"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 #, fuzzy
 msgid "no job control"
 msgstr "nici un control de job în acest shell"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, fuzzy, c-format
 msgid "%s: restricted"
 msgstr "%s: jobul a fost terminat"
 
-#: builtins/common.c:312
-#, fuzzy
+#: builtins/common.c:306
 msgid "restricted"
-msgstr "Terminat"
+msgstr ""
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr ""
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "eroare de legãturã (pipe): %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr ""
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr ""
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, fuzzy, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: Redirectare ambiguã"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr ""
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr ""
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr ""
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr ""
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 #, fuzzy
 msgid "can only be used in a function"
 msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr ""
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funcþie doar în citire (readonly)"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, fuzzy, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "$%s: nu se poate asigna în acest mod"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr ""
@@ -407,69 +406,69 @@ msgstr ""
 msgid "%s: cannot delete: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: este director"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, fuzzy, c-format
 msgid "%s: not a regular file"
 msgstr "%s: nu se poate executa fiºierul binar"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr ""
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: nu se poate executa fiºierul binar"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, fuzzy, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, fuzzy, c-format
 msgid "logout\n"
 msgstr "logout"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr ""
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr ""
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr ""
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 #, fuzzy
 msgid "no command found"
 msgstr "%s: comandã negãsitã"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr ""
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, fuzzy, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr ""
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr ""
@@ -484,39 +483,38 @@ msgstr "op
 msgid "%s: option requires an argument -- %c\n"
 msgstr "opþiunea necesitã un parametru: -"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr ""
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr ""
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, fuzzy, c-format
 msgid "hits\tcommand\n"
 msgstr "ultima comandã."
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, fuzzy, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -528,20 +526,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr ""
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr ""
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, fuzzy, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: se aºteaptã expresie întreagã (integer)"
@@ -555,89 +554,88 @@ msgstr "%s: variabil
 msgid "no other options allowed with `-x'"
 msgstr ""
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr ""
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 #, fuzzy
 msgid "Unknown error"
 msgstr "Eroare necunoscutã %d"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "se aºteaptã expresie"
 
 #: builtins/mapfile.def:178
-#, fuzzy, c-format
+#, c-format
 msgid "%s: not an indexed array"
-msgstr "%s: variabilã fãrã limitã"
+msgstr ""
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr ""
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr ""
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
-#, fuzzy, c-format
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#, c-format
 msgid "%s: invalid line count"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, fuzzy, c-format
 msgid "%s: invalid array origin"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%s:subscriere interval invalid"
 
-#: builtins/mapfile.def:317
-#, fuzzy, c-format
+#: builtins/mapfile.def:316
+#, c-format
 msgid "%s: invalid callback quantum"
-msgstr "numãr de semnal invalid"
+msgstr ""
 
-#: builtins/mapfile.def:350
-#, fuzzy
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
-msgstr "%s: variabilã fãrã limitã"
+msgstr ""
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr ""
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr ""
 
-#: builtins/printf.def:467
-#, fuzzy, c-format
+#: builtins/printf.def:475
+#, c-format
 msgid "`%c': invalid time format specification"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr ""
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr ""
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr ""
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr ""
@@ -650,22 +648,22 @@ msgstr "director superior."
 #: builtins/pushd.def:360
 #, fuzzy, c-format
 msgid "%s: invalid argument"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%s necesitã un parametru"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 #, fuzzy
 msgid "<no current directory>"
 msgstr "\tnoul director de lucru curent."
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr ""
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr ""
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -689,7 +687,7 @@ msgid ""
 "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -714,7 +712,7 @@ msgid ""
 "    The `dirs' builtin displays the directory stack."
 msgstr ""
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -740,41 +738,41 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr ""
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, fuzzy, c-format
 msgid "read error: %d: %s"
 msgstr "eroare de legãturã (pipe): %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 #, fuzzy
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, fuzzy, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, fuzzy, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, fuzzy, c-format
 msgid "%s: not an array variable"
 msgstr "%s: variabilã fãrã limitã"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, fuzzy, c-format
 msgid "%s: not a function"
 msgstr "%s: funcþie doar în citire (readonly)"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: nu s-a putut crea: %s"
@@ -784,20 +782,20 @@ msgstr "%s: nu s-a putut crea: %s"
 msgid "shift count"
 msgstr "shift [n]"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr ""
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr ""
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr ""
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, fuzzy, c-format
 msgid "%s: file not found"
 msgstr "%s: comandã negãsitã"
@@ -811,62 +809,62 @@ msgstr ""
 msgid "cannot suspend a login shell"
 msgstr "Ieºire dintr-un login al shell-ului."
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr ""
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr ""
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, fuzzy, c-format
 msgid "%s is a function\n"
 msgstr "%s: funcþie doar în citire (readonly)"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr ""
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr ""
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr ""
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, fuzzy, c-format
 msgid "`%c': bad command"
 msgstr "%c%c: opþiune invalidã"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, fuzzy, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: nu s-a putut crea: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 #, fuzzy
 msgid "limit"
 msgstr "limitã CPU"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, fuzzy, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: nu s-a putut crea: %s"
@@ -886,409 +884,418 @@ msgstr ""
 msgid "`%c': invalid symbolic mode character"
 msgstr ""
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr ""
 
-#: error.c:165
+#: error.c:164
 #, fuzzy, c-format
 msgid "last command: %s\n"
 msgstr "ultima comandã."
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr ""
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 #, fuzzy
 msgid "unknown command error"
 msgstr "Eroare necunoscutã %d"
 
-#: error.c:464
+#: error.c:463
 #, fuzzy
 msgid "bad command type"
 msgstr "ºi nume de comandã."
 
-#: error.c:465
+#: error.c:464
 #, fuzzy
 msgid "bad connector"
 msgstr "conector greºit `%d'"
 
-#: error.c:466
+#: error.c:465
 #, fuzzy
 msgid "bad jump"
 msgstr "Salt invalid %d"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variabilã fãrã limitã"
 
-#: eval.c:209
+#: eval.c:245
 #, fuzzy, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "%ca expirat aºteptând introducere de date: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr ""
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr ""
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 #, fuzzy
 msgid "pipe error"
 msgstr "eroare de legãturã (pipe): %s"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: comandã negãsitã"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, fuzzy, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: este director"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: nu se poate executa fiºierul binar"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr ""
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, fuzzy, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "nu se poate duplica fd %d în fd 0: %s"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "nivel de recursivitate al expresiei depãºit"
 
-#: expr.c:283
+#: expr.c:291
 #, fuzzy
 msgid "recursion stack underflow"
 msgstr "Stivã recursivitate prea puþin folositã(underflow)"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "eroare de sintaxã în expresie "
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "s-a încercat asignare cãtre non-variabilã"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "eroare de sintaxã în expresie "
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "împãrþire la 0"
 
-#: expr.c:542
+#: expr.c:591
 #, fuzzy
 msgid "bug: bad expassign token"
 msgstr "bug: identificator(token) expassign greºit %d"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "`:' aºteptat dupã expresie condiþionalã"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr ""
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "`)' lipsã"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 #, fuzzy
 msgid "syntax error: operand expected"
 msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr ""
 
-#: expr.c:1419
+#: expr.c:1510
 #, fuzzy, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr ""
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "valoare prea mare pentru bazã"
 
-#: expr.c:1546
+#: expr.c:1637
 #, fuzzy, c-format
 msgid "%s: expression error\n"
 msgstr "eroare de redirectare"
 
-#: general.c:68
+#: general.c:69
 #, fuzzy
 msgid "getcwd: cannot access parent directories"
 msgstr "getwd: nu s-au putut accesa directoarele pãrinte"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr ""
 
-#: input.c:271
+#: input.c:266
 #, fuzzy, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "nu se poate aloca descriptor de fiºier nou pentru inputul bash din fd %d: %s"
 
-#: input.c:279
+#: input.c:274
 #, fuzzy, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "check_bash_input: buffer deja existent pentru fd nou %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr ""
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr ""
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr ""
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, fuzzy, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: Nu existã pid-ul (%d)!\n"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, fuzzy, c-format
 msgid "Signal %d"
 msgstr "Semnal Necunoscut #%d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Finalizat"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stopat"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, fuzzy, c-format
 msgid "Stopped(%s)"
 msgstr "Stopat"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "În rulare"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Finalizat(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Ieºire %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Stare necunoscutã"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(core dumped) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, fuzzy, c-format
 msgid "  (wd: %s)"
 msgstr "(wd actual: %s)\n"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, fuzzy, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid copil (de la %d la %d) a întâlnit o eroare %d: %s\n"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, fuzzy, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "aºteptaþi: pid-ul %d nu este rezultat(child) al acestui shell"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr ""
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: jobul a fost terminat"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr ""
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 
-#: jobs.c:3970
-#, fuzzy, c-format
+#: jobs.c:4120
+#, c-format
 msgid "%s: line %d: "
-msgstr "slot %3d: "
+msgstr ""
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd actual: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 #, fuzzy
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_jobs: getpgrp eºuat: %s"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr ""
+
+#: jobs.c:4263
 #, fuzzy
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_jobs: disciplinã linie: %s"
 
-#: jobs.c:4114
+#: jobs.c:4273
 #, fuzzy
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_jobs: getpgrp eºuat: %s"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr ""
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "nici un control de job în acest shell"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "necunoscut"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr ""
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 
@@ -1330,25 +1337,25 @@ msgstr ""
 msgid "network operations not supported"
 msgstr ""
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr ""
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr ""
 
-#: locale.c:259
-#, fuzzy, c-format
+#: locale.c:272
+#, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
+msgstr ""
 
-#: locale.c:261
-#, fuzzy, c-format
+#: locale.c:274
+#, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
+msgstr ""
 
 #: mailcheck.c:439
 msgid "You have mail in $_"
@@ -1363,154 +1370,154 @@ msgstr "Ave
 msgid "The mail in %s has been read\n"
 msgstr "Mailul din %s a fost citit\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 #, fuzzy
 msgid "syntax error: arithmetic expression required"
 msgstr "eroare de sintaxã în expresie "
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 #, fuzzy
 msgid "syntax error: `;' unexpected"
 msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, fuzzy, c-format
 msgid "syntax error: `((%s))'"
 msgstr "eroare de sintaxã"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: tip de instrucþiune greºit %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, fuzzy, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "EOF brusc în cãutare dupã `%c'"
 
-#: parse.y:4410
+#: parse.y:4606
 #, fuzzy
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF brusc în cãutare dupã `%c'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, fuzzy, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 #, fuzzy
 msgid "syntax error in conditional expression"
 msgstr "eroare de sintaxã în expresie "
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr ""
 
-#: parse.y:4501
+#: parse.y:4697
 #, fuzzy
 msgid "expected `)'"
 msgstr "se aºteaptã `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:4579
+#: parse.y:4775
 #, fuzzy, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "%s: se aºteaptã operator binar"
 
-#: parse.y:4583
+#: parse.y:4779
 #, fuzzy
 msgid "conditional binary operator expected"
 msgstr "%s: se aºteaptã operator binar"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:4620
+#: parse.y:4816
 #, fuzzy, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "`:' aºteptat dupã expresie condiþionalã"
 
-#: parse.y:4623
+#: parse.y:4819
 #, fuzzy, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "`:' aºteptat dupã expresie condiþionalã"
 
-#: parse.y:4627
+#: parse.y:4823
 #, fuzzy, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "`:' aºteptat dupã expresie condiþionalã"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, fuzzy, c-format
 msgid "syntax error near `%s'"
 msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "eroare de sintaxã"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 #, fuzzy
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF brusc în cãutare dupã `%c'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr ""
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1539,91 +1546,95 @@ msgstr ""
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr ""
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr ""
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr ""
 
-#: redir.c:178
+#: redir.c:174
 #, fuzzy, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: Redirectare ambiguã"
 
-#: redir.c:182
+#: redir.c:178
 #, fuzzy, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: nu se poate accesa(clobber) fiºierul existent"
 
-#: redir.c:187
+#: redir.c:183
 #, fuzzy, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
 
-#: redir.c:192
+#: redir.c:188
 #, fuzzy, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, fuzzy, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: nu pot asigna listã membrului intervalului"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr ""
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 #, fuzzy
 msgid "redirection error: cannot duplicate fd"
 msgstr "eroare de redirectare"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr ""
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr ""
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, fuzzy, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opþiune invalidã"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr ""
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr ""
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: este director"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nu am nici un nume!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, fuzzy, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU %s, versiunea %s\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1632,54 +1643,54 @@ msgstr ""
 "Folosire:\t%s [GNU opþiune lungã] [opþiune] ...\n"
 "\t%s [GNU opþiune lungã] [opþiune] fiºier script ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "opþiuni lungi GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Opþiuni ale shell-ului:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD sau -c comandã\t\t(doar invocaþie)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s sau -o opþiune\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Apãsaþi `%s -c \"set-ajutor\"' pentru mai multe informaþii despre opþiunile "
 "shell-ului.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Apãsaþi `%s -c ajutor' pentru mai multe informaþii despre comenzile interne "
 "ale shell-ului.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr ""
@@ -1853,108 +1864,113 @@ msgstr "Semnal Necunoscut #"
 msgid "Unknown Signal #%d"
 msgstr "Semnal Necunoscut #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, fuzzy, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "substituþie invalidã: nu existã '%s' în %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: nu pot asigna listã membrului intervalului"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 #, fuzzy
 msgid "cannot make pipe for process substitution"
 msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s"
 
-#: subst.c:5798
+#: subst.c:5851
 #, fuzzy
 msgid "cannot make child for process substitution"
 msgstr "nu pot crea un proces copil pentru substituirea procesului: %s"
 
-#: subst.c:5848
+#: subst.c:5920
 #, fuzzy, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "nu pot deschide legãtura numitã %s pentru %s: %s"
 
-#: subst.c:5850
+#: subst.c:5922
 #, fuzzy, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "nu pot deschide legãtura numitã %s pentru %s: %s"
 
-#: subst.c:5873
+#: subst.c:5945
 #, fuzzy, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s "
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "substituþie invalidã: nu existã ')' de final în %s"
 
-#: subst.c:6083
+#: subst.c:6190
 #, fuzzy
 msgid "cannot make pipe for command substitution"
 msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s"
 
-#: subst.c:6127
+#: subst.c:6233
 #, fuzzy
 msgid "cannot make child for command substitution"
 msgstr "nu pot crea un copil pentru substituþia de comenzi: %s"
 
-#: subst.c:6153
+#: subst.c:6259
 #, fuzzy
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: nu se poate duplica legãtura (pipe) ca fd 1: %s"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr ""
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: substituþie invalidã"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%c%c: opþiune invalidã"
+msgstr ""
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%s: variabilã fãrã limitã"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametru null sau nesetat"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametru null sau nesetat"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expresie subºir < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: substituþie invalidã"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: nu se poate asigna în acest mod"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 
-#: subst.c:9349
+#: subst.c:10043
 #, fuzzy, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "substituþie invalidã: nu existã ')' de final în %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr ""
@@ -1977,113 +1993,118 @@ msgstr "se a
 msgid "`)' expected, found %s"
 msgstr "se aºteaptã `)', s-a primit %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: se aºteaptã operator unar"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: se aºteaptã operator binar"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "lipseºte ']'"
 
-#: trap.c:224
+#: trap.c:216
 #, fuzzy
 msgid "invalid signal number"
 msgstr "numãr de semnal invalid"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr ""
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
-#: trap.c:447
+#: trap.c:470
 #, fuzzy, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: Semnal invalid %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "eroare în importarea definiþiei funcþiei pentru '%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr ""
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr ""
 
-#: variables.c:2432
-#, fuzzy, c-format
+#: variables.c:2674
+#, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s: nu pot asigna listã membrului intervalului"
+msgstr ""
 
-#: variables.c:3043
+#: variables.c:3453
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr ""
 
-#: variables.c:4218
+#: variables.c:4698
 #, fuzzy, c-format
 msgid "%s has null exportstr"
 msgstr "%s: parametru null sau nesetat"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr ""
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr ""
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
-#: variables.c:5619
-#, fuzzy, c-format
+#: variables.c:6272
+#, c-format
 msgid "%s: %s: cannot open as FILE"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr ""
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr ""
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr ""
 
 #: version.c:46 version2.c:46
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr ""
 
 #: version.c:47 version2.c:47
@@ -2105,25 +2126,25 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr ""
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, fuzzy, c-format
 msgid "%s: cannot allocate %lu bytes"
-msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
+msgstr "%s: nu s-a putut crea: %s"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, fuzzy, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
+msgstr "%s: nu s-a putut crea: %s"
 
 #: builtins.c:45
 msgid "alias [-p] [name[=value] ... ]"
@@ -2355,8 +2376,8 @@ msgstr "umask [-S] [mod]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
-msgstr "wait [n]"
+msgid "wait [-fn] [id ...]"
+msgstr "echo [-n] [arg ...]"
 
 #: builtins.c:181
 #, fuzzy
@@ -2460,7 +2481,7 @@ msgstr ""
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2473,8 +2494,8 @@ msgstr ""
 
 #: builtins.c:239
 #, fuzzy
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "type [-apt] nume [nume ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "unset [-f] [-v] [nume ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2484,8 +2505,8 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 
 #: builtins.c:256
@@ -2593,7 +2614,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 
 #: builtins.c:369
@@ -2739,11 +2760,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2811,12 +2832,18 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -2829,7 +2856,7 @@ msgid ""
 "    Returns success unless a write error occurs."
 msgstr ""
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -2856,7 +2883,7 @@ msgid ""
 "    Returns success unless NAME is not a shell builtin or an error occurs."
 msgstr ""
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -2868,7 +2895,7 @@ msgid ""
 "    Returns exit status of command or success if command is null."
 msgstr ""
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -2909,7 +2936,7 @@ msgid ""
 "    encountered or an error occurs."
 msgstr ""
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -2932,7 +2959,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:709
+#: builtins.c:713
 #, fuzzy
 msgid ""
 "Exit the shell.\n"
@@ -2941,7 +2968,7 @@ msgid ""
 "    is that of the last command executed."
 msgstr "Iese din shell cu starea lui N. Dacã N este omis, starea de ieºire"
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -2950,7 +2977,7 @@ msgid ""
 "    in a login shell."
 msgstr ""
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -2980,7 +3007,7 @@ msgid ""
 "occurs."
 msgstr ""
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -2992,7 +3019,7 @@ msgid ""
 "    Status of command placed in foreground, or failure if an error occurs."
 msgstr ""
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3006,7 +3033,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3030,7 +3057,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3045,14 +3072,14 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
 "given."
 msgstr ""
 
-#: builtins.c:836
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3061,7 +3088,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3086,7 +3114,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3110,7 +3138,7 @@ msgid ""
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3127,7 +3155,7 @@ msgid ""
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
 
-#: builtins.c:918
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3150,7 +3178,7 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3195,7 +3223,7 @@ msgid ""
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3216,7 +3244,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3247,7 +3275,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3259,7 +3287,7 @@ msgid ""
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
 
-#: builtins.c:1047
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3345,7 +3373,7 @@ msgid ""
 "    Returns success unless an invalid option is given."
 msgstr ""
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -3367,7 +3395,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -3386,7 +3414,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -3407,7 +3435,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -3418,7 +3446,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -3432,7 +3460,7 @@ msgid ""
 "    FILENAME cannot be read."
 msgstr ""
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -3446,7 +3474,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3529,7 +3557,7 @@ msgid ""
 "    false or an invalid argument is given."
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -3537,7 +3565,7 @@ msgid ""
 "    be a literal `]', to match the opening `['."
 msgstr ""
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -3549,7 +3577,7 @@ msgid ""
 "    Always succeeds."
 msgstr ""
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -3593,7 +3621,7 @@ msgid ""
 "given."
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -3623,7 +3651,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -3672,7 +3700,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -3690,7 +3718,7 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -3698,19 +3726,21 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -3725,7 +3755,7 @@ msgid ""
 "    option is given."
 msgstr ""
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -3738,7 +3768,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -3755,7 +3785,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -3775,7 +3805,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -3791,7 +3821,7 @@ msgid ""
 "    The return status is the return status of PIPELINE."
 msgstr ""
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -3802,7 +3832,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -3823,7 +3853,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -3834,7 +3864,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -3845,7 +3875,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -3858,7 +3888,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -3872,7 +3902,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -3883,7 +3913,7 @@ msgid ""
 "    Returns the status of the last command executed."
 msgstr ""
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -3897,7 +3927,7 @@ msgid ""
 "    Returns the status of the resumed job."
 msgstr ""
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -3908,7 +3938,7 @@ msgid ""
 "    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
 msgstr ""
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -3936,7 +3966,7 @@ msgid ""
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -3990,7 +4020,7 @@ msgid ""
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -4021,7 +4051,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -4048,7 +4078,7 @@ msgid ""
 "    change fails."
 msgstr ""
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -4077,14 +4107,13 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -4098,7 +4127,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -4137,7 +4166,7 @@ msgid ""
 "    error occurs."
 msgstr ""
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -4155,16 +4184,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -4177,7 +4210,7 @@ msgid ""
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -4192,6 +4225,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -4208,7 +4242,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -4250,34 +4284,13 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
 
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "times"
-#~ msgstr "ori"
-
-#, fuzzy
-#~ msgid "wait [pid]"
-#~ msgstr "wait [n]"
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
-
-#, fuzzy
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
-
-#, fuzzy
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
-
 #~ msgid "Missing `}'"
 #~ msgstr "`}' lipsã"
 
@@ -4332,6 +4345,9 @@ msgstr ""
 #~ msgid "You have entered %d (%d) items.  The distribution is:\n"
 #~ msgstr "Aþi introdus %d (%d) elemente.  Distribuþia este:\n"
 
+#~ msgid "slot %3d: "
+#~ msgstr "slot %3d: "
+
 #~ msgid "<unknown>"
 #~ msgstr "<necunoscut>"
 
@@ -4375,15 +4391,15 @@ msgstr ""
 #~ msgid "Bad code in sig.c: sigprocmask"
 #~ msgstr "Cod invalid în sig.c: sigprocmask"
 
-#~ msgid "%s: bad array subscript"
-#~ msgstr "%s:subscriere interval invalid"
-
 #~ msgid "can't make pipes for process substitution: %s"
 #~ msgstr "nu pot face legãturi (pipes) pentru substituþia procesului: %s"
 
 #~ msgid "reading"
 #~ msgstr "în citire"
 
+#~ msgid "writing"
+#~ msgstr "în scriere"
+
 #~ msgid "process substitution"
 #~ msgstr "substituire de proces"
 
@@ -4410,6 +4426,9 @@ msgstr ""
 #~ msgid "[%s: bad subscript"
 #~ msgstr "[%s: subscripþie invalidã"
 
+#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
+
 #~ msgid "digits occur in two different argv-elements.\n"
 #~ msgstr "se regãsesc digiþi în douã elemente argv diferite.\n"
 
@@ -4437,9 +4456,6 @@ msgstr ""
 #~ msgid "Unknown directive `%s'"
 #~ msgstr "Directivã necunoscutã '%s'"
 
-#~ msgid "%s requires an argument"
-#~ msgstr "%s necesitã un parametru"
-
 #~ msgid "%s must be inside of a $BUILTIN block"
 #~ msgstr "%s trebuie sa fie înãuntrul unui bloc $BUILTIN"
 
@@ -4461,9 +4477,15 @@ msgstr ""
 #~ msgid "mkbuiltins: Out of virtual memory!\n"
 #~ msgstr "mkbuiltins: Memorie virtualã plinã!\n"
 
+#~ msgid ":"
+#~ msgstr ":"
+
 #~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]"
 #~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]"
 
+#~ msgid "times"
+#~ msgstr "ori"
+
 #~ msgid "%[DIGITS | WORD] [&]"
 #~ msgstr "%[DIGIÞI | CUVÂNT] [&]"
 
@@ -6323,6 +6345,9 @@ msgstr ""
 #~ "\t\tcãuta atunci când parametrii specificaþi comenzii `cd' nu sunt gãsiþi "
 #~ "în"
 
+#~ msgid "\t\tdirectory."
+#~ msgstr "\t\tdirectorul curent."
+
 #~ msgid ""
 #~ "HISTFILE        The name of the file where your command history is stored."
 #~ msgstr ""
index 86ac1a6a372846e824b1f87971d4b43a2fad0393..821df4f76a605c48763c8fa2e23a2aae5e784991 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index b42cd5d5765191677a09d1464edabd92021f8f4b..39b333e77fd98b1c88787aa4c8db3b23b2f27ff9 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
 # Copyright (C) 2002 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Ruslan Batdalov <linnando@tolkien.ru>, 2002.
-# Pavel Maryanov <acid@jack.kiev.ua>, 2014.
+# Pavel Maryanov <acid@jack.kiev.ua>, 2014, 2018.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.3-rc2\n"
+"Project-Id-Version: bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2014-10-13 17:51+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-04-17 14:09+0300\n"
 "Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
-"Language-Team: Russian <gnu@mx.ru>\n"
+"Language-Team: Russian <gnu@d07.ru>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ru\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 1.6.9\n"
+"X-Generator: Poedit 2.0.6\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "неправильный индекс массива"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: удаляется атрибут nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: не удаётся преобразовать индекс в ассоциативный массив"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s: Ð½ÐµÐ´ÐµÐ¹Ñ\81Ñ\82виÑ\82елÑ\8cный ключ ассоциативного массива"
+msgstr "%s: Ð½ÐµÐ´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имый ключ ассоциативного массива"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: не удаётся присвоить значение нечисловому индексу"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr ""
 "%s: %s: необходимо использовать индекс при назначении ассоциативному массиву"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: не удаётся создать файл: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: не удаётся найти keymap для команды"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: первый непробельный символ не является «\"»"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "нет закрывающего «%c» в %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: отсутствует разделитель-двоеточие"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "расширение скобки: не удаётся выделить память для %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "расширение скобки: не удаётся выделить память для %d элементов"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "расширение скобки: не удалось выделить память для «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "«%s»: недопустимый псевдоним"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "редактирование строки не включено"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "«%s»: недопустимое название keymap"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: не удаётся прочитать файл: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "«%s»: не удаётся отменить привязку"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "«%s»: неизвестное название функции"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s не привязан ни к какой клавише.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s можно вызвать через "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "«%s»: не удаётся отменить привязку"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "счётчик циклов"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "имеет значение только для циклов «for», «while» или «until»"
 
@@ -147,234 +148,233 @@ msgstr ""
 "    \n"
 "    Без EXPR выполняет возврат "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Не задана переменная HOME"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "слишком много аргументов"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "\t\tкаталоге."
+msgstr "нулевой каталог"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Не задана переменная OLDPWD"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "строка %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "предупреждение: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: использование: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: для параметра требуется аргумент"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: требуется числовой аргумент"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: не найден"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: недопустимый параметр"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: недопустимое название параметра"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "«%s»: это недопустимый идентификатор"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "недопустимое восьмеричное число"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "недопустимое шестнадцатеричное число"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "недопустимое число"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: недопустимое указание сигнала"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "«%s»: это не идентификатор процесса и не допустимый указатель задания"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: переменная только для чтения"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s за пределами диапазона"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "аргумент"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s за пределами диапазона"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: нет такого задания"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: нет управления заданиями"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "нет управления заданиями"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: ограниченный режим"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "ограниченный режим"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: это не не встроенная команда bash"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "ошибка записи: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "ошибка назначения атрибутов терминала: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "ошибка получения атрибутов терминала: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: ошибка определения текущего каталога: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: неоднозначный указатель задания"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "справка отсутствует в этой версии"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: недопустимое название действия"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: нет определения завершения"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "предупреждение: параметр -F может работать не так, как ожидается"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "предупреждение: параметр -C может работать не так, как ожидается"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "сейчас не выполняет функцию завершения"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "можно использовать только внутри функции"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: ссылочная переменная не может быть массивом"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: переменные nameref, ссылающиеся сами на себя, не допускаются"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: круговая ссылка на имя"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: недопустимое название переменной для ссылки на имя"
+msgstr "«%s»: недопустимое название переменной для ссылки на имя"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "«-f» нельзя использовать для создания функций"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: значение функции можно только считать"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: присвоение составного массива в кавычках устарело"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: переменные массива нельзя уничтожить таким образом"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: не удаётся преобразовать ассоциативный массив в индексированный"
@@ -396,7 +396,7 @@ msgstr "не удаётся найти %s в общем объекте %s: %s"
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "загрузка функции %s завершилась ошибкой (%d): не загружена"
 
 #: builtins/enable.def:512
 #, c-format
@@ -408,68 +408,68 @@ msgstr "%s: не загружается динамически"
 msgid "%s: cannot delete: %s"
 msgstr "%s: не удаётся удалить: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: это каталог"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: это не обычный файл"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: файл слишком велик"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: не удаётся запустить бинарный файл"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: не удаётся запустить: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "выход\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "не командный процессор login: используйте «exit»"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Есть остановленные задания.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Есть выполняемые задания.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "команда не найдена"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "указание журнала команд"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: не удаётся открыть временный файл: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "текущий"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "задание %d запущено без возможности управления"
@@ -484,29 +484,28 @@ msgstr "%s: недопустимый параметр — %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: для параметра требуется аргумент — %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "хэширование отключено"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: таблица хэшей пустая\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "вызовы\tкоманда\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Команды, соответствующие ключевому слову «"
 msgstr[1] "Команды, соответствующие ключевым словам «"
 msgstr[2] "Команды, соответствующие ключевым словам «"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -514,12 +513,12 @@ msgstr ""
 "нет разделов справки, соответствующих «%s».  Попробуйте ввести «help help» или "
 "«man -k %s» или «info %s»."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: не удаётся открыть файл: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -541,20 +540,21 @@ msgstr ""
 "отключена.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "нельзя использовать больше одного параметра -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "положение журнала команд"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: недопустимый аргумент"
+msgstr "%s: недопустимая метка времени"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: не удалось расширить журнал команд"
@@ -568,16 +568,16 @@ msgstr "%s: ошибка inlib"
 msgid "no other options allowed with `-x'"
 msgstr "с параметром «-x» нельзя указывать другие параметры"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: аргументами должны быть идентификаторы процессов или заданий"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Неизвестная ошибка"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "ожидается выражение"
 
@@ -586,69 +586,69 @@ msgstr "ожидается выражение"
 msgid "%s: not an indexed array"
 msgstr "%s: это не индексированный массив"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: недопустимое указание дескриптора файла"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: invalid недопустимый дескриптор файла: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: недопустимое число строк"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: недопустимое начало массива"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: недопустимый квант обратного вызова"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "пустое имя переменной массива"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "требуется поддержка переменных массива"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "«%s»: отсутствует символ форматирования"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "«%c»: недопустимое указание формата времени"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "«%c»: недопустимый символ форматирования"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "предупреждение: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "ошибка анализа формата: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "отсутствует шестнадцатеричная цифра для \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "отсутствует цифра Юникода для \\%c"
@@ -662,19 +662,19 @@ msgstr "отсутствует другой каталог"
 msgid "%s: invalid argument"
 msgstr "%s: недопустимый аргумент"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<отсутствует текущий каталог>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "стек каталогов пуст"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "индекс стека каталогов"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -716,7 +716,7 @@ msgstr ""
 "      -N\tпоказать N-ю запись справа в списке каталогов,\n"
 "\tпоказанного при вызове без параметров, начиная с нуля."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -763,7 +763,7 @@ msgstr ""
 "    \n"
 "    Встроенная команда dirs показывает стек каталогов."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -806,62 +806,62 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: недопустимое указание тайм-аута"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "ошибка чтения: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "возврат можно выполнить только из функции или исходного скрипта"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "нельзя одновременно сбросить функцию и переменную"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: не удаётся выполнить сброс"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: не удаётся выполнить сброс: %s доступен только для чтения"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: это не переменная массива"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: это не функция"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: не удаётся выполнить сброс"
+msgstr "%s: не удаётся экспортировать"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "счётчик смещений"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "нельзя одновременно задать и сбросить параметры командного процессора"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: недопустимое название параметра командного процессора"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "требуется аргумент с именем файла"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: файл не найден"
@@ -874,61 +874,61 @@ msgstr "не удаётся приостановить"
 msgid "cannot suspend a login shell"
 msgstr "не удаётся приостановить командный процессор login"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s — это псевдонимом для «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s — это ключевое слово командного процессора\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s — это функция\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s — это встроенная команда bash\n"
+msgstr "%s — это специальная встроенная команда bash\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s — это встроенная команда bash\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s является %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "для %s вычислен хэш (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: недопустимый аргумент ограничения"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "«%c»: недопустимая команда"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: не удаётся получить ограничение: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "ограничение"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: не удаётся изменить ограничение: %s"
@@ -947,365 +947,375 @@ msgstr "«%c»: недопустимый оператор символьного
 msgid "`%c': invalid symbolic mode character"
 msgstr "«%c»: недопустимый знак символьного режима"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " строка "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "последняя команда: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Прерывание..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "ИНФО: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "неизвестная ошибка команды"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "неверный тип команды"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "неверный соединитель"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "ошибка перехода"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: не заданы границы переменной"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\\aпревышено время ожидания ввода: auto-logout\n"
+msgstr "\aпревышено время ожидания ввода: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "не удаётся перенаправить стандартный ввод из /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: «%c»: недопустимый символ форматирования"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] всё ещё существует"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "ошибка конвейера"
 
-#: execute_cmd.c:4496
-#, fuzzy, c-format
+#: execute_cmd.c:4671
+#, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: достигнут максимальный уровень вложенности функций (%d)"
+msgstr "eval: достигнут максимальный уровень вложенности eval (%d)"
 
-#: execute_cmd.c:4508
-#, fuzzy, c-format
+#: execute_cmd.c:4683
+#, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: достигнут максимальный уровень вложенности функций (%d)"
+msgstr "%s: достигнут максимальный уровень вложенности source (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: достигнут максимальный уровень вложенности функций (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 "%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: команда не найдена"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: неверный интерпретатор"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: не удаётся запустить бинарный файл: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "«%s»: это специальная встроенная команда"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "не удаётся скопировать файловый дескриптор %d в %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "слишком много вложенных выражений"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "отрицательное переполнение стека вложенных выражений"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "синтаксическая ошибка в выражении"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "значение можно присвоить только переменной"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "синтаксическая ошибка в выражении"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "деление на 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "ошибка: недопустимый маркер присвоения выражения"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "в условном выражении должен быть символ «:»"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "экспонента меньше нуля"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr ""
 "после предварительного инкремента или декремента ожидается идентификатор "
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "отсутствует символ «)»"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "синтаксическая ошибка: ожидается операнд"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "ошибка синтаксиса: недопустимый математический оператор"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (неверный маркер «%s»)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "недопустимое математическое основание"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "слишком большое значение для основания"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: ошибка выражения\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: нет доступа к родительским каталогам"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "не удаётся выделить новый дескриптор для входных данных bash из файлового "
 "дескриптора %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: у нового файлового дескриптора %d уже есть буфер"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "идентификатор дочернего процесса %d принадлежит запущенному заданию %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "удаление остановленного задания %d с группой процесса %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: процесс %5ld (%s) в the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 "add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: нет процесса с таким идентификатором"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Сигнал %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Завершён"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Остановлен"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Остановлен (%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Запущен"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Завершён (%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Выход %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Состояние неизвестно"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(стек памяти сброшен на диск) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (рабочий каталог: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "дочерний setpgid (%ld к %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr ""
 "wait: процесс %ld не является дочерним процессом этого командного процессора"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: нет записей процесса %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: задание %d остановлено"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: выполнение задания прервано"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: задание %d уже выполняется в фоновом режиме"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr ""
 "waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого "
 "блока"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: строка %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (стек памяти сброшен на диск)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(рабочий каталог: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: ошибка вызова getpgrp "
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: дисциплина строки"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: дисциплина строки"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "не удаётся задать группу процесса терминала (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "этот командный процессор не может управлять заданиями"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: ошибка утверждения: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1314,43 +1324,43 @@ msgstr ""
 "\\r\n"
 "malloc: %s:%d: утверждение не удалось\\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "неизвестно"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: блок в списке свободных затёрт"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: вызван с аргументом уже освобождённого блока"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: вызван с аргументом невыделенного блока"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
 "диапазона"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: размеры начального и конечного блока отличаются"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: вызван с аргументом невыделенного блока"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
 "диапазона"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: размеры начального и конечного блока отличаются"
 
@@ -1392,22 +1402,22 @@ msgstr "%s: недопустимое указание сетевого пути"
 msgid "network operations not supported"
 msgstr "сетевые операции не поддерживаются"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: не удаётся изменить язык (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: не удаётся изменить язык (%s): %s"
@@ -1425,152 +1435,154 @@ msgstr "Для вас есть почта в $_"
 msgid "The mail in %s has been read\n"
 msgstr "Сообщения в %s были прочитаны\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "синтаксическая ошибка: требуется математическое выражение"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "синтаксическая ошибка: ожидается «;»"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "синтаксическая ошибка: «((%s))»"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: недопустимый тип инструкции %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) превысил SIZE_MAX (%lu): строка "
+"обрезана"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "достигнуто максимальное число переменных here-document"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "неожиданный конец файла во время поиска «%c»"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "неожиданный конец файла во время поиска «]]»"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "синтаксическая ошибка в условном выражении: неожиданный маркер «%s»"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "синтаксическая ошибка в условном выражении"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "неожиданный маркер «%s», ожидался «)»"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "ожидается символ «)»"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "неожиданный аргумент «%s» для условного унарного оператора"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "неожиданный аргумент для условного унарного оператора"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "неожиданный маркер «%s», ожидается условный бинарный оператор"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "ожидается условный бинарный оператор"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "неожиданный аргумент «%s» для условного бинарного оператора"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "неожиданный аргумент для условного бинарного оператора"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "неожиданный маркер «%c» в условной команде"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "неожиданный маркер «%s» в условной команде"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "неожиданный маркер %d в условной команде"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "синтаксическая ошибка рядом с неожиданным маркером «%s»"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "синтаксическая ошибка рядом с «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "синтаксическая ошибка: неожиданный конец файла"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "синтаксическая ошибка"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Для выхода из командного процессора используйте «%s».\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "неожиданный конец файла во время поиска «)»"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: функция «%s» не найдена"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: возможен бесконечный цикл повторов"
 
 #: pcomplib.c:182
 #, c-format
@@ -1596,90 +1608,94 @@ msgstr "xtrace_set: пустой указатель на файл"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: «%c»: недопустимый символ форматирования"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "файловый дескриптор за пределами диапазона"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: неоднозначное перенаправление"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: не удаётся перезаписать существующий файл"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: ограниченный режим: не удаётся перенаправить вывод"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "не удаётся создать временный файл для блока here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: не удаётся присвоить файловый дескриптор переменной"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port не поддерживается без сети"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "ошибка перенаправления: не удаётся создать копию файлового дескриптора"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "не удалось найти /tmp; создайте этот каталог"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp должен быть допустимым названием каталога"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: недопустимый параметр"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "не Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ñ\81бÑ\80оÑ\81иÑ\82Ñ\8c Ñ\80ежим nodelay Ð´Ð»Ñ\8f Ñ\84айлового Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80а %d"
+msgstr "не Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c UID %d: Ñ\8dÑ\84Ñ\84екÑ\82ивнÑ\8bй UID %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "не Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ñ\81бÑ\80оÑ\81иÑ\82Ñ\8c Ñ\80ежим nodelay Ð´Ð»Ñ\8f Ñ\84айлового Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80а %d"
+msgstr "не Ñ\83даÑ\91Ñ\82Ñ\81Ñ\8f Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c GID %d: Ñ\8dÑ\84Ñ\84екÑ\82ивнÑ\8bй GID %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "не удаётся запустить отладчик: режим отладки отключён"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: это каталог"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Не удаётся определить название"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, версия %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1688,54 +1704,55 @@ msgstr ""
 "Использование:\t%s [длинные параметры GNU] [параметры] ...\n"
 "\t\t%s [длинные параметры GNU] [параметры] файл_скрипта ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Длинные параметры GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Параметры командного процессора:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr ""
 "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s или -o параметр\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Для получения дополнительных сведений о параметрах командного процессора "
 "введите «%s -c \"help set\"».\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Для получения дополнительных сведений о встроенных командах введите «%s -c "
 "help».\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Для отправки сообщений об ошибках используйте команду «bashbug».\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "Домашняя страница bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"Общая справка по использованию программ GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: недопустимая операция"
@@ -1909,94 +1926,98 @@ msgstr "Неизвестный номер сигнала"
 msgid "Unknown Signal #%d"
 msgstr "Неизвестный номер сигнала %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "неверная подстановка: нет закрывающей «%s» в %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: не удаётся присвоить список элементу массива"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "не удаётся создать конвейер для подстановки процесса"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "не удаётся создать дочерний процесс для подстановки"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "не удаётся открыть именованный конвейер %s для чтения"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "не удаётся открыть именованный конвейер %s для записи"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 "не удаётся скопировать именованный конвейер %s  в файловый дескриптор %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "невеÑ\80наÑ\8f Ð¿Ð¾Ð´Ñ\81Ñ\82ановка: Ð½ÐµÑ\82 Ð·Ð°ÐºÑ\80Ñ\8bваÑ\8eÑ\89ей Â«`» Ð² %s"
+msgstr "подÑ\81Ñ\82ановка ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b: Ð²Ð¾ Ð²Ñ\85однÑ\8bÑ\85 Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð¿Ñ\80оигноÑ\80иÑ\80ован Ð½Ñ\83левой Ð±Ð°Ð¹Ñ\82"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "не удаётся создать конвейер для подстановки команды"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "не удаётся создать дочерний процесс для подстановки команды"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 "command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: недопустимое название переменной для ссылки на имя"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: неверная подстановка"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: недопустимое число строк"
+msgstr "%s: недопустимое непрямое раскрытие"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "«%s»: недопустимый псевдоним"
+msgstr "%s: недопустимое имя переменной"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: параметр не задан или пустой"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: параметр не задан или пустой"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: заданное подстрокой выражение меньше нуля"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: недопустимая подстановка"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: такое присвоение невозможно"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2004,12 +2025,12 @@ msgstr ""
 "в будущих версиях командный процессор оценка будет выполняться как "
 "математическая подстановка"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "неверная подстановка: нет закрывающей «`» в %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "нет совпадений: %s"
@@ -2032,30 +2053,35 @@ msgstr "ожидается символ «)»"
 msgid "`)' expected, found %s"
 msgstr "ожидается символ «)», обнаружено %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: ожидается унарный оператор"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: ожидается бинарный оператор"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "отсутствует символ «]»"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "недопустимый номер сигнала"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: достигнут максимальный уровень вложенности eval (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2063,88 +2089,88 @@ msgstr ""
 "run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) "
 "самому себе"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: неверный сигнал %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "ошибка импорта определения функции для «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "слишком высокий уровень командного процессора (%d); сбрасывается до 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: в текущей области отсутствует контекст функции"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: переменной не может быть присвоено значение"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: недопустимое название переменной для ссылки на имя"
+msgstr "%s: целое числе присваивается ссылке на имя"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: в текущей области отсутствует контекст функции"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s имеет пустую exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "недопустимый символ %d в exportstr для %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "отсутствует «=» в exportstr для %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: заголовок shell_variables не является контекстом функции"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: отсутствует контекст global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: заголовок shell_variables не является областью временного "
 "окружения"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: не удаётся открыть как ФАЙЛ"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: недопустимое значение для дескриптора файла трассировки"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: значение совместимости за пределами диапазона"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "© Free Software Foundation, Inc, 2013."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "© Free Software Foundation, Inc, 2016."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2169,22 +2195,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "НИКАКАЯ ГАРАНТИЯ не предоставляется в пределах, допускаемых законом."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: не удаётся выделить %lu байт (выделено %lu байт)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: не удаётся выделить %lu байт"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: не удаётся выделить %lu байт (выделено %lu байт)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: не удаётся выделить %lu байт"
@@ -2239,9 +2265,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 msgstr "declare [-aAfFgilnrtux] [-p] [имя[=значение] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] имя[=значение] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] имя[=значение] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2314,9 +2339,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [задание ...]"
+msgstr "disown [-h] [-ar] [задание ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2391,16 +2415,16 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] имя [имя ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ограничение]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [режим]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [идентификатор ...]"
 
 #: builtins.c:181
@@ -2493,8 +2517,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v переменная] формат [аргументы]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2503,7 +2528,6 @@ msgstr ""
 "P префикс] [-S суффикс] [имя ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
@@ -2513,28 +2537,28 @@ msgstr ""
 "суффикс] [слово]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o параметр] [-DE] [имя ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c "
-"quantum] [массив]"
+"mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C "
+"callback] [-c quantum] [массив]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c "
 "quantum] [массив]"
 
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2558,10 +2582,10 @@ msgstr ""
 "    Если не указать аргументы, alias выводит список псевдонимов\n"
 "    в виде «alias имя=значение» на стандартный вывод.\n"
 "    \n"
-"    В противном случае каждому имени, для которого указано значение, "
-"назначается псевдоним.\n"
-"    Если значение в конце содержит пробел, следующее слово будет\n"
-"    проверяться на замену псевдонима при его развёртывании.\n"
+"    В противном случае каждому имени, для которого указано значение,\n"
+"    назначается псевдоним. Если значение в конце содержит пробел,\n"
+"    следующее слово будет проверяться на замену псевдонима при его\n"
+"    развёртывании.\n"
 "    \n"
 "    Параметры:\n"
 "      -p\tвыводит все определённые псевдонимы\n"
@@ -2571,7 +2595,6 @@ msgstr ""
 "    псевдоним."
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2580,10 +2603,10 @@ msgid ""
 "    \n"
 "    Return success unless a NAME is not an existing alias."
 msgstr ""
-"УдалÑ\8fеÑ\82 ÐºÐ°Ð¶Ð´Ð¾Ðµ Ð¸Ð¼Ñ\8f из списка определённых псевдонимов.\n"
+"УдалÑ\8fеÑ\82 Ð²Ñ\81е Ð¸Ð¼ÐµÐ½Ð° из списка определённых псевдонимов.\n"
 "    \n"
 "    Параметры:\n"
-"      -a\tÑ\83далÑ\8fеÑ\82 Ð²Ñ\81е Ð¾Ð¿Ñ\80еделениÑ\8f Ð¿Ñ\81евдонимов\n"
+"      -a\tÑ\83далÑ\8fеÑ\82 Ð²Ñ\81е Ð¿Ñ\81евдонимÑ\8b\n"
 "    \n"
 "    Возвращает успех, если имя связано с существующим псевдонимом."
 
@@ -2710,6 +2733,7 @@ msgstr ""
 "    Возвращает 0, если N не больше или равно 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2720,7 +2744,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Выполнение встроенных команд.\n"
 "    \n"
@@ -2978,11 +3002,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3109,6 +3133,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3149,7 +3179,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если не произошла ошибка записи."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3172,7 +3202,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если не произошла ошибка записи."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3226,7 +3256,7 @@ msgstr ""
 "    Возвращает успех, если указанное имя не является встроенной командой или "
 "не произошла ошибка."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3245,7 +3275,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние выхода команды или успех, если команда пустая."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3329,7 +3359,7 @@ msgstr ""
 "достигнут\n"
 "    конец параметров или возникла ошибка."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3372,7 +3402,7 @@ msgstr ""
 "    Возвращает успех, если команда не была найдена или не возникла ошибка "
 "перенаправления."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3384,7 +3414,7 @@ msgstr ""
 "    Закрывает командный процессор с состоянием N. Если N не указан,\n"
 "    состоянием выхода будет состояние последней выполненной команды."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3397,7 +3427,7 @@ msgstr ""
 "    Закрывает командный процессор login с состоянием выхода N. Возвращает\n"
 "    ошибку, если выполняется не в командном процессоре login."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3454,7 +3484,7 @@ msgstr ""
 "    Возвращает успех или состояние выполненной команды. В случае ошибки "
 "возвращает ненулевое состояние."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3475,7 +3505,7 @@ msgstr ""
 "    Возвращает состояние команды, переведённой в интерактивный режим, или "
 "ошибку, если возникла ошибка."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3498,7 +3528,7 @@ msgstr ""
 "    Возвращает успех, если не включено управление заданиями или не произошла "
 "ошибка."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3543,7 +3573,7 @@ msgstr ""
 "    Возвращает успех, если команда была найдена или был указан допустимый "
 "параметр."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3559,7 +3589,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3585,7 +3615,7 @@ msgstr ""
 "    Возвращает успех, если был найден шаблон или был указан допустимый "
 "параметр."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3595,7 +3625,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3655,7 +3686,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3704,7 +3735,7 @@ msgstr ""
 "ошибка.\n"
 "    Если указан параметр -x, возвращает состояние выхода команды."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3735,7 +3766,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый параметр или задание."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3781,7 +3812,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3871,7 +3902,7 @@ msgstr ""
 "    Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном "
 "случае let возвращает 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3893,7 +3924,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3978,7 +4009,7 @@ msgstr ""
 "присвоения переменной\n"
 "    или не был указан недопустимый файловый дескриптор как аргумент для -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3999,7 +4030,7 @@ msgstr ""
 "    Возвращает N или ошибку, если командный процессор не выполняет функцию "
 "или скрипт."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4184,7 +4215,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый параметр."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4227,7 +4258,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или указанное имя "
 "доступно для записи."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4261,7 +4292,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый параметр или имя."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4302,7 +4333,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый параметр или имя."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4320,7 +4351,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если N положительный или меньше $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4346,7 +4377,7 @@ msgstr ""
 "ошибку,\n"
 "    если файл не удаётся прочитать."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4374,7 +4405,7 @@ msgstr ""
 "    Возвращает успех, если не включено управление заданиями или не произошла "
 "ошибка."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4547,7 +4578,7 @@ msgstr ""
 "ложно\n"
 "    или указан недопустимый аргумент."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4559,7 +4590,7 @@ msgstr ""
 "    Это синоним встроенной команды test, но последним аргументом должна\n"
 "    быть скобка «]», соответствующая открывающей «[»."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4579,7 +4610,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Всегда возвращает успех."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4662,7 +4693,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый сигнал или параметр."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4723,7 +4754,7 @@ msgstr ""
 "    Возвращает успех, если все указанные имена были найдены, или ошибку в "
 "противном случае."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4821,7 +4852,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4858,7 +4889,8 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если был указан допустимый РЕЖИМ или параметр."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4866,13 +4898,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4894,7 +4928,7 @@ msgstr ""
 "    Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n"
 "    указан недопустимый идентификатор или параметр."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4920,7 +4954,7 @@ msgstr ""
 "    Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n"
 "    указан недопустимый идентификатор или параметр."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4943,7 +4977,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4974,7 +5008,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5016,7 +5050,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5046,7 +5080,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращаемое состояние соответствует состоянию выхода конвейера."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5064,7 +5098,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5100,7 +5134,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5118,7 +5152,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5136,7 +5170,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -5161,7 +5195,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние выхода команды."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5186,7 +5220,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает успех, если переменная ИМЯ доступно для записи."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5205,7 +5239,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние последней выполненной команды."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5231,7 +5265,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает состояние возобновлённого задания."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5249,7 +5283,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    Возвращает 1, если выражение равно 0, в противном случае возвращает 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5304,7 +5338,7 @@ msgstr ""
 "    Состояние выхода:\n"
 "    0 или 1 в зависимости от значения выражения."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5416,7 +5450,7 @@ msgstr ""
 "команды,\n"
 "    \t\tкоторые должны быть сохранены в журнале.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5476,7 +5510,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или удалось\n"
 "    перейти в каталог."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5527,7 +5561,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или удалось\n"
 "    перейти в каталог."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5581,14 +5615,14 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5620,7 +5654,7 @@ msgstr ""
 "    Возвращает успех, если указанный параметр включён. Возвращает ошибку,\n"
 "    если был указан недопустимый параметр или параметр отключён."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5695,7 +5729,7 @@ msgstr ""
 "ошибка\n"
 "    записи или присвоения."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5714,10 +5748,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5747,7 +5785,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5770,7 +5808,8 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или не возникла "
 "ошибка."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5785,6 +5824,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5829,7 +5869,7 @@ msgstr ""
 "    Возвращает успех, если был указан допустимый параметр или для имени\n"
 "    определена спецификация завершения."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5908,7 +5948,7 @@ msgstr ""
 "доступен для записи\n"
 "    и является индексированным."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5918,9 +5958,8 @@ msgstr ""
 "    \n"
 "    Синоним команды «mapfile»."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "© Free Software Foundation, Inc, 2013."
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "© Free Software Foundation, Inc, 2012."
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5934,9 +5973,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "© Free Software Foundation, Inc, 2012."
-
 #~ msgid "Missing `}'"
 #~ msgstr "Пропущен символ `}'"
 
index 366d2179bc429c798657606bd9859582212177de..f33d34c0ad69538573c394653a661d6b8ebe5d4d 100644 (file)
Binary files a/po/sk.gmo and b/po/sk.gmo differ
index 702e7a5f27739042e44f14782a38c4b3168e11f3..1a50dd262448ce0bb65286d1c78ce0c2aabfa19f 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 4.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2011-03-16 21:22+0100\n"
 "Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -15,122 +15,123 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sk\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "chybný index poľa"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: nie je možné previesť indexované pole na asociatívne"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: neplatný kľúč asociatívneho poľa"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: nie je možné priradiť nenumerickému indexu"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: pri priraďovaní asociatívnemu poľu je potrebné použiť index"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: nie je možné vytvoriť: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: nie je možné nájsť klávesovú mapu pre príkaz"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "chýba zatvárajúca „%c“ v %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: chýba oddeľovač dvojbodka"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s“: neplatný názov aliasu"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "úpravy riadka nie sú zapnuté"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s“: neplatný názov klávesovej mapy"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: nie je možné prečítať: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s“: nie je možné zrušiť väzbu (unbind)"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s“: neznámy názov funkcie"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s nie je zviazaný (bind) s žiadnymi klávesmi.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s je možné vyvolať ako "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: nie je možné zrušiť väzbu (unbind)"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "počet cyklov"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“"
 
@@ -144,234 +145,234 @@ msgstr ""
 "    \n"
 "    Bez EXPR, vracia "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME nebola nastavená"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "príliš veľa argumentov"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "na nový vrchol zásobníka."
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD nebola nastavená"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "riadok %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "upozornenie: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: použitie "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: voľba vyžaduje argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: vyžaduje sa numerický argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: nenájdené"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: neplatná voľba"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: neplatný názov voľby"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s“: nie je platný identifikátor"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "neplatné osmičkové číslo"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "neplatné šestnástkové číslo"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "neplatné číslo"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: neplatné určenie signálu"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s“: nie je pid ani platný špecifikátor úlohy"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: premenná len na čítanie"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s je mimo rozsahu"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s mimo rozsahu"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: taká úloha neexistuje"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: riadenie úloh nedostupné"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "riadenie úloh nedostupné"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: obmedzené"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "obmedzené"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: nie je vstavaný príkaz (builtin) shellu"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "chyba zapisovania: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "chyba pri nastavovaní atribútov terminálu: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "chyba pri zisťovaní atribútov terminálu: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: chyba pri zisťovaní aktuálneho adresára: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: nejednoznačné určenie úlohy"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: neplatný názov akcie"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: chýba špecifikácia dokončovania"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "upozornenie: voľba -F nemusí fungovať tak ako očakávate"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "upozornenie: voľba -C nemusí fungovať tak ako očakávate"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "momentálne sa nevykonáva funkcia doplňovania"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "je možné použiť iba vo funkcii"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru"
+msgstr "„%s“: neplatný názov aliasu"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "nie je možné použiť „-f“ pre tvorbu funkcií"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkcia iba na čítanie"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: nie je možné takto robiť deštrukciu premenných polí"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: nie je možné previesť asociatívne pole na indexované"
@@ -405,68 +406,68 @@ msgstr "%s: nie je dynamicky načítané"
 msgid "%s: cannot delete: %s"
 msgstr "%s: nie je možné zmazať: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: je adresár"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: nie je obyčajný súbor"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: súbor je príliš veľký"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: nie je možné vykonať binárny súbor"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: nie je možné spustiť: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "odhlásenie\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "toto nie je login shell: použite „exit“"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Existujú zastavené úlohy.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Existujú bežiace úlohy.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "prákaz nenájdený"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "špecifikácia histórie"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: nie je možné otvoriť odkladací súbor: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "aktuálny"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "úloha %d začala bez riadenia úloh"
@@ -481,29 +482,28 @@ msgstr "%s: neplatná voľba -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: voľba vyžaduje argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hašovanie vypnuté"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hašovacia tabuľka je prázdna\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "použití\tpríkaz\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Príkazy shellu zodpovedajúce kľúčovému slovu „"
 msgstr[1] "Príkazy shellu zodpovedajúce kľúčovým slovám „"
 msgstr[2] "Príkazy shellu zodpovedajúce kľúčovým slovám „"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -511,12 +511,12 @@ msgstr ""
 "pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n"
 "Skúste „help help“ alebo „man -k %s“ alebo „info %s“."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: nie je možné otvoriť: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -537,20 +537,21 @@ msgstr ""
 "Hviezdička (*) vedľa názvu znamená, že príkaz je vypnutý.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "nie je možné použiť viac ako jednu z volieb -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "poloha histórie"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: neplatný argument limitu"
+msgstr "%s: neplatný názov voľby"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: rozšírenie histórie zlyhalo"
@@ -564,16 +565,16 @@ msgstr "%s: inlib zlyhalo"
 msgid "no other options allowed with `-x'"
 msgstr "iné voľby prípustné s „-x“"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenty musia byť ID procesov alebo úloh"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Neznáma chyba"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "očakával sa výraz"
 
@@ -582,69 +583,69 @@ msgstr "očakával sa výraz"
 msgid "%s: not an indexed array"
 msgstr "%s: nie je indexované pole"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: neplatná špecifikácia popisovača súboru"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: neplatný popisovač súboru: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: neplatný počet riadkov"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: neplatný začiatok poľa"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: neplatné kvantum spätného volania"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "názov prázdnej premennej poľa"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "vyžaduje sa podpora premennej poľa"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s“: chýba formátovací znak"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "„%c“: neplatná špecifikácia formátu času"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c“: neplatný formátovací znak"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "upozornenie: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "chýba hexadecimálna číslica v \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "chýba číslica Unicode pre \\%c"
@@ -658,19 +659,19 @@ msgstr "žiadny iný adresár"
 msgid "%s: invalid argument"
 msgstr "%s: neplatný argument limitu"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<žiadny aktuálny adresár>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "zásobník adresárov je prázdny"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "index zásobníka adresárov"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -712,7 +713,7 @@ msgstr ""
 "    -N\tzobrazuje N-tú položku počítajúc sprava zoznamu, ktorý zobrazuje\n"
 "    \tdirs vyvolaný bez volieb, počínajúc nulou."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -756,7 +757,7 @@ msgstr ""
 "    \n"
 "    Zásobník adresárov môžete zobraziť vstavaným príkazom „dirs“."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -800,42 +801,42 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: neplatná špecifikácia expirácie (timeout)"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "chyba pri čítaní: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "návrat („return“) je možné vykonať iba z funkcie alebo skriptu vyvolaného "
 "pomocou „source“"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "nie je možné zároveň zrušiť funkciu a premennú"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: nie je možné zrušiť"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: nie je možné zrušiť: len na čítanie %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: nie je premenná poľa"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: nie je funkcia"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: nie je možné zrušiť"
@@ -844,20 +845,20 @@ msgstr "%s: nie je možné zrušiť"
 msgid "shift count"
 msgstr "posun o"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "nie je možné zároveň nastaviť aj zrušiť voľby shellu"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: neplatný názov voľby shellu"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "vyžaduje sa argument názov súboru"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: súbor sa nepodarilo nájsť"
@@ -870,61 +871,61 @@ msgstr "nie je možné suspendovať"
 msgid "cannot suspend a login shell"
 msgstr "nie je možné suspendovať login shell"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s má alias „%s“\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s je kľúčové slovo shellu\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s je funkcia\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s je vstavaný príkaz (builtin) shellu\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s je vstavaný príkaz (builtin) shellu\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s je %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s je hašovaný (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: neplatný argument limitu"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c“: chybný príkaz"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: nie je možné zistiť limit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "obmedzenie"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: nie je možné zmeniť limit: %s"
@@ -943,357 +944,367 @@ msgstr "„%c“: neplatný operátor symbolického režimu"
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c“: neplatný znak symbolického režimu"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " riadok "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "posledný príkaz: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Ruší sa..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "chyba neznámeho príkazu"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "chybný typ príkazu"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "chybný konektor"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "chybný skok"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: neviazaná premenná"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\ačas vypršal pri čakaní na vstup: automatické odhlásenie\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "nie je možné presmerovať štandardný vstup z /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "chyba rúry"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: obmedzené: nie jemožné uviesť „/“ v názvoch príkazov"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: príkaz nenájdený"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: chybný interpreter"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: nie je možné vykonať binárny súbor"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s je vstavaný príkaz (builtin) shellu\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "nie je možné duplikovať fd %d na fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "bola prekročená úroveň rekurzie výrazu"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "podtečenie zásobníka rekurzie"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "chyba syntaxe vo výraze"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "pokus o priradenie mimo premennej"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "chyba syntaxe vo výraze"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "delenie nulou"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "chyba: chybný expassign token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "pre podmienený výraz sa očakáva „:“"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponent menší ako 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "po pre-inkrementácii alebo pre-dekrementácii sa očakáva identifikátor"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "chýba „)“"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "chyba syntaxe: očakáva sa operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "chyba syntaxe: neplatný aritmetický operátor"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (chybný token je „%s”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "neplatný aritmetický základ"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "hodnota je ako základ príliš veľká"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: chyba výrazu\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: nie je možné pristupovať k rodičovským adresárom"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "nie j emožné resetovať nodelay režim fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "nie je možné alokovať nový popisovač súboru pre vstup bashu z fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: bufer už existuje pre nový fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp rúra"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: proces %5ld (%s) v the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) je stále označený ako živý"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: taký pid neexistuje"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signál %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Hotovo"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Zastavené"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Zastavené(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Beží"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Hotovo(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Ukončenie %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Neznámy stav"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(bol uložený výpis pamäte) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid detského procesu (%ld to %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld nie je dieťa tohto shellu"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Neexistuje záznam o procese %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: úloha %d je zastavená"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: úloha skončila"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: úloha %d už je v pozadí"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurčitému blokovaniu"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: riadok %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (bol uložený výpis pamäte)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd teraz: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: funkcia getpgrp zlyhala"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: riadkový systém"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: riadkový systém"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "nie je možné nastaviť skupinu procesu terminálu (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "v tomto shelli nie je riadenie úloh"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: zlyhal predpoklad: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1302,39 +1313,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: zbabraný predpoklad\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "neznámy"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: blok na zozname voľných zaprataný"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: zavolaný s argumentom už uvoľneného bloku"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: zavolaný s argumentom nealokovaného bloku"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: veľkosti začiatočného a konečného bloku (chunk) sa líšia"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: zavolaný s argumentom nealokovaného bloku"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: veľkosti začiatočného a konečného bloku (chunk) sa líšia"
 
@@ -1376,22 +1387,22 @@ msgstr "%s: chybná špecifikácia sieťovej cesty"
 msgid "network operations not supported"
 msgstr "sieťové operácie nie sú podporované"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: nie je možné zmeniť locale (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: nie je možné zmeniť locale (%s): %s"
@@ -1409,148 +1420,148 @@ msgstr "Máte novú poštu v súbore $_"
 msgid "The mail in %s has been read\n"
 msgstr "Pošta v súbore %s bola prečítaná\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "chyba syntaxe: neočakávaná „;“"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "chyba syntaxe: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: chybný typ inštrukcie %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr ""
 "here-document na riadku %d oddelený znakom konca riadku (očakávalo sa „%s”)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: inštrukcia presmerovania „%d“ mimo rozsahu"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „%c“"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "neočakávaný koniec súboru počas hľadania „]]“"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "chyba syntaxe v podmienečnom príkaze: neočakávaný token „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "chyba syntaxe v podmienečnom príkaze"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "neočakávaný token „%s“, očakávalo sa `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "očakávalo sa `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "neočakávaný argument „%s“ podmienečného unárneho operátora"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "neočakávaný argument podmienečného unárneho operátora"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "neočakávaný token „%s“, očakáva sa podmienečný binárny operátor"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "očakáva sa podmienečný binárny operátor"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "neočakávaný argument „%s“ v podmienečnom binárnom operátore"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "neočakávaný argument v podmienečnom binárnom operátore"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "neočakávaný token „%c“ v podmienečnom príkaze"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "neočakávaný token „%s“ v podmienečnom príkaze"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "neočakávaný token %d v podmienečnom príkaze"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "chyba syntaxe neďaleko neočakávaného tokenu „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "chyba syntaxe neďaleko „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "chyba syntaxe: neočakávaný koniec súboru"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "chyba syntaxe"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Na opustenie shellu použite „%s“.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „)“"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "dokončovanie: funkcia „%s“ nebola nájdená"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1579,90 +1590,94 @@ msgstr "xtrace_set: ukazovateľ súboru je NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c“: neplatný formátovací znak"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "popisovač súboru mimo rozsahu"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: nejednoznačné presmerovanie"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: nie je možné prepísať existujúci súbor"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: ombedzené: nie je možné presmerovať výstup"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "nie je možné vytvoriť odkladací súbor pre here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: nie je možné priradiť popisovač súboru premennej"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "chyba presmerovania: nie je možné duplikovať fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "nenašiel sa /tmp, vytvorte ho prosím!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp musí byť platný názov adresára"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: neplatná voľba"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "nie j emožné resetovať nodelay režim fd %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "nie j emožné resetovať nodelay režim fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: je adresár"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Nemám meno!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, verzia %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1671,53 +1686,53 @@ msgstr ""
 "Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n"
 "\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU dlhé voľby:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Voľby shellu:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s alebo -o voľba\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch "
 "(builtins) shellu.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: neplatná operácia"
@@ -1891,92 +1906,97 @@ msgstr "Neznáme číslo signálu"
 msgid "Unknown Signal #%d"
 msgstr "Neznámy signál #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "chybná substitúcia: chýba „%s“ v %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: nie je možné priradiť zoznam položke poľa"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "nie je možné vytvoriť rúru pre substitúciu procesov"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "nie je možné vytvoriť potomka pre substitúciu procesov"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "nie je možné otvoriť pomenovanú rúru %s na čítanie"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "nie je možné otvoriť pomenovanú rúru %s na zápis"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "nie je možné duplikovať pomenovanú rúru %s ako fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "chybná substitúcia: : v reťazci %s chýba uzatvárajúci „`”"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "nie je možné vytvoriť rúru pre substitúciu príkazov"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "nie je možné vytvoriť potomka pre substitúciu príkazov"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: nie je možné duplikovať rúru ako fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, fuzzy, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: chybná substitúcia"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: neplatný počet riadkov"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "„%s“: neplatný názov aliasu"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter je null alebo nenastavený"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter je null alebo nenastavený"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: výraz podreťazca < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: chybná substitúcia"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: nie je možné vykonať priradenie takýmto spôsobom"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1984,12 +2004,12 @@ msgstr ""
 "budúce verzie shellu budú vynucovať vyhodnocovanie ako aritmetickú "
 "substitúciu"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "chybná substitúcia: : v reťazci %s chýba uzatvárajúci „`”"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "bez zhody: %s"
@@ -2012,114 +2032,119 @@ msgstr "očakávala sa „)“"
 msgid "`)' expected, found %s"
 msgstr "očakávala sa „)“, bolo nájdené %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: očakával sa unárny operátor"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: očakával sa binárny operátor"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "chýba „]“"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "neplatné číslo signálu"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: chybný signál %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "chyba pri importe definície funkcie „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "úroveň shellu (%d) je príliš vysoká, nastavujem späť na 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie"
 
-#: variables.c:2432
+#: variables.c:2674
 #, fuzzy, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: nie je možné priradiť popisovač súboru premennej"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s má null exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "neplatný znak %d v exportstr %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "žiadne „=“ v exportstr %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: hlavička shell_variables nie je kontext funkcie"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: chýba kontext global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: hlavička shell_variables nie je dočasný rozsah prostredia"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: nemožno otvoriť ako SÚBOR"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s je mimo rozsahu"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2147,22 +2172,22 @@ msgstr ""
 "Nie sú poskytované ŽIADNE ZÁRUKY v rozsahu aký povoľuje\n"
 "aplikovateľné právo.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: nie je možné alokovať %lu bajtov (%lu bajtov alokovaných)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: nie je možné alokovať %lu bajtov"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: nie je možné alokovať %lu bajtov (%lu bajtov alokovaných)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: nie je možné alokovať %lu bajtov"
@@ -2382,13 +2407,13 @@ msgstr "umask [-p] [-S] [režim]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
 #, fuzzy
 msgid "wait [pid ...]"
-msgstr "wait [id]"
+msgstr "wait [pid]"
 
 #: builtins.c:184
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2476,8 +2501,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] formát [argumenty]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2496,7 +2522,8 @@ msgstr ""
 "prípona] [slovo]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o voľba] [-DE] [názov ...]"
 
 #: builtins.c:242
@@ -2509,9 +2536,10 @@ msgstr ""
 "[-c kvantum] [pole]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n počet] [-O začiatok] [-s počet] [-t] [-u fd] [-C "
 "spätné_volanie] [-c kvantum] [pole]"
@@ -2688,6 +2716,7 @@ msgstr ""
 "    Vráti 0 ak N nie je väčšie alebo rovné 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2698,7 +2727,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Vykonať vstavenú funkciu shellu.\n"
 "    \n"
@@ -2939,11 +2968,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3061,6 +3090,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3093,7 +3128,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak sa nevyskytla sa chyba pri zápise."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3115,7 +3150,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak sa nevyskytla sa chyba pri zápise."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3169,7 +3204,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak NÁZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3188,7 +3223,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3264,7 +3299,7 @@ msgstr ""
 "    Vráti 0 ak je voľba nájdená; zlyhá po dosiahnutí konca reťazca volieb\n"
 "    alebo ak sa vyskytne chyba."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3305,7 +3340,7 @@ msgstr ""
 "    Vráti 0 ak sa nestane, že PRÍKAZ nebol nájdený a nevyskytne sa chyba\n"
 "    presmerovania."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3317,7 +3352,7 @@ msgstr ""
 "    Ukončí shell s návratovou hodnotou N. Ak sa N vynechá, návratová\n"
 "    hodnota  sa nastaví podľa stavu posledného vykonaného príkazu."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3330,7 +3365,7 @@ msgstr ""
 "    Ukončí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n"
 "    spustený v login shelli."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3386,7 +3421,7 @@ msgstr ""
 "    Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n"
 "    chyba."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3406,7 +3441,7 @@ msgstr ""
 "    Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n"
 "    chyba."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3427,7 +3462,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3475,7 +3510,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že NÁZOV nebol nájdený a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3491,7 +3526,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3516,7 +3551,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3526,7 +3561,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3580,7 +3616,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3624,7 +3660,7 @@ msgstr ""
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba.\n"
 "    Ak je použitá voľba -x, vráti sa návratová hodnota PRÍKAZu."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3655,7 +3691,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná JOBSPEC."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3697,7 +3733,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3782,7 +3818,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Ak sa posledný ARG vyhodnotí na 0, let vráti 1; 0 inak sa vráti 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3804,7 +3840,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3877,7 +3913,7 @@ msgstr ""
 "    Vráti 0 ak sa nenarazí pri čítaní nakoniec súboru, nevyprší čas na\n"
 "    čítanie a ako argument -u nebol je zadaný neplatný popisovač."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3898,7 +3934,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti N alebo zlyhá ak shell nevykonáva funkciu či skript."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4070,7 +4106,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4110,7 +4146,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4145,7 +4181,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4185,7 +4221,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4203,7 +4239,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak sa nestalo, že je N záporné alebo väčšie ako $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4227,7 +4263,7 @@ msgstr ""
 "    Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n"
 "    možné SÚBOR načítať."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4251,7 +4287,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4413,7 +4449,7 @@ msgstr ""
 "    Vráti 0 ak VÝR vyhodnotí ako pravdivý; zlyhá ako sa VÝR vyhodnotí\n"
 "    ako nepravdivý alebo je zadaný neplatný argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4425,7 +4461,7 @@ msgstr ""
 "    Toto je synonymum vsatavanej funkcie „test“, ale posledný\n"
 "    argument musí byť literál „]“, ktorý uzatvára otvárajúcu „[“."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4444,7 +4480,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vždy vráti 0."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4524,7 +4560,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4580,7 +4616,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak boli nájdené všetky NÁZVY; zlyhá ak nie."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4670,7 +4706,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4704,7 +4740,7 @@ msgstr ""
 "    Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4713,13 +4749,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4736,7 +4774,7 @@ msgstr ""
 "    Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n"
 "    neplatná voľba."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -4762,7 +4800,7 @@ msgstr ""
 "    Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n"
 "    voľba."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4784,7 +4822,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4814,7 +4852,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4849,7 +4887,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4877,7 +4915,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Návratová hodnota je návratová hodnota RÚRY."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4895,7 +4933,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4932,7 +4970,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4950,7 +4988,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4968,7 +5006,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -4991,7 +5029,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu PRÍKAZu."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5016,7 +5054,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5034,7 +5072,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu posledného vykonaného príkazu."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5058,7 +5096,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti návratovú hodnotu obnovenej úlohy."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5076,7 +5114,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 1 ak sa VÝRAZ vyhodnotí na 0; inak vráti 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5124,7 +5162,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 alebo 1 v závislosti na hodnote VÝRAZu."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5228,7 +5266,7 @@ msgstr ""
 "    HISTIGNORE\tBodkočiarkami oddelený zoznam vzoriek, ktoré\n"
 "    \t\tsa používajú na rozhodovanie, či sa príkaz uloží do histórie.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5285,7 +5323,7 @@ msgstr ""
 "    Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
 "    chyba pri zmene adresára."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5336,7 +5374,7 @@ msgstr ""
 "    Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
 "    chyba pri zmene adresára."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5388,14 +5426,14 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5426,7 +5464,7 @@ msgstr ""
 "    Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n"
 "    neplatná voľba alebo OPTNAME je vypnuté."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5491,7 +5529,7 @@ msgstr ""
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n"
 "    zápise či priradení."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5510,10 +5548,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5540,7 +5582,7 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5560,7 +5602,8 @@ msgstr ""
 "    Návratová hodnota:\n"
 "    Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5575,6 +5618,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5616,7 +5660,7 @@ msgstr ""
 "    Vráti 0 ak nebola zadaná neplatná voľba a NÁZOV nemá definovanú\n"
 "    špecifikáciu dopĺňania."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5691,7 +5735,7 @@ msgstr ""
 "    Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na čítanie a\n"
 "    nie je to indexované pole."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5701,9 +5745,15 @@ msgstr ""
 "    \n"
 "    Synonymum k „mapfile“."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
+#~ "html>\n"
+#~ msgstr ""
+#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novšia http://gnu.org/licenses/"
+#~ "gpl.html\n"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5717,23 +5767,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "-krát"
 
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novšia http://gnu.org/licenses/"
-#~ "gpl.html\n"
-
-#~ msgid "wait [pid]"
-#~ msgstr "wait [pid]"
-
 #~ msgid ""
 #~ ".  With EXPR, returns\n"
 #~ "    "
index 52935ec884ae642b045ca3cf1244078f205df6e6..696a4c385c571ea79ea3c92f06f32473a3a64495 100644 (file)
Binary files a/po/sl.gmo and b/po/sl.gmo differ
index 9c23fad4f25fe9c9cb5accca70d4e78fb552370c..6644856103c0c21b5a4e3916fa6eedecda95f522 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
-# Slovenian translation for bash.
-# Copyright (C) 2012 Free Software Foundation, Inc.
+# Slovenian translation of bash.
+# Copyright (C) 2012 - 2013 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Klemen Košir <klemen.kosir@gmx.com>, 2012.
-# Andrej Žnidaršič <andrej.znidarsic@gmail.com>, 2012.
-# Damir Jerovšek <damir.jerovsek@gmail.com>, 2012.
+#
+# Damir Jerovšek <damir.jerovsek@gmail.com>, 2012 - 2013.
+# Klemen Košir <klemen913@gmail.com>, 2012 - 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.2\n"
+"Project-Id-Version: bash-4.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2012-05-29 16:17+0100\n"
-"Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2013-03-09 20:21+0100\n"
+"Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sl\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
 "%100==4 ? 3 : 0);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "slab podpis polja"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: ni mogoče pretvoriti zabeleženega polja v povezano polje"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: neveljaven ključ povezanega polja"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: ni mogoče dodeliti v ne-številčno kazalo"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: ni mogoče ustvariti: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: prvi znak brez presledka ni `\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "brez zaključka `%c' v %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: manjka ločilnik dvopičja"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr ""
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr ""
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr ""
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': neveljaven vzdevek"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "urejanje vrstic ni omogočeno"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': neveljavno ime tipkovne razvrstitve"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: ni mogoče brati: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': ni mogoče odvezati"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': neznano ime funkcije"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s ni vezan na nobeno tipko.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s se lahko pokliče s pomočjo "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': ni mogoče odvezati"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "števec zanke"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "smiselno samo v `for', `while', ali `until' zanki"
 
@@ -147,234 +148,234 @@ msgstr ""
 "    \n"
 "    Brez EXPR vrne "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME ni nastavljen"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "preveč argumentov"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "ni druge mape"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD ni nastavljen"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "vrstica %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "opozorilo: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uporaba: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: možnost zahteva argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: zahtevan je števni argument"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: ni mogoče najti"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: neveljavna možnost"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: neveljavno ime možnosti"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': neveljavno določilo"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "neveljavno osmiško število"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "neveljavno šestnajstiško število"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "neveljavno število"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: neveljavno določilo signala"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': ni določilo opravila ali neveljavno določilo posla"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: spremenljivka le za branje"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s izven dosega"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s izven dosega"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: ni takšnega posla"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ni nadzora posla"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ni nadzora posla"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: omejeno"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "omejeno"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: ni vgrajena lupina"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "napaka med pisanjem: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "napaka med nastavljanjem atributov terminala: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "napaka med pridobivanjem atributov terminala: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: dvoumno določilo posla"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr ""
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: neveljavno ime dejanja"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: ni določila dopolnjevanja"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "Opozorilo: možnost -F morda ne bo delovala po pričakovanjih"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "Opozorilo: možnost -C morda ne bo delovala po pričakovanjih"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "trenutno se ne izvaja funkcija dopolnjevanja"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "se lahko uporabi samo v funkciji"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr ""
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr ""
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
-#, fuzzy, c-format
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
+#, c-format
 msgid "%s: circular name reference"
-msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
+msgstr ""
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
+msgstr "`%s': neveljaven vzdevek"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: funkcija samo za branje"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: na ta način ni mogoče uničiti spremenljivk polja"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: ni mogoče pretvoriti povezanega polja v zabeleženo polje"
@@ -408,68 +409,68 @@ msgstr "%s: ni dinamično naloženo"
 msgid "%s: cannot delete: %s"
 msgstr "%s: ni mogoče izbrisati: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: je mapa"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: ni običajna datoteka"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: datoteka je prevelika"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: ni mogoče izvesti binarne datoteke"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: ni mogoče izvesti: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "odjava\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "ni prijavna lupina: uporabite `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Obstajajo ustavljeni posli.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Obstajajo posli, ki se izvajajo.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "najdenega ni nobenega ukaza"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "določilo zgodovine"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: ni mogoče odpreti začasne datoteke: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "trenutno"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "posel %d se je pričel brez nadzora"
@@ -484,22 +485,21 @@ msgstr "%s: neveljavna možnost -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: možnost zahteva argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "razpršitev je onemogočena"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: razpršitvena razpredelnica je prazna\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "zadetki\tukaz\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Ključnih besed, ki se ujemajo z ukazi lupine `"
@@ -507,7 +507,7 @@ msgstr[1] "Ključna beseda, ki se ujema z ukazi lupine `"
 msgstr[2] "Ključni besedi, ki se ujemata z ukazi lupine `"
 msgstr[3] "Ključne besede, ki se ujemajo z ukazi lupine `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -515,12 +515,12 @@ msgstr ""
 "nobena tema pomoči se ne ujema s `%s'.  Poskusite `help help' ali `man -k %"
 "s' ali `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: ni mogoče odpreti: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -541,20 +541,21 @@ msgstr ""
 "Zvezdica (*) poleg imena pomeni, da je ukaz onemogočen.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "ni mogoče uporabiti več kot eno od -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "položaj zgodovine"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: neveljaven argument omejitve"
+msgstr "%s: neveljavno ime možnosti"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: razširitev zgodovine je spodletela"
@@ -568,16 +569,16 @@ msgstr "%s: inlib je spodletel"
 msgid "no other options allowed with `-x'"
 msgstr "druge možnosti niso dovoljene z `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argumenti morajo biti določila opravila ali posla"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Neznana napaka"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "izraz je bil pričakovan"
 
@@ -586,69 +587,69 @@ msgstr "izraz je bil pričakovan"
 msgid "%s: not an indexed array"
 msgstr "%s: ni zabeleženo polje"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: neveljavno določilo opisnika datoteke"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: neveljaven opisnik datoteke: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: neveljavno štetje vrstic"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: neveljaven izvor polja"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: neveljaven del povratnega klica"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "prazno ime spremenljivke polja"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "potrebna podpora spremenljivke polja"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': manjka znak oblike"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': neveljavno določilo vrste časa"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': neveljaven znak oblike"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "opozorilo: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr ""
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "manjka šestnajstiška števka za \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "manjka števka s podporo unicode za \\%c"
@@ -662,19 +663,19 @@ msgstr "ni druge mape"
 msgid "%s: invalid argument"
 msgstr "%s: neveljaven argument omejitve"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<ni trenutne mape>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "sklad mape je prazen"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "kazalo sklada mape"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -715,7 +716,7 @@ msgstr ""
 "      -N\tPrikaže Nti vnos s štetjem z desne strani seznama, prikazan s\n"
 "\tpomočjo map, ko kličemo brez možnosti, začenši z nič."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -761,7 +762,7 @@ msgstr ""
 "    \n"
 "    Ukaz lupine `dirs' prikaže sklad map."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -804,40 +805,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: neveljavno določilo časovne omejitve"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "napaka med branjem: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "ni mogoče ponastaviti funkcije in spremenljivke hkrati"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: ni mogoče ponastaviti"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: ni mogoče ponastaviti: samo za branje %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: ni spremenljivka polja"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: ni funkcija"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, fuzzy, c-format
 msgid "%s: cannot export"
 msgstr "%s: ni mogoče ponastaviti"
@@ -846,20 +847,20 @@ msgstr "%s: ni mogoče ponastaviti"
 msgid "shift count"
 msgstr "štetje premika"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "ni mogoče nastaviti in ponastaviti možnosti lupine hkrati"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: neveljavno ime možnosti lupine"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "zahtevan je argument imena datoteke"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: datoteke ni mogoče najti"
@@ -872,61 +873,61 @@ msgstr "ni mogoče dati v pripravljenost"
 msgid "cannot suspend a login shell"
 msgstr "prijavne lupine ni mogoče dati v pripravljenost"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s je drugo ime za `%s'\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s je ključna beseda lupine\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s je funkcija\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, fuzzy, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s je vgrajena lupina\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s je vgrajena lupina\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s je %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s je razpršeno (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: neveljaven argument omejitve"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': slab ukaz"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: ni mogoče dobiti omejitve: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "omejitev"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: ni mogoče spremeniti omejitve: %s"
@@ -945,357 +946,367 @@ msgstr "`%c': neveljaven operator simbolnega načina"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': neveljaven znak simbolnega načina"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " vrstica "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "zadnji ukaz: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Prekinjanje ..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr ""
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "neznana napaka ukaza"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "slaba vrsta ukaza"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "slab povezovalnik"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "slab skok"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: nedoločena spremenljivka"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\apotekla je časovna omejitev med čakanjem na vnos: samodejna odjava\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "ni mogoče preusmeriti običajnega vnosa iz /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': neveljaven znak oblike"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "napaka cevi"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr ""
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: omejeno: ni mogoče določiti `/' v imenih ukaza"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: ukaza ni mogoče najti"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: slab tolmač"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, fuzzy, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: ni mogoče izvesti binarne datoteke"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, fuzzy, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s je vgrajena lupina\n"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "ni mogoče podvajati fd %d v fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "stopnja rekurzivnosti izraza presežena"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "prekoračitev spodnje meje sklada rekurzivnosti"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "skladenjska napaka v izrazu"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "poskus dodelitve ne-spremenljivki"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "skladenjska napaka v izrazu"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "delitev z 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "hrošč: slab žeton expassign"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "`:' pričakovano za pogojni izraz"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "eksponent je manjši kot 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "po predhodnem večanju ali manjšanju je pričakovano določilo"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "manjka `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "skladenjska napaka: pričakovan operand"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "skladenjska napaka: neveljaven aritmetični operand"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (žeton napake je \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "neveljavna aritmetična zbirka"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "vrednost je prevelika za zbirko"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: napaka izraza\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: ni mogoče dostopati do nadrejenih map"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "ni mogoče dodeliti opisnika novih map za vnos bash iz fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: cev pgrp"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "razvejen id opravila %d se pojavi v izvajajočem se poslu %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "brisanje ustavljenega posla %d s skupino opravila %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: opravilo %5ld (%s) v the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: id opravila %5ld (%s) je označen kot še živ"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: ni takšnega določila opravila"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Končano"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Zaustavljeno"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Zaustavljeno(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Se izvaja"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Končano(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Končaj %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Neznano stanje"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(izpis jedra) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "podrejeno opravilo setpgid (%ld v %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: ni zapisov o opravilu %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: posel %d je zaustavljen"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: posel je uničen"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: posel %d se že izvaja v ozadju"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: vklop WNOHANG za preprečitev nedoločenosti bloka"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: vrstica %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (izpis jedra)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd zdaj: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp je spodletel"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: vrstična disciplina"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: vrstična disciplina"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "ni mogoče nastaviti skupine opravil terminala (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "brez nadzora posla v tej lupini"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: spodletela trditev: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1304,41 +1315,41 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: trditev je bila slabo izpeljana\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "neznano"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: poklican z že sproščenim argumentom bloka"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: klic z nedodeljenim argumentom bloka"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr ""
 "free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se "
 "razlikujejo"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: klic z nedodeljenim argumentom bloka"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 "realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se "
@@ -1382,22 +1393,22 @@ msgstr "%s: slabo določilo omrežne poti"
 msgid "network operations not supported"
 msgstr "omrežno opravilo ni podprto"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s): %s"
@@ -1415,147 +1426,147 @@ msgstr "Imate novo pošto v $_"
 msgid "The mail in %s has been read\n"
 msgstr "Pošta v %s je bila prebrana\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "skladenjska napaka: potreben je aritmetični izraz"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "skladenjska napaka: `;' nepričakovano"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "skladenjska napaka: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: slaba vrsta navodila %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr ""
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `%c'"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "skladenjska napaka v pogojnem izrazu: nepričakovan žeton `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "skladenjska napaka v pogojnem izrazu"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "nepričakovan žeton `%s', pričakovan je bil `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "pričakovan `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "nepričakovan argument `%s' do pogojnega enoslovnega operatorja"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "nepričakovan argument do pogojnega enoslovnega operatorja"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "nepričakovan žeton `%s', pričakovan je binarni pogojni operator"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "pričakovan je binarni pogojni operator"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "nepričakovan argument `%s' do pogojnega binarnega operatorja"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "nepričakovan argument do pogojnega binarnega operatorja"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "nepričakovan žeton `%c' v pogojnem ukazu"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "nepričakovan žeton `%s' v pogojnem ukazu"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "nepričakovan žeton %d v pogojnem ukazu"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "skladenjska napaka blizu nepričakovanega žetona `%s'"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "skladenjska napaka blizu `%s'"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "skladenjska napaka: nepričakovan konec datoteke"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "skladenjska napaka"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Uporabite \"%s\", če želite zapustiti lupino.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `)'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "končano: funkcije `%s' ni mogoče najti"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1584,90 +1595,94 @@ msgstr "xtrace_set: prazen kazalec datoteke NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': neveljaven znak oblike"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "opisnik datoteke je izven dosega"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: dvoumna preusmeritev"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: ni mogoče prepisati obstoječe datoteke"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: omejitev: ni mogoče preusmeriti izhoda"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "ni mogoče ustvariti začasne datoteke za here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: ni mogoče dodeliti fd spremenljivki"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "napaka preusmeritve: ni mogoče podvajati fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "ni mogoče najti /tmp, ustvarite ga!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp mora biti veljavno ime mape"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: neveljavna možnost"
 
-#: shell.c:1282
+#: shell.c:1299
 #, fuzzy, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, fuzzy, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, fuzzy, c-format
 msgid "%s: Is a directory"
 msgstr "%s: je mapa"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Ni imena!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, različica %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1676,50 +1691,50 @@ msgstr ""
 "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n"
 "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Dolge možnosti GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Možnosti lupine:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 #, fuzzy
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD ali ukaz -c  ali -O shopt_option\t\t(samo sklicevanje)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ali možnost -o\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Vpišite `%s -c \"help set\"' za več podrobnosti o možnostih lupine.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Vpišite `%s -c help' za več podrobnosti o možnostih ukazov lupine.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Uporabite ukaz `bashbug' za poročanje hroščev.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr ""
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: neveljavno opravilo"
@@ -1893,104 +1908,109 @@ msgstr "Neznan signal #"
 msgid "Unknown Signal #%d"
 msgstr "Neznan signal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "slaba zamenjava: ni zaključka `%s' v %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: ni mogoče dodeliti seznama članu polja"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
-msgstr "ni mogoče ustvariti pipe za zamenjavo opravila"
+msgstr "ni mogoče ustvariti cevi za zamenjavo opravila"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo opravila"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "ni mogoče odpreti imenovane cevi %s za branje"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "ni mogoče odpreti imenovane cevi %s za pisanje"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "ni mogoče podvajati imenovane cevi %s kot fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "slaba zamenjava: ni zaključka \"`\" v %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "ni mogoče ustvariti cevi za zamenjavo ukaza"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo ukaza"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: ni mogoče podvajati cevi kot fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, fuzzy, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: slaba zamenjava"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: neveljavno štetje vrstic"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, fuzzy, c-format
 msgid "%s: invalid variable name"
 msgstr "`%s': neveljaven vzdevek"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parameter je prazen ali pa ni določen"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter je prazen ali pa ni določen"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: izraz podniza < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: slaba zamenjava"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: ni mogoče dodeliti na tak način"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 "prihodnje različice lupine bodo prisilile ocenitev kot aritmetično zamenjavo"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "slaba zamenjava: ni zaključka \"`\" v %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "ni ujemanja: %s"
@@ -2013,114 +2033,119 @@ msgstr "pričakovan je `)'"
 msgid "`)' expected, found %s"
 msgstr "pričakovan je `)', najden je %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: pričakuje se enosnoven operator"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: pričakuje se binarni operator"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "manjka `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "neveljavna števka signala"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr ""
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: ročnik signala je SIG_DFL, ponovno pošiljanje %d (%s) sebi"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: slab signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "napaka med uvozom določila funkcije `%s'"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije"
 
-#: variables.c:2432
+#: variables.c:2674
 #, fuzzy, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: ni mogoče dodeliti fd spremenljivki"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
+msgstr ""
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s ima prazen exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "neveljaven znak %d v exportstr za %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "ni `=' v exportstr za %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: glava shell_variables ni vsebina funkcije"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: ni vsebine global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: ni mogoče odpreti kot DATOTEKO"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
 
-#: variables.c:5669
+#: variables.c:6322
 #, fuzzy, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s izven dosega"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
@@ -2146,22 +2171,22 @@ msgstr "To je prosta programska oprema; lahko jo spreminjate in razširjate.\n"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Je BREZ KAKRŠNEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: ni mogoče dodeliti %lu bajtov (%lu bajtov je dodeljenih)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: ni mogoče dodeliti %lu bajtov"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov (%lu bajtov dodeljenih)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov"
@@ -2382,7 +2407,7 @@ msgstr "umask [-p] [-S] [način]"
 
 #: builtins.c:177
 #, fuzzy
-msgid "wait [-n] [id ...]"
+msgid "wait [-fn] [id ...]"
 msgstr "wait [id]"
 
 #: builtins.c:181
@@ -2474,8 +2499,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v spremenljivka] oblika [argumenti]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2494,7 +2520,8 @@ msgstr ""
 "S pripona] [beseda]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o možnost] [-DE] [ime ...]"
 
 #: builtins.c:242
@@ -2507,9 +2534,10 @@ msgstr ""
 "c del] [polje]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n števec] [-O izvor] [-s števec] [-t] [-u fd] [-C povratni_klic] "
 "[-c del] [polje]"
@@ -2686,6 +2714,7 @@ msgstr ""
 "    Stanje končanja je 0, razen če N ni večji kot ali enak 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2696,7 +2725,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Izvede vgrajeno lupino.\n"
 "    \n"
@@ -2933,11 +2962,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3057,6 +3086,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3089,7 +3124,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če pride do napake pri pisanju."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3111,7 +3146,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če pride do napake pri pisanju."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3163,7 +3198,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če IME ni vgrajena lupina ali če pride do napake."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3182,7 +3217,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje končanja ali uspešno, če je ukaz prazen."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3260,7 +3295,7 @@ msgstr ""
 "    Vrne uspešno, če je možnost najdena; neuspešno, če pride\n"
 "    do konca možnosti ali do napake."
 
-#: builtins.c:688
+#: builtins.c:692
 #, fuzzy
 msgid ""
 "Replace the shell with the given command.\n"
@@ -3300,7 +3335,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če UKAZ ni najden ali pride do napake preusmeritve."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3312,7 +3347,7 @@ msgstr ""
 "    Konča lupino s stanjem N. Če je N izpuščen, se uporabi stanje\n"
 "    končanja zadnjega izvršenega ukaza."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3325,7 +3360,7 @@ msgstr ""
 "    Konča prijavno lupino s stanjem končanja N. Vrne napako, če se\n"
 "    ne izvede v prijavni lupini."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3379,7 +3414,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno ali stanje izvedenega ukaza; ne-ničelno, če pride do napake."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3400,7 +3435,7 @@ msgstr ""
 "    Stanje ukaza, postavljenega v ospredje, ali neuspešno, če se\n"
 "    pojavi napaka."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3423,7 +3458,7 @@ msgstr ""
 "    Vrne uspešno, razen če nadzor posla ni omogočen ali če pride\n"
 "    do napake."
 
-#: builtins.c:787
+#: builtins.c:791
 #, fuzzy
 msgid ""
 "Remember or display program locations.\n"
@@ -3466,7 +3501,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če IME ni najdeno ali če je dana neveljavna možnost."
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3482,7 +3517,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3507,7 +3542,7 @@ msgstr ""
 "    Vrne uspešno, razen če VZOREC ni najden ali pa je dana neveljavna\n"
 "    možnost."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3517,7 +3552,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3575,7 +3611,7 @@ msgstr ""
 "    Vrne uspešno, razen če je podana neveljavna možnost ali če pride\n"
 "    do napake."
 
-#: builtins.c:872
+#: builtins.c:877
 #, fuzzy
 msgid ""
 "Display status of jobs.\n"
@@ -3620,7 +3656,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če pride do\n"
 "    napake. Če se uporabi -x, vrne stanje končanja UKAZA."
 
-#: builtins.c:899
+#: builtins.c:904
 #, fuzzy
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3653,7 +3689,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če je dano\n"
 "    DOLOČILO_POSLA."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3696,7 +3732,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če pride do\n"
 "    napake."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3783,7 +3819,7 @@ msgstr ""
 "    Stanje končanja\n"
 "    Če zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0."
 
-#: builtins.c:987
+#: builtins.c:992
 #, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
@@ -3805,7 +3841,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3876,7 +3912,7 @@ msgstr ""
 "    omejitev prekoračena ali če je dan neveljaven opisnik datotek kot\n"
 "    argument v -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3896,7 +3932,7 @@ msgstr ""
 "    Stanje končanja\n"
 "    Vrne N ali neuspešno, če lupina ne izvede funkcije ali skripta."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4069,7 +4105,7 @@ msgstr ""
 "    Stanje končanja\n"
 "    Vrne uspešno, razen če je dana neveljavna možnost."
 
-#: builtins.c:1132
+#: builtins.c:1137
 #, fuzzy
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
@@ -4108,7 +4144,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če je IME samo\n"
 "    za branje."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4142,7 +4178,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če je\n"
 "    neveljavno IME."
 
-#: builtins.c:1173
+#: builtins.c:1178
 #, fuzzy
 msgid ""
 "Mark shell variables as unchangeable.\n"
@@ -4182,7 +4218,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če je\n"
 "    neveljavno IME."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4200,7 +4236,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če je N negativen ali večji kot $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4224,7 +4260,7 @@ msgstr ""
 "    Vrne stanje zadnjega izvršenega ukaza v IMENU_DATOTEKE; vrne\n"
 "    neuspešno, če IMENA_DATOTEKE ni mogoče brati."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4250,7 +4286,7 @@ msgstr ""
 "    Vrne uspešno, razen če nadzor posla ni omogočen ali če pride do\n"
 "    napake."
 
-#: builtins.c:1254
+#: builtins.c:1259
 #, fuzzy
 msgid ""
 "Evaluate conditional expression.\n"
@@ -4412,7 +4448,7 @@ msgstr ""
 "    Vrne uspešno, če IZRAZ ovrednoti prav, neuspešno vrne, če IZRAZ \n"
 "    ovrednoti napak ali če je dan neveljaven argument."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4424,7 +4460,7 @@ msgstr ""
 "    To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n"
 "    mora biti dobesedni `]' za ujemanje z uklepajem `['."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4443,7 +4479,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vedno uspešno."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4523,7 +4559,7 @@ msgstr ""
 "    Vrne uspešno, razen če je SIGSPEC neveljaven ali je dana neveljavna "
 "možnost."
 
-#: builtins.c:1393
+#: builtins.c:1398
 #, fuzzy
 msgid ""
 "Display information about command type.\n"
@@ -4581,7 +4617,7 @@ msgstr ""
 "    Vrne uspešno, če so vsa IMENA najdena; vrne neuspešno, če katero\n"
 "    ni najdeno."
 
-#: builtins.c:1424
+#: builtins.c:1429
 #, fuzzy
 msgid ""
 "Modify shell resource limits.\n"
@@ -4673,7 +4709,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če pride do\n"
 "    napake."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4707,7 +4743,7 @@ msgstr ""
 "    Vrne uspešno, razen če je NAČIN neveljaven ali če je dana neveljavna\n"
 "    možnost."
 
-#: builtins.c:1494
+#: builtins.c:1499
 #, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
@@ -4716,13 +4752,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4740,7 +4778,7 @@ msgstr ""
 "    Vrne stanje ID-ja; vrne neuspešno, če je ID neveljaven ali če je dana\n"
 "    neveljavna možnost."
 
-#: builtins.c:1515
+#: builtins.c:1523
 #, fuzzy
 msgid ""
 "Wait for process completion and return exit status.\n"
@@ -4765,7 +4803,7 @@ msgstr ""
 "    Vrne stanje ID-ja; neuspešno, če je ID neveljaven ali če je dana\n"
 "    neveljavna možnost."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4788,7 +4826,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4819,7 +4857,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4856,7 +4894,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4885,7 +4923,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Stanje končanja je stanje končanja CEVOVODA."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4903,7 +4941,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4937,7 +4975,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4955,7 +4993,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4973,7 +5011,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -4996,7 +5034,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje končanja UKAZA."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5020,7 +5058,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če je IME samo za branje."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5038,7 +5076,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje zadnjega izvršenega ukaza."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5062,7 +5100,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne stanje obnovljenega posla."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5080,7 +5118,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne 1, če je IZRAZ enakovreden; sicer vrne 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5134,7 +5172,7 @@ msgstr ""
 "    Stanje končanja:\n"
 "    0 ali 1, odvisno od vrednosti IZRAZA."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5238,7 +5276,7 @@ msgstr ""
 "    HISTIGNORE\tZ dvopičjem ločen seznam vzorcev, ki so uporabljeni \n"
 "    \t\tza odločanje, kateri ukazi naj se shranijo na seznam zgodovine.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 #, fuzzy
 msgid ""
 "Add directories to stack.\n"
@@ -5295,7 +5333,7 @@ msgstr ""
 "    Vrne uspešno, razen če je predložen neveljaven argument ali če\n"
 "    sprememba mape spodleti."
 
-#: builtins.c:1837
+#: builtins.c:1845
 #, fuzzy
 msgid ""
 "Remove directories from stack.\n"
@@ -5346,7 +5384,7 @@ msgstr ""
 "    Vrne uspešno, razen če je predložen neveljaven argument ali če\n"
 "    sprememba mape spodleti."
 
-#: builtins.c:1867
+#: builtins.c:1875
 #, fuzzy
 msgid ""
 "Display directory stack.\n"
@@ -5398,14 +5436,14 @@ msgstr ""
 "    Stanje končanja:\n"
 "    Vrne uspešno, razen če je dana neveljavna možnost ali če pride do napake."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5435,7 +5473,7 @@ msgstr ""
 "    Vrne uspešno, če je IME_MOŽNOSTI omogočeno; neuspešno, če je\n"
 "    dana neveljavna možnost ali če je IME_MOŽNOSTI onemogočeno."
 
-#: builtins.c:1919
+#: builtins.c:1927
 #, fuzzy
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5501,7 +5539,7 @@ msgstr ""
 "napake\n"
 "    branja ali dodelitve."
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5520,10 +5558,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5553,7 +5595,7 @@ msgstr ""
 "    Vrne uspešno, razen če je predložena neveljavna možnost ali če pride\n"
 "    do napake."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5575,7 +5617,8 @@ msgstr ""
 "    Vrne uspešno, razen če je predložena neveljavna možnost ali če pride\n"
 "    do napake."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5590,6 +5633,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5631,7 +5675,7 @@ msgstr ""
 "    Vrne uspešno, razen če je predložena neveljavna možnost ali pa IME\n"
 "    nima določenega določila dopolnjevanja."
 
-#: builtins.c:2026
+#: builtins.c:2037
 #, fuzzy
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
@@ -5709,7 +5753,7 @@ msgstr ""
 "    Vrne uspešno, razen če je dana neveljavna možnost oz. je POLJE samo\n"
 "    za branje ali pa ni zabeleženo polje."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5719,9 +5763,15 @@ msgstr ""
 "    \n"
 "    Je sopomenka za `mapfile'."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
+#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
+#~ "html>\n"
+#~ msgstr ""
+#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejše <http://gnu.org/"
+#~ "licenses/gpl.html>\n"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5734,17 +5784,3 @@ msgstr ""
 
 #~ msgid "times"
 #~ msgstr "krat"
-
-#, fuzzy
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejše <http://gnu.org/"
-#~ "licenses/gpl.html>\n"
index c052db364c6565b7ae37e2363e7e7479bd4eedf2..60fa85c5c704ca27fda468921cacded9fcefae99 100644 (file)
Binary files a/po/sr.gmo and b/po/sr.gmo differ
index f1af8c73b19a03404b739f98faa789d9a7bfe900..624010a554dee582eea034630e3070410b1dd766 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,13 +1,13 @@
 # Serbian translation for bash.
 # Copyright (C) 2014 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2014—2015.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2014—2016.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash-4.4-beta1\n"
+"Project-Id-Version: bash-4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-12-23 11:31+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2016-10-01 19:25+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
 "MIME-Version: 1.0\n"
@@ -16,120 +16,121 @@ msgstr ""
 "Language: sr\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "лош индекс низа"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: уклањам атрибут упуте назива"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: не могу да претворим пописани низ у придружив"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: неисправан кључ придруживог низа"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: не могу да доделим у не-бројевни попис"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: мора користити индекс приликом додељивања придруживог низа"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: не могу да направим: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "баш_изврши_јуникс_наредбу: не могу да нађем мапу кључа за наредбу"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: први не-празан знак није \""
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "нема затварајућег „%c“ у %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: недостаје раздвојник двотачке"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "ширење заграде: не могу да доделим меморију за „%s“"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "ширење заграде: нисам успео да доделим меморију за %d елемента"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "ширење заграде: нисам успео да доделим меморију за „%s“"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "„%s“: неисправан назив алијаса"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "уређивање реда није укључено"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "„%s“: неисправан назив мапе кључа"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: не могу да читам: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "„%s“: не могу да развежем"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "„%s“: непознат назив функције"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "„%s“ није привезано ни за један кључ.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "„%s“ не може бити призвано путем"
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "„%s“: не могу да развежем"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "број петљи"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "једино има смисла у петљи „for“, „while“, или „until“"
 
@@ -143,234 +144,233 @@ msgstr ""
 "\n"
 "    Без „EXPR“, исписује"
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "„HOME“ није подешено"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "превише аргумената"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "нема Ð´Ñ\80Ñ\83гог Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\98Ñ\83ма"
+msgstr "ниÑ\88Ñ\82аван Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\98Ñ\83м"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "„OLDPWD“ није подешено"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "%d. ред:"
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "упозорење:"
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: употреба:"
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: опција захтева аргумент"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: потребан је бројевни аргумент"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: не постоји"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: неисправна опција"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: неисправан назив опције"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "„%s“: није исправан одредник"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "неисправан октални број"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "неисправан хексадецимални број"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "неисправан број"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: неисправна одредба сигнала"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "„%s“: није пиб или исправна одредба посла"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: променљива само за читање"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: „%s“ је ван опсега"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "аргумент"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "„%s“ је ван опсега"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: нема таквог посла"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: нема управљања послом"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "нема управљања послом"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: ограничено"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "ограничено"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: није уграђеност шкољке"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "грешка писања: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "грешка подешавања особина терминала: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "грешка добављања особина терминала: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: нејасна одредба посла"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "помоћ није доступна у овом издању"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: неисправан назив радње"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: нема одредбе довршавања"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "упозорење: опција „-F“ можда неће радити како сте очекивали"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "упозорење: опција „-C“ можда неће радити како сте очекивали"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "тренутно не обавља функцију довршавања"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "може бити коришћено једино у функцији"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: променљива упуте не може бити низ"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: самоупућивање променљиве упуте назива није дозвољено"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: кружна упута назива"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "%s: неисправан назив променљиве за упуту назива"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "не можете користити „-f“ да направите функције"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: функција само за читање"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: додела низа цитираног споја је застарела"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: не могу да уништим променљиве низа на овај начин"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: не могу да претворим придруживи низ у пописани"
@@ -404,68 +404,68 @@ msgstr "%s: није динамички учитано"
 msgid "%s: cannot delete: %s"
 msgstr "%s: не могу да обришем: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: је директоријум"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: није обична датотека"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: датотека је превелика"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: не могу да извршим бинарну датотеку"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: не могу да извршим: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "одјави\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "није шкољка пријављивања: користите „exit“"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Има заустављених послова.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Има покренутих послова.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "нема такве наредбе"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "одредба историјата"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: не могу да отворим привремену датотеку: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "текуће"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "посао „%d“ је започет без управљања послом"
@@ -480,29 +480,28 @@ msgstr "%s: неисправна опција -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: опција захтева аргумент -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "хеширање је искључено"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: хеш табела је празна\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "покреће\tнаредбу\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Наредбе шкољке које одговарају кључној речи `"
 msgstr[1] "Наредбе шкољке које одговарају кључним речима `"
 msgstr[2] "Наредбе шкољке које одговарају кључним речима `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -510,12 +509,12 @@ msgstr ""
 "нема тема помоћи које одговарају „%s“.  Покушајте „help help“ или „man -k %"
 "s“ или „info %s“."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: не могу да отворим: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -534,20 +533,21 @@ msgstr ""
 "Звездица (*) поред назива значи да је наредба искључена.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "не могу користити више од једног „-anrw“"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "положај историјата"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Ð½ÐµÐ¸Ñ\81пÑ\80аван Ð°Ñ\80гÑ\83менÑ\82"
+msgstr "%s: Ð½ÐµÐ¸Ñ\81пÑ\80авна Ð¾Ð·Ð½Ð°ÐºÐ° Ð²Ñ\80емена"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: није успело ширење историјата"
@@ -561,16 +561,16 @@ msgstr "%s: није успело „inlib“"
 msgid "no other options allowed with `-x'"
 msgstr "нису допуштене друге опције уз „-x“"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: аргументи морају бити процеси или ИБ-ови посла"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Непозната грешка"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "очекиван је израз"
 
@@ -579,69 +579,69 @@ msgstr "очекиван је израз"
 msgid "%s: not an indexed array"
 msgstr "%s: није пописани низ"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: неисправна одредба описника датотеке"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: неисправан описник датотеке: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: неисправан број реда"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: неисправно порекло низа"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: неисправна количина опозива"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "празан назив променљиве низа"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "потребна је подршка променљиве низа"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "„%s“: недостаје знак записа"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "„%c“: неисправна одредба записа времена"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "„%c“: неисправан знак записа"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "упозорење: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "проблем обраде записа: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "недостаје хексадецимална цифра за \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "недостаје цифра уникода за \\%c"
@@ -655,19 +655,19 @@ msgstr "нема другог директоријума"
 msgid "%s: invalid argument"
 msgstr "%s: неисправан аргумент"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<нема текућег директоријума>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "празан спремник директоријума"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "попис спремника директоријума"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -709,7 +709,7 @@ msgstr ""
 "      -N\tПриказује н-ти унос почевши с десна на списку приказаном\n"
 "\t        директоријумима када се призову без опција, почевши од нуле."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -755,7 +755,7 @@ msgstr ""
 "    \n"
 "    Уграђено „dirs“ приказује спремник директоријума."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -799,40 +799,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: неисправна одредба временског истека"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "грешка читања: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "могу једино да „испишем“ из функције или изворног списа"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "не могу истовремено да расподесим функцију и променљиву"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: не могу да расподесим"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: не могу да расподесим: „%s“ је само за читање"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: није променљива низа"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: није функција"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: не могу да извезем"
@@ -841,20 +841,20 @@ msgstr "%s: не могу да извезем"
 msgid "shift count"
 msgstr "број помака"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "не могу истовремено да подесим и да расподесим опције шкољке"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: неисправан назив опције шкољке"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "потребан је аргумент назива датотеке"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: нисам пронашао датотеку"
@@ -867,61 +867,61 @@ msgstr "не могу да обуставим"
 msgid "cannot suspend a login shell"
 msgstr "не могу да обуставим шкољку пријављивања"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s је измењен у псеудоним „%s“\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "„%s“ је кључна реч шкољке\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s: је функција\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s: је нарочита уграђеност шкољке\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s: јесте уграђеност шкољке\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "„%s“ јесте „%s“\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "„%s“ је хеширано (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: неисправан аргумент ограничења"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "„%c“: лоша наредба"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: не могу да добавим ограничење: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "ограничење"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: не могу да изменим ограничење: %s"
@@ -940,357 +940,367 @@ msgstr "„%c“: неисправан оператер симболичког 
 msgid "`%c': invalid symbolic mode character"
 msgstr "„%c“: неисправан знак симболичког режима"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " ред "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "последња наредба: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Прекидам..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "ПОДАЦИ: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "непозната грешка наредбе"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "лоша врста наредбе"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "лош спајач"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "лош скок"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: несвезана променљива"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aистекло је време чекајући на улаз: сам се одјављујем\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "не могу да преусмерим стандардни улаз из „/dev/null:“: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "ЗАПИСВРЕМЕНА: „%c“: неисправан знак записа"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "изврши_копроц: копроцес [%d:%s] још увек постоји"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "грешка спојке"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: ограничено: не могу да наведем / у називима наредби"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: нема такве наредбе"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: лош тумач"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: не могу да извршим бинарну датотеку: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "„%s“: јесте посебна уграђеност"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "не могу да удвостручим „fd %d“ у „fd %d“"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "премашен је ниво дубачења израза"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "недоток спремника дубачења"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "садржајна грешка у изразу"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "покушано је додељивање у не-променљиву"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "садржајна грешка у изразу"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "дељење 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "грешка: лош симбол доделе израза"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "„:“ је очекивано за условни израз"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "изложилац је мањи од 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "одредник је очекиван након пре-увећања или пре-умањења"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "недостаје )"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "садржајна грешка: очекиван је операнд"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "садржајна грешка: неисправан аритметички оператор"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (симбол грешке је „%s“)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "неисправна аритметичка основа"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "вредност је превише велика за основу"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: грешка израза\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: не могу да приступим родитељском директоријуму"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "не могу да поништим режим без-кашњења за фд „%d“"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "не могу да доделим нови описник датотеке за улаз баша из фд „%d“"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: већ постоји међумеморија за нови фд „%d“"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: „pgrp“ спојка"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "исцепљени пиб „%d“ се јавља у покренутом послу „%d“"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "бришем заустављени посао „%d“ са групом процеса %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: процес %5ld (%s) у спојном_реду"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: пиб %5ld (%s) је означен да је још жив"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: нема таквог пиб-а"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Сигнал %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Урађен"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Заустављен"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Заустављен(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Покренут"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Урађен(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Изађи из „%d“"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Непознато стање"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(језгрени избачај)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "сетпгиб порода (%ld у %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: пиб %ld није пород ове шкољке"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Нема записа о процесу %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: посао „%d“ је заустављен"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: посао је завршио"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: посао „%dд је већ у позадини"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: ред %d:"
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (језгрени избачај)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(„wd“ сада: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: није успело „getpgrp“"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: дисциплина реда"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: дисциплина реда"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "не могу да подесим групу процеса терминала (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "нема управљања послом у овој шкољци"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: тврдња није успела: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1299,39 +1309,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: тврдња је лоше изведена\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "непознато"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: блок на слободном списку је преписан"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: позвана са већ ослобођеним аргументом блока"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: позвана са недодељеним аргументом блока"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: откривена је недовољност тока; mh_n-бајтова је ван опсега"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: почетна и крајња величина дела се разликују"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: позвана са недодељеним аргументом блока"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: откривена је недовољност тока; mh_n-бајтова је ван опсега"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: почетна и крајња величина дела се разликују"
 
@@ -1373,22 +1383,22 @@ msgstr "%s: лоша одредба путање мреже"
 msgid "network operations not supported"
 msgstr "радње мреже нису подржане"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: не могу да изменим језик (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: не могу да изменим језик (%s): %s"
@@ -1406,150 +1416,152 @@ msgstr "Имате нову пошту у $_"
 msgid "The mail in %s has been read\n"
 msgstr "Пошта у „%s“ је прочитана\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "садржајна грешка: потребан је аритметички израз"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "садржајна грешка: није очекивано „;“"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "садржајна грешка: „((%s))“"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: лоша врста упутства „%d“"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи се „%s“)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: упутсво преусмерења „%d“ је ван опсега"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила НАЈВЕЋУ_ВЕЛИЧИНУ (%"
+"lu): ред је скраћен"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "премашен је највећи број „овде-документ“"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "неочекивани крај датотеке приликом тражења „]]“"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "садржајна грешка у условном изразу: неочекивани симбол „%s“"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "садржајна грешка у условном изразу"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "неочекивани симбол „%s“, очекивана је )"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "очекивана је )"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "неочекивани аргумент „%s“ условном једночланом оператору"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "неочекивани аргумент условном једночланом оператору"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "неочекивани симбол „%s“, очекиван је условни двочлани оператор"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "очекиван је условни двочлани оператор"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "неочекивани аргумент „%s“ условном двочланом оператору"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "неочекивани аргумент условном двочланом оператору"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "неочекивани симбол „%c“ у условној наредби"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "неочекивани симбол „%s“ у условној наредби"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "неочекивани симбол „%d“ у условној наредби"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "садржајна грешка близу неочекиваног симбола „%s“"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "садржајна грешка близу „%s“"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "садржајна грешка: неочекивани крај датотеке"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "садржајна грешка"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Користите „%s“ да напустите шкољку.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "неочекивани крај датотеке приликом тражења поклапајуће )"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "довршавање: нисам нашао функцију „%s“"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: могуће понављање покушаја"
 
 #: pcomplib.c:182
 #, c-format
@@ -1575,90 +1587,94 @@ msgstr "xtrace_set: НИШТАВАН указивач датотеке"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: „%c“: неисправан знак записа"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "описник датотеке је ван опсега"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: нејасно преусмерење"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: не могу да препишем постојећу датотеку"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: ограничено: не могу да преусмерим излаз"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "не могу да направим привремену датотеку за документ-овде: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: не могу да доделим фд променљивој"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "грешка преусмерења: не могу да удвостручим фд"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "не могу да нађем „/tmp“, направите га!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "„/tmp“ мора бити исправан назив директоријума"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: неисправна опција"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "не могу да подесим јиб на %d: стварни јиб %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "не могу да подесим гиб на %d: стварни гиб %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "не могу да покренем прочишћавача; режим прочишћавања је искључен"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: је директоријум"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Немам назив!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "Гну баш, издање %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1667,49 +1683,49 @@ msgstr ""
 "Употреба:\t%s [Гнуова дуга опција] [опција] ...\n"
 "        \t%s [Гнуова дуга опција] [опција] датотека-списа ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Гнуове дуге опције:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Опције шкољке:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање само)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t„-%s“ или опција „-o“\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Користите наредбу „bashbug“ да известите о грешкама.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Матична страница баша: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "Општа помоћ коришћења Гну софтвера: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: неисправна операција"
@@ -1883,103 +1899,107 @@ msgstr "Непознат сигнал #"
 msgid "Unknown Signal #%d"
 msgstr "Непознат сигнал #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "лоша замена: нема затварајуће „%s“ у „%s“"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: не могу да доделим списак члану низа"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "не могу да начиним спојку за замену процеса"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "не могу да начиним пород за замену процеса"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "не могу да отворим именовану спојку „%s“ за читање"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "не могу да отворим именовану спојку „%s“ за писање"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "не могу да удвостручим именовану спојку „%s“ као фд %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "лоÑ\88а Ð·Ð°Ð¼ÐµÐ½Ð°: Ð½ÐµÐ¼Ð° Ð·Ð°Ñ\82ваÑ\80аÑ\98Ñ\83Ñ\9bег â\80\9e\80\9c Ñ\83 â\80\9e%sâ\80\9c"
+msgstr "замена Ð½Ð°Ñ\80едбе: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ\80иÑ\85 Ð½Ð¸Ñ\88Ñ\82авни Ð±Ð°Ñ\98Ñ\82 Ñ\83 Ñ\83лазÑ\83"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "не могу да начиним спојку за замену наредбе"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "не могу да начиним пород за замену наредбе"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: не могу да удвостручим спојку као фд 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: неисправан назив променљиве за упуту назива"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: лоша замена"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: неисправно посредно ширење"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: неисправан назив променљиве"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: параметар је ништаван или није подешен"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: параметар је ништаван или није подешен"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: израз подниске < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: лоша замена"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: не могу дадоделим на овај начин"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr "будућа издања шкољке ће приморати процену као аритметичку замену"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "лоша замена: нема затварајућег „`“ у „%s“"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "нема поклапања: %s"
@@ -2002,30 +2022,35 @@ msgstr "очекивана је )"
 msgid "`)' expected, found %s"
 msgstr "очекивана је ), а пронађена %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: очекиван је једночлани оператор"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: очекиван је двочлани оператор"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "недостаје ]"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "неисправан сигнални број"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: лоша вредност у „trap_list[%d]“: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2033,85 +2058,85 @@ msgstr ""
 "run_pending_traps: руковалац сигналом је „SIG_DFL“, поново шаљем %d (%s) "
 "мени самом"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: лош сигнал %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "грешка увоза одреднице функције за „%s“"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "ниво шкољке (%d) је превисок, поново постављам на 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: нема садржаја функције на текућем досегу"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: вредности не може бити додељена вредност"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: Ð½ÐµÐ¸Ñ\81пÑ\80аван Ð½Ð°Ð·Ð¸Ð² Ð¿Ñ\80оменÑ\99иве Ð·Ð° Ñ\83пÑ\83Ñ\82Ñ\83 назива"
+msgstr "%s: Ð´Ð¾Ð´ÐµÑ\99Ñ\83Ñ\98ем Ñ\86ео Ð±Ñ\80оÑ\98 Ñ\83пÑ\83Ñ\82и назива"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variable: нема садржаја функције на текућем досегу"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s има ништавну ниску извоза"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "неисправан знак %d у нисци извоза за „%s“"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "нема = у нисци извоза за „%s“"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: глава променљивих шкољке није садржајност функције"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: нема садржаја општих променљивих"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: глава променљивих шкољке није привремени досег окружења"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: не могу да отворим као ДАТОТЕКУ"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: неисправна вредност за описник праћења датотеке"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: вреднсот сагласности је ван опсега"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Ауторска права (C) 2015 Задужбина слободног софтвера, Доо."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Ауторска права (C) 2016 Задужбина слободног софтвера, Доо."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2135,22 +2160,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Нема НИКАКВЕ ГАРАНЦИЈЕ у оквирима дозвољеним законом."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: не могу да доделим %lu бајта (%lu бајта је додељено)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: не могу да доделим %lu бајта"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: не могу да доделим %lu бајта (%lu бајта је додељено)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: не могу да доделим %lu бајта"
@@ -2277,9 +2302,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [одредба_посла ...] или jobs -x наредба [аргументи]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [одредба_посла ...]"
+msgstr "disown [-h] [-ar] [одредба_посла ... | пид ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2362,7 +2386,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [режим]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [иб ...]"
 
 #: builtins.c:181
@@ -2454,8 +2479,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v променљива] format [аргументи]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2473,7 +2499,8 @@ msgstr ""
 "суфикс] [реч]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o опција] [-DE] [назив ...]"
 
 #: builtins.c:242
@@ -2485,9 +2512,10 @@ msgstr ""
 "опозив] [-c количина] [низ]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c "
 "количина] [низ]"
@@ -2673,6 +2701,7 @@ msgstr ""
 "    Излазно стање је 0 осим ако N није веће или једнако 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2683,7 +2712,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Извршава уграђености шкољке.\n"
 "    \n"
@@ -2910,6 +2939,7 @@ msgstr ""
 "    Даје излазно стање НАРЕДБЕ, или неуспех ако се НАРЕДБА не пронађе."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2928,11 +2958,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2986,7 +3016,6 @@ msgstr ""
 "    не дође до грешке доделе променљиве."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2994,7 +3023,7 @@ msgid ""
 msgstr ""
 "Подешава вредности и атрибуте променљиве.\n"
 "    \n"
-"    Ð\97аÑ\81Ñ\82аÑ\80ело.  Погледајте „help declare“."
+"    Ð¡Ð¸Ð½Ð¾Ð½Ð¸Ð¼ Ð·Ð° â\80\9edeclareâ\80\9c.  Погледајте „help declare“."
 
 #: builtins.c:538
 msgid ""
@@ -3024,6 +3053,7 @@ msgstr ""
 "    до грешке додељивања променљиве, или ако шкољка не извршава функцију."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3052,6 +3082,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3086,7 +3122,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје позитиван резултат осим ако не дође до грешке писања."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3108,7 +3144,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје позитиван резултат осим ако не дође до грешке писања."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3160,7 +3196,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако НАЗИВ није уграђеност шкољке или ако не "
 "дође до грешке."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3179,7 +3215,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје излазно стање наредбе или успех ако је наредба ништавна."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3263,7 +3299,7 @@ msgstr ""
 "на\n"
 "    крај опције или ако не дође до грешке."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3305,7 +3341,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако НАРЕДБА није нађена или ако не дође до "
 "грешке преусмеравања."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3317,7 +3353,7 @@ msgstr ""
 "    Напушта шкољку са стањем N.  Ако је N изостављено, излазно стање\n"
 "    је оно последње извршене наредбе."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3331,7 +3367,7 @@ msgstr ""
 "извршено\n"
 "    у шкољци пријављивања."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3388,7 +3424,7 @@ msgstr ""
 "    Даје позитиван резултат или стање извршене наредбе; не-нулу ако дође до "
 "грешке."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3408,7 +3444,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Стање наредбе постављене у први план, или неуспех ако дође до грешке."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3432,7 +3468,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није укључено управљање послом или ако "
 "не дође до грешке."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3476,7 +3512,8 @@ msgstr ""
 "    Даје позитиван резултат осим ако се НАЗИВ не нађе или ако је дата "
 "неисправна опција."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3491,7 +3528,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3516,7 +3553,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако ШАБЛОН није пронађен или ако је дата "
 "неисправна опција."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3526,7 +3563,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3562,9 +3600,9 @@ msgstr ""
 "      -a\t   додаје редове историјата из ове сесије у датотеку историјата\n"
 "      -n\t   чита све редове историјата који нису прочитани из датотеке "
 "историјата\n"
+"    \t\tи додаје их на списак историјата\n"
 "      -r\t   чита датотеку историјата и додаје садржај на списак историјата\n"
 "      -w\t   пише текући историјат у датотеку историјата\n"
-"    \t           и додаје их на спсак историјата\n"
 "    \n"
 "      -p\t   обавља ширење историјата на сваком АРГ-у и приказује резултат\n"
 "    \t           без смештања на списак историјата\n"
@@ -3585,7 +3623,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или ако не "
 "дође до грешке."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3631,7 +3669,7 @@ msgstr ""
 "дође до грешке.\n"
 "    Ако се користи „-x“, даје излазно стање НАРЕДБЕ."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3663,8 +3701,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или "
 "ОДРЕДБАПОСЛА."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3698,6 +3735,7 @@ msgstr ""
 "      -n сиг\tСИГ је број сигнала\n"
 "      -l\tисписује називе сигнала; ако аргументи прате „-l“ подразумева\n"
 "    \t        се да су бројеви сигнала за које називи требају бити исписани\n"
+"      -L\tсиноним за „-l“\n"
 "    \n"
 "    „Kill“ је уграђеност шкољке из два разлога: омогућава да ИБ-ови послова "
 "буду\n"
@@ -3709,7 +3747,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или ако не "
 "дође до грешке."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3793,7 +3831,8 @@ msgstr ""
 "    Излазно стање:\n"
 "    Ако се последњи АРГ процени на 0, исписује 1; у супротном даје 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3814,7 +3853,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3893,7 +3932,7 @@ msgstr ""
 "    или ако се не достави неисправан описник датотеке као аргумент опције „-"
 "u“."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3913,8 +3952,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје N, или неуспех ако шкољка не извршава функцију или спис."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3999,7 +4037,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 msgstr ""
-"Подешава или расподешava вредности опција шкољке и положајних параметара.\n"
+"Подешава или расподешава вредности опција шкољке и положајних параметара.\n"
 "    \n"
 "    Мења вредност особина шкољке и положајних параметара, или\n"
 "    приказује називе и вредности променљивих шкољке.\n"
@@ -4069,8 +4107,8 @@ msgstr ""
 "          по основи када је шкољка међудејствена.\n"
 "      -P  Ако је подешено, не решава симболичке везе приликом извршавања\n"
 "          наредби као што је „cd“ која мења текући директоријум.\n"
-"      -T  Ð\90ко Ñ\98е Ð¿Ð¾Ð´ÐµÑ\88ено, Ñ\85ваÑ\82аÑ\9aе Ð\9fРÐ\9eЧÐ\98ШÐ\8bÐ\90Ð\92Ð\90Ð\8aÐ\90 Ñ\81е Ð½Ð°Ñ\81леÑ\92Ñ\83Ñ\98е Ñ\84Ñ\83нкÑ\86иÑ\98ама "
-"шкољке.\n"
+"      -T  Ð\90ко Ñ\98е Ð¿Ð¾Ð´ÐµÑ\88ено, Ñ\85ваÑ\82аÑ\9aа Ð\9fРÐ\9eЧÐ\98ШÐ\8bÐ\90Ð\92Ð\90Ð\8aÐ\90 Ð¸ Ð Ð\95Ð\97УÐ\9bТÐ\90ТÐ\90 Ñ\81е Ð½Ð°Ñ\81леÑ\92Ñ\83Ñ\98Ñ\83 "
+"Ñ\84Ñ\83нкÑ\86иÑ\98ама Ñ\88коÑ\99ке.\n"
 "      --  Додељује све преостале аргументе положајним параметрима.\n"
 "          Ако нема преосталих аргумената, положајни параметри се\n"
 "          расподешавају.\n"
@@ -4086,7 +4124,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје позитиван резултат осим ако није дата неисправна опција."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4127,7 +4165,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или ако је "
 "НАЗИВ само за читање."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4161,7 +4199,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако је дата неисправна опција или је НАЗИВ "
 "неисправан."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4203,7 +4241,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или ако је "
 "НАЗИВ неисправан."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4221,7 +4259,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Резултати су успешни осим ако N није негативно иливеће од $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4245,7 +4283,7 @@ msgstr ""
 "    Даје стање последње извршене наредбе у ДАТОТЕЦИ; не успева\n"
 "    ако назив ДАТОТЕКЕ не може бити прочитан."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4270,7 +4308,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако није укључено управљање послом или ако "
 "не дође до грешке."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4434,7 +4472,7 @@ msgstr ""
 "ИЗРАЗ процени\n"
 "    на нетачно или ако је дат неисправан аргумент."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4446,7 +4484,7 @@ msgstr ""
 "    Ово је синоним за уграђеност „test“, али последњи аргумент мора\n"
 "    бити дословна ], да поклопи отворену [."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4465,7 +4503,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Увек успешно."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4548,7 +4586,7 @@ msgstr ""
 "    Даје позитиван резултат осим за неисправну ОДРЕДБА_СИГНАЛА или за "
 "неисправну опцију."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4608,7 +4646,7 @@ msgstr ""
 "    Даје позитиван резултат ако су пронађени сви НАЗИВИ; неуспех ако ниједан "
 "није пронађен."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4703,7 +4741,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако се не достави неисправна опција или ако "
 "не дође до грешке."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4737,7 +4775,8 @@ msgstr ""
 "    Даје позитиван резултат осим ако је РЕЖИМ неисправан или ако је дата "
 "неисправна опција."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4745,13 +4784,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4770,7 +4811,7 @@ msgstr ""
 "    Исписује стање последњег ИБ-а; неуспех ако је ИБ неисправан или ако је\n"
 "    дата неисправна опција."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4797,7 +4838,7 @@ msgstr ""
 "дата\n"
 "    неисправна опција."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4819,7 +4860,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4850,7 +4891,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4886,7 +4927,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4915,7 +4956,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Стање резултата јесте стање резултата СПОЈНОГРЕДА."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4933,7 +4974,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4971,7 +5012,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4989,7 +5030,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5007,8 +5048,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5028,9 +5068,9 @@ msgstr ""
 "    Основни НАЗИВ је „COPROC“.\n"
 "    \n"
 "    Излазно стање:\n"
-"    Ð\94аÑ\98е Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ Ñ\81Ñ\82аÑ\9aе Ð\9dÐ\90РÐ\95Ð\94Ð\91Ð\95."
+"    Ð\9dаÑ\80едба ÐºÐ¾Ð¿Ñ\80оÑ\86еÑ\81а Ð´Ð°Ñ\98е Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ Ñ\81Ñ\82аÑ\9aе 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5056,7 +5096,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје позитиван резултат осим ако је НАЗИВ само за читање."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5074,7 +5114,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Исписује стање последње извршене наредбе."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5098,7 +5138,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје стање настављеног посла."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5116,7 +5156,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    Даје 1 ако се ИЗРАЗ процени на 0; у супротном даје 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5169,7 +5209,7 @@ msgstr ""
 "    Излазно стање:\n"
 "    0 или 1 у зависности од вредност ИЗРАЗА."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5297,7 +5337,7 @@ msgstr ""
 "                        о наредбама које требају бити сачуване на списку "
 "историјата.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5356,7 +5396,7 @@ msgstr ""
 "замена\n"
 "    директоријума не успе."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5409,7 +5449,7 @@ msgstr ""
 "измена\n"
 "    директоријума не успе."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5464,14 +5504,14 @@ msgstr ""
 "    Даје позитиван резултат осим ако се не достави неисправна опција или ако "
 "не дође до грешке."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5503,7 +5543,7 @@ msgstr ""
 "дата\n"
 "    неисправна опција или ако је НАЗИВ_ОПЦИЈЕ искључен."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5570,7 +5610,8 @@ msgstr ""
 "    Даје позитиван резултат осим ако није дата неисправна опција или ако не\n"
 "    дође до грешке писања или доделе."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5588,10 +5629,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5619,7 +5664,7 @@ msgstr ""
 "    Даје позитиван резултат осим ако се не достави неисправна опција или ако "
 "не дође до грешке."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5640,7 +5685,8 @@ msgstr ""
 "    Даје позитиван резултат осим ако се не достави неисправна опција или ако "
 "не дође до грешке."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5655,6 +5701,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5696,7 +5743,7 @@ msgstr ""
 "НАЗИВ\n"
 "    нема одређену одредбу довршавања."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5777,7 +5824,7 @@ msgstr ""
 "НИЗ само\n"
 "    за читање или није индексирани низ."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index ba977e8daac8592884ed07d414ae2b6e2bef6cfa..2875f6fe12b4b520366d6db1edb09f1e9976db07 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index 7ae3f0d6f54cccdea2180fa5899aaf5a9edfda29..f90392179b082cedb81e4f451c4358af04bb52c4 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
 # Swedish translation of bash
-# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015 Free Software Foundation, Inc.
+# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
-# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015.
 #
-# $Revision: 1.20 $
+# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018.
+#
+# $Revision: 1.24 $
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-11-01 10:54+0100\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-03 21:31+0100\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: sv\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "felaktigt vektorindex"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: tar bort attributet namnreferens"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: det går inte att konvertera en indexerad vektor till associativ"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: ogiltig nyckel till associativ vektor"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: det går inte att tilldela till ickenumeriska index"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: måste använda index vid tilldelning av associativ vektor"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: det går inte att skapa: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: det går inte att hitta en tangentbindning för "
 "kommandot"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: första ickeblanka tecknet är inte '\"'"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "ingen avslutande ”%c” i %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: kolonseparator saknas"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "klammerexpansion: kan inte allokera minne för %s"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "klammerexpansion: misslyckades att allokera minne för %d element"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "klammerexpansion: misslyckades att allokera minne för %u element"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "klammerexpansion: misslyckades att allokera minne för ”%s”"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "”%s”: ogiltigt aliasnamn"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "radredigering är inte aktiverat"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "”%s”: ogiltigt tangentbindningsnamn"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: det går inte att läsa: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "”%s”: det går inte att avbinda"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "”%s”: okänt funktionsnamn"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s är inte bundet till några tangenter.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s kan anropas via "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "”%s”: det går inte att avbinda"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "slingräknare"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "endast meningsfullt i en ”for”-, ”while”- eller ”until”-slinga"
 
@@ -146,234 +148,233 @@ msgstr ""
 "    \n"
 "    Utan UTTR, returnerar "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME är inte satt"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "för många argument"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "ingen annan katalog"
+msgstr "null-katalog"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD är inte satt"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "rad %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "varning: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: användning: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: flaggan kräver ett argument"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: numeriskt argument krävs"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: finns inte"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: ogiltig flagga"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: ogiltigt flaggnamn"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "”%s”: inte en giltig identifierare"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "ogiltigt oktalt tal"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "ogiltigt hexadecimalt tal"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "ogiltigt tal"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: ogiltig signalspecifikation"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "”%s”: inte en pid eller giltig jobbspecifikation"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: endast läsbar variabel"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s utanför giltigt intervall"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argument"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s utanför giltigt intervall"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: inget sådant jobb"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: ingen jobbstyrning"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "ingen jobbstyrning"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: begränsat"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "begränsat"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: inte inbyggt i skalet"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "skrivfel: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "fel när terminalattribut ställdes in: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "fel när terminalattribut hämtades: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: tvetydig jobbspecifikation"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "hjälp är inte tillgängligt i denna version"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: ogiltigt åtgärdsnamn"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: ingen kompletteringsspecifikation"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "kör inte en kompletteringsfunktion"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "kan endast användas i en funktion"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: en referensvariabel kan inte vara en vektor"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: att en namnreferensvariabel självrefererar är inte tillåtet"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: cirkulär namnreferens"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: ogiltigt variabelnamn för referens"
+msgstr "”%s”: ogiltigt variabelnamn för referens"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "det går inte att använda ”-f” för att göra funktioner"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: endast läsbar funktion"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: det går inte att förstöra vektorvariabler på detta sätt"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: det går inte att konvertera en associativ vektor till indexerad"
@@ -407,68 +408,68 @@ msgstr "%s: inte dynamiskt laddad"
 msgid "%s: cannot delete: %s"
 msgstr "%s: kan inte ta bort: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: är en katalog"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: inte en normal fil"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: filen är för stor"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: det går inte att köra binär fil"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: kan inte köra: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "utloggning\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "inte ett inloggningsskal: använd ”exit”"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Det finns stoppade jobb.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Det finns körande jobb.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "hittar inget kommando"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "historiespecifikation"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: det går inte att öppna temporärfil: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "aktuell"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "jobb %d startade utan jobbstyrning"
@@ -483,28 +484,27 @@ msgstr "%s: ogiltig flagga -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: flaggan kräver ett argument -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashning avslaget"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: hashtabellen tom\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "träffar\tkommando\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Skalkommandon som matchar nyckelordet '"
 msgstr[1] "Skalkommandon som matchar nyckelorden '"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -512,12 +512,12 @@ msgstr ""
 "inget hjälpämne matchar ”%s”.  Prova ”help help” eller ”man -k %s” eller "
 "”info %s”."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: det går inte att öppna: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -537,20 +537,21 @@ msgstr ""
 "En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "det går inte att använda mer än en av -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "historieposition"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: ogiltigt argument"
+msgstr "%s: ogiltig tidsstämpel"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: historieexpansionen misslyckades"
@@ -564,16 +565,16 @@ msgstr "%s: inlib misslyckades"
 msgid "no other options allowed with `-x'"
 msgstr "inga andra flaggor är tillåtna med ”-x”"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argument måste vara processer eller jobb-id:n"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Okänt fel"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "uttryck förväntades"
 
@@ -582,69 +583,69 @@ msgstr "uttryck förväntades"
 msgid "%s: not an indexed array"
 msgstr "%s: inte en indexerad vektor"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: ogiltig filbeskrivarspecifikation"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: ogiltig filbeskrivare: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: ogiltigt radantal"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: ogiltig vektorstart"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: ogiltigt kvantum för återanrop"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "tomt vektorvariabelnamn"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "stöd för vektorvariabler krävs"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "”%s”: formateringstecken saknas"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "”%c”: ogiltig specifikation av tidsformat"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "”%c”: ogiltigt formateringstecken"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "varning: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "formattolkningsproblem: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "hexadecimal siffra saknas för \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "unicode-siffra saknas för \\%c"
@@ -658,19 +659,19 @@ msgstr "ingen annan katalog"
 msgid "%s: invalid argument"
 msgstr "%s: ogiltigt argument"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<ingen aktuell katalog>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "katalogstacken är tom"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "katalogstackindex"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -712,7 +713,7 @@ msgstr ""
 "      -N\tVisa den N:e posten räknat från höger i listan som visas\n"
 "\tav dirs när det anropas utan flaggor, räknat från noll."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -758,7 +759,7 @@ msgstr ""
 "    \n"
 "    Den inbyggda ”dirs” visar katalogstacken."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -801,41 +802,41 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: ogiltig tidsgränsspecifikation"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "läsfel: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "det går bara att göra ”return” från en funktion eller källinläst skript"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "det går inte att samtidigt ta bort en funktion och en variabel"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: det går inte att ta bort tilldelning"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: det går inte att ta bort tilldelning: endast läsbar %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: inte en vektorvariabel"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: inte en funktion"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: det går inte att exportera"
@@ -844,20 +845,20 @@ msgstr "%s: det går inte att exportera"
 msgid "shift count"
 msgstr "skiftantal"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "det går inte att sätta och ta bort skalflaggor samtidigt"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: ogiltigt skalflaggsnamn"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "filnamnsargument krävs"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: filen finns inte"
@@ -870,61 +871,61 @@ msgstr "det går inte att suspendera"
 msgid "cannot suspend a login shell"
 msgstr "det går inte att suspendera ett inloggningsskal"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s är ett alias för ”%s”\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s är ett nyckelord i skalet\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s är en funktion\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s är en special inbyggd i skalet\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s är inbyggt i skalet\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s är %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s är hashad (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: ogiltigt gränsargument"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "”%c”: felaktigt kommando"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: kan inte avgöra gränsen: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "gräns"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: kan inte ändra gränsen: %s"
@@ -943,358 +944,366 @@ msgstr "”%c”: ogiltig operator för symboliskt läge"
 msgid "`%c': invalid symbolic mode character"
 msgstr "”%c”: ogiltigt tecken för symboliskt läge"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " rad "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "senaste kommando: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Avbryter..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORMATION: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "okänt kommandofel"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "felaktig kommandotyp"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "felaktig anslutning"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "felaktigt hopp"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: obunden variabel"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atiden gick ut i väntan på indata: automatisk utloggning\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "det går inte att omdirigera standard in från /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: ”%c”: ogiltigt formateringstecken"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] finns fortfarande"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "rörfel"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: maximal nästning av eval överskriden (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: maximal nästning av source överskriden (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: maximal nästning av funktioner överskriden (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: begränsat: det går inte att ange ”/” i kommandonamn"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: kommandot finns inte"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: felaktig tolk"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: det går inte att köra binär fil: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "”%s”: är en speciell inbyggd"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "det går inte att duplicera fb %d till fb %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "rekursionsnivå i uttryck överskriden"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "underspill i rekursionsstacken"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "syntaxfel i uttrycket"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "försök att tilldela till en icke-variabel"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "syntaxfel i variabeltilldelning"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "division med 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "fel: felaktig expassign-symbol"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "”:” förväntades i villkorligt uttryck"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "exponenten är mindre än 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "”)” saknas"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "syntaxfel: en operand förväntades"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "syntaxfel: ogiltig aritmetisk operator"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (felsymbol är ”%s”)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "ogiltig aritmetisk bas"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "värdet är för stort för basen"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: uttrycksfel\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: det går inte att komma åt föräldrakatalogen"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "det går inte att återställa fördröjningsfritt läge för fb %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "det går inte att allokera en ny filbeskrivare för bashindata från fb %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffert finns redan för ny fb %d"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp rör"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "avgrenad pid %d finns i körande jobb %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "tar bort stoppat jobb %d med processgrupp %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: process %5ld (%s) i the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: ingen sådan pid"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Signal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Klart"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Stoppad"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Stoppad(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Kör"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Klart(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Avslut %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Okänd status"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(minnesutskrift skapad) "
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (ak: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "barns setpgid (%ld till %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld är inte ett barn till detta skal"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Ingen uppgift om process %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: jobb %d är stoppat"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: jobbet har avslutat"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: jobb %d är redan i bakgrunden"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: slår på WNOHANG för att undvika oändlig blockering"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: rad %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (minnesutskrift skapad)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(ak nu: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp misslyckades"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: linjedisciplin"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "det går inte att sätta terminalprocessgrupp (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "ingen jobbstyrning i detta skal"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: försäkran misslyckades: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1303,39 +1312,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: försäkran gick fel\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "okänd"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: block på frilista överskrivet"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: anropad med redan frigjort block som argument"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: anropad med oallokerat block som argument"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: start- och slutstyckesstorlekar skiljer"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: anropat med oallokerat block som argument"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: start- och slutstyckesstorlekar skiljer"
 
@@ -1377,22 +1386,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg"
 msgid "network operations not supported"
 msgstr "nätverksoperationer stöds inte"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: det går inte att ändra lokal (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: det går inte att ändra lokal (%s): %s"
@@ -1410,151 +1419,153 @@ msgstr "Du har ny post i $_"
 msgid "The mail in %s has been read\n"
 msgstr "Posten i %s har lästs\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "syntaxfel: aritmetiskt uttryck krävs"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "syntaxfel: oväntat ”;”"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "syntaxfel: ”((%s))”"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: felaktig instruktionstyp %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "här-dokument på rad %d avgränsas av filslut (ville ha ”%s”)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 "make_redirection: omdirigeringsinstruktion ”%d” utanför giltigt intervall"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden "
+"avhuggen"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "maximalt antal av här-dokument överskridet"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "oväntat filslut vid sökning efter matchande ”%c”"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "oväntat filslut vid sökning efter ”]]”"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "syntaxfel i villkorligt uttryck: oväntad symbol ”%s”"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "syntaxfel i villkorligt uttryck"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "oväntad symbol ”%s”, ”)” förväntades"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "”)” förväntades"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "oväntat argument ”%s” till villkorlig unär operator"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "oväntat argument till villkorlig unär operator"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "oväntad symbol ”%s”, villkorlig binär operator förväntades"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "villkorlig binär operator förväntades"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "oväntat argument ”%s” till villkorlig binär operator"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "oväntat argument till villkorlig binär operator"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "oväntad symbol ”%c” i villkorligt kommando"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "oväntad symbol ”%s” i villkorligt kommando"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "oväntad symbol %d i villkorligt kommando"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntaxfel nära den oväntade symbolen ”%s”"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntaxfel nära ”%s”"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "syntaxfel: oväntat filslut"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "syntaxfel"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Använd ”%s” för att lämna skalet.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "oväntat filslut när matchande ”)” söktes"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "komplettering: funktion ”%s” finns inte"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: möjlig slinga av omförsök"
 
 #: pcomplib.c:182
 #, c-format
@@ -1580,90 +1591,94 @@ msgstr "xtrace_set: NULL-filpekare"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ”%c”: ogiltigt formateringstecken"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "filbeskrivare utanför giltigt intervall"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: tvetydig omdirigering"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: det går inte att skriva över en existerande fil"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: begränsat: det går inte att omdirigera utdata"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "det går inte att skapa temporärfil för här-dokument: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: det går inte att tilldela fb till variabel"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "omdirigeringsfel: det går inte att duplicera fb"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "hittade inte /tmp, var god skapa!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp måste vara ett giltigt katalognamn"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "läget för snygg utskrift ignoreras i interaktiva skal"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: ogiltig flagga"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "det går sätta uid till %d: effektiv uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "det går inte att sätta gid till %d: effektiv gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: är en katalog"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Jag har inget namn!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, version %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1672,52 +1687,52 @@ msgstr ""
 "Användning:\t%s [GNU lång flagga] [flagga] ...\n"
 "\t\t%s [GNU lång flagga] [flagga] skriptfil ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU långa flaggor:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Skalflaggor:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s eller -o flagga\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Skriv ”%s -c 'help set'” för mer information om skalflaggor.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Skriv ”%s -c help” för mer information om inbyggda skalkommandon.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 "Använd kommandot ”bashbug” för att rapportera fel.\n"
 "Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash hemsida: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Allmän hjälp i att använda GNU-program: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: ogiltig operation"
@@ -1891,92 +1906,96 @@ msgstr "Okänd signal nr "
 msgid "Unknown Signal #%d"
 msgstr "Okänd signal nr %d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "felaktig substitution: ingen avslutande ”%s” i %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: det går inte att tilldela listor till vektormedlemmar"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "det går inte att skapa rör för processubstitution"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "det går inte att skapa barn för processubstitution"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "det går inte att öppna namngivet rör %s för läsning"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "det går inte att öppna namngivet rör %s för skrivning"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "det går inte att duplicera namngivet rör %s som fb %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "felaktig ersättning: ingen avslutande ”`” i %s"
+msgstr "kommandoersättning: ignorerade nollbyte i indata"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "det går inte att skapa rör för kommandosubstitution"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "det går inte att skapa barn för kommandosubstitution"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: det går inte att duplicera rör som fb 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: ogiltigt variabelnamn för referens"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: felaktig substitution"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: felaktig indirekt expansion"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: felaktigt variabelnamn"
 
-#: subst.c:6854
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametern är inte satt"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametern tom eller inte satt"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: delstränguttryck < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: felaktig substitution"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: det går inte att tilldela på detta sätt"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1984,12 +2003,12 @@ msgstr ""
 "framtida versioner av skalet kommer att framtvinga evaluering som en "
 "aritmetisk substitution"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "felaktig ersättning: ingen avslutande ”`” i %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "ingen matchning: %s"
@@ -2012,30 +2031,35 @@ msgstr "”)” förväntades"
 msgid "`)' expected, found %s"
 msgstr "”)” förväntades, fann %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: unär operator förväntades"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: binär operator förväntades"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "”]” saknas"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "ogiltigt signalnummer"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "fällhanterare: maximal nivå av fällhanterare överskriden (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2043,87 +2067,86 @@ msgstr ""
 "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig "
 "själv"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: felaktig signal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "fel vid import av funktionsdefinition för ”%s”"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "skalnivå (%d) för hög, återställer till 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: variabeln får inte tilldelas ett värde"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: ogiltigt variabelnamn för referens"
+msgstr "%s: tilldelar ett heltal till en namnreferens"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s har tom exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "ogiltigt tecken %d i exportstr för %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "inget ”=” i exportstr för %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: huvudet på shell_variables är inte en funktionskontext"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: ingen kontext global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: huvudet på shell_variables är inte en temporär omgivningsräckvidd"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: går inte att öppna som FILE"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: ogiltigt värde för spårningsfilbeskrivare"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright © 2015 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright © 2018 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2147,22 +2170,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Det finns INGEN GARANTI, så långt lagen tillåter."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: det går inte att allokera %lu byte (%lu byte allokerade)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: det går inte att allokera %lu byte"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: det går inte att allokera %lu byte (%lu byte allokerade)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: det går inte att allokera %lu byte"
@@ -2290,9 +2313,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobbspec ...]"
+msgstr "disown [-h] [-ar] [jobbspec … | pid …]"
 
 #: builtins.c:134
 msgid ""
@@ -2375,8 +2397,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [rättigheter]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [id …]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [id …]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2468,13 +2490,13 @@ msgstr "printf [-v var] format [argument]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o flagga] [-A åtgärd] [-G globmnst] [-"
-"W ordlista]  [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S "
-"suffix] [namn ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o flagga] [-A åtgärd] [-G globmnst] "
+"[-W ordlista]  [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S "
+"suffix] [namn ]"
 
 #: builtins.c:235
 msgid ""
@@ -2486,8 +2508,8 @@ msgstr ""
 "suffix] [ord]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o flagga] [-DE] [namn ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o flagga] [-DEI] [namn …]"
 
 #: builtins.c:242
 msgid ""
@@ -2499,11 +2521,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C återanrop] [-c "
-"kvanta] [vektor]"
+"readarray [-d avgränsare] [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C "
+"återanrop] [-c kvanta] [vektor]"
 
 #: builtins.c:256
 msgid ""
@@ -2693,7 +2715,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Exekvera en i skalet inbyggd funktion.\n"
 "    \n"
@@ -2937,11 +2959,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2974,11 +2996,13 @@ msgstr ""
 "      -a\tför att göra NAMN till indexerade vektorer (om det stöds)\n"
 "      -A\tför att göra NAMN till associativa vektorer (om det stöds)\n"
 "      -i\tför att ge NAMN attributet ”heltal”\n"
-"      -l\tför att konvertera NAMN till gemena vid tilldelning\n"
+"      -l\tför att konvertera värdet av varje NAMN till gemena vid "
+"tilldelning\n"
 "      -n\tgör NAMN till en referens till variabeln som namnges som värde\n"
 "      -r\tför att göra NAMN endast läsbart\n"
 "      -t\tför att ge NAMN attributet ”spåra”\n"
-"      -u\tför att konvertera NAMN till versaler vid tilldelning\n"
+"      -u\tför att konvertera värdet av varje NAMN till versaler vid "
+"tilldelning\n"
 "      -x\tför att exportera NAMN\n"
 "    \n"
 "    Användning av ”+” istället för ”-” slår av det angivna attributet.\n"
@@ -2995,7 +3019,6 @@ msgstr ""
 "    variabeltilldelning inträffar."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3003,7 +3026,7 @@ msgid ""
 msgstr ""
 "Sätt variabelvärden och -attribut.\n"
 "    \n"
-"    Föråldrat.  Se ”help declare”."
+"    En synonym för ”declare”.  Se ”help declare”."
 
 #: builtins.c:538
 msgid ""
@@ -3033,6 +3056,7 @@ msgstr ""
 "    variabeltilldelning inträffar eller skalet inte exekverar en funktion."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3061,6 +3085,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3095,7 +3125,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte ett skrivfel inträffar."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3117,7 +3147,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte ett skrivfel inträffar."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3171,7 +3201,7 @@ msgstr ""
 "    Returnerar framgång om inte NAMN inte är inbyggd i skalet eller ett fel\n"
 "    inträffar."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3191,7 +3221,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar slutstatus av kommandot eller framgång om kommandot är tomt."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3268,7 +3298,7 @@ msgstr ""
 "    Returnerar framgång om en flagga hittas, misslyckas om slutet av\n"
 "    flaggorna nås eller ett fel inträffar."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3309,7 +3339,7 @@ msgstr ""
 "    Returnerar framgång om inte KOMMANDO inte finns eller ett fel vid\n"
 "    omdirigering inträffar."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3321,7 +3351,7 @@ msgstr ""
 "    Avslutar skalet med statusen N.  Om N utelämnas är slutstatusen den\n"
 "    hos det sist körda kommandot."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3334,7 +3364,7 @@ msgstr ""
 "    Avslutar ett inloggningsskal med slutstatus N.  Returnerar ett fel om\n"
 "    det inte körs i ett inloggningsskal."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3389,7 +3419,7 @@ msgstr ""
 "    Returnerar framgång eller status på exekverat kommando, skilt från noll\n"
 "    om ett fel inträffar."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3410,7 +3440,7 @@ msgstr ""
 "    Status på kommandot som placerades i förgrunden, eller misslyckande om\n"
 "    ett fel inträffar."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3435,7 +3465,7 @@ msgstr ""
 "fel\n"
 "    inträffar."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3478,7 +3508,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte NAMN inte hittas eller en ogiltig flagga ges."
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3493,7 +3523,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3519,8 +3549,7 @@ msgstr ""
 "    Returnerar framgång om inte MÖNSTER inte finns eller en ogiltig flagga "
 "ges."
 
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3529,7 +3558,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3560,13 +3590,14 @@ msgstr ""
 "    \n"
 "    Flaggor:\n"
 "      -c\tnollställ historielistan genom att ta bort alla poster\n"
-"      -d avstånd\tta bort historieposten på avstånd AVSTÅND\n"
+"      -d avstånd\tta bort historieposten på position AVSTÅND.  Negativa\n"
+"    \t\tavstånd räknar baklänges från slutet av historielistan  \n"
 "    \n"
 "      -a\tlägg till historierader från denna session till historiefilen\n"
 "      -n\tläs alla historierader som inte redan lästs från historiefilen\n"
+"    \t\toch lägg till dem till historielistan\n"
 "      -r\tläs historiefilen och lägg till innehållet till historielistan\n"
-"      -w\tskriv den aktuella historien till historiefilen och lägg till\n"
-"    \t\tdem till historielistan\n"
+"      -w\tskriv den aktuella historien till historiefilen\n"
 "    \n"
 "      -p\tutför historieexpansion på varje ARG och visa resultatet utan\n"
 "    \t\tatt lagra det i historielistan\n"
@@ -3584,7 +3615,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
 "inträffar."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3628,7 +3659,7 @@ msgstr ""
 "inträffar.\n"
 "    Om -x används returneras slutstatus från KOMMANDO."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3658,8 +3689,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte en ogiltig flagga eller JOBBSPEC ges."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3693,6 +3723,7 @@ msgstr ""
 "      -n sig\tSIG är ett signalnummer\n"
 "      -l\tlista signalnamnen.  Om argument följer ”-l” antas de vara\n"
 "    \t\tsignalnummer som namn skall listas för\n"
+"      -L\tsynonym för -l\n"
 "    \n"
 "    Kill är inbyggt i skalet av två skäl: det tillåter att jobb-id:n "
 "används\n"
@@ -3704,7 +3735,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga angivits eller ett fel\n"
 "    inträffar."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3792,7 +3823,7 @@ msgstr ""
 "    Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 "
 "annars."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3813,7 +3844,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3861,7 +3892,7 @@ msgstr ""
 "    \t\tvariabeln VEKTOR, med start från noll\n"
 "      -d avgr\tfortsätt tills det första tecknet i AVGR lästs, istället för\n"
 "    \t\tnyrad\n"
-"      -e\tanvänd Readline för att få in raden i ett interaktivt skal\n"
+"      -e\tanvänd Readline för att få in raden\n"
 "      -i text\tAnvänd TEXT som starttext för Readline\n"
 "      -n ntkn\treturnera efter att ha läst NTKN tecken istället för att\n"
 "    \t\tvänta på en nyrad, men ta hänsyn till en avgränsare om färre\n"
@@ -3890,7 +3921,7 @@ msgstr ""
 "eller\n"
 "    en ogiltig filbeskrivare ges som argument till -u."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3911,8 +3942,7 @@ msgstr ""
 "    Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n"
 "    skript."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4067,7 +4097,7 @@ msgstr ""
 "          standard när skalet är interaktivt.\n"
 "      -P  Om satt löses inte symboliska länkar upp när kommandon såsom cd\n"
 "          körs som ändrar aktuell katalog.\n"
-"      -T  Om satt ärvs DEBUG-fällan av skalfunktioner.\n"
+"      -T  Om satt ärvs DEBUG och RETURN-fällorna av skalfunktioner.\n"
 "      --  Tilldela eventuella återstående argument till "
 "positionsparametrar.\n"
 "          Om det inte finns några återstående argument nollställs\n"
@@ -4086,7 +4116,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte en ogiltig flagga ges."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4126,7 +4156,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller NAMN endast är\n"
 "    läsbart."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4159,7 +4189,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4197,7 +4227,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4216,7 +4246,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte N är negativt eller större än $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4240,7 +4270,7 @@ msgstr ""
 "    Returnerar status på det sista kommandot som körs i FILNAMN, misslyckas\n"
 "    om FILNAMN inte kan läsas."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4266,7 +4296,7 @@ msgstr ""
 "fel\n"
 "    inträffar."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4426,7 +4456,7 @@ msgstr ""
 "    Returnerar framgång om UTTR beräknas till sant.  Misslyckas ifall UTTR\n"
 "    beräknas till falskt eller ett ogiltigt argument ges."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4438,7 +4468,7 @@ msgstr ""
 "    Detta är en synonym till det inbyggda ”test”, men det sista argumentet\n"
 "    måste vara en bokstavlig ”]”, för att matcha den inledande ”[”."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4458,7 +4488,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Lyckas alltid."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4536,7 +4566,7 @@ msgstr ""
 "flagga\n"
 "    ges."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4591,7 +4621,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om alla NAMNen finns, misslyckas om något inte finns."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4688,7 +4718,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga anges eller ett fel "
 "inträffar."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4724,7 +4754,7 @@ msgstr ""
 "flagga\n"
 "    ges."
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4732,13 +4762,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4755,11 +4787,14 @@ msgstr ""
 "    Om flaggan -n ges väntar på nästa jobb att avsluta och returnera dess\n"
 "    slutstatus.\n"
 "    \n"
+"    Om flaggan -f anges, och jobbstyrning är aktiverat, väntar på att det\n"
+"    angivna ID:t avslutas, istället för att vänta på att det ändrar status.\n"
+"    \n"
 "    Slutstatus:\n"
 "    Returnerar status på den sista ID, misslyckas ifall ID är ogiltig\n"
 "    eller en ogiltig flagga ges."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4783,7 +4818,7 @@ msgstr ""
 "    Returnerar status på den sista PID, misslyckas ifall PID är ogiltig\n"
 "    eller en ogiltig flagga ges."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4805,7 +4840,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar status för det sist exekverade kommandot."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4835,7 +4870,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4870,7 +4905,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4899,7 +4934,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returstatusen är returstatusen från RÖR."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4917,7 +4952,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4952,7 +4987,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar status från det sist exekverade kommandot."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4970,7 +5005,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4988,8 +5023,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5009,9 +5043,9 @@ msgstr ""
 "    ”COPROC”.\n"
 "    \n"
 "    Slutstatus:\n"
-"    Returnerar statusen från KOMMANDO."
+"    Kommandot coproc returnerar slutstatusen 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5034,7 +5068,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar framgång om inte NAMN endast är läsbart."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5052,7 +5086,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen från det sist exekverade kommandot."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5076,7 +5110,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar statusen på det återupptagna jobbet."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5094,7 +5128,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5146,7 +5180,7 @@ msgstr ""
 "    Slutstatus:\n"
 "    0 eller 1 beroende på värdet av UTTRYCK."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5251,7 +5285,7 @@ msgstr ""
 "    HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n"
 "    \t\tbestämma vilka kommandon som skall sparas i historielistan.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5309,7 +5343,7 @@ msgstr ""
 "    Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
 "    katalog misslyckas."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5359,7 +5393,7 @@ msgstr ""
 "    Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
 "    katalog misslyckas."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5412,14 +5446,13 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
 "inträffar."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5435,7 +5468,8 @@ msgstr ""
 "Slå på och av skalflaggor.\n"
 "    \n"
 "    Ändra inställningen av varje flagga FLGNAMN.  Utan några flaggargument\n"
-"    listas alla skalflaggor med en indikation om var och en är satt.\n"
+"    lista varje angivet FLGNAMN, eller alla skalflaggor med om inga FLGNAMN\n"
+"    anges, en indikation av huruvida var och en är satt eller inte.\n"
 "    \n"
 "    Flaggor:\n"
 "      -o\tbegränsa FLGNAMN till de som kan användas med ”set -o”\n"
@@ -5448,7 +5482,7 @@ msgstr ""
 "    Returnerar framgång om FLGNAMN är aktiverat, misslyckas om en ogiltig\n"
 "    flagga ges eller FLGNAMN är avaktiverat."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5516,7 +5550,8 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller ett skriv-\n"
 "    eller tilldelningsfel inträffar."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5534,10 +5569,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5558,15 +5597,15 @@ msgstr ""
 "      -E\tanvänd kompletteringarna och åtgärderna för ”tomma” kommandon\n"
 "                — kompletteringar som försöks på en tom rad\n"
 "    \n"
-"    När komplettering försöker göras försöks åtgärder i den ordning de\n"
-"    versala flaggorna är uppräknade ovan.  Flaggan -D har företräde framför\n"
-"    -E.\n"
+"    När komplettering försöker göras används åtgärderna i den ordning de\n"
+"    versala flaggorna är uppräknade ovan.  Om flera flaggor anges har\n"
+"    flaggan -D företräde framför -E, och båda har företräde framför -I.\n"
 "    \n"
 "    Slutstatus:\n"
 "    Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
 "inträffar."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5588,7 +5627,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
 "inträffar."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5603,6 +5642,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5630,6 +5670,7 @@ msgstr ""
 "    \t-o flagga\tSätt kompletteringsflagga FLAGGA för varje NAMN\n"
 "    \t-D\t\tÄndra flaggorna för ”standard” kommandokomplettering\n"
 "    \t-E\t\tÄndra flaggorna för den ”tomma” kommandokompletteringen\n"
+"    \t-I\t\tÄndra flaggorna för komplettering av den första flaggan.\n"
 "    \n"
 "    Genom att använda ”+o” istället för ”-o” slås den angivna flaggan av.\n"
 "    \n"
@@ -5646,7 +5687,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller NAMN inte har\n"
 "    någon kompletteringsspecifikation definierad."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5723,7 +5764,7 @@ msgstr ""
 "    Returnerar framgång om inte en ogiltig flagga ges eller VEKTOR är\n"
 "    oföränderlig eller inte en indexerad vektor."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5732,18 +5773,3 @@ msgstr ""
 "Läs rader från en fil till en vektorvariabel.\n"
 "    \n"
 "    En synonym till ”mapfile”."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright © 2014 Free Software Foundation, Inc."
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
index a4a89c6fec3233be83d61a30155211fb0ebfd3e5..81c67e71424f879281837a9e6b21eb5926d84d28 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index a144d82240b3906cb6858fd72522c83abb2fa451..a90faa88404c74d2355adf5304563709a85230a0 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
 # This file is distributed under the same license as the bash package.
 #
 # Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2006.
-# Volkan Gezer <vlkngzr@gmail.com>, 2013, 2014.
+# Volkan Gezer <vlkngzr@gmail.com>, 2013, 2014, 2017.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.3-rc2\n"
+"Project-Id-Version: bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2014-10-24 16:11+0200\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2017-05-05 11:49+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: tr\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 2.0\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "hatalı dizi indisi"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: removing nameref niteliği kaldırılıyor"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: geçersiz ilişkisel dizi anahtarı"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: sayısal olmayan indise atama yapılamaz"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: oluşturulamıyor: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: boşluk olmayan ilk karakter `\"' değil"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "%2$s içinde kapatan `%1$c' yok"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: ikinokta imi eksik"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "destek genişletme: %s için bellek ayrılamıyor"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "destek genişletme: %d öge için bellek ayrılamıyor"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "destek genişletme: `%s' için bellek ayrılamıyor"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "`%s': geçersiz takma isim"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "satır düzenleme etkin değil"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "`%s': kısayol ismi geçersiz"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: okunamıyor: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': kısayol değiştirilemiyor"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "`%s': işlev ismi bilinmiyor"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s için bir kısayol atanmamış.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s bunun üzerinden çağrılabilir: "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "`%s': kısayol değiştirilemiyor"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "döngü sayısı"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı"
 
@@ -145,234 +146,233 @@ msgstr ""
 "    \n"
 "    İFADE olmadan, şu döner "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME atanmamış"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "çok fazla argüman"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "yığıtın tepesinde kalan dizine geçer."
+msgstr "boş dizini"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD boş"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "satır %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "uyarı: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: kullanım: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: seçenek bir argüman gerektirir"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: sayısal argüman gerekli"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s:yok"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: seçenek geçersiz"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: seçenek ismi geçersiz"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "`%s': geçerli bir belirteç değil"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "geçersiz sekizli sayı"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "geçersiz onaltılık sayı"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "geçersiz sayı"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: sinyal belirtimi geçersiz"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: salt okunur değişken"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s aralık dışı"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "argüman"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s aralık dışı"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: böyle bir iş yok"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: iş denetimi yok"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "iş denetimi yok"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: kısıtlı"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "kısıtlı"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: bir kabuk yerleşiği değil"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "yazma hatası: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "uçbirim nitelikleri ayarlanırken hata: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "uçbirim nitelikleri alınırken hata: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: geçerli dizin alınırken hata: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: iş belirtimi belirsiz"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "bu sürümde yardım kullanılamıyor"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: eylem adı geçersiz"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: tamamlama belirtimi yok"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "şuan tamamlama işlevi çalıştırılmıyor"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "sadece bir işlevde kullanılabilir"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: referans değeri bir dizi olamaz"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: çembersel isim referansı"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer"
+msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "işlev yapmak için `-f' kullanılamaz"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: salt okunur işlev"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: dizi değişkenleri bu yolla iptal edilemez"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez"
@@ -394,7 +394,7 @@ msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s"
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi"
 
 #: builtins/enable.def:512
 #, c-format
@@ -406,68 +406,68 @@ msgstr "%s: özdevimli olarak yüklenmemiş"
 msgid "%s: cannot delete: %s"
 msgstr "%s: silinemiyor: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: bir dizin"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: bir dosya değil"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: dosya çok büyük"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: ikili dosya çalıştırılamıyor"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: çalıştırılamıyor: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "çıkış\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "oturum açma kabuğu değil: `exit' kullanın"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Durmuş işler var.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Çalışan görevler mevcut.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "komut yok"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "geçmiş belirtimi"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: geçici dosya açılamıyor: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "şimdiki"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "%d. iş, iş denetimsiz başlamış"
@@ -482,28 +482,27 @@ msgstr "%s: kuraldışı seçenek -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: seçenek bir argüman gerektirir -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "çitleme iptal edildi"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: çitleme tablosu boş\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "eşleşme\tkomut\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Bu anahtar sözcükle eşleşen komutlar: `"
 msgstr[1] "Bu anahtar sözcüklerle eşleşen komutlar: `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -511,12 +510,12 @@ msgstr ""
 "`%s' ile ilgili bir yardım metni yok.  `help help' veya `man -k %s' ya da "
 "`info %s'.yazmayı deneyebilirsiniz."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: açılamıyor: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -536,20 +535,21 @@ msgstr ""
 "Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "tek bir -anrw kullanılabilir"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "geçmiş konumu"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: geçersiz argüman"
+msgstr "%s: geçersiz zaman damgası"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: geçmiş yorumlaması başarısız"
@@ -563,16 +563,16 @@ msgstr "%s: inlib başarısız"
 msgid "no other options allowed with `-x'"
 msgstr "`-x' ile başka seçenek kullanılamaz"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Bilinmeyen hata"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "ifade bekleniyordu"
 
@@ -581,69 +581,69 @@ msgstr "ifade bekleniyordu"
 msgid "%s: not an indexed array"
 msgstr "%s: bir sıralı dizi değil"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: dosya tanıtıcı belirtimi geçersiz"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: dosya tanıtıcı geçersiz: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: geçersiz satır sayısı"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: geçersiz dizi kökeni"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: geçersiz geri çağırım niceliği"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "boş bir dizi değişken adı"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "dizi değişken desteği gerekli"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "`%s': biçim karakteri eksik"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "`%c': geçersiz zaman biçimi belirtimi"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "`%c': biçim karakteri geçersiz"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "uyarı: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "biçim ayıklama sorunu: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "\\x için onaltılık rakam eksik"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "evrensel kod rakamı eksik \\%c"
@@ -657,19 +657,19 @@ msgstr "başka dizin yok"
 msgid "%s: invalid argument"
 msgstr "%s: geçersiz argüman"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<geçerli dizin yok>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "dizin yığını boş"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "dizin yığını indisi"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -711,7 +711,7 @@ msgstr ""
 "      -N\tDizinler tarafından gösterilen listenin sağından başlayarak\n"
 "\tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan başlar."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -756,7 +756,7 @@ msgstr ""
 "    \n"
 "    Dizin yığıtını `dirs' komutuyla görebilirsiniz."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -799,62 +799,62 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: zamanaşımı belirtimi geçersiz"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "okuma hatası: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "bir işlev ve bir değişken aynı anda unset yapılamaz"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: unset yapılamaz"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s:unset yapılamaz: %s salt okunur"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: bir dizi değişkeni değil"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: bir işlev değil"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: unset yapılamaz"
+msgstr "%s: export yapılamıyor"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "shift sayısı"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: kabuk seçenek ismi geçersiz"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "dosya ismi argüman gerekir"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: dosya yok"
@@ -867,61 +867,61 @@ msgstr "engellenemez"
 msgid "cannot suspend a login shell"
 msgstr "bir oturum açma kabuğu engellenemez"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s `%s' için takma addır\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s bir kabuk anahtar sözcüğüdür\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s bir işlevdir\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s bir kabuk yerleşiğidir\n"
+msgstr "%s özel bir kabuk yerleşiğidir\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s bir kabuk yerleşiğidir\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s %s'dir\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s çitilmiş (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: sınırlama argümanı geçersiz"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "`%c': hatalı komut"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: sınır alınamıyor: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "sınır"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: sınır değiştirilemiyor: %s"
@@ -940,358 +940,368 @@ msgstr "`%c': simgesel kip işleci geçersiz"
 msgid "`%c': invalid symbolic mode character"
 msgstr "`%c': simgesel kip karakteri geçersiz"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " satır "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "son komut: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Çıkılıyor..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "BİLGİLENDİR:"
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "bilinmeyen komut hatası"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "hatalı komut türü"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "hatalı bağlantı"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "hatalı sıçrama"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: bağlanmamış değişken"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\agirdi beklerken zamanaşımı: auto-logout\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] hala mevcut"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "iletişim tüneli hatası"
 
-#: execute_cmd.c:4496
-#, fuzzy, c-format
+#: execute_cmd.c:4671
+#, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)"
+msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:4508
-#, fuzzy, c-format
+#: execute_cmd.c:4683
+#, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)"
+msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: komut yok"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: hatalı yorumlayıcı"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: ikili dosya çalıştırılamıyor: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s: bir kabuk yerleşiğidir"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "fd %d, fd %d olarak yinelenemiyor"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "ifade özyineleme düzeyi aşıldı"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "özyineleme yığıtı alttan taştı"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "ifadede sözdizimi hatası"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "değişken olmayana atama yapmaya çalışıldı"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "ifadede sözdizimi hatası"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "sıfırla bölme"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "yazılım hatası: bad expassign token"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "koşullu ifade için `:' bekleniyordu"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "üs sıfırdan küçük"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "eksik `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "sözdizimi hatası: terim umuluyordu"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "sözdizimi hatası: geçersiz aritmetik işleci"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (hata belirtisi \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "geçersiz sayı tabanı"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "değer taban için fazla büyük"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: ifade hatası\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: üst dizinlere erişilemiyor"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: yeni fd %d için tampon zaten var"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp iletişim tüneli"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "çatallanan pid %d, çalışan iş %d içinde görünüyor"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "durdurulan %2$ld süreç gruplu iş %1$d  siliniyor"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: %5ld (%s) program kimliği hala canlı olarak işaretli"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: böyle bir pid yok"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Sinyal %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Bitti"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Durdu"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Durdu(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Çalışıyor"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Bitti(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Çıkış %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Bilinmeyen durum"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(çekirdek döküldü)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "alt setpgid (şuradan: %ld şuraya: %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld bu kabuğun bir alt sürecine ait değil"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: süreç %ld için kayıt yok"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: iş %d durdu"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: iş sonlanmış"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: iş %d zaten artalanda"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: satır %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (çekirdek döküldü)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd artık: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp başarısız"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: satır düzeni"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: satır düzeni"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "uçbirim süreç grunu (%d) ayarlanamaz"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "bu kabukta iş denetimi yok"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: kanaat doğrulaması başarısız: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1300,39 +1310,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: kanaat doğrulaması battı\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "bilinmeyen"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: zaten serbest bırakılmış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: ayrılmamış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: başlangıç ve son tomar boyutları farklı"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: ayrılmamış blok argümanı ile çağrıldı"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: başlangıç ve son tomar boyutları farklı"
 
@@ -1374,22 +1384,22 @@ msgstr "%s: hatalı ağ yolu belirtimi"
 msgid "network operations not supported"
 msgstr "desteklenmeyen ağ işlemleri"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: (%s) diline değiştirilemedi"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: şu dile (%s) değiştirilemedi: %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: yerel (%s) değiştirilemiyor"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: yerel (%s) değiştirilemiyor: %s"
@@ -1407,150 +1417,152 @@ msgstr "$_'de yeni postanız var"
 msgid "The mail in %s has been read\n"
 msgstr "%s'deki posta okundu\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "sözdizimi hatası: aritmetik ifadesi gerekli"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "sözdizimi hatası: `;' beklenmiyordu"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "sözdizimi hatası: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: hatalı yönerge türü %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): "
+"satır kırpıldı"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "en fazla buraya belge sayısı aşıldı"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "`]]' aranırken beklenmedik dosya sonu"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "koşullu ifadede sözdizimi hatası"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "beklenmedik dizgecik `%s', `)' umuluyordu"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "`)' umuluyordu"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "koşullu tek terimli işlece beklenmedik argüman"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "koşullu iki terimli işleç umuluyordu"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "koşullu iki terimli işlece beklenmedik argüman"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "koşullu komutta beklenmeyen dizgecik `%c'"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "koşullu komutta beklenmeyen dizgecik `%s'"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "koşullu komutta beklenmeyen dizgecik %d"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "`%s' yakınında sözdizimi hatası"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "sözdizimi hatası: beklenmeyen dosya sonu"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "sözdizimi hatası"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: `%s' işlevi yok"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: muhtemel yeniden deneme döngüsü"
 
 #: pcomplib.c:182
 #, c-format
@@ -1576,90 +1588,94 @@ msgstr "xtrace_set: BOŞ dosya işaretçisi"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': geçersiz biçim karakteri"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "dosya tanıtıcı aralık dışında"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: belirsiz yönlendirme"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: mevcut dosyanın üzerine yazılamıyor"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: kısıtlı: çıktı yönlendirilemiyor"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "belge için geçici dosya oluşturulamıyor: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: fd değişkene atanamıyor"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "yönlendirme hatası: fd yinelenemiyor"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "/tmp bulunamadı, lütfen oluşturun!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp geçerli bir dizinin adı olmalıdır"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: geçersiz seçenek"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
+msgstr "uid %d olarak ayarlanamıyor: etkin uid %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
+msgstr "gid %d olarak ayarlanamıyor: etkin gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "hata ayıklayıcı başlatılamadı, hata ayıklama devre dışı"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
-msgstr "%s: bir dizin"
+msgstr "%s: Bir dizin"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Hiç ismim yok!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, sürüm %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1668,54 +1684,55 @@ msgstr ""
 "Kullanım:\t%s [GNU uzun seçeneği] [seçenek] ...\n"
 "\t%s [GNU uzun seçeneği] [seçenek] betik-dosyası ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU uzun seçenekleri:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Kabuk seçenekleri:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s ya da -o seçeneği\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' "
 "yazın.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 "Yazılım hatalarını raporlamak için `bashbug' komutunu kullanınız.\n"
 "Çeviri hatalarını ise <gnu-tr@belgeler.org> adresine bildiriniz.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "bash ana sayfası: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
+"GNU yazılımı kullanımı hakkında genel yardım: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: geçersiz işlem"
@@ -1889,92 +1906,96 @@ msgstr "Bilinmeyen Sinyal #"
 msgid "Unknown Signal #%d"
 msgstr "Bilinmeyen Sinyal #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: dizi üyesine liste atanamaz"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "süreç ikamesi için borulama yapılamıyor"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "süreç ikamesi için alt süreç yapılamıyor"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "isimli boru %s okumak için açılamıyor"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "isimli boru %s yazmak için açılamıyor"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "isimli boru %s fd %d olarak yinelenemiyor"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "hatalı ikame: %s içinde kapatan \"`\" yok"
+msgstr "komut ikamesi: girdideki null bayt yoksayıldı"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "komut ikamesi için boru yapılamıyor"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "komut ikamesi için alt süreç yapılamıyor"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: boru fd 1 olarak yinelenemiyor"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: hatalı ikame"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: geçersiz satır sayısı"
+msgstr "%s: geçersiz dolaylı yayılım"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "`%s': geçersiz takma isim"
+msgstr "%s: geçersiz değişken adı"
+
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: parametre boş ya da değer atanmamış"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parametre boş ya da değer atanmamış"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: altdizge ifadesi < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: hatalı ikame"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: bu yolla atama yapılmaz"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -1982,12 +2003,12 @@ msgstr ""
 "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye "
 "zorlayacak"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "hatalı ikame: %s içinde kapatan \"`\" yok"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "eşleşme yok: %s"
@@ -2010,116 +2031,121 @@ msgstr "`)' bekleniyordu"
 msgid "`)' expected, found %s"
 msgstr "`)' bekleniyordu, %s bulundu"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: tek terimli işleci bekleniyordu"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: iki terimli işleci bekleniyordu"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "eksik `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "geçersiz sinyal numarası"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler:hatalı sinyal %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "`%s'nin işlev tanımının içeri aktarılmasında hata"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "kabuk düzeyi (%d) çok yüksek, 1 yapılıyor"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: geçerli etki alanında hiç işlev bağlamı yok"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: değişkene değer atanmamış olabilir"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer"
+msgstr "%s: isim referansına tamsayı ataması"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: geçerli etki alanında hiç işlev bağlamı yok"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s boş exportstr içeriyor"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%2$s için exportstr içinde geçersiz karakter %1$d"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "%s için exportstr içinde `=' yok"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: kabuk değişkenlerinin başı bir işlev bağlamı değil"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: genel değişkenler bağlamı yok"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: DOSYA olarak açılamaz"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz değer"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: uyumlulukdeğeri aralık dışı"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş."
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2142,22 +2168,22 @@ msgstr "Bu ücretsiz bir yazılımdır; değiştirmekte ve dağıtmakta özgürs
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %lu bayt ayrılamıyor (%lu bayt ayrıldı)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: %lu bayt ayrılamıyor"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: %lu bayt ayrılamıyor"
@@ -2212,9 +2238,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 msgstr "declare [-aAfFgilnrtux] [-p] [isim[=değer] ...]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] isim[=değer] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] isim[=değer] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2285,9 +2310,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [görevtan ...]"
+msgstr "disown [-h] [-ar] [görevtan ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2362,16 +2386,16 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] isim [isim ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [sınır]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [sınır]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [kip]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id ...]"
 
 #: builtins.c:181
@@ -2463,8 +2487,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] biçim [argümanlar]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2473,38 +2498,37 @@ msgstr ""
 "[isim ...]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
-"compgen [-abcdefgjksuv] [-o seçenek]  [-A işlem] [-G genelyol] [-W "
+"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W "
 "kelimelistesi]  [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] "
 "[kelime]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c "
-"parçacık] [dizi]"
+"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C "
+"geriçağırım] [-c parçacık] [dizi]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c "
 "parçacık] [dizi]"
 
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2540,7 +2564,6 @@ msgstr ""
 "    Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür."
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2552,13 +2575,12 @@ msgstr ""
 "Tanımlı rumuzlar listesinden her İSMİ kaldır.\n"
 "    \n"
 "    Seçenekler:\n"
-"      -a\ttüm rumuz tanımlamalarını kaldır.\n"
+"      -a\ttüm rumuz tanımlamalarını kaldır\n"
 "    \n"
 "    İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n"
 "    döndür."
 
 #: builtins.c:291
-#, fuzzy
 msgid ""
 "Set Readline key bindings and variables.\n"
 "    \n"
@@ -2631,8 +2653,8 @@ msgstr ""
 "      -x  TUŞDİZİSİ:KABUK-KOMUTU\tTUŞDİZİSİnin her girilişinde KABUK-"
 "KOMUTUnun\n"
 "    \t\t\t\tçalıştırılmasını sağlar.\n"
-"      -X\t\t     Tuş dizilerini -x ve ilişkili komutlarını tekrar bir girdi "
-"olarak kullanılabilecek\n"
+"      -X                 Tuş dizilerini -x ve ilişkili komutlarını tekrar "
+"bir girdi olarak kullanılabilecek\n"
 "                         biçimde listeler.\n"
 "    \n"
 "    Çıkış Durumu:\n"
@@ -2677,6 +2699,7 @@ msgstr ""
 "    N, 1 veya daha büyük olmadığında çıkış durumu 0'dır."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2687,7 +2710,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Kabuk dahillerini çalıştır.\n"
 "    \n"
@@ -2731,7 +2754,6 @@ msgstr ""
 "döndürür."
 
 #: builtins.c:387
-#, fuzzy
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
@@ -2795,12 +2817,16 @@ msgstr ""
 "    için kullanılır\n"
 "    \n"
 "    Seçenekler:\n"
-"        -L\tsembolik bağlantıların takip edilmesini zorla\n"
-"        -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan\n"
+"        -L\tsembolik bağlantıların takip edilmesini zorla: '..' "
+"örneklerinin\n"
+"    \t\tişlenmesinden sonra DİZİN içindeki sembolik bağlantıları çöz\n"
+"        -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' "
+"örneklerinin\n"
+"    \t\tişlenmesinden önce DİZİN içindeki sembolik bağlantıları çöz\n"
 "        -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini "
 "başarılı şekilde\n"
 "    \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n"
-"       -@ destekleyen sistemlerde, dosya niteliklerini içeren bir dizin "
+"       -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin "
 "olarak uzatılmış\n"
 "           niteliklere sahip bir dosya sun    \n"
 "    Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip "
@@ -2812,7 +2838,6 @@ msgstr ""
 "    sıfır olmayan bir değer döndürür."
 
 #: builtins.c:425
-#, fuzzy
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -2880,7 +2905,6 @@ msgstr ""
 "    Her zaman başarısızdır."
 
 #: builtins.c:471
-#, fuzzy
 msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
@@ -2907,11 +2931,11 @@ msgstr ""
 "    diskte komutları çalıştırmak için kullanılabilir.\n"
 "    \n"
 "    Seçenekler:\n"
-"      -p\tYOL için, tüm standart yardımcıları bulabilmek için bir öntanımlı "
-"değer\n"
+"      -p    YOL için, tüm standart yardımcıları bulabilmek için bir "
+"öntanımlı değer\n"
 "    \tkullan\n"
-"      -v\t`type' dahilisine benzer bir KOMUT açıklaması göster\n"
-"      -V\ther KOMUTun fazla açıklamasını göster\n"
+"      -v    `type' dahilisine benzer bir KOMUT açıklaması göster\n"
+"      -V    her KOMUTun fazla açıklamasını göster\n"
 "    \n"
 "    Çıkış Durumu:\n"
 "    KOMUTun çıkış durumunu döndürür. KOMUT bulunamazsa başarısız olur."
@@ -2936,11 +2960,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2965,10 +2989,10 @@ msgstr ""
 "      -f\teylemi veya işlev ismi ile tanımları gösterimini kısıtla\n"
 "      -F\tsadece işlev isim gösterimlerini kısıtla (ek olarak satır sayısı "
 "ve hata ayıklarken\n"
-"    \tkaynak dosyayı)\n"
+"    \t\tkaynak dosyayı)\n"
 "      -g\tbir kabuk fonksiyonunda kullanıldığında evrensel değişken "
 "oluştur,\n"
-"    \taksi takdirde yoksayılır\n"
+"    \t\taksi takdirde yoksayılır\n"
 "      -p\ther İSİMin değeri ve niteliklerini görüntüle\n"
 "    \n"
 "    Nitelik ayarlayan seçenekler:\n"
@@ -2998,7 +3022,6 @@ msgstr ""
 "    başarılı döner."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3006,7 +3029,7 @@ msgid ""
 msgstr ""
 "Değişken isim ve niteliklerini ayarla.\n"
 "    \n"
-"    Kullanılmıyor.  Bkz. `help declare'."
+"    `declare' ile eş anlamlıdır.  Bkz. `help declare'."
 
 #: builtins.c:538
 msgid ""
@@ -3066,6 +3089,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3094,14 +3123,14 @@ msgstr ""
 "      \\\\\tters bölü\n"
 "      \\0nnn\tASCII kodu NNN (sekizlik) olan karakter.  NNN 0-3 arası "
 "sekizli\n"
-"    \trakamlardan oluşabilir.\n"
+"    \t\trakamlardan oluşabilir.\n"
 "      \\xHH\tdeğeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n"
-"    \tonaltılık rakam olabilir\n"
+"    \t\tonaltılık rakam olabilir\n"
 "    \n"
 "    Çıkış Durumu:\n"
 "    Yazma hatası oluşmadığı takdirde başarılı döner."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3123,7 +3152,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Bir hata oluşmadığı sürece başarılı döner."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3174,7 +3203,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    İSİM bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3194,7 +3223,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Komutun çıkış durumunu döndürür veya komut boşsa başarılı döner."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3291,8 +3320,7 @@ msgstr ""
 "bir     hata oluştuğunda başarısız döner.\n"
 "    encountered or an error occurs."
 
-#: builtins.c:688
-#, fuzzy
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3322,8 +3350,8 @@ msgstr ""
 "    \n"
 "    Seçenekler:\n"
 "      -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n"
-"      -c\t\tKOMUTu boş bir ortamla çalıştır\n"
-"      -l\t\tKOMUTun sıfırıncı argümanına bir çizgi koy\n"
+"      -c\tKOMUTu boş bir ortamla çalıştır\n"
+"      -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n"
 "    \n"
 "    Eğer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece "
 "etkileşimsiz kabuk\n"
@@ -3332,7 +3360,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    KOMUT bulunduğu ve bir yönlendirme hatası olmadığı sürece başarılı döner."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3344,7 +3372,7 @@ msgstr ""
 "    N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n"
 "    çıkış durumu döner."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3357,7 +3385,7 @@ msgstr ""
 "    N durumuyla bir oturum kabuğundan çıkar. Eğer çalıştırılmamışsa oturum\n"
 "    kabuğunda bir hata döndürür."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3414,7 +3442,7 @@ msgstr ""
 "    Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda "
 "sıfır harici değer döner."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3434,7 +3462,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Ön plana yerleştirilmiş komutun durumu veya hata olduğunda başarısız."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3456,7 +3484,7 @@ msgstr ""
 "    İş kontrolü etkin olmadığı veya bir hata oluşmadığı sürece başarılı "
 "döner."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3480,7 +3508,7 @@ msgid ""
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
 
-#: builtins.c:812
+#: builtins.c:816
 #, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
@@ -3496,7 +3524,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3512,7 +3540,7 @@ msgstr ""
 "      -d\ther konu için kısa açıklama yazdır\n"
 "      -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n"
 "      -s\tsadece DESEN ile eşleşen konular için kısa kullanım\n"
-"    \tbilgisi yazdır\n"
+"    \t\tbilgisi yazdır\n"
 "    \n"
 "    Argümanlar:\n"
 "      DESEN\tBir yardım konusunu belirten desen\n"
@@ -3521,7 +3549,7 @@ msgstr ""
 "    DESEN bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı "
 "döner."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3531,7 +3559,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3563,12 +3592,12 @@ msgstr ""
 "    \n"
 "    Seçenekler:\n"
 "      -c\tkomut geçmişi listesini tüm girdilerini silerek temizler.\n"
-"      -d\tile satır numarası KONUM olan geçmiş girdisi silinir.\n"
+"      -d\tile konumu KONUM olan geçmiş girdisi silinir.\n"
 "    \n"
 "      -a\tile oturumunun başlangıcından itibaren girilen geçmiş satırları\n"
 "    \tgeçmiş dosyasına eklenir.\n"
-"      -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları,\n"
-"    \tgeçmiş listesine eklenir.\n"
+"      -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları okur\n"
+"    \t\tve geçmiş listesine ekler\n"
 "      -r\tile dosya okunur ve içeriği geçmiş listesine eklenir.\n"
 "      -w\tile geçmiş listesi çıktısı geçmiş dosyasına yazılır.\n"
 "    \n"
@@ -3576,10 +3605,10 @@ msgstr ""
 "    \tdepolamadan görüntüle\n"
 "      -s\tARGümanları geçmiş listesine tek bir girdi olarak ekle\n"
 "    \n"
-"    DOSYAİSMİ verilmezse, $HISTFILE değişkenindeki değer, o da yoksa\n"
+"    DOSYAİSMİ verilmezse, HISTFILE değişkenindeki değer, o da yoksa\n"
 "    ~/.bash_history dosyası kullanılır.\n"
 "    \n"
-"    $HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve  anlamlı  bir  değere\n"
+"    HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve  anlamlı  bir  değere\n"
 "    sahipse, değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n"
 "    damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n"
 "    takdirde hiç zaman damgası basılmaz.     \n"
@@ -3587,8 +3616,7 @@ msgstr ""
 "    Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
 "başarılı döner."
 
-#: builtins.c:872
-#, fuzzy
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3617,10 +3645,10 @@ msgstr ""
 "    Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n"
 "    \n"
 "    Seçenekler:\n"
-"      -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID)    "
-"\tlisteler\n"
+"      -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) "
+"listele\n"
 "      -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n"
-"    \tberi durumları değişen işler hakkında bilgi gösterir.\n"
+"    \t\tberi durumları değişen işler hakkında bilgi gösterir.\n"
 "      -p\tile işlerin sadece süreç kimliklerini listeler\n"
 "      -r\tile sadece çalışmakta olan,\n"
 "      -s\tile ise sadece durmuş olan işler listelenir.\n"
@@ -3634,8 +3662,7 @@ msgstr ""
 "başarılı döner.\n"
 "    -x kullanılmışsa, KOMUTun çıkış durumu döndürülür."
 
-#: builtins.c:899
-#, fuzzy
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3661,14 +3688,13 @@ msgstr ""
 "      -a\tİŞTANIMı belirtilmemişse tüm görevleri kaldır\n"
 "      -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve "
 "SIGHUP\n"
-"    \tgönderme\n"
+"    \t\tgönderme\n"
 "      -r\tsadece çalışan görevleri kaldırremove \n"
 "    \n"
 "    Çıkış Durumu:\n"
 "    Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3700,8 +3726,9 @@ msgstr ""
 "      -s sig\tSİNYAL bir sinyal\n"
 "      -n sig\tSİNYAL bir sinyal numarası\n"
 "      -l\t-l seçeneği ile sinyal isimleri listelenir.\n"
-"      Argümanlı -l seçeneğinde argümanların listelenecek\n"
+"      \t\tArgümanlı -l seçeneğinde argümanların listelenecek\n"
 "      sinyal  isimlerinin  numaraları  olduğu  varsayılır.    \n"
+"      -L\t, -l anahtarının eş anlamlısıdır\n"
 "    Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine "
 "iş\n"
 "    kimliklerinin kullanımını mümkün  kılar ve eğer oluşturabileceğiniz "
@@ -3714,7 +3741,7 @@ msgstr ""
 "    Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı "
 "döner."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3800,7 +3827,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır."
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3821,7 +3848,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3852,7 +3879,7 @@ msgid ""
 "    or an invalid file descriptor is supplied as the argument to -u."
 msgstr ""
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3872,8 +3899,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4042,7 +4068,7 @@ msgstr ""
 "        kabuklarda öntanımlı olarak etkindir.\n"
 "    -P  Verildiğinde, örneğin çalışılan dizini değiştirmek için cd gibi bir\n"
 "        komut sembolik bağları izlemez.\n"
-"    -T  Etkinse DEBUG üstündeki bir tuzak kabuk işlevlerince\n"
+"    -T  Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk işlevlerince\n"
 "        miras alınır.\n"
 "    -- Geri kalan argümanları konumsal parametrelere ata. Eğer kalan\n"
 "       argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n"
@@ -4058,7 +4084,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Geçersiz seçenek belirtilmediği sürece başarılı döner."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4080,7 +4106,7 @@ msgid ""
 "    Returns success unless an invalid option is given or a NAME is read-only."
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4099,7 +4125,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4120,7 +4146,7 @@ msgid ""
 "    Returns success unless an invalid option is given or NAME is invalid."
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4131,7 +4157,7 @@ msgid ""
 "    Returns success unless N is negative or greater than $#."
 msgstr ""
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4158,7 +4184,7 @@ msgstr ""
 "    DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n"
 "    okunamazsa başarısız döner."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4172,8 +4198,7 @@ msgid ""
 "    Returns success unless job control is not enabled or an error occurs."
 msgstr ""
 
-#: builtins.c:1254
-#, fuzzy
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4316,6 +4341,8 @@ msgstr ""
 "    Diğer işleçler:\n"
 "    \n"
 "        -o SEÇENEK         Kabuk seçeneği SEÇENEK etkinse doğrudur.\n"
+"      -v DEĞŞ         Kabuk DEĞŞ ayarlanmış ise true.\n"
+"      -R DEĞŞ         Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n"
 "        ! İFADE            İFADE yanlışsa doğrudur.\n"
 "        İFADE1 -a İFADE2   İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur.\n"
 "        İFADE1 -o İFADE2   İFADE1 veya İFADE2 doğruysa doğrudur.\n"
@@ -4333,7 +4360,7 @@ msgstr ""
 "geçersiz\n"
 "    argümanda başarısız döner."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4345,7 +4372,7 @@ msgstr ""
 "    \"test\" yerleşiği ile aynıdır, fakat son argüman açan `[' ile eşleşen\n"
 "   kapatan `]' olmak zorundadır."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4364,7 +4391,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Her zaman başarılı döner."
 
-#: builtins.c:1357
+#: builtins.c:1362
 #, fuzzy
 msgid ""
 "Trap signals and other events.\n"
@@ -4425,7 +4452,7 @@ msgstr ""
 "    numaraları  ile  birlikte  listelemesini  sağlar.  Kabuğa  bir  sinyal\n"
 "    göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4455,8 +4482,7 @@ msgid ""
 "found."
 msgstr ""
 
-#: builtins.c:1424
-#, fuzzy
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4518,6 +4544,7 @@ msgstr ""
 "      -e\tAzami zamanlama önceliği (`nice')\n"
 "      -f\tKabuk ve çocukları tarafından oluşturulan dosyaların azami boyu\n"
 "      -i\tAskıdaki sinyallerin azami sayısı\n"
+"      -k\tBu süreç için ayrılmış kqueue'lerin azami sayısı\n"
 "      -l\tBelleğe kilitlenebilen azami boyut\n"
 "      -m\tAzami bellek boyu\n"
 "      -n\tAçık dosya tanıtıcılarının azami sayısı\n"
@@ -4546,7 +4573,7 @@ msgstr ""
 "    Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
 "başarılı döner."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4564,7 +4591,8 @@ msgid ""
 "    Returns success unless MODE is invalid or an invalid option is given."
 msgstr ""
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4572,13 +4600,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4599,7 +4629,7 @@ msgstr ""
 "verilmişse\n"
 "    başarısız olur."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4626,7 +4656,7 @@ msgstr ""
 "verilmişse\n"
 "    başarısız olur."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4650,7 +4680,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4681,7 +4711,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4724,7 +4754,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4753,7 +4783,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    VERİYOLU döndürme değerini döndürür."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4771,8 +4801,7 @@ msgstr ""
 "    Çıkış Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1612
-#, fuzzy
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4792,11 +4821,8 @@ msgid ""
 "    Exit Status:\n"
 "    Returns the status of the last command executed."
 msgstr ""
-"\rif KOMUTlar; then KOMUTlar;\n"
-"[ elif KOMUTlar; then KOMUTlar; ]...\n"
-"[ else KOMUTlar; ]\n"
-"fi\n"
-"\n"
+"Komutları şartlara göre çalıştırır.\n"
+"    \n"
 "    `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n"
 "    `then KOMUTlar;' listesi çalıştırılır,  değilse  `elif KOMUTlar;'\n"
 "    listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n"
@@ -4804,9 +4830,10 @@ msgstr ""
 "    `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n"
 "    Oluşumun tamamının dönüş durumu çalıştırılmış olan son komutun\n"
 "    çıkış durumudur.  Bir komut çalıştırılmamışsa  ve hiçbir koşul\n"
-"    doğru sonuç vermemişse sıfır döner."
+"    doğru sonuç vermemişse sıfır döner.     Çıkış Durumu:\n"
+"    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4824,7 +4851,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    En son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4842,7 +4869,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1653
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4855,7 +4882,7 @@ msgid ""
 "    The coproc command returns an exit status of 0."
 msgstr ""
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4869,7 +4896,7 @@ msgid ""
 "    Returns success unless NAME is readonly."
 msgstr ""
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4887,7 +4914,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Son çalıştırılan komutun durumunu döndürür."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4911,7 +4938,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    Devam edilen görevin durumunu döndürür."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4929,8 +4956,7 @@ msgstr ""
 "    Çıktı Durumu:\n"
 "    İFADE 0 olursa 1; aksi takdirde 0 döndürür."
 
-#: builtins.c:1720
-#, fuzzy
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -4957,7 +4983,8 @@ msgid ""
 "    Exit Status:\n"
 "    0 or 1 depending on value of EXPRESSION."
 msgstr ""
-"\r[[ İFADE ]]\n"
+"Koşullu komut çalıştır.\n"
+"     \n"
 "    Koşullu İFADEnin değerine bağlı olarak 0 ya da 1 durumu ile döner.\n"
 "    İfadeler  test yerleşiği tarafından kullanılan aynı ilkelerle "
 "oluşturulur\n"
@@ -4968,12 +4995,17 @@ msgstr ""
 "        İFADE1 && İFADE2  İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur\n"
 "        İFADE1 || İFADE2  İFADE1 veya İFADE2 doğruysa doğrudur\n"
 "\n"
-"    == ve != işleçleri kullanıldığında, işlecin sağındaki dizge bir kalıp\n"
-"   olarak ele alınır ve kalıp eşleştirmesi uygulanır. && ve || işleçleri\n"
-"   eğer ilk ifade sonuç için belirleyici ise ikincisine bakmazlar."
+"    `==' ve `!='  işleçleri kullanıldığında, işlecin sağındaki dizge bir "
+"kalıp\n"
+"   olarak ele alınır ve kalıp eşleştirmesi uygulanır. `=~'  kullanıldığında\n"
+"   işlecin sağındaki dizge düzenli ifade olarak eşleştirilir.     \n"
+"    İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n"
+"    çalıştırmaz.\n"
+"    \n"
+"    Çıkış Durumu:\n"
+"    İFADE değerine göre 0 veya 1."
 
-#: builtins.c:1746
-#, fuzzy
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5026,75 +5058,67 @@ msgid ""
 "    HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
 "    \t\tcommands should be saved on the history list.\n"
 msgstr ""
-"\rdeğişkenler: Bazı değişkenler ve anlamları:\n"
-"    BASH_VERSION       Bu Bash'in sürüm bilgisi.\n"
-"    CDPATH        `    cd'ye argüman olarak verilecek dizinlerin aranacağı\n"
-"                       dizinlerin ikinokta imi ayraçlı listesi.\n"
-"    GLOBIGNORE         Dosyayolu yorumlaması tarafından yoksayılacak dosya\n"
-"                       isimlerini belirten kalıpların ikinokta imi ayraçlı\n"
-"                       listesi.\n"
-"    HISTFILE           Komut geçmişinizin saklanacağı dosyanın ismi.\n"
-"    HISTFILESIZE       Bu dosyanın içerebileceği azami satır sayısı.\n"
-"    HISTSIZE           Çalışan bir kabuğun erişebileceği geçmiş "
-"satırlarının\n"
-"                       azami sayısı.\n"
-"    HOME               Kullanıcının ev dizininin tam yolu.\n"
-"    HOSTNAME           Makinenizin ağdaki konak ismi.\n"
-"    HOSTTYPE           Bash'in bu sürümünün altında çalıştığı işlemcinin "
-"türü\n"
-"    IGNOREEOF          Tek girdi olarak EOF karakteri alındığında kabuğun\n"
-"                       eylemini kontrol eder. Atandığında değeri, kabuk\n"
-"                       çıkmadan önce bir girdi satırındaki ilk karakter\n"
-"                       olarak okunabilen ardışık EOF karakterlerinin "
-"sayısını\n"
-"                       gösterir (öntanımlı 10). Eğer değişken mevcut "
-"değilse,\n"
-"                       EOF girdi sonunu belirtir.\n"
-"    MACHTYPE           Bash'in üzerinde çalıştığı sistemi açıklayan dizge.\n"
-"    MAILCHECK          Bash'in yeni postaya kaç saniyede bir bakacağı.\n"
-"    MAILPATH           Bash'in yeni posta var mı diye bakacağı dosya\n"
-"                       isimlerinin ikinokta imi ayraçlı listesi.\n"
-"    OSTYPE             Bash'in üzerinde çalıştığı çekirdeğin türü.\n"
-"    PATH               Komutları ararken bakılacak dizinlerin ikinokta imi\n"
-"                       ayraçlı listesi.\n"
-"    PROMPT_COMMAND     Birincil komut istemi ($PS1) basılmadan önce\n"
-"                       çalıştırılacak komut\n"
-"    PS1                Birincil komut istemi dizgesi.\n"
-"    PS2                İkincil komut istemi dizgesi.\n"
-"    PWD                Çalışma dizininizin tam yolu.\n"
-"    SHELLOPTS          Etkin kabuk seçeneklerinin ikinokta imi ayraçlı "
-"listesi\n"
-"    TERM               Geçerli uçbirim türünün ismi.\n"
-"    TIMEFORMAT         time anahtar sözcüğü ile başlayan zamanlama "
-"bilgisinin\n"
-"                       nasıl belirtileceğini gösteren biçim dizgesi.\n"
-"    auto_resume        Değerin boş olmaması durmuş işin isminin onu\n"
-"                       başlatmakta kullanılan komut satırı olduğudur ve\n"
-"                       oradaysa iş önalana alınır. `exact' değeri, komut\n"
-"                       sözcüğünün durmuş işler listesindeki komutla tam\n"
-"                       olarak eşleşmesi gerektiği anlamına gelir. "
-"`substring'\n"
-"                       değeri, komut sözcüğünün işin bir altdizgesi ile\n"
-"                       eşleşmesi gerektiğini belirtir. Bunlar dışında bir\n"
-"                       değer komutun durmuş bir işe önek olması gerektiği\n"
-"                       anlamına gelir.\n"
-"    histchars          Geçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n"
-"                       denetleyen en çok üç karakter. İlk karakter geçmiş\n"
-"                       yorumlamasının başlatılmasını sağlayan geçmiş\n"
-"                       yorumlama karakteridir ve normalde ! işaretidir.\n"
-"                       İkinci karakter, bir satırdaki ilk karakter "
-"olduğunda\n"
-"                       `hızlı ikame'yi imleyen karakterdir ve normalde ^\n"
-"                       imidir. İstemlik olan üçüncü karakter ise, bir\n"
-"                       sözcüğün ilk karakteri olarak bulunduğunda satırın\n"
-"                       kalanının açıklama olmasını sağlayan karakterdir ve\n"
-"                       normalde # imidir.\n"
-"    HISTIGNORE         Geçmiş listesine hangi satırların kaydedilmesi\n"
-"                       gerektiğine karar vermek için kullanılan kalıpların\n"
-"                       ikinokta imi ayraçlı listesi.\n"
-
-#: builtins.c:1803
-#, fuzzy
+"Bazı değişkenler ve anlamları:\n"
+"    \n"
+"    BASH_VERSION\tBu Bash'in sürüm bilgisi.\n"
+"    CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n"
+"    \t\tdizinlerin iki nokta imi ayraçlı listesi.\n"
+"    GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n"
+"    \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n"
+"    \t\tlistesi.\n"
+"    HISTFILE\tKomut geçmişinizin saklanacağı dosyanın ismi.\n"
+"    HISTFILESIZE\tBu dosyanın içerebileceği azami satır sayısı.\n"
+"    HISTSIZE\tÇalışan bir kabuğun erişebileceği geçmiş satırlarının\n"
+"    \t\tazami sayısı.\n"
+"    HOME\tKullanıcının ev dizininin tam yolu.\n"
+"    HOSTNAME\tMakinenizin ağdaki konak ismi.\n"
+"    HOSTTYPE\tBash'in bu sürümünün altında çalıştığı işlemcinin türü\n"
+"    IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuğun\n"
+"    \t\teylemini kontrol eder. Atandığında değeri, kabuk\n"
+"    \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n"
+"    \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n"
+"    \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse,\n"
+"    \t\tEOF girdi sonunu belirtir.\n"
+"    MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n"
+"    MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n"
+"    MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n"
+"    \t\tisimlerinin ikinokta imi ayraçlı listesi.\n"
+"    OSTYPE\tBash'in üzerinde çalıştığı çekirdeğin türü.\n"
+"    PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n"
+"    \t\tayraçlı listesi.\n"
+"    PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n"
+"    \t\tçalıştırılacak komut\n"
+"    PS1\tBirincil komut istemi dizgesi.\n"
+"    PS2\tİkincil komut istemi dizgesi.\n"
+"    PWD\tÇalışma dizininizin tam yolu.\n"
+"    SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n"
+"    TERM\tGeçerli uçbirim türünün ismi.\n"
+"    TIMEFORMAT\ttime anahtar sözcüğü ile başlayan zamanlama bilgisinin\n"
+"    \t\tnasıl belirtileceğini gösteren biçim dizgesi.\n"
+"    auto_resume\tDeğerin boş olmaması durmuş işin isminin onu\n"
+"    \t\tbaşlatmakta kullanılan komut satırı olduğudur ve\n"
+"    \t\toradaysa iş önalana alınır. `exact' değeri, komut\n"
+"    \t\tsözcüğünün durmuş işler listesindeki komutla tam\n"
+"    \t\tolarak eşleşmesi gerektiği anlamına gelir. `substring'\n"
+"    \t\tdeğeri, komut sözcüğünün işin bir altdizgesi ile\n"
+"    \t\teşleşmesi gerektiğini belirtir. Bunlar dışında bir\n"
+"    \t\tdeğer komutun durmuş bir işe önek olması gerektiği\n"
+"    \t\tanlamına gelir.\n"
+"    histchars\tGeçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n"
+"    \t\tdenetleyen en çok üç karakter. İlk karakter geçmiş\n"
+"    \t\tyorumlamasının başlatılmasını sağlayan geçmiş\n"
+"    \t\tyorumlama karakteridir ve normalde ! işaretidir.\n"
+"    \t\tİkinci karakter, bir satırdaki ilk karakter olduğunda\n"
+"    \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n"
+"    \t\timidir. İstemlik olan üçüncü karakter ise, bir\n"
+"    \t\tsözcüğün ilk karakteri olarak bulunduğunda satırın\n"
+"    \t\tkalanının açıklama olmasını sağlayan karakterdir ve\n"
+"    \t\tnormalde # imidir.\n"
+"    HISTIGNORE\tGeçmiş listesine hangi satırların kaydedilmesi\n"
+"    \t\tgerektiğine karar vermek için kullanılan kalıpların\n"
+"    \t\tikinokta imi ayraçlı listesi.\n"
+
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5124,29 +5148,35 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
-"\rpushd [DZN | +N | -N] [-n]\n"
+"Dizinleri yığına ekle.\n"
+"    \n"
 "    Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n"
 "    dizini yığıtın tepesine gelecek  şekilde  yığıtı  döndürür.  Hiç\n"
 "    argüman verilmemişse en üstteki iki dizini yer değiştirir.\n"
-"\n"
-"    +N    (`dirs' tarafından gösterilen listenin solundan saymaya\n"
-"          sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-"          yığıtı döndürür.\n"
-"\n"
-"    -N    (`dirs' tarafından gösterilen listenin sağından saymaya\n"
-"          sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-"          yığıtı döndürür.\n"
-"\n"
-"    +n    dizinleri yığıta eklerken normal dizin değişikliğini engeller,\n"
-"          böylece sadece yığıt değiştirilmiş olur.\n"
-"\n"
-"    DZN   DiZiNi yeni çalışma dizini yaparak dizin yığıtının\n"
-"          tepesine ekler.\n"
-"\n"
-"    Dizin yığıtını `dirs' komutuyla görebilirsiniz."
+"    \n"
+"    Seçenekler:\n"
+"      -n\tdizinleri yığıta eklerken normal dizin değişikliğini engeller,\n"
+"    \t\tböylece sadece yığıt değiştirilmiş olur.\n"
+"    \n"
+"    Argümanlar:\n"
+"      +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n"
+"    \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
+"    \t\tyığıtı döndürür.\n"
+"    \n"
+"      -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n"
+"    \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
+"    \t\tyığıtı döndürür.\n"
+"    \n"
+"    dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n"
+"    \t\ttepesine ekler.\n"
+"    \n"
+"    Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n"
+"    \n"
+"    Çıkış Durumu:\n"
+"    Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
+"    olmadıkça başarılı döner."
 
-#: builtins.c:1837
-#, fuzzy
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5172,22 +5202,31 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
-"\rpopd [+N | -N] [-n]\n"
+"Dizin yığıtından girdileri sil.\n"
+"    \n"
 "    Dizin yığıtından girdileri siler.  Hiç argüman verilmemişse,\n"
 "    yığıtın en üstündeki dizini  yığıttan  kaldırır  ve  yığıtın\n"
 "    tepesinde kalan dizine geçer. \n"
-"    +N    `dirs' tarafından gösterilen listenin solundan saymaya\n"
-"          sıfırla başlandığında N'inci girdiyi  siler.  Örneğin,\n"
-"          `popd +0' ilk dizini `popd +1' ikincisini siler. \n"
-"    -N    `dirs' tarafından gösterilen listenin sağından saymaya\n"
-"          sıfırla başlandığında N'inci girdiyi  siler.  Örneğin,\n"
-"          `popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n"
-"    -n    dizinleri yığıttan silerken normal dizin değişikliğini\n"
-"          engeller, böylece sadece yığıt değiştirilmiş olur. \n"
-"    Dizin yığıtını `dirs' komutuyla görebilirsiniz."
+"    \n"
+"    Seçenekler:\n"
+"      -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n"
+"    \t\tengeller, böylece sadece yığıt değiştirilmiş olur. \n"
+"    \n"
+"    Argümanlar:\n"
+"      +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n"
+"    \t\tsıfırla başlandığında N'inci girdiyi  siler.  Örneğin,\n"
+"    \t\t`popd +0' ilk dizini `popd +1' ikincisini siler. \n"
+"    \n"
+"      -N\t\t`dirs' tarafından gösterilen listenin sağından saymaya\n"
+"    \t\tsıfırla başlandığında N'inci girdiyi  siler.  Örneğin,\n"
+"    \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n"
+"    \n"
+"    Dizin yığıtını `dirs' komutuyla görebilirsiniz.    \n"
+"    Çıkış Durumu:\n"
+"    Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
+"    olmadıkça başarılı döner."
 
-#: builtins.c:1867
-#, fuzzy
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5215,31 +5254,39 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
-"\rdirs [-clpv] [+N] [-N]\n"
+"Dizin yığıtını görüntüle.\n"
+"    \n"
 "    O an anımsanan dizinleri listeler.  Dizinler listeye `pushd'\n"
 "    komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n"
 "    komutu kullanılır.\n"
-"    -l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar\n"
-"    olarak göstermemesine yol açar.  Yani `~/bin' yerine `/homes/bfox/bin'\n"
-"    gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in\n"
-"    dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her\n"
-"    satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki\n"
-"    konumu göstermemesi dışında aynı çıktıyı verir. -c seçeneği tüm\n"
-"    girdileri silerek dizin yığıtını boşaltır. \n"
-"    +N   dirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n"
-"         sıfırla başlayarak sayılan N'inci girdiyi gösterir.\n"
-"\n"
-"    -N   dirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n"
-"         sıfırla başlayarak sayılan N'inci girdiyi gösterir."
+"    \n"
+"    Seçenekler:\n"
+"      -c\ttüm girdileri silerek dizin yığıtını boşaltır.\n"
+"      -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n"
+"    \t\tolarak göstermemesine yol açar.\n"
+"      -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n"
+"      -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n"
+"    \t\tekleyerek her satırda bir girdi göstermesini sağlar.\n"
+"    \n"
+"    Argümanlar:\n"
+"      +N\tdirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n"
+"    \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n"
+"    \n"
+"    \n"
+"      -N\tdirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n"
+"    \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n"
+"    \n"
+"    Çıkış Durumu:\n"
+"    Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı "
+"döner."
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5253,8 +5300,7 @@ msgid ""
 "    given or OPTNAME is disabled."
 msgstr ""
 
-#: builtins.c:1919
-#, fuzzy
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5292,19 +5338,43 @@ msgid ""
 "assignment\n"
 "    error occurs."
 msgstr ""
-"\rprintf [-v DEĞİŞKEN] BİÇİM [ARGümanlar]\n"
-"    BİÇİMin  denetimi  altında  ARGümanları  standart  çıktıya biçimleyerek\n"
-"    yazar. BİÇİM  üç  tür  nesne  içeren  bir  dizgedir:  salt  karakterler\n"
+"BİÇİMin  denetimi  altında  ARGümanları  standart  çıktıya biçimleyerek "
+"yazar\n"
+"    \n"
+"    Seçenekler:\n"
+"      -v değişken\tseçeneği çıktının standart çıktıya\n"
+"    \t\tbasılması yerine DEĞİŞKENe atanmasını sağlar.\n"
+"    \n"
+"    BİÇİM  üç  tür  nesne  içeren  bir  dizgedir:  salt  karakterler\n"
 "    basitçe    standart    çıktıya   kopyalanır,   öncelenmiş   karakterler\n"
 "    dönüştürülüp  standart  çıktıya  kopyalanır  ve   biçim   belirtimleri;\n"
 "    belirtimlerin  her  biri  sırayla  karşı düşen ARGümanların basılmasını\n"
-"    sağlar. Standart printf(1) biçimlerine ek olarak, %b printf'in tersbölü\n"
-"    öncelemeli karakterlerin karşı düşen ARGümanda yorumlanmasını sağlar ve\n"
-"    %q printf'in karşı düşen ARGümanı kabuk girdisi olarak kullanılabilecek\n"
-"    biçimde çıktılamasını sağlar. -v seçeneği çıktının standart çıktıya\n"
-"    basılması yerine DEĞİŞKENe atanmasını sağlar. "
+"    sağlar.\n"
+"    \n"
+"    Standart printf(1) biçimlerine ek olarak, printf aşağıdakileri de "
+"yorumlar:\n"
+"    \n"
+"      %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda "
+"yorumlanmasını sağlar\n"
+"      %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde "
+"kullanılabilmesi\n"
+"    \t\tiçin alıntılar.\n"
+"      %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından "
+"kullanılmak üzere\n"
+"    \t\ttarih zaman dizgesi çıktısısı verir\n"
+"    \n"
+"    Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden "
+"kullanılır.\n"
+"    Biçimin gerektirdiğinden daha az argüman varsa, ek biçim tanımlamaları "
+"uygun olduğu\n"
+"    şekilde sıfır değeri veya BOŞ (null) dizge değeri olarak davranırlar.\n"
+"    \n"
+"    Çıkış Durumu:\n"
+"    Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde ya da bir "
+"atama\n"
+"    hatası oluşmadığı sürece başarılı döner."
 
-#: builtins.c:1953
+#: builtins.c:1961
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5322,16 +5392,20 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5353,7 +5427,7 @@ msgstr ""
 "    Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
 "başarılı döner."
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5368,6 +5442,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5384,7 +5459,7 @@ msgid ""
 "    have a completion specification defined."
 msgstr ""
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5426,7 +5501,7 @@ msgid ""
 "    not an indexed array."
 msgstr ""
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5436,9 +5511,8 @@ msgstr ""
 "    \n"
 "    `mapfile' ile eşanlamlıdır."
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş."
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş."
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5452,9 +5526,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş."
-
 #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
 #~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n"
 
index 466af2cdc9cea8f2c6e897d01ca24cbeb1282beb..448088dd5faf0f76fcb4f93313cd989650e9f95f 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index f49732bde3078a9dc022575b7e6d7ef2840b84f3..9614255d2749039651db8bc90c41b90bbafb834b 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
 #
 # Myhailo Danylenko <isbear@ukrpost.net>, 2009.
 # Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2010.
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015, 2016.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 4.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-15 21:32+0300\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2016-09-16 17:46+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: uk\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Generator: Lokalize 1.5\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "неправильний індекс масиву"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: вилучаємо атрибут nameref"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: неможливо перетворити індексований масив на асоціативний"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: неправильний ключ асоціативного масиву"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: означення нечислових елементів неможливе"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: при означенні асоціативних масивів слід вказувати ключ"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: не вдалося створити: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: не вдалося знайти відповідне призначення для "
 "команди"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: перший непробільний символ не є «\"»"
 
 # c-format
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "нема заключної «%c» у %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: пропущено двокрапку-роздільник"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "розкриття дужок: не вдалося отримати пам’ять для %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для %d елементів"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для «%s»"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "«%s»: некоректна назва замінника"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "редагування рядку не ввімкнено"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "«%s»: неправильна назва набору призначень клавіш"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: не вдалося прочитати: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "«%s»: не вдалося зняти призначення"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "«%s»: невідома назва функції"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s не призначено жодної клавіші.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s можна запустити за допомогою "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "«%s»: не вдалося зняти призначення"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "кількість циклів"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "має сенс лише усередині циклів `for', `while' та `until'"
 
@@ -150,235 +151,234 @@ msgstr ""
 "    \n"
 "    Якщо EXPR не вказано, повертає "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "змінну HOME не встановлено"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "забагато аргументів"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "немаÑ\94 Ñ\96нÑ\88ого ÐºÐ°Ñ\82алогÑ\83"
+msgstr "поÑ\80ожнÑ\96й ÐºÐ°Ñ\82алог"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "змінну OLDPWD не встановлено"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "рядок %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "попередження: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: використовуйте: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: параметр потребує аргументу"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: потрібен числовий аргумент"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: не знайдено"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: неправильний параметр"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: некоректна назва параметра"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "«%s»: неправильний ідентифікатор"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "неправильне вісімкове число"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "неправильне шістнадцяткове число"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "неправильне число"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: сигнал вказано з помилками"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "«%s»: не є ідентифікатором процесу чи завдання"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: змінна призначена лише для читання"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s виходить за встановлені межі"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "аргумент"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s виходить за встановлені межі"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: нема такого завдання"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: керування завданнями не ввімкнене"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "керування завданнями не ввімкнене"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: заборонено обмеженнями"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "заборонено обмеженнями"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: не є вбудованою командою оболонки"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "помилка запису: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "помилка встановлення параметрів термінала: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "помилка отримання параметрів термінала: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: помилка отримання поточного каталогу: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: завдання вказано неоднозначно"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "у цій версії не можна скористатися довідкою"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: неправильна назва дії"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: не вказано специфікація завершення"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "попередження: можливо параметр -F працює не так, як ви очікуєте"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "попередження: можливо параметр -C працює не так, як ви очікуєте"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "наразі функція завершення рядку не виконується"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "може використовуватися лише усередині функції"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: еталонна змінна не може бути масивом"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: не можна використовувати циклічне посилання у змінній посилання"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: циклічне посилання за назвою"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: некоректна назва змінної для посилання за назвою"
+msgstr "«%s»: некоректна назва змінної для посилання за назвою"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "`-f' не використовується для створення функцій"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: незмінна функція"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr ""
 "%s: встановлення значень для складеного масиву у лапках вважається застарілим"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: неможливо знищити масив таким чином"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: неможливо перетворити асоціативний масив на індексований"
@@ -414,68 +414,68 @@ msgstr "%s: завантажений не динамічно"
 msgid "%s: cannot delete: %s"
 msgstr "%s: не вдалося вилучити: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: це каталог"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: не є звичайним файлом"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: файл завеликий"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: не вдалося виконати бінарний файл"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: не вдалося виконати: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "вихід\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "це не оболонка сеансу: використовуйте `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Залишилися призупинені завдання.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Фонові завдання все ще виконуються.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "команду не знайдено"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
-msgstr "параметри історії"
+msgstr "параметри журналу"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: не вдалося відкрити тимчасовий файл: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "поточне"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "завдання %d запущене без контролю завдань"
@@ -490,29 +490,28 @@ msgstr "%s: неправильний параметр — %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: параметр потребує аргументу — %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "кешування вимкнене"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: в кеші нічого немає\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "влучень\tкоманда\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Команди оболонки, що відповідають слову `"
 msgstr[1] "Команди оболонки, що відповідають словам `"
 msgstr[2] "Команди оболонки, що відповідають словам `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -520,12 +519,12 @@ msgstr ""
 "«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %"
 "s' або `info %s'."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: не вдалося відкрити: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -548,23 +547,24 @@ msgstr ""
 "Зірочка (*) поряд з назвою команди означає, що команда заборонена.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "-anrw можуть зустрічатися лише один раз"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
-msgstr "позиція у історії команд"
+msgstr "позиція у журналу команд"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: Ð½ÐµÐºÐ¾Ñ\80екÑ\82ний Ð°Ñ\80гÑ\83менÑ\82"
+msgstr "%s: Ð½ÐµÐºÐ¾Ñ\80екÑ\82на Ñ\87аÑ\81ова Ð¿Ð¾Ð·Ð½Ð°Ñ\87ка"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
-msgstr "%s: невдалий пошук по історії команд"
+msgstr "%s: невдалий пошук по журналу команд"
 
 #: builtins/inlib.def:71
 #, c-format
@@ -575,16 +575,16 @@ msgstr "%s: помилка inlib"
 msgid "no other options allowed with `-x'"
 msgstr "не можна використовувати інші параметри разом з `-x'"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процесів"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Невідома помилка"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "очікувався вираз"
 
@@ -593,69 +593,69 @@ msgstr "очікувався вираз"
 msgid "%s: not an indexed array"
 msgstr "%s: не є індексованим масивом"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: неправильно вказаний дескриптор файла"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: неправильний дескриптор файла: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: неправильна кількість рядків"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: неправильний початковий індекс"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: неправильний крок виклику функції"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "порожня назва змінної-масиву"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "змінні-масиви не підтримуються"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "«%s»: пропущено символ у шаблоні"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "«%c»: помилкове визначення формату часу"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "«%c»: помилковий символ у шаблоні"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "попередження: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "проблема з обробкою форматування: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "пропущено шістнадцяткову цифру у \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "пропущено цифру Unicode у \\%c"
@@ -669,19 +669,19 @@ msgstr "немає іншого каталогу"
 msgid "%s: invalid argument"
 msgstr "%s: некоректний аргумент"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<немає поточного каталогу>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "стек каталогів порожній"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "рівень стеку каталогів"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -723,7 +723,7 @@ msgstr ""
 "      -N\tПоказує N-ний з кінця каталог у списку, що виводиться командою\n"
 "\tdirs без аргументів, відлік починається з нуля."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -769,7 +769,7 @@ msgstr ""
 "    \n"
 "    Вбудована команда `dirs' показує стек каталогів."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -815,41 +815,41 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: некоректне визначення часу очікування"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "помилка читання: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr ""
 "`return' працює лише у функції чи скрипті, запущеному за допомогою `source'"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "не можна одночасно знищити і функцію і змінну"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: не вдалося знищити"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: не вдалося знищити: %s лише для читання"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: не є масивом"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: не є функцією"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: не вдалося експортувати"
@@ -858,20 +858,20 @@ msgstr "%s: не вдалося експортувати"
 msgid "shift count"
 msgstr "кількість зсувів"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "не можна одночасно встановлювати й скасовувати параметри оболонки"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: неправильна назва параметра оболонки"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "потрібна назва файла"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: файл не знайдено"
@@ -884,63 +884,63 @@ msgstr "не вдалося призупинити"
 msgid "cannot suspend a login shell"
 msgstr "не можна призупинити оболонку сеансу"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s є псевдонімом до «%s»\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s — це ключове слово оболонки\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s є функцією\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s є спеціальною вбудованою командою оболонки\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s є вбудованою командою оболонки\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s — це %s\n"
 
 # I know the difference between hash and cache, but here,
 # I think, this is more suitable...
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s знаходиться в кеші (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: помилковий аргумент обмеження"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "«%c»: неправильна команда"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: не вдалося отримати значення обмеження: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "значення обмеження"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: не вдалося змінити обмеження: %s"
@@ -959,361 +959,371 @@ msgstr "«%c»: помилковий оператор у символьному
 msgid "`%c': invalid symbolic mode character"
 msgstr "«%c»: помилковий символ у символьному режимі"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " рядок "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "остання команда: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Припинення..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "ІНФОРМАЦІЯ: "
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "невідома помилка команди"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "неправильний тип команди"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "неправильний з’єднувальний оператор"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "неправильний перехід"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: неозначена змінна"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aчас очікування вводу вичерпано: автоматичний вихід\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "не вдалося переспрямувати /dev/null на стандартний ввід: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: «%c»: помилковий символ шаблону"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] все ще існує"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "помилка каналу"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: перевищено максимальний рівень вкладеності джерела (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: перевищено максимальний рівень вкладеності функцій (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: обмеження: не можна вказувати `/' у назві команди"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: команду не знайдено"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: неправильний інтерпретатор"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: не вдалося виконати бінарний файл: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "%s є спеціальною вбудованою командою оболонки"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "не вдалося створити копію файлового дескриптору %d у %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "рівень вкладення виразів перевищено"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "нестача стеку рекурсії"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "синтаксична помилка у виразі"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "спроба призначення не-змінної"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "синтаксична помилка у виразі"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "ділення на 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "вада: неправильна лексема у виразі"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "очікувалася `:' умовного виразу"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "експонента менша за 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "відсутня `)'"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "синтаксична помилка: очікувався операнд"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "синтаксична помилка: помилковий арифметичний оператор"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (позначка помилки \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "некоректна арифметична основа"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "завелике значення основи"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: помилка у виразі\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: не вдалося отримати доступ до каталогів вищого рівня"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "не вдалося перевстановити режим без затримки файлового дескриптору %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr ""
 "не вдалося отримати новий файловий дескриптор для вводу bash з файлового "
 "дескриптору %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: для нового файлового дескриптору %d вже існує буфер"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr ""
 "ідентифікатор відгалуженого процесу %d знайдено у поточному завданні %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "вилучення зупиненого завдання %d, що має групу процесів %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: процес %5ld (%s) у the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr ""
 "add_process: ідентифікатор процесу %5ld (%s) вказує на його працездатність"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: ідентифікатор процесу не існує"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Сигнал %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Завершено"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Зупинено"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Зупинено(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Працює"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Зроблено(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Вихід %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Невідомий стан"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(збережено знімок оперативної пам’яті)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (РД: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "зміна групи дочірнього процесу (%ld на %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: процес %ld не є відгалуженим від цієї оболонки"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Нема запису для процесу %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: завдання %d зупинене"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: завдання завершилося"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: завдання %d вже працює в фоні"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: увімкнути WNOHANG, щоб уникнути нескінченного блокування"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: рядок %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (збережено знімок оперативної пам’яті)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(тепер РД: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: помилка getpgrp"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: алгоритм реалізації рядків"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: алгоритм реалізації рядків"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "не вдалося встановити групу процесу для термінала (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "ця оболонка не може керувати завданнями"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: умова не виконується: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1322,43 +1332,43 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: потрібна умова не виконується\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "невідомий"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: зайнятий блок у списку вільних"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: аргумент є вже звільненим блоком"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: блок ще не виділено"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr ""
 "free: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у "
 "рамки"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: розмір у записах на початку та в кінці блоку відрізняється"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: блок ще не виділено"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr ""
 "realloc: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у "
 "рамки"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: розмір у записах на початку та в кінці блоку відрізняється"
 
@@ -1400,22 +1410,22 @@ msgstr "%s: неправильно вказаний мережевий шлях"
 msgid "network operations not supported"
 msgstr "мережеві операції не підтримуються"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: не вдалося змінити локаль (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: не вдалося змінити локаль (%s): %s"
@@ -1433,150 +1443,152 @@ msgstr "Нова пошта у $_"
 msgid "The mail in %s has been read\n"
 msgstr "Пошту у %s прочитано\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "синтаксична помилка: потрібен арифметичний вираз"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "синтаксична помилка: неочікувана `;'"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "синтаксична помилка: `((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: неправильний тип інструкції %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "here-document з рядка %d закінчено кінцем файла (очікувалося «%s»)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: інструкція переспрямування `%d' поза межами"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
+"shell_getc: shell_input_line_size (%zu) перевищує обмеження SIZE_MAX (%lu): "
+"рядок обрізано"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "перевищено максимальну можливу кількість here-document"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "файл скінчився раніше, ніж було знайдено відповідний «%c»"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "файл скінчився раніше, ніж було знайдено `]]'"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "синтаксична помилка в умовному виразі: неочікувана лексема «%s»"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "синтаксична помилка в умовному виразі"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "неочікувана лексема «%s», очікувалася `)'"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "очікувалася `)'"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "неочікуваний аргумент унарного умовного оператора «%s»"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "неочікуваний аргумент унарного умовного оператора"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "неочікувана лексема «%s», очікувався бінарний умовний оператор"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "очікувався бінарний умовний оператор"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "неочікуваний аргумент бінарного умовного оператора «%s»"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "неочікуваний аргумент бінарного умовного оператора"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "неочікувана лексема «%c» в умовній команді"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "неочікувана лексема «%s» в умовній команді"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "неочікувана лексема %d в умовній команді"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "синтаксична помилка коло неочікуваної лексеми «%s»"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "синтаксична помилка коло «%s»"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "синтаксична помилка: раптово скінчився файл"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "синтаксична помилка"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Використовуйте \"%s\", щоб вийти з оболонки.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "файл скінчився, перш ніж було знайдено відповідну `)'"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "завершення: функцію «%s» не знайдено"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: можливий цикл повторних спроб"
 
 #: pcomplib.c:182
 #, c-format
@@ -1604,90 +1616,94 @@ msgstr ""
 "дескриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%"
 "d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: «%c»: неправильний символ шаблону"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "дескриптор файла поза можливими межами"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: неоднозначне переспрямування"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
-msgstr "%s: заборонено перезаписувати існуючі файли"
+msgstr "%s: заборонено перезаписувати наявні файли"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: обмеження: переспрямування виводу заборонене"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "не вдалося створити тимчасовий файл для here-document: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: не вдалося надати змінній значення дескриптора файла"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port не підтримується"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "помилка переспрямування: не вдалося створити копію дескриптора файла"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "не вдалося знайти /tmp, будь ласка створіть його!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp має бути чинною назвою каталогу"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: помилковий параметр"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "не вдалося встановити uid %d: ефективним є uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "не вдалося встановити gid %d: ефективним є gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "не вдалося запустити засіб діагностики: режим діагностування вимкнено"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: це каталог"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "У мене нема назви!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, версія %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1696,63 +1712,63 @@ msgstr ""
 "Використовуйте:\t%s [довгий параметр GNU] [параметр] ...\n"
 "\t%s [довгий параметр GNU] [параметр] файл_сценарію ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Довгі параметри GNU:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Параметри оболонки:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s чи -o параметр\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри "
 "оболонки.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди "
 "оболонки.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 "Щоб повідомити про помилку в програмі, використовуйте команду `bashbug'.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Домашня сторінка bash: <http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Загальна довідкова інформація щодо використання програмного забезпечення "
 "GNU: <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: некоректна операція"
 
 #: siglist.c:48
 msgid "Bogus signal"
-msgstr "Неіснуючий сигнал"
+msgstr "Ненаявний сигнал"
 
 #: siglist.c:51
 msgid "Hangup"
@@ -1919,94 +1935,98 @@ msgstr "Невідомий сигнал №"
 msgid "Unknown Signal #%d"
 msgstr "Невідомий сигнал №%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "неправильна заміна: немає заключної «%s» у %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: неможливо означити елемент масиву списком"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "не вдалося створити канал для підставляння процесу"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "не вдалося створити дочірній процес для підставляння процесу"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "не вдалося відкрити іменований канал %s для читання"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "не вдалося відкрити іменований канал %s для запису"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "не вдалося здублювати іменований канал %s як fd %d"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "непÑ\80авилÑ\8cна Ð·Ð°Ð¼Ñ\96на: Ð½ÐµÐ¼Ð°Ñ\94 Ð·Ð°ÐºÐ»Ñ\8eÑ\87ноÑ\97 \"`\" Ñ\83 %s"
+msgstr "замÑ\96на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸: Ð¿Ñ\80оÑ\96гноÑ\80овано Ð¿Ð¾Ñ\80ожнÑ\96й Ð±Ð°Ð¹Ñ\82 Ñ\83 Ð²Ñ\85Ñ\96дниÑ\85 Ð´Ð°Ð½Ð¸Ñ\85"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "не вдалося створити канал для підставляння команди"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "не вдалося створити дочірній процес для підставляння команди"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 "command_substitute: не вдалося створити копію каналу із файловим "
 "дескриптором 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: некоректна назва змінної для посилання за назвою"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: неправильна заміна"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: некоректне непряме розгортання"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: некоректна назва змінної"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: параметр нульової довжини чи не вказаний"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: параметр нульової довжини чи не вказаний"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: підрядок коротший за 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: неправильна заміна"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: не можна призначити таким чином"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
@@ -2014,12 +2034,12 @@ msgstr ""
 "у наступних версіях оболонки буде виконуватися обчислення для заміни "
 "арифметичних виразів"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "неправильна заміна: немає заключної \"`\" у %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "нема відповідника: %s"
@@ -2042,30 +2062,35 @@ msgstr "очікувалася `)'"
 msgid "`)' expected, found %s"
 msgstr "очікувалася `)', отримано %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: очікувався унарний оператор"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: очікувався бінарний оператор"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "відсутня `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "неправильний номер сигналу"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: неправильне значення у trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2073,87 +2098,87 @@ msgstr ""
 "run_pending_traps: обробник сигналу є SIG_DFL, %d (%s) повторно надсилається "
 "собі"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: неправильний сигнал %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "помилка імпортування означення функції «%s»"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "рівень оболонки (%d) занадто високий, перевстановлено у 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: немає контексту функції у поточній області"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: змінною не може бути значення, яке приймають інші змінні"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: Ð½ÐµÐºÐ¾Ñ\80екÑ\82на Ð½Ð°Ð·Ð²Ð° Ð·Ð¼Ñ\96нноÑ\97 Ð´Ð»Ñ\8f Ð¿Ð¾Ñ\81иланнÑ\8f Ð·Ð° назвою"
+msgstr "%s: Ð¿Ñ\80иÑ\81воÑ\94ннÑ\8f Ñ\86Ñ\96лого Ñ\87иÑ\81ла Ð¿Ð¾Ñ\81иланнÑ\8e Ð· назвою"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: немає контексту функції у поточній області"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s має нульове значення рядка експортування"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "Помилковий символ %d у рядку експорту для %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "немає `=' у рядку експорту для %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: перший елемент shell_variables не є контекстом функції"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: немає контексту global_variables"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: перший елемент shell_variables не є тимчасовим оточенням виконання"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: не вдалося відкрити ФАЙЛ"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: некоректне значення дескриптора файла трасування"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: значення сумісності не належить припустимому діапазону значень"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "© Free Software Foundation, Inc., 2015"
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "© Free Software Foundation, Inc., 2016"
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2178,22 +2203,22 @@ msgstr ""
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Не надається НІЯКИХ ГАРАНТІЙ у межах, передбачених законом."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: не вдалося виділити %lu байтів (виділено %lu байтів)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: не вдалося виділити %lu байтів"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: не вдалося виділити %lu байтів (виділено %lu байтів)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: не вдалося виділити %lu байтів"
@@ -2322,9 +2347,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [завдання ...] чи jobs -x команда [аргументи]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [завдання ...]"
+msgstr "disown [-h] [-ar] [специфікація завдання ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2408,7 +2432,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [режим-доступу]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [ідентифікатор]"
 
 #: builtins.c:181
@@ -2500,8 +2525,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v змінна] шаблон-форматування [аргументи]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2519,7 +2545,8 @@ msgstr ""
 "префікс] [-S суфікс] [слово]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o параметр] [назва ...]"
 
 #: builtins.c:242
@@ -2531,9 +2558,10 @@ msgstr ""
 "t] [-u дескриптор] [-C обробник] [-c крок] [масив]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n кількість] [-O початок-відліку] [-s кількість] [-t] [-u "
 "дескриптор] [-C обробник] [-c крок] [масив]"
@@ -2716,6 +2744,7 @@ msgstr ""
 "    Команда завершується невдало, якщо N менше 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2726,7 +2755,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Виконує вбудовану команду оболонки.\n"
 "    \n"
@@ -2954,6 +2983,7 @@ msgstr ""
 "    знайдено."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2972,11 +3002,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3030,7 +3060,6 @@ msgstr ""
 "    помилки під час виконання."
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3038,7 +3067,7 @@ msgid ""
 msgstr ""
 "Встановлює значення та властивості змінних.\n"
 "    \n"
-"    Ð\9aоманда Ð²Ð¸Ð¹Ñ\88ла Ð· Ñ\83жиÑ\82кÑ\83. Дивіться `help declare'."
+"    Ð¡Ð¸Ð½Ð¾Ð½Ñ\96м `declare'. Дивіться `help declare'."
 
 #: builtins.c:538
 msgid ""
@@ -3071,6 +3100,7 @@ msgstr ""
 "функцію."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3099,6 +3129,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3135,7 +3171,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується невдало, якщо виникне помилка запису."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3157,7 +3193,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується невдало, якщо трапиться помилка запису."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3212,7 +3248,7 @@ msgstr ""
 "    Команда завершується невдало, якщо НАЗВА не є вбудованою командою\n"
 "    оболонки або якщо трапиться помилка під час виконання."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3234,7 +3270,7 @@ msgstr ""
 "команди\n"
 "    є порожнім рядком, команда завершується успішно."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3320,7 +3356,7 @@ msgstr ""
 "    Команда завершується успішно, якщо знайдено параметр; помилково, якщо\n"
 "    параметри скінчилися або трапилася помилка."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3361,7 +3397,7 @@ msgstr ""
 "    Команда завершується невдало, якщо команду не буде знайдено або якщо\n"
 "    трапиться помилка переспрямування."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3373,7 +3409,7 @@ msgstr ""
 "    Виходить з оболонки, повертаючи статус N. Якщо N не вказано, береться\n"
 "    статус останньої запущеної команди."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3387,7 +3423,7 @@ msgstr ""
 "команду\n"
 "    запущено не у оболонці сеансу."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3419,14 +3455,14 @@ msgstr ""
 "Показує чи запускає команди зі списку попередньо запущених.\n"
 "    \n"
 "    Fc використовується для показу чи редагування та подальшого повторного\n"
-"    запуску команд з історії. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n"
+"    запуску команд з журналу. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n"
 "    або ПЕРШИЙ може бути рядком, тоді він означатиме останню команду, що\n"
 "    починалася з цього рядка.\n"
 "    \n"
 "    Параметри:\n"
 "      -e РЕДАКТОР\tВказує редактор. Зазвичай це FCEDIT, EDITOR чи vi,\n"
 "    \t\tщо перше буде знайдене.\n"
-"      -l\tПоказати рядки історії, замість редагування.\n"
+"      -l\tПоказати рядки журналу, замість редагування.\n"
 "      -n\tНе виводити номери рядків у списку.\n"
 "      -r\tПоказувати у зворотньому порядку (найновіші першими).\n"
 "    \n"
@@ -3442,7 +3478,7 @@ msgstr ""
 "    Команда завершується зі статусом запущених команд, або помилкою, якщо\n"
 "    трапиться помилка."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3464,7 +3500,7 @@ msgstr ""
 "    Команда завершується зі статусом завершення завдання, що переведене\n"
 "    у пріоритетний режим, або помилкою, якщо трапиться помилка."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3489,7 +3525,7 @@ msgstr ""
 "якщо\n"
 "    трапиться помилка."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3533,7 +3569,8 @@ msgstr ""
 "    Команда завершується невдало, якщо НАЗВУ не вдалося знайти або якщо\n"
 "    вказано помилковий параметр."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3548,7 +3585,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3576,7 +3613,7 @@ msgstr ""
 "    помилковий параметр."
 
 # WTF??? history list += history + history file ???
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3586,7 +3623,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3612,7 +3650,7 @@ msgid ""
 msgstr ""
 "Показує чи змінює список попередніх команд.\n"
 "    \n"
-"    Показує список історії команд з номерами рядків, вказуючи `*' перед "
+"    Показує список журналу команд з номерами рядків, вказуючи `*' перед "
 "кожним\n"
 "    зміненим рядком. Якщо вказано аргумент N, показує лише N останніх "
 "рядків.\n"
@@ -3621,17 +3659,17 @@ msgstr ""
 "      -c\tВилучити зі списку усі збережені команди.\n"
 "      -d позиція\tВилучити рядок у ПОЗИЦІЇ (відносній).\n"
 "    \n"
-"      -a\tДодати записи з поточної сесії до файла історії.\n"
-"      -n\tДодати записи, яких ще немає в списку з файла історії.\n"
-"      -r\tПрочитати файл історії та додати його вміст до кінця списку.\n"
-"      -w\tЗаписати поточну історію команд до файла історії та додати\n"
-"    \tїх до кінця списку історії.\n"
+"      -a\tДодати записи з поточного сеансу до файла журналу.\n"
+"      -n\tДодати записи, яких ще немає у списку з файла журналу, і\n"
+"      \t\tдописати їх до файла журналу.\n"
+"      -r\tПрочитати файл журналу та додати його вміст до кінця списку.\n"
+"      -w\tЗаписати поточний журнал команд до файла журналу.\n"
 "    \n"
-"      -p\tЗробити розкриття історії команд на кожному з АРГУМЕНТІВ та\n"
-"    \tпоказати результат (без збереження у списку історії команд).\n"
-"      -s\tДодати АРГУМЕНТИ до списку історії як один запис.\n"
+"      -p\tЗробити розкриття журналу команд на кожному з АРГУМЕНТІВ та\n"
+"    \tпоказати результат (без збереження у списку журналу команд).\n"
+"      -s\tДодати АРГУМЕНТИ до списку журналу як один запис.\n"
 "    \n"
-"    Якщо вказаний ФАЙЛ, його буде використано як файл історії команд. "
+"    Якщо вказаний ФАЙЛ, його буде використано як файл журналу команд. "
 "Інакше,\n"
 "    якщо визначено $HISTFILE, береться її значення, якщо ні — ~/."
 "bash_history.\n"
@@ -3646,7 +3684,7 @@ msgstr ""
 "виникло\n"
 "    помилки під час виконання."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3691,7 +3729,7 @@ msgstr ""
 "    виникло помилки під час виконання. При використанні -x команда\n"
 "    завершується зі статусом завершення КОМАНДИ."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3723,8 +3761,7 @@ msgstr ""
 "    Команда завершується невдало, якщо вказано неправильний параметр чи\n"
 "    ЗАВДАННЯ."
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3758,6 +3795,7 @@ msgstr ""
 "      -n сигнал\tСИГНАЛ є номером сигналу.\n"
 "      -l\tПерелічити назви сигналів; якщо за -l ідуть іще аргументи, вони\n"
 "    \t\tвважаються номерами сигналів, які треба показати.\n"
+"      -L\tсинонім до -l\n"
 "    \n"
 "    Kill є вбудованою командою з двох причин: це дозволяє вказувати\n"
 "    ідентифікатори завдань замість ідентифікаторів процесів та дозволяє\n"
@@ -3767,7 +3805,7 @@ msgstr ""
 "    Команда завершується успішно, якщо вказані правильні аргументи та не\n"
 "    трапилося помилки під час виконання."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3853,7 +3891,8 @@ msgstr ""
 "    Якщо результатом обчислення останнього АРГУМЕНТУ є 0, let повертає 1,\n"
 "    інакше — 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3874,7 +3913,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3951,7 +3990,7 @@ msgstr ""
 "    встановлення значення змінної, або якщо із -u вказано неправильний "
 "файловий дескриптор."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3972,8 +4011,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає N, або помилку, якщо викликана не у функції чи сценарії."
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4086,7 +4124,7 @@ msgstr ""
 "              functrace    те саме, що й -T\n"
 "              hashall      те саме, що й -h\n"
 "              histexpand   те саме, що й -H\n"
-"              history      ввімкнути збереження історії команд\n"
+"              history      ввімкнути збереження журналу команд\n"
 "              ignoreeof    не виходити з оболонки після зчитування кінця "
 "файла\n"
 "              interactive-comments\n"
@@ -4125,15 +4163,16 @@ msgstr ""
 "      -v  Друкувати рядки вводу по мірі їх читання.\n"
 "      -x  Друкувати команди та їх аргументи при їх виконанні.\n"
 "      -B  Виконувати розкриття дужок.\n"
-"      -C  Вмикання параметра забороняє перезапис існуючих звичайних файлів\n"
+"      -C  Вмикання параметра забороняє перезапис наявних звичайних файлів\n"
 "          переспрямуванням виводу.\n"
 "      -E  Якщо ввімкнений, пастка ERR успадковується функціями оболонки.\n"
-"      -H  Ввімкнути підставляння історії за допомогою !. Цей параметр "
+"      -H  Ввімкнути підставляння журналу за допомогою !. Цей параметр "
 "зазвичай\n"
 "          ввімкнено у інтерактивних оболонках.\n"
 "      -P  Не переходити за символічними посиланнями при запуску команд,\n"
 "          таких як cd, яка змінює поточний каталог.\n"
-"      -T  Якщо ввімкнений, пастка DEBUG буде успадковуватися функціями\n"
+"      -T  Якщо ввімкнений, пастки DEBUG і RETURN будуть успадковуватися "
+"функціями\n"
 "          оболонки.\n"
 "      --  Призначити всі аргументи, які ще не призначено до позиційних "
 "параметрів.\n"
@@ -4153,7 +4192,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо вказані правильні параметри."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4194,7 +4233,7 @@ msgstr ""
 "НАЗВА\n"
 "    доступна лише для читання."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4228,7 +4267,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ."
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4267,7 +4306,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4285,7 +4324,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується невдало, якщо N менше за нуль чи більше за $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4309,7 +4348,7 @@ msgstr ""
 "або\n"
 "    помилку, якщо ФАЙЛ не вдалося прочитати."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4334,7 +4373,7 @@ msgstr ""
 "    Команда завершується невдало, якщо не ввімкнене керування завданнями чи\n"
 "    якщо трапиться помилка."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4499,7 +4538,7 @@ msgstr ""
 "вказано\n"
 "    помилковий аргумент чи ВИРАЗ хибний."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4512,7 +4551,7 @@ msgstr ""
 "останнім\n"
 "    аргументом має бути `]'."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4531,7 +4570,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завжди успішна."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4607,7 +4646,7 @@ msgstr ""
 "    Команда завершується успішно, якщо вказані правильні параметри та "
 "СИГНАЛИ."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4659,7 +4698,7 @@ msgstr ""
 "якщо\n"
 "    хоч одне з них не вдасться знайти."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4755,7 +4794,7 @@ msgstr ""
 "    Команда завершується невдало, якщо вказано неправильний параметр чи\n"
 "    трапилася помилка під час виконання."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4789,7 +4828,8 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо вказано правильну МАСКУ та параметри."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4797,13 +4837,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4825,7 +4867,7 @@ msgstr ""
 "вказано\n"
 "    неправильні параметри чи ІДЕНТИФІКАТОР."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4854,7 +4896,7 @@ msgstr ""
 "    Повертає код помилки, якщо вказано неправильний ІДЕНТИФІКАТОР чи "
 "параметр."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4875,7 +4917,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4905,7 +4947,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4944,7 +4986,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4972,7 +5014,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення ЛАНЦЮЖКА-КОМАНД."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4990,7 +5032,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -5023,7 +5065,7 @@ msgstr ""
 "    Команда повертає код завершення останньої виконаної команди або нуль,\n"
 "    якщо жодна з перевірених умов не була істинною."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -5041,7 +5083,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -5060,8 +5102,7 @@ msgstr ""
 "    Команда повертає код завершення останньої виконаної команди."
 
 # WTF? How can it return exit code of _asynchronous_ process...
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5083,9 +5124,9 @@ msgstr ""
 "    Стандартна назва змінної — \"COPROC\".\n"
 "    \n"
 "    Код завершення:\n"
-"    Команда повертає код завершення КОМАНДИ."
+"    Команда coproc повертає стан виходу 0."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -5111,7 +5152,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується невдало, якщо НАЗВА є незмінною."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5130,7 +5171,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Конструкція повертає код завершення останньої виконаної команди."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5155,7 +5196,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда повертає статус продовженого завдання."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5173,7 +5214,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо результат обчислення ненульовий."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5222,7 +5263,7 @@ msgstr ""
 "    Код завершення:\n"
 "    Команда завершується успішно, якщо ВИРАЗ істинний."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5284,7 +5325,7 @@ msgstr ""
 "будуть\n"
 "    \t\tігноруватися під час розкриття шляхів.\n"
 "    HISTFILE\tНазва файла, де зберігається історія команд.\n"
-"    HISTFILESIZE\tНайбільша дозволена кількість записів у файлі історії.\n"
+"    HISTFILESIZE\tНайбільша дозволена кількість записів у файлі журналу.\n"
 "    HISTSIZE\tНайбільша кількість записів, які може використовувати\n"
 "    \t\tпоточна оболонка.\n"
 "    HOME\tПовний шлях до вашої домівки.\n"
@@ -5318,14 +5359,14 @@ msgstr ""
 "    \t\t`substring' означає, що слово має міститися у команді завдання.\n"
 "    \t\tБудь-яке інше значення означає, що команда завдання має\n"
 "    \t\tпочинатися з вказаного слова.\n"
-"    histchars\tСимволи, що використовуються для розкриття історії та\n"
-"    \t\tшвидкої заміни. Перший символ є символом підставляння історії,\n"
+"    histchars\tСимволи, що використовуються для розкриття журналу та\n"
+"    \t\tшвидкої заміни. Перший символ є символом підставляння журналу,\n"
 "    \t\tзазвичай це `!'.  Другий — символ «швидкої заміни», зазичай `^'.\n"
 "    \t\tТретій — символ «коментаря журналу», зазвичай це `#'.\n"
 "    HISTIGNORE\tРозділений двокрапкою список шаблонів, що використовуються\n"
-"    \t\tпри визначенні, чи зберігати команду у списку історії.\n"
+"    \t\tпри визначенні, чи зберігати команду у списку журналу.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5383,7 +5424,7 @@ msgstr ""
 "    Команда завершується невдало, якщо вказаний неправильний аргумент чи\n"
 "    якщо не вдалося змінити поточну каталог."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5435,7 +5476,7 @@ msgstr ""
 "    Команда завершується невдало, якщо вказано помилковий аргумент чи якщо\n"
 "    не вдалося змінити поточний каталог."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5489,14 +5530,14 @@ msgstr ""
 "якщо\n"
 "    трапиться помилка."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5525,7 +5566,7 @@ msgstr ""
 "    Команда завершується успішно, якщо ПАРАМЕТР ввімкнено; невдало, якщо\n"
 "    вказано неправильні параметри чи ПАРАМЕТР вимкнено."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5597,7 +5638,8 @@ msgstr ""
 "або\n"
 "    якщо трапиться помилка запису чи присвоєння."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5615,10 +5657,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5646,7 +5692,7 @@ msgstr ""
 "    Команда завершується успішно, якщо вказано правильні параметри та не\n"
 "    трапиться помилки під час виконання."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5668,7 +5714,8 @@ msgstr ""
 "    Команда завершується успішно, якщо вказано правильні параметри і не\n"
 "    трапиться помилки під час виконання."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5683,6 +5730,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5722,7 +5770,7 @@ msgstr ""
 "    Команда завершується успішно, якщо вказано правильні параметри та\n"
 "    вказівки завершень для НАЗВ існують."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5805,7 +5853,7 @@ msgstr ""
 "або\n"
 "    якщо МАСИВ є незмінним."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 9d187c416000a0cf431ca5b86c0846cf9491c712..25d892ccb49ed0bdb01d1745eb750b5ab60b3993 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index b7f1bbf49b83233db274ed6550e902e4a8d285c3..e04bace55171ef4e4c5ab1ea1aabfab71f43e82d 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bash 4.4-beta1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
 "PO-Revision-Date: 2015-10-18 07:47+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -18,123 +18,124 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: vi\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "sai chỉ số mảng"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
 msgstr ""
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: khóa mảng liên kết không hợp lệ"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: không thể gán cho chỉ số không thuộc kiểu số"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: phải sử dụng chỉ số phụ khi gán mảng kết hợp"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: không thể tạo: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 "bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: ký tự khác khoảng trắng đầu tiên không phải là “\"”"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "thiếu dấu đóng “%c” trong %s"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: thiếu dấu hai chấm phân cách"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "khai triển ngoặc ôm: không thể phân bổ bộ nhớ cho %s"
 
-#: braces.c:427
-#, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
+#: braces.c:429
+#, fuzzy, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%d” phần tử"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%s”"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "“%s”: tên bí danh không hợp lệ"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "chưa bật sửa đổi dòng"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "“%s”: tên sơ đồ phím không hợp lệ"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s: không thể đọc: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "“%s”: không thể tháo"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "“%s”: không hiểu tên hàm"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s không được ràng buộc với bất kỳ phím nào.\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s có thể được gọi thông qua "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "“%s”: không thể tháo"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "đếm vòng"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "chỉ có nghĩa trong vòng lặp “for”, “while” hay “until”"
 
@@ -148,234 +149,234 @@ msgstr ""
 "\n"
 "    Nếu không có BTHỨC thì trả về "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "Chưa đặt biến môi trường HOME"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "quá nhiều đối số"
 
-#: builtins/cd.def:336
+#: builtins/cd.def:341
 #, fuzzy
 msgid "null directory"
 msgstr "không có thư mục khác"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "Chưa đặt biến môi trường OLDPWD"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "dòng %d: "
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "cảnh báo: "
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: cách dùng: "
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s: tùy chọn cần một đối số"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: cần đối số thuộc kiểu số"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: không tìm thấy"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: tùy chọn không hợp lệ"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: tên tùy chọn không hợp lệ"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "“%s”: không phải là định danh hợp lệ"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "số bát phân không hợp lệ"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "số thập lục không hợp lệ"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "số không hợp lệ"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: sai đặc tả tín hiệu"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "“%s”: không phải một pid hoặc đặc tả công việc hợp lệ"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: biến chỉ đọc"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s nằm ngoài phạm vi"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "đối số"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s nằm ngoài phạm vi"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: không có công việc như vậy"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: không có điều khiển công việc"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "không có điều khiển công việc"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: bị hạn chế"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "bị hạn chế"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: không phải là lệnh tích hợp trong hệ vỏ"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "lỗi ghi: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "lỗi lấy các thuộc tính thiết bị cuối: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: lỗi lấy thư mục hiện thời: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: đặc tả công việc chưa rõ ràng"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "trợ giúp không sẵn có ở phiên bản này"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: tên hành động không hợp lệ"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s: không có đặc tả tự hoàn thiện"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "cảnh báo: tùy chọn “-F” có thể không hoạt động như mong đợi"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "cảnh báo: tùy chọn “-C” có thể không hoạt động như bạn mong đợi"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "hiện thời không thực thi chức năng tự hoàn thiện"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "chỉ có thể dùng trong một hàm"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: biến tham chiếu không thể là một mảng"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: biến nameref tự tham chiếu là không được phép"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: tên tham chiếu quẩn tròn"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
 #, fuzzy, c-format
 msgid "`%s': invalid variable name for name reference"
 msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "không thể dùng “-f” để tạo hàm"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: hàm chỉ đọc"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
 msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: không thể hủy biến mảng bằng cách này"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số"
@@ -409,68 +410,68 @@ msgstr "%s không được tải động"
 msgid "%s: cannot delete: %s"
 msgstr "%s: không thể xóa: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: là thư mục"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: không phải là tập tin thường"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: tập tin quá lớn"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: không thể thực hiện tập tin nhị phân"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: không thể thực thi: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "đăng xuất\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "không phải hệ vỏ đăng nhập: hãy dùng lệnh “exit”"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Có công việc bị dừng.\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Có công việc đang chạy.\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "không tìm thấy lệnh"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "đặc tả lịch sử"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: không thể mở tập tin tạm: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "hiện tại"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "công việc %d đã khởi chạy mà không có điều khiển công việc"
@@ -485,27 +486,26 @@ msgstr "%s: tùy chọn không được phép -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: tùy chọn cần đối số -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "tắt băm"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: bảng băm rỗng\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "gợi ý\tlệnh\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Câu lệnh hệ vỏ tương ứng với từ khóa “"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
@@ -513,12 +513,12 @@ msgstr ""
 "không có trợ giúp cho “%s”. Hãy chạy lệnh “help help” hoặc  “man -k %s” hay "
 "“info %s”."
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: không thể mở: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -538,20 +538,21 @@ msgstr ""
 "Dấu sao (*) bên cạnh tên nghĩa là lệnh bị tắt.\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "chỉ có thể dùng một của những tùy chọn -anrw"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "vị trí lịch sử"
 
-#: builtins/history.def:264
+#: builtins/history.def:331
 #, fuzzy, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: đối số không hợp lệ"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: gặp lỗi khi khai triển lịch sử"
@@ -565,16 +566,16 @@ msgstr "%s: inlib bị lỗi"
 msgid "no other options allowed with `-x'"
 msgstr "không cho phép dùng tùy chọn thêm với “-x”"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: đối số phải là ID tiến trình hoặc công việc"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Lỗi không rõ"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "cần biểu thức"
 
@@ -583,69 +584,69 @@ msgstr "cần biểu thức"
 msgid "%s: not an indexed array"
 msgstr "%s: không phải là mảng chỉ số"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: bộ mô tả tập tin không hợp lệ: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: sai số lượng dòng"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: gốc mảng không hợp lệ"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: lượng gọi ngược không hợp lệ"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "tên biến mảng vẫn trống"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "cần hỗ trợ biến mảng"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "“%s”: thiếu ký tự định dạng"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "“%c”: đặc tả định dạng thời gian không đúng"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "“%c”: ký tự định dạng không hợp lệ"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "cảnh báo: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "vấn đề phân tích cú pháp định dạng: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "thiếu chữ số thập lục phân cho \\x"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "thiếu chữ số unicode cho \\%c"
@@ -659,19 +660,19 @@ msgstr "không có thư mục khác"
 msgid "%s: invalid argument"
 msgstr "%s: đối số không hợp lệ"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<không có thư mục hiện thời>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "ngăn xếp thư mục trống"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "chỉ số ngăn xếp thư mục"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -711,7 +712,7 @@ msgstr ""
 "      -N\thiển thị mục thứ N đếm từ bên phải khi gọi không tùy chọn,\n"
 "                bắt đầu từ số không."
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -755,7 +756,7 @@ msgstr ""
 "\n"
 "    Lệnh “dirs” hiển thị ngăn xếp thư mục."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -798,40 +799,40 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: sai đặc tả thời gian chờ tối đa"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "lỗi đọc: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "chỉ có thể “return” từ một hàm hoặc văn lệnh được “source”"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "không thể hủy đặt đồng thời một hàm VÀ một biến"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: không thể hủy đặt"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: không thể hủy đặt: %s chỉ đọc"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: không phải biến mảng"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: không phải hàm"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: không thể xuất"
@@ -840,20 +841,20 @@ msgstr "%s: không thể xuất"
 msgid "shift count"
 msgstr "số lượng dịch"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "không thể đồng thời đặt và hủy đặt các tùy chọn hệ vỏ"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: tên tùy chọn hệ vỏ không hợp lệ"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "cần đối số tên tập tin"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: không tìm thấy tập tin"
@@ -866,61 +867,61 @@ msgstr "không thể ngưng"
 msgid "cannot suspend a login shell"
 msgstr "không thể ngưng hệ vỏ đăng nhập"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s là bí danh của “%s”\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s là từ khóa của hệ vỏ\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s là một hàm\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s là lệnh tích hợp đặc biệt của hệ vỏ\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s là lệnh tích hợp hệ vỏ\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s là %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s được băm (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: đối số giới hạn không hợp lệ"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "“%c”: câu lệnh sai"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s: không thể lấy giới hạn: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "giới hạn"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s: không thể sửa đổi giới hạn: %s"
@@ -939,359 +940,369 @@ msgstr "“%c”: toán tử chế độ ký hiệu không hợp lệ"
 msgid "`%c': invalid symbolic mode character"
 msgstr "“%c”: ký tự chế độ ký hiệu không hợp lệ"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " dòng "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "lệnh cuối: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "Hủy bỏ…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "THBÁO:"
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "lỗi lệnh không rõ"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "kiểu lệnh sai"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "bộ kết nối sai"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "nhảy sai"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: biến chưa liên kết"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\aquá thời hạn đợi dữ liệu nhập: tự động đăng xuất\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "ĐỊNH DẠNG THỜI GIAN: “%c”: ký tự định dạng không hợp lệ"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
 msgstr ""
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "lỗi ống dẫn"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
 msgstr "%s: vượt quá mức độ nguồn lồng nhau tối đa (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: bị hạn chế: không thể dùng “/” trong tên lệnh"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: không tìm thấy lệnh"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: bộ thông dịch sai"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: không thể thực hiện tập tin nhị phân: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "“%s”: là lệnh tích hợp đặc biệt"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "không thể nhân đôi fd %d thành fd %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "vượt quá ngưỡng đệ quy của biểu thức"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "tràn ngược ngăn xếp đệ quy"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "lỗi cú pháp trong biểu thức"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "thử gán cho thứ không phải biến"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+#, fuzzy
+msgid "syntax error in variable assignment"
+msgstr "lỗi cú pháp trong biểu thức"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "chia cho không"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "lỗi: “token expassign” sai"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "cần “:” cho biểu thức điều kiện"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "số mũ nhỏ hơn 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "cần định danh sau tăng/giảm dần trước"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "thiếu “)”"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "lỗi cú pháp: cần toán hạng"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "lỗi cú pháp: toán tử số học không hợp lệ"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (thẻ bài lỗi là \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "cơ số (toán học) không hợp lệ"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "cơ số có giá trị quá lớn"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: lỗi biểu thức\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: không thể truy cập thư mục cấp trên"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "không thể đặt lại chế độ “nodelay” cho fd %d"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "không thể cấp phát bộ mô tả tập tin mới cho dữ liệu nhập bash từ fd %d"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: đã có bộ đệm cho fd mới %d"
 
 # Nghĩa chữ ?
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pgrp pipe"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "pid được tánh nhánh %d có vẻ đang chạy trong công việc %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: không có pid như vậy"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "Tín hiệu %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "Xong"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "Bị dừng"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Bị dừng(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "Đang chạy"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "Xong(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "Thoát %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "Không rõ trạng thái"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(xuất ra core)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid tiến trình con (%ld thành %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld không phải là tiến trình con của hệ vỏ này"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: Không có mục ghi về tiến trình %ld"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: công việc %d bị dừng chạy"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: công việc bị chấm dứt"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: công việc %d đã đang chạy nền"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: dòng %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (xuất ra core)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd ngay: %s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp bị lỗi"
 
-#: jobs.c:4104
+#: jobs.c:4247
+#, fuzzy
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: kỷ luật dòng"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: kỷ luật dòng"
 
 # Nghĩa chữ : dừng dịch
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "không có điều khiển công việc trong hệ vỏ này"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: khẳng định gặp lỗi: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1300,41 +1311,41 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: khẳng định bị sai\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "không rõ"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr ""
 "malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn "
 "trống bị ghi vào"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: đã được gọi với đối số khối đã được giải phóng"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: đã được gọi với đối số khối chưa cấp phát"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: kích cỡ đoạn đầu và cuối không trùng"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: đã được gọi với đối số khối chưa cấp phát"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng"
 
@@ -1376,22 +1387,22 @@ msgstr "%s: đặc tả đường dẫn mạng sai"
 msgid "network operations not supported"
 msgstr "không hỗ trợ thao tác mạng"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s): %s"
@@ -1409,147 +1420,147 @@ msgstr "Bạn có thư mới trong $_"
 msgid "The mail in %s has been read\n"
 msgstr "Đã đọc thư trong %s\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "lỗi cú pháp: cần biểu thức số học"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "lỗi cú pháp: “((%s))”"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: kiểu chỉ lệnh sai %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (muốn “%s”)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: chỉ dẫn chuyển hướng “%d” nằm ngoài phạm vi"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
 msgstr ""
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "vượt quá số lượng tài-liệu-đây tối đa"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "gặp kết thúc tập tin bất thường trong khi tìm “%c” tương ứng"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "gặp kết thúc tập tin bất thường trong khi tìm “]]”"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "gặp lỗi cú pháp trong biểu thức điều kiện: thẻ bài bất thường “%s”"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "gặp lỗi cú pháp trong biểu thức điều kiện"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "gặp thẻ bài bất thường “%s”, cần “)”"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "cần “)”"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "đối số bất thường “%s” cho toán tử một ngôi điều kiện"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "đối số bất thường cho toán tử một ngôi điều kiện"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "thẻ bài bất thường “%s”, cần toán tử hai ngôi điều kiện"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "cần toán tử hai ngôi điều kiện"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "đối số bất thường “%s” cho toán tử hai ngôi điều kiện"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "đối số bất thường cho toán tử hai ngôi điều kiện"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "gặp thẻ bài bất thường “%c” trong câu lệnh điều kiện"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "gặp thẻ bài bất thường “%s” trong câu lệnh điều kiện"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "gặp thẻ bài bất thường “%d” trong câu lệnh điều kiện"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "có lỗi cú pháp ở gần thẻ bài bất thường “%s”"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "lỗi cú pháp ở gần “%s”"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "lỗi cú pháp: kết thúc tập tin bất thường"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "lỗi cú pháp"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Dùng \"%s\" để rời hệ vỏ.\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "gặp kết thúc tập tin bất thường trong khi tìm “)” tương ứng"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "tự hoàn thiện: không tìm thấy hàm “%s”"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr ""
@@ -1579,90 +1590,94 @@ msgstr "xtrace_set: con trỏ tập tin NULL"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: “%c”: ký tự định dạng không hợp lệ"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "bộ mô tả tập tin ở ngoại phạm vi"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: chuyển hướng chưa rõ ràng"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: không thể ghi đè lên tập tin đã có"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "không thể tạo tập tin tạm thời cho tài liệu này: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: không thể gán fd vào biến"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ nếu không có mạng"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "lỗi chuyển hướng: không thể nhân đôi fd"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "không tìm thấy /tmp, hãy tạo mới!"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "“/tmp” phải là tên thư mục hợp lệ"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr ""
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: tùy chọn không hợp lệ"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "không thể đặt uid thành %d: uid chịu tác động %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "không thể đặt gid thành %d: gid chịu tác động %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
 msgstr ""
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: Là một thư mục"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "Không có tên!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, phiên bản %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1671,52 +1686,52 @@ msgstr ""
 "Cách dùng:\t%s [tùy chọn GNU dài] [tùy chọn] …\n"
 "\t\t%s [tùy chọn GNU dài] [tùy chọn] tập-tin-văn-lệnh …\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "Tùy chọn dài:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Tùy chọn:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chọn-ngắn\t\t(chỉ gọi)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s hoặc -o tùy-chọn\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Gõ “%s -c \"help set\"” để xem thông tin về các tùy chọn hệ vỏ.\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Gõ “%s -c help” để xem thông tin về các lệnh hệ vỏ tích hợp.\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 "Dùng lệnh “bashbug” để thông báo lỗi.\n"
 "Báo cáo các lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "Trang chủ bash: <http://www.gnu.org/software/bash/>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr ""
 "Trợ giúp chung về cách sử dụng phần mềm GNU : <http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: thao tác không hợp lệ"
@@ -1890,104 +1905,109 @@ msgstr "Tín hiệu lạ #"
 msgid "Unknown Signal #%d"
 msgstr "Tín hiệu lạ #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "sai chỉ số phụ: không có đóng “%s” trong %s"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: không thể gán danh sách cho bộ phận của mảng"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "không thể tạo ống dẫn để thay thế tiến trình"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "không thể tạo tiến trình con để thay thế tiến trình"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "không thể mở ống dẫn đặt tên %s để đọc"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "không thể mở ống dẫn có tên %s để ghi"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d"
 
-#: subst.c:5959
+#: subst.c:6062
 #, fuzzy
 msgid "command substitution: ignored null byte in input"
 msgstr "sai thay thế: không có \"“\" đóng trong %s"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "không thể tạo ống dẫn để thay thế lệnh"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "không thể tạo tiến trình con để thay thế lệnh"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: thay thế sai"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
 msgstr "%s: triển khai gián tiếp không hợp lệ"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "“%s”: tên biến không hợp lệ"
 
-#: subst.c:6854
+#: subst.c:7056
+#, fuzzy, c-format
+msgid "%s: parameter not set"
+msgstr "%s: tham số null hoặc chưa được đặt"
+
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: tham số null hoặc chưa được đặt"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: biểu thức chuỗi con < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: thay thế sai"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: không thể gán bằng cách này"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr ""
 "phiên bản hệ vỏ mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "sai thay thế: không có \"“\" đóng trong %s"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "không khớp: %s"
@@ -2010,30 +2030,35 @@ msgstr "cần “)”"
 msgid "`)' expected, found %s"
 msgstr "cần “)” nhưng lại nhận được %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: cần toán tử một ngôi"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: cần toán tử hai ngôi"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "thiếu “]”"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "số thứ tự tín hiệu không hợp lệ"
 
-#: trap.c:387
+#: trap.c:320
+#, fuzzy, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2041,89 +2066,89 @@ msgstr ""
 "run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho "
 "chính mình"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: tín hiệu sai %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "gặp lỗi khi nhập vào định nghĩa hàm cho “%s”"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "cấp hệ vỏ (%d) quá cao nên đặt lại thành 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thời"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: không thể gán giá trị cho biến"
 
-#: variables.c:3043
+#: variables.c:3453
 #, fuzzy, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thời"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s có exportstr null"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "sai ký tự %d trong exportstr cho %s"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "không có “=” trong exportstr cho %s"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr ""
 "pop_var_context: đầu của shell_variables (các biến hệ vỏ) không phải là ngữ "
 "cảnh hàm"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr ""
 "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 "pop_scope: đầu của shell_variables (các biến hệ vỏ) không phải là phạm vi "
 "môi trường tạm thời"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: không thể mở như là TẬP-TIN"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi"
 
 #: version.c:46 version2.c:46
 #, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
 msgstr "Tác quyền (C) năm 2015 của Tổ chức Quỹ Phần mềm Tự do, Inc."
 
 #: version.c:47 version2.c:47
@@ -2147,22 +2172,22 @@ msgstr "Đây là phần mềm tự do; bạn có quyền sửa đổi và phát
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Ở đây KHÔNG BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép."
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: không thể cấp phát %lu byte (%lu byte được cấp phát)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: không thể cấp phát %lu byte"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp phát)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: không thể cấp phát %lu byte"
@@ -2373,7 +2398,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [CHẾ-ĐỘ]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [id ...]"
 msgstr "wait [-n] [id …]"
 
 #: builtins.c:181
@@ -2465,8 +2491,9 @@ msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v BIẾN] ĐỊNH-DẠNG [CÁC-ĐỐI-SỐ]"
 
 #: builtins.c:231
+#, fuzzy
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
@@ -2483,7 +2510,8 @@ msgstr ""
 "SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S HẬU-TỐ] [TỪ]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
+#, fuzzy
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o TÙY-CHỌN] [-DE] [TÊN …]"
 
 #: builtins.c:242
@@ -2495,9 +2523,10 @@ msgstr ""
 "GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]"
 
 #: builtins.c:244
+#, fuzzy
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-n ĐẾM] [-O GỐC] [-s SỐ-LƯỢNG] [-t] [-u FD] [-C GỌI-NGƯỢC] [-c "
 "LƯỢNG] [MẢNG]"
@@ -2668,6 +2697,7 @@ msgstr ""
 "    Trạng thái thoát là 0 trừ khi N nhỏ hơn 1."
 
 #: builtins.c:354
+#, fuzzy
 msgid ""
 "Execute shell builtins.\n"
 "    \n"
@@ -2678,7 +2708,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "Chạy lệnh tích hợp hệ vỏ.\n"
 "\n"
@@ -2897,6 +2927,7 @@ msgstr ""
 "    thấy LỆNH."
 
 #: builtins.c:490
+#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2915,11 +2946,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -3008,6 +3039,7 @@ msgstr ""
 "    hoặc nếu hệ vỏ không chạy hàm."
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3036,6 +3068,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3068,7 +3106,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không gặp lỗi khi ghi."
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3090,7 +3128,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không gặp lỗi ghi."
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3140,7 +3178,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công trừ khi TÊN không phải lệnh tích hợp hoặc gặp lỗi."
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3159,7 +3197,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái thoát của câu lệnh hay thành công nếu lệnh rỗng."
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3235,7 +3273,7 @@ msgstr ""
 "    Trả lại thành công nếu tìm thấy một tùy chọn; không thành công nếu\n"
 "    gặp kết thúc các tùy chọn, hoặc nếu gặp lỗi."
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3275,7 +3313,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công trừ khi không tìm được LỆNH hoặc gặp lỗi chuyển hướng."
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3287,7 +3325,7 @@ msgstr ""
 "    Thoát khỏi hệ vỏ với trạng thái N. Không xác định N thì trạng thái\n"
 "    thoát là trạng thái của lệnh cuối cùng được chạy."
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3300,7 +3338,7 @@ msgstr ""
 "   Thoát khỏi hệ vỏ đăng nhập với trạng thái N. Trả về lỗi nếu không\n"
 "   phải hệ vỏ đăng nhập."
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3352,7 +3390,7 @@ msgstr ""
 "    Trả lại thành công hay trạng thái của câu lệnh được thực thi; gặp\n"
 "    lỗi thì khác số không."
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3373,7 +3411,7 @@ msgstr ""
 "    Trạng thái của câu lệnh được nâng lên trước; hoặc thất bại nếu xảy\n"
 "    ra lỗi."
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3396,7 +3434,7 @@ msgstr ""
 "    Trả lại thành công nếu chức năng điều khiển công việc được bật và\n"
 "    không gặp lỗi."
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3440,7 +3478,8 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu tìm được TÊN và không đưa ra tùy chọn sai."
 
-#: builtins.c:812
+#: builtins.c:816
+#, fuzzy
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3455,7 +3494,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3479,7 +3518,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu tìm được MẪU và không đưa ra tùy chọn sai."
 
-#: builtins.c:836
+#: builtins.c:840
 #, fuzzy
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3489,7 +3528,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3545,7 +3585,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi."
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3588,7 +3628,7 @@ msgstr ""
 "    Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi.\n"
 "    Đưa ra “-x” thì trả lại trạng thái thoát của LỆNH."
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3619,7 +3659,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn hay ĐTCV sai."
 
-#: builtins.c:918
+#: builtins.c:923
 #, fuzzy
 msgid ""
 "Send a signal to a job.\n"
@@ -3661,7 +3701,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi."
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3745,7 +3785,8 @@ msgstr ""
 "    Nếu ĐỐI-SỐ cuối cùng được định giá thành 0 thì trả về 1; không thì\n"
 "    trả về 0."
 
-#: builtins.c:987
+#: builtins.c:992
+#, fuzzy
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3766,7 +3807,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3839,7 +3880,7 @@ msgstr ""
 "    Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chờ quá\n"
 "    lâu, hoặc đưa ra bộ mô tả tập tin sai làm đối số cho “-u”."
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3860,7 +3901,7 @@ msgstr ""
 "    Trả lại N, hoặc bị lỗi nếu hệ vỏ không đang chạy một hàm hay văn\n"
 "    lệnh."
 
-#: builtins.c:1047
+#: builtins.c:1052
 #, fuzzy
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -4033,7 +4074,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công trừ phi gặp tùy chọn sai."
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4072,7 +4113,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN chỉ-đọc."
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4105,7 +4146,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn hay TÊN sai,"
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4143,7 +4184,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN không hợp lệ."
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4161,7 +4202,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công trừ khi N âm hay lớn hơn $#."
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4184,7 +4225,7 @@ msgstr ""
 "    Trả lại trạng thái của câu lệnh cuối cùng được thực thi trong\n"
 "    TẬP-TIN; không thành công nếu không thể đọc TẬP-TIN."
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4209,7 +4250,7 @@ msgstr ""
 "    Trả lại thành công trừ khi chức năng điều khiển công việc không\n"
 "    được bật hoặc gặp lỗi."
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4368,7 +4409,7 @@ msgstr ""
 "    Trả lại thành công nếu BTHỨC định giá là Đúng; không thành công\n"
 "    nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai."
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4380,7 +4421,7 @@ msgstr ""
 "    Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n"
 "    cùng phải là ký tự “]” để khớp với “[” ở đầu."
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4399,7 +4440,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Lúc nào cũng thành công."
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4476,7 +4517,7 @@ msgstr ""
 "    Trả lại thành công trừ phi đưa ra ĐTTH sai hay tùy chọn\n"
 "    sai."
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4533,7 +4574,7 @@ msgstr ""
 "    Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm "
 "thấy."
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4625,7 +4666,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay có lỗi phát sinh."
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4658,7 +4699,8 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không có CHẾ_ĐỘ sai hay tùy chọn sai."
 
-#: builtins.c:1494
+#: builtins.c:1499
+#, fuzzy
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4666,13 +4708,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4693,7 +4737,7 @@ msgstr ""
 "    Trả về trạng thái của ID cuối; không thành công nếu ID sai hoặc đưa\n"
 "    ra tùy chọn sai."
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4717,7 +4761,7 @@ msgstr ""
 "    Trả lại trạng thái của PID; không thành công nếu PID sai, hoặc nếu\n"
 "    đưa ra tùy chọn sai."
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4740,7 +4784,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4770,7 +4814,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4804,7 +4848,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4833,7 +4877,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trạng thái trả về là trạng thái trả về của ỐNG-DẪN."
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4851,7 +4895,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4886,7 +4930,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4905,7 +4949,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4924,7 +4968,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1653
+#: builtins.c:1661
 #, fuzzy
 msgid ""
 "Create a coprocess named NAME.\n"
@@ -4946,7 +4990,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái thoát của câu LỆNH."
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4969,7 +5013,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu TÊN không phải chỉ đọc."
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4987,7 +5031,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của câu lệnh cuối cùng được chạy."
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5010,7 +5054,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại trạng thái của công việc đã tiếp tục lại."
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5028,7 +5072,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0."
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5077,7 +5121,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    0 hay 1 phụ thuộc vào giá trị của BTHỨC."
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5181,7 +5225,7 @@ msgstr ""
 "    HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n"
 "        \tnhững câu lệnh nào nên được lưu vào danh sách lịch sử.\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5235,7 +5279,7 @@ msgstr ""
 "    Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
 "    chuyển đổi thư mục."
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5283,7 +5327,7 @@ msgstr ""
 "    Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
 "    chuyển đổi thư mục."
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5336,14 +5380,14 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả về thành công nếu không đưa ra tùy chọn sai hay gặp lỗi."
 
-#: builtins.c:1898
+#: builtins.c:1906
+#, fuzzy
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5373,7 +5417,7 @@ msgstr ""
 "    Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n"
 "    đưa ra tùy chọn sai hay TÊN_TÙY_CHỌN bị tắt."
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5439,7 +5483,8 @@ msgstr ""
 "    Trả lại thành công trừ phi đưa ra tùy chọn sai hay gặp lỗi khi ghi\n"
 "    hay gán."
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5457,10 +5502,14 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5486,7 +5535,7 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi."
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5507,7 +5556,8 @@ msgstr ""
 "    Trạng thái thoát:\n"
 "    Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi."
 
-#: builtins.c:1996
+#: builtins.c:2006
+#, fuzzy
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5522,6 +5572,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5564,7 +5615,7 @@ msgstr ""
 "    Trả lại thành công trừ phi đưa ra tùy chọn sai, hoặc TÊN có một\n"
 "    đặc tả tự hoàn thiện được xác định."
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5637,7 +5688,7 @@ msgstr ""
 "    Trả lại thành công trừ phi đưa ra tùy chọn sai và MẢNG không phải\n"
 "    chỉ đọc hay không là một mảng chỉ số."
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
index 5eda361f22bfda50059558d77955da26e22d18ca..322296c28d8d3a9894683584734cc2dbe3f48eb0 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index 8b6bb9d119b4707ff5495244544197f893d66de9..716fae5c32e02d0c475ea3f79f48dd5a9032adb0 100644 (file)
 # Aron Xu <happyaron.xu@gmail.com>, 2011.
 # Anthony Fok <foka@debian.org>, 2013.
 # Wylmer Wang <wantinghard@gmail.com>, 2014.
-# Mingye Wang <arthur200126@gmail.com>, 2015.
+# Mingcong Bai <jeffbai@aosc.xyz>, 2015.
+# liushuyu <liushuyu011@gmail.com>, 2016.
+# Mingye Wang <arthur200126@gmail.com>, 2015, 2016.
+# Boyuan Yang <073plan@gmail.com>, 2018.
+#
+# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority):
+#  0. Translation coverage when upstream sends new strings.
+#
+#  1. Argument lists in `help` are translated, but the `help blah` text still
+#     refers to the original name like WORDS.
+#
+#     These long helps should be changed to follow their `help` synopsis.  Use
+#     <参数> to refer to `参数' in the one-line synopsis.
+#
+#  2. Passive voice.  When used inappropriately, they sound even worse in
+#     Chinese than in English.  In fact huge amounts of `被' is what you use to
+#     spot translated text.  (You don't always need `被' for passive voice
+#     either.)
+#
+#  3. Typography.
+#     a. Capitalization.  English convensions mangle command names in help text
+#        if it's the first word of the sentense (e.g. `Getopts blah blah...').
+#        Do yourself a favor and change the names back into lowercase.
+#     b. Quotes.  Chinese has no `typewriter quote' convension, and standard
+#        “curly quotes” should be used.
+#     c. Colons.  We don't use `: ` in Chinese; use `:`.  Sometimes `:` is seen
+#        w/o a space (worse).
+#     d. Other stuff like parentheses and whitespace.  Alignment can be quite
+#        important for Feeling Good(TM).
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.4-beta1\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-26 00:32-0400\n"
-"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-12-13 13:27-0500\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: zh_CN\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.2\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "数组下标不正确"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s:正在移除名称引用属性"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr "%s无法将索引数组转化为关联数组"
+msgstr "%s无法将索引数组转化为关联数组"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
-msgstr "%s无效的关联数组键"
+msgstr "%s无效的关联数组键"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
-msgstr "%s无法为非数字的索引赋值"
+msgstr "%s无法为非数字的索引赋值"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: 为关联数组赋值时必须使用下标"
+msgstr "%s:%s:为关联数组赋值时必须使用下标"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
-msgstr "%s无法创建: %s"
+msgstr "%s无法创建: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: 无法为命令找到键映射"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: 第一个非空字符不是 `\"'"
+msgstr "%s:第一个非空字符不是“\"”"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
-msgstr "%2$s 中没有闭合的 `%1$c'"
+msgstr "%2$s 中没有闭合的“%1$c”"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
-msgstr "%s缺少冒号分隔符"
+msgstr "%s缺少冒号分隔符"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
-msgstr "大括号展开: 无法为 %s 分配内存"
+msgstr "大括号展开:无法为 %s 分配内存"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "大括号展开: 为 %d 个元素分配内存失败"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "大括号展开:为 %u 个元素分配内存失败"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "大括号展开: 为 `%s' 分配内存失败"
+msgstr "大括号展开:为“%s”分配内存失败"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
-msgstr "`%s': 无效的别名"
+msgstr "“%s”: 无效的别名"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "未启用行编辑"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
-msgstr "`%s': 无效的键映射名"
+msgstr "“%s”: 无效的键映射名"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
-msgstr "%s无法读取: %s"
+msgstr "%s无法读取: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "`%s': 无法解除绑定"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
-msgstr "`%s': 未知函数名"
+msgstr "“%s”: 未知函数名"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s 未与任何键绑定。\n"
 
-#: builtins/bind.def:320
+#  Blame the source string.
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
-msgstr "%s 可以被调用,通过"
+msgstr "%s 可以被调用,通过 "
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "“%s”: 无法解除绑定"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "循环计数"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "仅在 `for', `while', 或者`until' 循环中有意义"
 
@@ -146,239 +176,238 @@ msgid ""
 msgstr ""
 "返回当前子例程调用的上下文\n"
 "    \n"
-"    不带 EXPR 时,返回"
+"    不带 EXPR 时,返回 "
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME 未设定"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "参数太多"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "无其他目录"
+msgstr "目录"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD 未设定"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
-msgstr "第 %d 行:"
+msgstr "第 %d 行"
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
-msgstr "警告:"
+msgstr "警告"
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
-msgstr "%s: 用法:"
+msgstr "%s:用法:"
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
-msgstr "%s选项需要一个参数"
+msgstr "%s选项需要一个参数"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
-msgstr "%s需要数字参数"
+msgstr "%s需要数字参数"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
-msgstr "%s未找到"
+msgstr "%s未找到"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
-msgstr "%s无效选项"
+msgstr "%s无效选项"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
-msgstr "%s无效的选项名"
+msgstr "%s无效的选项名"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
-msgstr "`%s': 不是有效的标识符"
+msgstr "“%s”: 不是有效的标识符"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "无效的八进制数"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "无效的十六进制数"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "无效数字"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
-msgstr "%s无效的信号声明"
+msgstr "%s无效的信号声明"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
-msgstr "`%s': 不是有效的进程号或者任务声明"
+msgstr "“%s”: 不是有效的进程号或者任务声明"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
-msgstr "%s只读变量"
+msgstr "%s只读变量"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
-msgstr "%s%s 越界"
+msgstr "%s%s 越界"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "参数"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s 越界"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
-msgstr "%s无此任务"
+msgstr "%s无此任务"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
-msgstr "%s无任务控制"
+msgstr "%s无任务控制"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "无任务控制"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
-msgstr "%s受限的"
+msgstr "%s受限的"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "受限的"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
-msgstr "%s不是 shell 内建"
+msgstr "%s不是 shell 内建"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "写错误: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "设定终端属性时出错: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "获取终端属性时出错: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: 获取当前目录时出错: %s: %s\n"
+msgstr "%s:获取当前目录时出错: %s:%s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
-msgstr "%s模糊的任务声明"
+msgstr "%s模糊的任务声明"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
 msgstr "此版本内帮助不可用"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
-msgstr "%s无效的动作名"
+msgstr "%s无效的动作名"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
-msgstr "%s没有补全声明"
+msgstr "%s没有补全声明"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "警告: -F 选项可能不像您预期的那样工作"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "警告: -C 选项可能不像您预期的那样工作"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "当前未执行补全功能"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "只能在函数中使用"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr "%s引用变量不能为数组"
+msgstr "%s引用变量不能为数组"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
-msgstr "%s不允许名称引用变量引用自身"
+msgstr "%s不允许名称引用变量引用自身"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
-msgstr "%s循环变量名引用"
+msgstr "%s循环变量名引用"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: 无效的引用变量名"
+msgstr "“%s”: 无效的名称引用变量名"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "无法用 `-f' 生成函数"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
-msgstr "%s只读函数"
+msgstr "%s只读函数"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s引号内的复合数组赋值已被弃用"
+msgstr "%s引号内的复合数组赋值已被弃用"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
-msgstr "%s无法以这种方式销毁数组变量"
+msgstr "%s无法以这种方式销毁数组变量"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr "%s无法将关联数组转化为索引数组"
+msgstr "%s无法将关联数组转化为索引数组"
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
@@ -387,7 +416,7 @@ msgstr "动态加载不可用"
 #: builtins/enable.def:343
 #, c-format
 msgid "cannot open shared object %s: %s"
-msgstr "无法打开共享对象 %s%s"
+msgstr "无法打开共享对象 %s%s"
 
 #: builtins/enable.def:369
 #, c-format
@@ -402,75 +431,75 @@ msgstr "为 %s 载入函数失败 (%d): 未载入"
 #: builtins/enable.def:512
 #, c-format
 msgid "%s: not dynamically loaded"
-msgstr "%s未以动态方式加载"
+msgstr "%s未以动态方式加载"
 
 #: builtins/enable.def:538
 #, c-format
 msgid "%s: cannot delete: %s"
-msgstr "%s无法删除: %s"
+msgstr "%s无法删除: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
-msgstr "%s是一个目录"
+msgstr "%s是一个目录"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
-msgstr "%s不是常规文件"
+msgstr "%s不是常规文件"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
-msgstr "%s文件太大"
+msgstr "%s文件太大"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
-msgstr "%s无法执行二进制文件"
+msgstr "%s无法执行二进制文件"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
-msgstr "%s无法执行: %s"
+msgstr "%s无法执行: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "注销\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "不是登录 shell: 使用 `exit'"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "有停止的任务。\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "有运行中的任务。\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "未找到命令"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "历史声明"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
-msgstr "%s无法打开临时文件: %s"
+msgstr "%s无法打开临时文件: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "当前"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "在不带任务控制的情况下启动了任务 %d"
@@ -478,46 +507,45 @@ msgstr "在不带任务控制的情况下启动了任务 %d"
 #: builtins/getopt.c:110
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s非法选项 -- %c\n"
+msgstr "%s非法选项 -- %c\n"
 
 #: builtins/getopt.c:111
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s选项需要一个参数 -- %c\n"
+msgstr "%s选项需要一个参数 -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "已禁用哈希"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
-msgstr "%s哈希表为空\n"
+msgstr "%s哈希表为空\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "命中\t命令\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell 命令匹配关键字 `"
+msgstr[0] "Shell 命令匹配关键字"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
-"没有与 `%s' 匹配的帮助主题。尝试 `help help' 或 `man -k %s' 或 `info %s'。"
+"没有与“%s”匹配的帮助主题。尝试使用“help help”、“man -k %s”或“info %s”。"
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
-msgstr "%s无法打开: %s"
+msgstr "%s无法打开: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -536,114 +564,115 @@ msgstr ""
 "名称旁边的星号(*)表示该命令被禁用。\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "最多只能使用 -anrw 选项中的一个"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "历史位置"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: 无效参数"
+msgstr "%s:无效时间戳"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
-msgstr "%s历史扩展失败"
+msgstr "%s历史扩展失败"
 
 #: builtins/inlib.def:71
 #, c-format
 msgid "%s: inlib failed"
-msgstr "%sinlib 失败"
+msgstr "%sinlib 失败"
 
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
 msgstr "其他选项不能与 `-x' 同时使用"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
-msgstr "%s参数必须是进程或任务 ID"
+msgstr "%s参数必须是进程或任务 ID"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "未知错误"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "需要表达式"
 
 #: builtins/mapfile.def:178
 #, c-format
 msgid "%s: not an indexed array"
-msgstr "%s不是一个索引数组"
+msgstr "%s不是一个索引数组"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
-msgstr "%s无效的文件描述符声明"
+msgstr "%s无效的文件描述符声明"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: 无效的文件描述符: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
-msgstr "%s无效的行数"
+msgstr "%s无效的行数"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
-msgstr "%s无效的数组基数"
+msgstr "%s无效的数组基数"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
-msgstr "%s无效的回调量子"
+msgstr "%s无效的回调量子"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "空数组变量名"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "需要数组变量支持"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
-msgstr "`%s': 缺少格式字符"
+msgstr "“%s”: 缺少格式字符"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
-msgstr "`%c': 无效的时间格式声明"
+msgstr "“%c”:无效的时间格式声明"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
-msgstr "`%c': 无效格式字符"
+msgstr "“%c”:无效格式字符"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
-msgstr "警告: %s%s"
+msgstr "警告: %s%s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "格式解析问题: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "使用了 \\x 但缺少十六进制位"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "使用了 \\%c 但缺少 unicode 数"
@@ -655,21 +684,21 @@ msgstr "无其他目录"
 #: builtins/pushd.def:360
 #, c-format
 msgid "%s: invalid argument"
-msgstr "%s无效参数"
+msgstr "%s无效参数"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<无当前目录>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "目录栈为空"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "目录栈索引"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -711,7 +740,7 @@ msgstr ""
 "      -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n"
 "\t从 0 开始。"
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -741,7 +770,7 @@ msgstr ""
 "    \n"
 "    选项:\n"
 "      -n\t抑制增加栈中目录时通常的改变目录的操作,\n"
-"    \t从而只有栈被操作。\n"
+"    \t从而只进行栈操作。\n"
 "    \n"
 "    参数:\n"
 "      +N\t轮转栈使得第N个目录(`dirs' 的\n"
@@ -757,7 +786,7 @@ msgstr ""
 "    \n"
 "    `dirs' 内建命令显示目录栈."
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -782,7 +811,7 @@ msgstr ""
 "    \n"
 "    选项:\n"
 "      -n\t抑制从栈中删除目录时通常的改变目录操作,\n"
-"    \t从而只有栈被操作。\n"
+"    \t从而只进行栈操作。\n"
 "    \n"
 "    参数:\n"
 "      +N\t从 `dirs' 输出的列表中,\n"
@@ -798,67 +827,67 @@ msgstr ""
 #: builtins/read.def:279
 #, c-format
 msgid "%s: invalid timeout specification"
-msgstr "%s无效的超时声明"
+msgstr "%s无效的超时声明"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "读错误: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "只能从函数或者源脚本返回(`return')"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "无法同时取消设定一个函数和一个变量"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
-msgstr "%s无法取消设定"
+msgstr "%s无法取消设定"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
-msgstr "%s无法取消设定: 只读 %s"
+msgstr "%s无法取消设定: 只读 %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
-msgstr "%s不是数组变量"
+msgstr "%s不是数组变量"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
-msgstr "%s不是函数"
+msgstr "%s不是函数"
 
-#: builtins/setattr.def:196
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
-msgstr "%s无法导出"
+msgstr "%s无法导出"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "位移计数"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "无法同时设定和取消设定 shell 选项"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
-msgstr "%s无效的 shell 选项名"
+msgstr "%s无效的 shell 选项名"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "需要文件名参数"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
-msgstr "%s文件未找到"
+msgstr "%s文件未找到"
 
 #: builtins/suspend.def:102
 msgid "cannot suspend"
@@ -868,64 +897,64 @@ msgstr "无法挂起"
 msgid "cannot suspend a login shell"
 msgstr "无法挂起一个登录 shell"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
-msgstr "%s 是 `%s' 的别名\n"
+msgstr "%s 是“%s”的别名\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s 是 shell 关键字\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s 是函数\n"
 
-#: builtins/type.def:300
+#: builtins/type.def:299
 #, c-format
 msgid "%s is a special shell builtin\n"
 msgstr "%s 是特殊 shell 内建\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s 是 shell 内建\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s 是 %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s 已被录入哈希表 (%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
-msgstr "%s无效的 limit 参数"
+msgstr "%s无效的 limit 参数"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
-msgstr "`%c': 命令错误"
+msgstr "“%c”:命令错误"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
-msgstr "%s无法获取 limit 值: %s"
+msgstr "%s无法获取 limit 值: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
-msgstr "%s无法修改 limit 值: %s"
+msgstr "%s无法修改 limit 值: %s"
 
 #: builtins/umask.def:115
 msgid "octal number"
@@ -934,405 +963,413 @@ msgstr "八进制数"
 #: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
-msgstr "`%c': 无效的符号状态运算符"
+msgstr "“%c”:无效的符号状态运算符"
 
 #: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
-msgstr "`%c': 无效的符号状态字符"
+msgstr "“%c”:无效的符号状态字符"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr "行"
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "上一个命令: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "中止..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "报告:"
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "未知的命令错误"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "错误的命令类型"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "错误的条件连接符"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "错误的跳转"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
-msgstr "%s未绑定的变量"
+msgstr "%s未绑定的变量"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\a 等待输入超时:自动注销\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "无法从 /dev/null 重定向标准输入: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "时间格式: `%c': 无效的格式字符"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: 副进程 [%d:%s] 仍然存在"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "管道错误"
 
-#: execute_cmd.c:4496
+#: execute_cmd.c:4671
 #, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
 msgstr "eval: 超出最大 eval 嵌套层数 (%d)"
 
-#: execute_cmd.c:4508
+#: execute_cmd.c:4683
 #, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s超出最大 source 嵌套层数 (%d)"
+msgstr "%s超出最大 source 嵌套层数 (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s超出最大函数嵌套层数 (%d)"
+msgstr "%s超出最大函数嵌套层数 (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s受限的: 无法在命令名中使用 `/'"
+msgstr "%s受限的: 无法在命令名中使用 `/'"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
-msgstr "%s未找到命令"
+msgstr "%s未找到命令"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
-msgstr "%s%s"
+msgstr "%s%s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: 解释器错误"
+msgstr "%s:%s:解释器错误"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
-msgstr "%s无法执行二进制文件: %s"
+msgstr "%s无法执行二进制文件: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
-msgstr "`%s': 特殊内建"
+msgstr "“%s”: 特殊内建"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "无法复制文件描述符 %d 到文件描述符 %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "表达式递归层次越界"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "递归栈下溢"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "表达式中有语法错误"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "尝试给非变量赋值"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "变量赋值中有语法错误"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "除以 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "错误:表达式赋值符号错误"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "条件表达式需要 `:'"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "指数小于 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "预增符或预减符后应跟有标识符"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
-msgstr "缺少 `)'"
+msgstr "缺少“)”"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "语法错误: 需要操作数"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "语法错误: 无效的算术运算符"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s%s (错误符号是 \"%s\")"
+msgstr "%s%s%s%s (错误符号是 \"%s\")"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "无效的算术进制"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "数值太大不可为算术进制的基"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
-msgstr "%s表达式错误\n"
+msgstr "%s表达式错误\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: 无法访问父目录"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "无法为文件描述符 %d 重置nodelay模式"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "无法从文件描述符 %d 为 bash 的输入获取一个新的文件描述符"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: 进程组管道"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "叉分 (fork) 出的的进程号 %d 出现在运行中的任务 %d 中"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "删除进程组 %2$ld 中已停止的任务 %1$d"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: 进程号 %5ld(%s) 标注为仍活着"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: 无此进程号"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "信号 %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "已完成"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "已停止"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "已停止(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "运行中"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "已完成(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "退出 %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "未知状态"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
-msgstr "(核心已转储)"
+msgstr "(核心已转储)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (工作目录: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "子进程 setpgid (%ld 到 %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: 进程号 %ld 不是当前 shell 的子进程"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wiat_for: 没有进程 %ld 的记录"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: 任务 %d 已停止"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
-msgstr "%s任务已经终止"
+msgstr "%s任务已经终止"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
-msgstr "%s任务 %d 已在后台"
+msgstr "%s任务 %d 已在后台"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: 打开 WNOHANG 以避免无限阻塞"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
-msgstr "%s行 %d: "
+msgstr "%s行 %d: "
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (核心已转储)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(当前工作目录:%s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp 失败"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: 后台无任务控制"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: 行规则"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "无法设定终端进程组(%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "此 shell 中无任务控制"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: 断言失败: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
 "malloc: %s:%d: assertion botched\r\n"
 msgstr ""
 "\r\n"
-"malloc: %s:%d断言已修补\r\n"
+"malloc: %s:%d断言已修补\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "未知"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: 空闲链表中的块损坏"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
-msgstr "free: 用已经释放的块作为参数被调用"
+msgstr "free:调用时用了已经释放的块作为参数"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
-msgstr "free: 用未分配的块作为参数被调用"
+msgstr "free: 调用时用了未分配的块作为参数"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: 检测到下溢;mh_nbytes 越界"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: 其实和末尾块大小不一致"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
-msgstr "realloc: 用未分配的块作为参数被调用"
+msgstr "realloc:调用时用了未分配的块作为参数"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: 检测到下溢;mh_nbytes 越界"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: 其实和末尾块大小不一致"
 
@@ -1358,41 +1395,41 @@ msgstr "无效的基"
 #: lib/sh/netopen.c:168
 #, c-format
 msgid "%s: host unknown"
-msgstr "%s未知主机"
+msgstr "%s未知主机"
 
 #: lib/sh/netopen.c:175
 #, c-format
 msgid "%s: invalid service"
-msgstr "%s无效的服务"
+msgstr "%s无效的服务"
 
 #: lib/sh/netopen.c:306
 #, c-format
 msgid "%s: bad network path specification"
-msgstr "%s错误的网络路径声明"
+msgstr "%s错误的网络路径声明"
 
 #: lib/sh/netopen.c:347
 msgid "network operations not supported"
 msgstr "不支持网络操作"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s)"
+msgstr "setlocale:LC_ALL:无法改变区域选项 (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s): %s"
+msgstr "setlocale:LC_ALL:无法改变区域选项 (%s):%s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: 无法改变区域选项 (%s)"
+msgstr "setlocale:%s:无法改变区域选项 (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: 无法改变区域选项 (%s): %s"
+msgstr "setlocale:%s:无法改变区域选项 (%s):%s"
 
 #: mailcheck.c:439
 msgid "You have mail in $_"
@@ -1405,157 +1442,157 @@ msgstr "您在 $_ 中有新邮件"
 #: mailcheck.c:480
 #, c-format
 msgid "The mail in %s has been read\n"
-msgstr "%s 中的邮件已被阅读\n"
+msgstr "%s 中的邮件已被读过\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
-msgstr "语法错误需要算术表达式"
+msgstr "语法错误需要算术表达式"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
-msgstr "语法错误需要 `;'"
+msgstr "语法错误需要 `;'"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
-msgstr "语法错误`((%s))'"
+msgstr "语法错误`((%s))'"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document错误的指令类型 %d"
+msgstr "make_here_document错误的指令类型 %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "立即文档在第 %d 行被文件结束符分隔 (需要 `%s')"
+msgstr "立即文档在第 %d 行被文件结束符分隔 (需要“%s”)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: 重定向指令 `%d' 越界"
+msgstr "make_redirection:重定向指令“%d”越界"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
-msgstr ""
+msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
 msgstr "超出最大立即文档数量"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
-msgstr "寻找匹配的 `%c' 是遇到了未预期的文件结束符"
+msgstr "寻找匹配的“%c”时遇到了未预期的文件结束符"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
-msgstr "寻找 `]]' 是遇到了未预期的文件结束符"
+msgstr "寻找“]]”时遇到了未预期的文件结束符"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "条件表达式中有语法错误: 未预期的符号 `%s'"
+msgstr "条件表达式中有语法错误:未预期的符号“%s”"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "条件表达式中有语法错误"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
-msgstr "未预期的符号 `%s' ,需要 `)'"
+msgstr "未预期的符号“%s” ,需要“)”"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
-msgstr "需要 `)'"
+msgstr "需要“)”"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "一元条件运算符使用了未预期的参数 `%s'"
+msgstr "一元条件运算符使用了未预期的参数“%s”"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "一元条件运算符使用了未预期的参数"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "未预期的符号 `%s',需要二元条件运算符"
+msgstr "未预期的符号“%s”,需要二元条件运算符"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "需要二元条件运算符"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "二元条件运算符使用了未预期的参数 `%s'"
+msgstr "二元条件运算符使用了未预期的参数“%s”"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "二元条件运算符使用了未预期的参数"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
-msgstr "条件命令中有未预期的符号 `%c'"
+msgstr "条件命令中有未预期的符号“%c”"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
-msgstr "条件命令中有未预期的符号 `%s'"
+msgstr "条件命令中有未预期的符号“%s”"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "条件命令中有未预期的符号 %d"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
-msgstr "未预期的符号 `%s' 附近有语法错误"
+msgstr "未预期的符号“%s”附近有语法错误"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
-msgstr "`%s' 附近有语法错误"
+msgstr "“%s”附近有语法错误"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "语法错误: 未预期的文件结尾"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "语法错误"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "使用 \"%s\" 退出 shell 。\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
-msgstr "寻找匹配的 `)' 时遇到了未预期的文件结束符"
+msgstr "寻找匹配的“)”时遇到了未预期的文件结束符"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
-msgstr "补全: 未找到函数 `%s'"
+msgstr "补全:未找到函数 “%s”"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s:疑似重试循环"
 
 #: pcomplib.c:182
 #, c-format
 msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s空的补全声明"
+msgstr "progcomp_insert: %s空的补全声明"
 
 #: print_cmd.c:302
 #, c-format
@@ -1576,90 +1613,95 @@ msgstr "xtrace_set: 空的文件指针"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: `%c': 无效的格式字符"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "文件描述符超出范围"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
-msgstr "%s模糊的重定向"
+msgstr "%s模糊的重定向"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
-msgstr "%s无法覆盖已存在的文件"
+msgstr "%s无法覆盖已存在的文件"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
-msgstr "%s受限的: 无法重定向输出"
+msgstr "%s受限的: 无法重定向输出"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "无法为立即文档创建临时文件: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
-msgstr "%s无法将文件描述符赋值给变量"
+msgstr "%s无法将文件描述符赋值给变量"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "没有网络时不支持 /dev/(tcp|udp)/host/port"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "重定向错误: 无法复制文件描述符"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
-msgstr "无法找到 /tmp ,请创建"
+msgstr "无法找到 /tmp ,请创建"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp 必须为有效的目录名"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "在交互式 shell 中将忽略美化输出模式"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: 无效的选项"
 
-#: shell.c:1282
+#: shell.c:1299
 #, c-format
 msgid "cannot set uid to %d: effective uid %d"
 msgstr "无法将 uid 设为 %d: 有效 uid %d"
 
-#: shell.c:1289
+#: shell.c:1306
 #, c-format
 msgid "cannot set gid to %d: effective gid %d"
 msgstr "无法将 gid 设为 %d: 有效 gid %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "无法启动调试器;调试模式已禁用"
 
-#: shell.c:1566
+#: shell.c:1608
 #, c-format
 msgid "%s: Is a directory"
-msgstr "%s是一个目录"
+msgstr "%s是一个目录"
 
-#: shell.c:1777
+# 这个是查看用户的 /etc/passwd 信息得到的名字。既然是用户的名字,就叫做无名氏吧。(有点想写“红领巾”来着。)
+#: shell.c:1826
 msgid "I have no name!"
-msgstr "没æ\9c\89å\90\8då­\97!"
+msgstr "æ\97 å\90\8dæ°\8f!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash,版本 %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1668,49 +1710,52 @@ msgstr ""
 "用法:\t%s [GNU 长选项] [选项] ...\n"
 "\t%s [GNU 长选项] [选项] 脚本文件 ...\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU 长选项:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Shell 选项:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD 或 -c <命令> 或 -O <shopt 选项>\t\t(仅适合调用)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s 或 -o <选项>\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信息\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n"
 
-#: shell.c:1961
+# 写如何报告程序错误的地方应该提到如何报告翻译问题。
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "请使用`bashbug' 命令来报告错误.\n"
+msgstr ""
+"请使用“bashbug”命令来报告程序错误。\n"
+"请将翻译错误报告到 <i18n-zh@googlegroups.com>。\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
 msgstr "bash 首页:<http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
 msgstr "使用 GNU 软件的通用帮助:<http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: 无效的操作"
@@ -1885,103 +1930,107 @@ msgstr "未知信号 #"
 msgid "Unknown Signal #%d"
 msgstr "未知信号 #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
-msgstr "%s无法将链表赋值给数组成员"
+msgstr "%s无法将链表赋值给数组成员"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "无法为进程替换创建管道"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "无法为进程替换创建子进程"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
-msgstr "无法打开命名管道 %s 进readline-"
+msgstr "无法打开命名管道 %s 以读取"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "无法打开命名管道 %s 进行写入"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "无法将命名管道 %s 作为文件描述符 %d 复制"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "错误的替换: 在 %s 中没有闭合的 \"`\""
+msgstr "命令替换:忽略输入中的 null 字节"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "无法为命令替换创建管道"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "无法为命令替换创建子进程"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: 无法将管道复制为文件描述符 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
-msgstr "%s无效的引用变量名"
+msgstr "%s无效的引用变量名"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: 错误的替换"
-
-#: subst.c:6800
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s无效的间接展开"
+msgstr "%s无效的间接展开"
 
-#: subst.c:6807
+#: subst.c:6840 subst.c:6987
 #, c-format
 msgid "%s: invalid variable name"
-msgstr "%s: 无效的变量名"
+msgstr "%s:无效的变量名"
+
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s:参数未设置"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
-msgstr "%s参数为空或未设置"
+msgstr "%s参数为空或未设置"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
-msgstr "%s子串表达式 < 0"
+msgstr "%s子串表达式 < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s:错误的替换"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
-msgstr "$%s无法这样赋值"
+msgstr "$%s无法这样赋值"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr "未来版本的 shell 会强制估值为算术替换"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "错误的替换: 在 %s 中没有闭合的 \"`\""
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "无匹配: %s"
@@ -1993,125 +2042,130 @@ msgstr "需要参数"
 #: test.c:156
 #, c-format
 msgid "%s: integer expression expected"
-msgstr "%s需要整数表达式"
+msgstr "%s需要整数表达式"
 
 #: test.c:265
 msgid "`)' expected"
-msgstr "需要 `)'"
+msgstr "需要“)”"
 
 #: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
-msgstr "需要`)',得到 %s"
+msgstr "需要“)”,却找到 %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
-msgstr "%s需要一元表达式"
+msgstr "%s需要一元表达式"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
-msgstr "%s需要二元表达式"
+msgstr "%s需要二元表达式"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "缺少 `]'"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "无效的信号数"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: 超出最大的 trap handler 层次 (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: 信号处理器是 SIG_DFL,重新发送 %d (%s) 给自己"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: 错误的信号 %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
-msgstr "`%s' 函数定义导入错误"
+msgstr "“%s”函数定义导入错误"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell 层次 (%d) 太高,重置为 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: 当前作用域中没有函数上下文"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
-msgstr "%s变量不可赋值"
+msgstr "%s变量不可赋值"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: 无效的引用变量名"
+msgstr "%s:将整数赋值给名称引用"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: 当前作用域中没有函数上下文"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
-msgstr "%s 有空的 exportstr"
+msgstr "%s 的 exportstr 为空"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%2$s 的 exportstr 中有无效的字符 %1$d"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
-msgstr "%s 的 exportstr 中没有 `='"
+msgstr "%s 的 exportstr 中没有“=”"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: shell_variables 的头部不是函数上下文"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: 没有 global_variables 上下文"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: shell_variables 的头部不是临时环境作用域"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: 无法作为文件打开"
+msgstr "%s:%s:无法作为文件打开"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s: %s: 追踪文件描述符的值无效"
+msgstr "%s:%s:追踪文件描述符的值无效"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s: 兼容版本数值越界"
+msgstr "%s:%s:兼容版本数值越界"
 
+#  Inc. 的 . 是个缩写
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "版权所有 (C) 2015 自由软件基金会."
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "版权所有 (C) 2018 自由软件基金会"
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2134,25 +2188,25 @@ msgstr "本软件是自由软件,您可以自由地更改和重新发布。"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "在法律许可的情况下特此明示,本软件不提供任何担保。"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s无法分配 %lu 字节 (已分配 %lu 字节)"
+msgstr "%s无法分配 %lu 字节 (已分配 %lu 字节)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
-msgstr "%s无法分配 %lu 字节"
+msgstr "%s无法分配 %lu 字节"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: 无法分配 %lu 字节 (已分配 %lu 字节)"
+msgstr "%s:%s:%d:无法分配 %lu 字节 (已分配 %lu 字节)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: 无法分配 %lu 字节"
+msgstr "%s:%s:%d:无法分配 %lu 字节"
 
 #: builtins.c:45
 msgid "alias [-p] [name[=value] ... ]"
@@ -2275,9 +2329,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [任务声明 ...]"
+msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2360,8 +2413,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [模式]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [编号 ...]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [编号 ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2451,12 +2504,12 @@ msgstr "printf [-v var] 格式 [参数]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全局模式] [-W 词"
-"语列表]  [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模式] [-W "
+"è¯\8d语å\88\97表]  [-F å\87½æ\95°] [-C å\91½ä»¤] [-X è¿\87滤模å¼\8f] [-P å\89\8dç¼\80] [-S å\90\8eç¼\80] [å\90\8d称 ...]"
 
 #: builtins.c:235
 msgid ""
@@ -2467,8 +2520,8 @@ msgstr ""
 "F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o 选项] [-DE] [名称 ...]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o 选项] [-DEI] [名称 ...]"
 
 #: builtins.c:242
 msgid ""
@@ -2480,11 +2533,11 @@ msgstr ""
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] "
-"[数组]"
+"readarray [-d 定界符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回"
+"调] [-c 量子] [数组]"
 
 #: builtins.c:256
 msgid ""
@@ -2532,9 +2585,9 @@ msgstr ""
 "从别名定义列表中删除每一个“名字”。\n"
 "    \n"
 "    选项:\n"
-"      -a\t删除所有的别名定义\n"
+"      -a\t删除所有的别名定义\n"
 "    \n"
-"    è¿\94å\9b\9eæ\88\90å\8a\9fï¼\8cé\99¤é\9d\9eâ\80\9cå\90\8då­\97â\80\9c不是一个已存在的别名。"
+"    è¿\94å\9b\9eæ\88\90å\8a\9fï¼\8cé\99¤é\9d\9eâ\80\9cå\90\8då­\97â\80\9d不是一个已存在的别名。"
 
 #: builtins.c:291
 msgid ""
@@ -2654,7 +2707,7 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "执行 shell 内建。\n"
 "    \n"
@@ -2663,9 +2716,8 @@ msgstr ""
 "    并且希望在函数之内执行该 shell 内建的情况下有用处。\n"
 "    \n"
 "    退出状态:\n"
-"    以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN不是一个 "
-"shell 内建时\n"
-"    为假。."
+"    以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN 不是一个\n"
+"    shell 内建时为假。"
 
 #: builtins.c:369
 msgid ""
@@ -2748,7 +2800,7 @@ msgstr ""
 "分隔。\n"
 "    一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 "
 "CDPATH\n"
-"    变量不会被使用。\n"
+"    不会用上变量。\n"
 "    \n"
 "    如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一"
 "个\n"
@@ -2821,7 +2873,7 @@ msgstr ""
 "返回一个成功结果。\n"
 "    \n"
 "    退出状态:\n"
-"    总是成功"
+"    总是成功"
 
 #: builtins.c:462
 msgid ""
@@ -2857,7 +2909,7 @@ msgstr ""
 "    \n"
 "    带 ARGS 参数运行 COMMAND 命令且抑制 shell 函数查询,或显示\n"
 "    指定的 COMMAND 命令的信息。可以在存在相同名称的函数定义的\n"
-"    情况下用于启动磁盘上的命令。\n"
+"    情况下用于启动磁盘上的命令。\n"
 "    \n"
 "    选项:\n"
 "      -p\t使用 PATH 变量的一个默认值以确保所有的标准工具都能被找到。\n"
@@ -2886,11 +2938,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2908,12 +2960,12 @@ msgid ""
 msgstr ""
 "设定变量值和属性。\n"
 "    \n"
-"    声明变量并且赋予它们属性。如果没给定名称,\n"
+"    声明变量并且赋予它们属性。如果没给定名称,\n"
 "    则显示所有变量的属性和值。\n"
 "    \n"
 "    选项:\n"
-"      -f\t限制动作或显示为函数名称和定义\n"
-"      -F\té\99\90å\88¶ä»\85æ\98¾ç¤ºå\87½æ\95°å\90\8d称 (以å\8f\8aè¡\8cå\8f·å\92\8cæº\90æ\96\87件å\90\8dï¼\8cå½\93è°\83è¯\95æ\97)\n"
+"      -f\t限制动作或显示为函数名称和定义\n"
+"      -F\té\99\90å\88¶ä»\85æ\98¾ç¤ºå\87½æ\95°å\90\8d称 (以å\8f\8aè°\83è¯\95æ\97¶æ\98¾ç¤ºè¡\8cå\8f·å\92\8cæº\90æ\96\87件å\90\8d)\n"
 "      -g\t当用于 shell 函数内时创建全局变量; 否则忽略\n"
 "      -p\t显示每个 NAME 变量的属性和值\n"
 "    \n"
@@ -2925,7 +2977,7 @@ msgstr ""
 "      -n\t使 NAME 成为指向一个以其值为名称的变量的引用\n"
 "      -r\t将 NAME 变为只读\n"
 "      -t\t使 NAME 带有 `trace' (追踪)属性\n"
-"      -u\t将 NAME 在赋值时转为大写\n"
+"      -u\t将每个 NAME 在赋值时转为大写\n"
 "      -x\t将 NAME 导出\n"
 "    \n"
 "    用 `+' 代替 `-' 会关闭指定选项。\n"
@@ -2937,10 +2989,9 @@ msgstr ""
 "    命令一致。`-g' 选项抑制此行为。\n"
 "    \n"
 "    退出状态:\n"
-"    返回成功除非使用了无效选项或者发生错误。"
+"    返回成功,除非提供了无效选项或者发生变量赋值错误。"
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2948,7 +2999,7 @@ msgid ""
 msgstr ""
 "设置变量的值和属性。\n"
 "    \n"
-"    废弃。参见 `help declare'。"
+"    `declare'  的等价形式。参见 `help declare'。"
 
 #: builtins.c:538
 msgid ""
@@ -2977,6 +3028,7 @@ msgstr ""
 "数。"
 
 #: builtins.c:555
+#, fuzzy
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3005,6 +3057,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3036,7 +3094,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非有写错误发生。"
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3058,7 +3116,7 @@ msgstr ""
 "    退出状态:\n"
 "    除非写错误发生,否则返回成功。"
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3108,7 +3166,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非 NAME 不是一个 shell 内建或者有错误发生。"
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3127,7 +3185,7 @@ msgstr ""
 "    退出状态:\n"
 "    以命令的状态退出,或者在命令为空的情况下返回成功。"
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3169,7 +3227,7 @@ msgid ""
 msgstr ""
 "解析选项参数。\n"
 "    \n"
-"    Getopts 被 shell 过程用于解析可定位的参数作为选项。\n"
+"    getopts 被 shell 过程用于解析可定位的参数作为选项。\n"
 "    \n"
 "    \n"
 "    OPTSTRING 字符串包含待识别的选项字母;如果一个字母后面跟\n"
@@ -3198,14 +3256,14 @@ msgstr ""
 "    错误信息的打印,即使 OPTSTRING 变量的第一个字符不是一\n"
 "    个冒号。OPTERR 的默认值为1.\n"
 "    \n"
-"    Getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n"
+"    getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n"
 "    更多的参数,它们反而会被解析。\n"
 "    \n"
 "    退出状态:\n"
 "    如果一个选项被找到则返回成功;如果遇到了选项的结尾或者\n"
 "    有错误发生则返回失败。"
 
-#: builtins.c:688
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3244,7 +3302,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非 COMMAND 命令没有找到或者出现一个重定向错误。"
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3256,7 +3314,7 @@ msgstr ""
 "    以状态 N 退出 shell。  如果 N 被省略,则退出状态\n"
 "    为最后一个执行的命令的退出状态。"
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3269,7 +3327,7 @@ msgstr ""
 "    以状态 N 退出一个登录 shell。如果不在登录 shell 中执行,则\n"
 "    返回一个错误。"
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3322,7 +3380,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,或者执行的命令的状态;如果错误发生则返回非零。"
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3342,7 +3400,7 @@ msgstr ""
 "    退出状态:\n"
 "    放至前台的命令状态,或者当错误发生时为失败。"
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3364,7 +3422,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非任务管理没有启用或者错误发生。"
 
-#: builtins.c:787
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3408,7 +3466,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非 NAME 命令没有找到或者使用了无效的选项。"
 
-#: builtins.c:812
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3423,7 +3481,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3442,13 +3500,12 @@ msgstr ""
 "    \t简介\n"
 "    \n"
 "    参数:\n"
-"      PATTERN\tPattern 模式指定一个帮助主题\n"
+"      PATTERN\t指定帮助主题的模式\n"
 "    \n"
 "    退出状态:\n"
-"    返回成功,除非 PATTERN 模式没有找到或者使用了无效选项。"
+"    返回成功,除非未找到 PATTERN 模式没有找到或者使用了无效选项。"
 
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3457,7 +3514,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3483,17 +3541,19 @@ msgid ""
 msgstr ""
 "显示或操纵历史列表。\n"
 "    \n"
-"    带行号显示历史列表,将每个被修改的条目加上前缀 `*'。\n"
+"    带行号显示历史列表,将每个被修改的条目加上 `*' 前缀。\n"
 "    参数 N 会仅列出最后的 N 个条目。\n"
 "    \n"
 "    选项:\n"
 "      -c\t删除所有条目从而清空历史列表。\n"
-"      -d 偏移量\t从指定位置删除历史列表。\n"
+"      -d 偏移量\t从指定位置删除历史列表。负偏移量将从历史条目末尾\n"
+"    \t\t开始计数\n"
 "    \n"
 "      -a\t将当前会话的历史行追加到历史文件中\n"
 "      -n\t从历史文件中读取所有未被读取的行\n"
+"    \t\t并且将它们附加到历史列表\n"
 "      -r\t读取历史文件并将内容追加到历史列表中\n"
-"      -w\t将当前历史写入到历史文件中,并追加到历史列表中\n"
+"      -w\t将当前历史写入到历史文件中\n"
 "    \n"
 "      -p\t对每一个 ARG 参数展开历史并显示结果,而不存储到历史列表中\n"
 "      -s\t以单条记录追加 ARG 到历史列表中\n"
@@ -3502,13 +3562,13 @@ msgstr ""
 "    如果 $HISTFILE 变量有值的话使用之,不然使用 ~/.bash_history 文件。\n"
 "    \n"
 "    如果 $HISTTIMEFORMAT 变量被设定并且不为空,它的值会被用于\n"
-"    strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的\n"
-"    间戳,否则不打印时间戳。\n"
+"    strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的\n"
+"    间戳,否则不打印时间戳。\n"
 "    \n"
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者发生错误。"
 
-#: builtins.c:872
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3550,7 +3610,7 @@ msgstr ""
 "    返回成功,除非使用了无效的选项或者有错误发生。\n"
 "    如果使用 -x 选项,则返回 COMMAND 命令的退出状态。"
 
-#: builtins.c:899
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3580,8 +3640,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非使用了无效的选项或者 JOBSPEC 声明。"
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3621,7 +3680,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者有错误发生。"
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3703,7 +3762,7 @@ msgstr ""
 "    退出状态:\n"
 "    如果最后一个 ARG 参数估值为 0,则 let 返回 1; 否则 let 返回 0。"
 
-#: builtins.c:987
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3724,7 +3783,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3767,9 +3826,9 @@ msgstr ""
 "    如果没有提供 NAME 变量,则读取的行被存放在 REPLY 变量中。\n"
 "    \n"
 "    选项:\n"
-"      -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始\n"
+"      -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始\n"
 "      -d delim\t持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符\n"
-"      -e\t在一个交互式 shell 中使用 Readline 获取行\n"
+"      -e\t使用 Readline 获取行\n"
 "      -i text\t使用 TEXT 文本作为 Readline 的初始文字\n"
 "      -n nchars\t读取 nchars 个字符之后返回,而不是等到读取换行符。\n"
 "    \t\t但是分隔符仍然有效,如果遇到分隔符之前读取了不足 nchars 个字符。\n"
@@ -3779,20 +3838,20 @@ msgstr ""
 "      -p prompt\t在尝试读取之前输出 PROMPT 提示符并且不带\n"
 "    \t\t换行符\n"
 "      -r\t不允许反斜杠转义任何字符\n"
-"      -s\t不显示终端的任何输入\n"
+"      -s\t不回显终端的任何输入\n"
 "      -t timeout\t如果在 TIMEOUT 秒内没有读取一个完整的行则超时并且返回失"
 "败。\n"
-"    \t\tTMOUT 变量的值是默认的超时时间。\n"
-"    \t\tTIMEOUT 可以是小数。如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上\n"
-"    \t\t输入有效的时候,read 才返回成功。\n"
+"    \t\tTMOUT 变量的值是默认的超时时间。TIMEOUT 可以是小数。\n"
+"    \t\t如果 TIMEOUT 是 0,那么仅当在指定的文件描述符上输入有效的时候,\n"
+"    \t\tread 才返回成功;否则它将立刻返回而不尝试读取任何数据。\n"
 "    \t\t如果超过了超时时间,则返回状态码大于 128\n"
 "      -u fd\t从文件描述符 FD 中读取,而不是标准输入\n"
 "    \n"
 "    退出状态:\n"
-"    返回码为零,除非遇到了文件结束符,读超时,或者无效的文\n"
-"    件描述符作为参数传递给了 -u 选项。"
+"    返回码为零,除非遇到了文件结束符、读超时(且返回码不大于128)、\n"
+"    出现了变量赋值错误或者无效的文件描述符作为参数传递给了 -u 选项。"
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3812,8 +3871,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回 N,或者如果 shell 不在执行一个函数或引用脚本时,失败。"
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3963,6 +4021,8 @@ msgstr ""
 "      -P  设定之后类似 cd 的会改变当前目录的命令不\n"
 "          追踪符号链接。\n"
 "      -T  设定之后 DEBUG 陷阱会被 shell 函数继承。\n"
+"      --  任何剩余的参数会被赋值给位置参数。如果没\n"
+"          有剩余的参数,位置参数不会被设置。\n"
 "      -   任何剩余的参数会被赋值给位置参数。\n"
 "          -x 和 -v 选项已关闭。\n"
 "    \n"
@@ -3975,7 +4035,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非使用了无效的参数。"
 
-#: builtins.c:1132
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4013,7 +4073,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者 NAME 名称为只读。"
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4046,7 +4106,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者 NAME 名称。"
 
-#: builtins.c:1173
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4082,7 +4142,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者 NAME 名称。"
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4100,7 +4160,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非 N 为负或者大于 $#。"
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4122,7 +4182,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。"
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4146,7 +4206,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非没有启用任务控制或者有错误发生。"
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4300,7 +4360,7 @@ msgstr ""
 "    如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n"
 "    为假或者使用了无效的参数则返回失败。"
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4312,7 +4372,7 @@ msgstr ""
 "    是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n"
 "    字符 `]',以匹配起始的 `['。"
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4333,7 +4393,7 @@ msgstr ""
 
 # EXIT and DEBUG should be as-is. Use before you translate, please.
 # The -signal is only an example; Read carefully.
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4404,7 +4464,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者 SIGSPEC。"
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4456,7 +4516,7 @@ msgstr ""
 "    退出状态:\n"
 "    如果所有的 NAME 命令都找到则返回成功;任何一个找不到则失败。"
 
-#: builtins.c:1424
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4546,7 +4606,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者错误发生。"
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4578,7 +4638,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的 MODE 模式或者选项。"
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4586,30 +4646,34 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
 msgstr ""
 "等待任务完成并返回退出状态。\n"
 "    \n"
-"    等待以 ID 编号识别的进程,其中ID 可以是进程编号或者任务声明,\n"
+"    等待以 ID 编号识别的进程,其中 ID 可以是进程编号或者任务声明,\n"
 "    并报告它的终止状态。如果 ID 没有给出,则等待所有的当前活跃子\n"
 "    进程,并且返回状态为零。如果 ID 是任务声明,等待任务管道中的\n"
 "    所有进程。\n"
 "    \n"
 "    若给定了 -n 选项,等待下一个任务完成并返回其状态。\n"
 "    \n"
+"    若给定了 -f 选项,且已启用了任务控制,则等待指定的 ID 终止\n"
+"    而非等待它改变状态。\n"
 "    退出状态:\n"
 "    返回最后一个 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。"
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4631,7 +4695,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回进程 ID 的状态;如果 PID 是无效的进程号或者指定了无效的选项则失败。"
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4645,14 +4709,14 @@ msgid ""
 msgstr ""
 "为列表中的每个成员执行命令。\n"
 "    \n"
-"    `for' 循环为列表中的每个成员执行一系列的命令。如果没有\n"
-"    `in WORDS ...;'则假定使用 `in \"$@\"'。对于 WORDS 中的每\n"
-"     个元素,NAME 被设定为该元素,并且执行 COMMANDS 命令。\n"
+"    “for”循环为列表中的每个成员执行一系列的命令。如果没有\n"
+"    “in <词语> ...;”则假定使用“in \"$@\"”。对于 <词语> 中的每\n"
+"     个元素,<名称> 变量被设定为该元素后执行 <命令>。\n"
 "    \n"
 "    退出状态:\n"
 "    返回最后执行的命令的状态。"
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4673,16 +4737,16 @@ msgstr ""
 "    等价于\n"
 "    \t(( EXP1 ))\n"
 "    \twhile (( EXP2 )); do\n"
-"    \t\tCOMMANDS\n"
+"    \t\t命令们\n"
 "    \t\t(( EXP3 ))\n"
 "    \tdone\n"
-"    EXP1、EXP2 和 EXP3都是算术表达式。如果省略任何表达式,\n"
+"    EXP1、EXP2 和 EXP3 都是算术表达式。如果省略任何表达式,\n"
 "    则等同于使用了估值为1的表达式。\n"
 "    \n"
 "    退出状态:\n"
 "    返回最后执行的命令的状态。"
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4703,7 +4767,7 @@ msgid ""
 msgstr ""
 "从列表中选取词并且执行命令。\n"
 "    \n"
-"    WORDS 变量被展开,生成一个词的列表。展开的词集合被打印\n"
+"    <词语...> 被展开,生成一个词的列表。展开的词集合被打印\n"
 "    在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'\n"
 "    则假定使用`in \"$@\"'。PS3提示符会被显示并且从标准输入读入一行\n"
 "    如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应\n"
@@ -4715,7 +4779,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4743,7 +4807,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回状态即PIPELINE 的返回状态。"
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4761,7 +4825,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4792,7 +4856,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4810,7 +4874,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4828,8 +4892,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4849,9 +4912,9 @@ msgstr ""
 "    默认的 NAME 是 \"COPROC\"。\n"
 "    \n"
 "    退出状态:\n"
-"    返回 COMMAND 命令的退出状态。"
+"    副进程会返回退出状态 0。"
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4874,7 +4937,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功除非 NAME 为只读。"
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4892,7 +4955,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回最后一个执行的命令的状态。"
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4916,7 +4979,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回被继续的任务的状态。"
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4934,7 +4997,7 @@ msgstr ""
 "    退出状态\n"
 "    如果表达式估值为0则返回 1;否则返回0。"
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -4982,7 +5045,7 @@ msgstr ""
 "    退出状态:\n"
 "    根据 EXPRESSION 的值为0或1。"
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5077,7 +5140,7 @@ msgstr ""
 "    HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n"
 "    \t\t列表,以冒号分隔。\n"
 
-#: builtins.c:1803
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5130,7 +5193,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的参数或者目录转换失败。"
 
-#: builtins.c:1837
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5167,17 +5230,17 @@ msgstr ""
 "    \n"
 "    参数:\n"
 "      +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n"
-"    \t例如: `popd +0' 删除第一个目录,`popd +1' 删除第二个。\n"
+"    \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n"
 "    \n"
 "      -N\t删除第 N 个目录 (`dirs' 显示的目录列表中右起,从零开始)。\n"
-"    \t例如: `popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n"
+"    \t例如:`popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n"
 "    \n"
 "    `dirs' 内建显示目录栈。\n"
 "    \n"
 "    退出状态:\n"
 "    返回成功,除非使用了无效的参数或者目录变换失败。"
 
-#: builtins.c:1867
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5226,14 +5289,13 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者发生错误。"
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5248,9 +5310,9 @@ msgid ""
 msgstr ""
 "设定和取消设定 shell 选项。\n"
 "    \n"
-"    改变每个 shell 选项 OPTNAME的设定。不带参数\n"
-"    时,列出所有 shell 选项并标注每一个选项是否被\n"
-"    设定。\n"
+"    改变每个 shell 选项 OPTNAME 的设定。不带参数时,\n"
+"    列出每个提供的 OPTNAME,否则列出所有 shell 选项;\n"
+"    同时标注每一个选项是否被设定。\n"
 "    \n"
 "    选项:\n"
 "      -o\t限制 OPTNAME 为定义用于`set -o' 的选项\n"
@@ -5261,9 +5323,9 @@ msgstr ""
 "    \n"
 "    退出状态:\n"
 "    如果 OPTNAME 选项被启用则返回成功;如果是\n"
-"    无效的选项或OPTNAME 被禁用则失败。"
+"    无效的选项或 OPTNAME 被禁用则失败。"
 
-#: builtins.c:1919
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5319,7 +5381,8 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者写或赋值错误发生。"
 
-#: builtins.c:1953
+#: builtins.c:1961
+#, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
@@ -5337,17 +5400,21 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
-"声明 readline 如何完成读取参数。\n"
+"指定 Readline 如何补全参数。\n"
 "    \n"
-"    声明对于每一个 NAME 名称如何完成读取参数。如果不带选项,\n"
+"    声明对于每一个 NAME 名称如何补全参数。如果不带选项,\n"
 "    现有的补全声明会以可以重用为输入的格式打印出来。\n"
 "    \n"
 "    选项:\n"
@@ -5356,14 +5423,16 @@ msgstr ""
 "    \t名称,删除所有的补全声明。\n"
 "      -D\t对于没有补全声明定义的命令,设定默认的补全动作\n"
 "      -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n"
+"      -I\t将补全和动作应用在首单词(通常是所给命令)上\n"
 "    \n"
-"    尝试补全时,按照上述大写字母选项的顺序进行动作。-D 选项优先\n"
-"    级高于 -E 选项。\n"
+"    尝试补全时,按照上述大写字母选项的顺序进行动作。\n"
+"    如果给出了多个选项,-D 选项优先级高于 -E 选项,且\n"
+"    这两个选项优先级均高于 -I。\n"
 "    \n"
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者错误发生。"
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5384,7 +5453,7 @@ msgstr ""
 "    退出状态:\n"
 "    除非使用了无效选项或者错误发生,否则返回成功。"
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5399,6 +5468,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5424,6 +5494,7 @@ msgstr ""
 "    \t-o option\t为每个 NAME 名称设定补全选项 option\n"
 "    \t-D\t\t为 \"default\" 命令补全改变选项\n"
 "    \t-E\t\t为 \"empty\" 命令补全改变选项\n"
+"    \t-I\t\t为首单词的补全改变选项\n"
 "    \n"
 "    使用 `+o' 而不是 `-o' 可以关闭指定的选项。\n"
 "    \n"
@@ -5436,7 +5507,7 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项或者 NAME 名称没有定义补全声明。"
 
-#: builtins.c:2026
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5503,31 +5574,19 @@ msgstr ""
 "    退出状态:\n"
 "    返回成功,除非使用了无效的选项,或者 ARRAY 变量只读或不是下标数组。"
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
 "    A synonym for `mapfile'."
 msgstr ""
-"从一个文件中读取行到数组变量中\n"
+"从一个文件中读取行到数组变量中\n"
 "    \n"
 "    一个 `mapfile'的同义词。"
 
 #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
 #~ msgstr "版权所有 (C) 2014 自由软件基金会."
 
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
-
 #~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
 #~ msgstr "版权所有 (C) 2013 自由软件基金会."
 
index 6e07b8db68a0842930071bbc7f12948ec293c28e..79a6a4aad88cb03445dc1ed9eccc8b57e0c58f0e 100644 (file)
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
index b276ceb877c2b57b4381aaa7485b9444d66b1722..e83e8735a9c7fa91c535f51b4d3d6c1624581b59 100644 (file)
 # Traditional Chinese translations for bash package.
 # Copyright (C) 2008 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
+#
 # Zi-You Dai <ioppooster@gmail.com>, 2008.
 # Mingye Wang (Arthur2e5) <arthur200126@hotmail.com>, 2015.
 # Wei-Lun Chao <bluebat@member.fsf.org>, 2015.
-#
+# pan93412 <pan93412@gmail.com>, 2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 4.3-rc2\n"
+"Project-Id-Version: bash 5.0-beta2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-08-27 13:36+0800\n"
-"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
+"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"PO-Revision-Date: 2018-11-29 20:02+0800\n"
+"Last-Translator: pan93412 <pan93412@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: zh_TW\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Manual Edit && Poedit 2.0.2\n"
 
-#: arrayfunc.c:54
+#: arrayfunc.c:58
 msgid "bad array subscript"
 msgstr "陣列下標不正確"
 
-#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118
-#: variables.c:2730
+#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
+#: variables.c:3108
 #, c-format
 msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s:正在移除 nameref 屬性"
 
-#: arrayfunc.c:393 builtins/declare.def:780
+#: arrayfunc.c:402 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
 msgstr "%s: 無法將索引陣列轉化為關聯陣列"
 
-#: arrayfunc.c:578
+#: arrayfunc.c:586
 #, c-format
 msgid "%s: invalid associative array key"
 msgstr "%s: 無效的關聯陣列鍵值"
 
-#: arrayfunc.c:580
+#: arrayfunc.c:588
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: 無法指派為非數字的索引"
 
-#: arrayfunc.c:625
+#: arrayfunc.c:633
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
 msgstr "%s: %s: 指派為關聯陣列時必須使用下標"
 
-#: bashhist.c:421
+#: bashhist.c:451
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: 無法建立: %s"
 
-#: bashline.c:4091
+#: bashline.c:4144
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: 無法為命令找到鍵對映"
 
-#: bashline.c:4189
+#: bashline.c:4254
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: 第一個非空字元不是「\"」"
 
-#: bashline.c:4218
+#: bashline.c:4283
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "%2$s 中沒有閉合的「%1$c」"
 
-#: bashline.c:4252
+#: bashline.c:4317
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: 缺少冒號分隔符"
 
-#: braces.c:329
+#: braces.c:331
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "大括號展開: 無法為 %s 分配記憶體"
 
-#: braces.c:427
+#: braces.c:429
 #, c-format
-msgid "brace expansion: failed to allocate memory for %d elements"
-msgstr "大括號展開: 為 %d 個元素分配記憶體失敗"
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "大括號展開: 為 %u 個元素分配記憶體失敗"
 
-#: braces.c:471
+#: braces.c:474
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "大括號展開: 為「%s」分配記憶體失敗"
 
-#: builtins/alias.def:133
+#: builtins/alias.def:131 variables.c:1842
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "「%s」: 無效的別名"
 
-#: builtins/bind.def:123 builtins/bind.def:126
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
 msgstr "未啟用列編輯"
 
-#: builtins/bind.def:213
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "「%s」: 無效的鍵對映名"
 
-#: builtins/bind.def:253
+#: builtins/bind.def:252
 #, c-format
 msgid "%s: cannot read: %s"
 msgstr "%s:不能讀取: %s"
 
-#: builtins/bind.def:270
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "「%s」: 無法解除繫結"
-
-#: builtins/bind.def:308 builtins/bind.def:338
+#: builtins/bind.def:304 builtins/bind.def:334
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "「%s」:不明函數名稱"
 
-#: builtins/bind.def:316
+#: builtins/bind.def:312
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s 未與任何鍵繫結。\n"
 
-#: builtins/bind.def:320
+#: builtins/bind.def:316
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s 可以被呼叫,藉由"
 
-#: builtins/break.def:79 builtins/break.def:121
+#: builtins/bind.def:353 builtins/bind.def:368
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "「%s」: 無法解除繫結"
+
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "迴圈計數"
 
-#: builtins/break.def:141
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "僅在「for」,「while」, 或者「until」迴圈中有意義"
 
@@ -145,234 +148,233 @@ msgstr ""
 "    \n"
 "    不帶 EXPR 時,回傳"
 
-#: builtins/cd.def:321
+#: builtins/cd.def:326
 msgid "HOME not set"
 msgstr "HOME 沒有設置"
 
-#: builtins/cd.def:329 builtins/common.c:167 test.c:885
+#: builtins/cd.def:334 builtins/common.c:161 test.c:891
 msgid "too many arguments"
 msgstr "太多引數"
 
-#: builtins/cd.def:336
-#, fuzzy
+#: builtins/cd.def:341
 msgid "null directory"
-msgstr "ç\84¡å\85¶ä»\96目錄"
+msgstr "空ç\9a\84目錄"
 
-#: builtins/cd.def:347
+#: builtins/cd.def:352
 msgid "OLDPWD not set"
 msgstr "OLDPWD 沒有設置"
 
-#: builtins/common.c:102
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "第 %d 列:"
 
-#: builtins/common.c:140 error.c:265
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "警告:"
 
-#: builtins/common.c:154
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: 用法:"
 
-#: builtins/common.c:199 shell.c:514 shell.c:825
+#: builtins/common.c:193 shell.c:510 shell.c:838
 #, c-format
 msgid "%s: option requires an argument"
 msgstr "%s:選項需要一個引數"
 
-#: builtins/common.c:206
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s:需要數字引數"
 
-#: builtins/common.c:213
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s:沒有找到"
 
-#: builtins/common.c:222 shell.c:838
+#: builtins/common.c:216 shell.c:851
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s:無效選項"
 
-#: builtins/common.c:229
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s:無效選項名稱"
 
-#: builtins/common.c:236 general.c:293 general.c:298
+#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "「%s」:不是一個有效的識別符"
 
-#: builtins/common.c:246
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "無效的八進位數字"
 
-#: builtins/common.c:248
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "無效的十六進位數字"
 
-#: builtins/common.c:250 expr.c:1473
+#: builtins/common.c:244 expr.c:1564
 msgid "invalid number"
 msgstr "無效數字"
 
-#: builtins/common.c:258
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s:無效的信號規格"
 
-#: builtins/common.c:265
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "「%s」:不是一個 pid 或有效的工作規格"
 
-#: builtins/common.c:272 error.c:511
+#: builtins/common.c:266 error.c:510
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s:唯讀的變數"
 
-#: builtins/common.c:280
+#: builtins/common.c:274
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s:%s 超出範圍"
 
-#: builtins/common.c:280 builtins/common.c:282
+#: builtins/common.c:274 builtins/common.c:276
 msgid "argument"
 msgstr "引數"
 
-#: builtins/common.c:282
+#: builtins/common.c:276
 #, c-format
 msgid "%s out of range"
 msgstr "%s 超出範圍"
 
-#: builtins/common.c:290
+#: builtins/common.c:284
 #, c-format
 msgid "%s: no such job"
 msgstr "%s:沒有此類工作"
 
-#: builtins/common.c:298
+#: builtins/common.c:292
 #, c-format
 msgid "%s: no job control"
 msgstr "%s:沒有工作控制"
 
-#: builtins/common.c:300
+#: builtins/common.c:294
 msgid "no job control"
 msgstr "沒有工作控制"
 
-#: builtins/common.c:310
+#: builtins/common.c:304
 #, c-format
 msgid "%s: restricted"
 msgstr "%s:受限的"
 
-#: builtins/common.c:312
+#: builtins/common.c:306
 msgid "restricted"
 msgstr "受限的"
 
-#: builtins/common.c:320
+#: builtins/common.c:314
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s:不是一個內建 shell"
 
-#: builtins/common.c:329
+#: builtins/common.c:323
 #, c-format
 msgid "write error: %s"
 msgstr "寫入錯誤: %s"
 
-#: builtins/common.c:337
+#: builtins/common.c:331
 #, c-format
 msgid "error setting terminal attributes: %s"
 msgstr "設定終端屬性時出錯: %s"
 
-#: builtins/common.c:339
+#: builtins/common.c:333
 #, c-format
 msgid "error getting terminal attributes: %s"
 msgstr "獲取終端屬性時出錯: %s"
 
-#: builtins/common.c:585
+#: builtins/common.c:579
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s:錯誤檢索當前目錄: %s: %s\n"
 
-#: builtins/common.c:651 builtins/common.c:653
+#: builtins/common.c:645 builtins/common.c:647
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s:模稜兩可的工作規格"
 
-#: builtins/common.c:918
+#: builtins/common.c:908
 msgid "help not available in this version"
-msgstr ""
+msgstr "這個版本沒有可用的說明"
 
-#: builtins/complete.def:278
+#: builtins/complete.def:281
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s:無效的功能名稱"
 
-#: builtins/complete.def:452 builtins/complete.def:647
-#: builtins/complete.def:858
+#: builtins/complete.def:474 builtins/complete.def:679
+#: builtins/complete.def:910
 #, c-format
 msgid "%s: no completion specification"
 msgstr "%s:沒有完成的規格"
 
-#: builtins/complete.def:699
+#: builtins/complete.def:733
 msgid "warning: -F option may not work as you expect"
 msgstr "警告: -F 選項可能無法按預期工作"
 
-#: builtins/complete.def:701
+#: builtins/complete.def:735
 msgid "warning: -C option may not work as you expect"
 msgstr "警告: -C 選項可能無法按預期工作"
 
-#: builtins/complete.def:831
+#: builtins/complete.def:883
 msgid "not currently executing completion function"
 msgstr "當前未執行補完功能"
 
-#: builtins/declare.def:127
+#: builtins/declare.def:132
 msgid "can only be used in a function"
 msgstr "只能用在函數中"
 
-#: builtins/declare.def:332 builtins/declare.def:685
+#: builtins/declare.def:369 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
 msgstr "%s: 引用變數不能為陣列"
 
-#: builtins/declare.def:343 variables.c:2959
+#: builtins/declare.def:380 variables.c:3363
 #, c-format
 msgid "%s: nameref variable self references not allowed"
 msgstr "%s: 不允許名稱引用變數引用自身"
 
-#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889
-#: variables.c:2956
+#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
+#: variables.c:3360
 #, c-format
 msgid "%s: circular name reference"
 msgstr "%s: 迴圈變數名引用"
 
-#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
 msgid "`%s': invalid variable name for name reference"
-msgstr "%s: 無效的引用變數名"
+msgstr "「%s」:無效的引用變數名"
 
-#: builtins/declare.def:463
+#: builtins/declare.def:520
 msgid "cannot use `-f' to make functions"
 msgstr "無法用「-f」生成函數"
 
-#: builtins/declare.def:475 execute_cmd.c:5632
+#: builtins/declare.def:532 execute_cmd.c:5852
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s:唯讀函數"
 
-#: builtins/declare.def:753
+#: builtins/declare.def:824
 #, c-format
 msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgstr "%s:不建議使用引用的複合陣列指定"
 
-#: builtins/declare.def:767
+#: builtins/declare.def:838
 #, c-format
 msgid "%s: cannot destroy array variables in this way"
 msgstr "%s: 無法以這種方式銷毀陣列變數"
 
-#: builtins/declare.def:774 builtins/read.def:751
+#: builtins/declare.def:845 builtins/read.def:788
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
 msgstr "%s: 無法將關聯陣列轉化為索引陣列"
@@ -394,7 +396,7 @@ msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s"
 #: builtins/enable.def:387
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "為 %s 載入函式時回傳錯誤 (%d):尚未載入"
 
 #: builtins/enable.def:512
 #, c-format
@@ -406,68 +408,68 @@ msgstr "%s: 未以動態方式載入"
 msgid "%s: cannot delete: %s"
 msgstr "%s: 無法刪除: %s"
 
-#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472
+#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: 是一個目錄"
 
-#: builtins/evalfile.c:150
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: 不是常規檔案"
 
-#: builtins/evalfile.c:159
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: 檔案太大"
 
-#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: 無法執行二進位檔案"
 
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235
+#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
 #, c-format
 msgid "%s: cannot execute: %s"
 msgstr "%s: 無法執行: %s"
 
-#: builtins/exit.def:67
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "登出\n"
 
-#: builtins/exit.def:92
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "不是登入 shell: 使用「exit」"
 
-#: builtins/exit.def:124
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "有停止的工作。\n"
 
-#: builtins/exit.def:126
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "有執行中的工作。\n"
 
-#: builtins/fc.def:269
+#: builtins/fc.def:265
 msgid "no command found"
 msgstr "未找到命令"
 
-#: builtins/fc.def:327 builtins/fc.def:376
+#: builtins/fc.def:323 builtins/fc.def:372
 msgid "history specification"
 msgstr "歷史記錄規格"
 
-#: builtins/fc.def:397
+#: builtins/fc.def:393
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: 無法開啟臨時檔案: %s"
 
-#: builtins/fg_bg.def:153 builtins/jobs.def:284
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "當前"
 
-#: builtins/fg_bg.def:162
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "在不帶工作控制的情況下啟動了工作 %d"
@@ -482,39 +484,38 @@ msgstr "%s: 非法選項 -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: 選項需要一個引數 -- %c\n"
 
-#: builtins/hash.def:92
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "已停用雜湊"
 
-#: builtins/hash.def:139
+#: builtins/hash.def:138
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: 雜湊表為空\n"
 
-#: builtins/hash.def:254
+#: builtins/hash.def:266
 #, c-format
 msgid "hits\tcommand\n"
 msgstr "命中\t命令\n"
 
-#: builtins/help.def:135
-#, c-format
+#: builtins/help.def:133
 msgid "Shell commands matching keyword `"
 msgid_plural "Shell commands matching keywords `"
 msgstr[0] "Shell 命令,匹配關鍵詞 `"
 
-#: builtins/help.def:187
+#: builtins/help.def:185
 #, c-format
 msgid ""
 "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
 msgstr ""
 "沒有與「%s」匹配的說明主題。嘗試「help help」或「man -k %s」或「info %s」。"
 
-#: builtins/help.def:226
+#: builtins/help.def:224
 #, c-format
 msgid "%s: cannot open: %s"
 msgstr "%s: 無法開啟: %s"
 
-#: builtins/help.def:526
+#: builtins/help.def:524
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -533,20 +534,21 @@ msgstr ""
 "名稱旁邊的星號(*)表示該命令被停用。\n"
 "\n"
 
-#: builtins/history.def:155
+#: builtins/history.def:154
 msgid "cannot use more than one of -anrw"
 msgstr "最多能使用 -anrw 選項之一"
 
-#: builtins/history.def:187
+#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
+#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
 msgid "history position"
 msgstr "歷史記錄位置"
 
-#: builtins/history.def:264
-#, fuzzy, c-format
+#: builtins/history.def:331
+#, c-format
 msgid "%s: invalid timestamp"
-msgstr "%s: 無效引數"
+msgstr "%s:無效時間戳"
 
-#: builtins/history.def:375
+#: builtins/history.def:442
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: 歷史記錄擴充套件失敗"
@@ -560,16 +562,16 @@ msgstr "%s: inlib 失敗"
 msgid "no other options allowed with `-x'"
 msgstr "其他選項不能與「-x」同時使用"
 
-#: builtins/kill.def:202
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: 引數必須是行程或工作 ID"
 
-#: builtins/kill.def:265
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "不明錯誤"
 
-#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598
+#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
 msgid "expression expected"
 msgstr "需要表示式"
 
@@ -578,69 +580,69 @@ msgstr "需要表示式"
 msgid "%s: not an indexed array"
 msgstr "%s: 不是一個索引陣列"
 
-#: builtins/mapfile.def:272 builtins/read.def:306
+#: builtins/mapfile.def:271 builtins/read.def:307
 #, c-format
 msgid "%s: invalid file descriptor specification"
 msgstr "%s: 無效的檔案描述符規格"
 
-#: builtins/mapfile.def:280 builtins/read.def:313
+#: builtins/mapfile.def:279 builtins/read.def:314
 #, c-format
 msgid "%d: invalid file descriptor: %s"
 msgstr "%d: 無效的檔案描述符: %s"
 
-#: builtins/mapfile.def:289 builtins/mapfile.def:327
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
 #, c-format
 msgid "%s: invalid line count"
 msgstr "%s: 無效的列數"
 
-#: builtins/mapfile.def:300
+#: builtins/mapfile.def:299
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: 無效的陣列原點"
 
-#: builtins/mapfile.def:317
+#: builtins/mapfile.def:316
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: 無效的回呼定量"
 
-#: builtins/mapfile.def:350
+#: builtins/mapfile.def:349
 msgid "empty array variable name"
 msgstr "空陣列變數名"
 
-#: builtins/mapfile.def:371
+#: builtins/mapfile.def:370
 msgid "array variable support required"
 msgstr "需要陣列變數支援"
 
-#: builtins/printf.def:412
+#: builtins/printf.def:420
 #, c-format
 msgid "`%s': missing format character"
 msgstr "「%s」: 缺少格式字元"
 
-#: builtins/printf.def:467
+#: builtins/printf.def:475
 #, c-format
 msgid "`%c': invalid time format specification"
 msgstr "「%c」: 無效的時間格式規格"
 
-#: builtins/printf.def:669
+#: builtins/printf.def:677
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "「%c」: 無效格式字元"
 
-#: builtins/printf.def:695
+#: builtins/printf.def:703
 #, c-format
 msgid "warning: %s: %s"
 msgstr "警告: %s: %s"
 
-#: builtins/printf.def:781
+#: builtins/printf.def:789
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "格式解析問題: %s"
 
-#: builtins/printf.def:878
+#: builtins/printf.def:886
 msgid "missing hex digit for \\x"
 msgstr "使用了 \\x 但缺少十六進位數字"
 
-#: builtins/printf.def:893
+#: builtins/printf.def:901
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "使用了 \\%c 但缺少萬國碼數字"
@@ -654,19 +656,19 @@ msgstr "無其他目錄"
 msgid "%s: invalid argument"
 msgstr "%s: 無效引數"
 
-#: builtins/pushd.def:475
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<無當前目錄>"
 
-#: builtins/pushd.def:519
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "目錄堆疊為空"
 
-#: builtins/pushd.def:521
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "目錄堆疊索引"
 
-#: builtins/pushd.def:696
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -708,7 +710,7 @@ msgstr ""
 "      -N\t以 dirs 不帶選項輸出的順序,從右起第 N 個項目顯示列表,\n"
 "\t從 0 開始。"
 
-#: builtins/pushd.def:718
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -754,7 +756,7 @@ msgstr ""
 "    \n"
 "   「dirs」內建命令顯示目錄堆疊。"
 
-#: builtins/pushd.def:743
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -797,62 +799,62 @@ msgstr ""
 msgid "%s: invalid timeout specification"
 msgstr "%s: 無效的逾時規格"
 
-#: builtins/read.def:696
+#: builtins/read.def:733
 #, c-format
 msgid "read error: %d: %s"
 msgstr "讀取錯誤: %d: %s"
 
-#: builtins/return.def:71
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "只能從函數或者原始指令稿「return」"
 
-#: builtins/set.def:841
+#: builtins/set.def:852
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "無法同時取消設定一個函數和一個變數"
 
-#: builtins/set.def:888
+#: builtins/set.def:904
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: 無法取消設定"
 
-#: builtins/set.def:909 variables.c:3389
+#: builtins/set.def:925 variables.c:3813
 #, c-format
 msgid "%s: cannot unset: readonly %s"
 msgstr "%s: 無法取消設定: 唯讀 %s"
 
-#: builtins/set.def:922
+#: builtins/set.def:938
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: 不是陣列變數"
 
-#: builtins/setattr.def:191
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: 不是函數"
 
-#: builtins/setattr.def:196
-#, fuzzy, c-format
+#: builtins/setattr.def:194
+#, c-format
 msgid "%s: cannot export"
-msgstr "%s: 無法取消設定"
+msgstr "%s:無法會出"
 
 #: builtins/shift.def:73 builtins/shift.def:79
 msgid "shift count"
 msgstr "位移計數"
 
-#: builtins/shopt.def:289
+#: builtins/shopt.def:310
 msgid "cannot set and unset shell options simultaneously"
 msgstr "無法同時設定和取消設定 shell 選項"
 
-#: builtins/shopt.def:391
+#: builtins/shopt.def:420
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: 無效的 shell 選項名稱"
 
-#: builtins/source.def:131
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "需要檔名引數"
 
-#: builtins/source.def:157
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: 檔案未找到"
@@ -865,61 +867,61 @@ msgstr "無法懸置"
 msgid "cannot suspend a login shell"
 msgstr "無法將登入 shell 懸置"
 
-#: builtins/type.def:236
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s 是「%s」的別名\n"
 
-#: builtins/type.def:257
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s 是 shell 關鍵字\n"
 
-#: builtins/type.def:276
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s 是一個函數\n"
 
-#: builtins/type.def:300
-#, fuzzy, c-format
+#: builtins/type.def:299
+#, c-format
 msgid "%s is a special shell builtin\n"
-msgstr "%s 是 shell 內建\n"
+msgstr "%s 是特別的 shell 內建\n"
 
-#: builtins/type.def:302
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s 是 shell 內建\n"
 
-#: builtins/type.def:324 builtins/type.def:409
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s 是 %s\n"
 
-#: builtins/type.def:344
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s 已進行雜湊操作(%s)\n"
 
-#: builtins/ulimit.def:398
+#: builtins/ulimit.def:396
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: 無效的 limit 引數"
 
-#: builtins/ulimit.def:424
+#: builtins/ulimit.def:422
 #, c-format
 msgid "`%c': bad command"
 msgstr "「%c」:不當的命令"
 
-#: builtins/ulimit.def:453
+#: builtins/ulimit.def:451
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr "%s:不能得到 limit: %s"
 
-#: builtins/ulimit.def:479
+#: builtins/ulimit.def:477
 msgid "limit"
 msgstr "limit"
 
-#: builtins/ulimit.def:491 builtins/ulimit.def:791
+#: builtins/ulimit.def:489 builtins/ulimit.def:789
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr "%s:不能修改 limit: %s"
@@ -938,357 +940,365 @@ msgstr "「%c」: 無效的符號狀態運算子"
 msgid "`%c': invalid symbolic mode character"
 msgstr "「%c」: 無效的符號狀態字元"
 
-#: error.c:90 error.c:348 error.c:350 error.c:352
+#: error.c:89 error.c:347 error.c:349 error.c:351
 msgid " line "
 msgstr " 列 "
 
-#: error.c:165
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "最後的命令: %s\n"
 
-#: error.c:173
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "中止…"
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:288
+#: error.c:287
 #, c-format
 msgid "INFORM: "
-msgstr ""
+msgstr "通知:"
 
-#: error.c:463
+#: error.c:462
 msgid "unknown command error"
 msgstr "不明命令錯誤"
 
-#: error.c:464
+#: error.c:463
 msgid "bad command type"
 msgstr "不當的命令類型"
 
-#: error.c:465
+#: error.c:464
 msgid "bad connector"
 msgstr "不當的連接器"
 
-#: error.c:466
+#: error.c:465
 msgid "bad jump"
 msgstr "錯誤的跳轉"
 
-#: error.c:504
+#: error.c:503
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: 未繫結的變數"
 
-#: eval.c:209
+#: eval.c:245
 #, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\a 等待輸入逾時:自動登出\n"
 
-#: execute_cmd.c:527
+#: execute_cmd.c:536
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "無法從 /dev/null 重定向標準輸入: %s"
 
-#: execute_cmd.c:1275
+#: execute_cmd.c:1306
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "時間格式:「%c」: 無效的格式字元"
 
-#: execute_cmd.c:2273
+#: execute_cmd.c:2361
 #, c-format
 msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc:coproc [%d:%s] 仍然存在"
 
-#: execute_cmd.c:2377
+#: execute_cmd.c:2485
 msgid "pipe error"
 msgstr "管道錯誤"
 
-#: execute_cmd.c:4496
-#, fuzzy, c-format
+#: execute_cmd.c:4671
+#, c-format
 msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: 超出最大函數巢狀層數 (%d)"
+msgstr "eval:超出最大 eval 巢狀層數 (%d)"
 
-#: execute_cmd.c:4508
-#, fuzzy, c-format
+#: execute_cmd.c:4683
+#, c-format
 msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: 超出最大函數巢狀層數 (%d)"
+msgstr "%s: 超出最大來源巢狀層數 (%d)"
 
-#: execute_cmd.c:4616
+#: execute_cmd.c:4791
 #, c-format
 msgid "%s: maximum function nesting level exceeded (%d)"
 msgstr "%s: 超出最大函數巢狀層數 (%d)"
 
-#: execute_cmd.c:5144
+#: execute_cmd.c:5340
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: 受限的: 無法在命令名稱中使用「/」"
 
-#: execute_cmd.c:5232
+#: execute_cmd.c:5438
 #, c-format
 msgid "%s: command not found"
 msgstr "%s:命令找不到"
 
-#: execute_cmd.c:5470
+#: execute_cmd.c:5682
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: execute_cmd.c:5508
+#: execute_cmd.c:5720
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: 不當的直譯器"
 
-#: execute_cmd.c:5545
+#: execute_cmd.c:5757
 #, c-format
 msgid "%s: cannot execute binary file: %s"
 msgstr "%s: 無法執行二進位檔案: %s"
 
-#: execute_cmd.c:5623
+#: execute_cmd.c:5843
 #, c-format
 msgid "`%s': is a special builtin"
 msgstr "「%s」: 特殊內建"
 
-#: execute_cmd.c:5675
+#: execute_cmd.c:5895
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "無法複製檔案描述符 %d 到檔案描述符 %d"
 
-#: expr.c:259
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "表示式遞迴層次超出範圍"
 
-#: expr.c:283
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "遞迴堆疊下限溢位"
 
-#: expr.c:431
+#: expr.c:477
 msgid "syntax error in expression"
 msgstr "表示式語法錯誤"
 
-#: expr.c:475
+#: expr.c:521
 msgid "attempted assignment to non-variable"
 msgstr "嘗試指派給非變數"
 
-#: expr.c:495 expr.c:858
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "變數定義語法錯誤"
+
+#: expr.c:544 expr.c:910
 msgid "division by 0"
 msgstr "除 0"
 
-#: expr.c:542
+#: expr.c:591
 msgid "bug: bad expassign token"
 msgstr "錯誤:不當的表示式字組"
 
-#: expr.c:595
+#: expr.c:645
 msgid "`:' expected for conditional expression"
 msgstr "條件表示式需要「:」"
 
-#: expr.c:919
+#: expr.c:971
 msgid "exponent less than 0"
 msgstr "指數小於 0"
 
-#: expr.c:976
+#: expr.c:1028
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "預增符或預減符後應跟有標識符"
 
-#: expr.c:1002
+#: expr.c:1055
 msgid "missing `)'"
 msgstr "缺少「)」"
 
-#: expr.c:1053 expr.c:1393
+#: expr.c:1106 expr.c:1484
 msgid "syntax error: operand expected"
 msgstr "語法錯誤: 需要運算元"
 
-#: expr.c:1395
+#: expr.c:1486
 msgid "syntax error: invalid arithmetic operator"
 msgstr "語法錯誤: 無效的算術運算子"
 
-#: expr.c:1419
+#: expr.c:1510
 #, c-format
 msgid "%s%s%s: %s (error token is \"%s\")"
 msgstr "%s%s%s: %s (錯誤字組是「%s」)"
 
-#: expr.c:1477
+#: expr.c:1568
 msgid "invalid arithmetic base"
 msgstr "無效的算術進位"
 
-#: expr.c:1497
+#: expr.c:1588
 msgid "value too great for base"
 msgstr "數值太大不可為算術進位的基底"
 
-#: expr.c:1546
+#: expr.c:1637
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: 表示式錯誤\n"
 
-#: general.c:68
+#: general.c:69
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: 無法訪問上層目錄"
 
-#: input.c:102 subst.c:5858
+#: input.c:99 subst.c:5930
 #, c-format
 msgid "cannot reset nodelay mode for fd %d"
 msgstr "無法為檔案描述符 %d 重置無延遲模式"
 
-#: input.c:271
+#: input.c:266
 #, c-format
 msgid "cannot allocate new file descriptor for bash input from fd %d"
 msgstr "無法從檔案描述符 %d 為 bash 的輸入獲取一個新的檔案描述符"
 
-#: input.c:279
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區"
 
-#: jobs.c:527
+#: jobs.c:529
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: 行程群組管道"
 
-#: jobs.c:1035
+#: jobs.c:1084
 #, c-format
 msgid "forked pid %d appears in running job %d"
 msgstr "生成的行程識別號 %d 顯示為執行中的工作 %d"
 
-#: jobs.c:1154
+#: jobs.c:1203
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "刪除行程群組 %2$ld 中已停止的工作 %1$d"
 
-#: jobs.c:1258
+#: jobs.c:1307
 #, c-format
 msgid "add_process: process %5ld (%s) in the_pipeline"
 msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline"
 
-#: jobs.c:1261
+#: jobs.c:1310
 #, c-format
 msgid "add_process: pid %5ld (%s) marked as still alive"
 msgstr "add_process: 行程識別號 %5ld(%s) 標註為仍活著"
 
-#: jobs.c:1590
+#: jobs.c:1639
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: 無此行程識別號"
 
-#: jobs.c:1605
+#: jobs.c:1654
 #, c-format
 msgid "Signal %d"
 msgstr "訊號 %d"
 
-#: jobs.c:1619 jobs.c:1645
+#: jobs.c:1668 jobs.c:1694
 msgid "Done"
 msgstr "已完成"
 
-#: jobs.c:1624 siglist.c:123
+#: jobs.c:1673 siglist.c:123
 msgid "Stopped"
 msgstr "已停止"
 
-#: jobs.c:1628
+#: jobs.c:1677
 #, c-format
 msgid "Stopped(%s)"
 msgstr "已停止(%s)"
 
-#: jobs.c:1632
+#: jobs.c:1681
 msgid "Running"
 msgstr "執行中"
 
-#: jobs.c:1649
+#: jobs.c:1698
 #, c-format
 msgid "Done(%d)"
 msgstr "已完成(%d)"
 
-#: jobs.c:1651
+#: jobs.c:1700
 #, c-format
 msgid "Exit %d"
 msgstr "退出 %d"
 
-#: jobs.c:1654
+#: jobs.c:1703
 msgid "Unknown status"
 msgstr "不明狀態"
 
-#: jobs.c:1741
+#: jobs.c:1790
 #, c-format
 msgid "(core dumped) "
 msgstr "(核心已傾印)"
 
-#: jobs.c:1760
+#: jobs.c:1809
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (工作目錄: %s)"
 
-#: jobs.c:1985
+#: jobs.c:2037
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "子行程 setpgid (%ld 到 %ld)"
 
-#: jobs.c:2347 nojobs.c:654
+#: jobs.c:2399 nojobs.c:657
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: 行程識別號 %ld 不是當前 shell 的子行程"
 
-#: jobs.c:2602
+#: jobs.c:2695
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wiat_for: 沒有行程 %ld 的記錄"
 
-#: jobs.c:2929
+#: jobs.c:3055
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: 工作 %d 已停止"
 
-#: jobs.c:3221
+#: jobs.c:3362
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: 工作已經終止"
 
-#: jobs.c:3230
+#: jobs.c:3371
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: 工作 %d 已在背景執行"
 
-#: jobs.c:3455
+#: jobs.c:3597
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: 開啟 WNOHANG 以避免無限阻塞"
 
-#: jobs.c:3970
+#: jobs.c:4120
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: 第 %d 列:"
 
-#: jobs.c:3984 nojobs.c:897
+#: jobs.c:4134 nojobs.c:900
 #, c-format
 msgid " (core dumped)"
 msgstr " (核心已傾印)"
 
-#: jobs.c:3996 jobs.c:4009
+#: jobs.c:4146 jobs.c:4159
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(當前工作目錄:%s)\n"
 
-#: jobs.c:4041
+#: jobs.c:4191
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp 失敗"
 
-#: jobs.c:4104
+#: jobs.c:4247
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control:背景中沒有工作控制"
+
+#: jobs.c:4263
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: 列規律"
 
-#: jobs.c:4114
+#: jobs.c:4273
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4135 jobs.c:4144
+#: jobs.c:4294 jobs.c:4303
 #, c-format
 msgid "cannot set terminal process group (%d)"
 msgstr "無法設定終端行程群組(%d)"
 
-#: jobs.c:4149
+#: jobs.c:4308
 msgid "no job control in this shell"
 msgstr "此 shell 中無工作控制"
 
-#: lib/malloc/malloc.c:296
+#: lib/malloc/malloc.c:331
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: 主張失敗: %s\n"
 
-#: lib/malloc/malloc.c:312
+#: lib/malloc/malloc.c:347
 #, c-format
 msgid ""
 "\r\n"
@@ -1297,39 +1307,39 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: 主張已修補\r\n"
 
-#: lib/malloc/malloc.c:313
+#: lib/malloc/malloc.c:348
 msgid "unknown"
 msgstr "不明"
 
-#: lib/malloc/malloc.c:801
+#: lib/malloc/malloc.c:855
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: 空閒串列中的區塊損壞"
 
-#: lib/malloc/malloc.c:878
+#: lib/malloc/malloc.c:932
 msgid "free: called with already freed block argument"
 msgstr "free: 用已經釋放的區塊做為呼叫引數"
 
-#: lib/malloc/malloc.c:881
+#: lib/malloc/malloc.c:935
 msgid "free: called with unallocated block argument"
 msgstr "free: 用未分配的區塊做為呼叫引數"
 
-#: lib/malloc/malloc.c:900
+#: lib/malloc/malloc.c:954
 msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: 檢測到下限溢位;mh_nbytes 超出範圍"
 
-#: lib/malloc/malloc.c:906
+#: lib/malloc/malloc.c:960
 msgid "free: start and end chunk sizes differ"
 msgstr "free: 啟始和末尾區塊大小不一致"
 
-#: lib/malloc/malloc.c:1005
+#: lib/malloc/malloc.c:1070
 msgid "realloc: called with unallocated block argument"
 msgstr "realloc: 用未分配的區塊做為呼叫引數"
 
-#: lib/malloc/malloc.c:1020
+#: lib/malloc/malloc.c:1085
 msgid "realloc: underflow detected; mh_nbytes out of range"
 msgstr "realloc: 檢測到下限溢位;mh_nbytes 超出範圍"
 
-#: lib/malloc/malloc.c:1026
+#: lib/malloc/malloc.c:1091
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: 啟始和末尾區塊大小不一致"
 
@@ -1371,22 +1381,22 @@ msgstr "%s:不當的網路路徑規格"
 msgid "network operations not supported"
 msgstr "不支持網路操作"
 
-#: locale.c:200
+#: locale.c:205
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s)"
 msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s)"
 
-#: locale.c:202
+#: locale.c:207
 #, c-format
 msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
 msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s): %s"
 
-#: locale.c:259
+#: locale.c:272
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: 無法變更語區選項 (%s)"
 
-#: locale.c:261
+#: locale.c:274
 #, c-format
 msgid "setlocale: %s: cannot change locale (%s): %s"
 msgstr "setlocale: %s: 無法變更語區選項 (%s): %s"
@@ -1404,150 +1414,150 @@ msgstr "您有新郵件在 $_"
 msgid "The mail in %s has been read\n"
 msgstr "郵件在 %s 已閱讀\n"
 
-#: make_cmd.c:329
+#: make_cmd.c:317
 msgid "syntax error: arithmetic expression required"
 msgstr "語法錯誤:需要算式"
 
-#: make_cmd.c:331
+#: make_cmd.c:319
 msgid "syntax error: `;' unexpected"
 msgstr "語法錯誤:「;」意外"
 
-#: make_cmd.c:332
+#: make_cmd.c:320
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "語法錯誤:「((%s))」"
 
-#: make_cmd.c:584
+#: make_cmd.c:572
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document:不當的指示類型 %d"
 
-#: make_cmd.c:669
+#: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
 msgstr "立即文件在第 %d 列被檔案結束符分隔 (需要「%s」)"
 
-#: make_cmd.c:768
+#: make_cmd.c:756
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection:重新導向指示「%d」超出範圍"
 
-#: parse.y:2324
+#: parse.y:2380
 #, c-format
 msgid ""
 "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
 "truncated"
-msgstr ""
+msgstr "shell_getc: shell_input_line_size (%zu) 超過 SIZE_MAX (%lu):列被截斷"
 
-#: parse.y:2700
+#: parse.y:2786
 msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "超過此處檔案上限最大值"
 
-#: parse.y:3390 parse.y:3748
+#: parse.y:3536 parse.y:3906
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr "尋找匹配的「%c」時遇到了未預期的檔案結束符"
 
-#: parse.y:4410
+#: parse.y:4606
 msgid "unexpected EOF while looking for `]]'"
 msgstr "尋找「]]」時遇到了未預期的檔案結束符"
 
-#: parse.y:4415
+#: parse.y:4611
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr "條件表示式中有語法錯誤: 未預期的字組「%s」"
 
-#: parse.y:4419
+#: parse.y:4615
 msgid "syntax error in conditional expression"
 msgstr "語法錯誤,在有條件的表示式"
 
-#: parse.y:4497
+#: parse.y:4693
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "未預期的字組「%s」,需要「)」"
 
-#: parse.y:4501
+#: parse.y:4697
 msgid "expected `)'"
 msgstr "預期「)」"
 
-#: parse.y:4529
+#: parse.y:4725
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "一元條件運算子使用了未預期的引數「%s」"
 
-#: parse.y:4533
+#: parse.y:4729
 msgid "unexpected argument to conditional unary operator"
 msgstr "一元條件運算子使用了未預期的引數"
 
-#: parse.y:4579
+#: parse.y:4775
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr "未預期的字組「%s」,需要二元條件運算子"
 
-#: parse.y:4583
+#: parse.y:4779
 msgid "conditional binary operator expected"
 msgstr "需要二元條件運算子"
 
-#: parse.y:4605
+#: parse.y:4801
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "二元條件運算子使用了未預期的引數「%s」"
 
-#: parse.y:4609
+#: parse.y:4805
 msgid "unexpected argument to conditional binary operator"
 msgstr "二元條件運算子使用了未預期的引數"
 
-#: parse.y:4620
+#: parse.y:4816
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "條件命令中有未預期的字組「%c」"
 
-#: parse.y:4623
+#: parse.y:4819
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "條件命令中有未預期的字組「%s」"
 
-#: parse.y:4627
+#: parse.y:4823
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "條件命令中有未預期的字組 %d"
 
-#: parse.y:5996
+#: parse.y:6245
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "未預期的字組「%s」附近有語法錯誤"
 
-#: parse.y:6014
+#: parse.y:6263
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "「%s」附近有語法錯誤"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error: unexpected end of file"
 msgstr "語法錯誤: 未預期的檔案結尾"
 
-#: parse.y:6024
+#: parse.y:6273
 msgid "syntax error"
 msgstr "語法錯誤"
 
-#: parse.y:6086
+#: parse.y:6335
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "使用「%s」退出 shell 。\n"
 
-#: parse.y:6248
+#: parse.y:6497
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "尋找匹配的「)」時遇到了未預期的檔案結束符"
 
-#: pcomplete.c:1126
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "補完: 未找到函數「%s」"
 
-#: pcomplete.c:1646
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion:%s:可能重試迴圈"
 
 #: pcomplib.c:182
 #, c-format
@@ -1573,90 +1583,94 @@ msgstr "xtrace_set: 空的檔案指標"
 msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
 msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
 
-#: print_cmd.c:1534
+#: print_cmd.c:1540
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf:「%c」: 無效的格式字元"
 
-#: redir.c:124 redir.c:171
+#: redir.c:121 redir.c:167
 msgid "file descriptor out of range"
 msgstr "檔案描述符超出範圍"
 
-#: redir.c:178
+#: redir.c:174
 #, c-format
 msgid "%s: ambiguous redirect"
 msgstr "%s: 模稜兩可的重定向"
 
-#: redir.c:182
+#: redir.c:178
 #, c-format
 msgid "%s: cannot overwrite existing file"
 msgstr "%s: 無法覆寫已存在的檔案"
 
-#: redir.c:187
+#: redir.c:183
 #, c-format
 msgid "%s: restricted: cannot redirect output"
 msgstr "%s: 受限的: 無法重定向輸出"
 
-#: redir.c:192
+#: redir.c:188
 #, c-format
 msgid "cannot create temp file for here-document: %s"
 msgstr "無法為立即文件建立臨時檔案: %s"
 
-#: redir.c:196
+#: redir.c:192
 #, c-format
 msgid "%s: cannot assign fd to variable"
 msgstr "%s: 無法將檔案描述符指派給變數"
 
-#: redir.c:586
+#: redir.c:591
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
 msgstr "沒有網路時不支援 /dev/(tcp|udp)/host/port"
 
-#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209
+#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
 msgid "redirection error: cannot duplicate fd"
 msgstr "重定向錯誤: 無法複製檔案描述符"
 
-#: shell.c:347
+#: shell.c:343
 msgid "could not find /tmp, please create!"
 msgstr "無法找到 /tmp ,請建立"
 
-#: shell.c:351
+#: shell.c:347
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp 必須為有效的目錄名稱"
 
-#: shell.c:927
+#: shell.c:798
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "已在互動式 shell 中忽略美化輸出模式"
+
+#: shell.c:940
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c:無效選項"
 
-#: shell.c:1282
-#, fuzzy, c-format
+#: shell.c:1299
+#, c-format
 msgid "cannot set uid to %d: effective uid %d"
-msgstr "無法為檔案描述符 %d 重置無延遲模式"
+msgstr "無法設定 UID 至 %d:有效的 UID %d"
 
-#: shell.c:1289
-#, fuzzy, c-format
+#: shell.c:1306
+#, c-format
 msgid "cannot set gid to %d: effective gid %d"
-msgstr "無法為檔案描述符 %d 重置無延遲模式"
+msgstr "無法設定 GID 至 %d:有效的 GID %d"
 
-#: shell.c:1458
+#: shell.c:1494
 msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "無法開啟偵錯器;偵錯模式已停用"
 
-#: shell.c:1566
-#, fuzzy, c-format
+#: shell.c:1608
+#, c-format
 msgid "%s: Is a directory"
 msgstr "%s: 是一個目錄"
 
-#: shell.c:1777
+#: shell.c:1826
 msgid "I have no name!"
 msgstr "我沒有名字!"
 
-#: shell.c:1930
+#: shell.c:1980
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash,版本 %s-(%s)\n"
 
-#: shell.c:1931
+#: shell.c:1981
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1665,49 +1679,49 @@ msgstr ""
 "用法:\t%s [GNU 長選項] [選項] …\n"
 "\t%s [GNU 長選項] [選項] 指令稿檔案 …\n"
 
-#: shell.c:1933
+#: shell.c:1983
 msgid "GNU long options:\n"
 msgstr "GNU 長選項:\n"
 
-#: shell.c:1937
+#: shell.c:1987
 msgid "Shell options:\n"
 msgstr "Shell 選項:\n"
 
-#: shell.c:1938
+#: shell.c:1988
 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD 或 -c <命令> 或 -O <shopt 選項>\t\t(僅適合呼叫)\n"
 
-#: shell.c:1953
+#: shell.c:2007
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s or -o 選項\n"
 
-#: shell.c:1959
+#: shell.c:2013
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "輸入「%s -c \"help set\"」更多關於 shell 選項的訊息。\n"
 
-#: shell.c:1960
+#: shell.c:2014
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "輸入「%s -c help」更多關於內建 shell 命令的訊息。\n"
 
-#: shell.c:1961
+#: shell.c:2015
 #, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "使用「bashbug」命令通報程式錯誤。\n"
 
-#: shell.c:1963
+#: shell.c:2017
 #, c-format
 msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "bash 官網:<http://www.gnu.org/software/bash>\n"
 
-#: shell.c:1964
+#: shell.c:2018
 #, c-format
 msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
+msgstr "GNU 軟體的常見使用說明:<http://www.gnu.org/gethelp/>\n"
 
-#: sig.c:707
+#: sig.c:730
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d:無效操作"
@@ -1881,103 +1895,107 @@ msgstr "不明訊號 #"
 msgid "Unknown Signal #%d"
 msgstr "不明訊號 #%d"
 
-#: subst.c:1445 subst.c:1608
+#: subst.c:1454 subst.c:1644
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "錯誤的替換: 在 %2$s 中沒有閉合的「%1$s」"
 
-#: subst.c:3154
+#: subst.c:3231
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: 無法將串列指派給陣列成員"
 
-#: subst.c:5740 subst.c:5756
+#: subst.c:5789 subst.c:5805
 msgid "cannot make pipe for process substitution"
 msgstr "無法為行程替換建立管道"
 
-#: subst.c:5798
+#: subst.c:5851
 msgid "cannot make child for process substitution"
 msgstr "無法為行程替換建立子行程"
 
-#: subst.c:5848
+#: subst.c:5920
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "無法開啟命名管道 %s 進 readline-"
 
-#: subst.c:5850
+#: subst.c:5922
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "無法開啟命名管道 %s 進行寫入"
 
-#: subst.c:5873
+#: subst.c:5945
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "無法將命名管道 %s 做為檔案描述符 %d 複製"
 
-#: subst.c:5959
-#, fuzzy
+#: subst.c:6062
 msgid "command substitution: ignored null byte in input"
-msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」"
+msgstr "指令替換:在輸入中忽略了空位元組"
 
-#: subst.c:6083
+#: subst.c:6190
 msgid "cannot make pipe for command substitution"
 msgstr "無法為命令替換建立管道"
 
-#: subst.c:6127
+#: subst.c:6233
 msgid "cannot make child for command substitution"
 msgstr "無法為命令替換建立子行程"
 
-#: subst.c:6153
+#: subst.c:6259
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: 無法將管道複製為檔案描述符 1"
 
-#: subst.c:6580 subst.c:8939
+#: subst.c:6710 subst.c:9623
 #, c-format
 msgid "%s: invalid variable name for name reference"
 msgstr "%s: 無效的引用變數名"
 
-#: subst.c:6666 subst.c:8351 subst.c:8371
+#: subst.c:6806 subst.c:6824 subst.c:6979
 #, c-format
-msgid "%s: bad substitution"
-msgstr "%s: 錯誤的替換"
-
-#: subst.c:6800
-#, fuzzy, c-format
 msgid "%s: invalid indirect expansion"
-msgstr "%s: 無效的列數"
+msgstr "%s: 無效的間接擴展"
 
-#: subst.c:6807
-#, fuzzy, c-format
+#: subst.c:6840 subst.c:6987
+#, c-format
 msgid "%s: invalid variable name"
-msgstr "「%s」: 無效的別名"
+msgstr "%s:無效的變數名稱"
+
+#: subst.c:7056
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s:參數未設定"
 
-#: subst.c:6854
+#: subst.c:7058
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: 參數為空或未設定"
 
-#: subst.c:7089 subst.c:7104
+#: subst.c:7295 subst.c:7310
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: 子串表示式 < 0"
 
-#: subst.c:8450
+#: subst.c:8973 subst.c:8994
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: 錯誤的替換"
+
+#: subst.c:9082
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: 無法如此指派"
 
-#: subst.c:8802
+#: subst.c:9485
 msgid ""
 "future versions of the shell will force evaluation as an arithmetic "
 "substitution"
 msgstr "未來版本的 shell 會強制以算術替換求值"
 
-#: subst.c:9349
+#: subst.c:10043
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」"
 
-#: subst.c:10298
+#: subst.c:11070
 #, c-format
 msgid "no match: %s"
 msgstr "無匹配: %s"
@@ -2000,114 +2018,118 @@ msgstr "需要「)」"
 msgid "`)' expected, found %s"
 msgstr "需要「)」,得到 %s"
 
-#: test.c:282 test.c:744 test.c:747
+#: test.c:282 test.c:750 test.c:753
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: 需要一元表示式"
 
-#: test.c:469 test.c:787
+#: test.c:469 test.c:793
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: 需要二元表示式"
 
-#: test.c:869
+#: test.c:875
 msgid "missing `]'"
 msgstr "缺少「]」"
 
-#: trap.c:224
+#: trap.c:216
 msgid "invalid signal number"
 msgstr "無效信號數字"
 
-#: trap.c:387
+#: trap.c:320
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "捕捉處理函式:達到最大捕捉處理函式等級 (%d)"
+
+#: trap.c:408
 #, c-format
 msgid "run_pending_traps: bad value in trap_list[%d]: %p"
 msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p"
 
-#: trap.c:391
+#: trap.c:412
 #, c-format
 msgid ""
 "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr "run_pending_traps: 信號處理是 SIG_DFL,resending %d (%s) to myself"
 
-#: trap.c:447
+#: trap.c:470
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler:不當的信號 %d"
 
-#: variables.c:409
+#: variables.c:412
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "錯誤,輸入的函數定義為「%s」"
 
-#: variables.c:814
+#: variables.c:821
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell 層次 (%d) 太高,重置為 1"
 
-#: variables.c:2413
+#: variables.c:2655
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: 當前作用域中沒有函數語境"
 
-#: variables.c:2432
+#: variables.c:2674
 #, c-format
 msgid "%s: variable may not be assigned value"
 msgstr "%s: 變數不可指派值"
 
-#: variables.c:3043
-#, fuzzy, c-format
+#: variables.c:3453
+#, c-format
 msgid "%s: assigning integer to name reference"
-msgstr "%s: 無效的引用變數名"
+msgstr "%s:指定數字至名稱參考"
 
-#: variables.c:3940
+#: variables.c:4365
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: 當前作用域中沒有函數語境"
 
-#: variables.c:4218
+#: variables.c:4698
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s 有空的 exportstr"
 
-#: variables.c:4223 variables.c:4232
+#: variables.c:4703 variables.c:4712
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "%2$s 的 exportstr 中有無效的字元 %1$d"
 
-#: variables.c:4238
+#: variables.c:4718
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "%s 的 exportstr 中沒有「=」"
 
-#: variables.c:4684
+#: variables.c:5243
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: shell_variables 的前端不是函數語境"
 
-#: variables.c:4697
+#: variables.c:5256
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: 沒有 global_variables 語境"
 
-#: variables.c:4772
+#: variables.c:5336
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: shell_variables 的前端不是臨時環境作用域"
 
-#: variables.c:5619
+#: variables.c:6272
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: 無法做為檔案開啟"
 
-#: variables.c:5624
+#: variables.c:6277
 #, c-format
 msgid "%s: %s: invalid value for trace file descriptor"
 msgstr "%s: %s: 追蹤檔案描述符的值無效"
 
-#: variables.c:5669
+#: variables.c:6322
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: 相容版本數值超出範圍"
 
 #: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "著作權所有 (C) 2013 自由軟體基金會"
+msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "著作權所有 (C) 2018 自由軟體基金會"
 
 #: version.c:47 version2.c:47
 msgid ""
@@ -2130,22 +2152,22 @@ msgstr "本軟體是自由軟體,您可以自由地更改和重新發布。"
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "在法律許可的情況下特此明示,本軟體不提供任何擔保。"
 
-#: xmalloc.c:91
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: 無法分配 %lu 位元組 (已分配 %lu 位元組)"
 
-#: xmalloc.c:93
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: 無法分配 %lu 位元組"
 
-#: xmalloc.c:163
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: 無法分配 %lu 位元組 (已分配 %lu 位元組)"
 
-#: xmalloc.c:165
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: 無法分配 %lu 位元組"
@@ -2199,9 +2221,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
 msgstr "declare [-aAfFgilnrtux] [-p] [名稱[=值] …]"
 
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] 名稱[=值] …"
+msgstr "typeset [-aAfFgilnrtux] [-p] 名稱[=值] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2272,9 +2293,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
 msgstr "jobs [-lnprs] [工作規格 …] 或 jobs -x 命令 [引數]"
 
 #: builtins.c:131
-#, fuzzy
 msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [工作規格 …]"
+msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
 
 #: builtins.c:134
 msgid ""
@@ -2349,17 +2369,16 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] 名稱 [名稱 …]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [限制]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [模式]"
 
 #: builtins.c:177
-msgid "wait [-n] [id ...]"
-msgstr "wait [-n] [編號 …]"
+msgid "wait [-fn] [id ...]"
+msgstr "wait [-fn] [編號 …]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2449,45 +2468,42 @@ msgstr "printf [-v var] 格式 [引數]"
 
 #: builtins.c:231
 msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
 "W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
 "suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o 選項] [-A 動作] [-G 全域模式] [-W 詞"
-"語列表]  [-F 函數] [-C 命令] [-X 過濾模式] [-P 字首] [-S 字尾] [名稱 …]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 選項] [-A 動作] [-G 全域模式] [-W "
+"è©\9eèª\9eå\88\97表]  [-F å\87½æ\95¸] [-C å\91½ä»¤] [-X é\81\8e濾模å¼\8f] [-P å­\97é¦\96] [-S å­\97å°¾] [å\90\8d稱 â\80¦]"
 
 #: builtins.c:235
-#, fuzzy
 msgid ""
 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
 "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 msgstr ""
-"compgen [-abcdefgjksuv] [-o 選項]  [-A 動作] [-G 全域模式] [-W 字詞列表]  [-"
-"F 函數] [-C 命令] [-X 過濾模式] [-P 字首] [-S 字尾] [字詞]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  "
+"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
 
 #: builtins.c:239
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o 選項] [-DE] [名稱 …]"
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o 選項] [-DEI] [名稱 …]"
 
 #: builtins.c:242
-#, fuzzy
 msgid ""
 "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
 "callback] [-c quantum] [array]"
 msgstr ""
-"mapfile [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] "
-"[陣列]"
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 
 #: builtins.c:244
 msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
 msgstr ""
-"readarray [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] "
-"[陣列]"
+"readarray [-d 分割符號] [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回"
+"呼] [-c 定量] [陣列]"
 
 #: builtins.c:256
-#, fuzzy
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2523,7 +2539,6 @@ msgstr ""
 "    回傳值為真。"
 
 #: builtins.c:278
-#, fuzzy
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2535,12 +2550,11 @@ msgstr ""
 "從別名定義列表中刪除每一個 NAME。\n"
 "    \n"
 "    選項:\n"
-"      -a\t刪除所有的別名定義\n"
+"      -a\t刪除所有的別名定義\n"
 "    \n"
 "    回傳成功,除非 NAME 不是一個已存在的別名。"
 
 #: builtins.c:291
-#, fuzzy
 msgid ""
 "Set Readline key bindings and variables.\n"
 "    \n"
@@ -2659,18 +2673,18 @@ msgid ""
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-"    not a shell builtin.."
+"    not a shell builtin."
 msgstr ""
 "執行 shell 內建。\n"
 "    \n"
-"    帶引數 ARGs 執行 SHELL-BUILTIN 內建,並且不做命令查詢\n"
+"    帶 <參數> 執行 <shell 內建> 而不做命令查詢\n"
 "    在希望以 shell 函數的形式來重新實現 shell 內建,\n"
-"    ä¸¦ä¸\94å¸\8cæ\9c\9b在函數之內執行該 shell 內建的情況下有用處。\n"
+"    ä½\86é\9c\80è¦\81在函數之內執行該 shell 內建的情況下有用處。\n"
 "    \n"
 "    退出狀態:\n"
-"    以 SHELL-BUILTIN 內建的退出狀態為準,或者如果 SHELL-BUILTIN 不是一個 "
-"shell 內建時\n"
-"    為假。。"
+"    以 <shell 內建> 的退出狀態為準,或者如果 <shell 內建> 不是一個 shell 內建"
+"時\n"
+"    回傳 false。"
 
 #: builtins.c:369
 msgid ""
@@ -2701,7 +2715,6 @@ msgstr ""
 "    果為 0。"
 
 #: builtins.c:387
-#, fuzzy
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
@@ -2776,7 +2789,6 @@ msgstr ""
 "    如果目錄變更,或在使用 -P 選項時 $PWD 修改成功時回傳 0,否則非零。"
 
 #: builtins.c:425
-#, fuzzy
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -2843,7 +2855,6 @@ msgstr ""
 "    一律失敗。"
 
 #: builtins.c:471
-#, fuzzy
 msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
@@ -2876,7 +2887,6 @@ msgstr ""
 "    回傳 COMMAND 命令的回傳狀態,或者當找不到 COMMAND 命令時失敗。"
 
 #: builtins.c:490
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2895,11 +2905,11 @@ msgid ""
 "      -a\tto make NAMEs indexed arrays (if supported)\n"
 "      -A\tto make NAMEs associative arrays (if supported)\n"
 "      -i\tto make NAMEs have the `integer' attribute\n"
-"      -l\tto convert NAMEs to lower case on assignment\n"
+"      -l\tto convert the value of each NAME to lower case on assignment\n"
 "      -n\tmake NAME a reference to the variable named by its value\n"
 "      -r\tto make NAMEs readonly\n"
 "      -t\tto make NAMEs have the `trace' attribute\n"
-"      -u\tto convert NAMEs to upper case on assignment\n"
+"      -u\tto convert the value of each NAME to upper case on assignment\n"
 "      -x\tto make NAMEs export\n"
 "    \n"
 "    Using `+' instead of `-' turns off the given attribute.\n"
@@ -2917,39 +2927,38 @@ msgid ""
 msgstr ""
 "設定變數值和屬性。\n"
 "    \n"
-"    規變數並且賦予它們屬性。如果沒用給定名稱,\n"
+"    規變數並且賦予它們屬性。如果沒用給定名稱,\n"
 "    則顯示所有變數的屬性和值。\n"
 "    \n"
 "    選項:\n"
 "      -f\t限制動作或顯示為只有函數名稱和定義\n"
 "      -F\t限制僅顯示函數名稱 (以及列號和原始檔名於偵錯時)\n"
 "      -g\t當用於 shell 函數內時建立全域變數 ; 否則忽略\n"
-"      -p\t顯示每個 NAME 變數的屬性和值\n"
+"      -p\t顯示每個 <名稱> 變數的屬性和值\n"
 "    \n"
 "    設定屬性的選項:\n"
-"      -a\t使 NAME 成為索引陣列 (如果支援)\n"
-"      -A\t使 NAME 成為關聯陣列 (如果支援)\n"
-"      -i\t使 NAME 帶有「integer」(整數)屬性\n"
-"      -l\t將 NAME 在指派時轉為小寫\n"
-"      -n\t使 NAME 成為指向一個以其值為名稱的變數引用\n"
-"      -r\t將 NAME 變為唯讀\n"
-"      -t\t使 NAME 帶有「trace」(追蹤)屬性\n"
-"      -u\t將 NAME 在指派時轉為大寫\n"
-"      -x\t將 NAME 匯出\n"
+"      -a\t使 <名稱> 成為索引陣列 (如果支援)\n"
+"      -A\t使 <名稱> 成為關聯陣列 (如果支援)\n"
+"      -i\t使 <名稱> 帶有「integer」(整數)屬性\n"
+"      -l\t將每個 <名稱> 的值在指派時轉為小寫\n"
+"      -n\t使 <名稱> 成為指向一個以其值為名稱的變數引用\n"
+"      -r\t將 <名稱> 變為唯讀\n"
+"      -t\t使 <名稱> 帶有「trace」(追蹤)屬性\n"
+"      -u\t將每個 <名稱> 的值在指派時轉為大寫\n"
+"      -x\t將 <名稱> 匯出\n"
 "    \n"
 "    用「+」代替「-」會關閉指定選項。\n"
 "    \n"
 "    帶有整數屬性的變數在指派時將使用算術求值(見\n"
 "   「let」命令)\n"
 "    \n"
-"    在函數中使用時,「declare」使 NAME 成為本地變數,和「local」\n"
-"    命令一致。\n"
+"    在函數中使用時,「declare」使 <名稱> 成為本地變數,和「local」\n"
+"    命令一致。「-g」選項壓制這個行為\n"
 "    \n"
 "    退出狀態:\n"
 "    回傳成功除非使用了無效選項或者發生錯誤。"
 
 #: builtins.c:530
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -2957,7 +2966,7 @@ msgid ""
 msgstr ""
 "設定變數的值和屬性。\n"
 "    \n"
-"    å»¢æ£\84。參見「help declare」。"
+"    å\8a\9fè\83½ç\9b¸å\90\8cæ\96¼ã\80\8cdeclareã\80\8d。參見「help declare」。"
 
 #: builtins.c:538
 msgid ""
@@ -3015,6 +3024,12 @@ msgid ""
 "    \t\t0 to 3 octal digits\n"
 "      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n"
 "    \t\tcan be one or two hex digits\n"
+"      \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+"    \t\tHHHH can be one to four hex digits.\n"
+"      \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+"    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless a write error occurs."
@@ -3047,7 +3062,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非有寫入錯誤發生。"
 
-#: builtins.c:591
+#: builtins.c:595
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3069,7 +3084,7 @@ msgstr ""
 "    退出狀態:\n"
 "    除非寫錯誤發生,否則回傳成功。"
 
-#: builtins.c:606
+#: builtins.c:610
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3119,7 +3134,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非 NAME 不是一個 shell 內建或者有錯誤發生。"
 
-#: builtins.c:634
+#: builtins.c:638
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
@@ -3138,7 +3153,7 @@ msgstr ""
 "    退出狀態:\n"
 "    以命令的狀態退出,或者在命令為空的情況下回傳成功。"
 
-#: builtins.c:646
+#: builtins.c:650
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3216,8 +3231,7 @@ msgstr ""
 "    如果一個選項被找到則回傳成功;如果遇到了選項的結尾或者\n"
 "    有錯誤發生則回傳失敗。"
 
-#: builtins.c:688
-#, fuzzy
+#: builtins.c:692
 msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
@@ -3256,7 +3270,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非 COMMAND 命令沒有找到或者出現一個重定向錯誤。"
 
-#: builtins.c:709
+#: builtins.c:713
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3268,7 +3282,7 @@ msgstr ""
 "    以狀態 N 退出 shell。  如果 N 被省略,則退出狀態\n"
 "    為最後一個執行命令的退出狀態。"
 
-#: builtins.c:718
+#: builtins.c:722
 msgid ""
 "Exit a login shell.\n"
 "    \n"
@@ -3281,7 +3295,7 @@ msgstr ""
 "    以狀態 N 退出一個登入 shell。如果不在登入 shell 中執行,則\n"
 "    回傳一個錯誤。"
 
-#: builtins.c:728
+#: builtins.c:732
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
@@ -3334,7 +3348,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,或者執行命令的狀態;如果錯誤發生則回傳非零。"
 
-#: builtins.c:758
+#: builtins.c:762
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3354,7 +3368,7 @@ msgstr ""
 "    退出狀態:\n"
 "    放至前臺的命令狀態,或者當錯誤發生時為失敗。"
 
-#: builtins.c:773
+#: builtins.c:777
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
@@ -3376,8 +3390,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非工作管理沒有啟用或者錯誤發生。"
 
-#: builtins.c:787
-#, fuzzy
+#: builtins.c:791
 msgid ""
 "Remember or display program locations.\n"
 "    \n"
@@ -3421,8 +3434,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非 NAME 命令沒有找到或者使用了無效的選項。"
 
-#: builtins.c:812
-#, fuzzy
+#: builtins.c:816
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3437,7 +3449,7 @@ msgid ""
 "    \t\tPATTERN\n"
 "    \n"
 "    Arguments:\n"
-"      PATTERN\tPattern specifiying a help topic\n"
+"      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless PATTERN is not found or an invalid option is "
@@ -3461,8 +3473,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非 PATTERN 模式沒有找到或者使用了無效選項。"
 
-#: builtins.c:836
-#, fuzzy
+#: builtins.c:840
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3471,7 +3482,8 @@ msgid ""
 "    \n"
 "    Options:\n"
 "      -c\tclear the history list by deleting all of the entries\n"
-"      -d offset\tdelete the history entry at position OFFSET.\n"
+"      -d offset\tdelete the history entry at position OFFSET. Negative\n"
+"    \t\toffsets count back from the end of the history list\n"
 "    \n"
 "      -a\tappend history lines from this session to the history file\n"
 "      -n\tread all history lines not already read from the history file\n"
@@ -3502,11 +3514,13 @@ msgstr ""
 "    \n"
 "    選項:\n"
 "      -c\t刪除所有條目從而清空歷史記錄列表。\n"
-"      -d 偏移量\t從指定位置刪除歷史記錄列表。\n"
+"      -d 偏移量\t從指定位置刪除歷史記錄列表。負數偏移量會從歷史記錄列表\n"
+"    \t\t的尾端數回來。\n"
 "    \n"
 "      -a\t將當前會話的歷史記錄列追加到歷史記錄檔案中\n"
 "      -n\t從歷史記錄檔案中讀取所有未被讀取的列\n"
-"      -r\t讀取歷史記錄檔案並將內容追加到歷史記錄列表中\n"
+"\t\t並且將它們追加到歷史列表      -r\t讀取歷史記錄檔案並將內容追加到歷史記錄"
+"列表中\n"
 "      -w\t將當前歷史記錄寫入到歷史記錄檔案中,並追加到歷史記錄列表中\n"
 "    \n"
 "      -p\t對每一個 ARG 引數展開歷史記錄並顯示結果,而不儲存到歷史記錄列表中\n"
@@ -3522,8 +3536,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者發生錯誤。"
 
-#: builtins.c:872
-#, fuzzy
+#: builtins.c:877
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3565,8 +3578,7 @@ msgstr ""
 "    回傳成功,除非使用了無效的選項或者有錯誤發生。\n"
 "    如果使用 -x 選項,則回傳 COMMAND 命令的退出狀態。"
 
-#: builtins.c:899
-#, fuzzy
+#: builtins.c:904
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3596,8 +3608,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非使用了無效的選項或者 JOBSPEC 規格。"
 
-#: builtins.c:918
-#, fuzzy
+#: builtins.c:923
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3637,7 +3648,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者有錯誤發生。"
 
-#: builtins.c:942
+#: builtins.c:947
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
@@ -3719,8 +3730,7 @@ msgstr ""
 "    退出狀態:\n"
 "    如果最後一個 ARG 引數求值為 0,則 let 回傳 1; 否則 let 回傳 0。"
 
-#: builtins.c:987
-#, fuzzy
+#: builtins.c:992
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
@@ -3741,7 +3751,7 @@ msgid ""
 "    \t\tvariable ARRAY, starting at zero\n"
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
-"      -e\tuse Readline to obtain the line in an interactive shell\n"
+"      -e\tuse Readline to obtain the line\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
@@ -3786,7 +3796,7 @@ msgstr ""
 "    選項:\n"
 "      -a array\t將字詞指派給 ARRAY 陣列變數的序列索引成員,從零開始。\n"
 "      -d delim\t持續讀取直到讀入 DELIM 變數中的第一個字元,而不是換列符\n"
-"      -e\t在互動式 shell 中使用 Readline 獲取列\n"
+"      -e\t使用 Readline 獲取列\n"
 "      -i text\t使用 TEXT 文字做為 Readline 的初始文字\n"
 "      -n nchars\t讀取 nchars 個字元之後回傳,而不是等到讀取換列符。\n"
 "    \t\t但是分隔符仍然有效,如果遇到分隔符之前讀取了不足 nchars 個字元。\n"
@@ -3809,7 +3819,7 @@ msgstr ""
 "    回傳碼為零,除非遇到了檔案結束符,讀取逾時,或者無效的文\n"
 "    件描述符做為引數傳遞給了 -u 選項。"
 
-#: builtins.c:1034
+#: builtins.c:1039
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -3829,8 +3839,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳 N,或者如果 shell 不在執行一個函數或引用指令稿時,失敗。"
 
-#: builtins.c:1047
-#, fuzzy
+#: builtins.c:1052
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -3978,7 +3987,7 @@ msgstr ""
 "          時候這個標識位預設開啟。\n"
 "      -P  設定之後類似 cd 的會變更當前目錄的命令不\n"
 "          追蹤符號鏈結。\n"
-"      -T  設定之後 DEBUG 陷阱會被 shell 函數繼承。\n"
+"      -T  設定之後 DEBUG 和 RETURN 陷阱會被 shell 函數繼承。\n"
 "      -   任何剩餘的引數會被指派給位置引數。\n"
 "          -x 和 -v 選項已關閉。\n"
 "    \n"
@@ -3991,8 +4000,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非使用了無效的引數。"
 
-#: builtins.c:1132
-#, fuzzy
+#: builtins.c:1137
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4030,7 +4038,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者 NAME 名稱為唯讀。"
 
-#: builtins.c:1154
+#: builtins.c:1159
 msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
@@ -4063,8 +4071,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者 NAME 名稱。"
 
-#: builtins.c:1173
-#, fuzzy
+#: builtins.c:1178
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4100,7 +4107,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者 NAME 名稱。"
 
-#: builtins.c:1195
+#: builtins.c:1200
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4118,7 +4125,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非 N 為負或者大於 $#。"
 
-#: builtins.c:1207 builtins.c:1222
+#: builtins.c:1212 builtins.c:1227
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
@@ -4140,7 +4147,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案不可讀則失敗。"
 
-#: builtins.c:1238
+#: builtins.c:1243
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
@@ -4164,8 +4171,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非沒有啟用工作控制或者有錯誤發生。"
 
-#: builtins.c:1254
-#, fuzzy
+#: builtins.c:1259
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4319,7 +4325,7 @@ msgstr ""
 "    如果 EXPR 表示式求值為真則回傳成功;如果 EXPR 表示式求值\n"
 "    為假或者使用了無效的引數則回傳失敗。"
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4331,7 +4337,7 @@ msgstr ""
 "    是內建命令「test」的同義詞,但是最後一個引數必須是\n"
 "    字元「]」,以匹配起始的「[」。"
 
-#: builtins.c:1345
+#: builtins.c:1350
 msgid ""
 "Display process times.\n"
 "    \n"
@@ -4350,7 +4356,7 @@ msgstr ""
 "    退出狀態:\n"
 "    一律成功。"
 
-#: builtins.c:1357
+#: builtins.c:1362
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
@@ -4421,8 +4427,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者 SIGSPEC。"
 
-#: builtins.c:1393
-#, fuzzy
+#: builtins.c:1398
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4474,8 +4479,7 @@ msgstr ""
 "    退出狀態:\n"
 "    如果所有的 NAME 命令都找到則回傳成功;任何找不到則失敗。"
 
-#: builtins.c:1424
-#, fuzzy
+#: builtins.c:1429
 msgid ""
 "Modify shell resource limits.\n"
 "    \n"
@@ -4538,6 +4542,7 @@ msgstr ""
 "      -e\t最高的排程優先順序 (「nice」)\n"
 "      -f\t有 shell 及其子行程可以寫入的最大檔案尺寸\n"
 "      -i\t最多可以懸置的訊號數\n"
+"      -k\t為這個進程所分配的最大 kqueues 數量\n"
 "      -l\t一個行程可以鎖定的最大記憶體尺寸\n"
 "      -m\t最大的記憶體進駐尺寸\n"
 "      -n\t最多開啟的檔案描述符個數\n"
@@ -4545,6 +4550,7 @@ msgstr ""
 "      -q\tPOSIX 資訊佇列的最大位元組數\n"
 "      -r\t實時排程的最大優先順序\n"
 "      -s\t最大堆疊尺寸\n"
+"      -P\t偽終端的最大數量\n"
 "      -t\t最大的 CPU 時間,以秒為單位\n"
 "      -u\t最大使用者行程數\n"
 "      -v\t虛擬記憶體尺寸\n"
@@ -4564,7 +4570,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者錯誤發生。"
 
-#: builtins.c:1474
+#: builtins.c:1479
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -4596,7 +4602,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的 MODE 模式或者選項。"
 
-#: builtins.c:1494
+#: builtins.c:1499
 msgid ""
 "Wait for job completion and return exit status.\n"
 "    \n"
@@ -4604,13 +4610,15 @@ msgid ""
 "a\n"
 "    job specification, and reports its termination status.  If ID is not\n"
 "    given, waits for all currently active child processes, and the return\n"
-"    status is zero.  If ID is a a job specification, waits for all "
-"processes\n"
+"    status is zero.  If ID is a job specification, waits for all processes\n"
 "    in that job's pipeline.\n"
 "    \n"
 "    If the -n option is supplied, waits for the next job to terminate and\n"
 "    returns its exit status.\n"
 "    \n"
+"    If the -f option is supplied, and job control is enabled, waits for the\n"
+"    specified ID to terminate, instead of waiting for it to change status.\n"
+"    \n"
 "    Exit Status:\n"
 "    Returns the status of the last ID; fails if ID is invalid or an invalid\n"
 "    option is given."
@@ -4624,10 +4632,13 @@ msgstr ""
 "    \n"
 "    若給定了 -n 選項,等待下一個工作完成並回傳其狀態。\n"
 "    \n"
+"    如果給定了 -f 選項且啟用工作管理,則等待指定 ID 終止,而非\n"
+"    等到其變更狀態。\n"
+"    \n"
 "    退出狀態:\n"
 "    回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者選項則失敗。"
 
-#: builtins.c:1515
+#: builtins.c:1523
 msgid ""
 "Wait for process completion and return exit status.\n"
 "    \n"
@@ -4650,7 +4661,7 @@ msgstr ""
 "    回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的選項則失"
 "敗。"
 
-#: builtins.c:1530
+#: builtins.c:1538
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -4671,7 +4682,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後執行命令的狀態。"
 
-#: builtins.c:1544
+#: builtins.c:1552
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -4701,7 +4712,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後執行命令的狀態。"
 
-#: builtins.c:1562
+#: builtins.c:1570
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -4734,7 +4745,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1583
+#: builtins.c:1591
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -4762,7 +4773,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳狀態即 PIPELINE 的回傳狀態。"
 
-#: builtins.c:1600
+#: builtins.c:1608
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -4780,7 +4791,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1612
+#: builtins.c:1620
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
@@ -4811,7 +4822,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1629
+#: builtins.c:1637
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
@@ -4829,7 +4840,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1641
+#: builtins.c:1649
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
@@ -4847,8 +4858,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1653
-#, fuzzy
+#: builtins.c:1661
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -4868,9 +4878,9 @@ msgstr ""
 "    預設的 NAME 是「COPROC」。\n"
 "    \n"
 "    退出狀態:\n"
-"    回傳 COMMAND 命令的退出狀態。"
+"    coprc 指令回傳離開代碼 0。"
 
-#: builtins.c:1667
+#: builtins.c:1675
 msgid ""
 "Define shell function.\n"
 "    \n"
@@ -4893,7 +4903,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功除非 NAME 為唯讀。"
 
-#: builtins.c:1681
+#: builtins.c:1689
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -4911,7 +4921,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳最後一個執行命令的狀態。"
 
-#: builtins.c:1693
+#: builtins.c:1701
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -4935,7 +4945,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳被繼續的工作狀態。"
 
-#: builtins.c:1708
+#: builtins.c:1716
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4953,7 +4963,7 @@ msgstr ""
 "    退出狀態:\n"
 "    如果表示式求值為 0 則回傳 1;否則回傳 0。"
 
-#: builtins.c:1720
+#: builtins.c:1728
 msgid ""
 "Execute conditional command.\n"
 "    \n"
@@ -5001,7 +5011,7 @@ msgstr ""
 "    退出狀態:\n"
 "    根據 EXPRESSION 的值為 0 或 1。"
 
-#: builtins.c:1746
+#: builtins.c:1754
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5096,8 +5106,7 @@ msgstr ""
 "    HISTIGNORE\t用於決定哪些命令被存入歷史記錄檔案的模式\n"
 "    \t\t列表,以冒號分隔。\n"
 
-#: builtins.c:1803
-#, fuzzy
+#: builtins.c:1811
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5127,9 +5136,9 @@ msgid ""
 "    Returns success unless an invalid argument is supplied or the directory\n"
 "    change fails."
 msgstr ""
-"å¾\9eå \86ç\96\8a中å\88ªé\99¤目錄。\n"
+"å¾\9eå \86ç\96\8a中建ç«\8b目錄。\n"
 "    \n"
-"    å¾\9eç\9b®é\8c\84å \86ç\96\8a中å\88ªé\99¤æ¢\9dç\9b®ã\80\82ä¸\8d帶å¼\95æ\95¸æ\99\82ï¼\8cå\88ªé\99¤堆疊頂端目錄,並變更至新的堆疊\n"
+"    å¾\9eç\9b®é\8c\84å \86ç\96\8a中建ç«\8bæ¢\9dç\9b®ã\80\82ä¸\8d帶å¼\95æ\95¸æ\99\82ï¼\8c建ç«\8b堆疊頂端目錄,並變更至新的堆疊\n"
 "    頂端目錄。\n"
 "    \n"
 "    選項:\n"
@@ -5148,8 +5157,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的引數或者目錄變換失敗。"
 
-#: builtins.c:1837
-#, fuzzy
+#: builtins.c:1845
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5196,8 +5204,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的引數或者目錄變換失敗。"
 
-#: builtins.c:1867
-#, fuzzy
+#: builtins.c:1875
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5246,14 +5253,13 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者發生錯誤。"
 
-#: builtins.c:1898
+#: builtins.c:1906
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
 "    Change the setting of each shell option OPTNAME.  Without any option\n"
-"    arguments, list all shell options with an indication of whether or not "
-"each\n"
-"    is set.\n"
+"    arguments, list each supplied OPTNAME, or all shell options if no\n"
+"    OPTNAMEs are given, with an indication of whether or not each is set.\n"
 "    \n"
 "    Options:\n"
 "      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
@@ -5268,9 +5274,9 @@ msgid ""
 msgstr ""
 "設定和取消設定 shell 選項。\n"
 "    \n"
-"    變更每個 shell 選項 OPTNAME 的設定。不帶引數\n"
-"    時,列出所有 shell 選項並標註每一個選項是否被\n"
-"    設定。\n"
+"    變更每個 shell <選項名稱> 的設定。不帶選項引數時,\n"
+"    顯示每個提供的 <選項名稱> 或所有 shell 選項 (如果沒有\n"
+"    傳入任何 <選項名稱>) 和是否每個都有設定到的指示。\n"
 "    \n"
 "    選項:\n"
 "      -o\t限制 OPTNAME 為定義用於「set -o」的選項\n"
@@ -5283,8 +5289,7 @@ msgstr ""
 "    如果 OPTNAME 選項被啟用則回傳成功;如果是\n"
 "    無效的選項或 OPTNAME 被停用則失敗。"
 
-#: builtins.c:1919
-#, fuzzy
+#: builtins.c:1927
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5335,11 +5340,11 @@ msgstr ""
 "、    \n"
 "      %b\t擴充套件對應引數中的反斜線逸出序列\n"
 "      %q\t以可做為 shell 輸入的格式引用引數\n"
-"    \n"
+"      %(fmt)T\t以 FMT 為提供 strftime(3) 的格式輸出日期與時間字串    \n"
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者發生寫入或指派錯誤。"
 
-#: builtins.c:1953
+#: builtins.c:1961
 #, fuzzy
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
@@ -5358,33 +5363,38 @@ msgid ""
 "    \t\twithout any specific completion defined\n"
 "      -E\tapply the completions and actions to \"empty\" commands --\n"
 "    \t\tcompletion attempted on a blank line\n"
+"      -I\tapply the completions and actions to the initial (usually the\n"
+"    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above.  The -D option takes\n"
-"    precedence over -E.\n"
+"    uppercase-letter options are listed above.  If multiple options are "
+"supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
-"規 readline 如何完成讀取引數。\n"
+"規 readline 如何完成讀取引數。\n"
 "    \n"
-"    規格對於每一個 NAME 名稱如何完成讀取引數。如果不帶選項,\n"
+"    規格對於每一個<名稱>如何完成讀取引數。如果不帶選項,\n"
 "    現有的補完規格會以可以重用為輸入的格式印出。\n"
 "    \n"
 "    選項:\n"
 "      -p\t以可重用的格式印出現有的補完規格。\n"
-"      -r\t對於每個 NAME 名稱刪除補完規格,或者如果沒有提供 NAME\n"
+"      -r\t對於每個<名稱>刪除補完規格,或者如果沒有提供<名稱>\n"
 "    \t名稱,刪除所有的補完規格。\n"
 "      -D\t對於沒有補完規格定義的命令,設定預設的補完動作\n"
 "      -E\t對於「empty」命令設定補完動作,—— 對於空列的補完。\n"
+"      -I\t套用補完和動作到首個 (通常是指令) 單詞\n"
 "    \n"
-"    嘗試補完時,按照上述大寫字母選項的順序進行動作。-D 選項優先\n"
-"    級高於 -E 選項。\n"
+"    嘗試補完時,按照上述大寫字母選項的順序進行動作。 如果傳入了多個選項,\n"
+"    -D 選項優先於 -E 選項,而兩者優先於 -I 選項。\n"
 "    \n"
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者錯誤發生。"
 
-#: builtins.c:1981
+#: builtins.c:1991
 msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
@@ -5405,7 +5415,7 @@ msgstr ""
 "    退出狀態:\n"
 "    除非使用了無效選項或者錯誤發生,否則回傳成功。"
 
-#: builtins.c:1996
+#: builtins.c:2006
 msgid ""
 "Modify or display completion options.\n"
 "    \n"
@@ -5420,6 +5430,7 @@ msgid ""
 "    \t-o option\tSet completion option OPTION for each NAME\n"
 "    \t-D\t\tChange options for the \"default\" command completion\n"
 "    \t-E\t\tChange options for the \"empty\" command completion\n"
+"    \t-I\t\tChange options for completion on the initial word\n"
 "    \n"
 "    Using `+o' instead of `-o' turns off the specified option.\n"
 "    \n"
@@ -5445,6 +5456,7 @@ msgstr ""
 "    \t-o option\t為每個 NAME 名稱設定補完選項 option\n"
 "    \t-D\t\t為「default」命令補完變更選項\n"
 "    \t-E\t\t為「empty」命令補完變更選項\n"
+"    \t-I\t\t為首單詞上的補完變更選項\n"
 "    \n"
 "    使用「+o」而不是「-o」可以關閉指定的選項。\n"
 "    \n"
@@ -5457,8 +5469,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項或者 NAME 名稱沒有定義補完規格。"
 
-#: builtins.c:2026
-#, fuzzy
+#: builtins.c:2037
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
@@ -5505,6 +5516,7 @@ msgstr ""
 "    從檔案描述符 FD 中讀取。MAPFILE 變數是預設的 ARRAY 變數。\n"
 "    \n"
 "    選項:\n"
+"      -d delim\t使用 DELIM 取代換行符號來斷行\n"
 "      -n count\t最多複製 COUNT 列,如果 COUNT 為 0,則複製所有列。\n"
 "      -O origin\t從索引 ORIGIN 開始 指派給 ARRAY 變數。預設索引是 0。\n"
 "      -s count \t丟棄最先讀取的 COUNT 列。\n"
@@ -5524,7 +5536,7 @@ msgstr ""
 "    退出狀態:\n"
 "    回傳成功,除非使用了無效的選項,或者 ARRAY 變數唯讀或不是索引陣列。"
 
-#: builtins.c:2062
+#: builtins.c:2073
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -5534,9 +5546,8 @@ msgstr ""
 "    \n"
 "    一個「mapfile」的同義詞。"
 
-#, fuzzy
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "著作權所有 (C) 2013 自由軟體基金會"
+#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
+#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。"
 
 #~ msgid ":"
 #~ msgstr ":"
@@ -5550,9 +5561,6 @@ msgstr ""
 #~ msgid "times"
 #~ msgstr "times"
 
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。"
-
 #~ msgid "requesting resize"
 #~ msgstr "要求調整"
 
index 5a1ec5f17444887c3c4b537f963c93b1165d6846..9aa6557dd6810cae5219dcf48e971f1264207d48 100644 (file)
@@ -1,6 +1,6 @@
 /* print_command -- A way to make readable commands from a command tree. */
 
-/* Copyright (C) 1989-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -38,6 +38,8 @@
 #include "bashansi.h"
 #include "bashintl.h"
 
+#define NEED_XTRACE_SET_DECL
+
 #include "shell.h"
 #include "flags.h"
 #include <y.tab.h>     /* use <...> so we pick it up from the build directory */
@@ -51,9 +53,6 @@
 extern int printf __P((const char *, ...));    /* Yuck.  Double yuck. */
 #endif
 
-extern int indirection_level;
-extern int posixly_correct;
-
 static int indentation;
 static int indentation_amount = 4;
 
@@ -83,6 +82,7 @@ static void print_redirection __P((REDIRECT *));
 static void print_heredoc_header __P((REDIRECT *));
 static void print_heredoc_body __P((REDIRECT *));
 static void print_heredocs __P((REDIRECT *));
+static void print_heredoc_bodies __P((REDIRECT *));
 static void print_deferred_heredocs __P((const char *));
 
 static void print_for_command __P((FOR_COM *));
@@ -515,11 +515,10 @@ xtrace_print_assignment (name, value, assign_list, xflags)
   fflush (xtrace_fp);
 }
 
-/* A function to print the words of a simple command when set -x is on.  Also
-   used to print the word list in a for or select command header; in that case,
-   we suppress quoting the words because they haven't been expanded yet.
-   XTFLAGS&1 means to print $PS4; XTFLAGS&2 means to suppress quoting the
-   words in LIST. */
+/* A function to print the words of a simple command when set -x is on.  Also used to
+   print the word list in a for or select command header; in that case, we suppress
+   quoting the words because they haven't been expanded yet.  XTFLAGS&1 means to
+   print $PS4; XTFLAGS&2 means to suppress quoting the words in LIST. */
 void
 xtrace_print_word_list (list, xtflags)
      WORD_LIST *list;
@@ -981,34 +980,38 @@ print_heredocs (heredocs)
   was_heredoc = 1;
 }
 
+static void
+print_heredoc_bodies (heredocs)
+     REDIRECT *heredocs;
+{
+  REDIRECT *hdtail;
+
+  cprintf ("\n"); 
+  for (hdtail = heredocs; hdtail; hdtail = hdtail->next)
+    {
+      print_heredoc_body (hdtail);
+      cprintf ("\n");
+    }
+  was_heredoc = 1;
+}
+
 /* Print heredocs that are attached to the command before the connector
    represented by CSTRING.  The parsing semantics require us to print the
    here-doc delimiters, then the connector (CSTRING), then the here-doc
-   bodies.  We don't print the connector if it's a `;', but we use it to
-   note not to print an extra space after the last heredoc body and
-   newline. */
+   bodies.  We print the here-doc delimiters in print_redirection_list
+   and print the connector and the bodies here. We don't print the connector
+   if it's a `;', but we use it to note not to print an extra space after the
+   last heredoc body and newline. */
 static void
 print_deferred_heredocs (cstring)
      const char *cstring;
 {
-  REDIRECT *hdtail;    
-
-  for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next)
-    {
-      cprintf (" ");
-      print_heredoc_header (hdtail);
-    }
+  /* We now print the heredoc headers in print_redirection_list */
   if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1]))
     cprintf ("%s", cstring); 
-  if (deferred_heredocs)
-    cprintf ("\n");
-  for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next)
-    {
-      print_heredoc_body (hdtail);
-      cprintf ("\n");
-    }
   if (deferred_heredocs)
     {
+      print_heredoc_bodies (deferred_heredocs);
       if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1]))
        cprintf (" ");  /* make sure there's at least one space */
       dispose_redirects (deferred_heredocs);
@@ -1030,12 +1033,15 @@ print_redirection_list (redirects)
   was_heredoc = 0;
   while (redirects)
     {
-      /* Defer printing the here documents until we've printed the
-        rest of the redirections. */
+      /* Defer printing the here document bodiess until we've printed the rest of the
+         redirections, but print the headers in the order they're given.  */
       if (redirects->instruction == r_reading_until || redirects->instruction == r_deblank_reading_until)
        {
          newredir = copy_redirect (redirects);
          newredir->next = (REDIRECT *)NULL;
+
+         print_heredoc_header (newredir);
+
          if (heredocs)
            {
              hdtail->next = newredir;
@@ -1062,12 +1068,13 @@ print_redirection_list (redirects)
     }
 
   /* Now that we've printed all the other redirections (on one line),
-     print the here documents. */
+     print the here documents.  If we're printing a connection, we wait until
+     we print the connector symbol, then we print the here document bodies */
   if (heredocs && printing_connection)
     deferred_heredocs = heredocs;
   else if (heredocs)
     {
-      print_heredocs (heredocs);
+      print_heredoc_bodies (heredocs);
       dispose_redirects (heredocs);
     }
 }
@@ -1410,8 +1417,7 @@ named_function_string (name, command, flags)
          }
 #else
       if (result[2] == '\n')   /* XXX -- experimental */
-       memmove (result + 2, result + 3, strlen (result) - 2);
-       
+       memmove (result + 2, result + 3, strlen (result) - 2);  
 #endif
     }
 
@@ -1471,7 +1477,7 @@ cprintf (control, va_alist)
 #endif
 {
   register const char *s;
-  char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (int) + 1];
+  char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (unsigned int) + 1];
   int digit_arg, arg_len, c;
   va_list args;
 
@@ -1516,7 +1522,7 @@ cprintf (control, va_alist)
              digit_arg = va_arg (args, int);
              if (digit_arg < 0)
                {
-                 sprintf (intbuf, "%u", (unsigned)-1);
+                 sprintf (intbuf, "%u", (unsigned int)-1);
                  argp = intbuf;
                }
              else
diff --git a/redir.c b/redir.c
index 1858b0b08fd2056ba73e6e5ea82ad4f80e594f2a..0c0c9f2ba965be9b2285496ee7842e9a11242e3f 100644 (file)
--- a/redir.c
+++ b/redir.c
@@ -1,6 +1,6 @@
 /* redir.c -- Functions to perform input and output redirection. */
 
-/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -62,9 +62,6 @@ extern int errno;
 
 int expanding_redir;
 
-extern int posixly_correct;
-extern int last_command_exit_value;
-extern int executing_builtin;
 extern REDIRECT *redirection_undo_list;
 extern REDIRECT *exec_redirection_undo_list;
 
@@ -157,7 +154,6 @@ redirection_error (temp, error)
 #endif
   else if (expandable_redirection_filename (temp))
     {
-expandable_filename:
       oflags = temp->redirectee.filename->flags;
       if (posixly_correct && interactive_shell == 0)
        temp->redirectee.filename->flags |= W_NOGLOB;
@@ -469,6 +465,7 @@ here_document_to_fd (redirectee, ri)
       return (fd);
     }
 
+  fchmod (fd, S_IRUSR | S_IWUSR);
   SET_CLOSE_ON_EXEC (fd);
 
   errno = r = 0;               /* XXX */
@@ -512,6 +509,8 @@ here_document_to_fd (redirectee, ri)
     }
 
   free (filename);
+
+  fchmod (fd2, S_IRUSR);
   return (fd2);
 }
 
@@ -582,6 +581,10 @@ redir_special_open (spec, filename, flags, mode, ri)
 #if defined (NETWORK_REDIRECTIONS)
     case RF_DEVTCP:
     case RF_DEVUDP:
+#if defined (RESTRICTED_SHELL)
+      if (restricted)
+       return (RESTRICTED_REDIRECT);
+#endif
 #if defined (HAVE_NETWORK)
       fd = netopen (filename);
 #else
@@ -775,6 +778,8 @@ do_redirection_internal (redirect, flags)
            case r_move_output_word:
              new_redirect = make_redirection (sd, r_move_output, rd, 0);
              break;
+           default:
+             break;    /* shut up gcc */
            }
        }
       else if (ri == r_duplicating_output_word && (redirect->rflags & REDIR_VARASSIGN) == 0 && redirector == 1)
@@ -854,7 +859,7 @@ do_redirection_internal (redirect, flags)
       fd = redir_open (redirectee_word, redirect->flags, 0666, ri);
       free (redirectee_word);
 
-      if (fd == NOCLOBBER_REDIRECT)
+      if (fd == NOCLOBBER_REDIRECT || fd == RESTRICTED_REDIRECT)
        return (fd);
 
       if (fd < 0)
@@ -1142,9 +1147,12 @@ do_redirection_internal (redirect, flags)
 
          r = 0;
          /* XXX - only if REDIR_VARASSIGN not set? */
-         if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1))
+         if (flags & RX_UNDOABLE)
            {
-             r = add_undo_redirect (redirector, ri, -1);
+             if (fcntl (redirector, F_GETFD, 0) != -1)
+               r = add_undo_redirect (redirector, ri, -1);
+             else
+               r = add_undo_close_redirect (redirector);
              REDIRECTION_ERROR (r, errno, redirector);
            }
 
@@ -1169,6 +1177,8 @@ do_redirection_internal (redirect, flags)
 
     case r_duplicating_input_word:
     case r_duplicating_output_word:
+    case r_move_input_word:
+    case r_move_output_word:
       break;
     }
   return (0);
@@ -1328,6 +1338,10 @@ stdin_redirection (ri, redirector)
     case r_append_err_and_out:
     case r_output_force:
     case r_duplicating_output_word:
+    case r_move_input:
+    case r_move_output:
+    case r_move_input_word:
+    case r_move_output_word:
       return (0);
     }
   return (0);
@@ -1384,7 +1398,7 @@ redir_varvalue (redir)
 #if defined (ARRAY_VARS)
   if (vr = valid_array_reference (w, 0))
     {
-      v = array_variable_part (w, &sub, &len);
+      v = array_variable_part (w, 0, &sub, &len);
     }
   else
 #endif
@@ -1398,7 +1412,7 @@ redir_varvalue (redir)
            {
              w = nameref_cell (v);
              if (vr = valid_array_reference (w, 0))
-               v = array_variable_part (w, &sub, &len);
+               v = array_variable_part (w, 0, &sub, &len);
              else
                v = find_variable (w);
            }
diff --git a/shell.c b/shell.c
index 45b77f9ea6be674f4711f0d774f8b5c093c60c91..a2b2a55e0c5441242fcad7e505e56aa5a5efbe4d 100644 (file)
--- a/shell.c
+++ b/shell.c
@@ -1,6 +1,6 @@
 /* shell.c -- GNU's idea of the POSIX shell specification. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -51,6 +51,7 @@
 #define NEED_SH_SETLINEBUF_DECL                /* used in externs.h */
 
 #include "shell.h"
+#include "parser.h"
 #include "flags.h"
 #include "trap.h"
 #include "mailcheck.h"
@@ -60,6 +61,7 @@
 #if defined (JOB_CONTROL)
 #include "jobs.h"
 #else
+extern int running_in_background;
 extern int initialize_job_control __P((int));
 extern int get_tty_state __P((void));
 #endif /* JOB_CONTROL */
@@ -101,22 +103,12 @@ extern int errno;
 extern char **environ; /* used if no third argument to main() */
 #endif
 
-extern char *dist_version, *release_status;
-extern int patch_level, build_version;
-extern int shell_level;
-extern int subshell_environment;
-extern int running_in_background;
-extern int last_command_exit_value;
-extern int line_number;
-extern int expand_aliases;
-extern int array_needs_making;
 extern int gnu_error_format;
-extern char *primary_prompt, *secondary_prompt;
-extern char *this_command_name;
 
 /* Non-zero means that this shell has already been run; i.e. you should
    call shell_reinitialize () if you need to start afresh. */
 int shell_initialized = 0;
+int bash_argv_initialized = 0;
 
 COMMAND *global_command = (COMMAND *)NULL;
 
@@ -232,6 +224,8 @@ int dump_po_strings;                /* Dump strings in $"..." in po format */
 int wordexp_only = 0;          /* Do word expansion only */
 int protected_mode = 0;                /* No command substitution with --wordexp */
 
+int pretty_print_mode = 0;     /* pretty-print a shell script */
+
 #if defined (STRICT_POSIX)
 int posixly_correct = 1;       /* Non-zero means posix.2 superset. */
 #else
@@ -260,6 +254,7 @@ static const struct {
   { "noprofile", Int, &no_profile, (char **)0x0 },
   { "norc", Int, &no_rc, (char **)0x0 },
   { "posix", Int, &posixly_correct, (char **)0x0 },
+  { "pretty-print", Int, &pretty_print_mode, (char **)0x0 },
 #if defined (WORDEXP_OPTION)
   { "protected", Int, &protected_mode, (char **)0x0 },
 #endif
@@ -297,6 +292,7 @@ int want_pending_command;   /* -c flag supplied */
 
 /* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */
 char *command_execution_string;        /* argument to -c option */
+char *shell_script_filename;   /* shell script */
 
 int malloc_trace_at_exit = 0;
 
@@ -433,7 +429,7 @@ main (argc, argv, env)
   arg_index = 1;
   if (arg_index > argc)
     arg_index = argc;
-  command_execution_string = (char *)NULL;
+  command_execution_string = shell_script_filename = (char *)NULL;
   want_pending_command = locally_skip_execution = read_from_stdin = 0;
   default_input = stdin;
 #if defined (BUFFERED_INPUT)
@@ -584,7 +580,7 @@ main (argc, argv, env)
    */
   if (interactive_shell)
     {
-      char *term, *emacs, *inside_emacs;;
+      char *term, *emacs, *inside_emacs;
       int emacs_term, in_emacs;
 
       term = get_string_value ("TERM");
@@ -673,6 +669,22 @@ main (argc, argv, env)
   restricted = 0;
 #endif
 
+  /* Set positional parameters before running startup files. top_level_arg_index
+     holds the index of the current argument before setting the positional
+     parameters, so any changes performed in the startup files won't affect
+     later option processing. */
+  if (wordexp_only)
+    ;                  /* nothing yet */
+  else if (command_execution_string)
+    arg_index = bind_args (argv, arg_index, argc, 0);  /* $0 ... $n */
+  else if (arg_index != argc && read_from_stdin == 0)
+    {
+      shell_script_filename = argv[arg_index++];
+      arg_index = bind_args (argv, arg_index, argc, 1);        /* $1 ... $n */
+    }
+  else
+    arg_index = bind_args (argv, arg_index, argc, 1);  /* $1 ... $n */
+
   /* The startup files are run with `set -e' temporarily disabled. */
   if (locally_skip_execution == 0 && running_setuid == 0)
     {
@@ -703,7 +715,7 @@ main (argc, argv, env)
   if (wordexp_only)
     {
       startup_state = 3;
-      last_command_exit_value = run_wordexp (argv[arg_index]);
+      last_command_exit_value = run_wordexp (argv[top_level_arg_index]);
       exit_shell (last_command_exit_value);
     }
 #endif
@@ -713,7 +725,6 @@ main (argc, argv, env)
 
   if (command_execution_string)
     {
-      arg_index = bind_args (argv, arg_index, argc, 0);
       startup_state = 2;
 
       if (debugging_mode)
@@ -731,11 +742,8 @@ main (argc, argv, env)
 
   /* Get possible input filename and set up default_buffered_input or
      default_input as appropriate. */
-  if (arg_index != argc && read_from_stdin == 0)
-    {
-      open_shell_script (argv[arg_index]);
-      arg_index++;
-    }
+  if (shell_script_filename)
+    open_shell_script (shell_script_filename);
   else if (interactive == 0)
     {
       /* In this mode, bash is reading a script from stdin, which is a
@@ -747,16 +755,13 @@ main (argc, argv, env)
 #endif /* !BUFFERED_INPUT */
       read_from_stdin = 1;
     }
-  else if (arg_index == argc)
+  else if (top_level_arg_index == argc)                /* arg index before startup files */
     /* "If there are no operands and the -c option is not specified, the -s
        option shall be assumed." */
     read_from_stdin = 1;
 
   set_bash_input ();
 
-  /* Bind remaining args to $1 ... $n */
-  arg_index = bind_args (argv, arg_index, argc, 1);
-
   if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && (reading_shell_script || interactive_shell == 0))
     start_debugger ();
 
@@ -788,6 +793,14 @@ main (argc, argv, env)
 
   shell_initialized = 1;
 
+  if (pretty_print_mode && interactive_shell)
+    {
+      internal_warning (_("pretty-printing mode ignored in interactive shells"));
+      pretty_print_mode = 0;
+    }
+  if (pretty_print_mode)
+    exit_shell (pretty_print_loop ());
+
   /* Read commands until exit condition. */
   reader_loop ();
   exit_shell (last_command_exit_value);
@@ -999,7 +1012,7 @@ sh_exit (s)
      int s;
 {
 #if defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC)
-  if (malloc_trace_at_exit)
+  if (malloc_trace_at_exit && (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
     trace_malloc_stats (get_name_for_error (), (char *)NULL);
   /* mlocation_write_table (); */
 #endif
@@ -1236,6 +1249,10 @@ maybe_make_restricted (name)
     temp++;
   if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME)))
     {
+#if defined (RBASH_STATIC_PATH_VALUE)
+      bind_variable ("PATH", RBASH_STATIC_PATH_VALUE, 0);
+      stupidly_hack_special_variables ("PATH");                /* clear hash table */
+#endif
       set_var_read_only ("PATH");
       set_var_read_only ("SHELL");
       set_var_read_only ("ENV");
@@ -1406,13 +1423,21 @@ bind_args (argv, arg_start, arg_end, start_index)
      int arg_start, arg_end, start_index;
 {
   register int i;
-  WORD_LIST *args;
+  WORD_LIST *args, *tl;
+
+  for (i = arg_start, args = tl = (WORD_LIST *)NULL; i < arg_end; i++)
+    {
+      if (args == 0)
+       args = tl = make_word_list (make_word (argv[i]), args);
+      else
+       {
+         tl->next = make_word_list (make_word (argv[i]), (WORD_LIST *)NULL);
+         tl = tl->next;
+       }
+    }
 
-  for (i = arg_start, args = (WORD_LIST *)NULL; i < arg_end; i++)
-    args = make_word_list (make_word (argv[i]), args);
   if (args)
     {
-      args = REVERSE_LIST (args, WORD_LIST *);
       if (start_index == 0)    /* bind to $0...$n for sh -c command */
        {
          /* Posix.2 4.56.3 says that the first argument after sh -c command
@@ -1421,12 +1446,23 @@ bind_args (argv, arg_start, arg_end, start_index)
          FREE (dollar_vars[0]);
          dollar_vars[0] = savestring (args->word->word);
          remember_args (args->next, 1);
-         push_args (args->next);       /* BASH_ARGV and BASH_ARGC */
+         if (debugging_mode)
+           {
+             push_args (args->next);   /* BASH_ARGV and BASH_ARGC */
+             bash_argv_initialized = 1;
+           }
        }
       else                     /* bind to $1...$n for shell script */
         {
          remember_args (args, 1);
-         push_args (args);             /* BASH_ARGV and BASH_ARGC */
+         /* We do this unconditionally so something like -O extdebug doesn't
+            do it first.  We're setting the definitive positional params
+            here. */
+         if (debugging_mode)
+           {
+             push_args (args);         /* BASH_ARGV and BASH_ARGC */
+             bash_argv_initialized = 1;
+           }
         }
 
       dispose_words (args);
@@ -1504,6 +1540,9 @@ open_shell_script (script_name)
     {
       e = errno;
       file_error (filename);
+#if defined (JOB_CONTROL)
+      end_job_control ();      /* just in case we were run as bash -i script */
+#endif
       sh_exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT);
     }
 
@@ -1523,6 +1562,9 @@ open_shell_script (script_name)
       errno = EINVAL;
 #endif
       file_error (filename);
+#if defined (JOB_CONTROL)
+      end_job_control ();      /* just in case we were run as bash -i script */
+#endif
       sh_exit (EX_NOINPUT);
     }
 
@@ -1571,11 +1613,17 @@ open_shell_script (script_name)
              errno = e;
              file_error (filename);
            }
+#if defined (JOB_CONTROL)
+         end_job_control ();   /* just in case we were run as bash -i script */
+#endif
          exit (EX_NOEXEC);
        }
       else if (sample_len > 0 && (check_binary_file (sample, sample_len)))
        {
          internal_error (_("%s: cannot execute binary file"), filename);
+#if defined (JOB_CONTROL)
+         end_job_control ();   /* just in case we were run as bash -i script */
+#endif
          exit (EX_BINARY_FILE);
        }
       /* Now rewind the file back to the beginning. */
@@ -1722,6 +1770,7 @@ init_interactive ()
   interactive = 1;
 #if defined (HISTORY)
   remember_on_history = enable_history_list = 1;       /* XXX */
+  histexp_flag = history_expansion;                    /* XXX */
 #endif
 }
 
@@ -1889,6 +1938,7 @@ shell_reinitialize ()
   forced_interactive = interactive_shell = 0;
   subshell_environment = running_in_background = 0;
   expand_aliases = 0;
+  bash_argv_initialized = 0;
 
   /* XXX - should we set jobs_m_flag to 0 here? */
 
@@ -1939,7 +1989,11 @@ show_shell_usage (fp, extra)
 
   for (i = 0, set_opts = 0; shell_builtins[i].name; i++)
     if (STREQ (shell_builtins[i].name, "set"))
-      set_opts = savestring (shell_builtins[i].short_doc);
+      {
+       set_opts = savestring (shell_builtins[i].short_doc);
+       break;
+      }
+
   if (set_opts)
     {
       s = strchr (set_opts, '[');
diff --git a/shell.h b/shell.h
index ce08879105395991715d4cbd14a5187b7996f948..807260523dd1b67c33ccbb5f8c8be8fc9cf37f6c 100644 (file)
--- a/shell.h
+++ b/shell.h
@@ -72,6 +72,7 @@ extern int EOF_Reached;
 #define EX_REDIRFAIL   259     /* redirection failed */
 #define EX_BADASSIGN   260     /* variable assignment error */
 #define EX_EXPFAIL     261     /* word expansion failed */
+#define EX_DISKFALLBACK        262     /* fall back to disk command from builtin */
 
 /* Flag values that control parameter pattern substitution. */
 #define MATCH_ANY      0x000
@@ -90,14 +91,43 @@ extern char **shell_environment;
 extern WORD_LIST *rest_of_args;
 
 /* Generalized global variables. */
+extern char *command_execution_string;
+
 extern int debugging_mode;
 extern int executing, login_shell;
 extern int interactive, interactive_shell;
 extern int startup_state;
+extern int reading_shell_script;
+extern int shell_initialized;
+extern int bash_argv_initialized;
 extern int subshell_environment;
+extern int current_command_number;
+extern int indirection_level;
 extern int shell_compatibility_level;
+extern int running_under_emacs;
+
+extern int posixly_correct;
+extern int no_line_editing;
+
+extern char *shell_name;
+extern char *current_host_name;
+
+extern int subshell_argc;
+extern char **subshell_argv;
+extern char **subshell_envp;
+
+/* variables managed using shopt */
+extern int hup_on_exit;
+extern int check_jobs_at_exit;
+extern int autocd;
+extern int check_window_size;
+
+/* from version.c */
+extern int build_version, patch_level;
+extern char *dist_version, *release_status;
 
 extern int locale_mb_cur_max;
+extern int locale_utf8locale;
 
 /* Structure to pass around that holds a bitmap of file descriptors
    to close, and the size of that structure.  Used in execute_cmd.c. */
diff --git a/sig.c b/sig.c
index e5bb73997a89bc125b3c1df637c3bc355a93ab6a..f8a0e0f7083ac0064b8d5b27668d48cbe3c2ae32 100644 (file)
--- a/sig.c
+++ b/sig.c
@@ -1,6 +1,6 @@
 /* sig.c - interface for shell signal handlers and signal initialization. */
 
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -35,6 +35,7 @@
 #include "bashintl.h"
 
 #include "shell.h"
+#include "execute_cmd.h"
 #if defined (JOB_CONTROL)
 #include "jobs.h"
 #endif /* JOB_CONTROL */
 #  include "bashhist.h"
 #endif
 
-extern int last_command_exit_value;
-extern int last_command_exit_signal;
-extern int return_catch_flag;
-extern int running_trap;
-extern int loop_level, continuing, breaking, funcnest;
-extern int executing_list;
-extern int comsub_ignore_return;
-extern int parse_and_execute_level, shell_initialized;
-#if defined (HISTORY)
-extern int history_lines_this_session;
-#endif
-extern int no_line_editing;
-extern int wait_signal_received;
-extern int wait_intr_flag;
-extern sh_builtin_func_t *this_shell_builtin;
-
 extern void initialize_siglist ();
 
 #if !defined (JOB_CONTROL)
@@ -128,6 +113,7 @@ struct termsig {
      int signum;
      SigHandler *orig_handler;
      int orig_flags;
+     int core_dump;
 };
 
 #define NULL_HANDLER (SigHandler *)SIG_DFL
@@ -145,15 +131,15 @@ static struct termsig terminating_signals[] = {
 #endif
 
 #ifdef SIGILL
-{  SIGILL, NULL_HANDLER, 0 },
+{  SIGILL, NULL_HANDLER, 0, 1},
 #endif
 
 #ifdef SIGTRAP
-{  SIGTRAP, NULL_HANDLER, 0 },
+{  SIGTRAP, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGIOT
-{  SIGIOT, NULL_HANDLER, 0 },
+{  SIGIOT, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGDANGER
@@ -165,19 +151,19 @@ static struct termsig terminating_signals[] = {
 #endif
 
 #ifdef SIGFPE
-{  SIGFPE, NULL_HANDLER, 0 },
+{  SIGFPE, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGBUS
-{  SIGBUS, NULL_HANDLER, 0 },
+{  SIGBUS, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGSEGV
-{  SIGSEGV, NULL_HANDLER, 0 },
+{  SIGSEGV, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGSYS
-{  SIGSYS, NULL_HANDLER, 0 },
+{  SIGSYS, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGPIPE
@@ -192,12 +178,14 @@ static struct termsig terminating_signals[] = {
 {  SIGTERM, NULL_HANDLER, 0 },
 #endif
 
+/* These don't generate core dumps on anything but Linux, but we're doing
+   this just for Linux anyway. */
 #ifdef SIGXCPU
-{  SIGXCPU, NULL_HANDLER, 0 },
+{  SIGXCPU, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGXFSZ
-{  SIGXFSZ, NULL_HANDLER, 0 },
+{  SIGXFSZ, NULL_HANDLER, 0, 1 },
 #endif
 
 #ifdef SIGVTALRM
@@ -228,6 +216,7 @@ static struct termsig terminating_signals[] = {
 #define XSIG(x) (terminating_signals[x].signum)
 #define XHANDLER(x) (terminating_signals[x].orig_handler)
 #define XSAFLAGS(x) (terminating_signals[x].orig_flags)
+#define XCOREDUMP(x) (terminating_signals[x].core_dump)
 
 static int termsigs_initialized = 0;
 
@@ -279,7 +268,6 @@ initialize_terminating_signals ()
        sigaction (XSIG (i), &oact, (struct sigaction *)NULL);
 #endif /* SIGPROF && !_MINIX */
     }
-
 #else /* !HAVE_POSIX_SIGNALS */
 
   for (i = 0; i < TERMSIGS_LENGTH; i++)
@@ -375,7 +363,6 @@ reset_terminating_signals ()
 
   termsigs_initialized = 0;
 }
-#undef XSIG
 #undef XHANDLER
 
 /* Run some of the cleanups that should be performed when we run
@@ -386,7 +373,7 @@ top_level_cleanup ()
 {
   /* Clean up string parser environment. */
   while (parse_and_execute_level)
-    parse_and_execute_cleanup ();
+    parse_and_execute_cleanup (-1);
 
 #if defined (PROCESS_SUBSTITUTION)
   unlink_fifo_list ();
@@ -424,7 +411,7 @@ throw_to_top_level ()
 
   /* Clean up string parser environment. */
   while (parse_and_execute_level)
-    parse_and_execute_cleanup ();
+    parse_and_execute_cleanup (-1);
 
   if (running_trap > 0)
     run_trap_cleanup (running_trap - 1);
@@ -557,6 +544,8 @@ termsig_handler (sig)
      int sig;
 {
   static int handling_termsig = 0;
+  int i, core;
+  sigset_t mask;
 
   /* Simple semaphore to keep this function from being executed multiple
      times.  Since we no longer are running as a signal handler, we don't
@@ -585,6 +574,7 @@ termsig_handler (sig)
 #if defined (JOB_CONTROL)
   if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
     hangup_all_jobs ();
+
   if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
     end_job_control ();
 #endif /* JOB_CONTROL */
@@ -598,9 +588,41 @@ termsig_handler (sig)
   executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0;
 
   run_exit_trap ();    /* XXX - run exit trap possibly in signal context? */
+
+  /* We don't change the set of blocked signals. If a user starts the shell
+     with a terminating signal blocked, we won't get here (and if by some
+     magic chance we do, we'll exit below). */
   set_signal_handler (sig, SIG_DFL);
+
   kill (getpid (), sig);
+
+  if (dollar_dollar_pid != 1)
+    exit (128+sig);            /* just in case the kill fails? */
+
+  /* We get here only under extraordinary circumstances. */
+
+  /* We are PID 1, and the kill above failed to kill the process. We assume
+     this means that we are running as an init process in a pid namespace
+     on Linux. In this case, we can't send ourselves a fatal signal, so we
+     determine whether or not we should have generated a core dump with the
+     kill call and attempt to trick the kernel into generating one if
+     necessary. */
+  sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask);
+  for (i = core = 0; i < TERMSIGS_LENGTH; i++)
+    {
+      set_signal_handler (XSIG (i), SIG_DFL);
+      sigdelset (&mask, XSIG (i));
+      if (sig == XSIG (i))
+       core = XCOREDUMP (i);
+    }
+  sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL);
+
+  if (core)
+    *((volatile unsigned long *) NULL) = 0xdead0000 + sig;     /* SIGSEGV */
+
+  exit (128+sig);
 }
+#undef XSIG
 
 /* What we really do when SIGINT occurs. */
 sighandler
@@ -738,6 +760,12 @@ set_signal_handler (sig, handler)
 #if defined (SIGCHLD)
   if (sig == SIGCHLD)
     act.sa_flags |= SA_RESTART;                /* XXX */
+#endif
+  /* Let's see if we can keep SIGWINCH from interrupting interruptible system
+     calls, like open(2)/read(2)/write(2) */
+#if defined (SIGWINCH)
+  if (sig == SIGWINCH)
+    act.sa_flags |= SA_RESTART;                /* XXX */
 #endif
   /* If we're installing a SIGTERM handler for interactive shells, we want
      it to be as close to SIG_IGN as possible. */
diff --git a/subst.c b/subst.c
index fc00cab08fbb8c4ea2d6014c9de112627d1103c1..95591878ca568903f93e3cdd5b5dd9a35bf095bf 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -4,7 +4,7 @@
 /* ``Have a little faith, there's magic in the night.  You ain't a
      beauty, but, hey, you're alright.'' */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -131,7 +131,6 @@ extern int errno;
    the embedded `break'. The dangling else accommodates a trailing semicolon;
    we could also put in a do ; while (0) */
 
-   
 #define CHECK_STRING_OVERRUN(oind, ind, len, ch) \
   if (ind >= len) \
     { \
@@ -180,20 +179,16 @@ WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL;
    errors.  Enabled when doing completion and prompt string expansion. */
 int no_longjmp_on_fatal_error = 0;
 
+/* 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;
+
 /* Extern functions and variables from different files. */
-extern int last_command_exit_value, last_command_exit_signal;
-extern int subshell_environment, running_in_background;
-extern int subshell_level, parse_and_execute_level, sourcelevel;
-extern int eof_encountered, line_number;
-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;
-extern int tempenv_assign_error;
-extern int builtin_ignoring_errexit;
 
 #if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION)
 extern PROCESS *last_procsub_child;
@@ -203,13 +198,6 @@ extern PROCESS *last_procsub_child;
 extern wchar_t *wcsdup __P((const wchar_t *));
 #endif
 
-/* 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
@@ -221,13 +209,17 @@ static int glob_argv_flags_size;
 
 static WORD_LIST *cached_quoted_dollar_at = 0;
 
+/* Distinguished error values to return from expansion functions */
 static WORD_LIST expand_word_error, expand_word_fatal;
 static WORD_DESC expand_wdesc_error, expand_wdesc_fatal;
-static char expand_param_error, expand_param_fatal;
+static char expand_param_error, expand_param_fatal, expand_param_unset;
 static char extract_string_error, extract_string_fatal;
 
-/* Set by expand_word_unsplit; used to inhibit splitting and re-joining
-   $* on $IFS, primarily when doing assignment statements. */
+/* Set by expand_word_unsplit and several of the expand_string_XXX functions;
+   used to inhibit splitting and re-joining $* on $IFS, primarily when doing
+   assignment statements.  The idea is that if we're in a context where this
+   is set, we're not going to be performing word splitting, so we use the same
+   rules to expand $* as we would if it appeared within double quotes. */
 static int expand_no_split_dollar_star = 0;
 
 /* A WORD_LIST of words to be expanded by expand_word_list_internal,
@@ -243,7 +235,10 @@ 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 *expand_string_for_rhs __P((char *, int, int, int, int *, int *));
+static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *));
+
+static char *quote_escapes_internal __P((const char *, int));
 
 static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
 static WORD_LIST *list_dequote_escapes __P((WORD_LIST *));
@@ -305,11 +300,11 @@ static char *parameter_list_transform __P((int, int, int));
 #if defined ARRAY_VARS
 static char *array_transform __P((int, SHELL_VAR *, char *, int));
 #endif
-static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int));
+static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int, int));
 
 static char *process_substitute __P((char *, int));
 
-static char *read_comsub __P((int, int, int *));
+static char *read_comsub __P((int, int, int, int *));
 
 #ifdef ARRAY_VARS
 static arrayind_t array_length_reference __P((char *));
@@ -323,7 +318,7 @@ static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int, arrayi
 static char *parameter_brace_find_indir __P((char *, int, int, int));
 static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
 static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int, int *, int *));
-static void parameter_brace_expand_error __P((char *, char *));
+static void parameter_brace_expand_error __P((char *, char *, int));
 
 static int valid_length_expression __P((char *));
 static intmax_t parameter_brace_expand_length __P((char *));
@@ -332,7 +327,7 @@ static char *skiparith __P((char *, int));
 static int verify_substring_values __P((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *));
 static int get_var_and_type __P((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **));
 static char *mb_substring __P((char *, int, int));
-static char *parameter_brace_substring __P((char *, char *, int, char *, int, int));
+static char *parameter_brace_substring __P((char *, char *, int, char *, int, int, int));
 
 static int shouldexp_replacement __P((char *));
 
@@ -341,7 +336,7 @@ static char *pos_params_pat_subst __P((char *, char *, char *, int));
 static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int, int));
 
 static char *pos_params_casemod __P((char *, char *, int, int));
-static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int));
+static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int, int));
 
 static WORD_DESC *parameter_brace_expand __P((char *, int *, int, int, int *, int *));
 static WORD_DESC *param_expand __P((char *, int *, int, int *, int *, int *, int *, int));
@@ -393,10 +388,10 @@ dump_word_flags (flags)
       f &= ~W_ASSIGNARRAY;
       fprintf (stderr, "W_ASSIGNARRAY%s", f ? "|" : "");
     }
-  if (f & W_HASCTLESC)
+  if (f & W_SAWQUOTEDNULL)
     {
-      f &= ~W_HASCTLESC;
-      fprintf (stderr, "W_HASCTLESC%s", f ? "|" : "");
+      f &= ~W_SAWQUOTEDNULL;
+      fprintf (stderr, "W_SAWQUOTEDNULL%s", f ? "|" : "");
     }
   if (f & W_NOPROCSUB)
     {
@@ -453,6 +448,11 @@ dump_word_flags (flags)
       f &= ~W_ASSIGNRHS;
       fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : "");
     }
+  if (f & W_NOASSNTILDE)
+    {
+      f &= ~W_NOASSNTILDE;
+      fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : "");
+    }
   if (f & W_NOCOMSUB)
     {
       f &= ~W_NOCOMSUB;
@@ -518,6 +518,11 @@ dump_word_flags (flags)
       f &= ~W_COMPLETE;
       fprintf (stderr, "W_COMPLETE%s", f ? "|" : "");
     }
+  if (f & W_CHKLOCAL)
+    {
+      f &= ~W_CHKLOCAL;
+      fprintf (stderr, "W_CHKLOCAL%s", f ? "|" : "");
+    }
   
   fprintf (stderr, "\n");
   fflush (stderr);
@@ -591,6 +596,7 @@ quoted_strlen (s)
 }
 #endif
 
+#ifdef INCLUDE_UNUSED
 /* 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
@@ -618,7 +624,6 @@ quoted_strchr (s, c, flags)
   return ((char *)NULL);
 }
 
-#if defined (INCLUDE_UNUSED)
 /* Return 1 if CHARACTER appears in an unquoted portion of
    STRING.  Return 0 otherwise.  CHARACTER must be a single-byte character. */
 static int
@@ -798,12 +803,12 @@ string_extract (string, sindex, charlist, flags)
            break;
        }
 #if defined (ARRAY_VARS)
-      else if ((flags & SX_VARNAME) && c == '[')
+      else if ((flags & SX_VARNAME) && c == LBRACK)
        {
          int ni;
          /* If this is an array subscript, skip over it and continue. */
          ni = skipsubscript (string, i, 0);
-         if (string[ni] == ']')
+         if (string[ni] == RBRACK)
            i = ni;
        }
 #endif
@@ -880,16 +885,16 @@ string_extract_double_quoted (string, sindex, flags)
             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 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++] = '\\';
@@ -918,7 +923,7 @@ add_one_character:
        {
          if (c == '`')
            backquote = 0;
-         temp[j++] = c;
+         temp[j++] = c;        /* COPY_CHAR_I? */
          i++;
          continue;
        }
@@ -954,6 +959,7 @@ add_one_character:
              ret = string + i + 2;
            }
 
+         /* XXX - CHECK_STRING_OVERRUN here? */
          for (t = 0; ret[t]; t++, j++)
            temp[j] = ret[t];
          temp[j] = string[si];
@@ -1134,7 +1140,6 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
 {
   register int i;
 #if defined (HANDLE_MULTIBYTE)
-  size_t clen;
   wchar_t *wcharlist;
 #endif
   int c;
@@ -1149,13 +1154,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
     }
 
   i = *sindex;
-#if 0
-  /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need
-     this only if MB_CUR_MAX > 1. */
-  slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1;
-#endif
 #if defined (HANDLE_MULTIBYTE)
-  clen = strlen (charlist);
   wcharlist = 0;
 #endif
   while (c = string[i])
@@ -1166,6 +1165,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
       if ((flags & SX_NOCTLESC) == 0 && c == CTLESC)
        {
          i += 2;
+         CHECK_STRING_OVERRUN (i, i, slen, c);
          continue;
        }
       /* Even if flags contains SX_NOCTLESC, we let CTLESC quoting CTLNUL
@@ -1174,11 +1174,15 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
       else if ((flags & SX_NOESCCTLNUL) == 0 && c == CTLESC && string[i+1] == CTLNUL)
        {
          i += 2;
+         CHECK_STRING_OVERRUN (i, i, slen, c);
          continue;
        }
 
 #if defined (HANDLE_MULTIBYTE)
-      mblength = MBLEN (string + i, slen - i);
+      if (locale_utf8locale && slen > i && UTF8_SINGLEBYTE (string[i]))
+       mblength = (string[i] != 0) ? 1 : 0;
+      else
+       mblength = MBLEN (string + i, slen - i);
       if (mblength > 1)
        {
          wchar_t wc;
@@ -1267,6 +1271,7 @@ extract_process_subst (string, starter, sindex, xflags)
      int xflags;
 {
 #if 0
+  /* XXX - check xflags&SX_COMPLETE here? */
   return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
 #else
   xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
@@ -1287,8 +1292,8 @@ extract_array_assignment_list (string, sindex)
   int slen;
   char *ret;
 
-  slen = strlen (string);      /* ( */
-  if (string[slen - 1] == ')')
+  slen = strlen (string);
+  if (string[slen - 1] == RPAREN)
    {
       ret = substring (string, *sindex, slen - 1);
       *sindex = slen - 1;
@@ -1383,6 +1388,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
         {
           si = i + 2;
           t = extract_command_subst (string, &si, flags|SX_NOALLOC);
+          CHECK_STRING_OVERRUN (i, si, slen, c);
           i = si + 1;
           continue;
         }
@@ -1392,6 +1398,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
        {
          si = i + len_opener;
          t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|SX_NOALLOC);
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si + 1;
          continue;
        }
@@ -1401,6 +1408,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
        {
          si = i + len_alt_opener;
          t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|SX_NOALLOC);
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si + 1;
          continue;
        }
@@ -1420,6 +1428,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
        {
          si = i + 1;
          t = string_extract (string, &si, "`", flags|SX_NOALLOC);
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si + 1;
          continue;
        }
@@ -1539,7 +1548,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
          t = string_extract (string, &si, "`", flags|SX_NOALLOC);
 
          CHECK_STRING_OVERRUN (i, si, slen, c);
-    
+
          i = si + 1;
          continue;
        }
@@ -1550,9 +1559,26 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
        {
          si = i + 2;
          t = extract_command_subst (string, &si, flags|SX_NOALLOC);
+
+         CHECK_STRING_OVERRUN (i, si, slen, c);
+
+         i = si + 1;
+         continue;
+       }
+
+#if defined (PROCESS_SUBSTITUTION)
+      /* Technically this should only work at the start of a word */
+      if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN)
+       {
+         si = i + 2;
+         t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags|SX_NOALLOC);
+
+         CHECK_STRING_OVERRUN (i, si, slen, c);
+
          i = si + 1;
          continue;
        }
+#endif
 
       /* Pass the contents of double-quoted strings through verbatim. */
       if (c == '"')
@@ -1577,6 +1603,16 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
           continue;
        }
 
+#if defined (ARRAY_VARS)
+      if (c == LBRACK && dolbrace_state == DOLBRACE_PARAM)
+       {
+         si = skipsubscript (string, i, 0);
+         CHECK_STRING_OVERRUN (i, si, slen, c);
+         if (string[si] == RBRACK)
+           c = string[i = si];
+       }
+#endif
+
       /* move past this character, which was not special. */
       ADVANCE_CHAR (string, slen, i);
 
@@ -1683,7 +1719,8 @@ unquote_bang (string)
    parse array subscripts.  FLAGS & 1 means to not attempt to skip over
    matched pairs of quotes or backquotes, or skip word expansions; it is
    intended to be used after expansion has been performed and during final
-   assignment parsing (see arrayfunc.c:assign_compound_array_list()). */
+   assignment parsing (see arrayfunc.c:assign_compound_array_list()) or
+   during execution by a builtin which has already undergone word expansion. */
 static int
 skip_matched_pair (string, start, open, close, flags)
      const char *string;
@@ -1712,7 +1749,7 @@ skip_matched_pair (string, start, open, close, flags)
          ADVANCE_CHAR (string, slen, i);
          continue;
        }
-      else if (c == '\\')
+      else if ((flags & 1) == 0 && c == '\\')
        {
          pass_next = 1;
          i++;
@@ -1757,6 +1794,7 @@ skip_matched_pair (string, start, open, close, flags)
          if (string[si] == '\0')
            CQ_RETURN(si);
 
+         /* XXX - extract_command_subst here? */
          if (string[i+1] == LPAREN)
            temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */
          else
@@ -1778,6 +1816,9 @@ skip_matched_pair (string, start, open, close, flags)
 }
 
 #if defined (ARRAY_VARS)
+/* Flags has 1 as a reserved value, since skip_matched_pair uses it for
+   skipping over quoted strings and taking the first instance of the
+   closing character. */
 int
 skipsubscript (string, start, flags)
      const char *string;
@@ -1904,6 +1945,7 @@ skip_to_delim (string, start, delims, flags)
            temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */
          else
            temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC);
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si;
          if (string[i] == '\0')        /* don't increment i past EOS in loop */
            break;
@@ -1916,12 +1958,9 @@ skip_to_delim (string, start, delims, flags)
          si = i + 2;
          if (string[si] == '\0')
            CQ_RETURN(si);
-#if 1
+
          temp = extract_delimited_string (string, &si, (c == '<') ? "<(" : ">(", "(", ")", SX_COMMAND|SX_NOALLOC); /* )) */
-#else
-         temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
-         free (temp);          /* XXX - not using SX_NOALLOC here yet */
-#endif
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si;
          if (string[i] == '\0')
            break;
@@ -1941,6 +1980,7 @@ skip_to_delim (string, start, delims, flags)
          open[2] = '\0';
          temp = extract_delimited_string (string, &si, open, "(", ")", SX_NOALLOC); /* ) */
 
+         CHECK_STRING_OVERRUN (i, si, slen, c);
          i = si;
          if (string[i] == '\0')        /* don't increment i past EOS in loop */
            break;
@@ -1983,10 +2023,9 @@ skip_to_histexp (string, start, delims, flags)
      char *delims;
      int flags;
 {
-  int i, pass_next, backq, dquote, si, c, oldjmp;
+  int i, pass_next, backq, dquote, c, oldjmp;
   int histexp_comsub, histexp_backq, old_dquote;
   size_t slen;
-  char *temp, open[3];
   DECLARE_MBSTATE;
 
   slen = strlen (string + start) + start;
@@ -2209,7 +2248,7 @@ unclosed_pair (string, eindex, openstr)
    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. */
+   DELIMS delimit separate fields.  This is used by programmable completion. */
 WORD_LIST *
 split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
      char *string;
@@ -2302,10 +2341,10 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
          /* 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]))
+           while (member (string[te], d) && spctabnl (string[te]) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"')))
              te++;
          else
-           while (member (string[te], d2))
+           while (member (string[te], d2) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"')))
              te++;
        }
 
@@ -2338,7 +2377,8 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
        break;
 
       i = te;
-      while (member (string[i], d) && (ifs_split || spctabnl(string[i])))
+      /* XXX - honor SD_NOQUOTEDELIM here */
+      while (member (string[i], d) && (ifs_split || spctabnl(string[i])) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"')))
        i++;
 
       if (string[i])
@@ -2501,9 +2541,12 @@ ifs_firstchar (lenp)
    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." */
+/* Posix interpretation 888 changes this when IFS is null by specifying
+   that when unquoted, this expands to separate arguments */
 char *
-string_list_dollar_star (list)
+string_list_dollar_star (list, quoted, flags)
      WORD_LIST *list;
+     int quoted, flags;
 {
   char *ret;
 #if defined (HANDLE_MULTIBYTE)
@@ -2582,7 +2625,8 @@ string_list_dollar_at (list, quoted, flags)
 #  if !defined (__GNUC__)
   sep = (char *)xmalloc (MB_CUR_MAX + 1);
 #  endif /* !__GNUC__ */
-  /* XXX - bash-4.4/bash-5.0 testing PF_ASSIGNRHS */
+  /* XXX - testing PF_ASSIGNRHS to make sure positional parameters are
+     separated with a space even when word splitting will not occur. */
   if (flags & PF_ASSIGNRHS)
     {
       sep[0] = ' ';
@@ -2606,11 +2650,12 @@ string_list_dollar_at (list, quoted, flags)
       sep[0] = ' ';
       sep[1] = '\0';
     }
-#else
-  /* XXX - bash-4.4/bash-5.0 test PF_ASSIGNRHS */
+#else  /* !HANDLE_MULTIBYTE */
+  /* XXX - PF_ASSIGNRHS means no word splitting, so we want positional
+     parameters separated by a space. */
   sep[0] = ((flags & PF_ASSIGNRHS) || ifs == 0 || *ifs == 0) ? ' ' : *ifs;
   sep[1] = '\0';
-#endif
+#endif /* !HANDLE_MULTIBYTE */
 
   /* XXX -- why call quote_list if ifs == 0?  we can get away without doing
      it now that quote_escapes quotes spaces */
@@ -2642,7 +2687,7 @@ string_list_pos_params (pchar, list, quoted)
     {
       tlist = quote_list (list);
       word_list_remove_quoted_nulls (tlist);
-      ret = string_list_dollar_star (tlist);
+      ret = string_list_dollar_star (tlist, 0, 0);
     }
   else if (pchar == '*' && (quoted & Q_HERE_DOCUMENT))
     {
@@ -2650,12 +2695,14 @@ string_list_pos_params (pchar, list, quoted)
       word_list_remove_quoted_nulls (tlist);
       ret = string_list (tlist);
     }
+  else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */
+    ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0);   /* Posix interp 888 */
   else if (pchar == '*')
     {
       /* Even when unquoted, string_list_dollar_star does the right thing
         making sure that the first character of $IFS is used as the
         separator. */
-      ret = string_list_dollar_star (list);
+      ret = string_list_dollar_star (list, quoted, 0);
     }
   else if (pchar == '@' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
     /* We use string_list_dollar_at, but only if the string is quoted, since
@@ -2666,8 +2713,10 @@ string_list_pos_params (pchar, list, quoted)
        the elements of $@ are separated by the first character of $IFS for
        later splitting. */
     ret = string_list_dollar_at (list, quoted, 0);
+  else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */
+    ret = string_list_dollar_at (list, quoted, 0);     /* Posix interp 888 */
   else if (pchar == '@')
-    ret = string_list_dollar_star (list);
+    ret = string_list_dollar_star (list, quoted, 0);
   else
     ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (list) : list);
 
@@ -2706,6 +2755,13 @@ string_list_pos_params (pchar, list, quoted)
                                              : (c) == (separators)[0]) \
                           : 0)
 
+/* member of the space character class in the current locale */
+#define ifs_whitespace(c)      ISSPACE(c)
+
+/* "adjacent IFS white space" */
+#define ifs_whitesep(c)        ((sh_style_split || separators == 0) ? spctabnl (c) \
+                                                            : ifs_whitespace (c))
+
 WORD_LIST *
 list_string (string, separators, quoted)
      register char *string, *separators;
@@ -2733,10 +2789,12 @@ list_string (string, separators, quoted)
   slen = 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. */
+     STRING is quoted or if there are no separator characters. We use the
+     Posix definition of whitespace as a member of the space character
+     class in the current locale. */
   if (!quoted || !separators || !*separators)
     {
-      for (s = string; *s && spctabnl (*s) && issep (*s); s++);
+      for (s = string; *s && issep (*s) && ifs_whitespace (*s); s++);
 
       if (!*s)
        return ((WORD_LIST *)NULL);
@@ -2747,13 +2805,13 @@ list_string (string, separators, quoted)
   /* 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
+       skip sequences of whitespace characters as long as they are separators
      This obeys the field splitting rules in Posix.2. */
-  slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 1;
+  slen = STRLEN (string);
   for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; )
     {
-      /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
-        unless multibyte chars are possible. */
+      /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
+        possible, but need it in string_extract_verbatim for bounds checking */
       current_word = string_extract_verbatim (string, slen, &sindex, separators, xflags);
       if (current_word == 0)
        break;
@@ -2782,7 +2840,7 @@ list_string (string, separators, 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]))
+      else if (!sh_style_split && !ifs_whitespace (string[sindex]))
        {
          t = alloc_word_desc ();
          t->word = make_quoted_char ('\0');
@@ -2793,7 +2851,7 @@ list_string (string, separators, quoted)
       free (current_word);
 
       /* Note whether or not the separator is IFS whitespace, used later. */
-      whitesep = string[sindex] && spctabnl (string[sindex]);
+      whitesep = string[sindex] && ifs_whitesep (string[sindex]);
 
       /* Move past the current separator character. */
       if (string[sindex])
@@ -2802,21 +2860,21 @@ list_string (string, separators, quoted)
          ADVANCE_CHAR (string, slen, sindex);
        }
 
-      /* Now skip sequences of space, tab, or newline characters if they are
+      /* Now skip sequences of whitespace characters if they are
         in the list of separators. */
-      while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex]))
+      while (string[sindex] && ifs_whitesep (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]))
+      if (string[sindex] && whitesep && issep (string[sindex]) && !ifs_whitesep (string[sindex]))
        {
          sindex++;
          /* An IFS character that is not IFS white space, along with any
             adjacent IFS white space, shall delimit a field. (SUSv3) */
-         while (string[sindex] && spctabnl (string[sindex]) && isifs (string[sindex]))
+         while (string[sindex] && ifs_whitesep (string[sindex]) && isifs (string[sindex]))
            sindex++;
        }
     }
@@ -2832,6 +2890,7 @@ list_string (string, separators, quoted)
    XXX - this function is very similar to list_string; they should be
         combined - XXX */
 
+/* character is in $IFS */
 #define islocalsep(c)  (local_cmap[(unsigned char)(c)] != 0)
 
 char *
@@ -2866,17 +2925,17 @@ get_word_from_string (stringp, separators, endptr)
      long as those characters appear in SEPARATORS.  This happens if
      SEPARATORS == $' \t\n' or if IFS is unset. */
   if (sh_style_split || separators == 0)
-    {
-      for (; *s && spctabnl (*s) && islocalsep (*s); s++);
+    for (; *s && spctabnl (*s) && islocalsep (*s); s++);
+  else
+    for (; *s && ifs_whitespace (*s) && islocalsep (*s); s++);
 
-      /* If the string is nothing but whitespace, update it and return. */
-      if (!*s)
-       {
-         *stringp = s;
-         if (endptr)
-           *endptr = s;
-         return ((char *)NULL);
-       }
+  /* 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.
@@ -2896,7 +2955,7 @@ get_word_from_string (stringp, separators, endptr)
     *endptr = s + sindex;
 
   /* Note whether or not the separator is IFS whitespace, used later. */
-  whitesep = s[sindex] && spctabnl (s[sindex]);
+  whitesep = s[sindex] && ifs_whitesep (s[sindex]);
 
   /* Move past the current separator character. */
   if (s[sindex])
@@ -2914,12 +2973,12 @@ get_word_from_string (stringp, separators, endptr)
      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 && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
+  if (s[sindex] && whitesep && islocalsep (s[sindex]) && !ifs_whitesep (s[sindex]))
     {
       sindex++;
       /* An IFS character that is not IFS white space, along with any adjacent
         IFS white space, shall delimit a field. */
-      while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
+      while (s[sindex] && ifs_whitesep (s[sindex]) && islocalsep(s[sindex]))
        sindex++;
     }
 
@@ -3016,49 +3075,59 @@ do_compound_assignment (name, value, flags)
      int flags;
 {
   SHELL_VAR *v;
-  int mklocal, mkassoc, mkglobal;
+  int mklocal, mkassoc, mkglobal, chklocal;
   WORD_LIST *list;
+  char *newname;       /* used for local nameref references */
 
   mklocal = flags & ASS_MKLOCAL;
   mkassoc = flags & ASS_MKASSOC;
   mkglobal = flags & ASS_MKGLOBAL;
+  chklocal = flags & ASS_CHKLOCAL;
 
   if (mklocal && variable_context)
     {
-      v = find_variable (name);
+      v = find_variable (name);                /* follows namerefs */
+      newname = (v == 0) ? nameref_transform_name (name, flags) : v->name;
       if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
        {
-         if (v && readonly_p (v))
+         if (readonly_p (v))
            err_readonly (name);
          return (v);   /* XXX */
        }
       list = expand_compound_array_assignment (v, value, flags);
       if (mkassoc)
-       v = make_local_assoc_variable (name);
+       v = make_local_assoc_variable (newname, 0);
       else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context)
-        v = make_local_array_variable (name, 0);
+        v = make_local_array_variable (newname, 0);
       if (v)
        assign_compound_array_list (v, list, flags);
       if (list)
        dispose_words (list);
     }
-  /* In a function but forcing assignment in global context */
+  /* In a function but forcing assignment in global context. CHKLOCAL means to
+     check for an existing local variable first. */
   else if (mkglobal && variable_context)
     {
-      v = find_global_variable (name);
+      v = chklocal ? find_variable (name) : 0;
+      if (v && (local_p (v) == 0 || v->context != variable_context))
+       v = 0;
+      if (v == 0)
+        v = find_global_variable (name);
       if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
        {
-         if (v && readonly_p (v))
+         if (readonly_p (v))
            err_readonly (name);
          return (v);   /* XXX */
        }
+      /* sanity check */
+      newname = (v == 0) ? nameref_transform_name (name, flags) : name;
       list = expand_compound_array_assignment (v, value, flags);
       if (v == 0 && mkassoc)
-       v = make_new_assoc_variable (name);
+       v = make_new_assoc_variable (newname);
       else if (v && mkassoc && assoc_p (v) == 0)
        v = convert_var_to_assoc (v);
       else if (v == 0)
-       v = make_new_array_variable (name);
+       v = make_new_array_variable (newname);
       else if (v && mkassoc == 0 && array_p (v) == 0)
        v = convert_var_to_array (v);
       if (v)
@@ -3071,7 +3140,7 @@ do_compound_assignment (name, value, flags)
       v = assign_array_from_string (name, value, flags);
       if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
        {
-         if (v && readonly_p (v))
+         if (readonly_p (v))
            err_readonly (name);
          return (v);   /* XXX */
        }
@@ -3155,7 +3224,7 @@ do_assignment_internal (word, expand)
     aflags |= ASS_APPEND;
 
 #if defined (ARRAY_VARS)
-  if (t = mbschr (name, '['))  /*]*/
+  if (t = mbschr (name, LBRACK))
     {
       if (assign_list)
        {
@@ -3168,6 +3237,8 @@ do_assignment_internal (word, expand)
     }
   else if (assign_list)
     {
+      if ((word->flags & W_ASSIGNARG) && (word->flags & W_CHKLOCAL))
+       aflags |= ASS_CHKLOCAL;
       if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0)
        aflags |= ASS_MKLOCAL;
       if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL))
@@ -3303,7 +3374,7 @@ string_rest_of_args (dollar_star)
   char *string;
 
   list = list_rest_of_args ();
-  string = dollar_star ? string_list_dollar_star (list) : string_list (list);
+  string = dollar_star ? string_list_dollar_star (list, 0, 0) : string_list (list);
   dispose_words (list);
   return (string);
 }
@@ -3348,7 +3419,6 @@ pos_params (string, start, end, quoted)
       t = params;
       params = params->next;
     }
-
   t->next = (WORD_LIST *)NULL;
 
   ret = string_list_pos_params (string[0], h, quoted);
@@ -3494,7 +3564,7 @@ expand_arith_string (string, quoted)
     {
       /* This is expanded version of expand_string_internal as it's called by
         expand_string_leave_quoted  */
-      td.flags = W_NOPROCSUB;  /* don't want process substitution */
+      td.flags = W_NOPROCSUB|W_NOTILDE;        /* don't want process substitution or tilde expansion */
       td.word = savestring (string);
       list = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
       /* This takes care of the calls from expand_string_leave_quoted and
@@ -3584,7 +3654,7 @@ cond_expand_word (w, special)
          /* Need to figure out whether or not we should call dequote_escapes
             or a new dequote_ctlnul function here, and under what
             circumstances. */
-         qflags = QGLOB_CVTNULL;
+         qflags = QGLOB_CVTNULL|QGLOB_CTLESC;
          if (special == 2)
            qflags |= QGLOB_REGEXP;
          word_list_remove_quoted_nulls (l);
@@ -3697,7 +3767,16 @@ expand_string_assignment (string, quoted)
 
   expand_no_split_dollar_star = 1;
 
+#if 0
+  /* Other shells (ksh93) do it this way, which affects how $@ is expanded
+     in constructs like bar=${@#0} (preserves the spaces resulting from the
+     expansion of $@ in a context where you don't do word splitting); Posix
+     interp 888 makes the expansion of $@ in contexts where word splitting
+     is not performed unspecified. */
+  td.flags = W_ASSIGNRHS|W_NOSPLIT2;           /* Posix interp 888 */
+#else
   td.flags = W_ASSIGNRHS;
+#endif
   td.word = savestring (string);
   value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
   FREE (td.word);
@@ -3788,21 +3867,68 @@ expand_string_leave_quoted (string, quoted)
 /* 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, expanded_p)
+expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
+     char *string;
+     int quoted, op, pflags;
+     int *dollar_at_p, *expanded_p;
+{
+  WORD_DESC td;
+  WORD_LIST *tresult;
+  int old_nosplit;
+
+  if (string == 0 || *string == '\0')
+    return (WORD_LIST *)NULL;
+
+  /* We want field splitting to be determined by what is going to be done with
+     the entire ${parameterOPword} expansion, so we don't want to split the RHS
+     we expand here.  However, the expansion of $* is determined by whether we
+     are going to eventually perform word splitting, so we want to set this
+     depending on whether or not are are going to be splitting: if the expansion
+     is quoted, if the OP is `=', or if IFS is set to the empty string, we
+     are not going to be splitting, so we set expand_no_split_dollar_star to
+     We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an
+     assignment statement. */
+  /* The updated treatment of $* is the result of Posix interp 888 */
+  /* This was further clarified on the austin-group list in March, 2017 and
+     in Posix bug 1129 */
+  old_nosplit = expand_no_split_dollar_star;
+  expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */
+  td.flags = W_NOSPLIT2;               /* no splitting, remove "" and '' */
+  if (pflags & PF_ASSIGNRHS)           /* pass through */
+    td.flags |= W_ASSIGNRHS;
+  if (op == '=')
+#if 0
+    td.flags |= W_ASSIGNRHS;           /* expand b in ${a=b} like assignment */
+#else
+    td.flags |= W_ASSIGNRHS|W_NOASSNTILDE;             /* expand b in ${a=b} like assignment */
+#endif
+  td.word = string;
+  tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
+  expand_no_split_dollar_star = old_nosplit;
+
+  return (tresult);
+}
+
+/* This does not perform word splitting or dequote the WORD_LIST
+   it returns and it treats $* as if it were quoted. */
+static WORD_LIST *
+expand_string_for_pat (string, quoted, dollar_at_p, expanded_p)
      char *string;
      int quoted, *dollar_at_p, *expanded_p;
 {
   WORD_DESC td;
   WORD_LIST *tresult;
+  int oexp;
 
   if (string == 0 || *string == '\0')
     return (WORD_LIST *)NULL;
 
+  oexp = expand_no_split_dollar_star;
   expand_no_split_dollar_star = 1;
   td.flags = W_NOSPLIT2;               /* no splitting, remove "" and '' */
   td.word = string;
   tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
-  expand_no_split_dollar_star = 0;
+  expand_no_split_dollar_star = oexp;
 
   return (tresult);
 }
@@ -3826,6 +3952,63 @@ expand_string (string, quoted)
   return (result ? dequote_list (result) : result);
 }
 
+/*******************************************
+ *                                        *
+ *     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;
+
+  result = expand_word_leave_quoted (word, quoted);
+  return (result ? dequote_list (result) : result);
+}
+
+/* Perform shell expansions on WORD, but do not perform word splitting or
+   quote removal on the result.  Virtually identical to expand_word_unsplit;
+   could be combined if implementations don't diverge. */
+WORD_LIST *
+expand_word_leave_quoted (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_LIST *result;
+
+  expand_no_split_dollar_star = 1;
+  if (ifs_is_null)
+    word->flags |= W_NOSPLIT;
+  word->flags |= W_NOSPLIT2;
+  result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+  expand_no_split_dollar_star = 0;
+
+  return result;
+}
+
 /***************************************************
  *                                                *
  *     Functions to handle quoting chars          *
@@ -3846,24 +4029,32 @@ expand_string (string, quoted)
    code exists in dequote_escapes.  Even if we don't end up splitting on
    spaces, quoting spaces is not a problem.  This should never be called on
    a string that is quoted with single or double quotes or part of a here
-   document (effectively double-quoted). */
-char *
-quote_escapes (string)
-     char *string;
+   document (effectively double-quoted).
+   FLAGS says whether or not we are going to split the result. If we are not,
+   and there is a CTLESC or CTLNUL in IFS, we need to quote CTLESC and CTLNUL,
+   respectively, to prevent them from being removed as part of dequoting. */
+static char *
+quote_escapes_internal (string, flags)
+     const char *string;
+     int flags;
 {
-  register char *s, *t;
+  const char *s, *send;
+  char *t, *result;
   size_t slen;
-  char *result, *send;
-  int quote_spaces, skip_ctlesc, skip_ctlnul;
+  int quote_spaces, skip_ctlesc, skip_ctlnul, nosplit;
   DECLARE_MBSTATE; 
 
   slen = strlen (string);
   send = string + slen;
 
   quote_spaces = (ifs_value && *ifs_value == 0);
+  nosplit = (flags & PF_NOSPLIT2);
 
   for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
-    skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
+    {
+      skip_ctlesc |= (nosplit == 0 && *s == CTLESC);
+      skip_ctlnul |= (nosplit == 0 && *s == CTLNUL);
+    }
 
   t = result = (char *)xmalloc ((slen * 2) + 1);
   s = string;
@@ -3879,6 +4070,20 @@ quote_escapes (string)
   return (result);
 }
 
+char *
+quote_escapes (string)
+     const char *string;
+{
+  return (quote_escapes_internal (string, 0));
+}
+
+char *
+quote_rhs (string)
+     const char *string;
+{
+  return (quote_escapes_internal (string, PF_NOSPLIT2));
+}
+
 static WORD_LIST *
 list_quote_escapes (list)
      WORD_LIST *list;
@@ -3908,16 +4113,16 @@ list_quote_escapes (list)
    Also used by parts of the pattern substitution code. */
 char *
 dequote_escapes (string)
-     char *string;
+     const char *string;
 {
-  register char *s, *t, *s1;
+  const char *s, *send;
+  char *t, *result;
   size_t slen;
-  char *result, *send;
   int quote_spaces;
   DECLARE_MBSTATE;
 
   if (string == 0)
-    return string;
+    return (char *)0;
 
   slen = strlen (string);
   send = string + slen;
@@ -3945,6 +4150,7 @@ dequote_escapes (string)
   return result;
 }
 
+#if defined (INCLUDE_UNUSED)
 static WORD_LIST *
 list_dequote_escapes (list)
      WORD_LIST *list;
@@ -3960,6 +4166,7 @@ list_dequote_escapes (list)
     }
   return list;
 }
+#endif
 
 /* Return a new string with the quoted representation of character C.
    This turns "" into QUOTED_NULL, so the W_HASQUOTEDNULL flag needs to be
@@ -4036,7 +4243,7 @@ dequote_string (string)
     internal_inform ("dequote_string: string with bare CTLESC");
 #endif
 
-  slen = strlen (string);
+  slen = STRLEN (string);
 
   t = result = (char *)xmalloc (slen + 1);
 
@@ -4096,6 +4303,21 @@ quote_list (list)
   return list;
 }
 
+WORD_DESC *
+dequote_word (word)
+     WORD_DESC *word;
+{
+  register char *s;
+
+  s = dequote_string (word->word);
+  if (QUOTED_NULL (word->word))
+    word->flags &= ~W_HASQUOTEDNULL;
+  free (word->word);
+  word->word = s;
+
+  return word;
+}
+
 /* De-quote quoted characters in each word in LIST. */
 WORD_LIST *
 dequote_list (list)
@@ -4133,11 +4355,43 @@ remove_quoted_escapes (string)
   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. */
+/* Remove quoted $IFS characters from STRING.  Quoted IFS characters are
+   added to protect them from word splitting, but we need to remove them
+   if no word splitting takes place.  This returns newly-allocated memory,
+   so callers can use it to replace savestring(). */
+char *
+remove_quoted_ifs (string)
+     char *string;
+{
+  register size_t slen;
+  register int i, j;
+  char *ret, *send;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  send = string + slen;
+
+  i = j = 0;
+  ret = (char *)xmalloc (slen + 1);
+
+  while (i < slen)
+    {
+      if (string[i] == CTLESC)
+       {
+         i++;
+         if (string[i] == 0 || isifs (string[i]) == 0)
+           ret[j++] = CTLESC;
+         if (i == slen)
+           break;
+       }
+
+      COPY_CHAR_I (ret, j, string, send, i);
+    }
+  ret[j] = '\0';
+
+  return (ret);
+}
+
 char *
 remove_quoted_nulls (string)
      char *string;
@@ -4160,7 +4414,8 @@ remove_quoted_nulls (string)
             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;
+         i++;
+         string[j++] = CTLESC;
          if (i == slen)
            break;
        }
@@ -4171,7 +4426,7 @@ remove_quoted_nulls (string)
        }
 
       prev_i = i;
-      ADVANCE_CHAR (string, slen, i);
+      ADVANCE_CHAR (string, slen, i);          /* COPY_CHAR_I? */
       if (j < prev_i)
        {
          do string[j++] = string[prev_i++]; while (prev_i < i);
@@ -4206,7 +4461,7 @@ word_list_remove_quoted_nulls (list)
 /* **************************************************************** */
 
 #if defined (HANDLE_MULTIBYTE)
-#if 0 /* Currently unused */
+# ifdef INCLUDE_UNUSED
 static unsigned char *
 mb_getcharlens (string, len)
      char *string;
@@ -4229,7 +4484,7 @@ mb_getcharlens (string, len)
     }
   return ret;
 }
-#endif
+#  endif
 #endif
 
 /* Remove the portion of PARAM matched by PATTERN according to OP, where OP
@@ -4408,6 +4663,9 @@ remove_pattern (param, pattern, op)
       wchar_t *wparam, *wpattern;
       mbstate_t ps;
 
+      /* XXX - could optimize here by checking param and pattern for multibyte
+        chars with mbsmbchar and calling remove_upattern. */
+
       n = xdupmbstowcs (&wpattern, NULL, pattern);
       if (n == (size_t)-1)
        {
@@ -4467,7 +4725,6 @@ match_upattern (string, pat, mtype, sp, ep)
   size_t len;
   register char *p, *p1, *npat;
   char *end;
-  int n1;
 
   /* If the pattern doesn't match anywhere in the string, go ahead and
      short-circuit right away.  A minor optimization, saves a bunch of
@@ -4485,7 +4742,7 @@ match_upattern (string, pat, mtype, sp, ep)
 
       p = npat = (char *)xmalloc (len + 3);
       p1 = pat;
-      if (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob))
+      if ((mtype != MATCH_BEG) && (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob)))
        *p++ = '*';
       while (*p1)
        *p++ = *p1++;
@@ -4496,7 +4753,7 @@ match_upattern (string, pat, mtype, sp, ep)
       /* If the pattern ends with a `*' we leave it alone if it's preceded by
         an even number of backslashes, but if it's escaped by a backslash
         we need to add another `*'. */
-      if (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\'))
+      if ((mtype != MATCH_END) && (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\')))
        {
          pp = p1 - 3;
          while (pp >= pat && *pp-- == '\\')
@@ -4504,7 +4761,7 @@ match_upattern (string, pat, mtype, sp, ep)
          if (unescaped_backslash)
            *p++ = '*';
        }
-      else if (p1[-1] != '*')
+      else if (mtype != MATCH_END && p1[-1] != '*')
        *p++ = '*';
 #else 
       if (p1[-1] != '*' || p1[-2] == '\\')
@@ -4768,7 +5025,6 @@ match_pattern (string, pat, mtype, sp, ep)
   size_t n;
   wchar_t *wstring, *wpat;
   char **indices;
-  size_t slen, plen, mslen, mplen;
 #endif
 
   if (string == 0 || pat == 0 || *pat == 0)
@@ -4846,9 +5102,9 @@ getpattern (value, quoted, expandpat)
     }
 #endif
 
-  /* expand_string_for_rhs () leaves WORD quoted and does not perform
+  /* expand_string_for_pat () leaves WORD quoted and does not perform
      word splitting. */
-  l = *value ? expand_string_for_rhs (value,
+  l = *value ? expand_string_for_pat (value,
                                      (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted,
                                      (int *)NULL, (int *)NULL)
             : (WORD_LIST *)0;
@@ -4938,7 +5194,7 @@ array_remove_pattern (var, pattern, patspec, varname, quoted)
   SHELL_VAR *v;
 
   /* compute itype from varname here */
-  v = array_variable_part (varname, &ret, 0);
+  v = array_variable_part (varname, 0, &ret, 0);
 
   /* XXX */
   if (v && invisible_p (v))
@@ -4967,17 +5223,21 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
      int rtype, quoted, flags;
 {
   int vtype, patspec, starsub;
-  char *temp1, *val, *pattern;
+  char *temp1, *val, *pattern, *oname;
   SHELL_VAR *v;
 
   if (value == 0)
     return ((char *)NULL);
 
+  oname = this_command_name;
   this_command_name = varname;
 
   vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
   if (vtype == -1)
-    return ((char *)NULL);
+    {
+      this_command_name = oname;
+      return ((char *)NULL);
+    }
 
   starsub = vtype & VT_STARSUB;
   vtype &= ~VT_STARSUB;
@@ -5022,7 +5282,11 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
 #endif
     case VT_POSPARMS:
       temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted);
-      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+      if (temp1 && quoted == 0 && ifs_is_null)
+       {
+         /* Posix interp 888 */
+       }
+      else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
        {
          val = quote_escapes (temp1);
          free (temp1);
@@ -5031,459 +5295,352 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
       break;
     }
 
+  this_command_name = oname;
+
   FREE (pattern);
   return temp1;
 }    
 
-static char *
-string_var_assignment (v, s)
-     SHELL_VAR *v;
-     char *s;
-{
-  char flags[MAX_ATTRIBUTES], *ret, *val;
-  int i;
-
-  val = sh_quote_reusable (s, 0);
-  i = var_attribute_string (v, 0, flags);
-  ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES);
-  if (i > 0)
-    sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
-  else
-    sprintf (ret, "%s=%s", v->name, val);
-  free (val);
-  return ret;
-}
+#if defined (PROCESS_SUBSTITUTION)
 
-#if defined (ARRAY_VARS)
-static char *
-array_var_assignment (v, itype, quoted)
-     SHELL_VAR *v;
-     int itype, quoted;
+/*****************************************************************/
+/*                                                              */
+/*                 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
+
+/* PROC value of -1 means the process has been reaped and the FIFO needs to
+   be removed. PROC value of 0 means the slot is unused. */
+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;
+
+void
+clear_fifo_list ()
 {
-  char *ret, *val, flags[MAX_ATTRIBUTES];
-  int i;
+}
 
-  if (v == 0)
-    return (char *)NULL;
-  val = array_p (v) ? array_to_assign (array_cell (v), 0)
-                   : assoc_to_assign (assoc_cell (v), 0);
-  if (val == 0)
-    {
-      val = (char *)xmalloc (3);
-      val[0] = '(';
-      val[1] = ')';
-      val[2] = 0;
-    }
-  else
+char *
+copy_fifo_list (sizep)
+     int *sizep;
+{
+  if (sizep)
+    *sizep = 0;
+  return (char *)NULL;
+}
+
+static void
+add_fifo_list (pathname)
+     char *pathname;
+{
+  int osize, i;
+
+  if (nfifo >= fifo_list_size - 1)
     {
-      ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val);
-      free (val);
-      val = ret;
+      osize = fifo_list_size;
+      fifo_list_size += FIFO_INCR;
+      fifo_list = (struct temp_fifo *)xrealloc (fifo_list,
+                               fifo_list_size * sizeof (struct temp_fifo));
+      for (i = osize; i < fifo_list_size; i++)
+       {
+         fifo_list[i].file = (char *)NULL;
+         fifo_list[i].proc = 0;        /* unused */
+       }
     }
-  i = var_attribute_string (v, 0, flags);
-  ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16);
-  sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
-  free (val);
-  return ret;
+
+  fifo_list[nfifo].file = savestring (pathname);
+  nfifo++;
 }
-#endif
 
-static char *
-pos_params_assignment (list, itype, quoted)
-     WORD_LIST *list;
-     int itype;
-     int quoted;
+void
+unlink_fifo (i)
+     int i;
 {
-  char *temp, *ret;
-
-  /* first, we transform the list to quote each word. */
-  temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted);
-  ret = (char *)xmalloc (strlen (temp) + 8);
-  strcpy (ret, "set -- ");
-  strcpy (ret + 7, temp);
-  free (temp);
-  return ret;
+  if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (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 = 0;
+    }
 }
 
-static char *
-string_transform (xc, v, s)
-     int xc;
-     SHELL_VAR *v;
-     char *s;
+void
+unlink_fifo_list ()
 {
-  char *ret, flags[MAX_ATTRIBUTES];
-  int i;
+  int saved, i, j;
 
-  if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0))
-    return (char *)NULL;
+  if (nfifo == 0)
+    return;
 
-  switch (xc)
+  for (i = saved = 0; i < nfifo; i++)
     {
-      /* Transformations that interrogate the variable */
-      case 'a':
-       i = var_attribute_string (v, 0, flags);
-       ret = (i > 0) ? savestring (flags) : (char *)NULL;
-       break;
-      case 'A':
-       ret = string_var_assignment (v, s);
-       break;
-      /* Transformations that modify the variable's value */
-      case 'E':
-       ret = ansiexpand (s, 0, strlen (s), (int *)0);
-       break;
-      case 'P':
-       ret = decode_prompt_string (s);
-       break;
-      case 'Q':
-       ret = sh_quote_reusable (s, 0);
-       break;
-      default:
-       ret = (char *)NULL;
-       break;
+      if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (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 = 0;
+       }
+      else
+       saved++;
     }
-  return ret;
+
+  /* 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 *
-list_transform (xc, v, list, itype, quoted)
-     int xc;
-     SHELL_VAR *v;
-     WORD_LIST *list;
-     int itype, quoted;
+/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list
+   from some point in the past, and close all open FIFOs in fifo_list
+   that are not marked as active in LIST.  If LIST is NULL, close
+   everything in fifo_list. LSIZE is the number of elements in LIST, in
+   case it's larger than fifo_list_size (size of fifo_list). */
+void
+close_new_fifos (list, lsize)
+     char *list;
+     int lsize;
 {
-  WORD_LIST *new, *l;
-  WORD_DESC *w;
-  char *tword;
+  int i;
 
-  for (new = (WORD_LIST *)NULL, l = list; l; l = l->next)
+  if (list == 0)
     {
-      tword = string_transform (xc, v, l->word->word);
-      w = alloc_word_desc ();
-      w->word = tword ? tword : savestring ("");       /* XXX */
-      new = make_word_list (w, new);
+      unlink_fifo_list ();
+      return;
     }
 
-  l = REVERSE_LIST (new, WORD_LIST *);
-  tword = string_list_pos_params (itype, l, quoted);
-  dispose_words (l);
+  for (i = 0; i < lsize; i++)
+    if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1)
+      unlink_fifo (i);
 
-  return (tword);
+  for (i = lsize; i < fifo_list_size; i++)
+    unlink_fifo (i);  
 }
 
-static char *
-parameter_list_transform (xc, itype, quoted)
-     int xc;
-     int itype;
-     int quoted;
+int
+find_procsub_child (pid)
+     pid_t pid;
 {
-  char *ret;
-  WORD_LIST *list;
+  int i;
 
-  list = list_rest_of_args ();
-  if (list == 0)
-    return ((char *)NULL);
-  if (xc == 'A')
-    return (pos_params_assignment (list, itype, quoted));
-  ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted);
-  dispose_words (list);
-  return (ret);
+  for (i = 0; i < nfifo; i++)
+    if (fifo_list[i].proc == pid)
+      return i;
+  return -1;
 }
 
-#if defined (ARRAY_VARS)
-static char *
-array_transform (xc, var, varname, quoted)
-     int xc;
-     SHELL_VAR *var;
-     char *varname;    /* so we can figure out how it's indexed */
-     int quoted;
+void
+set_procsub_status (ind, pid, status)
+     int ind;
+     pid_t pid;
+     int status;
 {
-  ARRAY *a;
-  HASH_TABLE *h;
-  int itype;
-  char *ret;
-  WORD_LIST *list;
-  SHELL_VAR *v;
-
-  /* compute itype from varname here */
-  v = array_variable_part (varname, &ret, 0);
-
-  /* XXX */
-  if (v && invisible_p (v))
-    return ((char *)NULL);
+  if (ind >= 0 && ind < nfifo)
+    fifo_list[ind].proc = (pid_t)-1;           /* sentinel */
+}
 
-  itype = ret[0];
+/* If we've marked the process for this procsub as dead, close the
+   associated file descriptor and delete the FIFO. */
+void
+reap_procsubs ()
+{
+  int i;
 
-  if (xc == 'A')
-    return (array_var_assignment (v, itype, quoted));
+  for (i = 0; i < nfifo; i++)
+    if (fifo_list[i].proc == (pid_t)-1)        /* reaped */
+      unlink_fifo (i);
+}
 
-  a = (v && array_p (v)) ? array_cell (v) : 0;
-  h = (v && assoc_p (v)) ? assoc_cell (v) : 0;
-  
-  list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0);
-  if (list == 0)
-   return ((char *)NULL);
-  ret = list_transform (xc, v, list, itype, quoted);
-  dispose_words (list);
+void
+wait_procsubs ()
+{
+  int i, r;
 
-  return ret;
+  for (i = 0; i < nfifo; i++)
+    {
+      if (fifo_list[i].proc != (pid_t)-1 && fifo_list[i].proc > 0)
+       {
+         r = wait_for (fifo_list[i].proc);
+         fifo_list[i].proc = (pid_t)-1;
+       }
+    }
 }
-#endif /* ARRAY_VARS */
 
-static char *
-parameter_brace_transform (varname, value, ind, xform, rtype, quoted, flags)
-     char *varname, *value;
-     int ind;
-     char *xform;
-     int rtype, quoted, flags;
+int
+fifos_pending ()
 {
-  int vtype, xc;
-  char *temp1, *val;
-  SHELL_VAR *v;
-
-  xc = xform[0];
-  if (value == 0 && xc != 'A' && xc != 'a')
-    return ((char *)NULL);
-
-  this_command_name = varname;
+  return nfifo;
+}
 
-  vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
-  if (vtype == -1)
-    return ((char *)NULL);
+int
+num_fifos ()
+{
+  return nfifo;
+}
 
-  /* check for valid values of xc */
-  switch (xc)
-    {
-    case 'a':          /* expand to a string with just attributes */
-    case 'A':          /* expand as an assignment statement with attributes */
-    case 'E':          /* expand like $'...' */
-    case 'P':          /* expand like prompt string */
-    case 'Q':          /* quote reusably */
-      break;
-    default:
-      return &expand_param_error;
-    }
+static char *
+make_named_pipe ()
+{
+  char *tname;
 
-  temp1 = (char *)NULL;                /* shut up gcc */
-  switch (vtype & ~VT_STARSUB)
+  tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR);
+  if (mkfifo (tname, 0600) < 0)
     {
-    case VT_VARIABLE:
-    case VT_ARRAYMEMBER:
-      temp1 = string_transform (xc, v, val);
-      if (vtype == VT_VARIABLE)
-       FREE (val);
-      if (temp1)
-       {
-         val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-                       ? quote_string (temp1)
-                       : quote_escapes (temp1);
-         free (temp1);
-         temp1 = val;
-       }
-      break;
-#if defined (ARRAY_VARS)
-    case VT_ARRAYVAR:
-      temp1 = array_transform (xc, v, 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_transform (xc, varname[0], quoted);
-      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
-       {
-         val = quote_escapes (temp1);
-         free (temp1);
-         temp1 = val;
-       }
-      break;
+      free (tname);
+      return ((char *)NULL);
     }
 
-  return temp1;
+  add_fifo_list (tname);
+  return (tname);
 }
 
-/*******************************************
- *                                        *
- *     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. */
+#else /* HAVE_DEV_FD */
 
-WORD_LIST *
-expand_word (word, quoted)
-     WORD_DESC *word;
-     int quoted;
-{
-  WORD_LIST *result, *tresult;
+/* 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. */
+/* dev_fd_list[I] value of -1 means the process has been reaped and file
+   descriptor I needs to be closed. Value of 0 means the slot is unused. */
 
-  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);
-}
+static pid_t *dev_fd_list = (pid_t *)NULL;
+static int nfds;
+static int totfds;     /* The highest possible number of open files. */
 
-/* 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;
+void
+clear_fifo (i)
+     int i;
 {
-  WORD_LIST *result;
-
-  expand_no_split_dollar_star = 1;
-#if defined (HANDLE_MULTIBYTE)
-  if (ifs_firstc[0] == 0)
-#else
-  if (ifs_firstc == 0)
-#endif
-    word->flags |= W_NOSPLIT;
-  word->flags |= W_NOSPLIT2;
-  result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
-  expand_no_split_dollar_star = 0;
-
-  return (result ? dequote_list (result) : result);
+  if (dev_fd_list[i])
+    {
+      dev_fd_list[i] = 0;
+      nfds--;
+    }
 }
 
-/* Perform shell expansions on WORD, but do not perform word splitting or
-   quote removal on the result.  Virtually identical to expand_word_unsplit;
-   could be combined if implementations don't diverge. */
-WORD_LIST *
-expand_word_leave_quoted (word, quoted)
-     WORD_DESC *word;
-     int quoted;
+void
+clear_fifo_list ()
 {
-  WORD_LIST *result;
-
-  expand_no_split_dollar_star = 1;
-#if defined (HANDLE_MULTIBYTE)
-  if (ifs_firstc[0] == 0)
-#else
-  if (ifs_firstc == 0)
-#endif
-    word->flags |= W_NOSPLIT;
-  word->flags |= W_NOSPLIT2;
-  result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
-  expand_no_split_dollar_star = 0;
-
-  return result;
-}
-
-#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
+  register int i;
 
-struct temp_fifo {
-  char *file;
-  pid_t proc;
-};
+  if (nfds == 0)
+    return;
 
-static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL;
-static int nfifo;
-static int fifo_list_size;
+  for (i = 0; nfds && i < totfds; i++)
+    clear_fifo (i);
 
-void
-clear_fifo_list ()
-{
+  nfds = 0;
 }
 
 char *
 copy_fifo_list (sizep)
      int *sizep;
 {
+  char *ret;
+
+  if (nfds == 0 || totfds == 0)
+    {
+      if (sizep)
+       *sizep = 0;
+      return (char *)NULL;
+    }
+
   if (sizep)
-    *sizep = 0;
-  return (char *)NULL;
+    *sizep = totfds;
+  ret = (char *)xmalloc (totfds * sizeof (pid_t));
+  return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t)));
 }
 
 static void
-add_fifo_list (pathname)
-     char *pathname;
+add_fifo_list (fd)
+     int fd;
 {
-  if (nfifo >= fifo_list_size - 1)
+  if (dev_fd_list == 0 || fd >= totfds)
     {
-      fifo_list_size += FIFO_INCR;
-      fifo_list = (struct temp_fifo *)xrealloc (fifo_list,
-                               fifo_list_size * sizeof (struct temp_fifo));
+      int ofds;
+
+      ofds = totfds;
+      totfds = getdtablesize ();
+      if (totfds < 0 || totfds > 256)
+       totfds = 256;
+      if (fd >= totfds)
+       totfds = fd + 2;
+
+      dev_fd_list = (pid_t *)xrealloc (dev_fd_list, totfds * sizeof (dev_fd_list[0]));
+      /* XXX - might need a loop for this */
+      memset (dev_fd_list + ofds, '\0', (totfds - ofds) * sizeof (pid_t));
     }
 
-  fifo_list[nfifo].file = savestring (pathname);
-  nfifo++;
+  dev_fd_list[fd] = 1;         /* marker; updated later */
+  nfds++;
+}
+
+int
+fifos_pending ()
+{
+  return 0;    /* used for cleanup; not needed with /dev/fd */
+}
+
+int
+num_fifos ()
+{
+  return nfds;
 }
 
 void
-unlink_fifo (i)
-     int i;
+unlink_fifo (fd)
+     int fd;
 {
-  if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1))
+  if (dev_fd_list[fd])
     {
-      unlink (fifo_list[i].file);
-      free (fifo_list[i].file);
-      fifo_list[i].file = (char *)NULL;
-      fifo_list[i].proc = -1;
+      close (fd);
+      dev_fd_list[fd] = 0;
+      nfds--;
     }
 }
 
 void
 unlink_fifo_list ()
 {
-  int saved, i, j;
+  register int i;
 
-  if (nfifo == 0)
+  if (nfds == 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++;
-    }
+  for (i = totfds-1; nfds && i >= 0; i--)
+    unlink_fifo (i);
 
-  /* 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;
+  nfds = 0;
 }
 
-/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list
-   from some point in the past, and close all open FIFOs in fifo_list
-   that are not marked as active in LIST.  If LIST is NULL, close
-   everything in fifo_list. LSIZE is the number of elements in LIST, in
-   case it's larger than fifo_list_size (size of fifo_list). */
+/* Take LIST, which is a snapshot copy of dev_fd_list from some point in
+   the past, and close all open fds in dev_fd_list that are not marked
+   as open in LIST.  If LIST is NULL, close everything in dev_fd_list.
+   LSIZE is the number of elements in LIST, in case it's larger than
+   totfds (size of dev_fd_list). */
 void
 close_new_fifos (list, lsize)
      char *list;
@@ -5498,180 +5655,64 @@ close_new_fifos (list, lsize)
     }
 
   for (i = 0; i < lsize; i++)
-    if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1)
+    if (list[i] == 0 && i < totfds && dev_fd_list[i])
       unlink_fifo (i);
 
-  for (i = lsize; i < fifo_list_size; i++)
+  for (i = lsize; i < totfds; i++)
     unlink_fifo (i);  
 }
 
 int
-fifos_pending ()
-{
-  return nfifo;
-}
-
-int
-num_fifos ()
-{
-  return nfifo;
-}
-
-static char *
-make_named_pipe ()
-{
-  char *tname;
-
-  tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR);
-  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. */
-
-void
-clear_fifo (i)
-     int i;
-{
-  if (dev_fd_list[i])
-    {
-      dev_fd_list[i] = 0;
-      nfds--;
-    }
-}
-
-void
-clear_fifo_list ()
+find_procsub_child (pid)
+     pid_t pid;
 {
-  register int i;
+  int i;
 
   if (nfds == 0)
-    return;
-
-  for (i = 0; nfds && i < totfds; i++)
-    clear_fifo (i);
-
-  nfds = 0;
-}
-
-char *
-copy_fifo_list (sizep)
-     int *sizep;
-{
-  char *ret;
-
-  if (nfds == 0 || totfds == 0)
-    {
-      if (sizep)
-       *sizep = 0;
-      return (char *)NULL;
-    }
-
-  if (sizep)
-    *sizep = totfds;
-  ret = (char *)xmalloc (totfds);
-  return (memcpy (ret, dev_fd_list, totfds));
-}
-
-static void
-add_fifo_list (fd)
-     int fd;
-{
-  if (dev_fd_list == 0 || 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++;
-}
+    return -1;
 
-int
-fifos_pending ()
-{
-  return 0;    /* used for cleanup; not needed with /dev/fd */
-}
+  for (i = 0; i < totfds; i++)
+    if (dev_fd_list[i] == pid)
+      return i;
 
-int
-num_fifos ()
-{
-  return nfds;
+  return -1;
 }
 
 void
-unlink_fifo (fd)
-     int fd;
+set_procsub_status (ind, pid, status)
+     int ind;
+     pid_t pid;
+     int status;
 {
-  if (dev_fd_list[fd])
-    {
-      close (fd);
-      dev_fd_list[fd] = 0;
-      nfds--;
-    }
+  if (ind >= 0 && ind < totfds)
+    dev_fd_list[ind] = (pid_t)-1;              /* sentinel */
 }
 
+/* If we've marked the process for this procsub as dead, close the
+   associated file descriptor. */
 void
-unlink_fifo_list ()
+reap_procsubs ()
 {
-  register int i;
-
-  if (nfds == 0)
-    return;
-
-  for (i = 0; nfds && i < totfds; i++)
-    unlink_fifo (i);
+  int i;
 
-  nfds = 0;
+  for (i = 0; nfds > 0 && i < totfds; i++)
+    if (dev_fd_list[i] == (pid_t)-1)
+      unlink_fifo (i);
 }
 
-/* Take LIST, which is a snapshot copy of dev_fd_list from some point in
-   the past, and close all open fds in dev_fd_list that are not marked
-   as open in LIST.  If LIST is NULL, close everything in dev_fd_list.
-   LSIZE is the number of elements in LIST, in case it's larger than
-   totfds (size of dev_fd_list). */
 void
-close_new_fifos (list, lsize)
-     char *list;
-     int lsize;
+wait_procsubs ()
 {
-  int i;
+  int i, r;
 
-  if (list == 0)
+  for (i = 0; nfds > 0 && i < totfds; i++)
     {
-      unlink_fifo_list ();
-      return;
+      if (dev_fd_list[i] != (pid_t)-1 && dev_fd_list[i] > 0)
+       {
+         r = wait_for (dev_fd_list[i]);
+         dev_fd_list[i] = (pid_t)-1;
+       }
     }
-
-  for (i = 0; i < lsize; i++)
-    if (list[i] == 0 && i < totfds && dev_fd_list[i])
-      unlink_fifo (i);
-
-  for (i = lsize; i < totfds; i++)
-    unlink_fifo (i);  
 }
 
 #if defined (NOTDEF)
@@ -5727,7 +5768,7 @@ process_substitute (string, open_for_read_in_child)
      int open_for_read_in_child;
 {
   char *pathname;
-  int fd, result;
+  int fd, result, rc, function_value;
   pid_t old_pid, pid;
 #if defined (HAVE_DEV_FD)
   int parent_pipe_fd, child_pipe_fd;
@@ -5785,6 +5826,10 @@ process_substitute (string, open_for_read_in_child)
       setup_async_signals ();
       subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB;
 
+      /* We don't inherit the verbose option for command substitutions now, so
+        let's try it for process substitutions. */
+      change_flag ('v', FLAG_OFF);
+
       /* if we're expanding a redirection, we shouldn't have access to the
         temporary environment, but commands in the subshell should have
         access to their own temporary environment. */
@@ -5809,6 +5854,9 @@ process_substitute (string, open_for_read_in_child)
       close (parent_pipe_fd);
       close (child_pipe_fd);
 #endif /* HAVE_DEV_FD */
+#if defined (JOB_CONTROL)
+      restore_pipeline (1);
+#endif
       return ((char *)NULL);
     }
 
@@ -5820,7 +5868,9 @@ process_substitute (string, open_for_read_in_child)
       last_procsub_child = restore_pipeline (0);
 #endif
 
-#if !defined (HAVE_DEV_FD)
+#if defined (HAVE_DEV_FD)
+      dev_fd_list[parent_pipe_fd] = pid;
+#else
       fifo_list[nfifo-1].proc = pid;
 #endif
 
@@ -5840,7 +5890,24 @@ process_substitute (string, open_for_read_in_child)
   set_sigint_handler ();
 
 #if defined (JOB_CONTROL)
+  /* make sure we don't have any job control */
   set_job_control (0);
+
+  /* The idea is that we want all the jobs we start from an async process
+     substitution to be in the same process group, but not the same pgrp
+     as our parent shell, since we don't want to affect our parent shell's
+     jobs if we get a SIGHUP and end up calling hangup_all_jobs, for example.
+     If pipeline_pgrp != shell_pgrp, we assume that there is a job control
+     shell somewhere in our parent process chain (since make_child initializes
+     pipeline_pgrp to shell_pgrp if job_control == 0). What we do in this
+     case is to set pipeline_pgrp to our PID, so all jobs started by this
+     process have that same pgrp and we are basically the process group leader.
+     This should not have negative effects on child processes surviving
+     after we exit, since we wait for the children we create, but that is
+     something to watch for. */
+
+  if (pipeline_pgrp != shell_pgrp)
+    pipeline_pgrp = getpid ();
 #endif /* JOB_CONTROL */
 
 #if !defined (HAVE_DEV_FD)
@@ -5908,18 +5975,41 @@ process_substitute (string, open_for_read_in_child)
 
   remove_quoted_escapes (string);
 
-  subshell_level++;
-  result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
-  subshell_level--;
+  /* Give process substitution a place to jump back to on failure,
+     so we don't go back up to main (). */
+  result = setjmp_nosigs (top_level);
+
+  /* If we're running a process 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_nosigs (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, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
+      /* leave subshell level intact for any exit trap */
+    }
 
 #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 */
 
-  last_command_exit_value = result;
-  result = run_exit_trap ();
-  exit (result);
+  last_command_exit_value = rc;
+  rc = run_exit_trap ();
+  exit (rc);
   /*NOTREACHED*/
 }
 #endif /* PROCESS_SUBSTITUTION */
@@ -5931,20 +6021,21 @@ process_substitute (string, open_for_read_in_child)
 /***********************************/
 
 static char *
-read_comsub (fd, quoted, rflag)
-     int fd, quoted;
+read_comsub (fd, quoted, flags, rflag)
+     int fd, quoted, flags;
      int *rflag;
 {
-  char *istring, buf[128], *bufp, *s;
-  int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
+  char *istring, buf[128], *bufp;
+  int istring_index, c, tflag, skip_ctlesc, skip_ctlnul;
+  size_t istring_size;
   ssize_t bufn;
   int nullbyte;
 
   istring = (char *)NULL;
   istring_index = istring_size = bufn = tflag = 0;
 
-  for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
-    skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
+  skip_ctlesc = ifs_cmap[CTLESC];
+  skip_ctlnul = ifs_cmap[CTLNUL];
 
   nullbyte = 0;
 
@@ -5981,14 +6072,13 @@ read_comsub (fd, quoted, rflag)
       /* This is essentially quote_string inline */
       if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */)
        istring[istring_index++] = CTLESC;
+      else if ((flags & PF_ASSIGNRHS) && skip_ctlesc && c == CTLESC)
+       istring[istring_index++] = CTLESC;
       /* Escape CTLESC and CTLNUL in the output to protect those characters
         from the rest of the word expansions (word splitting and globbing.)
         This is essentially quote_escapes inline. */
       else if (skip_ctlesc == 0 && c == CTLESC)
-       {
-         tflag |= W_HASCTLESC;
-         istring[istring_index++] = CTLESC;
-       }
+       istring[istring_index++] = CTLESC;
       else if ((skip_ctlnul == 0 && c == CTLNUL) || (c == ' ' && (ifs_value && *ifs_value == 0)))
        istring[istring_index++] = CTLESC;
 
@@ -6047,9 +6137,10 @@ read_comsub (fd, quoted, rflag)
 /* Perform command substitution on STRING.  This returns a WORD_DESC * with the
    contained string possibly quoted. */
 WORD_DESC *
-command_substitute (string, quoted)
+command_substitute (string, quoted, flags)
      char *string;
      int quoted;
+     int flags;
 {
   pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid;
   char *istring, *s;
@@ -6091,6 +6182,8 @@ command_substitute (string, quoted)
   /* Flags to pass to parse_and_execute() */
   pflags = (interactive && sourcelevel == 0) ? SEVAL_RESETLINE : 0;
 
+  old_pid = last_made_pid;
+
   /* Pipe the output of executing STRING into the current shell. */
   if (pipe (fildes) < 0)
     {
@@ -6098,7 +6191,6 @@ command_substitute (string, quoted)
       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. */
@@ -6221,6 +6313,8 @@ command_substitute (string, quoted)
       remove_quoted_escapes (string);
 
       startup_state = 2;       /* see if we can avoid a fork */
+      parse_and_execute_level = 0;
+
       /* Give command substitution a place to jump back to on failure,
         so we don't go back up to main (). */
       result = setjmp_nosigs (top_level);
@@ -6245,7 +6339,7 @@ command_substitute (string, quoted)
        {
          subshell_level++;
          rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST);
-         subshell_level--;
+         /* leave subshell level intact for any exit trap */
        }
 
       last_command_exit_value = rc;
@@ -6264,7 +6358,7 @@ command_substitute (string, quoted)
       close (fildes[1]);
 
       tflag = 0;
-      istring = read_comsub (fildes[0], quoted, &tflag);
+      istring = read_comsub (fildes[0], quoted, flags, &tflag);
 
       close (fildes[0]);
 
@@ -6323,7 +6417,7 @@ array_length_reference (s)
   HASH_TABLE *h;
   SHELL_VAR *var;
 
-  var = array_variable_part (s, &t, &len);
+  var = array_variable_part (s, 0, &t, &len);
 
   /* If unbound variables should generate an error, report one and return
      failure. */
@@ -6346,7 +6440,7 @@ array_length_reference (s)
   array = array_p (var) ? array_cell (var) : (ARRAY *)NULL;
   h = assoc_p (var) ? assoc_cell (var) : (HASH_TABLE *)NULL;
 
-  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
+  if (ALL_ELEMENT_SUB (t[0]) && t[1] == RBRACK)
     {
       if (assoc_p (var))
        return (h ? assoc_num_elements (h) : 0);
@@ -6360,7 +6454,7 @@ array_length_reference (s)
     {
       t[len - 1] = '\0';
       akey = expand_assignment_string_to_string (t, 0);        /* [ */
-      t[len - 1] = ']';
+      t[len - 1] = RBRACK;
       if (akey == 0 || *akey == 0)
        {
          err_badarraysub (t);
@@ -6372,7 +6466,7 @@ array_length_reference (s)
     }
   else
     {
-      ind = array_expand_index (var, t, len);
+      ind = array_expand_index (var, t, len, 0);
       /* negative subscripts to indexed arrays count back from end */
       if (var && array_p (var) && ind < 0)
        ind = array_max_index (array_cell (var)) + 1 + ind;
@@ -6448,18 +6542,18 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
 #if defined (ARRAY_VARS)
   else if (valid_array_reference (name, 0))
     {
-      temp1 = mbschr (name, '[');
-      if (temp1 && temp1[1] == '@' && temp1[2] == ']')
+      temp1 = mbschr (name, LBRACK);
+      if (temp1 && temp1[1] == '@' && temp1[2] == RBRACK)
        {
          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 (temp1 && temp1[1] == '*' && temp1[2] == RBRACK && quoted == 0)
        {
          if (contains_dollar_at)
            *contains_dollar_at = 1;
@@ -6471,7 +6565,7 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
 }
 
 /* Parameter expand NAME, and return a new string which is the expansion,
-   or NULL if there was no expansion.
+   or NULL if there was no expansion.  NAME is as given in ${NAMEcWORD}.
    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. */
@@ -6522,14 +6616,14 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp)
   else if (valid_array_reference (name, 0))
     {
 expand_arrayref:
+      var = array_variable_part (name, 0, &tt, (int *)0);
+      /* These are the cases where word splitting will not be performed */
       if (pflags & PF_ASSIGNRHS)
        {
-         var = array_variable_part (name, &tt, (int *)0);
-         if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
+         if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == RBRACK)
            {
              /* Only treat as double quoted if array variable */
              if (var && (array_p (var) || assoc_p (var)))
-               /* XXX - bash-4.4/bash-5.0 pass AV_ASSIGNRHS */
                temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind);
              else              
                temp = array_value (name, quoted, 0, &atype, &ind);
@@ -6537,6 +6631,27 @@ expand_arrayref:
          else
            temp = array_value (name, quoted, 0, &atype, &ind);
        }
+      /* Posix interp 888 */
+      else if (pflags & PF_NOSPLIT2)
+       {
+         /* Special cases, then general case, for each of A[@], A[*], A[n] */
+#if defined (HANDLE_MULTIBYTE)
+          if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ')
+#else
+         if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ')
+#endif
+           temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind);
+         else if (tt[0] == '@' && tt[1] == RBRACK)
+           temp = array_value (name, quoted, 0, &atype, &ind);
+         else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null)
+           temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind);
+         else if (tt[0] == '*' && tt[1] == RBRACK)
+           temp = array_value (name, quoted, 0, &atype, &ind);
+         else
+           temp = array_value (name, quoted, 0, &atype, &ind);
+       }                 
+      else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null)
+       temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind);
       else
        temp = array_value (name, quoted, 0, &atype, &ind);
       if (atype == 0 && temp)
@@ -6570,7 +6685,8 @@ expand_arrayref:
          if (temp)
            temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
                      ? quote_string (temp)
-                     : quote_escapes (temp);
+                     : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp)
+                                                : quote_escapes (temp));
        }
       else
        temp = (char *)NULL;
@@ -6617,6 +6733,7 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref)
   char *temp, *t;
   WORD_DESC *w;
   SHELL_VAR *v;
+  int pflags, oldex;
 
   if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name, 0)) &&
       nameref_p (v) && (t = nameref_cell (v)) && *t)
@@ -6625,12 +6742,23 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref)
   /* If var_is_special == 0, and name is not an array reference, this does
      more expansion than necessary.  It should really look up the variable's
      value and not try to expand it. */
-  w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND, 0);
+  pflags = PF_IGNUNBOUND;
+  /* Note that we're not going to be doing word splitting here */
+  if (var_is_special)
+    {
+      pflags |= PF_ASSIGNRHS;  /* suppresses word splitting */
+      oldex = expand_no_split_dollar_star;
+      expand_no_split_dollar_star = 1;
+    }
+  w = parameter_brace_expand_word (name, var_is_special, quoted, pflags, 0);
+  if (var_is_special)
+    expand_no_split_dollar_star = oldex;
+
   t = w->word;
   /* Have to dequote here if necessary */
   if (t)
     {
-      temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+      temp = ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || var_is_special)
                ? dequote_string (t)
                : dequote_escapes (t);
       free (t);
@@ -6649,7 +6777,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c
      int var_is_special, quoted;
      int *quoted_dollar_atp, *contains_dollar_at;
 {
-  char *temp, *t;
+  char *t;
   WORD_DESC *w;
   SHELL_VAR *v;
 
@@ -6669,15 +6797,47 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c
        }
     }
 
+  /* An indirect reference to a positional parameter or a special parameter
+     is ok.  Indirect references to array references, as explained above, are
+     ok (currently).  Only references to unset variables are errors at this
+     point. */
+  if (legal_identifier (name) && v == 0)
+    {
+      report_error (_("%s: invalid indirect expansion"), name);
+      w = alloc_word_desc ();
+      w->word = &expand_param_error;
+      w->flags = 0;
+      return (w);
+    }
+      
   t = parameter_brace_find_indir (name, var_is_special, quoted, 0);
 
   chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at);
+
+#if defined (ARRAY_VARS)
+  /* Array references to unset variables are also an error */
+  if (t == 0 && valid_array_reference (name, 0))
+    {
+      v = array_variable_part (name, 0, (char **)0, (int *)0);
+      if (v == 0)
+       {
+         report_error (_("%s: invalid indirect expansion"), name);
+         w = alloc_word_desc ();
+         w->word = &expand_param_error;
+         w->flags = 0;
+         return (w);
+       }
+      else
+        return (WORD_DESC *)NULL;      
+    }
+#endif
+
   if (t == 0)
     return (WORD_DESC *)NULL;
 
   if (valid_brace_expansion_word (t, SPECIAL_VAR (t, 0)) == 0)
     {
-      report_error (_("%s: bad substitution"), t);
+      report_error (_("%s: invalid variable name"), t);
       free (t);
       w = alloc_word_desc ();
       w->word = &expand_param_error;
@@ -6696,14 +6856,15 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c
    "-", "+", or "=".  QUOTED is true if the entire brace expression occurs
    between double quotes. */
 static WORD_DESC *
-parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdollarat)
+parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdollarat)
      char *name, *value;
-     int c, quoted, pflags, *qdollaratp, *hasdollarat;
+     int op, quoted, pflags, *qdollaratp, *hasdollarat;
 {
   WORD_DESC *w;
   WORD_LIST *l;
   char *t, *t1, *temp, *vname;
   int l_hasdollat, sindex;
+  SHELL_VAR *v;
 
 /*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/
   /* If the entire expression is between double quotes, we want to treat
@@ -6719,8 +6880,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
 
   w = alloc_word_desc ();
   l_hasdollat = 0;
-  /* XXX was 0 not quoted */
-  l = *temp ? expand_string_for_rhs (temp, quoted, &l_hasdollat, (int *)NULL)
+  l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL)
            : (WORD_LIST *)0;
   if (hasdollarat)
     *hasdollarat = l_hasdollat || (l && l->next);
@@ -6750,8 +6910,14 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
          temp = string_list_internal (l, " ");
          w->flags |= W_SPLITSPACE;
        }
+      else if (l_hasdollat || l->next)
+       temp = string_list_dollar_star (l, quoted, 0);
       else
-       temp = (l_hasdollat || l->next) ? string_list_dollar_star (l) : string_list (l);
+       {
+         temp = string_list (l);
+         if (temp && (QUOTED_NULL (temp) == 0) && (l->word->flags & W_SAWQUOTEDNULL))
+           w->flags |= W_SAWQUOTEDNULL;        /* XXX */
+       }
 
       /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is
         a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the
@@ -6792,16 +6958,15 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
   else
     temp = (char *)NULL;
 
-  if (c == '-' || c == '+')
+  if (op == '-' || op == '+')
     {
       w->word = temp;
       return w;
     }
 
-  /* c == '=' */
-  t = temp ? savestring (temp) : savestring ("");
-  t1 = dequote_string (t);
-  free (t);
+  /* op == '=' */
+  t1 = temp ? dequote_string (temp) : savestring ("");
+  free (temp);
 
   /* bash-4.4/5.0 */
   vname = name;
@@ -6813,6 +6978,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
        {
          report_error (_("%s: invalid indirect expansion"), name);
          free (vname);
+         free (t1);
          dispose_word (w);
          return &expand_wdesc_error;
        }
@@ -6820,6 +6986,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
        {
          report_error (_("%s: invalid variable name"), vname);
          free (vname);
+         free (t1);
          dispose_word (w);
          return &expand_wdesc_error;
        }
@@ -6827,10 +6994,26 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
     
 #if defined (ARRAY_VARS)
   if (valid_array_reference (vname, 0))
-    assign_array_element (vname, t1, 0);
+    v = assign_array_element (vname, t1, 0);
   else
 #endif /* ARRAY_VARS */
-  bind_variable (vname, t1, 0);
+  v = bind_variable (vname, t1, 0);
+
+  if (v == 0 || readonly_p (v) || noassign_p (v))      /* expansion error  */
+    {
+      if ((v == 0 || readonly_p (v)) && interactive_shell == 0 && posixly_correct)
+       {
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (FORCE_EOF);
+       }
+      else
+       {
+         if (vname != name)
+           free (vname);
+         last_command_exit_value = EX_BADUSAGE;
+         exp_jump_to_top_level (DISCARD);
+       }
+    }
 
   stupidly_hack_special_variables (vname);
 
@@ -6838,9 +7021,13 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
     free (vname);
 
   /* From Posix group discussion Feb-March 2010.  Issue 7 0000221 */
-  free (temp);
 
-  w->word = t1;
+  /* If we are double-quoted or if we are not going to be performing word
+     splitting, we want to quote the value we return appropriately, like
+     the other expansions this function handles. */
+  w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1);
+  free (t1);
+
   return w;
 }
 
@@ -6849,8 +7036,9 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla
    used as the error message to print, otherwise a standard message is
    printed. */
 static void
-parameter_brace_expand_error (name, value)
+parameter_brace_expand_error (name, value, check_null)
      char *name, *value;
+     int check_null;
 {
   WORD_LIST *l;
   char *temp;
@@ -6864,6 +7052,8 @@ parameter_brace_expand_error (name, value)
       FREE (temp);
       dispose_words (l);
     }
+  else if (check_null == 0)
+    report_error (_("%s: parameter not set"), name);
   else
     report_error (_("%s: parameter null or not set"), name);
 
@@ -7030,7 +7220,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
     t = (char *)0;
 
   temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
-  *e1p = evalexp (temp1, &expok);
+  *e1p = evalexp (temp1, 0, &expok);           /* XXX - EXP_EXPANDED? */
   free (temp1);
   if (expok == 0)
     return (0);
@@ -7088,15 +7278,17 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
       temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
       free (temp2);
       t[-1] = ':';
-      *e2p = evalexp (temp1, &expok);
+      *e2p = evalexp (temp1, 0, &expok);       /* XXX - EXP_EXPANDED? */
       free (temp1);
       if (expok == 0)
        return (0);
+
+      /* Should we allow positional parameter length < 0 to count backwards
+        from end of positional parameters? */
 #if 1
       if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0)
 #else
-      /* bash-4.3: allow positional parameter length < 0 to count backwards
-        from end of positional parameters */
+      /* XXX - TAG: bash-5.1 */
       if (vtype == VT_ARRAYVAR && *e2p < 0)
 #endif
        {
@@ -7151,7 +7343,6 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
 {
   int vtype, want_indir;
   char *temp, *vname;
-  WORD_DESC *wd;
   SHELL_VAR *v;
   arrayind_t lind;
 
@@ -7181,7 +7372,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
 #if defined (ARRAY_VARS)
   if (valid_array_reference (vname, 0))
     {
-      v = array_variable_part (vname, &temp, (int *)0);
+      v = array_variable_part (vname, 0, &temp, (int *)0);
       /* If we want to signal array_value to use an already-computed index,
         set LIND to that index */
       lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0;
@@ -7192,8 +7383,8 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
          *valp = (char *)NULL;
        }
       if (v && (array_p (v) || assoc_p (v)))
-       { /* [ */
-         if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')
+       {
+         if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK)
            {
              /* Callers have to differentiate between indexed and associative */
              vtype = VT_ARRAYVAR;
@@ -7208,47 +7399,352 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
            }
          *varp = v;
        }
-      else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']'))
+      else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK))
+       {
+         vtype = VT_VARIABLE;
+         *varp = v;
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           *valp = value ? dequote_string (value) : savestring ("");
+         else
+           *valp = value ? dequote_escapes (value) : (char *)NULL;
+       }
+      else
+       {
+         vtype = VT_ARRAYMEMBER;
+         *varp = v;
+         *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind);
+       }
+    }
+  else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v)))
+    {
+      vtype = VT_ARRAYMEMBER;
+      *varp = v;
+      *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0);
+    }
+  else
+#endif
+    {
+      if (value && vtype == VT_VARIABLE)
+       {
+         *varp = find_variable (vname);
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           *valp = dequote_string (value);
+         else
+           *valp = dequote_escapes (value);
+       }
+      else
+       *valp = value;
+    }
+
+  if (want_indir)
+    free (vname);
+
+  return vtype;
+}
+
+/***********************************************************/
+/*                                                        */
+/* Functions to perform transformations on variable values */
+/*                                                        */
+/***********************************************************/
+
+static char *
+string_var_assignment (v, s)
+     SHELL_VAR *v;
+     char *s;
+{
+  char flags[MAX_ATTRIBUTES], *ret, *val;
+  int i;
+
+  val = sh_quote_reusable (s, 0);
+  i = var_attribute_string (v, 0, flags);
+  ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES);
+  if (i > 0)
+    sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
+  else
+    sprintf (ret, "%s=%s", v->name, val);
+  free (val);
+  return ret;
+}
+
+#if defined (ARRAY_VARS)
+static char *
+array_var_assignment (v, itype, quoted)
+     SHELL_VAR *v;
+     int itype, quoted;
+{
+  char *ret, *val, flags[MAX_ATTRIBUTES];
+  int i;
+
+  if (v == 0)
+    return (char *)NULL;
+  val = array_p (v) ? array_to_assign (array_cell (v), 0)
+                   : assoc_to_assign (assoc_cell (v), 0);
+  if (val == 0)
+    {
+      val = (char *)xmalloc (3);
+      val[0] = LPAREN;
+      val[1] = RPAREN;
+      val[2] = 0;
+    }
+  else
+    {
+      ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val);
+      free (val);
+      val = ret;
+    }
+  i = var_attribute_string (v, 0, flags);
+  ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16);
+  sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
+  free (val);
+  return ret;
+}
+#endif
+
+static char *
+pos_params_assignment (list, itype, quoted)
+     WORD_LIST *list;
+     int itype;
+     int quoted;
+{
+  char *temp, *ret;
+
+  /* first, we transform the list to quote each word. */
+  temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted);
+  ret = (char *)xmalloc (strlen (temp) + 8);
+  strcpy (ret, "set -- ");
+  strcpy (ret + 7, temp);
+  free (temp);
+  return ret;
+}
+
+static char *
+string_transform (xc, v, s)
+     int xc;
+     SHELL_VAR *v;
+     char *s;
+{
+  char *ret, flags[MAX_ATTRIBUTES], *t;
+  int i;
+
+  if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0))
+    return (char *)NULL;
+
+  switch (xc)
+    {
+      /* Transformations that interrogate the variable */
+      case 'a':
+       i = var_attribute_string (v, 0, flags);
+       ret = (i > 0) ? savestring (flags) : (char *)NULL;
+       break;
+      case 'A':
+       ret = string_var_assignment (v, s);
+       break;
+      /* Transformations that modify the variable's value */
+      case 'E':
+       t = ansiexpand (s, 0, strlen (s), (int *)0);
+       ret = dequote_escapes (t);
+       free (t);
+       break;
+      case 'P':
+       ret = decode_prompt_string (s);
+       break;
+      case 'Q':
+       ret = sh_quote_reusable (s, 0);
+       break;
+      default:
+       ret = (char *)NULL;
+       break;
+    }
+  return ret;
+}
+
+static char *
+list_transform (xc, v, list, itype, quoted)
+     int xc;
+     SHELL_VAR *v;
+     WORD_LIST *list;
+     int itype, quoted;
+{
+  WORD_LIST *new, *l;
+  WORD_DESC *w;
+  char *tword;
+  int qflags;
+
+  for (new = (WORD_LIST *)NULL, l = list; l; l = l->next)
+    {
+      tword = string_transform (xc, v, l->word->word);
+      w = alloc_word_desc ();
+      w->word = tword ? tword : savestring ("");       /* XXX */
+      new = make_word_list (w, new);
+    }
+  l = REVERSE_LIST (new, WORD_LIST *);
+
+  qflags = quoted;
+  /* If we are expanding in a context where word splitting will not be
+     performed, treat as quoted.  This changes how $* will be expanded. */
+  if (itype == '*' && expand_no_split_dollar_star && ifs_is_null)
+    qflags |= Q_DOUBLE_QUOTES;         /* Posix interp 888 */
+
+  tword = string_list_pos_params (itype, l, qflags);
+  dispose_words (l);
+
+  return (tword);
+}
+
+static char *
+parameter_list_transform (xc, itype, quoted)
+     int xc;
+     int itype;
+     int quoted;
+{
+  char *ret;
+  WORD_LIST *list;
+
+  list = list_rest_of_args ();
+  if (list == 0)
+    return ((char *)NULL);
+  if (xc == 'A')
+    ret = pos_params_assignment (list, itype, quoted);
+  else
+    ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted);
+  dispose_words (list);
+  return (ret);
+}
+
+#if defined (ARRAY_VARS)
+static char *
+array_transform (xc, var, varname, quoted)
+     int xc;
+     SHELL_VAR *var;
+     char *varname;    /* so we can figure out how it's indexed */
+     int quoted;
+{
+  ARRAY *a;
+  HASH_TABLE *h;
+  int itype;
+  char *ret;
+  WORD_LIST *list;
+  SHELL_VAR *v;
+
+  /* compute itype from varname here */
+  v = array_variable_part (varname, 0, &ret, 0);
+
+  /* XXX */
+  if (v && invisible_p (v))
+    return ((char *)NULL);
+
+  itype = ret[0];
+
+  if (xc == 'A')
+    return (array_var_assignment (v, itype, quoted));
+
+  a = (v && array_p (v)) ? array_cell (v) : 0;
+  h = (v && assoc_p (v)) ? assoc_cell (v) : 0;
+  
+  list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0);
+  if (list == 0)
+   return ((char *)NULL);
+  ret = list_transform (xc, v, list, itype, quoted);
+  dispose_words (list);
+
+  return ret;
+}
+#endif /* ARRAY_VARS */
+
+static char *
+parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags)
+     char *varname, *value;
+     int ind;
+     char *xform;
+     int rtype, quoted, pflags, flags;
+{
+  int vtype, xc;
+  char *temp1, *val, *oname;
+  SHELL_VAR *v;
+
+  xc = xform[0];
+  if (value == 0 && xc != 'A' && xc != 'a')
+    return ((char *)NULL);
+
+  oname = this_command_name;
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+  if (vtype == -1)
+    {
+      this_command_name = oname;
+      return ((char *)NULL);
+    }
+
+  /* check for valid values of xc */
+  switch (xc)
+    {
+    case 'a':          /* expand to a string with just attributes */
+    case 'A':          /* expand as an assignment statement with attributes */
+    case 'E':          /* expand like $'...' */
+    case 'P':          /* expand like prompt string */
+    case 'Q':          /* quote reusably */
+      break;
+    default:
+      this_command_name = oname;
+      return &expand_param_error;
+    }
+
+  /* If we are asked to display the attributes of an unset variable, V will
+     be NULL after the call to get_var_and_type. Double-check here. */
+  if (xc == 'a' && vtype == VT_VARIABLE && varname && v == 0)
+    v = find_variable (varname);
+
+  temp1 = (char *)NULL;                /* shut up gcc */
+  switch (vtype & ~VT_STARSUB)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      temp1 = string_transform (xc, v, val);
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (temp1)
+       {
+         val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+                       ? quote_string (temp1)
+                       : quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      temp1 = array_transform (xc, v, varname, quoted);
+      if (temp1 && quoted == 0 && ifs_is_null)
        {
-         vtype = VT_VARIABLE;
-         *varp = v;
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-           *valp = dequote_string (value);
-         else
-           *valp = dequote_escapes (value);
+               /* Posix interp 888 */
        }
-      else
+      else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
        {
-         vtype = VT_ARRAYMEMBER;
-         *varp = v;
-         *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind);
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
        }
-    }
-  else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v)))
-    {
-      vtype = VT_ARRAYMEMBER;
-      *varp = v;
-      *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0);
-    }
-  else
+      break;
 #endif
-    {
-      if (value && vtype == VT_VARIABLE)
+    case VT_POSPARMS:
+      temp1 = parameter_list_transform (xc, varname[0], quoted);
+      if (temp1 && quoted == 0 && ifs_is_null)
        {
-         *varp = find_variable (vname);
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-           *valp = dequote_string (value);
-         else
-           *valp = dequote_escapes (value);
+               /* Posix interp 888 */
        }
-      else
-       *valp = value;
+      else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
     }
 
-  if (want_indir)
-    free (vname);
-
-  return vtype;
+  this_command_name = oname;
+  return temp1;
 }
 
 /******************************************************/
@@ -7293,11 +7789,11 @@ mb_substring (string, s, e)
    VARNAME.  If VARNAME is an array variable, use the array elements. */
 
 static char *
-parameter_brace_substring (varname, value, ind, substr, quoted, flags)
+parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
      char *varname, *value;
      int ind;
      char *substr;
-     int quoted, flags;
+     int quoted, pflags, flags;
 {
   intmax_t e1, e2;
   int vtype, r, starsub;
@@ -7349,8 +7845,30 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags)
       FREE (tt);
       break;
     case VT_POSPARMS:
-      tt = pos_params (varname, e1, e2, quoted);
-      if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+    case VT_ARRAYVAR:
+      if (vtype == VT_POSPARMS)
+       tt = pos_params (varname, e1, e2, quoted);
+#if defined (ARRAY_VARS)
+        /* assoc_subrange and array_subrange both call string_list_pos_params,
+          so we can treat this case just like VT_POSPARAMS. */
+      else if (assoc_p (v))
+       /* we convert to list and take first e2 elements starting at e1th
+          element -- officially undefined for now */   
+       tt = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted);
+      else
+       /* 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);
+#endif
+      /* We want to leave this alone in every case where pos_params/
+        string_list_pos_params quotes the list members */
+      if (tt && quoted == 0 && ifs_is_null)
+       {
+         temp = tt;    /* Posix interp 888 */
+       }
+      else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
        {
          temp = tt ? quote_escapes (tt) : (char *)NULL;
          FREE (tt);
@@ -7358,21 +7876,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags)
       else
        temp = tt;
       break;
-#if defined (ARRAY_VARS)
-    case VT_ARRAYVAR:
-      if (assoc_p (v))
-       /* we convert to list and take first e2 elements starting at e1th
-          element -- officially undefined for now */   
-       temp = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted);
-      else
-      /* 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). */
-       temp = array_subrange (array_cell (v), e1, e2, starsub, quoted);
-      /* array_subrange now calls array_quote_escapes as appropriate, so the
-        caller no longer needs to. */
-      break;
-#endif
+
     default:
       temp = (char *)NULL;
     }
@@ -7386,7 +7890,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags)
 /*                                                             */
 /****************************************************************/
 
-#if 0  /* Unused */
+#ifdef INCLUDE_UNUSED
 static int
 shouldexp_replacement (s)
      char *s;
@@ -7413,7 +7917,7 @@ pat_subst (string, pat, rep, mflags)
   int rptr, mtype, rxpand, mlen;
   size_t rsize, l, replen, rslen;
 
-  if (string  == 0)
+  if (string == 0)
     return (savestring (""));
 
   mtype = mflags & MATCH_TYPEMASK;
@@ -7563,8 +8067,12 @@ pos_params_pat_subst (string, pat, rep, mflags)
   pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
   qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
 
-  ret = string_list_pos_params (pchar, save, qflags);
+  /* If we are expanding in a context where word splitting will not be
+     performed, treat as quoted. This changes how $* will be expanded. */
+  if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && expand_no_split_dollar_star && ifs_is_null)
+    qflags |= Q_DOUBLE_QUOTES;         /* Posix interp 888 */
 
+  ret = string_list_pos_params (pchar, save, qflags);
   dispose_words (save);
 
   return (ret);
@@ -7582,17 +8090,21 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
      int quoted, pflags, flags;
 {
   int vtype, mflags, starsub, delim;
-  char *val, *temp, *pat, *rep, *p, *lpatsub, *tt;
+  char *val, *temp, *pat, *rep, *p, *lpatsub, *tt, *oname;
   SHELL_VAR *v;
 
   if (value == 0)
     return ((char *)NULL);
 
-  this_command_name = varname;
+  oname = this_command_name;
+  this_command_name = varname;         /* error messages */
 
   vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
   if (vtype == -1)
-    return ((char *)NULL);
+    {
+      this_command_name = oname;
+      return ((char *)NULL);
+    }
 
   starsub = vtype & VT_STARSUB;
   vtype &= ~VT_STARSUB;
@@ -7697,8 +8209,18 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
        }
       break;
     case VT_POSPARMS:
+      /* This does the right thing for the case where we are not performing
+        word splitting. MATCH_STARSUB restricts it to ${* /foo/bar}, and
+        pos_params_pat_subst/string_list_pos_params will do the right thing
+        in turn for the case where ifs_is_null. Posix interp 888 */
+      if ((pflags & PF_NOSPLIT2) && (mflags & MATCH_STARSUB))
+        mflags |= MATCH_ASSIGNRHS;
       temp = pos_params_pat_subst (val, p, rep, mflags);
-      if (temp && (mflags & MATCH_QUOTED) == 0)
+      if (temp && quoted == 0 && ifs_is_null)
+       {
+         /* Posix interp 888 */
+       }
+      else if (temp && (mflags & MATCH_QUOTED) == 0)
        {
          tt = quote_escapes (temp);
          free (temp);
@@ -7707,11 +8229,28 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
       break;
 #if defined (ARRAY_VARS)
     case VT_ARRAYVAR:
-      temp = assoc_p (v) ? assoc_patsub (assoc_cell (v), p, rep, mflags)
-                        : array_patsub (array_cell (v), p, rep, mflags);
-      /* Don't call quote_escapes anymore; array_patsub calls
-        array_quote_escapes as appropriate before adding the
-        space separators; ditto for assoc_patsub. */
+      /* If we are expanding in a context where word splitting will not be
+        performed, treat as quoted.  This changes how ${A[*]} will be
+        expanded to make it identical to $*. */
+      if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null)
+       mflags |= MATCH_QUOTED;         /* Posix interp 888 */
+
+      /* these eventually call string_list_pos_params */
+      if (assoc_p (v))
+       temp = assoc_patsub (assoc_cell (v), p, rep, mflags);
+      else
+       temp = array_patsub (array_cell (v), p, rep, mflags);
+
+      if (temp && quoted == 0 && ifs_is_null)
+       {
+         /* Posix interp 888 */
+       }
+      else if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
       break;
 #endif
     }
@@ -7720,6 +8259,8 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
   FREE (rep);
   free (lpatsub);
 
+  this_command_name = oname;
+
   return temp;
 }
 
@@ -7758,6 +8299,11 @@ pos_params_modcase (string, pat, modop, mflags)
   pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
   qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
 
+  /* If we are expanding in a context where word splitting will not be
+     performed, treat as quoted.  This changes how $* will be expanded. */
+  if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && ifs_is_null)
+    qflags |= Q_DOUBLE_QUOTES;         /* Posix interp 888 */
+
   ret = string_list_pos_params (pchar, save, qflags);
   dispose_words (save);
 
@@ -7769,24 +8315,28 @@ pos_params_modcase (string, pat, modop, mflags)
    to perform.  QUOTED is a flags word containing the type of quoting
    currently in effect. */
 static char *
-parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
+parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags)
      char *varname, *value;
      int ind, modspec;
      char *patspec;
-     int quoted, flags;
+     int quoted, pflags, flags;
 {
   int vtype, starsub, modop, mflags, x;
-  char *val, *temp, *pat, *p, *lpat, *tt;
+  char *val, *temp, *pat, *p, *lpat, *tt, *oname;
   SHELL_VAR *v;
 
   if (value == 0)
     return ((char *)NULL);
 
+  oname = this_command_name;
   this_command_name = varname;
 
   vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
   if (vtype == -1)
-    return ((char *)NULL);
+    {
+      this_command_name = oname;
+      return ((char *)NULL);
+    }
 
   starsub = vtype & VT_STARSUB;
   vtype &= ~VT_STARSUB;
@@ -7797,6 +8347,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
     mflags |= MATCH_QUOTED;
   if (starsub)
     mflags |= MATCH_STARSUB;
+  if (pflags & PF_ASSIGNRHS)
+    mflags |= MATCH_ASSIGNRHS;
   
   p = patspec;
   if (modspec == '^')
@@ -7820,7 +8372,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
     
   lpat = p ? savestring (p) : 0;
   /* Perform the same expansions on the pattern as performed by the
-     pattern removal expansions.  FOR LATER */
+     pattern removal expansions. */
   pat = lpat ? getpattern (lpat, quoted, 1) : 0;
 
   /* OK, now we do the case modification. */
@@ -7841,7 +8393,11 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
 
     case VT_POSPARMS:
       temp = pos_params_modcase (val, pat, modop, mflags);
-      if (temp && (mflags & MATCH_QUOTED)  == 0)
+      if (temp && quoted == 0 && ifs_is_null)
+       {
+         /* Posix interp 888 */
+       }
+      else if (temp && (mflags & MATCH_QUOTED) == 0)
        {
          tt = quote_escapes (temp);
          free (temp);
@@ -7851,11 +8407,26 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
 
 #if defined (ARRAY_VARS)
     case VT_ARRAYVAR:
+      /* If we are expanding in a context where word splitting will not be
+        performed, treat as quoted.  This changes how ${A[*]} will be
+        expanded to make it identical to $*. */
+      if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null)
+       mflags |= MATCH_QUOTED;         /* Posix interp 888 */
+
       temp = assoc_p (v) ? assoc_modcase (assoc_cell (v), pat, modop, mflags)
                         : array_modcase (array_cell (v), pat, modop, mflags);
-      /* Don't call quote_escapes; array_modcase calls array_quote_escapes
-        as appropriate before adding the space separators; ditto for
-        assoc_modcase. */
+
+      if (temp && quoted == 0 && ifs_is_null)
+       {
+         /* Posix interp 888 */
+       }
+      else if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+
       break;
 #endif
     }
@@ -7863,6 +8434,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
   FREE (pat);
   free (lpat);
 
+  this_command_name = oname;
+
   return temp;
 }
 
@@ -7970,7 +8543,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
       name[1] = '\0';
       t_index++;
     }
-  else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == '}')
+  else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == RBRACE)
     {
       name = (char *)xrealloc (name, t_index - sindex + 2);
       name[t_index - sindex] = '@';
@@ -8063,7 +8636,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
     (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1])
                                        || VALID_INDIR_PARAM (name[1]));
 
-  /* Determine the value of this variable. */
+  /* Determine the value of this variable whose name is NAME. */
 
   /* Check for special variables, directly referenced. */
   if (SPECIAL_VAR (name, want_indir))
@@ -8130,7 +8703,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
       x = all_variables_matching_prefix (temp1);
       xlist = strvec_to_word_list (x, 0, 0);
       if (string[sindex - 2] == '*')
-       temp = string_list_dollar_star (xlist);
+       temp = string_list_dollar_star (xlist, quoted, 0);
       else
        {
          temp = string_list_dollar_at (xlist, quoted, 0);
@@ -8155,16 +8728,16 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
     }
 
 #if defined (ARRAY_VARS)      
-  /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */
+  /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */
   if (want_indir && string[sindex - 1] == RBRACE &&
-      string[sindex - 2] == ']' && valid_array_reference (name+1, 0))
+      string[sindex - 2] == RBRACK && valid_array_reference (name+1, 0))
     {
       char *x, *x1;
 
       temp1 = savestring (name + 1);
-      x = array_variable_name (temp1, &x1, (int *)0);  /* [ */
+      x = array_variable_name (temp1, 0, &x1, (int *)0);
       FREE (x);
-      if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']')
+      if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == RBRACK)
        {
          temp = array_keys (temp1, quoted);    /* handles assoc vars too */
          if (x1[0] == '@')
@@ -8207,6 +8780,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
          temp = (char *)NULL;
          goto bad_substitution;
        }
+
       /* Turn off the W_ARRAYIND flag because there is no way for this function
         to return the index we're supposed to be using. */
       if (tdesc && tdesc->flags)
@@ -8215,6 +8789,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
   else
     tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
 
+  if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal)
+    {
+      tflag = 0;
+      tdesc = 0;
+    }
+
   if (tdesc)
     {
       temp = tdesc->word;
@@ -8240,13 +8820,18 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
       qflags = quoted;
       /* If in a context where word splitting will not take place, treat as
         if double-quoted.  Has effects with $* and ${array[*]} */
+
       if (pflags & PF_ASSIGNRHS)
        qflags |= Q_DOUBLE_QUOTES;
-      chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at);
       /* We duplicate a little code here */
-      t = mbschr (name, '[');
-      if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == ']')
-        all_element_arrayref = 1;
+      t = mbschr (name, LBRACK);
+      if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == RBRACK)
+       {
+         all_element_arrayref = 1;
+         if (expand_no_split_dollar_star && t[1] == '*')       /* XXX */
+           qflags |= Q_DOUBLE_QUOTES;
+       }
+      chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at);
     }
 #endif
 
@@ -8255,6 +8840,14 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
   /* XXX - this may not need to be restricted to special variables */
   if (check_nullness)
     var_is_null |= var_is_set && var_is_special && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL (temp);
+#if defined (ARRAY_VARS)
+  if (check_nullness)
+    var_is_null |= var_is_set && 
+                  (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) &&
+                  QUOTED_NULL (temp) &&
+                  valid_array_reference (name, 0) &&
+                  chk_atstar (name, 0, (int *)0, (int *)0);
+#endif
 
   /* Get the rest of the stuff inside the braces. */
   if (c && c != RBRACE)
@@ -8290,15 +8883,15 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
   /* If this is a substring spec, process it and add the result. */
   if (want_substring)
     {
-      temp1 = parameter_brace_substring (name, temp, ind, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
-      FREE (name);
+      temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
       FREE (value);
       FREE (temp);
 
-      if (temp1 == &expand_param_error)
-       return (&expand_wdesc_error);
-      else if (temp1 == &expand_param_fatal)
-       return (&expand_wdesc_fatal);
+      if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
+        {
+          FREE (name);
+         return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
+        }
 
       ret = alloc_word_desc ();
       ret->word = temp1;
@@ -8310,19 +8903,24 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
          QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+      /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
+      else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
+       ret->flags |= W_SPLITSPACE;     /* Posix interp 888 */
+
+      FREE (name);
       return ret;
     }
   else if (want_patsub)
     {
       temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
-      FREE (name);
       FREE (value);
       FREE (temp);
 
-      if (temp1 == &expand_param_error)
-       return (&expand_wdesc_error);
-      else if (temp1 == &expand_param_fatal)
-       return (&expand_wdesc_fatal);
+      if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
+        {
+          FREE (name);
+         return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
+        }
 
       ret = alloc_word_desc ();
       ret->word = temp1;
@@ -8330,20 +8928,25 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
          QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+      /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
+      else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
+       ret->flags |= W_SPLITSPACE;     /* Posix interp 888 */
+
+      FREE (name);
       return ret;
     }
 #if defined (CASEMOD_EXPANSIONS)
   else if (want_casemod)
     {
-      temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
-      FREE (name);
+      temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
       FREE (value);
       FREE (temp);
 
-      if (temp1 == &expand_param_error)
-       return (&expand_wdesc_error);
-      else if (temp1 == &expand_param_fatal)
-       return (&expand_wdesc_fatal);
+      if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
+        {
+          FREE (name);
+         return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
+        }
 
       ret = alloc_word_desc ();
       ret->word = temp1;
@@ -8351,6 +8954,11 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
           (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
          QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+      /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
+      else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
+       ret->flags |= W_SPLITSPACE;     /* Posix interp 888 */
+
+      FREE (name);
       return ret;
     }
 #endif
@@ -8375,13 +8983,14 @@ bad_substitution:
       break;
 
     case '@':
-      temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+      temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
       free (temp);
       free (value);
-      free (name);
+
       if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
        {
-         last_command_exit_value = EXECUTION_FAILURE;
+         free (name);
+         last_command_exit_value = EXECUTION_FAILURE;
          report_error (_("%s: bad substitution"), string ? string : "??");
          return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
        }
@@ -8390,6 +8999,11 @@ bad_substitution:
       ret->word = temp1;
       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+      /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
+      else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
+       ret->flags |= W_SPLITSPACE;     /* Posix interp 888 */
+
+      free (name);
       return ret;
 
     case '#':  /* ${param#[#]pattern} */
@@ -8402,12 +9016,16 @@ bad_substitution:
       temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
       free (temp);
       free (value);
-      free (name);
 
       ret = alloc_word_desc ();
       ret->word = temp1;
       if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
        ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+      /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
+      else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
+       ret->flags |= W_SPLITSPACE;     /* Posix interp 888 */
+
+      free (name);
       return ret;
 
     case '-':
@@ -8468,7 +9086,7 @@ bad_substitution:
            }
          else if (c == '?')
            {
-             parameter_brace_expand_error (name, value);
+             parameter_brace_expand_error (name, value, check_nullness);
              return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
            }
          else if (c != '+')
@@ -8551,6 +9169,7 @@ param_expand (string, sindex, quoted, expanded_something,
     case '8':
     case '9':
       temp1 = dollar_vars[TODIGIT (c)];
+      /* This doesn't get called when (pflags&PF_IGNUNBOUND) != 0 */
       if (unbound_vars_is_error && temp1 == (char *)NULL)
        {
          uerror[0] = '$';
@@ -8599,7 +9218,7 @@ param_expand (string, sindex, quoted, expanded_something,
          if (expanded_something)
            *expanded_something = 0;
          temp = (char *)NULL;
-         if (unbound_vars_is_error)
+         if (unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
            {
              uerror[0] = '$';
              uerror[1] = c;
@@ -8649,7 +9268,7 @@ param_expand (string, sindex, quoted, expanded_something,
             quote the whole string, including the separators.  If IFS
             is unset, the parameters are separated by ' '; if $IFS is
             null, the parameters are concatenated. */
-         temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list) : string_list (list);
+         temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list, quoted, 0) : string_list (list);
          if (temp)
            {
              temp1 = (quoted & Q_DOUBLE_QUOTES) ? quote_string (temp) : temp;
@@ -8667,16 +9286,44 @@ param_expand (string, sindex, quoted, expanded_something,
             an assignment statement.  In that case, we don't separate the
             arguments at all.  Otherwise, if the $* is not quoted it is
             identical to $@ */
+         if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set == 0 && (pflags & PF_ASSIGNRHS))
+           {
+             /* Posix interp 888: RHS of assignment, IFS unset */
+             temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags);
+             tflag |= W_SPLITSPACE;
+           }
+         else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_null && (pflags & PF_ASSIGNRHS))
+           {
+             /* Posix interp 888: RHS of assignment, IFS set to '' */
+             temp1 = string_list_dollar_star (list, quoted, pflags);
+             temp = temp1 ? quote_escapes (temp1) : temp1;
+             FREE (temp1);
+           }
+         else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set && ifs_is_null == 0 && (pflags & PF_ASSIGNRHS))
+           {
+             /* Posix interp 888: RHS of assignment, IFS set to non-null value */
+             temp1 = string_list_dollar_star (list, quoted, pflags);
+             temp = temp1 ? quote_string (temp1) : temp1;
+             FREE (temp1);
+           }
+         /* XXX - should we check ifs_is_set here as well? */
 #  if defined (HANDLE_MULTIBYTE)
-         if (expand_no_split_dollar_star && ifs_firstc[0] == 0)
+         else if (expand_no_split_dollar_star && ifs_firstc[0] == 0)
 #  else
-         if (expand_no_split_dollar_star && ifs_firstc == 0)
+         else if (expand_no_split_dollar_star && ifs_firstc == 0)
 #  endif
-           temp = string_list_dollar_star (list);
+           /* Posix interp 888: not RHS, no splitting, IFS set to '' */
+           temp = string_list_dollar_star (list, quoted, 0);
          else
            {
              temp = string_list_dollar_at (list, quoted, 0);
+             /* Set W_SPLITSPACE to make sure the individual positional
+                parameters are split into separate arguments */
+#if 0
              if (quoted == 0 && (ifs_is_set == 0 || ifs_is_null))
+#else  /* change with bash-5.0 */
+             if (quoted == 0 && ifs_is_null)
+#endif
                tflag |= W_SPLITSPACE;
              /* If we're not quoted but we still don't want word splitting, make
                 we quote the IFS characters to protect them from splitting (e.g.,
@@ -8741,10 +9388,32 @@ param_expand (string, sindex, quoted, expanded_something,
         parameters no matter what IFS is set to. */
       /* XXX - what to do when in a context where word splitting is not
         performed? Even when IFS is not the default, posix seems to imply
-        that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
-        here. */
-      /* XXX - bash-4.4/bash-5.0 passing PFLAGS */
-      temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted, pflags);
+        that we behave like unquoted $* ?  See below for how we use
+        PF_NOSPLIT2 here. */
+
+      /* These are the cases where word splitting will not be performed. */
+      if (pflags & PF_ASSIGNRHS)
+       temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags);
+      /* This needs to match what expand_word_internal does with non-quoted $@
+        does with separating with spaces.  Passing Q_DOUBLE_QUOTES means that
+        the characters in LIST will be quoted, and PF_ASSIGNRHS ensures that
+        they will separated by spaces. After doing this, we need the special
+        handling for PF_NOSPLIT2 in expand_word_internal to remove the CTLESC
+        quotes. */
+      else if (pflags & PF_NOSPLIT2)
+        {
+#if defined (HANDLE_MULTIBYTE)
+         if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ')
+#else
+         if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ')
+#endif
+           /* Posix interp 888 */
+           temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags);
+         else
+           temp = string_list_dollar_at (list, quoted, pflags);
+       }
+      else
+       temp = string_list_dollar_at (list, quoted, pflags);
 
       tflag |= W_DOLLARAT;
       dispose_words (list);
@@ -8826,7 +9495,7 @@ arithsub:
          /* No error messages. */
          savecmd = this_command_name;
          this_command_name = (char *)NULL;
-         number = evalexp (temp1, &expok);
+         number = evalexp (temp1, EXP_EXPANDED, &expok);
          this_command_name = savecmd;
          free (temp);
          free (temp1);
@@ -8850,7 +9519,7 @@ comsub:
        temp1 = substring (string, *sindex, zindex+1);
       else
        {
-         tdesc = command_substitute (temp, quoted);
+         tdesc = command_substitute (temp, quoted, pflags&PF_ASSIGNRHS);
          temp1 = tdesc ? tdesc->word : (char *)NULL;
          if (tdesc)
            dispose_word_desc (tdesc);
@@ -8861,7 +9530,7 @@ comsub:
 
     /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
        away in a future bash release. */
-    case '[':
+    case '[':          /*]*/
       /* Extract the contents of this arithmetic substitution. */
       t_index = zindex + 1;
       temp = extract_arithmetic_subst (string, &t_index);
@@ -8923,7 +9592,8 @@ comsub:
 
              temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
                        ? quote_string (temp)
-                       : quote_escapes (temp);
+                       : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp)
+                                                  : quote_escapes (temp));
            }
 
          free (temp1);
@@ -9067,8 +9737,10 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
 
   /* State flags */
   int had_quoted_null;
+  int has_quoted_ifs;          /* did we add a quoted $IFS character here? */
   int has_dollar_at, temp_has_dollar_at;
   int split_on_spaces;
+  int local_expanded;
   int tflag;
   int pflags;                  /* flags passed to param_expand */
   int mb_cur_max;
@@ -9102,6 +9774,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
   istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE);
   istring[istring_index = 0] = '\0';
   quoted_dollar_at = had_quoted_null = has_dollar_at = 0;
+  has_quoted_ifs = 0;
   split_on_spaces = 0;
   quoted_state = UNQUOTED;
 
@@ -9111,7 +9784,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
   mb_cur_max = MB_CUR_MAX;
 
   /* Don't need the string length for the SADD... and COPY_ macros unless
-     multibyte characters are possible. */
+     multibyte characters are possible, but do need it for bounds checking. */
   string_size = (mb_cur_max > 1) ? strlen (string) : 1;
 
   if (contains_dollar_at)
@@ -9165,8 +9838,7 @@ add_string:
        case '<':
        case '>':
          {
-           /* bash-4.4/bash-5.0
-              XXX - technically this should only be expanded at the start
+              /* XXX - technically this should only be expanded at the start
               of a word */
            if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)) || posixly_correct)
              {
@@ -9225,17 +9897,19 @@ add_string:
            word->flags |= W_ITILDE;
 #endif
 
-         /* XXX - bash-4.4/bash-5.0 */
          if (word->flags & W_ASSIGNARG)
            word->flags |= W_ASSIGNRHS;         /* affects $@ */
 
          if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c))
-           goto add_ifs_character;
+           {
+             has_quoted_ifs++;
+             goto add_ifs_character;
+           }
          else
            goto add_character;
 
        case ':':
-         if (word->flags & W_NOTILDE)
+         if (word->flags & (W_NOTILDE|W_NOASSNTILDE))
            {
              if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c))
                goto add_ifs_character;
@@ -9255,12 +9929,12 @@ add_string:
        case '~':
          /* If the word isn't supposed to be tilde expanded, or we're not
             at the start of a word or after an unquoted : or = in an
-            assignment statement, we don't do tilde expansion.  If we don't want
-            tilde expansion when expanding words to be passed to the arithmetic
-            evaluator, remove the check for Q_ARITH. */
+            assignment statement, we don't do tilde expansion.  We don't
+            do tilde expansion if quoted or in an arithmetic context. */
+
          if ((word->flags & (W_NOTILDE|W_DQUOTE)) ||
              (sindex > 0 && ((word->flags & W_ITILDE) == 0)) ||
-             ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0)))
+             (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
            {
              word->flags &= ~W_ITILDE;
              if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
@@ -9303,6 +9977,7 @@ add_string:
        case '$':
          if (expanded_something)
            *expanded_something = 1;
+         local_expanded = 1;
 
          temp_has_dollar_at = 0;
          pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0;
@@ -9329,7 +10004,9 @@ add_string:
            *contains_dollar_at = 1;
 
          if (tword && (tword->flags & W_HASQUOTEDNULL))
-           had_quoted_null = 1;
+           had_quoted_null = 1;                /* note for later */
+         if (tword && (tword->flags & W_SAWQUOTEDNULL))
+           had_quoted_null = 1;                /* XXX */
 
          temp = tword ? tword->word : (char *)NULL;
          dispose_word_desc (tword);
@@ -9369,6 +10046,7 @@ add_string:
                
            if (expanded_something)
              *expanded_something = 1;
+           local_expanded = 1;
 
            if (word->flags & W_NOCOMSUB)
              /* sindex + 1 because string[sindex] == '`' */
@@ -9376,7 +10054,7 @@ add_string:
            else
              {
                de_backslash (temp);
-               tword = command_substitute (temp, quoted);
+               tword = command_substitute (temp, quoted, 0);
                temp1 = tword ? tword->word : (char *)NULL;
                if (tword)
                  dispose_word_desc (tword);
@@ -9419,6 +10097,15 @@ add_string:
 
              SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size);
            }
+         else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && c == 0)
+           {
+             RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size,
+                                     DEFAULT_ARRAY_SIZE);
+             istring[istring_index++] = CTLESC;
+             istring[istring_index++] = '\\';
+             istring[istring_index] = '\0';
+             break;          
+           }
          else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0))
            {
              SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size);
@@ -9463,9 +10150,8 @@ add_twochars:
              tword = alloc_word_desc ();
              tword->word = temp;
 
-             /* XXX - bash-4.4/bash-5.0 */
              if (word->flags & W_ASSIGNARG)
-               tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS);        /* affects $@ */
+               tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */
              if (word->flags & W_COMPLETE)
                tword->flags |= W_COMPLETE;     /* for command substitutions */
              if (word->flags & W_NOCOMSUB)
@@ -9475,7 +10161,7 @@ add_twochars:
 
              temp = (char *)NULL;
 
-             temp_has_dollar_at = 0;   /* XXX */
+             temp_has_dollar_at = 0;   /* does this quoted (sub)string include $@? */
              /* Need to get W_HASQUOTEDNULL flag through this function. */
              list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL);
              has_dollar_at += temp_has_dollar_at;
@@ -9495,13 +10181,32 @@ add_twochars:
 
              /* "$@" (a double-quoted dollar-at) expands into nothing,
                 not even a NULL word, when there are no positional
-                parameters. */
+                parameters.  Posix interp 888 says that other parts of the
+                word that expand to quoted nulls result in quoted nulls, so
+                we can't just throw the entire word away if we have "$@"
+                anywhere in it.  We use had_quoted_null to keep track */
              if (list == 0 && temp_has_dollar_at)      /* XXX - was has_dollar_at */
                {
                  quoted_dollar_at++;
                  break;
                }
 
+             /* If this list comes back with a quoted null from expansion,
+                we have either "$x" or "$@" with $1 == ''. In either case,
+                we need to make sure we add a quoted null argument and
+                disable the special handling that "$@" gets. */
+             if (list && list->word && list->next == 0 && (list->word->flags & W_HASQUOTEDNULL))
+               {
+                 /* If we already saw a quoted null, we don't need to add
+                    another one */
+                 if (had_quoted_null && temp_has_dollar_at)
+                   {
+                     quoted_dollar_at++;
+                     break;
+                   }
+                 had_quoted_null = 1;          /* XXX */
+               }
+
              /* 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
@@ -9513,9 +10218,6 @@ add_twochars:
              if (list)
                dequote_list (list);
 
-             if (list && list->word && (list->word->flags & W_HASQUOTEDNULL))
-               had_quoted_null = 1;            /* XXX */
-
              if (temp_has_dollar_at)           /* XXX - was has_dollar_at */
                {
                  quoted_dollar_at++;
@@ -9523,6 +10225,7 @@ add_twochars:
                    *contains_dollar_at = 1;
                  if (expanded_something)
                    *expanded_something = 1;
+                 local_expanded = 1;
                }
            }
          else
@@ -9530,6 +10233,7 @@ add_twochars:
              /* What we have is "".  This is a minor optimization. */
              FREE (temp);
              list = (WORD_LIST *)NULL;
+             had_quoted_null = 1;      /* note for later */
            }
 
          /* The code above *might* return a list (consider the case of "$@",
@@ -9578,6 +10282,9 @@ add_twochars:
          else
            temp = (char *)NULL;
 
+         if (temp == 0 && quoted_state == PARTIALLY_QUOTED)
+           had_quoted_null = 1;        /* note for later */
+
          /* We do not want to add quoted nulls to strings that are only
             partially quoted; we can throw them away.  The exception to
             this is when we are going to be performing word splitting,
@@ -9600,6 +10307,7 @@ add_twochars:
              /* Add NULL arg. */
              c = CTLNUL;
              sindex--;         /* add_character: label increments sindex */
+             had_quoted_null = 1;      /* note for later */
              goto add_character;
            }
 
@@ -9627,9 +10335,13 @@ add_twochars:
          else
            remove_quoted_escapes (temp);       /* ??? */
 
+         if (temp == 0 && quoted_state == PARTIALLY_QUOTED)
+           had_quoted_null = 1;        /* note for later */
+
          /* We do not want to add quoted nulls to strings that are only
             partially quoted; such nulls are discarded.  See above for the
-            exception, which is when the string is going to be split. */
+            exception, which is when the string is going to be split.
+            Posix interp 888 */
          if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)))
            continue;
 
@@ -9650,6 +10362,8 @@ add_twochars:
        add_ifs_character:
          if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0))
            {
+             if ((quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)
+               has_quoted_ifs++;
              if (string[sindex])       /* from old goto dollar_add_string */
                sindex++;
              if (c == 0)
@@ -9660,6 +10374,8 @@ add_twochars:
              else
                {
 #if HANDLE_MULTIBYTE
+                 /* XXX - should make sure that c is actually multibyte,
+                    otherwise we can use the twochars branch */
                  if (mb_cur_max > 1)
                    sindex--;
 
@@ -9723,7 +10439,9 @@ finished_with_string:
        {
          istring[0] = CTLNUL;
          istring[1] = '\0';
-         tword = make_bare_word (istring);
+         tword = alloc_word_desc ();
+         tword->word = istring;
+         istring = 0;          /* avoid later free() */
          tword->flags |= W_HASQUOTEDNULL;              /* XXX */
          list = make_word_list (tword, (WORD_LIST *)NULL);
          if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
@@ -9736,22 +10454,16 @@ finished_with_string:
         null arguments */
       else  if (quoted_state == UNQUOTED || quoted_dollar_at)
        list = (WORD_LIST *)NULL;
-#if 0
-      else
-       {
-         tword = make_bare_word (istring);
-         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-           tword->flags |= W_QUOTED;
-         list = make_word_list (tword, (WORD_LIST *)NULL);
-       }
-#else
       else
        list = (WORD_LIST *)NULL;
-#endif
     }
   else if (word->flags & W_NOSPLIT)
     {
-      tword = make_bare_word (istring);
+      tword = alloc_word_desc ();
+      tword->word = istring;
+      if (had_quoted_null && QUOTED_NULL (istring))
+       tword->flags |= W_HASQUOTEDNULL;
+      istring = 0;             /* avoid later free() */
       if (word->flags & W_ASSIGNMENT)
        tword->flags |= W_ASSIGNMENT;   /* XXX */
       if (word->flags & W_COMPASSIGN)
@@ -9764,14 +10476,11 @@ finished_with_string:
        tword->flags |= W_NOEXPAND;     /* XXX */
       if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
        tword->flags |= W_QUOTED;
-      if (had_quoted_null && QUOTED_NULL (istring))
-       tword->flags |= W_HASQUOTEDNULL;
       list = make_word_list (tword, (WORD_LIST *)NULL);
     }
   else
     {
       char *ifs_chars;
-      char *tstring;
 
       ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
 
@@ -9787,7 +10496,16 @@ finished_with_string:
         or we expanded "$@" with IFS null and we need to split the positional
         parameters into separate words. */
       if (split_on_spaces)
-       list = list_string (istring, " ", 1);   /* XXX quoted == 1? */
+       {
+         /* If IFS is not set, and the word is not quoted, we want to split
+            the individual words on $' \t\n'. We rely on previous steps to
+            quote the portions of the word that should not be split */
+         if (ifs_is_set == 0)
+           list = list_string (istring, " \t\n", 1);   /* XXX quoted == 1? */
+         else
+           list = list_string (istring, " ", 1);       /* XXX quoted == 1? */
+       }
+
       /* If we have $@ (has_dollar_at != 0) and we are in a context where we
         don't want to split the result (W_NOSPLIT2), and we are not quoted,
         we have already separated the arguments with the first character of
@@ -9799,35 +10517,49 @@ finished_with_string:
         double-quoted $@ while expanding it. */
       else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
        {
+         tword = alloc_word_desc ();
          /* Only split and rejoin if we have to */
          if (*ifs_chars && *ifs_chars != ' ')
            {
+             /* list_string dequotes CTLESCs in the string it's passed, so we
+                need it to get the space separation right if space isn't the
+                first character in IFS (but is present) and to remove the 
+                quoting we added back in param_expand(). */
              list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
-             tstring = string_list (list);
+             /* This isn't exactly right in the case where we're expanding
+                the RHS of an expansion like ${var-$@} where IFS=: (for
+                example). The W_NOSPLIT2 means we do the separation with :;
+                the list_string removes the quotes and breaks the string into
+                a list, and the string_list rejoins it on spaces. When we
+                return, we expect to be able to split the results, but the
+                space separation means the right split doesn't happen. */
+             tword->word = string_list (list); 
            }
          else
-           tstring = istring;
-         tword = make_bare_word (tstring);
-         if (tstring != istring)
-           free (tstring);
-         goto set_word_flags;
-       }
-      /* This is the attempt to make $* in an assignment context (a=$*) and
-        array variables subscripted with * in an assignment context (a=${foo[*]})
-        behave similarly.  It has side effects that, though they increase
-        compatibility with other shells, are not backwards compatible. */
-#if 0
-      else if (has_dollar_at && quoted == 0 && ifs_chars && (word->flags & W_ASSIGNRHS))
-       {
-         tword = make_bare_word (istring);
+           tword->word = istring;
+         if (had_quoted_null && QUOTED_NULL (istring))
+           tword->flags |= W_HASQUOTEDNULL;    /* XXX */
+         if (tword->word != istring)
+           free (istring);
+         istring = 0;                  /* avoid later free() */
          goto set_word_flags;
        }
-#endif
       else if (has_dollar_at && ifs_chars)
        list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
       else
        {
-         tword = make_bare_word (istring);
+         tword = alloc_word_desc ();
+         if (expanded_something && *expanded_something == 0 && has_quoted_ifs)
+           tword->word = remove_quoted_ifs (istring);
+         else
+           tword->word = istring;
+         if (had_quoted_null && QUOTED_NULL (istring))
+           tword->flags |= W_HASQUOTEDNULL;    /* XXX */
+         else if (had_quoted_null)
+           tword->flags |= W_SAWQUOTEDNULL;    /* XXX */
+         if (tword->word != istring)
+           free (istring);
+         istring = 0;                  /* avoid later free() */
 set_word_flags:
          if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
            tword->flags |= W_QUOTED;
@@ -9841,8 +10573,6 @@ set_word_flags:
            tword->flags |= W_NOBRACE;
          if (word->flags & W_NOEXPAND)
            tword->flags |= W_NOEXPAND;
-         if (had_quoted_null && QUOTED_NULL (istring))
-           tword->flags |= W_HASQUOTEDNULL;    /* XXX */
          list = make_word_list (tword, (WORD_LIST *)NULL);
        }
     }
@@ -10002,14 +10732,19 @@ setifs (v)
 #if defined (HANDLE_MULTIBYTE)
   if (ifs_value == 0)
     {
-      ifs_firstc[0] = '\0';
+      ifs_firstc[0] = '\0';    /* XXX - ? */
       ifs_firstc_len = 1;
     }
   else
     {
-      size_t ifs_len;
-      ifs_len = strnlen (ifs_value, MB_CUR_MAX);
-      ifs_firstc_len = MBLEN (ifs_value, ifs_len);
+      if (locale_utf8locale && UTF8_SINGLEBYTE (*ifs_value))
+       ifs_firstc_len = (*ifs_value != 0) ? 1 : 0;
+      else
+       {
+         size_t ifs_len;
+         ifs_len = strnlen (ifs_value, MB_CUR_MAX);
+         ifs_firstc_len = MBLEN (ifs_value, ifs_len);
+       }
       if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
        {
          ifs_firstc[0] = ifs_value[0];
@@ -10060,10 +10795,24 @@ word_list_split (list)
      WORD_LIST *list;
 {
   WORD_LIST *result, *t, *tresult, *e;
+  WORD_DESC *w;
 
   for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
     {
       tresult = word_split (t->word, ifs_value);
+      /* POSIX 2.6: "If the complete expansion appropriate for a word results
+        in an empty field, that empty field shall be deleted from the list
+        of fields that form the completely expanded command, unless the
+        original word contained single-quote or double-quote characters."
+        This is where we handle these words that contain quoted null strings
+        and other characters that expand to nothing after word splitting. */
+      if (tresult == 0 && t->word && (t->word->flags & W_SAWQUOTEDNULL))       /* XXX */
+       {
+         w = alloc_word_desc ();
+         w->word = (char *)xmalloc (1);
+         w->word[0] = '\0';
+         tresult = make_word_list (w, (WORD_LIST *)NULL);
+       }
       if (result == 0)
         result = e = tresult;
       else
@@ -10091,6 +10840,8 @@ exp_jump_to_top_level (v)
 
   /* Cleanup code goes here. */
   expand_no_split_dollar_star = 0;     /* XXX */
+  if (expanding_redir)
+    undo_partial_redirects ();
   expanding_redir = 0;
   assigning_in_environment = 0;
 
@@ -10467,7 +11218,6 @@ shell_expand_word_list (tlist, eflags)
 {
   WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd;
   int expanded_something, has_dollar_at;
-  char *temp_string;
 
   /* We do tilde expansion all the time.  This is what 1003.2 says. */
   new_list = (WORD_LIST *)NULL;
@@ -10477,8 +11227,6 @@ shell_expand_word_list (tlist, eflags)
 
   for (orig_list = tlist; tlist; tlist = next)
     {
-      temp_string = tlist->word->word;
-
       next = tlist->next;
 
 #if defined (ARRAY_VARS)
@@ -10491,10 +11239,11 @@ shell_expand_word_list (tlist, eflags)
       if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG))
        {
          int t;
-         char opts[16], opti;
+         char opts[16];
+         int opti;
 
          opti = 0;
-         if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_ASSIGNARRAY))
+         if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY))
            opts[opti++] = '-';
 
          if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL))
@@ -10514,6 +11263,9 @@ shell_expand_word_list (tlist, eflags)
          else if (tlist->word->flags & W_ASSNGLOBAL)
            opts[opti++] = 'g';
 
+         if (tlist->word->flags & W_CHKLOCAL)
+           opts[opti++] = 'G';
+
          /* If we have special handling note the integer attribute and others
             that transform the value upon assignment.  What we do is take all
             of the option arguments and scan through them looking for options
@@ -10673,11 +11425,12 @@ expand_word_list_internal (list, eflags)
                  tint = do_word_assignment (temp_list->word, 0);
                  this_command_name = savecmd;
                  /* Variable assignment errors in non-interactive shells
-                    running in Posix.2 mode cause the shell to exit. */
+                    running in Posix.2 mode cause the shell to exit, unless
+                    they are being run by the `command' builtin. */
                  if (tint == 0)
                    {
                      last_command_exit_value = EXECUTION_FAILURE;
-                     if (interactive_shell == 0 && posixly_correct)
+                     if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0)
                        exp_jump_to_top_level (FORCE_EOF);
                      else
                        exp_jump_to_top_level (DISCARD);
@@ -10748,11 +11501,16 @@ expand_word_list_internal (list, eflags)
              if (assign_func == do_word_assignment)
                {
                  last_command_exit_value = EXECUTION_FAILURE;
-                 if (interactive_shell == 0 && posixly_correct && is_special_builtin)
+                 if (interactive_shell == 0 && posixly_correct)
                    exp_jump_to_top_level (FORCE_EOF);
                  else
                    exp_jump_to_top_level (DISCARD);
                }
+             else if (interactive_shell == 0 && is_special_builtin)
+               {
+                 last_command_exit_value = EXECUTION_FAILURE;
+                 exp_jump_to_top_level (FORCE_EOF);
+               }
              else
                tempenv_assign_error++;
            }
diff --git a/subst.h b/subst.h
index a2a8294ed1516b8767b4ee881934c82bbec1b9fa..34763222e7678baefe67d9652f8a0c8d1270bdfb 100644 (file)
--- a/subst.h
+++ b/subst.h
@@ -1,6 +1,6 @@
 /* subst.h -- Names of externally visible functions in subst.c. */
 
-/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
 #define ASS_MKGLOBAL   0x0008  /* force global assignment */
 #define ASS_NAMEREF    0x0010  /* assigning to nameref variable */
 #define ASS_FORCE      0x0020  /* force assignment even to readonly variable */
+#define ASS_CHKLOCAL   0x0040  /* check local variable before assignment */
+#define ASS_NOEXPAND   0x0080  /* don't expand associative array subscripts */
+#define ASS_NOEVAL     0x0100  /* don't evaluate value as expression */
+#define ASS_NOLONGJMP  0x0200  /* don't longjmp on fatal assignment error */
 
 /* Flags for the string extraction functions. */
 #define SX_NOALLOC     0x0001  /* just skip; don't return substring */
@@ -102,7 +106,7 @@ extern char *string_list_internal __P((WORD_LIST *, char *));
 extern char *string_list __P((WORD_LIST *));
 
 /* Turn $* into a single string, obeying POSIX rules. */
-extern char *string_list_dollar_star __P((WORD_LIST *));
+extern char *string_list_dollar_star __P((WORD_LIST *, int, int));
 
 /* Expand $@ into a single string, obeying POSIX rules. */
 extern char *string_list_dollar_at __P((WORD_LIST *, int, int));
@@ -188,7 +192,9 @@ extern char *expand_arith_string __P((char *, int));
 extern char *dequote_string __P((char *));
 
 /* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */
-extern char *dequote_escapes __P((char *));
+extern char *dequote_escapes __P((const char *));
+
+extern WORD_DESC *dequote_word __P((WORD_DESC *));
 
 /* De-quote quoted characters in each word in LIST. */
 extern WORD_LIST *dequote_list __P((WORD_LIST *));
@@ -212,7 +218,7 @@ extern char *quote_string __P((char *));
 
 /* Quote escape characters (characters special to interals of expansion)
    in a string. */
-extern char *quote_escapes __P((char *));
+extern char *quote_escapes __P((const char *));
 
 /* And remove such quoted special characters. */
 extern char *remove_quoted_escapes __P((char *));
@@ -258,9 +264,10 @@ extern WORD_LIST *expand_words_no_vars __P((WORD_LIST *));
    command substitution, arithmetic expansion, and word splitting. */
 extern WORD_LIST *expand_words_shellexp __P((WORD_LIST *));
 
-extern WORD_DESC *command_substitute __P((char *, int));
+extern WORD_DESC *command_substitute __P((char *, int, int));
 extern char *pat_subst __P((char *, char *, char *, int));
 
+#if defined (PROCESS_SUBSTITUTION)
 extern int fifos_pending __P((void));
 extern int num_fifos __P((void));
 extern void unlink_fifo_list __P((void));
@@ -272,6 +279,13 @@ extern void close_new_fifos __P((char *, int));
 
 extern void clear_fifo_list __P((void));
 
+extern int find_procsub_child __P((pid_t));
+extern void set_procsub_status __P((int, pid_t, int));
+
+extern void wait_procsubs __P((void));
+extern void reap_procsubs __P((void));
+#endif
+
 extern WORD_LIST *list_string_with_quotes __P((char *));
 
 #if defined (ARRAY_VARS)
@@ -312,6 +326,7 @@ extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int, int *, int
 extern SHELL_VAR *ifs_var;
 extern char *ifs_value;
 extern unsigned char ifs_cmap[];
+extern int ifs_is_set, ifs_is_null;
 
 #if defined (HANDLE_MULTIBYTE)
 extern unsigned char ifs_firstc[];
@@ -320,6 +335,12 @@ extern size_t ifs_firstc_len;
 extern unsigned char ifs_firstc;
 #endif
 
+extern int assigning_in_environment;
+extern int expanding_redir;
+extern int inherit_errexit;
+
+extern pid_t last_command_subst_pid;
+
 /* Evaluates to 1 if C is a character in $IFS. */
 #define isifs(c)       (ifs_cmap[(unsigned char)(c)] != 0)
 
index 9ed70215c94e6cd45d6ea58ab909334b93a133c6..0289e0acf2b0ddce244e06cf32d2a1d9b032d83a 100644 (file)
@@ -4,11 +4,12 @@
 # documentation support: man2html
 # testing support: printenv recho zecho xcase
 #
-# bashbug lives here but is created by the top-level makefile
+# bashbug.sh lives here (created by configure), but bashbug is created by
+# the top-level makefile
 #
 # Currently only man2html is built
 #
-# Copyright (C) 1998-2009 Free Software Foundation, Inc.     
+# Copyright (C) 1998-2018 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
@@ -79,10 +80,9 @@ man2html$(EXEEXT): $(OBJ1)
        $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD}
 
 clean:
-       $(RM) man2html$(EXEEXT)
+       $(RM) man2html$(EXEEXT) $(OBJ1)
 
 distclean maintainer-clean mostlyclean: clean
-       $(RM) $(OBJ1)
-       $(RM) bash.pc
+       $(RM) bash.pc bashbug.sh
 
 man2html.o: man2html.c
diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in
new file mode 100644 (file)
index 0000000..5e92b99
--- /dev/null
@@ -0,0 +1,272 @@
+#!/bin/sh -
+#
+# bashbug - create a bug report and mail it to the bug address
+#
+# The bug address depends on the release status of the shell.  Versions
+# with status `devel', `alpha', `beta', or `rc' mail bug reports to
+# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
+# Other versions send mail to bug-bash@gnu.org.
+#
+# Copyright (C) 1996-2004 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
+
+#
+# configuration section:
+#      these variables are filled in by the make target in Makefile
+#
+MACHINE="@host_cpu@"
+OS="@host_os@"
+CC="@CC@"
+CFLAGS="@CFLAGS@"
+RELEASE="@BASHVERS@"
+PATCHLEVEL="!PATCHLEVEL!"
+RELSTATUS="@RELSTATUS@"
+MACHTYPE="@host@"
+
+PATH=/bin:/usr/bin:/usr/local/bin:$PATH
+export PATH
+
+# Check if TMPDIR is set, default to /tmp
+: ${TMPDIR:=/tmp}
+
+#Securely create a temporary directory for the temporary files
+TEMPDIR=$TMPDIR/bbug.$$
+(umask 077 && mkdir $TEMPDIR) || {
+       echo "$0: could not create temporary directory" >&2
+       exit 1
+}
+
+TEMPFILE1=$TEMPDIR/bbug1
+TEMPFILE2=$TEMPDIR/bbug2
+        
+USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]"
+VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}"
+
+do_help= do_version=
+
+while [ $# -gt 0 ]; do
+       case "$1" in
+       --help)         shift ; do_help=y ;;
+       --version)      shift ; do_version=y ;;
+       --)             shift ; break ;;
+       -*)             echo "bashbug: ${1}: invalid option" >&2
+                       echo "$USAGE" >&2
+                       exit 2 ;;
+       *)              break ;;
+       esac
+done
+
+if [ -n "$do_version" ]; then
+       echo "${VERSTR}"
+       exit 0
+fi
+
+if [ -n "$do_help" ]; then
+       echo "${VERSTR}"
+       echo "${USAGE}"
+       echo
+       cat << HERE_EOF
+Bashbug is used to send mail to the Bash maintainers
+for when Bash doesn't behave like you'd like, or expect.
+
+Bashbug will start up your editor (as defined by the shell's
+EDITOR environment variable) with a preformatted bug report
+template for you to fill in. The report will be mailed to the
+bug-bash mailing list by default. See the manual for details.
+
+If you invoke bashbug by accident, just quit your editor without
+saving any changes to the template, and no bug report will be sent.
+HERE_EOF
+       exit 0
+fi
+
+# Figure out how to echo a string without a trailing newline
+N=`echo 'hi there\c'`
+case "$N" in
+*c)    n=-n c= ;;
+*)     n= c='\c' ;;
+esac
+
+BASHTESTERS="bash-testers@cwru.edu"
+
+case "$RELSTATUS" in
+alpha*|beta*|devel*|rc*)       BUGBASH=chet@cwru.edu ;;
+*)                             BUGBASH=bug-bash@gnu.org ;;
+esac
+
+case "$RELSTATUS" in
+alpha*|beta*|devel*|rc*)
+               echo "$0: This is a testing release.  Would you like your bug report"
+               echo "$0: to be sent to the bash-testers mailing list?"
+               echo $n "$0: Send to bash-testers? $c"
+               read ans
+               case "$ans" in
+               y*|Y*)  BUGBASH="${BUGBASH},${BASHTESTERS}" ;;
+               esac ;;
+esac
+
+BUGADDR="${1-$BUGBASH}"
+
+if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
+       if [ -x /usr/bin/editor ]; then
+               DEFEDITOR=editor
+       elif [ -x /usr/local/bin/ce ]; then
+               DEFEDITOR=ce
+       elif [ -x /usr/local/bin/emacs ]; then
+               DEFEDITOR=emacs
+       elif [ -x /usr/contrib/bin/emacs ]; then
+               DEFEDITOR=emacs
+       elif [ -x /usr/bin/emacs ]; then
+               DEFEDITOR=emacs
+       elif [ -x /usr/bin/xemacs ]; then
+               DEFEDITOR=xemacs
+       elif [ -x /usr/contrib/bin/jove ]; then
+               DEFEDITOR=jove
+       elif [ -x /usr/local/bin/jove ]; then
+               DEFEDITOR=jove
+       elif [ -x /usr/bin/vi ]; then
+               DEFEDITOR=vi
+       else
+               echo "$0: No default editor found: attempting to use vi" >&2
+               DEFEDITOR=vi
+       fi
+fi
+
+
+: ${EDITOR=$DEFEDITOR}
+
+: ${USER=${LOGNAME-`whoami`}}
+
+trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15
+trap 'rm -rf "$TEMPDIR"' 0
+
+UN=
+if (uname) >/dev/null 2>&1; then
+       UN=`uname -a`
+fi
+
+if [ -f /usr/lib/sendmail ] ; then
+       RMAIL="/usr/lib/sendmail"
+       SMARGS="-i -t"
+elif [ -f /usr/sbin/sendmail ] ; then
+       RMAIL="/usr/sbin/sendmail"
+       SMARGS="-i -t"
+else
+       RMAIL=rmail
+       SMARGS="$BUGADDR"
+fi
+
+INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]'
+
+cat > "$TEMPFILE1" <<EOF
+From: ${USER}
+To: ${BUGADDR}
+Subject: ${INITIAL_SUBJECT}
+
+Configuration Information [Automatically generated, do not change]:
+Machine: $MACHINE
+OS: $OS
+Compiler: $CC
+Compilation CFLAGS: $CFLAGS
+uname output: $UN
+Machine Type: $MACHTYPE
+
+Bash Version: $RELEASE
+Patch Level: $PATCHLEVEL
+Release Status: $RELSTATUS
+
+Description:
+       [Detailed description of the problem, suggestion, or complaint.]
+
+Repeat-By:
+       [Describe the sequence of events that causes the problem
+       to occur.]
+
+Fix:
+       [Description of how to fix the problem.  If you don't know a
+       fix for the problem, don't include this section.]
+EOF
+
+cp "$TEMPFILE1" "$TEMPFILE2"
+chmod u+w "$TEMPFILE1"
+
+trap '' 2              # ignore interrupts while in editor
+
+edstat=1
+while [ $edstat -ne 0 ]; do
+       $EDITOR "$TEMPFILE1"
+       edstat=$?
+
+       if [ $edstat -ne 0 ]; then
+               echo "$0: editor \`$EDITOR' exited with nonzero status."
+               echo "$0: Perhaps it was interrupted."
+               echo "$0: Type \`y' to give up, and lose your bug report;"
+               echo "$0: type \`n' to re-enter the editor."
+               echo $n "$0: Do you want to give up? $c"
+
+               read ans
+               case "$ans" in
+               [Yy]*) exit 1 ;;
+               esac
+
+               continue
+       fi
+
+       # find the subject from the temp file and see if it's been changed
+       CURR_SUB=`grep '^Subject: ' "$TEMPFILE1" | sed 's|^Subject:[    ]*||' | sed 1q`
+
+       case "$CURR_SUB" in
+       "${INITIAL_SUBJECT}")
+               echo
+               echo "$0: You have not changed the subject from the default."
+               echo "$0: Please use a more descriptive subject header."
+               echo "$0: Type \`y' to give up, and lose your bug report;"
+               echo "$0: type \`n' to re-enter the editor."
+               echo $n "$0: Do you want to give up? $c"
+
+               read ans
+               case "$ans" in
+               [Yy]*) exit 1 ;;
+               esac
+
+               echo "$0:  The editor will be restarted in five seconds."
+               sleep 5
+               edstat=1
+               ;;
+       esac
+
+done
+
+trap 'rm -rf "$TEMPDIR"; exit 1' 2     # restore trap on SIGINT
+
+if cmp -s "$TEMPFILE1" "$TEMPFILE2"
+then
+       echo "File not changed, no bug report submitted."
+       exit
+fi
+
+echo $n "Send bug report to ${BUGADDR}? [y/n] $c"
+read ans
+case "$ans" in
+[Nn]*) exit 0 ;;
+esac
+
+${RMAIL} $SMARGS < "$TEMPFILE1" || {
+       cat "$TEMPFILE1" >> $HOME/dead.bashbug
+       echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2
+       echo "$0: please send it manually to ${BUGADDR}" >&2
+}
+
+exit 0
old mode 100644 (file)
new mode 100755 (executable)
index 9afd676..18f8edc
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
 
-timestamp='2013-11-29'
+timestamp='2018-08-29'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2013-11-29'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@ timestamp='2013-11-29'
 # program.  This Exception is an additional permission under section 7
 # of the GNU General Public License, version 3 ("GPLv3").
 #
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
 
 
 me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
 
 Output the configuration name of the system \`$me' is run on.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
-
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,39 @@ trap 'exit 1' 1 2 15
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
+trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
+
+set_cc_for_build() {
+    : "${TMPDIR=/tmp}"
+    # shellcheck disable=SC2039
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+    dummy=$tmp/dummy
+    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+       ,,)    echo "int x;" > "$dummy.c"
+              for driver in cc gcc c89 c99 ; do
+                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+                      CC_FOR_BUILD="$driver"
+                      break
+                  fi
+              done
+              if test x"$CC_FOR_BUILD" = x ; then
+                  CC_FOR_BUILD=no_compiler_found
+              fi
+              ;;
+       ,,*)   CC_FOR_BUILD=$CC ;;
+       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+    esac
+}
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
        PATH=$PATH:/.attbin ; export PATH
 fi
 
@@ -132,14 +135,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
        # If the system lacks a compiler, then just pick glibc.
        # We could probably try harder.
        LIBC=gnu
 
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
+       set_cc_for_build
+       cat <<-EOF > "$dummy.c"
        #include <features.h>
        #if defined(__UCLIBC__)
        LIBC=uclibc
@@ -149,13 +152,20 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+       # If ldd exists, use it to detect musl libc.
+       if command -v ldd >/dev/null && \
+               ldd --version 2>&1 | grep -q ^musl
+       then
+           LIBC=musl
+       fi
        ;;
 esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
        # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +178,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
        sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-       case "${UNAME_MACHINE_ARCH}" in
+       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+           "/sbin/$sysctl" 2>/dev/null || \
+           "/usr/sbin/$sysctl" 2>/dev/null || \
+           echo unknown)`
+       case "$UNAME_MACHINE_ARCH" in
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
            sh5el) machine=sh5le-unknown ;;
-           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+           earmv*)
+               arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+               endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+               machine="${arch}${endian}"-unknown
+               ;;
+           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
        esac
        # The Operating System including object format, if it has switched
-       # to ELF recently, or will in the future.
-       case "${UNAME_MACHINE_ARCH}" in
+       # to ELF recently (or will in the future) and ABI.
+       case "$UNAME_MACHINE_ARCH" in
+           earm*)
+               os=netbsdelf
+               ;;
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval $set_cc_for_build
+               set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
                        | grep -q __ELF__
                then
@@ -197,44 +217,67 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                os=netbsd
                ;;
        esac
+       # Determine ABI tags.
+       case "$UNAME_MACHINE_ARCH" in
+           earm*)
+               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+               abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+               ;;
+       esac
        # The OS release
        # Debian GNU/NetBSD machines have a different userland, and
        # thus, need a distinct triplet. However, they do not need
        # kernel version information, so it can be replaced with a
        # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
+       case "$UNAME_VERSION" in
            Debian*)
                release='-gnu'
                ;;
            *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
                ;;
        esac
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}"
+       echo "$machine-${os}${release}${abi-}"
        exit ;;
     *:Bitrig:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
        exit ;;
     *:OpenBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+       exit ;;
+    *:LibertyBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+       exit ;;
+    *:MidnightBSD:*:*)
+       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
        exit ;;
     *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
        exit ;;
     *:SolidBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
        exit ;;
     macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
        exit ;;
     *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+       exit ;;
+    *:Sortix:*:*)
+       echo "$UNAME_MACHINE"-unknown-sortix
+       exit ;;
+    *:Redox:*:*)
+       echo "$UNAME_MACHINE"-unknown-redox
        exit ;;
+    mips:OSF1:*.*)
+        echo mips-dec-osf1
+        exit ;;
     alpha:OSF1:*:*)
        case $UNAME_RELEASE in
        *4.0)
@@ -251,63 +294,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
        case "$ALPHA_CPU_TYPE" in
            "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
+               UNAME_MACHINE=alpha ;;
            "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
+               UNAME_MACHINE=alphaev5 ;;
            "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
+               UNAME_MACHINE=alphaev56 ;;
            "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
+               UNAME_MACHINE=alphapca56 ;;
            "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
+               UNAME_MACHINE=alphapca57 ;;
            "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
+               UNAME_MACHINE=alphaev6 ;;
            "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
+               UNAME_MACHINE=alphaev67 ;;
            "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
+               UNAME_MACHINE=alphaev68 ;;
            "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
+               UNAME_MACHINE=alphaev69 ;;
            "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
+               UNAME_MACHINE=alphaev7 ;;
            "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
+               UNAME_MACHINE=alphaev79 ;;
        esac
        # A Pn.n version is a patched version.
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
        # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
        exitcode=$?
        trap '' 0
        exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # Should we change UNAME_MACHINE based on the output of uname instead
-       # of the specific Alpha model?
-       echo alpha-pc-interix
-       exit ;;
-    21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit ;;
     Amiga*:UNIX_System_V:4.0:*)
        echo m68k-unknown-sysv4
        exit ;;
     *:[Aa]miga[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-amigaos
+       echo "$UNAME_MACHINE"-unknown-amigaos
        exit ;;
     *:[Mm]orph[Oo][Ss]:*:*)
-       echo ${UNAME_MACHINE}-unknown-morphos
+       echo "$UNAME_MACHINE"-unknown-morphos
        exit ;;
     *:OS/390:*:*)
        echo i370-ibm-openedition
@@ -319,7 +353,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo powerpc-ibm-os400
        exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
+       echo arm-acorn-riscix"$UNAME_RELEASE"
        exit ;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
        echo arm-unknown-riscos
@@ -346,38 +380,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            sparc) echo sparc-icl-nx7; exit ;;
        esac ;;
     s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
        exit ;;
     sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
        exit ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
+       echo i386-pc-auroraux"$UNAME_RELEASE"
        exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+       case `isainfo -b` in
+           32)
+               echo i386-pc-solaris2"$UNAME_REL"
+               ;;
+           64)
+               echo x86_64-pc-solaris2"$UNAME_REL"
+               ;;
+       esac
        exit ;;
     sun4*:SunOS:6*:*)
        # According to config.sub, this is the proper way to canonicalize
        # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
        # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     sun4*:SunOS:*:*)
        case "`/usr/bin/arch -k`" in
@@ -386,25 +415,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                ;;
        esac
        # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
        exit ;;
     sun3*:SunOS:*:*)
-       echo m68k-sun-sunos${UNAME_RELEASE}
+       echo m68k-sun-sunos"$UNAME_RELEASE"
        exit ;;
     sun*:*:4.2BSD:*)
        UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
        case "`/bin/arch`" in
            sun3)
-               echo m68k-sun-sunos${UNAME_RELEASE}
+               echo m68k-sun-sunos"$UNAME_RELEASE"
                ;;
            sun4)
-               echo sparc-sun-sunos${UNAME_RELEASE}
+               echo sparc-sun-sunos"$UNAME_RELEASE"
                ;;
        esac
        exit ;;
     aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
+       echo sparc-auspex-sunos"$UNAME_RELEASE"
        exit ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
@@ -415,44 +444,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint"$UNAME_RELEASE"
        exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint${UNAME_RELEASE}
+       echo m68k-milan-mint"$UNAME_RELEASE"
        exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint${UNAME_RELEASE}
+       echo m68k-hades-mint"$UNAME_RELEASE"
        exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint${UNAME_RELEASE}
+       echo m68k-unknown-mint"$UNAME_RELEASE"
        exit ;;
     m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
+       echo m68k-apple-machten"$UNAME_RELEASE"
        exit ;;
     powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
+       echo powerpc-apple-machten"$UNAME_RELEASE"
        exit ;;
     RISC*:Mach:*:*)
        echo mips-dec-mach_bsd4.3
        exit ;;
     RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix${UNAME_RELEASE}
+       echo mips-dec-ultrix"$UNAME_RELEASE"
        exit ;;
     VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
+       echo vax-dec-ultrix"$UNAME_RELEASE"
        exit ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
+       echo clipper-intergraph-clix"$UNAME_RELEASE"
        exit ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
        int main (int argc, char *argv[]) {
@@ -461,23 +490,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 #endif
        #if defined (host_mips) && defined (MIPSEB)
        #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
        #endif
        #if defined (SYSTYPE_SVR4)
-         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
        #endif
        #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+         printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
        #endif
        #endif
          exit (-1);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c &&
-         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-         SYSTEM_NAME=`$dummy $dummyarg` &&
+       $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+         dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
            { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos${UNAME_RELEASE}
+       echo mips-mips-riscos"$UNAME_RELEASE"
        exit ;;
     Motorola:PowerMAX_OS:*:*)
        echo powerpc-motorola-powermax
@@ -503,17 +532,17 @@ EOF
     AViiON:dgux:*:*)
        # DG/UX returns AViiON for all architectures
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
        then
-           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+              [ "$TARGET_BINARY_INTERFACE"x = x ]
            then
-               echo m88k-dg-dgux${UNAME_RELEASE}
+               echo m88k-dg-dgux"$UNAME_RELEASE"
            else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
            fi
        else
-           echo i586-dg-dgux${UNAME_RELEASE}
+           echo i586-dg-dgux"$UNAME_RELEASE"
        fi
        exit ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
@@ -530,7 +559,7 @@ EOF
        echo m68k-tektronix-bsd
        exit ;;
     *:IRIX*:*:*)
-       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
        exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
        echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
@@ -542,14 +571,14 @@ EOF
        if [ -x /usr/bin/oslevel ] ; then
                IBM_REV=`/usr/bin/oslevel`
        else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
        fi
-       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
        exit ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval $set_cc_for_build
-               sed 's/^                //' << EOF >$dummy.c
+               set_cc_for_build
+               sed 's/^                //' << EOF > "$dummy.c"
                #include <sys/systemcfg.h>
 
                main()
@@ -560,7 +589,7 @@ EOF
                        exit(0);
                        }
 EOF
-               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
                then
                        echo "$SYSTEM_NAME"
                else
@@ -574,26 +603,27 @@ EOF
        exit ;;
     *:AIX:*:[4567])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+       if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
        else
                IBM_ARCH=powerpc
        fi
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
+       if [ -x /usr/bin/lslpp ] ; then
+               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
        else
-               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
        fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
        exit ;;
     *:AIX:*:*)
        echo rs6000-ibm-aix
        exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
        echo romp-ibm-bsd4.4
        exit ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
        exit ;;                             # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
        echo rs6000-bull-bosx
@@ -608,28 +638,28 @@ EOF
        echo m68k-hp-bsd4.4
        exit ;;
     9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
+       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+       case "$UNAME_MACHINE" in
+           9000/31?)            HP_ARCH=m68000 ;;
+           9000/[34]??)         HP_ARCH=m68k ;;
            9000/[678][0-9][0-9])
                if [ -x /usr/bin/getconf ]; then
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "${sc_cpu_version}" in
-                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                   case "$sc_cpu_version" in
+                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
                      532)                      # CPU_PA_RISC2_0
-                       case "${sc_kernel_bits}" in
-                         32) HP_ARCH="hppa2.0n" ;;
-                         64) HP_ARCH="hppa2.0w" ;;
-                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       case "$sc_kernel_bits" in
+                         32) HP_ARCH=hppa2.0n ;;
+                         64) HP_ARCH=hppa2.0w ;;
+                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
                        esac ;;
                    esac
                fi
-               if [ "${HP_ARCH}" = "" ]; then
-                   eval $set_cc_for_build
-                   sed 's/^            //' << EOF >$dummy.c
+               if [ "$HP_ARCH" = "" ]; then
+                   set_cc_for_build
+                   sed 's/^            //' << EOF > "$dummy.c"
 
                #define _HPUX_SOURCE
                #include <stdlib.h>
@@ -662,13 +692,13 @@ EOF
                    exit (0);
                }
 EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
                fi ;;
        esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
+       if [ "$HP_ARCH" = hppa2.0w ]
        then
-           eval $set_cc_for_build
+           set_cc_for_build
 
            # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
            # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -679,23 +709,23 @@ EOF
            # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
            # => hppa64-hp-hpux11.23
 
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
                grep -q __LP64__
            then
-               HP_ARCH="hppa2.0w"
+               HP_ARCH=hppa2.0w
            else
-               HP_ARCH="hppa64"
+               HP_ARCH=hppa64
            fi
        fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
        exit ;;
     ia64:HP-UX:*:*)
-       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux${HPUX_REV}
+       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux"$HPUX_REV"
        exit ;;
     3050*:HI-UX:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
        #include <unistd.h>
        int
        main ()
@@ -720,11 +750,11 @@ EOF
          exit (0);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+       $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
                { echo "$SYSTEM_NAME"; exit; }
        echo unknown-hitachi-hiuxwe2
        exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
        echo hppa1.1-hp-bsd
        exit ;;
     9000/8??:4.3bsd:*:*)
@@ -733,7 +763,7 @@ EOF
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
        echo hppa1.0-hp-mpeix
        exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
        echo hppa1.1-hp-osf
        exit ;;
     hp8??:OSF1:*:*)
@@ -741,9 +771,9 @@ EOF
        exit ;;
     i*86:OSF1:*:*)
        if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
+           echo "$UNAME_MACHINE"-unknown-osf1mk
        else
-           echo ${UNAME_MACHINE}-unknown-osf1
+           echo "$UNAME_MACHINE"-unknown-osf1
        fi
        exit ;;
     parisc*:Lites*:*:*)
@@ -768,127 +798,120 @@ EOF
        echo c4-convex-bsd
        exit ;;
     CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
        | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
              -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
              -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*TS:*:*:*)
-       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
        exit ;;
     sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       echo sparc-unknown-bsdi"$UNAME_RELEASE"
        exit ;;
     *:BSD/OS:*:*)
-       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+       exit ;;
+    arm:FreeBSD:*:*)
+       UNAME_PROCESSOR=`uname -p`
+       set_cc_for_build
+       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_PCS_VFP
+       then
+           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+       else
+           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+       fi
        exit ;;
     *:FreeBSD:*:*)
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case ${UNAME_PROCESSOR} in
+       case "$UNAME_PROCESSOR" in
            amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+               UNAME_PROCESSOR=x86_64 ;;
+           i386)
+               UNAME_PROCESSOR=i586 ;;
        esac
+       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
        exit ;;
     i*:CYGWIN*:*)
-       echo ${UNAME_MACHINE}-pc-cygwin
+       echo "$UNAME_MACHINE"-pc-cygwin
        exit ;;
     *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
+       echo "$UNAME_MACHINE"-pc-mingw64
        exit ;;
     *:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
+       echo "$UNAME_MACHINE"-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
-       echo ${UNAME_MACHINE}-pc-msys
-       exit ;;
-    i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
+    *:MSYS*:*)
+       echo "$UNAME_MACHINE"-pc-msys
        exit ;;
     i*:PW*:*)
-       echo ${UNAME_MACHINE}-pc-pw32
+       echo "$UNAME_MACHINE"-pc-pw32
        exit ;;
     *:Interix*:*)
-       case ${UNAME_MACHINE} in
+       case "$UNAME_MACHINE" in
            x86)
-               echo i586-pc-interix${UNAME_RELEASE}
+               echo i586-pc-interix"$UNAME_RELEASE"
                exit ;;
            authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix${UNAME_RELEASE}
+               echo x86_64-unknown-interix"$UNAME_RELEASE"
                exit ;;
            IA64)
-               echo ia64-unknown-interix${UNAME_RELEASE}
+               echo ia64-unknown-interix"$UNAME_RELEASE"
                exit ;;
        esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
-       exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-pc-mks
-       exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-       # How do we know it's Interix rather than the generic POSIX subsystem?
-       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-       # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
-       exit ;;
     i*:UWIN*:*)
-       echo ${UNAME_MACHINE}-pc-uwin
+       echo "$UNAME_MACHINE"-pc-uwin
        exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
-    p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin
+       echo x86_64-pc-cygwin
        exit ;;
     prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
        exit ;;
-    i*86:Minix:*:*)
-       echo ${UNAME_MACHINE}-pc-minix
+    *:Minix:*:*)
+       echo "$UNAME_MACHINE"-unknown-minix
        exit ;;
     aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,58 +924,64 @@ EOF
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     arm*:Linux:*:*)
-       eval $set_cc_for_build
+       set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
            else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
            fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
        exit ;;
     crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+       exit ;;
+    e2k:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+       exit ;;
+    k1om:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
+       set_cc_for_build
+       sed 's/^        //' << EOF > "$dummy.c"
        #undef CPU
        #undef ${UNAME_MACHINE}
        #undef ${UNAME_MACHINE}el
@@ -966,64 +995,70 @@ EOF
        #endif
        #endif
 EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
        ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    mips64el:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+       exit ;;
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-"$LIBC"
        exit ;;
-    or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    or32:Linux:*:* | or1k*:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
+       echo sparc-unknown-linux-"$LIBC"
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
+       echo hppa64-unknown-linux-"$LIBC"
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
+         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+         *)    echo hppa-unknown-linux-"$LIBC" ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
+       echo powerpc64-unknown-linux-"$LIBC"
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
+       echo powerpc-unknown-linux-"$LIBC"
        exit ;;
     ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
+       echo powerpc64le-unknown-linux-"$LIBC"
        exit ;;
     ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
+       echo powerpcle-unknown-linux-"$LIBC"
+       exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1037,34 +1072,34 @@ EOF
        # I am not positive that other SVR4 systems won't match this,
        # I just have to hope.  -- rms.
        # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
        exit ;;
     i*86:OS/2:*:*)
        # If we were able to find `uname', then EMX Unix compatibility
        # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
+       echo "$UNAME_MACHINE"-pc-os2-emx
        exit ;;
     i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
+       echo "$UNAME_MACHINE"-unknown-stop
        exit ;;
     i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
+       echo "$UNAME_MACHINE"-unknown-atheos
        exit ;;
     i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
+       echo "$UNAME_MACHINE"-pc-syllable
        exit ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
+       echo i386-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       echo "$UNAME_MACHINE"-pc-msdosdjgpp
        exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+    i*86:*:4.*:*)
+       UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
        else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
        fi
        exit ;;
     i*86:*:5:[678]*)
@@ -1074,12 +1109,12 @@ EOF
            *Pentium)        UNAME_MACHINE=i586 ;;
            *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
        esac
-       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
        exit ;;
     i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
                UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
        elif /bin/uname -X 2>/dev/null >/dev/null ; then
                UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
                (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1089,9 +1124,9 @@ EOF
                        && UNAME_MACHINE=i686
                (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
                        && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
        else
-               echo ${UNAME_MACHINE}-pc-sysv32
+               echo "$UNAME_MACHINE"-pc-sysv32
        fi
        exit ;;
     pc:*:*:*)
@@ -1099,7 +1134,7 @@ EOF
        # uname -m prints for DJGPP always 'pc', but it prints nothing about
        # the processor, so we play safe by assuming i586.
        # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
+       # prints for the "djgpp" host, or else GDB configure will decide that
        # this is a cross-build.
        echo i586-pc-msdosdjgpp
        exit ;;
@@ -1111,9 +1146,9 @@ EOF
        exit ;;
     i860:*:4.*:*) # i860-SVR4
        if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
        else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
        fi
        exit ;;
     mini*:CTIX:SYS*5:*)
@@ -1133,9 +1168,9 @@ EOF
        test -r /etc/.relid \
        && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+         && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+         && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
          && { echo i486-ncr-sysv4; exit; } ;;
@@ -1144,28 +1179,28 @@ EOF
        test -r /etc/.relid \
            && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+           && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
        /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+           && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       echo m68k-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit ;;
     TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       echo sparc-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
        exit ;;
     SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
+       echo mips-dde-sysv"$UNAME_RELEASE"
        exit ;;
     RM*:ReliantUNIX-*:*:*)
        echo mips-sni-sysv4
@@ -1176,7 +1211,7 @@ EOF
     *:SINIX-*:*:*)
        if uname -p 2>/dev/null >/dev/null ; then
                UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo ${UNAME_MACHINE}-sni-sysv4
+               echo "$UNAME_MACHINE"-sni-sysv4
        else
                echo ns32k-sni-sysv
        fi
@@ -1196,23 +1231,23 @@ EOF
        exit ;;
     i*86:VOS:*:*)
        # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
+       echo "$UNAME_MACHINE"-stratus-vos
        exit ;;
     *:VOS:*:*)
        # From Paul.Green@stratus.com.
        echo hppa1.1-stratus-vos
        exit ;;
     mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
+       echo m68k-apple-aux"$UNAME_RELEASE"
        exit ;;
     news*:NEWS-OS:6*:*)
        echo mips-sony-newsos6
        exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
+               echo mips-nec-sysv"$UNAME_RELEASE"
        else
-               echo mips-unknown-sysv${UNAME_RELEASE}
+               echo mips-unknown-sysv"$UNAME_RELEASE"
        fi
        exit ;;
     BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
@@ -1231,46 +1266,56 @@ EOF
        echo x86_64-unknown-haiku
        exit ;;
     SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux${UNAME_RELEASE}
+       echo sx4-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux${UNAME_RELEASE}
+       echo sx5-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
+       echo sx6-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux${UNAME_RELEASE}
+       echo sx7-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux${UNAME_RELEASE}
+       echo sx8-nec-superux"$UNAME_RELEASE"
        exit ;;
     SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux${UNAME_RELEASE}
+       echo sx8r-nec-superux"$UNAME_RELEASE"
+       exit ;;
+    SX-ACE:SUPER-UX:*:*)
+       echo sxace-nec-superux"$UNAME_RELEASE"
        exit ;;
     Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
        exit ;;
     *:Rhapsody:*:*)
-       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
        exit ;;
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
+       set_cc_for_build
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+       if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
+           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
                if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
+                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                      grep IS_64BIT_ARCH >/dev/null
                then
                    case $UNAME_PROCESSOR in
                        i386) UNAME_PROCESSOR=x86_64 ;;
                        powerpc) UNAME_PROCESSOR=powerpc64 ;;
                    esac
                fi
+               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                      grep IS_PPC >/dev/null
+               then
+                   UNAME_PROCESSOR=powerpc
+               fi
            fi
        elif test "$UNAME_PROCESSOR" = i386 ; then
            # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1281,27 +1326,33 @@ EOF
            # that Apple uses in portable devices.
            UNAME_PROCESSOR=x86_64
        fi
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = "x86"; then
+       if test "$UNAME_PROCESSOR" = x86; then
                UNAME_PROCESSOR=i386
                UNAME_MACHINE=pc
        fi
-       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
        exit ;;
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
+    NEO-*:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk"$UNAME_RELEASE"
        exit ;;
     NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
+       echo nse-tandem-nsk"$UNAME_RELEASE"
+       exit ;;
+    NSR-*:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk"$UNAME_RELEASE"
        exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk${UNAME_RELEASE}
+    NSV-*:NONSTOP_KERNEL:*:*)
+       echo nsv-tandem-nsk"$UNAME_RELEASE"
+       exit ;;
+    NSX-*:NONSTOP_KERNEL:*:*)
+       echo nsx-tandem-nsk"$UNAME_RELEASE"
        exit ;;
     *:NonStop-UX:*:*)
        echo mips-compaq-nonstopux
@@ -1310,18 +1361,19 @@ EOF
        echo bs2000-siemens-sysv
        exit ;;
     DS/*:UNIX_System_V:*:*)
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
        exit ;;
     *:Plan9:*:*)
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       if test "$cputype" = "386"; then
+       # shellcheck disable=SC2154
+       if test "$cputype" = 386; then
            UNAME_MACHINE=i386
        else
            UNAME_MACHINE="$cputype"
        fi
-       echo ${UNAME_MACHINE}-unknown-plan9
+       echo "$UNAME_MACHINE"-unknown-plan9
        exit ;;
     *:TOPS-10:*:*)
        echo pdp10-unknown-tops10
@@ -1342,14 +1394,14 @@ EOF
        echo pdp10-unknown-its
        exit ;;
     SEI:*:*:SEIUX)
-       echo mips-sei-seiux${UNAME_RELEASE}
+       echo mips-sei-seiux"$UNAME_RELEASE"
        exit ;;
     *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
        exit ;;
     *:*VMS:*:*)
        UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
+       case "$UNAME_MACHINE" in
            A*) echo alpha-dec-vms ; exit ;;
            I*) echo ia64-dec-vms ; exit ;;
            V*) echo vax-dec-vms ; exit ;;
@@ -1358,182 +1410,48 @@ EOF
        echo i386-pc-xenix
        exit ;;
     i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
        exit ;;
     i*86:rdos:*:*)
-       echo ${UNAME_MACHINE}-pc-rdos
+       echo "$UNAME_MACHINE"-pc-rdos
        exit ;;
     i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
+       echo "$UNAME_MACHINE"-pc-aros
        exit ;;
     x86_64:VMkernel:*:*)
-       echo ${UNAME_MACHINE}-unknown-esx
+       echo "$UNAME_MACHINE"-unknown-esx
+       exit ;;
+    amd64:Isilon\ OneFS:*:*)
+       echo x86_64-unknown-onefs
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
+echo "$0: unable to guess system type" >&2
 
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+    mips:Linux | mips64:Linux)
+       # If we got here on MIPS GNU/Linux, output extra information.
+       cat >&2 <<EOF
 
-  exit (1);
-}
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
 EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
+       ;;
+esac
 
 cat >&2 <<EOF
-$0: unable to guess system type
 
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
@@ -1552,16 +1470,16 @@ hostinfo               = `(hostinfo) 2>/dev/null`
 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
 
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM  = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
 EOF
 
 exit 1
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index b6c4d8ffc0aab2ff41ed7bd3a284a7988e4e3b78..fc5913d7878bc855696d599b4585c0c44f166449 100755 (executable)
@@ -2,27 +2,13 @@
 # Output a system dependent set of variables, describing how to set the
 # run time search path of shared libraries in an executable.
 #
-#   Copyright 1996-2003 Free Software Foundation, Inc.
+#   Copyright 1996-2018 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
-#   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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception to the GNU General Public License, if you
-#   distribute this file as part of a program that contains a
-#   configuration script generated by Autoconf, you may include it under
-#   the same distribution terms that you use for the rest of that program.
+#   This file is free software; the Free Software Foundation gives
+#   unlimited permission to copy and/or distribute it, with or without
+#   modifications, as long as this notice is preserved.
 #
 # The first argument passed to this file is the canonical host specification,
 #    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
@@ -39,7 +25,7 @@
 #   known workaround is to choose shorter directory names for the build
 #   directory and/or the installation directory.
 
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 shrext=.so
@@ -49,7 +35,19 @@ host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
 
 wl=
 if test "$GCC" = yes; then
@@ -59,7 +57,7 @@ else
     aix*)
       wl='-Wl,'
       ;;
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       ;;
     hpux9* | hpux10* | hpux11*)
       wl='-Wl,'
@@ -67,40 +65,83 @@ else
     irix5* | irix6* | nonstopux*)
       wl='-Wl,'
       ;;
-    newsos6)
-      ;;
-    linux*)
-      case $CC in
-        icc|ecc)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+        ecc*)
+          wl='-Wl,'
+          ;;
+        icc* | ifort*)
+          wl='-Wl,'
+          ;;
+        lf95*)
+          wl='-Wl,'
+          ;;
+        nagfor*)
+          wl='-Wl,-Wl,,'
+          ;;
+        pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+          wl='-Wl,'
+          ;;
+        ccc*)
           wl='-Wl,'
           ;;
-        ccc)
+        xl* | bgxl* | bgf* | mpixl*)
           wl='-Wl,'
           ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ F* | *Sun*Fortran*)
+              wl=
+              ;;
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
       esac
       ;;
+    newsos6)
+      ;;
+    *nto* | *qnx*)
+      ;;
     osf3* | osf4* | osf5*)
       wl='-Wl,'
       ;;
-    sco3.2v5*)
+    rdos*)
       ;;
     solaris*)
-      wl='-Wl,'
+      case $cc_basename in
+        f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+          wl='-Qoption ld '
+          ;;
+        *)
+          wl='-Wl,'
+          ;;
+      esac
       ;;
     sunos4*)
       wl='-Qoption ld '
       ;;
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    sysv4 | sysv4.2uw2* | sysv4.3*)
       wl='-Wl,'
       ;;
     sysv4*MP*)
       ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
     uts4*)
       ;;
   esac
 fi
 
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
 
 hardcode_libdir_flag_spec=
 hardcode_libdir_separator=
@@ -108,7 +149,7 @@ hardcode_direct=no
 hardcode_minus_L=no
 
 case "$host_os" in
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
@@ -116,6 +157,10 @@ case "$host_os" in
       with_gnu_ld=no
     fi
     ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
   openbsd*)
     with_gnu_ld=no
     ;;
@@ -123,32 +168,37 @@ esac
 
 ld_shlibs=yes
 if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
   case "$host_os" in
-    aix3* | aix4* | aix5*)
+    aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
         ld_shlibs=no
       fi
       ;;
     amigaos*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can use
-      # them.
-      ld_shlibs=no
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
       ;;
     beos*)
-      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
         :
       else
         ld_shlibs=no
       fi
       ;;
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
@@ -158,32 +208,57 @@ if test "$with_gnu_ld" = yes; then
         ld_shlibs=no
       fi
       ;;
+    haiku*)
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
     netbsd*)
       ;;
-    solaris* | sysv5*)
-      if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
         ld_shlibs=no
-      elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
         :
       else
         ld_shlibs=no
       fi
       ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
     sunos4*)
       hardcode_direct=yes
       ;;
     *)
-      if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
         :
       else
         ld_shlibs=no
       fi
       ;;
   esac
-  if test "$ld_shlibs" = yes; then
-    # Unlike libtool, we use -rpath here, not --rpath, since the documented
-    # option of GNU ld is called -rpath, not --rpath.
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
   fi
 else
   case "$host_os" in
@@ -197,7 +272,7 @@ else
         hardcode_direct=unsupported
       fi
       ;;
-    aix4* | aix5*)
+    aix[4-9]*)
       if test "$host_cpu" = ia64; then
         # On IA64, the linker does run time linking by default, so we don't
         # have to do anything special.
@@ -207,13 +282,14 @@ else
         # Test if we are trying to use run time linking or normal
         # AIX style linking. If -brtl is somewhere in LDFLAGS, we
         # need to do runtime linking.
-        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
           for ld_flag in $LDFLAGS; do
             if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
               aix_use_runtimelinking=yes
               break
             fi
           done
+          ;;
         esac
       fi
       hardcode_direct=yes
@@ -225,7 +301,7 @@ else
             strings "$collect2name" | grep resolve_lib_name >/dev/null
           then
             # We have reworked collect2
-            hardcode_direct=yes
+            :
           else
             # We have old collect2
             hardcode_direct=unsupported
@@ -233,6 +309,7 @@ else
             hardcode_libdir_flag_spec='-L$libdir'
             hardcode_libdir_separator=
           fi
+          ;;
         esac
       fi
       # Begin _LT_AC_SYS_LIBPATH_AIX.
@@ -260,14 +337,18 @@ else
       fi
       ;;
     amigaos*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs=no
+      case "$host_cpu" in
+        powerpc)
+          ;;
+        m68k)
+          hardcode_libdir_flag_spec='-L$libdir'
+          hardcode_minus_L=yes
+          ;;
+      esac
       ;;
-    bsdi4*)
+    bsdi[45]*)
       ;;
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -276,25 +357,21 @@ else
       libext=lib
       ;;
     darwin* | rhapsody*)
-      if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
-        hardcode_direct=no
+      hardcode_direct=no
+      if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
+        :
+      else
+        ld_shlibs=no
       fi
       ;;
     dgux*)
       hardcode_libdir_flag_spec='-L$libdir'
       ;;
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-    freebsd2.2*)
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      ;;
-    freebsd2*)
+    freebsd2.[01]*)
       hardcode_direct=yes
       hardcode_minus_L=yes
       ;;
-    freebsd*)
+    freebsd* | dragonfly*)
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
       ;;
@@ -306,24 +383,25 @@ else
       # but as the default location of the library.
       hardcode_minus_L=yes
       ;;
-    hpux10* | hpux11*)
+    hpux10*)
       if test "$with_gnu_ld" = no; then
-        case "$host_cpu" in
-          hppa*64*)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
-            hardcode_direct=no
-            ;;
-          ia64*)
-            hardcode_libdir_flag_spec='-L$libdir'
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
             hardcode_direct=no
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
             ;;
           *)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
             hardcode_direct=yes
             # hardcode_minus_L: Not really in the search PATH,
             # but as the default location of the library.
@@ -345,19 +423,25 @@ else
       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       hardcode_libdir_separator=:
       ;;
+    *nto* | *qnx*)
+      ;;
     openbsd*)
-      hardcode_direct=yes
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
       else
-        case "$host_os" in
-          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-            hardcode_libdir_flag_spec='-R$libdir'
-            ;;
-          *)
-            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-            ;;
-        esac
+        ld_shlibs=no
       fi
       ;;
     os2*)
@@ -377,8 +461,6 @@ else
       fi
       hardcode_libdir_separator=:
       ;;
-    sco3.2v5*)
-      ;;
     solaris*)
       hardcode_libdir_flag_spec='-R$libdir'
       ;;
@@ -407,14 +489,11 @@ else
         ld_shlibs=yes
       fi
       ;;
-    sysv4.2uw2*)
-      hardcode_direct=yes
-      hardcode_minus_L=no
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
       ;;
-    sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
-      ;;
-    sysv5*)
-      hardcode_libdir_flag_spec=
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
       ;;
     uts4*)
       hardcode_libdir_flag_spec='-L$libdir'
@@ -426,35 +505,59 @@ else
 fi
 
 # Check dynamic linker characteristics
-# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
 libname_spec='lib$name'
 case "$host_os" in
   aix3*)
+    library_names_spec='$libname.a'
     ;;
-  aix4* | aix5*)
+  aix[4-9]*)
+    library_names_spec='$libname$shrext'
     ;;
   amigaos*)
+    case "$host_cpu" in
+      powerpc*)
+        library_names_spec='$libname$shrext' ;;
+      m68k)
+        library_names_spec='$libname.a' ;;
+    esac
     ;;
   beos*)
+    library_names_spec='$libname$shrext'
     ;;
-  bsdi4*)
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
     ;;
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
     ;;
   darwin* | rhapsody*)
     shrext=.dylib
+    library_names_spec='$libname$shrext'
     ;;
   dgux*)
+    library_names_spec='$libname$shrext'
     ;;
-  freebsd1*)
+  freebsd[23].*)
+    library_names_spec='$libname$shrext$versuffix'
     ;;
-  freebsd*)
+  freebsd* | dragonfly*)
+    library_names_spec='$libname$shrext'
     ;;
   gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  haiku*)
+    library_names_spec='$libname$shrext'
     ;;
   hpux9* | hpux10* | hpux11*)
-    case "$host_cpu" in
+    case $host_cpu in
       ia64*)
         shrext=.so
         ;;
@@ -465,8 +568,13 @@ case "$host_os" in
         shrext=.sl
         ;;
     esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
     ;;
   irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
     case "$host_os" in
       irix5* | nonstopux*)
         libsuff= shlibsuff=
@@ -483,42 +591,65 @@ case "$host_os" in
     ;;
   linux*oldld* | linux*aout* | linux*coff*)
     ;;
-  linux*)
+  linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
     ;;
   netbsd*)
+    library_names_spec='$libname$shrext'
     ;;
   newsos6)
+    library_names_spec='$libname$shrext'
     ;;
-  nto-qnx)
+  *nto* | *qnx*)
+    library_names_spec='$libname$shrext'
     ;;
   openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
     ;;
   os2*)
     libname_spec='$name'
     shrext=.dll
+    library_names_spec='$libname.a'
     ;;
   osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
     ;;
-  sco3.2v5*)
+  rdos*)
     ;;
   solaris*)
+    library_names_spec='$libname$shrext'
     ;;
   sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
     ;;
-  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
     ;;
   sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  tpf*)
+    library_names_spec='$libname$shrext'
     ;;
   uts4*)
+    library_names_spec='$libname$shrext'
     ;;
 esac
 
 sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
 shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
 escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
 
-sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
 
 # How to pass a linker flag through the compiler.
 wl="$escaped_wl"
@@ -529,6 +660,12 @@ libext="$libext"
 # Shared library suffix (normally "so").
 shlibext="$shlibext"
 
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
 # Flag to hardcode \$libdir into a binary during linking.
 # This must work even if \$libdir does not exist.
 hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
old mode 100644 (file)
new mode 100755 (executable)
index 61cb4bc..f208558
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
 
-timestamp='2013-10-01'
+timestamp='2018-08-29'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2013-10-01'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -25,7 +25,7 @@ timestamp='2013-10-01'
 # of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -33,7 +33,7 @@ timestamp='2013-10-01'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -53,12 +53,11 @@ timestamp='2013-10-01'
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
 
 Canonicalize a configuration name.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -90,12 +89,12 @@ while test $# -gt 0 ; do
     - )        # Use stdin as input.
        break ;;
     -* )
-       echo "$me: invalid option $1$help"
+       echo "$me: invalid option $1$help" >&2
        exit 1 ;;
 
     *local*)
        # First pass through any local machine types.
-       echo $1
+       echo "$1"
        exit ;;
 
     * )
@@ -111,1211 +110,1159 @@ case $# in
     exit 1;;
 esac
 
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
+# Split fields of configuration type
+IFS="-" read -r field1 field2 field3 field4 <<EOF
+$1
+EOF
 
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
-       -lynx*)
-               os=-lynxos
+# Separate into logical components for further validation
+case $1 in
+       *-*-*-*-*)
+               echo Invalid configuration \`"$1"\': more than four components >&2
+               exit 1
                ;;
-       -ptx*)
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+       *-*-*-*)
+               basic_machine=$field1-$field2
+               os=$field3-$field4
                ;;
-       -windowsnt*)
-               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+       *-*-*)
+               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+               # parts
+               maybe_os=$field2-$field3
+               case $maybe_os in
+                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                               basic_machine=$field1
+                               os=$maybe_os
+                               ;;
+                       android-linux)
+                               basic_machine=$field1-unknown
+                               os=linux-android
+                               ;;
+                       *)
+                               basic_machine=$field1-$field2
+                               os=$field3
+                               ;;
+               esac
                ;;
-       -psos*)
-               os=-psos
+       *-*)
+               # A lone config we happen to match not fitting any pattern
+               case $field1-$field2 in
+                       decstation-3100)
+                               basic_machine=mips-dec
+                               os=
+                               ;;
+                       *-*)
+                               # Second component is usually, but not always the OS
+                               case $field2 in
+                                       # Prevent following clause from handling this valid os
+                                       sun*os*)
+                                               basic_machine=$field1
+                                               os=$field2
+                                               ;;
+                                       # Manufacturers
+                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
+                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+                                       | ultra | tti* | harris | dolphin | highlevel | gould \
+                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
+                                       | microblaze* | sim | cisco \
+                                       | oki | wec | wrs | winbond)
+                                               basic_machine=$field1-$field2
+                                               os=
+                                               ;;
+                                       *)
+                                               basic_machine=$field1
+                                               os=$field2
+                                               ;;
+                               esac
+                       ;;
+               esac
                ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
+       *)
+               # Convert single-component short-hands not valid as part of
+               # multi-component configurations.
+               case $field1 in
+                       386bsd)
+                               basic_machine=i386-pc
+                               os=bsd
+                               ;;
+                       a29khif)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       adobe68k)
+                               basic_machine=m68010-adobe
+                               os=scout
+                               ;;
+                       alliant)
+                               basic_machine=fx80-alliant
+                               os=
+                               ;;
+                       altos | altos3068)
+                               basic_machine=m68k-altos
+                               os=
+                               ;;
+                       am29k)
+                               basic_machine=a29k-none
+                               os=bsd
+                               ;;
+                       amdahl)
+                               basic_machine=580-amdahl
+                               os=sysv
+                               ;;
+                       amiga)
+                               basic_machine=m68k-unknown
+                               os=
+                               ;;
+                       amigaos | amigados)
+                               basic_machine=m68k-unknown
+                               os=amigaos
+                               ;;
+                       amigaunix | amix)
+                               basic_machine=m68k-unknown
+                               os=sysv4
+                               ;;
+                       apollo68)
+                               basic_machine=m68k-apollo
+                               os=sysv
+                               ;;
+                       apollo68bsd)
+                               basic_machine=m68k-apollo
+                               os=bsd
+                               ;;
+                       aros)
+                               basic_machine=i386-pc
+                               os=aros
+                               ;;
+                       aux)
+                               basic_machine=m68k-apple
+                               os=aux
+                               ;;
+                       balance)
+                               basic_machine=ns32k-sequent
+                               os=dynix
+                               ;;
+                       blackfin)
+                               basic_machine=bfin-unknown
+                               os=linux
+                               ;;
+                       cegcc)
+                               basic_machine=arm-unknown
+                               os=cegcc
+                               ;;
+                       convex-c1)
+                               basic_machine=c1-convex
+                               os=bsd
+                               ;;
+                       convex-c2)
+                               basic_machine=c2-convex
+                               os=bsd
+                               ;;
+                       convex-c32)
+                               basic_machine=c32-convex
+                               os=bsd
+                               ;;
+                       convex-c34)
+                               basic_machine=c34-convex
+                               os=bsd
+                               ;;
+                       convex-c38)
+                               basic_machine=c38-convex
+                               os=bsd
+                               ;;
+                       cray)
+                               basic_machine=j90-cray
+                               os=unicos
+                               ;;
+                       crds | unos)
+                               basic_machine=m68k-crds
+                               os=
+                               ;;
+                       da30)
+                               basic_machine=m68k-da30
+                               os=
+                               ;;
+                       decstation | pmax | pmin | dec3100 | decstatn)
+                               basic_machine=mips-dec
+                               os=
+                               ;;
+                       delta88)
+                               basic_machine=m88k-motorola
+                               os=sysv3
+                               ;;
+                       dicos)
+                               basic_machine=i686-pc
+                               os=dicos
+                               ;;
+                       djgpp)
+                               basic_machine=i586-pc
+                               os=msdosdjgpp
+                               ;;
+                       ebmon29k)
+                               basic_machine=a29k-amd
+                               os=ebmon
+                               ;;
+                       es1800 | OSE68k | ose68k | ose | OSE)
+                               basic_machine=m68k-ericsson
+                               os=ose
+                               ;;
+                       gmicro)
+                               basic_machine=tron-gmicro
+                               os=sysv
+                               ;;
+                       go32)
+                               basic_machine=i386-pc
+                               os=go32
+                               ;;
+                       h8300hms)
+                               basic_machine=h8300-hitachi
+                               os=hms
+                               ;;
+                       h8300xray)
+                               basic_machine=h8300-hitachi
+                               os=xray
+                               ;;
+                       h8500hms)
+                               basic_machine=h8500-hitachi
+                               os=hms
+                               ;;
+                       harris)
+                               basic_machine=m88k-harris
+                               os=sysv3
+                               ;;
+                       hp300)
+                               basic_machine=m68k-hp
+                               ;;
+                       hp300bsd)
+                               basic_machine=m68k-hp
+                               os=bsd
+                               ;;
+                       hp300hpux)
+                               basic_machine=m68k-hp
+                               os=hpux
+                               ;;
+                       hppaosf)
+                               basic_machine=hppa1.1-hp
+                               os=osf
+                               ;;
+                       hppro)
+                               basic_machine=hppa1.1-hp
+                               os=proelf
+                               ;;
+                       i386mach)
+                               basic_machine=i386-mach
+                               os=mach
+                               ;;
+                       vsta)
+                               basic_machine=i386-pc
+                               os=vsta
+                               ;;
+                       isi68 | isi)
+                               basic_machine=m68k-isi
+                               os=sysv
+                               ;;
+                       m68knommu)
+                               basic_machine=m68k-unknown
+                               os=linux
+                               ;;
+                       magnum | m3230)
+                               basic_machine=mips-mips
+                               os=sysv
+                               ;;
+                       merlin)
+                               basic_machine=ns32k-utek
+                               os=sysv
+                               ;;
+                       mingw64)
+                               basic_machine=x86_64-pc
+                               os=mingw64
+                               ;;
+                       mingw32)
+                               basic_machine=i686-pc
+                               os=mingw32
+                               ;;
+                       mingw32ce)
+                               basic_machine=arm-unknown
+                               os=mingw32ce
+                               ;;
+                       monitor)
+                               basic_machine=m68k-rom68k
+                               os=coff
+                               ;;
+                       morphos)
+                               basic_machine=powerpc-unknown
+                               os=morphos
+                               ;;
+                       moxiebox)
+                               basic_machine=moxie-unknown
+                               os=moxiebox
+                               ;;
+                       msdos)
+                               basic_machine=i386-pc
+                               os=msdos
+                               ;;
+                       msys)
+                               basic_machine=i686-pc
+                               os=msys
+                               ;;
+                       mvs)
+                               basic_machine=i370-ibm
+                               os=mvs
+                               ;;
+                       nacl)
+                               basic_machine=le32-unknown
+                               os=nacl
+                               ;;
+                       ncr3000)
+                               basic_machine=i486-ncr
+                               os=sysv4
+                               ;;
+                       netbsd386)
+                               basic_machine=i386-pc
+                               os=netbsd
+                               ;;
+                       netwinder)
+                               basic_machine=armv4l-rebel
+                               os=linux
+                               ;;
+                       news | news700 | news800 | news900)
+                               basic_machine=m68k-sony
+                               os=newsos
+                               ;;
+                       news1000)
+                               basic_machine=m68030-sony
+                               os=newsos
+                               ;;
+                       necv70)
+                               basic_machine=v70-nec
+                               os=sysv
+                               ;;
+                       nh3000)
+                               basic_machine=m68k-harris
+                               os=cxux
+                               ;;
+                       nh[45]000)
+                               basic_machine=m88k-harris
+                               os=cxux
+                               ;;
+                       nindy960)
+                               basic_machine=i960-intel
+                               os=nindy
+                               ;;
+                       mon960)
+                               basic_machine=i960-intel
+                               os=mon960
+                               ;;
+                       nonstopux)
+                               basic_machine=mips-compaq
+                               os=nonstopux
+                               ;;
+                       os400)
+                               basic_machine=powerpc-ibm
+                               os=os400
+                               ;;
+                       OSE68000 | ose68000)
+                               basic_machine=m68000-ericsson
+                               os=ose
+                               ;;
+                       os68k)
+                               basic_machine=m68k-none
+                               os=os68k
+                               ;;
+                       paragon)
+                               basic_machine=i860-intel
+                               os=osf
+                               ;;
+                       parisc)
+                               basic_machine=hppa-unknown
+                               os=linux
+                               ;;
+                       pw32)
+                               basic_machine=i586-unknown
+                               os=pw32
+                               ;;
+                       rdos | rdos64)
+                               basic_machine=x86_64-pc
+                               os=rdos
+                               ;;
+                       rdos32)
+                               basic_machine=i386-pc
+                               os=rdos
+                               ;;
+                       rom68k)
+                               basic_machine=m68k-rom68k
+                               os=coff
+                               ;;
+                       sa29200)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       sei)
+                               basic_machine=mips-sei
+                               os=seiux
+                               ;;
+                       sequent)
+                               basic_machine=i386-sequent
+                               os=
+                               ;;
+                       sps7)
+                               basic_machine=m68k-bull
+                               os=sysv2
+                               ;;
+                       st2000)
+                               basic_machine=m68k-tandem
+                               os=
+                               ;;
+                       stratus)
+                               basic_machine=i860-stratus
+                               os=sysv4
+                               ;;
+                       sun2)
+                               basic_machine=m68000-sun
+                               os=
+                               ;;
+                       sun2os3)
+                               basic_machine=m68000-sun
+                               os=sunos3
+                               ;;
+                       sun2os4)
+                               basic_machine=m68000-sun
+                               os=sunos4
+                               ;;
+                       sun3)
+                               basic_machine=m68k-sun
+                               os=
+                               ;;
+                       sun3os3)
+                               basic_machine=m68k-sun
+                               os=sunos3
+                               ;;
+                       sun3os4)
+                               basic_machine=m68k-sun
+                               os=sunos4
+                               ;;
+                       sun4)
+                               basic_machine=sparc-sun
+                               os=
+                               ;;
+                       sun4os3)
+                               basic_machine=sparc-sun
+                               os=sunos3
+                               ;;
+                       sun4os4)
+                               basic_machine=sparc-sun
+                               os=sunos4
+                               ;;
+                       sun4sol2)
+                               basic_machine=sparc-sun
+                               os=solaris2
+                               ;;
+                       sun386 | sun386i | roadrunner)
+                               basic_machine=i386-sun
+                               os=
+                               ;;
+                       sv1)
+                               basic_machine=sv1-cray
+                               os=unicos
+                               ;;
+                       symmetry)
+                               basic_machine=i386-sequent
+                               os=dynix
+                               ;;
+                       t3e)
+                               basic_machine=alphaev5-cray
+                               os=unicos
+                               ;;
+                       t90)
+                               basic_machine=t90-cray
+                               os=unicos
+                               ;;
+                       toad1)
+                               basic_machine=pdp10-xkl
+                               os=tops20
+                               ;;
+                       tpf)
+                               basic_machine=s390x-ibm
+                               os=tpf
+                               ;;
+                       udi29k)
+                               basic_machine=a29k-amd
+                               os=udi
+                               ;;
+                       ultra3)
+                               basic_machine=a29k-nyu
+                               os=sym1
+                               ;;
+                       v810 | necv810)
+                               basic_machine=v810-nec
+                               os=none
+                               ;;
+                       vaxv)
+                               basic_machine=vax-dec
+                               os=sysv
+                               ;;
+                       vms)
+                               basic_machine=vax-dec
+                               os=vms
+                               ;;
+                       vxworks960)
+                               basic_machine=i960-wrs
+                               os=vxworks
+                               ;;
+                       vxworks68)
+                               basic_machine=m68k-wrs
+                               os=vxworks
+                               ;;
+                       vxworks29k)
+                               basic_machine=a29k-wrs
+                               os=vxworks
+                               ;;
+                       xbox)
+                               basic_machine=i686-pc
+                               os=mingw32
+                               ;;
+                       ymp)
+                               basic_machine=ymp-cray
+                               os=unicos
+                               ;;
+                       *)
+                               basic_machine=$1
+                               os=
+                               ;;
+               esac
                ;;
 esac
 
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
 case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | epiphany \
-       | fido | fr30 | frv \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
-       | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pyramid \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | we32k \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
-               ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-       ms1)
-               basic_machine=mt-unknown
+       # Here we handle the default manufacturer of certain CPU types.  It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               cpu=hppa1.1
+               vendor=winbond
                ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
+       op50n)
+               cpu=hppa1.1
+               vendor=oki
                ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
+       op60c)
+               cpu=hppa1.1
+               vendor=oki
                ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
+       ibm*)
+               cpu=i370
+               vendor=ibm
                ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
+       orion105)
+               cpu=clipper
+               vendor=highlevel
                ;;
-
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
+       mac | mpw | mac-mpw)
+               cpu=m68k
+               vendor=apple
                ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pyramid-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
+       pmac | pmac-mpw)
+               cpu=powerpc
+               vendor=apple
                ;;
+
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-unknown
-               os=-bsd
-               ;;
        3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
+               cpu=m68000
+               vendor=att
                ;;
        3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
+               cpu=we32k
+               vendor=att
                ;;
        bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
+               cpu=powerpc
+               vendor=ibm
+               os=cnk
                ;;
        decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
+               cpu=pdp10
+               vendor=dec
+               os=tops10
                ;;
        decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
+               cpu=pdp10
+               vendor=dec
+               os=tops20
                ;;
        delta | 3300 | motorola-3300 | motorola-delta \
              | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
+               cpu=m68k
+               vendor=motorola
                ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
-               ;;
-       dpx2* | dpx2*-bull)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
+       dpx2*)
+               cpu=m68k
+               vendor=bull
+               os=sysv3
                ;;
        encore | umax | mmax)
-               basic_machine=ns32k-encore
+               cpu=ns32k
+               vendor=encore
                ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
+       elxsi)
+               cpu=elxsi
+               vendor=elxsi
+               os=${os:-bsd}
                ;;
        fx2800)
-               basic_machine=i860-alliant
+               cpu=i860
+               vendor=alliant
                ;;
        genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
+               cpu=ns32k
+               vendor=ns
                ;;
        h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
+               cpu=hppa1.1
+               vendor=hitachi
+               os=hiuxwe2
                ;;
        hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
+               cpu=hppa1.0
+               vendor=hp
                ;;
        hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
+               cpu=m68000
+               vendor=hp
                ;;
        hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
+               cpu=m68k
+               vendor=hp
                ;;
        hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
+               cpu=hppa1.0
+               vendor=hp
                ;;
        hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k78[0-9] | hp78[0-9])
                # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
                # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppa-next)
-               os=-nextstep3
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
+               cpu=hppa1.0
+               vendor=hp
                ;;
        i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv32
                ;;
        i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv4
                ;;
        i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=sysv
                ;;
        i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               os=solaris2
                ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
-               ;;
-       i386-vsta | vsta)
-               basic_machine=i386-unknown
-               os=-vsta
+       j90 | j90-cray)
+               cpu=j90
+               vendor=cray
+               os=${os:-unicos}
                ;;
        iris | iris4d)
-               basic_machine=mips-sgi
+               cpu=mips
+               vendor=sgi
                case $os in
-                   -irix*)
+                   irix*)
                        ;;
                    *)
-                       os=-irix4
+                       os=irix4
                        ;;
                esac
                ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       m88k-omron*)
-               basic_machine=m88k-omron
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
        miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
+               cpu=m68000
+               vendor=convergent
                ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
+       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               cpu=m68k
+               vendor=atari
+               os=mint
                ;;
        news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
+               cpu=mips
+               vendor=sony
+               os=newsos
                ;;
-       next | m*-next )
-               basic_machine=m68k-next
+       next | m*-next)
+               cpu=m68k
+               vendor=next
                case $os in
-                   -nextstep* )
+                   nextstep* )
                        ;;
-                   -ns2*)
-                     os=-nextstep2
+                   ns2*)
+                     os=nextstep2
                        ;;
                    *)
-                     os=-nextstep3
+                     os=nextstep3
                        ;;
                esac
                ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
        np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
+               cpu=np1
+               vendor=gould
                ;;
        op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
+               cpu=hppa1.1
+               vendor=oki
+               os=proelf
                ;;
        pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=-linux
+               cpu=hppa1.1
+               vendor=hitachi
+               os=hiuxwe2
                ;;
        pbd)
-               basic_machine=sparc-tti
+               cpu=sparc
+               vendor=tti
                ;;
        pbb)
-               basic_machine=m68k-tti
+               cpu=m68k
+               vendor=tti
                ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
-               ;;
-       pc98-*)
-               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+       pc532)
+               cpu=ns32k
+               vendor=pc532
                ;;
        pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
+               cpu=pn
+               vendor=gould
                ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
-               ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
-               ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64)  basic_machine=powerpc64-unknown
-               ;;
-       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-               basic_machine=powerpc64le-unknown
-               ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+       power)
+               cpu=power
+               vendor=ibm
                ;;
        ps2)
-               basic_machine=i386-ibm
-               ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
-               ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
-               ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
+               cpu=i386
+               vendor=ibm
                ;;
        rm[46]00)
-               basic_machine=mips-siemens
+               cpu=mips
+               vendor=siemens
                ;;
        rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
-               ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
+               cpu=romp
+               vendor=ibm
                ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
+       sde)
+               cpu=mipsisa32
+               vendor=sde
+               os=${os:-elf}
                ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
+       simso-wrs)
+               cpu=sparclite
+               vendor=wrs
+               os=vxworks
                ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
+       tower | tower-32)
+               cpu=m68k
+               vendor=ncr
                ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
+       vpp*|vx|vx-*)
+               cpu=f301
+               vendor=fujitsu
                ;;
-       sequent)
-               basic_machine=i386-sequent
+       w65)
+               cpu=w65
+               vendor=wdc
                ;;
-       sh)
-               basic_machine=sh-hitachi
-               os=-hms
+       w89k-*)
+               cpu=hppa1.1
+               vendor=winbond
+               os=proelf
                ;;
-       sh5el)
-               basic_machine=sh5le-unknown
+       none)
+               cpu=none
+               vendor=none
                ;;
-       sh64)
-               basic_machine=sh64-unknown
+       leon|leon[3-9])
+               cpu=sparc
+               vendor=$basic_machine
                ;;
-       sparclite-wrs | simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
+       leon-*|leon[3-9]-*)
+               cpu=sparc
+               vendor=`echo "$basic_machine" | sed 's/-.*//'`
                ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
+
+       *-*)
+               IFS="-" read -r cpu vendor <<EOF
+$basic_machine
+EOF
                ;;
-       spur)
-               basic_machine=spur-unknown
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+               cpu=$basic_machine
+               vendor=pc
                ;;
-       st2000)
-               basic_machine=m68k-tandem
+       # These rules are duplicated from below for sake of the special case above;
+       # i.e. things that normalized to x86 arches should also default to "pc"
+       pc98)
+               cpu=i386
+               vendor=pc
                ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
+       x64 | amd64)
+               cpu=x86_64
+               vendor=pc
                ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+       # Recognize the basic CPU types without company name.
+       *)
+               cpu=$basic_machine
+               vendor=unknown
                ;;
-       sun2)
-               basic_machine=m68000-sun
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       craynv-unknown)
+               vendor=cray
+               os=${os:-unicosmp}
                ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
+       c90-unknown | c90-cray)
+               vendor=cray
+               os=${os:-unicos}
                ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
+       fx80-unknown)
+               vendor=alliant
                ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
+       romp-unknown)
+               vendor=ibm
                ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
+       mmix-unknown)
+               vendor=knuth
                ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
+       microblaze-unknown | microblazeel-unknown)
+               vendor=xilinx
                ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
+       rs6000-unknown)
+               vendor=ibm
                ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
+       vax-unknown)
+               vendor=dec
                ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
+       pdp11-unknown)
+               vendor=dec
                ;;
-       sun4)
-               basic_machine=sparc-sun
+       we32k-unknown)
+               vendor=att
                ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
+       cydra-unknown)
+               vendor=cydrome
                ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
+       i370-ibm*)
+               vendor=ibm
                ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
+       orion-unknown)
+               vendor=highlevel
                ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
+       xps-unknown | xps100-unknown)
+               cpu=xps100
+               vendor=honeywell
                ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
+
+       # Here we normalize CPU types with a missing or matching vendor
+       dpx20-unknown | dpx20-bull)
+               cpu=rs6000
+               vendor=bull
+               os=${os:-bosx}
                ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
+
+       # Here we normalize CPU types irrespective of the vendor
+       amd64-*)
+               cpu=x86_64
                ;;
-       tx39)
-               basic_machine=mipstx39-unknown
+       blackfin-*)
+               cpu=bfin
+               os=linux
                ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
+       c54x-*)
+               cpu=tic54x
                ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
+       c55x-*)
+               cpu=tic55x
                ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
+       c6x-*)
+               cpu=tic6x
                ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
+       e500v[12]-*)
+               cpu=powerpc
+               os=$os"spe"
                ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
+       mips3*-*)
+               cpu=mips64
                ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
+       ms1-*)
+               cpu=mt
                ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
+       m68knommu-*)
+               cpu=m68k
+               os=linux
                ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
+       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+               cpu=s12z
                ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
+       openrisc-*)
+               cpu=or32
                ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
+       parisc-*)
+               cpu=hppa
+               os=linux
                ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               cpu=i586
                ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+               cpu=i686
                ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               cpu=i686
                ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
+       pentium4-*)
+               cpu=i786
                ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
+       pc98-*)
+               cpu=i386
                ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
+       ppc-* | ppcbe-*)
+               cpu=powerpc
                ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
+       ppcle-* | powerpclittle-*)
+               cpu=powerpcle
                ;;
-       xscale-* | xscalee[bl]-*)
-               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+       ppc64-*)
+               cpu=powerpc64
                ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
+       ppc64le-* | powerpc64little-*)
+               cpu=powerpc64le
                ;;
-       z8k-*-coff)
-               basic_machine=z8k-unknown
-               os=-sim
+       sb1-*)
+               cpu=mipsisa64sb1
                ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
+       sb1el-*)
+               cpu=mipsisa64sb1el
                ;;
-       none)
-               basic_machine=none-none
-               os=-none
+       sh5e[lb]-*)
+               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
                ;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
+       spur-*)
+               cpu=spur
                ;;
-       op50n)
-               basic_machine=hppa1.1-oki
+       strongarm-* | thumb-*)
+               cpu=arm
                ;;
-       op60c)
-               basic_machine=hppa1.1-oki
+       tx39-*)
+               cpu=mipstx39
                ;;
-       romp)
-               basic_machine=romp-ibm
+       tx39el-*)
+               cpu=mipstx39el
                ;;
-       mmix)
-               basic_machine=mmix-knuth
+       x64-*)
+               cpu=x86_64
                ;;
-       rs6000)
-               basic_machine=rs6000-ibm
+       xscale-* | xscalee[bl]-*)
+               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
                ;;
-       vax)
-               basic_machine=vax-dec
+
+       # Recognize the canonical CPU Types that limit and/or modify the
+       # company names they are paired with.
+       cr16-*)
+               os=${os:-elf}
                ;;
-       pdp10)
-               # there are many clones, so DEC is not a safe bet
-               basic_machine=pdp10-unknown
+       crisv32-* | etraxfs*-*)
+               cpu=crisv32
+               vendor=axis
                ;;
-       pdp11)
-               basic_machine=pdp11-dec
+       cris-* | etrax*-*)
+               cpu=cris
+               vendor=axis
                ;;
-       we32k)
-               basic_machine=we32k-att
+       crx-*)
+               os=${os:-elf}
                ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
+       neo-tandem)
+               cpu=neo
+               vendor=tandem
                ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-               basic_machine=sparc-sun
+       nse-tandem)
+               cpu=nse
+               vendor=tandem
                ;;
-       cydra)
-               basic_machine=cydra-cydrome
+       nsr-tandem)
+               cpu=nsr
+               vendor=tandem
                ;;
-       orion)
-               basic_machine=orion-highlevel
+       nsv-tandem)
+               cpu=nsv
+               vendor=tandem
                ;;
-       orion105)
-               basic_machine=clipper-highlevel
+       nsx-tandem)
+               cpu=nsx
+               vendor=tandem
                ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
+       s390-*)
+               cpu=s390
+               vendor=ibm
                ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
+       s390x-*)
+               cpu=s390x
+               vendor=ibm
                ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
+       tile*-*)
+               os=${os:-linux-gnu}
                ;;
+
        *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
+               # Recognize the canonical CPU types that are allowed with any
+               # company name.
+               case $cpu in
+                       1750a | 580 \
+                       | a29k \
+                       | aarch64 | aarch64_be \
+                       | abacus \
+                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+                       | alphapca5[67] | alpha64pca5[67] \
+                       | am33_2.0 \
+                       | arc | arceb \
+                       | arm  | arm[lb]e | arme[lb] | armv* \
+                       | avr | avr32 \
+                       | asmjs \
+                       | ba \
+                       | be32 | be64 \
+                       | bfin | bs2000 \
+                       | c[123]* | c30 | [cjt]90 | c4x \
+                       | c8051 | clipper | craynv | csky | cydra \
+                       | d10v | d30v | dlx | dsp16xx \
+                       | e2k | elxsi | epiphany \
+                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+                       | h8300 | h8500 \
+                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+                       | hexagon \
+                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+                       | ip2k | iq2000 \
+                       | k1om \
+                       | le32 | le64 \
+                       | lm32 \
+                       | m32c | m32r | m32rle \
+                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
+                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
+                       | microblaze | microblazeel \
+                       | mips | mipsbe | mipseb | mipsel | mipsle \
+                       | mips16 \
+                       | mips64 | mips64el \
+                       | mips64octeon | mips64octeonel \
+                       | mips64orion | mips64orionel \
+                       | mips64r5900 | mips64r5900el \
+                       | mips64vr | mips64vrel \
+                       | mips64vr4100 | mips64vr4100el \
+                       | mips64vr4300 | mips64vr4300el \
+                       | mips64vr5000 | mips64vr5000el \
+                       | mips64vr5900 | mips64vr5900el \
+                       | mipsisa32 | mipsisa32el \
+                       | mipsisa32r2 | mipsisa32r2el \
+                       | mipsisa32r6 | mipsisa32r6el \
+                       | mipsisa64 | mipsisa64el \
+                       | mipsisa64r2 | mipsisa64r2el \
+                       | mipsisa64r6 | mipsisa64r6el \
+                       | mipsisa64sb1 | mipsisa64sb1el \
+                       | mipsisa64sr71k | mipsisa64sr71kel \
+                       | mipsr5900 | mipsr5900el \
+                       | mipstx39 | mipstx39el \
+                       | mmix \
+                       | mn10200 | mn10300 \
+                       | moxie \
+                       | mt \
+                       | msp430 \
+                       | nds32 | nds32le | nds32be \
+                       | nfp \
+                       | nios | nios2 | nios2eb | nios2el \
+                       | none | np1 | ns16k | ns32k \
+                       | open8 \
+                       | or1k* \
+                       | or32 \
+                       | orion \
+                       | pdp10 | pdp11 | pj | pjl | pn | power \
+                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+                       | pru \
+                       | pyramid \
+                       | riscv | riscv32 | riscv64 \
+                       | rl78 | romp | rs6000 | rx \
+                       | score \
+                       | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+                       | sparclite \
+                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+                       | spu \
+                       | tahoe \
+                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+                       | tron \
+                       | ubicom32 \
+                       | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+                       | vax \
+                       | visium \
+                       | wasm32 \
+                       | we32k \
+                       | x86 | x86_64 | xc16x | xgate | xps100 \
+                       | xstormy16 | xtensa* \
+                       | ymp \
+                       | z8k | z80)
+                               ;;
+
+                       *)
+                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               exit 1
+                               ;;
+               esac
                ;;
 esac
 
 # Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+case $vendor in
+       digital*)
+               vendor=dec
                ;;
-       *-commodore*)
-               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+       commodore*)
+               vendor=cbm
                ;;
        *)
                ;;
@@ -1323,197 +1270,246 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x"$os" != x"" ]
+if [ x$os != x ]
 then
 case $os in
-       # First match some system type aliases
-       # that might get confused with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
+       # First match some system type aliases that might get confused
+       # with valid system types.
+       # solaris* is a basic system type, with this one exception.
+       auroraux)
+               os=auroraux
                ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+       bluegene*)
+               os=cnk
                ;;
-       -solaris)
-               os=-solaris2
+       solaris1 | solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
                ;;
-       -svr4*)
-               os=-sysv4
+       solaris)
+               os=solaris2
                ;;
-       -unixware*)
-               os=-sysv4.2uw
+       unixware*)
+               os=sysv4.2uw
                ;;
-       -gnu/linux*)
+       gnu/linux*)
                os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
                ;;
-       # First accept the basic system types.
+       # es1800 is here to avoid being matched by es* (a different OS)
+       es1800*)
+               os=ose
+               ;;
+       # Some version numbers need modification
+       chorusos*)
+               os=chorusos
+               ;;
+       isc)
+               os=isc2.2
+               ;;
+       sco6)
+               os=sco5v6
+               ;;
+       sco5)
+               os=sco3.2v5
+               ;;
+       sco4)
+               os=sco3.2v4
+               ;;
+       sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               ;;
+       sco3.2v[4-9]* | sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               ;;
+       scout)
+               # Don't match below
+               ;;
+       sco*)
+               os=sco3.2v2
+               ;;
+       psos*)
+               os=psos
+               ;;
+       # Now accept the basic system types.
        # The portable systems comes first.
-       # Each alternative MUST END IN A *, to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+       # Each alternative MUST end in a * to match a version number.
+       # sysv* is not here because it comes later, after sysvr4.
+       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+            | sym* | kopensolaris* | plan9* \
+            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+            | aos* | aros* | cloudabi* | sortix* \
+            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+            | knetbsd* | mirbsd* | netbsd* \
+            | bitrig* | openbsd* | solidbsd* | libertybsd* \
+            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+            | chorusrdb* | cegcc* | glidix* \
+            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+            | linux-newlib* | linux-musl* | linux-uclibc* \
+            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+            | interix* | uwin* | mks* | rhapsody* | darwin* \
+            | openstep* | oskit* | conix* | pw32* | nonstopux* \
+            | storm-chaos* | tops10* | tenex* | tops20* | its* \
+            | os2* | vos* | palmos* | uclinux* | nucleus* \
+            | morphos* | superux* | rtmk* | windiss* \
+            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+            | midnightbsd*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
+       qnx*)
+               case $cpu in
+                   x86 | i*86)
                        ;;
                    *)
-                       os=-nto$os
+                       os=nto-$os
                        ;;
                esac
                ;;
-       -nto-qnx*)
+       hiux*)
+               os=hiuxwe2
                ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+       nto-qnx*)
                ;;
-       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+       nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
                ;;
-       -mac*)
-               os=`echo $os | sed -e 's|mac|macos|'`
+       sim | xray | os68k* | v88r* \
+           | windows* | osx | abug | netware* | os9* \
+           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
                ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
+       linux-dietlibc)
+               os=linux-dietlibc
                ;;
-       -linux*)
+       linux*)
                os=`echo $os | sed -e 's|linux|linux-gnu|'`
                ;;
-       -sunos5*)
-               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+       lynx*178)
+               os=lynxos178
                ;;
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+       lynx*5)
+               os=lynxos5
                ;;
-       -opened*)
-               os=-openedition
+       lynx*)
+               os=lynxos
                ;;
-       -os400*)
-               os=-os400
+       mac*)
+               os=`echo "$os" | sed -e 's|mac|macos|'`
                ;;
-       -wince*)
-               os=-wince
+       opened*)
+               os=openedition
                ;;
-       -osfrose*)
-               os=-osfrose
+       os400*)
+               os=os400
                ;;
-       -osf*)
-               os=-osf
+       sunos5*)
+               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
                ;;
-       -utek*)
-               os=-bsd
+       sunos6*)
+               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
                ;;
-       -dynix*)
-               os=-bsd
+       wince*)
+               os=wince
                ;;
-       -acis*)
-               os=-aos
+       utek*)
+               os=bsd
                ;;
-       -atheos*)
-               os=-atheos
+       dynix*)
+               os=bsd
                ;;
-       -syllable*)
-               os=-syllable
+       acis*)
+               os=aos
                ;;
-       -386bsd)
-               os=-bsd
+       atheos*)
+               os=atheos
                ;;
-       -ctix* | -uts*)
-               os=-sysv
+       syllable*)
+               os=syllable
                ;;
-       -nova*)
-               os=-rtmk-nova
+       386bsd)
+               os=bsd
                ;;
-       -ns2 )
-               os=-nextstep2
+       ctix* | uts*)
+               os=sysv
                ;;
-       -nsk*)
-               os=-nsk
+       nova*)
+               os=rtmk-nova
+               ;;
+       ns2)
+               os=nextstep2
+               ;;
+       nsk*)
+               os=nsk
                ;;
        # Preserve the version number of sinix5.
-       -sinix5.*)
+       sinix5.*)
                os=`echo $os | sed -e 's|sinix|sysv|'`
                ;;
-       -sinix*)
-               os=-sysv4
+       sinix*)
+               os=sysv4
                ;;
-       -tpf*)
-               os=-tpf
+       tpf*)
+               os=tpf
                ;;
-       -triton*)
-               os=-sysv3
+       triton*)
+               os=sysv3
                ;;
-       -oss*)
-               os=-sysv3
+       oss*)
+               os=sysv3
                ;;
-       -svr4)
-               os=-sysv4
+       svr4*)
+               os=sysv4
                ;;
-       -svr3)
-               os=-sysv3
+       svr3)
+               os=sysv3
                ;;
-       -sysvr4)
-               os=-sysv4
+       sysvr4)
+               os=sysv4
                ;;
-       # This must come after -sysvr4.
-       -sysv*)
+       # This must come after sysvr4.
+       sysv*)
                ;;
-       -ose*)
-               os=-ose
+       ose*)
+               os=ose
                ;;
-       -es1800*)
-               os=-ose
+       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+               os=mint
                ;;
-       -xenix)
-               os=-xenix
+       zvmoe)
+               os=zvmoe
                ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
+       dicos*)
+               os=dicos
                ;;
-       -aros*)
-               os=-aros
+       pikeos*)
+               # Until real need of OS specific support for
+               # particular features comes up, bare metal
+               # configurations are quite functional.
+               case $cpu in
+                   arm*)
+                       os=eabi
+                       ;;
+                   *)
+                       os=elf
+                       ;;
+               esac
                ;;
-       -zvmoe)
-               os=-zvmoe
+       nacl*)
                ;;
-       -dicos*)
-               os=-dicos
+       ios)
                ;;
-       -nacl*)
+       none)
                ;;
-       -none)
+       *-eabi)
                ;;
        *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
                exit 1
                ;;
 esac
@@ -1529,264 +1525,265 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
-case $basic_machine in
+case $cpu-$vendor in
        score-*)
-               os=-elf
+               os=elf
                ;;
        spu-*)
-               os=-elf
+               os=elf
                ;;
        *-acorn)
-               os=-riscix1.2
+               os=riscix1.2
                ;;
        arm*-rebel)
-               os=-linux
+               os=linux
                ;;
        arm*-semi)
-               os=-aout
+               os=aout
                ;;
        c4x-* | tic4x-*)
-               os=-coff
+               os=coff
                ;;
        c8051-*)
-               os=-elf
+               os=elf
+               ;;
+       clipper-intergraph)
+               os=clix
                ;;
        hexagon-*)
-               os=-elf
+               os=elf
                ;;
        tic54x-*)
-               os=-coff
+               os=coff
                ;;
        tic55x-*)
-               os=-coff
+               os=coff
                ;;
        tic6x-*)
-               os=-coff
+               os=coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
-               os=-tops20
+               os=tops20
                ;;
        pdp11-*)
-               os=-none
+               os=none
                ;;
        *-dec | vax-*)
-               os=-ultrix4.2
+               os=ultrix4.2
                ;;
        m68*-apollo)
-               os=-domain
+               os=domain
                ;;
        i386-sun)
-               os=-sunos4.0.2
+               os=sunos4.0.2
                ;;
        m68000-sun)
-               os=-sunos3
+               os=sunos3
                ;;
        m68*-cisco)
-               os=-aout
+               os=aout
                ;;
        mep-*)
-               os=-elf
+               os=elf
                ;;
        mips*-cisco)
-               os=-elf
+               os=elf
                ;;
        mips*-*)
-               os=-elf
-               ;;
-       or1k-*)
-               os=-elf
+               os=elf
                ;;
        or32-*)
-               os=-coff
+               os=coff
                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
+               os=sysv3
                ;;
        sparc-* | *-sun)
-               os=-sunos4.1.1
+               os=sunos4.1.1
                ;;
-       *-be)
-               os=-beos
+       pru-*)
+               os=elf
                ;;
-       *-haiku)
-               os=-haiku
+       *-be)
+               os=beos
                ;;
        *-ibm)
-               os=-aix
+               os=aix
                ;;
        *-knuth)
-               os=-mmixware
+               os=mmixware
                ;;
        *-wec)
-               os=-proelf
+               os=proelf
                ;;
        *-winbond)
-               os=-proelf
+               os=proelf
                ;;
        *-oki)
-               os=-proelf
+               os=proelf
                ;;
        *-hp)
-               os=-hpux
+               os=hpux
                ;;
        *-hitachi)
-               os=-hiux
+               os=hiux
                ;;
        i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
+               os=sysv
                ;;
        *-cbm)
-               os=-amigaos
+               os=amigaos
                ;;
        *-dg)
-               os=-dgux
+               os=dgux
                ;;
        *-dolphin)
-               os=-sysv3
+               os=sysv3
                ;;
        m68k-ccur)
-               os=-rtu
+               os=rtu
                ;;
        m88k-omron*)
-               os=-luna
+               os=luna
                ;;
-       *-next )
-               os=-nextstep
+       *-next)
+               os=nextstep
                ;;
        *-sequent)
-               os=-ptx
+               os=ptx
                ;;
        *-crds)
-               os=-unos
+               os=unos
                ;;
        *-ns)
-               os=-genix
+               os=genix
                ;;
        i370-*)
-               os=-mvs
-               ;;
-       *-next)
-               os=-nextstep3
+               os=mvs
                ;;
        *-gould)
-               os=-sysv
+               os=sysv
                ;;
        *-highlevel)
-               os=-bsd
+               os=bsd
                ;;
        *-encore)
-               os=-bsd
+               os=bsd
                ;;
        *-sgi)
-               os=-irix
+               os=irix
                ;;
        *-siemens)
-               os=-sysv4
+               os=sysv4
                ;;
        *-masscomp)
-               os=-rtu
+               os=rtu
                ;;
        f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
+               os=uxpv
                ;;
        *-rom68k)
-               os=-coff
+               os=coff
                ;;
        *-*bug)
-               os=-coff
+               os=coff
                ;;
        *-apple)
-               os=-macos
+               os=macos
                ;;
        *-atari*)
-               os=-mint
+               os=mint
+               ;;
+       *-wrs)
+               os=vxworks
                ;;
        *)
-               os=-none
+               os=none
                ;;
 esac
 fi
 
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
+case $vendor in
+       unknown)
                case $os in
-                       -riscix*)
+                       riscix*)
                                vendor=acorn
                                ;;
-                       -sunos*)
+                       sunos*)
                                vendor=sun
                                ;;
-                       -cnk*|-aix*)
+                       cnk*|-aix*)
                                vendor=ibm
                                ;;
-                       -beos*)
+                       beos*)
                                vendor=be
                                ;;
-                       -hpux*)
+                       hpux*)
                                vendor=hp
                                ;;
-                       -mpeix*)
+                       mpeix*)
                                vendor=hp
                                ;;
-                       -hiux*)
+                       hiux*)
                                vendor=hitachi
                                ;;
-                       -unos*)
+                       unos*)
                                vendor=crds
                                ;;
-                       -dgux*)
+                       dgux*)
                                vendor=dg
                                ;;
-                       -luna*)
+                       luna*)
                                vendor=omron
                                ;;
-                       -genix*)
+                       genix*)
                                vendor=ns
                                ;;
-                       -mvs* | -opened*)
+                       clix*)
+                               vendor=intergraph
+                               ;;
+                       mvs* | opened*)
                                vendor=ibm
                                ;;
-                       -os400*)
+                       os400*)
                                vendor=ibm
                                ;;
-                       -ptx*)
+                       ptx*)
                                vendor=sequent
                                ;;
-                       -tpf*)
+                       tpf*)
                                vendor=ibm
                                ;;
-                       -vxsim* | -vxworks* | -windiss*)
+                       vxsim* | vxworks* | windiss*)
                                vendor=wrs
                                ;;
-                       -aux*)
+                       aux*)
                                vendor=apple
                                ;;
-                       -hms*)
+                       hms*)
                                vendor=hitachi
                                ;;
-                       -mpw* | -macos*)
+                       mpw* | macos*)
                                vendor=apple
                                ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
                                vendor=atari
                                ;;
-                       -vos*)
+                       vos*)
                                vendor=stratus
                                ;;
                esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
                ;;
 esac
 
-echo $basic_machine$os
+echo "$cpu-$vendor-$os"
 exit
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index 6ba50616a131bd715a0c18cf5c46ced4c9eb7ebd..b10cb9597c2131b53a33e697f586d273d899da7c 100644 (file)
@@ -522,6 +522,7 @@ read_man_page(char *filename)
                        man_buf[buf_size] = '\n';
                        man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0';
                } else {
+                       free(man_buf);
                        man_buf = NULL;
                }
                fclose(man_stream);
@@ -1992,7 +1993,7 @@ unescape (char *c)
        while (i < l && c[i]) {
                if (c[i] == '\a') {
                        if (c[i+1])
-                               strcpy(c + i, c + i + 1);       /* should be memmove */
+                               memmove (c + i, c + i + 1, l - i);
                        else {
                                c[i] = '\0';
                                break;
@@ -2562,7 +2563,6 @@ scan_request(char *c)
                                        h = name;
                                if (stat(h, &stbuf) != -1)
                                        l = stbuf.st_size;
-                               buf = stralloc(l + 4);
 #if NOCGI
                                if (!out_length) {
                                        char   *t, *s;
index 1f64433dea83763eabe496c35bc99d3fb18cee49..7920f1b5cb907f84d06450fac158291ebe0f0401 100755 (executable)
@@ -189,7 +189,7 @@ darwin*)
        darwin[1-7].*)
                SHOBJ_STATUS=unsupported
                SHOBJ_LDFLAGS='-dynamic'
-               SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+               SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
                ;;
        # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4
        *)
@@ -205,7 +205,7 @@ darwin*)
                        ;;
                 esac
                 SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}"
-                SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+                SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
                ;;
        esac
 
diff --git a/test.c b/test.c
index ee63420453c3bab7924f13135eb83474ddadccc4..4cb3343cda15171b22d145ce68e9e88f44210a7c 100644 (file)
--- a/test.c
+++ b/test.c
@@ -274,7 +274,7 @@ term ()
     value = binary_operator ();
 
   /* Might be a switch type argument */
-  else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
+  else if (argv[pos][0] == '-' && argv[pos][1] &&  argv[pos][2] == '\0')
     {
       if (test_unop (argv[pos]))
        value = unary_operator ();
@@ -344,10 +344,10 @@ arithcomp (s, t, op, flags)
 
   if (flags & TEST_ARITHEXP)
     {
-      l = evalexp (s, &expok);
+      l = evalexp (s, 0, &expok);
       if (expok == 0)
        return (FALSE);         /* should probably longjmp here */
-      r = evalexp (t, &expok);
+      r = evalexp (t, 0, &expok);
       if (expok == 0)
        return (FALSE);         /* ditto */
     }
@@ -622,15 +622,19 @@ unary_test (op, arg)
       return (minus_o_option_value (arg) == 1);
 
     case 'v':
-      v = find_variable (arg);
 #if defined (ARRAY_VARS)
-      if (v == 0 && valid_array_reference (arg, 0))
+      if (valid_array_reference (arg, 0))
        {
          char *t;
-         t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0);
-         return (t ? TRUE : FALSE);
+         int rtype, ret;
+         t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0);
+         ret = t ? TRUE : FALSE;
+         if (rtype > 0)        /* subscript is * or @ */
+           free (t);
+         return ret;
        }
-     else if (v && invisible_p (v) == 0 && array_p (v))
+      v = find_variable (arg);
+      if (v && invisible_p (v) == 0 && array_p (v))
        {
          char *t;
          /* [[ -v foo ]] == [[ -v foo[0] ]] */
@@ -643,6 +647,8 @@ unary_test (op, arg)
          t = assoc_reference (assoc_cell (v), "0");
          return (t ? TRUE : FALSE);
        }
+#else
+      v = find_variable (arg);
 #endif
       return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
 
@@ -670,7 +676,7 @@ test_binop (op)
   else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!'))
     return (1);
 #endif
-  else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0')
+  else if (op[0] != '-' || op[1] == '\0' || op[2] == '\0' || op[3] != '\0')
     return (0);
   else
     {
@@ -714,7 +720,7 @@ int
 test_unop (op)
      char *op;
 {
-  if (op[0] != '-' || op[2] != 0)
+  if (op[0] != '-' || (op[1] && op[2] != 0))
     return (0);
 
   switch (op[1])
@@ -736,7 +742,7 @@ two_arguments ()
 {
   if (argv[pos][0] == '!' && argv[pos][1] == '\0')
     return (argv[pos + 1][0] == '\0');
-  else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
+  else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0')
     {
       if (test_unop (argv[pos]))
        return (unary_operator ());
@@ -749,7 +755,7 @@ two_arguments ()
   return (0);
 }
 
-#define ANDOR(s)  (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o'))
+#define ANDOR(s)  (s[0] == '-' && (s[1] == 'a' || s[1] == 'o') && s[2] == 0)
 
 /* This could be augmented to handle `-t' as equivalent to `-t 1', but
    POSIX requires that `-t' be given an argument. */
index cab07a98894cda14865ffd50cb0c60ebc85781f0..3ab9a71716155c3897efa7e05a858e1f1b281ba8 100644 (file)
@@ -18,3 +18,15 @@ one
 two
 three
 four
+Error: bar
+ok 1
+ok 2
+text
+whoops:  nullalias
+foo
+a
+a b
+a b
+a a b
+ok 3
+ok 4
index d1ba97b30b0f15f181ef0f1fa13a7d97c2d80bb3..6aa1218b00c9b7012dec45e9c3c188e3ff9c4df0 100644 (file)
@@ -38,3 +38,5 @@ unalias foo bar baz
 
 ${THIS_SH} ./alias1.sub
 ${THIS_SH} ./alias2.sub
+${THIS_SH} ./alias3.sub
+${THIS_SH} ./alias4.sub
diff --git a/tests/alias3.sub b/tests/alias3.sub
new file mode 100644 (file)
index 0000000..bb94268
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+shopt -s expand_aliases
+alias foo='oneword'
+foo_word='foo'
+#
+# Fails silently to match 'foo':
+#
+case "$foo_word"
+in
+       foo) ;;
+       *) echo bad 1;;
+esac
diff --git a/tests/alias4.sub b/tests/alias4.sub
new file mode 100644 (file)
index 0000000..6ea513a
--- /dev/null
@@ -0,0 +1,70 @@
+shopt -s expand_aliases
+
+# from an austin-group report
+alias foo="echo 'Error:"
+foo bar'
+
+# from some FreeBSD sh tests
+
+v=1
+alias a='unalias -a
+v=2'
+eval a
+[ "$v" = 2 ] && echo ok 1
+v=1
+alias a='unalias a
+v=2'
+eval a
+[ "$v" = 2 ] && echo ok 2
+
+# make sure command doesn't ever reset anything even if it's made a keyword
+unalias -a
+alias command=command
+alias true='echo bad'
+eval 'command true'
+
+unalias -a
+alias alias0=command
+alias true='echo bad'
+eval 'alias0 true'
+
+# make sure null aliases are ok
+unalias -a
+alias nullalias=''
+alias foo='echo '
+foo nullalias text
+unalias foo
+
+# aliases shouldn't be expanded in quoted strings even when the previous word
+# is an alias whose expansion ends in a space
+alias foo="echo 'whoops: "
+foo nullalias'
+
+unalias -a
+
+# recursive alias definitions
+alias echo=echo
+eval echo foo
+
+alias echo='echo a'
+
+echo
+echo b
+eval echo b
+echo $(eval echo b)
+
+unalias -a
+
+# alias expansion when in a command position after redirections
+alias e=echo
+eval '</dev/null e ok 3'
+eval 'a=true e ok 4'
+
+alias comment=#
+comment
+
+alias long_comment='# for x in '
+long_comment text after
+
+# comment
+comment foo bar
index 5b25c5eb8ce856406e2b352c80330b84de4b50fc..5c09070bdd24d3ddb7b95a2aa86ed9e8c266a339 100644 (file)
@@ -64,11 +64,11 @@ fx ()
 0
 1
 2
-./arith-for.tests: line 77: syntax error: arithmetic expression required
-./arith-for.tests: line 77: syntax error: `(( i=0; "i < 3" ))'
+bash: -c: line 0: syntax error: arithmetic expression required
+bash: -c: line 0: syntax error: `(( i=0; "i < 3" ))'
 2
-./arith-for.tests: line 83: syntax error: `;' unexpected
-./arith-for.tests: line 83: syntax error: `(( i=0; i < 3; i++; 7 ))'
+bash: -c: line 0: syntax error: `;' unexpected
+bash: -c: line 0: syntax error: `(( i=0; i < 3; i++; 7 ))'
 2
 20
 20
index 00e2d4aedab7875a698f6ed5cb4e7d62f9c95ce7..33f4bd66e74a1ec68eb54ca089e61fc52786ac0f 100644 (file)
@@ -74,17 +74,19 @@ type fx
 fx
 
 # errors 
-for (( i=0; "i < 3" ))
+{
+${THIS_SH} -c 'for (( i=0; "i < 3" ))
 do
        echo $i
-done
-echo $?
+done' ; echo $? ;  } 2>&1 | sed 's|^.*/||'
+#echo $?
 
-for (( i=0; i < 3; i++; 7 ))
+{
+${THIS_SH} -c 'for (( i=0; i < 3; i++; 7 ))
 do
        echo $i
-done
-echo $?
+done' ; echo $?; } 2>&1 | sed 's|^.*/||'
+#echo $?
 
 # one-liners added in post-bash-2.04
 for     ((i=0; i < 20; i++)) do : ; done
index 13c8c7106c8aef43b9c46a7d33b1bf56407a81e2..2c3d172af86edf25ad34b963f4e9ce61f59c7e78 100644 (file)
@@ -242,14 +242,22 @@ efg
 e
 abcdefg
 efg
+0
+0
+0
+0
+0
+0
+0
 8 12
-./arith.tests: line 294: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ")
-./arith.tests: line 298: a b: syntax error in expression (error token is "b")
-./arith.tests: line 299: ((: a b: syntax error in expression (error token is "b")
+./arith.tests: line 297: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ")
+./arith.tests: line 301: a b: syntax error in expression (error token is "b")
+./arith.tests: line 302: ((: a b: syntax error in expression (error token is "b")
 42
 42
 42
 42
 42
 42
-./arith.tests: line 310: b[c]d: syntax error in expression (error token is "d")
+./arith.tests: line 314: 'foo' : syntax error: operand expected (error token is "'foo' ")
+./arith.tests: line 318: b[c]d: syntax error in expression (error token is "d")
index 79ce016d523f70039ff704e89dcd8a848b9d6021..bc9490e98d686ecedab845120b7c0c27f6f0b9f7 100644 (file)
@@ -283,6 +283,9 @@ ${THIS_SH} ./arith6.sub
 # part of word expansions such as substring extraction
 ${THIS_SH} ./arith7.sub
 
+# problems with evaluation of conditional expressions
+${THIS_SH} ./arith8.sub
+
 x=4
 y=7
 
@@ -306,5 +309,10 @@ printf "%u\n" $n
 echo $(( 16#$(printf "%x\n" $n) ))
 echo $(( 16#$(printf "%X\n" $n) ))
 
+# these are errors
+foo=1
+echo $(( 'foo' ))
+
+
 # causes longjmp botches through bash-2.05b
 a[b[c]d]=e
diff --git a/tests/arith8.sub b/tests/arith8.sub
new file mode 100644 (file)
index 0000000..1ab0895
--- /dev/null
@@ -0,0 +1,37 @@
+# problems with evaluation of wrong terms in conditional expressions through
+# bash-4.4
+
+a=0 x="a=1"
+((0?x:0))
+echo $a
+unset a x
+
+a=0 x="a=1"
+((1?0:x))
+echo $a
+unset a x
+
+a=0 x="a=1"
+((0?(x):0))
+echo $a
+unset a x
+
+a=0 x="a=1"
+((0?$x:0))
+echo $a
+unset a x
+
+a=0 x="a=1"
+((0&&x))
+echo $a
+unset a x
+
+a=0 x="a=1"
+((1||x))
+echo $a
+unset a x
+
+a=0
+((0?arr[a=1]:0))
+echo $a
+unset a
index 031a0b7e426d8c269b16aec4e1f45b75510a07f0..834e5684eb6725b000abdff97b3019113f2354ad 100644 (file)
@@ -26,7 +26,7 @@ hello world
 11
 3
 bdef hello world test expression test 2
-./array.tests: line 76: readonly: `a[5]': not a valid identifier
+./array.tests: line 79: readonly: `a[5]': not a valid identifier
 declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
 declare -ar c
 declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
@@ -46,17 +46,17 @@ declare -ar c
 declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")
 declare -a e=([0]="test")
 declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
-./array.tests: line 100: a: readonly variable
-./array.tests: line 102: b[]: bad array subscript
-./array.tests: line 103: b[*]: bad array subscript
-./array.tests: line 104: ${b[   ]}: bad substitution
-./array.tests: line 106: c[-2]: bad array subscript
-./array.tests: line 107: c: bad array subscript
+./array.tests: line 103: a: readonly variable
+./array.tests: line 105: b[]: bad array subscript
+./array.tests: line 106: b[*]: bad array subscript
+this
+./array.tests: line 109: c[-2]: bad array subscript
+./array.tests: line 110: c: bad array subscript
 
-./array.tests: line 109: d[7]: cannot assign list to array member
-./array.tests: line 111: []=abcde: bad array subscript
-./array.tests: line 111: [*]=last: cannot assign to non-numeric index
-./array.tests: line 111: [-65]=negative: bad array subscript
+./array.tests: line 112: d[7]: cannot assign list to array member
+./array.tests: line 114: []=abcde: bad array subscript
+./array.tests: line 114: [*]=last: cannot assign to non-numeric index
+./array.tests: line 114: [-65]=negative: bad array subscript
 declare -a BASH_ARGC=()
 declare -a BASH_ARGV=()
 declare -a BASH_LINENO=([0]="0")
@@ -68,8 +68,8 @@ declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
 declare -ar c
 declare -a d=([1]="test test")
 declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
-./array.tests: line 119: unset: ps1: not an array variable
-./array.tests: line 123: declare: c: cannot destroy array variables in this way
+./array.tests: line 122: unset: ps1: not an array variable
+./array.tests: line 126: declare: c: cannot destroy array variables in this way
 this of
 this is a test of read using arrays
 this test
@@ -127,7 +127,7 @@ grep [ 123 ] *
 6 7 9 5
 length = 3
 value = new1 new2 new3
-./array.tests: line 239: narray: unbound variable
+./array.tests: line 242: narray: unbound variable
 ./array1.sub: line 1: syntax error near unexpected token `('
 ./array1.sub: line 1: `printf "%s\n" -a a=(a 'b  c')'
 ./array2.sub: line 1: declare: `[]=asdf': not a valid identifier
@@ -154,10 +154,10 @@ for case if then else
 12 14 16 18 20
 4414758999202
 aaa bbb
-./array.tests: line 289: syntax error near unexpected token `<>'
-./array.tests: line 289: `metas=( <> < > ! )'
-./array.tests: line 290: syntax error near unexpected token `<>'
-./array.tests: line 290: `metas=( [1]=<> [2]=< [3]=> [4]=! )'
+./array.tests: line 292: syntax error near unexpected token `<>'
+./array.tests: line 292: `metas=( <> < > ! )'
+./array.tests: line 293: syntax error near unexpected token `<>'
+./array.tests: line 293: `metas=( [1]=<> [2]=< [3]=> [4]=! )'
 abc 3
 case 4
 abc case if then else 5
@@ -395,7 +395,7 @@ qux: unset array element 0: ok
 0
 0
 1
-2
+./array17.sub: line 30: ~: syntax error: operand expected (error token is "~")
 0
 0
 3
@@ -446,7 +446,7 @@ declare -a a=([0]="1" [1]="2" [2]="3")
 declare -A a=()
 declare -- a="([0]=a [1]=b)"
 declare -a a=([0]="a" [1]="b")
-declare -A a=([0]="a" [1]="b" )
+declare -A a=([1]="b" [0]="a" )
 declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]")
 declare -a var=([0]="[\$(echo total 0)]=1 [2]=2]")
 declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]")
@@ -502,3 +502,263 @@ unset
 declare -a a=()
 declare -A A=()
 declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3")
+a1
+argv[1] = <>
+argv[2] = <>
+a2
+argv[1] = <y>
+argv[1] = <z>
+a3
+argv[1] = <>
+argv[2] = <x>
+a4
+argv[1] = <y>
+p1
+argv[1] = <>
+argv[2] = <>
+p2
+argv[1] = <>
+argv[2] = <x>
+p3
+argv[1] = <y>
+<X> <X> <X> <X>
+<X> <X> <X> <X>
+./array23.sub: line 9: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+./array23.sub: line 10: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+foo
+0
+foo
+foo
+foo
+6
+./array23.sub: line 21: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 22: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+0
+0
+0
+IFS=: ${var-$*}
+abc
+def ghi
+jkl
+abc
+def ghi
+jkl
+----
+IFS=: ${var=$*}
+abc
+def ghi
+jkl
+var=abc:def ghi:jkl
+abc
+def ghi
+jkl
+var=abc:def ghi:jkl
+----
+IFS=: ${var+$*}
+abc
+def ghi
+jkl
+abc
+def ghi
+jkl
+----
+IFS= ${var-$*}
+abc
+def ghi
+jkl
+abc
+def ghi
+jkl
+----
+IFS= ${var=$*}
+abcdef ghijkl
+var=abcdef ghijkl
+abcdef ghijkl
+var=abcdef ghijkl
+----
+IFS= ${var+$*}
+abc
+def ghi
+jkl
+abc
+def ghi
+jkl
+1. indexed:
+reference:
+1. 0
+./array25.sub: line 11: ' ': syntax error: operand expected (error token is "' '")
+3. 0
+4. 0
+5. 0
+6. 0
+assignment:
+1.declare -a a=([0]="10" [1]="1")
+2.declare -a a=([0]="11" [1]="1")
+3.declare -a a=([0]="12" [1]="1")
+4.declare -a a=([0]="13" [1]="1")
+arithmetic:
+1.declare -a a=([0]="10" [1]="1")
+2.declare -a a=([0]="11" [1]="1")
+3.declare -a a=([0]="12" [1]="1")
+4.declare -a a=([0]="13" [1]="1")
+5.declare -a a=([0]="10" [1]="1")
+6.declare -a a=([0]="11" [1]="1")
+7.declare -a a=([0]="12" [1]="1")
+8.declare -a a=([0]="13" [1]="1")
+2. associative:
+reference:
+1.
+2.
+3. 
+4.
+5.
+6. 
+assignment:
+1.declare -A a=([1]="1" [0]="0" [" "]="10" )
+2.declare -A a=([1]="1" [0]="0" [" "]="11" )
+3.declare -A a=([1]="1" [0]="0" [" "]="12" )
+4.declare -A a=([1]="1" [0]="0" [" "]="13" )
+arithmetic:
+1.declare -A a=([1]="1" [0]="0" [" "]="10" )
+2.declare -A a=([1]="1" [0]="0" [" "]="11" )
+3.declare -A a=([1]="1" [0]="0" [" "]="12" )
+4.declare -A a=([1]="1" [0]="0" [" "]="13" )
+5.declare -A a=([1]="1" [0]="0" [" "]="10" )
+6.declare -A a=([1]="1" [0]="0" [" "]="10" ["\" \""]="11" )
+7.declare -A a=([1]="1" [0]="0" [" "]="12" ["\" \""]="11" )
+8.declare -A a=([1]="1" [0]="0" [" "]="12" ["\" \""]="13" )
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <aa+bb>
+argv[2] = <aa+bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa+bb>
+argv[1] = <xa+bb>
+argv[1] = <xa+bb>
+argv[2] = <xa+bb>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bb+xa>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xa>
+argv[2] = <bb>
+argv[1] = <xabb>
+argv[1] = <xabb>
+argv[1] = <xabb>
+argv[2] = <xabb>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bb>
+argv[2] = <xa>
+argv[1] = <bbxa>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <aa+bb>
+argv[2] = <aa+bb>
+argv[1] = <aa+bb>
+argv[2] = <aa+bb>
+argv[1] = <aa>
+argv[2] = <bb>
+argv[3] = <aa>
+argv[4] = <bb>
+argv[1] = <bb>
+argv[2] = <aa>
+argv[1] = <bb>
+argv[2] = <aa>
+argv[1] = <bb>
+argv[2] = <aa>
+argv[1] = <bb+aa>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[3] = <a>
+argv[4] = <b>
+argv[1] = <a+b>
+argv[2] = <a+b>
+argv[1] = <a>
+argv[2] = <b>
+argv[3] = <a>
+argv[4] = <b>
+argv[1] = <b>
+argv[2] = <a>
+argv[1] = <b>
+argv[2] = <a>
+argv[1] = <b>
+argv[2] = <a>
+argv[1] = <b+a>
+7
+./array27.sub: line 11: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ")
+declare -A A=([$'\t']="2" [" "]="2" )
+./array27.sub: line 23: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ")
+declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" )
+./array27.sub: line 32: A[]]: bad array subscript
+declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
+./array27.sub: line 40: A[]]: bad array subscript
+declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
+./array27.sub: line 48: declare: `A[]]=X': not a valid identifier
+declare -A A=(["*"]="X" ["@"]="X" )
+./array27.sub: line 56: declare: `A[]]=X': not a valid identifier
+./array27.sub: line 56: A[*]: bad array subscript
+./array27.sub: line 56: A[@]: bad array subscript
+declare -A A
index b10539376ce3f378540dec97b8e398b79b7b4560..afd3df51b41e36441ded8fa952aceebe126e8439 100644 (file)
@@ -21,6 +21,9 @@ unset a
 a=abcde
 declare -a a
 echo ${a[0]}
+if [ "$a" != "${a[0]}" ]; then
+       echo 'array.tests: $a and $a[0] array mismatch'
+fi
 
 unset a
 a=abcde
@@ -248,7 +251,7 @@ ${THIS_SH} ./array3.sub
 ${THIS_SH} ./array4.sub
 
 set +u
-cd /tmp
+cd ${TMPDIR:=/tmp}
 
 touch 1=bar
 foo=([10]="bar")
@@ -397,3 +400,9 @@ ${THIS_SH} ./array18.sub
 ${THIS_SH} ./array19.sub
 ${THIS_SH} ./array20.sub
 ${THIS_SH} ./array21.sub
+${THIS_SH} ./array22.sub
+${THIS_SH} ./array23.sub
+${THIS_SH} ./array24.sub
+${THIS_SH} ./array25.sub
+${THIS_SH} ./array26.sub
+${THIS_SH} ./array27.sub
diff --git a/tests/array22.sub b/tests/array22.sub
new file mode 100644 (file)
index 0000000..adae6e1
--- /dev/null
@@ -0,0 +1,46 @@
+# This isn't perfect behavior, but it establishes a baseline and will provide
+# a way to detect behavior changes
+
+echo a1
+a[0]= a[1]=; recho "${a[@]:-y}"
+unset a
+
+echo a2
+a[1]=; recho "${a[@]:-y}"
+a[1]=; recho "${a[*]:-z}"
+unset a
+
+echo a3
+a[0]= a[1]=x; recho "${a[@]:-y}"
+unset a
+
+echo a4
+a[0]= a[1]=x; recho ${a[@]:+y}
+unset a
+
+echo p1
+set '' ''
+recho "${@:-y}"
+
+shift $#
+
+echo p2
+set '' x
+recho "${@:-y}"
+
+shift $#
+
+echo p3
+set '' x
+recho ${@:+y}
+
+# problems with * and null expansions dating back to bash's earliest days
+A=(''); set -- ''
+
+echo "<${A[*]:-X}>" "<${*:-X}>" "<${A:-X}>" "<${A[0]:-X}>" 
+
+IFS=
+A=('' ''); set -- '' ''
+B=''
+
+echo "<${A[*]:-X}>" "<${*:-X}>" "<${B:-X}>" "<${B[*]:-X}>"
diff --git a/tests/array23.sub b/tests/array23.sub
new file mode 100644 (file)
index 0000000..bd64fe1
--- /dev/null
@@ -0,0 +1,28 @@
+# this captures how bash and ksh93 expand indexed array subscripts in
+# various contexts. if changes are ever made, or an option added to do
+# this differently, the diffs will show up here
+
+typeset -a array
+
+index='$( echo >&2 foo )' # Literal shell code should never be evaluated unless an 'eval' is involved.
+
+echo ${array[ $index ]} # [] expands $index, results in a literal that [] does not re-evaluate.
+echo $(( $index )) # (( )) expands $index, results in a literal that (( )) does not re-evaluate.
+echo $(( array[ $index ] )) # (( )) expands $index, results in a literal that  [] DOES re-evaluate.
+
+(( array[ $index ] ))
+
+typeset -a a
+
+: $(( a[$index]=5 ))
+
+#shopt -s assoc_expand_once
+echo $((1+a[$index]))
+echo $((1+a[\$index]))
+echo "1+${a[$index]}"
+
+# intermediate problems discovered while bash-5.0 was in testing
+a=0
+echo $(( a[a[0]] ))
+echo ${a[a[a[0]]]}
+echo $(( a[a[a[0]]] ))
diff --git a/tests/array24.sub b/tests/array24.sub
new file mode 100644 (file)
index 0000000..108f761
--- /dev/null
@@ -0,0 +1,47 @@
+set -- "abc" "def ghi" "jkl"
+A=("$@")
+
+IFS=':'
+
+echo 'IFS=: ${var-$*}'
+unset var; printf '%s\n' ${var-$*}
+printf '%s\n' ${var-${A[*]}}
+
+echo "----"
+echo 'IFS=: ${var=$*}'
+
+unset  var; printf '%s\n' ${var=$*}
+printf 'var=%s\n' "$var"
+
+unset var; printf '%s\n' ${var=${A[*]}}
+printf 'var=%s\n' "$var"
+
+echo "----"
+echo 'IFS=: ${var+$*}'
+
+printf '%s\n' ${var+$*}
+printf '%s\n' ${var+${A[*]}}
+
+echo "----"
+echo 'IFS= ${var-$*}'
+
+IFS=''
+unset var; printf '%s\n' ${var-$*}
+unset var; printf '%s\n' ${var-${A[*]}}
+
+echo "----"
+echo 'IFS= ${var=$*}'
+
+unset var
+printf '%s\n' ${var=$*}
+printf 'var=%s\n' "$var"
+
+unset var
+printf '%s\n' ${var=${A[*]}}
+printf 'var=%s\n' "$var"
+
+echo "----"
+echo 'IFS= ${var+$*}'
+
+printf '%s\n' ${var+$*}
+printf '%s\n' ${var+${A[*]}}
diff --git a/tests/array25.sub b/tests/array25.sub
new file mode 100644 (file)
index 0000000..b550d9d
--- /dev/null
@@ -0,0 +1,70 @@
+# tests with blank subscripts, indexed and associative
+
+echo 1. indexed:
+a[0]=0 a[1]=1
+
+v=" "
+
+echo reference:
+
+echo 1. ${a[ ]}
+echo 2. ${a[' ']}
+echo 3. "${a[ ]}"
+echo 4. ${a[$v]}
+echo 5. ${a["$v"]}
+echo 6. "${a[$v]}"
+
+echo assignment:
+
+echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0
+echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0
+echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0
+echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0
+
+echo arithmetic:
+
+echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0
+echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0
+echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0
+echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0
+echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0
+echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0
+echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0
+echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0
+
+unset -v a v
+
+echo 2. associative:
+shopt -s assoc_expand_once
+
+typeset -A a
+a[0]=0 a[1]=1
+
+v=" "
+
+echo reference:
+
+echo 1. ${a[ ]}
+echo 2. ${a[' ']}
+echo 3. "${a[ ]}"
+echo 4. ${a[$v]}
+echo 5. ${a["$v"]}
+echo 6. "${a[$v]}"
+
+echo assignment:
+
+echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0
+echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0
+echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0
+echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0
+
+echo arithmetic:
+
+echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0
+echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0
+echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0
+echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0
+echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0
+echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0
+echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0
+echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0
diff --git a/tests/array26.sub b/tests/array26.sub
new file mode 100644 (file)
index 0000000..826774f
--- /dev/null
@@ -0,0 +1,118 @@
+# these should produce the same results
+a=(aa bb)
+set -- aa bb
+
+IFS=+
+
+recho ${a[@]} 
+recho ${a[@]:0} 
+
+recho $@
+recho ${@:1} 
+
+A=${a[*]} B=${a[*]:0}
+recho $* ${*:1}
+recho ${a[*]} ${a[*]:0}
+recho "$A" "$B"
+recho $A $B
+
+unset A B
+
+recho ${@/a/x} 
+recho ${a[@]/a/x} 
+recho "${@/a/x}"
+recho "${a[@]/a/x}"
+
+recho ${*/a/x} 
+recho ${a[*]/a/x} 
+recho "${*/a/x}"
+recho "${a[*]/a/x}"
+
+A=${*/a/x}
+B=${a[*]/a/x}
+
+recho "$A" "$B"
+
+unset A B
+declare -A A
+A[0]=aa
+A[1]=bb
+
+recho ${A[@]/a/x}
+recho "${A[@]/a/x}"
+recho ${A[*]/a/x}
+recho "${A[*]/a/x}"
+
+unset A
+IFS=
+
+recho ${@/a/x}
+recho ${a[@]/a/x}
+recho "${@/a/x}"
+recho "${a[@]/a/x}"
+
+recho ${*/a/x}
+recho ${a[*]/a/x}
+recho "${*/a/x}"
+recho "${a[*]/a/x}"
+
+A=${*/a/x}
+B=${a[*]/a/x}
+
+recho "$A" "$B"
+
+unset A B
+declare -A A
+A[0]=aa
+A[1]=bb
+
+recho ${A[@]/a/x}  
+recho "${A[@]/a/x}" 
+recho ${A[*]/a/x}   
+recho "${A[*]/a/x}"
+
+unset A
+
+IFS=+
+
+recho ${a[@]}
+recho ${a[@],,} 
+recho "${a[@]}"
+recho "${a[@],,}"
+
+A=${a[*]} B=${a[*],,}
+recho $* ${*,,}
+recho ${a[*]} ${a[*],,}
+recho "${a[*]}" "${a[*],,}"
+recho "$A" "$B"
+recho $A $B
+
+unset A B
+declare -A A
+A[0]=aa
+A[1]=bb
+
+recho ${A[@],,}
+recho "${A[@],,}"
+recho ${A[*],,}
+recho "${A[*],,}"
+
+unset A
+
+recho ${a[@]#?}
+recho ${@#?}
+
+A=${a[*]#?} B=${a[*]#?}
+recho ${*#?} ${a[*]#?}
+recho "$A" "$B"
+recho $A $B
+
+unset A B
+declare -A A
+A[0]=aa
+A[1]=bb
+
+recho ${A[@]#?}  
+recho "${A[@]#?}"   
+recho ${A[*]#?}  
+recho "${A[*]#?}" 
diff --git a/tests/array27.sub b/tests/array27.sub
new file mode 100644 (file)
index 0000000..fe1ffd3
--- /dev/null
@@ -0,0 +1,59 @@
+# tests for `problem' keys when using associative arrays and assoc_expand_once
+# deal with problems for now; this is a placeholder for if and when I fix them
+
+typeset -A a
+shopt -s assoc_expand_once
+
+k='['
+echo $(( a[$k]=7 ))
+
+k=']'
+echo $(( a[$k]=7 ))
+
+unset a
+
+declare -A A
+
+for k in $'\t' ' '; do
+   (( A[$k]=2 ))
+done
+declare -p A
+
+for k in ']' '*' '@'; do
+   (( A[$k]=2 ))
+done
+
+declare -p A
+
+unset A
+declare -A A
+
+for k in $'\t' ' ' ']' '*' '@'; do
+   read "A[$k]" <<< X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in $'\t' ' ' ']' '*' '@'; do
+       printf -v "A[$k]" "%s" X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in ']' '*' '@'; do
+   declare A[$k]=X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in ']' '*' '@'; do
+   declare "A[$k]=X"
+done
+declare -p A
+
index 778a28df434cf68adb41ffd82989935a1dc97966..00953c4a6c7787cad4c177a03d3898c39f2ebb09 100644 (file)
@@ -4,7 +4,7 @@
 mkdir $TMPDIR/bash-test-$$
 cd $TMPDIR/bash-test-$$
 
-trap "cd / ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15
+trap "cd $OLDPWD ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15
 
 touch '[3]=abcde'
 
index 0a6951d4ad3a54366905a26fc589ae9f40858133..90abb6d649315ca25301b53d88b351fb2dd7025f 100644 (file)
@@ -3,43 +3,43 @@ declare -A BASH_CMDS=()
 declare -A fluff
 declare -A BASH_ALIASES=()
 declare -A BASH_CMDS=()
-declare -A fluff=([bar]="two" [foo]="one" )
-declare -A fluff=([bar]="two" [foo]="one" )
+declare -A fluff=([foo]="one" [bar]="two" )
+declare -A fluff=([foo]="one" [bar]="two" )
 declare -A fluff=([bar]="two" )
 declare -A fluff=([bar]="newval" [qux]="assigned" )
 ./assoc.tests: line 26: chaff: four: must use subscript when assigning associative array
 declare -A BASH_ALIASES=()
 declare -A BASH_CMDS=()
-declare -Ai chaff=([one]="10" [zero]="5" )
-declare -Ar waste=([version]="4.0-devel" [source]="./assoc.tests" [lineno]="28" [pid]="42134" )
-declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" )
-declare -A chaff=([one]="10" ["hello world"]="flip" [zero]="5" )
+declare -Ai chaff=([zero]="5" [one]="10" )
+declare -Ar waste=([lineno]="28" [source]="./assoc.tests" [version]="4.0-devel" [pid]="42134" )
+declare -A wheat=([two]="b" [three]="c" [zero]="0" [one]="a" )
+declare -A chaff=(["hello world"]="flip" [zero]="5" [one]="10" )
 ./assoc.tests: line 38: waste: readonly variable
 ./assoc.tests: line 39: unset: waste: cannot unset: readonly variable
 ./assoc.tests: line 40: chaff[*]: bad array subscript
 ./assoc.tests: line 41: [*]=12: invalid associative array key
-declare -A chaff=([one]="a" ["hello world"]="flip" )
+declare -A chaff=(["hello world"]="flip" [one]="a" )
 flip
-argv[1] = <a>
+argv[1] = <multiple>
+argv[2] = <words>
+argv[3] = <flip>
+argv[4] = <a>
+argv[1] = <multiple words>
 argv[2] = <flip>
-argv[3] = <multiple>
-argv[4] = <words>
-argv[1] = <a>
-argv[2] = <flip>
-argv[3] = <multiple words>
-argv[1] = <a>
-argv[2] = <flip>
-argv[3] = <multiple>
-argv[4] = <words>
-argv[1] = <a flip multiple words>
+argv[3] = <a>
+argv[1] = <multiple>
+argv[2] = <words>
+argv[3] = <flip>
+argv[4] = <a>
+argv[1] = <multiple words flip a>
 ./assoc.tests: line 58: declare: chaff: cannot destroy array variables in this way
 ./assoc.tests: line 60: chaff[*]: bad array subscript
 ./assoc.tests: line 61: [*]=12: invalid associative array key
-declare -A wheat=([six]="6" ["foo bar"]="qux qix" )
+declare -A wheat=(["foo bar"]="qux qix" [six]="6" )
 argv[1] = <qux>
 argv[2] = <qix>
 argv[1] = <qux qix>
-declare -A wheat=([six]="6" ["foo bar"]="qux qix" )
+declare -A wheat=(["foo bar"]="qux qix" [six]="6" )
 argv[1] = <2>
 argv[1] = <7>
 argv[1] = <qux>
@@ -48,16 +48,16 @@ argv[3] = <blat>
 argv[1] = <qux qix blat>
 argv[1] = <16>
 argv[1] = <16>
-argv[1] = <6>
-argv[2] = <flix>
-argv[1] = <six>
-argv[2] = <foo>
-argv[3] = <bar>
-argv[1] = <six>
-argv[2] = <foo bar>
+argv[1] = <flix>
+argv[2] = <6>
+argv[1] = <foo>
+argv[2] = <bar>
+argv[3] = <six>
+argv[1] = <foo bar>
+argv[2] = <six>
 8
-. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin
-. sbin bin bin ucb bin bin sbin
+/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin
+sbin bin bin ucb bin . sbin bin
 bin
 / / / / / / /
 /
@@ -66,83 +66,83 @@ argv[1] = </>
 argv[1] = <sbin>
 argv[1] = </>
 8
-. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin
-. sbin bin bin ucb bin bin sbin
+/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin
+sbin bin bin ucb bin . sbin bin
 / / / / / / /
 8
 4 -- /bin
-. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin
-. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin
-. \sbin \usr/bin \bin \usr/ucb \usr/local/bin \bin \usr/sbin
-. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin
-. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin
+^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin
+^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin
+\sbin \usr/bin \bin \usr/ucb \usr/local/bin . \usr/sbin \bin
+\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin
+\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin
 ([a]=1)
 
-qux foo
-/usr/local/bin/qux /usr/sbin/foo
+foo qux
+/usr/sbin/foo /usr/local/bin/qux
 hits   command
    0   /sbin/blat
-   0   /usr/local/bin/qux
-   0   /bin/sh
    0   /usr/sbin/foo
-blat qux sh foo
-/sbin/blat /usr/local/bin/qux /bin/sh /usr/sbin/foo
+   0   /bin/sh
+   0   /usr/local/bin/qux
+blat foo sh qux
+/sbin/blat /usr/sbin/foo /bin/sh /usr/local/bin/qux
 
-qux foo
-argv[1] = </usr/local/bin/qux>
-argv[2] = <-l>
-argv[3] = </usr/sbin/foo>
+foo qux
+argv[1] = </usr/sbin/foo>
+argv[2] = </usr/local/bin/qux>
+argv[3] = <-l>
 alias blat='cd /blat ; echo $PWD'
 alias foo='/usr/sbin/foo'
 alias qux='/usr/local/bin/qux -l'
 alias sh='/bin/bash --login -o posix'
-blat qux sh foo
+blat foo sh qux
 argv[1] = <cd /blat ; echo $PWD>
-argv[2] = </usr/local/bin/qux -l>
+argv[2] = </usr/sbin/foo>
 argv[3] = </bin/bash --login -o posix>
-argv[4] = </usr/sbin/foo>
+argv[4] = </usr/local/bin/qux -l>
 outside: outside
 declare -A BASH_ALIASES=()
 declare -A BASH_CMDS=()
-declare -A afoo=([six]="six" ["foo bar"]="foo quux" )
+declare -A afoo=(["foo bar"]="foo quux" [six]="six" )
 argv[1] = <inside:>
-argv[2] = <six>
-argv[3] = <foo quux>
+argv[2] = <foo quux>
+argv[3] = <six>
 outside 2: outside
-argv[1] = <fooq//barq/>
-argv[1] = <fooq>
-argv[2] = <>
-argv[3] = <barq>
-argv[4] = <>
-argv[1] = <foo!//bar!/>
-argv[1] = <foo!>
-argv[2] = <>
-argv[3] = <bar!>
-argv[4] = <>
-argv[1] = <ooq//arq/>
-argv[1] = <ooq>
-argv[2] = <>
-argv[3] = <arq>
-argv[4] = <>
-argv[1] = <Fooq//Barq/>
-argv[1] = <Fooq>
-argv[2] = <>
-argv[3] = <Barq>
-argv[4] = <>
-argv[1] = <FOOQ//BARQ/>
-argv[1] = <FOOQ>
-argv[2] = <>
-argv[3] = <BARQ>
-argv[4] = <>
+argv[1] = </barq//fooq>
+argv[1] = <>
+argv[2] = <barq>
+argv[3] = <>
+argv[4] = <fooq>
+argv[1] = </bar!//foo!>
+argv[1] = <>
+argv[2] = <bar!>
+argv[3] = <>
+argv[4] = <foo!>
+argv[1] = </arq//ooq>
+argv[1] = <>
+argv[2] = <arq>
+argv[3] = <>
+argv[4] = <ooq>
+argv[1] = </Barq//Fooq>
+argv[1] = <>
+argv[2] = <Barq>
+argv[3] = <>
+argv[4] = <Fooq>
+argv[1] = </BARQ//FOOQ>
+argv[1] = <>
+argv[2] = <BARQ>
+argv[3] = <>
+argv[4] = <FOOQ>
 abc
 def
 def
 ./assoc5.sub: line 13: declare: `myarray[foo[bar]=bleh': not a valid identifier
-bleh abc def
-myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["]"]="def" )
+bleh def abc
+myarray=([foo]="bleh" ["]"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" )
 
 123
-myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["a]=test2;#a"]="def" ["]"]="def" )
+myarray=([foo]="bleh" ["]"]="def" ["a]=test2;#a"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" )
 bar"bie
 doll
 declare -A foo=(["bar\"bie"]="doll" )
@@ -195,3 +195,37 @@ declare -A assoc=([0]="assoc" )
 assoc
 declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" )
 declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" )
+declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" )
+declare -A b=(["]"]="" ["\`"]="" )
+declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
+./assoc9.sub: line 23: unset: `dict[']': not a valid identifier
+./assoc9.sub: line 23: unset: `dict["]': not a valid identifier
+./assoc9.sub: line 23: unset: `dict[\]': not a valid identifier
+./assoc9.sub: line 23: unset: `dict[`]': not a valid identifier
+declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
+declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
+declare -A dict=()
+4
+4
+a[$b]= 5
+declare -A a=(["80's"]="Depeche Mode" )
+./assoc9.sub: line 71: read: `a[80's]': not a valid identifier
+declare -A a
+declare -A a=(["80's"]="Depeche Mode" )
+./assoc9.sub: line 83: printf: `a[80's]': not a valid identifier
+declare -A a
+declare -A a=(["80's"]="Depeche Mode" )
+6
+1
+1+5
+declare -A a=(["\$(date >&2)"]="5" )
+declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" )
+./assoc10.sub: line 1: declare: a: cannot convert indexed to associative array
+f: declare -a a
+./assoc10.sub: line 4: declare: a: cannot convert associative to indexed array
+f: declare -A a
+
+f: declare -a a
+main: declare -- a="7"
+f: declare -A a
+main: declare -- a="42"
index 32536b8d2ab7b3cc1d5ebde7a76de1df2e359096..84326c9c66a634919522025786fdf0eae8b2089a 100644 (file)
@@ -107,7 +107,7 @@ unset flix wheat
 
 # TEST - index expansion: no word splitting or globbing
 typeset -A wheat
-cd /tmp
+cd ${TMPDIR:=/tmp}
 touch '[sfiri]'
 wheat=([s*]=6 [foo bar]=flix )
 
@@ -174,6 +174,13 @@ T='([a]=1)'
 echo "${T[@]}"
 unset T
 
+# peculiar ksh93 semantics for unsubscripted assoc variable reference
+declare -A T
+T[0]='zero'
+if [ "$T" != "${T[0]}" ]; then
+       echo 'assoc.tests: $T and ${T[0]} mismatch'
+fi
+
 ${THIS_SH} ./assoc1.sub
 
 ${THIS_SH} ./assoc2.sub
@@ -207,3 +214,8 @@ readonly -A assoc
 declare -p assoc
 
 ${THIS_SH} ./assoc8.sub
+
+# new shopt option to prevent multiple expansion of assoc array subscripts
+${THIS_SH} ./assoc9.sub
+
+${THIS_SH} ./assoc10.sub
diff --git a/tests/assoc10.sub b/tests/assoc10.sub
new file mode 100644 (file)
index 0000000..9eef2ca
--- /dev/null
@@ -0,0 +1,17 @@
+f() { declare -a a; declare -A a; echo -n "$FUNCNAME: " ; declare -p a; }
+f
+
+f() { declare -A a; declare -a a; echo -n "$FUNCNAME: " ; declare -p a; }
+f
+
+echo 
+
+f() { declare -a a; echo -n "$FUNCNAME: " ; declare -p a; }
+a=7
+f
+echo -n 'main: '; declare -p a
+
+f() { declare -A a; echo -n "$FUNCNAME: " ; declare -p a; }
+a=42
+f
+echo -n 'main: '; declare -p a
diff --git a/tests/assoc9.sub b/tests/assoc9.sub
new file mode 100644 (file)
index 0000000..c5fbe45
--- /dev/null
@@ -0,0 +1,110 @@
+typeset -A a=( [\\]= [\"]= [\)]= ) b
+for x in "${!a[@]}"; do b[$x]=; done
+b+=([\`]= [\]]=)
+typeset -p b
+for x in "${!a[@]}"; do
+  unset -v 'b[$x]'
+done
+typeset -p b
+
+unset -v a b
+
+loaddict()
+{
+    dict['"']=1
+    dict['`']=2
+    dict["'"]=3
+    dict['\']=4
+    declare -p dict
+}
+
+del()
+{
+       unset -v dict["$1"];
+}
+
+declare -A dict
+loaddict
+for k in "${!dict[@]}"; do del "$k"; done 
+declare -p dict
+
+unset 'dict[@]'
+
+shopt -s assoc_expand_once
+declare -A dict
+loaddict
+for k in "${!dict[@]}"; do del "$k"; done 
+declare -p dict
+
+unset a b dict
+
+typeset -A a
+b="80's"
+
+((++a[$b]))
+
+((++a["$b"]))
+[[ $((++a[$b])) ]]
+[[ $((++a["$b"])) ]]
+echo ${a["$b"]}
+echo ${a[$b]}
+
+let "++a[$b]"
+
+echo 'a[$b]=' "${a[$b]}"
+
+unset a b
+
+declare -A a
+b="80's"
+
+: ${a[$b]:='Depeche Mode'}
+
+declare -p a
+
+unset a b
+shopt -u assoc_expand_once
+
+typeset -A a
+b="80's"
+
+read a[$b] <<<"Depeche Mode"
+typeset -p a
+
+shopt -s assoc_expand_once
+read a[$b] <<<"Depeche Mode"
+typeset -p a
+
+unset a
+shopt -u assoc_expand_once
+
+typeset -A a
+
+printf -v a[$b] "%s" "Depeche Mode"
+typeset -p a
+
+shopt -s assoc_expand_once
+
+printf -v a[$b] "%s" "Depeche Mode"
+typeset -p a
+
+unset a
+
+declare -A a
+x='$(date >&2)'
+a[$x]=5
+
+shopt -s assoc_expand_once
+echo $((1+a[$x]))
+echo $((1+a[\$x]))
+echo "1+${a[$x]}"
+
+declare -p a
+
+shopt -s assoc_expand_once
+declare -A myarray
+
+declare myarray["foo[bar"]=bleh
+myarray["foo"]=bleh
+
+declare -p myarray
index a17234b9f28f08c97eb0ca6c32c3b85313f2ae9d..d2055c9db60c3623241446b581d33b61b5469b5e 100644 (file)
@@ -25,3 +25,38 @@ ok 8
 ok 9
 mysterious 1
 mysterious 2
+argv[1] = <\a\b\c\^A\d\e\f>
+argv[1] = <\a\b\c\^A\d\e\f>
+argv[1] = <abc^Adef>
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+--- testing: soh
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+--- testing: stx
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+--- testing: del
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
+ok1ok2ok3ok4ok5
index 7ab316a7e7e010f3d48d7a6501448794b22dd25a..fe9c05a720db9b4842988dc63b245de81c477deb 100644 (file)
@@ -51,3 +51,6 @@ case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac
 
 # tests of quote removal and pattern matching
 ${THIS_SH} ./case1.sub
+${THIS_SH} ./case2.sub
+${THIS_SH} ./case3.sub
+${THIS_SH} ./case4.sub
diff --git a/tests/case2.sub b/tests/case2.sub
new file mode 100644 (file)
index 0000000..085f888
--- /dev/null
@@ -0,0 +1,52 @@
+x=$'\\a\\b\\c\\\001\\d\\e\\f'
+y='\a\b\c\\ 1\d\e\f'
+z=$'abc\001def'
+
+recho "$x"
+recho "$y"
+recho "$z"
+
+case $'abc\001def' in
+$x) echo ok 1 ;;
+*) echo oops 1;;
+esac
+
+case $z in
+$x) echo ok 2 ;;
+*) echo oops 2;;
+esac
+
+case $'abc\001def' in
+$y) echo ok 3 ;;
+*) echo oops 3;;
+esac
+
+case $z in
+$y) echo ok 4 ;;
+*) echo oops 4;;
+esac
+
+# no backslash before \001
+x=$'\\a\\b\\c\001\\d\\e\\f'
+y='\a\b\c\ 1\d\e\f'
+
+case $'abc\001def' in
+$x) echo ok 5 ;;
+*) echo oops 5;;
+esac
+
+case $z in
+$x) echo ok 6 ;;
+*) echo oops 6;;
+esac
+
+case $'abc\001def' in
+$y) echo ok 7 ;;
+*) echo oops 7;;
+esac
+
+case $z in
+$y) echo ok 8 ;;
+*) echo oops 8;;
+esac
+
diff --git a/tests/case3.sub b/tests/case3.sub
new file mode 100644 (file)
index 0000000..77526c3
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+testmatch() {
+       case $1 in
+       ( $2 ) printf ok1 ;;
+       ( * ) printf fail1 ;;
+       esac
+       case $1,$2 in
+       ( $2,"$2" ) printf ok2 ;;
+       ( * ) printf fail2 ;;
+       esac
+       case $1, in
+       ( $2, ) printf ok3 ;;
+       ( * ) printf fail3 ;;
+       esac
+       case ,$2 in
+       ( ,"$2" ) printf ok4 ;;
+       ( * ) printf fail4 ;;
+       esac
+       case "$1,$2" in
+       ( $2,"$2" ) printf ok5 ;;
+       ( * ) printf fail5 ;;
+       esac
+       echo
+}
+
+for c in $'\1' $'\2' $'\177'; do
+       echo -n "--- testing: "
+       echo "$c" | od -t a | awk 'NR==1 { print $2 } '
+       testmatch "${c}" "\\${c}"
+       testmatch "${c}x" "\\${c}\\x"  # bash-git fails case 2 and 5 for $'\1'
+       testmatch "${c}x" "${c}\\x"
+       testmatch "${c}x" "${c}x"
+       testmatch "${c}x" "\\${c}x"
+       testmatch "x${c}" "\\x\\${c}"
+       testmatch "x${c}" "x\\${c}"
+done
+
+match() { case $1 in ( $2 ) ;; ( * ) return 1 ;; esac; } 
+match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 6
diff --git a/tests/case4.sub b/tests/case4.sub
new file mode 100644 (file)
index 0000000..56f88ba
--- /dev/null
@@ -0,0 +1,25 @@
+shopt -s -o posix
+two="t w  o"
+ten="t   e
+n"
+set 1 "$two" 3 4 5 6 7 8 9 "$ten"
+
+unset IFS
+expvar="$*"
+case $* in
+"$expvar") ;;
+*) echo "failed 1" ;;
+esac
+
+case $* in
+$expvar) ;;
+*) echo "failed 2" ;;
+esac
+
+alias foo='oneword'
+foo_word='foo'
+case "$foo_word"
+in
+        foo) ;;
+       *) echo failed 3;;
+esac
index ca1de49a9200c2393dbea1d27b68c0777a60bfb7..a5840171d3b4500cd50cc4484c1b7a49e884c479 100644 (file)
@@ -13,10 +13,10 @@ aCKNOWLEDGEMENT oENOPHILE
 aCKNoWLeDGeMeNT oeNoPHiLe
 aCKNOWLEDGEMENT oENOPHILE
 acknowledgement oenophile
-Acknowledgement Oenophile
-ACKNOWLEDGEMENT OENOPHILE
-Acknowledgement Oenophile
-AcknOwlEdgEmEnt OEnOphIlE
+Oenophile Acknowledgement
+OENOPHILE ACKNOWLEDGEMENT
+Oenophile Acknowledgement
+OEnOphIlE AcknOwlEdgEmEnt
 oENOPHILE aCKNOWLEDGEMENT
 oenophile acknowledgement
 oENOPHILE aCKNOWLEDGEMENT
index 0650ca987fc04822673d81d011597d894e8b09c9..d53e6ebc90c431ad7c17a213560b0f87f178c807 100644 (file)
@@ -1,3 +1,4 @@
+: ${HOME:=/}
 
 # works right
 echo ab$(echo mnop)yz
index 09518aae85e3f838ee61fd0d0a0f9622fe04aaed..71bb205a83d63702ee9b9aa2a805f317bb3dfa80 100644 (file)
@@ -28,6 +28,7 @@ ok 4
 ok 5
 ok 6
 xyz
+ok 7
 \/tmp\/foo\/bar
 /tmp/foo/bar
 /tmp/foo/bar
@@ -48,3 +49,9 @@ b
 c
 1
 2
+d \
+g
+d \
+g
+d \
+g
index 4defc31eba3232d7c27b8c6fa9a3c32e122a1b7a..ed56007c03876316e8f3aa5e9ecc6e9ad64d58a2 100644 (file)
@@ -44,6 +44,19 @@ bar')
 # long-standing parse error in all versions up through bash-4.3
 echo ${foo:-$(echo a{b,c})} >/dev/null
 
+# parsing problem based on recursively calling bison parser through bash-4.4
+for (( INDEX=0; INDEX<$((10-$(echo length $V_NAME))); INDEX++ ))
+do
+       :
+done
+
+# problem with four-character words followed by a metachar through bash-4.4
+comsub_foo_1()
+{
+  echo $(while true; do case $HOME in /*) echo abs ;; esac; done)
+}
+
 ${THIS_SH} ./comsub1.sub
 ${THIS_SH} ./comsub2.sub
 ${THIS_SH} ./comsub3.sub
+${THIS_SH} ./comsub4.sub
index 216e03f1f74e4c5d9861e0af380a57a6b653a7f2..b1af263be00563f5b9aeefd221c0cf2e85fc93f7 100644 (file)
@@ -52,3 +52,9 @@ echo $( # we just took and pasted in some
 # command substitution
 echo xyz
 )
+
+# problem with parse_comsub through bash-4.4
+case $(echo $$'x\nx') in
+x*)    echo bad 7;;
+*)     echo ok 7;;
+esac
index a2d58ad01580bd28e0350389741dc09b66da9168..d60ae6a0e7380b3c037996741492f4ce111ac761 100644 (file)
@@ -3,6 +3,6 @@ qpath='\/tmp\/foo\/bar'
 echo "$qpath"
 
 # it's crazy that all three of these produce the same result
-echo ${qpath//\\/}
-echo ${qpath//"`echo \\`"/}
-echo ${qpath//`echo "\\\\\\\\"`/}
+printf "%s\n" ${qpath//\\/}
+printf "%s\n" ${qpath//"`printf '%s' \\`"/}
+printf "%s\n" ${qpath//`printf '%s' "\\\\\\\\"`/}
diff --git a/tests/comsub4.sub b/tests/comsub4.sub
new file mode 100644 (file)
index 0000000..461a9ad
--- /dev/null
@@ -0,0 +1,27 @@
+x=$(cat <<'EOT'
+d \
+g
+EOT
+)
+
+echo "$x"
+unset x
+
+x=$( cat <<\EOT\
+4
+d \
+g
+EOT4
+)
+
+echo "$x"
+unset x
+
+x=$( cat <<\EOT
+d \
+g
+EOT
+)
+
+echo "$x"
+
index 71abfb70d201e9bad24465ef2c03c7f5f20f2748..2bea63845cb1d113b0303aa56562e62393061650 100644 (file)
@@ -28,3 +28,5 @@
 [[ ']' =~ [']'] ]] && echo ok 11
 
 [[ a =~ ['a]'] ]] || echo ok 12
+
+[[ "\\" =~ [^]"."] ]] || echo unexpected
index 8e4548acb5e1c218a8b1d1dcbe8d638b73442782..2cef929312171948923112d7533695a8a677e3f6 100755 (executable)
@@ -180,6 +180,9 @@ echo ${BASH_REMATCH[@]}
 if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi
 if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi
 
+match() { [[ $1 == $2 ]]; }
+match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 44
+
 foo=""
 [[ bar == *"${foo,,}"* ]] && echo ok 1
 [[ bar == *${foo,,}* ]] && echo ok 2
index d347eb74902b139b07f381b686040fc356342b27..5066f7c5def8532b48d330f4a0d149d90c61f3b8 100644 (file)
@@ -30,8 +30,8 @@ read LINE <&${REFLECT[0]}
 echo $LINE
 
 { sleep 1; kill $REFLECT_PID; } &
-wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?"
-grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || {
+wait $REFLECT_PID >$TMPOUT 2>&1 || { status=$? ; echo "coproc.tests: REFLECT: status $status" ; }
+[[ $status < 128 || $status == 143 ]] || {
        echo "coproc.tests: wait for REFLECT failed" >&2
 }
 rm -f $TMPOUT
index 2d2a1b66edda90c4264c76fef8362ddc332d9d22..0f713dc3926f37e21d385ed85e13ed9f3e7f79ff 100755 (executable)
@@ -6,6 +6,23 @@ recho "$*"
 recho $@
 recho $*
 
+foo=$*
+foo=$@
+
+foo="$*"
+foo="$@"
+
+unset -v bar
+
+foo=${bar:-$*}
+foo=${bar:-$@}
+
+foo=${bar:-"$*"}
+foo=${bar:-"$@"}
+
+foo=${!*}
+foo=${!@}
+
 set a b
 
 recho "$*"
@@ -271,4 +288,18 @@ ${THIS_SH} ./dollar-star6.sub
 # problem through bash-4.2
 ${THIS_SH} ./dollar-star7.sub
 
+# tests for expansions of $* (unquoted) when IFS is null and word splitting is
+# not going to be performed.
+# problem through bash-4.4 in some parameter expansion contexts
+${THIS_SH} ./dollar-star8.sub
+
+# tests for expansions of "$@" when there are no positional parameter or when
+# $1 == '' and the expansion is preceded by something that results in a quoted
+# null string
+${THIS_SH} ./dollar-at7.sub
+
+# tests for expansions of $* when in an assignment context (no splitting) and
+# IFS is null
+${THIS_SH} ./dollar-star9.sub
+
 exit 0
index 690eb677b9f4b7f90787eb6b28c7f00382fcdfa4..be2892ddcc7168443ebcdc271858675736b4a11d 100644 (file)
@@ -33,10 +33,12 @@ unset a
 unset IFS
 set a b "c d"
 printf '<%s>' $* ; echo
+printf '<%s>' ${q-$*} ; echo
 
 IFS=
 set a b "c d"
 printf '<%s>' $* ; echo
+printf '<%s>' ${q-$*} ; echo
 
 IFS=:
 set a b
diff --git a/tests/dollar-at7.sub b/tests/dollar-at7.sub
new file mode 100644 (file)
index 0000000..311a6fe
--- /dev/null
@@ -0,0 +1,46 @@
+set -- ''
+
+recho 1 ''"$@"
+recho 2 """$@"
+
+recho 3 "$@""$@"
+recho 4 "$x""$@"
+
+set --
+
+echo -----
+recho 1 ''"$@"
+recho 2 """$@"
+
+recho 3 "$@""$@"
+recho 4 "$x""$@"
+
+set -- X
+
+echo ------
+recho 1 ''"${@/*}"
+recho 2 """${@/*}"
+
+recho 3 "$x""${@/*}"
+
+recho 4 ''"${@#X}"
+recho 5 """${@#X}"
+
+recho 6 "$x""${@#X}"
+
+set --
+
+echo -----
+recho 1 ''"${@/*}"
+recho 2 """${@/*}"
+
+recho 3 "$x""${@/*}"
+
+recho 4 ''"${@#X}"
+recho 5 """${@#X}"
+
+recho 6 "$x""${@#X}"
+
+echo -----
+recho 1 "$novar${*}$(echo)"
+recho 2 ''"$novar${@}$(echo)"
diff --git a/tests/dollar-star8.sub b/tests/dollar-star8.sub
new file mode 100644 (file)
index 0000000..72ba108
--- /dev/null
@@ -0,0 +1,21 @@
+IFS=
+set "abc" "def ghi" "jkl"
+
+set ${1+$*}
+printf '<%s>\n' "$#" "$@"
+
+set "abc" "def ghi" "jkl"
+set $*
+printf '<%s>\n' "$#" "$@"
+
+printf '<%s>\n' $* ;
+printf '<%s>\n' ${q:-$*} 
+printf '<%s>\n' "${q:-$*}"
+
+IFS=:
+printf '<%s>\n' $* ;
+printf '<%s>\n' ${q:-$*} 
+printf '<%s>\n' "${q:-$*}"
+
+unset -v IFS
+printf '<%s>\n' $* $@
diff --git a/tests/dollar-star9.sub b/tests/dollar-star9.sub
new file mode 100644 (file)
index 0000000..26d0ed2
--- /dev/null
@@ -0,0 +1,46 @@
+set -- 1 2
+
+IFS=
+
+a=$* b=${*}
+c=${*/} d=${*#} e=${*%} f=${*:1}
+printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f"; echo
+
+unset a b c d e f
+: ${a=$*} ${b=${*}} ${c=${*/}}
+: ${d=${*#}} ${e=${*%}} ${f=${*:1}}
+printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f" ; echo
+
+unset f g
+f=${*,,} g=${*@Q}
+printf '<%s>' "$f" "$g" ; echo
+
+unset -v a b c d e f g
+unset var
+
+# resetting IFS here
+
+IFS=$' \t\n'
+
+printf '%s\n' "${*:1}"
+var=${*:1}; printf '%s\n' "$var"
+var="${*:1}"; printf '%s\n' "$var"
+
+unset var
+recho ${var-${*}}
+recho ${var-${*:1}}
+recho "${var-${*:1}}"
+recho ${var-"${*:1}"}
+
+unset var
+recho ${var=${*}}
+printf 'var=%s\n' "$var"
+unset var
+recho ${var=${*:1}}
+printf 'var=%s\n' "$var"
+
+a=${*:1}
+recho "$a"
+
+: ${b=${*:1}}
+recho "$b"
index 1e48c24ee25bf836b9a6edbd39022aac5b8de82f..d72361f9d185865b3a74c54e265fb5f1415497e7 100644 (file)
@@ -177,6 +177,8 @@ ab
 a b
 a b
 <a><b><c><d>
+<a><b><c><d>
+<a><b><c d>
 <a><b><c d>
 <a><b>
 <a:b>
@@ -478,3 +480,100 @@ argv[2] = <b>
 argv[3] = <c>
 argv[4] = <d>
 argv[1] = <a b c d>
+<3>
+<abc>
+<def ghi>
+<jkl>
+<3>
+<abc>
+<def ghi>
+<jkl>
+<abc>
+<def ghi>
+<jkl>
+<abc>
+<def ghi>
+<jkl>
+<abcdef ghijkl>
+<abc>
+<def ghi>
+<jkl>
+<abc>
+<def ghi>
+<jkl>
+<abc:def ghi:jkl>
+<abc>
+<def>
+<ghi>
+<jkl>
+<abc>
+<def>
+<ghi>
+<jkl>
+argv[1] = <1>
+argv[2] = <>
+argv[1] = <2>
+argv[2] = <>
+argv[1] = <3>
+argv[2] = <>
+argv[1] = <4>
+argv[2] = <>
+-----
+argv[1] = <1>
+argv[2] = <>
+argv[1] = <2>
+argv[2] = <>
+argv[1] = <3>
+argv[1] = <4>
+argv[2] = <>
+------
+argv[1] = <1>
+argv[2] = <>
+argv[1] = <2>
+argv[2] = <>
+argv[1] = <3>
+argv[2] = <>
+argv[1] = <4>
+argv[2] = <>
+argv[1] = <5>
+argv[2] = <>
+argv[1] = <6>
+argv[2] = <>
+-----
+argv[1] = <1>
+argv[2] = <>
+argv[1] = <2>
+argv[2] = <>
+argv[1] = <3>
+argv[2] = <>
+argv[1] = <4>
+argv[2] = <>
+argv[1] = <5>
+argv[2] = <>
+argv[1] = <6>
+argv[2] = <>
+-----
+argv[1] = <1>
+argv[2] = <>
+argv[1] = <2>
+argv[2] = <>
+<12><12><12><12><12><12>
+<12><12><12><12><12><12>
+<12><'1''2'>
+1 2
+1 2
+1 2
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+var=1 2
+argv[1] = <1>
+argv[2] = <2>
+var=1 2
+argv[1] = <1 2>
+argv[1] = <1 2>
index d902bffb46d1b95760871c615efca34afc32e33d..3aa105b3d9b2082e5ea9093d6d4081a118bf9ae3 100644 (file)
@@ -1,3 +1,4 @@
+wdir=$PWD
 cd /
 
 echo expect '~1'
@@ -31,3 +32,5 @@ dirs -v -1
 echo these lines should be the same
 dirs -0
 echo ~-0 ${DIRSTACK[NDIRS]}
+
+cd "$wdir"
diff --git a/tests/dynvar.right b/tests/dynvar.right
new file mode 100644 (file)
index 0000000..e1344c6
--- /dev/null
@@ -0,0 +1,7 @@
+BASHPID ok
+BASH_ARGV0 ok
+BASH_ARGV0 ok
+SECONDS ok
+EPOCHSECONDS ok
+EPOCHREALTIME ok
+echo $BASH_COMMAND
diff --git a/tests/dynvar.tests b/tests/dynvar.tests
new file mode 100644 (file)
index 0000000..a01f5ed
--- /dev/null
@@ -0,0 +1,77 @@
+# specvar -- test some of the dynamic variables
+
+# BASHPID
+pid=$$
+bpid=$BASHPID
+subpid=$( (echo $BASHPID) )
+
+if [ "$bpid" -ne "$subpid" ]; then echo BASHPID ok; fi
+
+# BASH_ARGV0
+
+BASH_ARGV0=hello
+case $0 in
+hello) echo BASH_ARGV0 ok ;;
+*)     echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;;
+esac
+
+setarg0()
+{
+       BASH_ARGV0="$1"
+}
+
+setarg0 arg0
+case $0 in
+arg0)  echo BASH_ARGV0 ok ;;
+*)     echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;;
+esac
+
+# SECONDS
+before=$SECONDS
+sleep 2
+after=$SECONDS
+
+if (( $after > $before )); then echo SECONDS ok; fi
+unset before after
+
+# EPOCHSECONDS
+
+# not exact, but should work
+
+now1=$(perl -e 'print time')
+now2=$EPOCHSECONDS
+
+case $now1 in
+$now2) echo EPOCHSECONDS ok ;;
+*)     echo "current time via perl and EPOCHSECONDS possible mismatch|$now1|$now2" >&2 ;;
+esac
+unset now1 now2
+
+LC_ALL=C               # force decimal point to `.'
+now1=$EPOCHREALTIME
+now2=$EPOCHREALTIME
+sec1=${now1%%.*}
+sec2=${now2%%.*}
+
+msec1=${now1##*.}
+msec2=${now2##*.}
+# cut off leading zeros
+shopt -s extglob
+msec1=${msec1##*(0)}
+msec2=${msec2##*(0)}
+
+dsec=$(( $sec2 - $sec1 ))
+dmsec=$(( $msec2 - $msec1 ))
+if (( $dmsec < 0 )); then
+       dmsec=$(( dmsec + 1000000 ))
+       dsec=$(( desc - 1 ))
+fi
+
+# not a real test, but ok for a start
+if (( $dmsec < 1000000 )); then echo EPOCHREALTIME ok; fi
+
+${THIS_SH} -c 'echo $BASH_COMMAND'
+
+# FUNCNAME tested in func.tests
+# RANDOM tested in varenv.sh
+# LINENO tested in dbg-support
index 362855e3b383dbfb6bc49eb02c04393483101a35..83338ae03deb214a355605634fd64f68ce095cf3 100644 (file)
@@ -120,17 +120,79 @@ after readonly assignment
 ./errors4.sub: line 7: var: readonly variable
 ./errors5.sub: line 6: array: unbound variable
 ./errors5.sub: line 7: array: unbound variable
-./errors5.sub: line 10: 7: unbound variable
+./errors5.sub: line 8: array[7]: unbound variable
 ./errors5.sub: line 11: 7: unbound variable
+./errors5.sub: line 12: 7: unbound variable
 after 1: 1
 after 2: 1
 after 3: 1
-array after 1: 1
-array after 2: 1
-./errors6.sub: line 18: ${-3}: bad substitution
-./errors6.sub: line 19: -3: bad substitution
+4
+array after 1: 0
+
+array after 2: 0
+./errors6.sub: uvar: parameter not set
+./errors6.sub: uvar: parameter null or not set
+
+./errors6.sub: uvar: parameter null or not set
+./errors6.sub: line 25: ${-3:-${-3}}: bad substitution
+./errors6.sub: line 26: ${-3}: bad substitution
+./errors6.sub: line 27: -3: invalid variable name
 after indir: 1
-./errors6.sub: line 18: ${-3}: bad substitution
-./errors6.sub: line 19: -3: bad substitution
+./errors6.sub: line 30: -3: invalid variable name
+
+unset
+./errors6.sub: line 37: var: invalid indirect expansion
+./errors6.sub: line 38: var: invalid indirect expansion
+./errors6.sub: line 41: invalid-ident: invalid variable name
+./errors6.sub: line 42: invalid-ident: invalid variable name
+./errors6.sub: line 43: invalid-ident: invalid variable name
+4
+array after 1: 0
+
+array after 2: 0
+./errors6.sub: uvar: parameter not set
+./errors6.sub: uvar: parameter null or not set
+
+./errors6.sub: uvar: parameter null or not set
+./errors6.sub: line 25: ${-3:-${-3}}: bad substitution
+./errors6.sub: line 26: ${-3}: bad substitution
+./errors6.sub: line 27: -3: invalid variable name
 after indir: 1
-./errors.tests: line 278: `!!': not a valid identifier
+./errors6.sub: line 30: -3: invalid variable name
+
+unset
+./errors6.sub: line 37: var: invalid indirect expansion
+./errors6.sub: line 38: var: invalid indirect expansion
+./errors6.sub: line 41: invalid-ident: invalid variable name
+./errors6.sub: line 42: invalid-ident: invalid variable name
+./errors6.sub: line 43: invalid-ident: invalid variable name
+./errors7.sub: line 8: x: readonly variable
+./errors7.sub: line 8: notthere: command not found
+after no such command: 127
+./errors7.sub: line 10: x: readonly variable
+echo builtin
+after non-special builtin: 0
+./errors7.sub: line 12: x: readonly variable
+after special builtin: 0
+./errors7.sub: line 14: x: readonly variable
+./errors7.sub: line 8: x: readonly variable
+./errors7.sub: line 8: notthere: command not found
+after no such command: 127
+./errors7.sub: line 10: x: readonly variable
+echo builtin
+after non-special builtin: 0
+./errors7.sub: line 12: x: readonly variable
+./errors7.sub: line 14: x: readonly variable
+./errors8.sub: eval: line 7: syntax error: unexpected end of file
+ok 1
+./errors8.sub: line 8: v: readonly variable
+ok 2
+./errors8.sub: line 9: v: readonly variable
+ok 3
+./errors8.sub: line 11: shift: 12: shift count out of range
+ok 4
+./errors8.sub: line 13: return: can only `return' from a function or sourced script
+ok 5
+./errors8.sub: line 14: set: notanoption: invalid option name
+ok 6
+./errors.tests: line 283: `!!': not a valid identifier
index ff542f7836b36faa10803598696e68c61a80d0a4..e1554cd10e82530fa25ab737f31c1a799185030c 100644 (file)
@@ -270,6 +270,11 @@ ${THIS_SH} ./errors5.sub
 ${THIS_SH} ./errors6.sub
 THIS_SH="${THIS_SH} -o posix" ${THIS_SH} ./errors6.sub
 
+${THIS_SH} ./errors7.sub
+${THIS_SH} -o posix ./errors7.sub
+
+${THIS_SH} ./errors8.sub
+
 # this must be last!
 # in posix mode, a function name must be a valid identifier
 # this can't go in posix2.tests, since it causes the shell to exit
index 7d9068b766f1e5c7c38c8de50a6fb991cfac8a37..112b2a1132fe00e248317d9d769b93ecfa6e195a 100644 (file)
@@ -5,6 +5,7 @@ set -u
 
 ( echo ${#array} )
 ( echo ${array} )
+( echo ${array[7]} )
 
 set -- 1 2 3
 ( echo ${#7} )
index 3c05625a4173fa9a495d37747664ddfe2116af9e..b80580e73b40116750b2ed1fb847f14256b25d1e 100644 (file)
@@ -15,6 +15,29 @@ echo array after 1: $?'  2>/dev/null
 ${THIS_SH} -c 'typeset -A v ; v["0"]=one ; echo ${v[   ]}
 echo array after 2: $?'  2>/dev/null
 
+${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub
+${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub
+export uvar=
+${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub
+${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub
+unset uvar
+
+echo "${-3:-${-3}}"
 echo ${-3}
 x=-3; echo ${!x}
 echo after indir: $?
+
+function ivar() { echo -n "${!1:-${1}}"; }
+ivar -3
+
+foo=bar
+echo ${!foo}
+echo ${!foo:-unset}
+
+echo ${!var:-unset}
+echo ${!var+unset}
+
+foo=invalid-ident
+echo ${!foo}
+echo ${!foo:-unset}
+echo ${!foo+unset}
diff --git a/tests/errors7.sub b/tests/errors7.sub
new file mode 100644 (file)
index 0000000..067867a
--- /dev/null
@@ -0,0 +1,15 @@
+: ${THIS_SH:=./bash}
+readonly x=4
+
+# in posix mode, these are all variable assignment errors, so strict conformance
+# implies that we exit after any of them. ksh93 doesn't do that. we more-or-less
+# emulate the ksh93 behavior
+
+x=8 notthere
+echo after no such command: $?
+x=8 echo echo builtin
+echo after non-special builtin: $?
+( x=8 : nosuchdir
+echo after special builtin: $? )
+( x=8 $nocmd 
+echo after assignment error: $? )
diff --git a/tests/errors8.sub b/tests/errors8.sub
new file mode 100644 (file)
index 0000000..b65e1ab
--- /dev/null
@@ -0,0 +1,14 @@
+# the start of a set of tests for command keeping special builtins from
+# exiting the shell on failure
+set -o posix
+readonly v
+
+command eval '( ' || echo ok 1
+
+command export v=foo || echo ok 2
+command readonly v=foo || echo ok 3
+
+command shift 12 || echo ok 4
+
+command return 16 || echo ok 5
+command set -o notanoption || echo ok 6
index 81224fa554a8b6f38593e88543747eb4b2c81034..6075cc86ce2c9832d6882d35cb04cf5944c09ada 100644 (file)
@@ -84,9 +84,9 @@ after
 exit code: 1
 exit code: 1
 exit code: 1
-exit code: 127
-exit code: 127
-exit code: 127
+exit code: 1
+exit code: 1
+exit code: 1
 a
 b
 c
index 4bd6121b3f8b858d5e616378d3d43030e379c56b..79bcfc77ce9d84cecf826c9671c19985c1ed826c 100644 (file)
@@ -1,9 +1,11 @@
 : ${TMPDIR:=/var/tmp}
 TMPFILE=$TMPDIR/exitcode
+trap 'rm -f $TMPFILE' 0
 
 rm -f $TMPFILE
 set -e
-exit_handler() { echo "exit code: $?" ; touch $TMPFILE; }
+# we normalize the exit code to accommodate false returning 255 on Solaris
+exit_handler() { echo "exit code: $(( $? != 0 ))" ; touch $TMPFILE; }
 false() { ! :; }
 notfound() { nosuchcommand ; }
 syntaxerror() { !:; }
index ea2fd06688b9d25c276b4fbb7b9dec2e7bfbba45..0267505c4318037f39e7d0dd1d40809660e3a4c0 100644 (file)
@@ -18,3 +18,6 @@ chmod 755 testb/foo
 PATH=$TMPDIR/testa:$TMPDIR/testb $THIS_SH -c foo
 
 rm -rf testa testb
+
+cd $OLDPWD
+exit 0
index 3415ae3c67548010a24f3122db9819f9b401f43a..c1819de799968d7ed2c3174509f3810c1515b48d 100644 (file)
@@ -59,10 +59,10 @@ echo $?
 echo $?
 
 # kill two birds with one test -- test out the BASH_ENV code
-echo echo this is bashenv > /tmp/bashenv
-export BASH_ENV=/tmp/bashenv
+echo echo this is bashenv > $TMPDIR/bashenv
+export BASH_ENV=$TMPDIR/bashenv
 ${THIS_SH} ./exec3.sub
-rm -f /tmp/bashenv
+rm -f $TMPDIR/bashenv
 unset BASH_ENV
 
 # we're resetting the $PATH to empty, so this should be last
@@ -108,7 +108,7 @@ ${THIS_SH} ./exec6.sub
 # checks for properly deciding what constitutes an executable file
 ${THIS_SH} ./exec7.sub
 
-${THIS_SH} -i ./exec8.sub
+${THIS_SH} -i ${PWD}/exec8.sub
 
 ${THIS_SH} ./exec9.sub
 
index 96617397d9db4fe3abab0509386ab063b0074740..a2dc86f907b01e34ac7ca4df8ba75b0c12836897 100644 (file)
@@ -216,6 +216,12 @@ argv[2] = <^C>
 argv[3] = <^C>
 argv[4] = <^C>
 argv[1] = <^A>
+argv[1] = <XY>
+argv[2] = <YX>
+argv[1] = <XY^AYX>
+argv[1] = <XY>
+argv[2] = <Y>
+argv[1] = <XY^AY>
 argv[1] = <x^Ay^?z>
 argv[1] = <x^Ay^?z>
 declare -- var="x\ 1y\7fz"
@@ -291,7 +297,9 @@ var=abc:def ghi:jkl
 abcdef ghijkl
 abcdef ghijkl
 abcdef ghijkl
-abcdef ghijkl
+abc
+def ghi
+jkl
 abcdef ghijkl
 abcdef ghijkl
 abcdef ghijkl
@@ -332,3 +340,68 @@ jkl
 []
 [foo]
 []
+< A >< B >< A >< B >
+< A >< B >< A >< B >
+< A >< B >< a >< b >
+< A >< B >< A >< B >
+< A >< B ><' A '><' B '>
+-----
+< A >< B >< A >< B >
+< A >< B >< A >< B >
+< A >< B >< a >< b >
+< A >< B >< A >< B >
+< A >< B ><' A '><' B '>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <a b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a b>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+argv[1] = <file.o>
+argv[1] = <posix>
+argv[1] = </src/cmd>
+argv[1] = <three>
+argv[1] = </one/two/three>
+abcdefg
+abcdefg
+abcdefg
+abcdefg
+cdefg
+abcdefg
+abcde
+abcdefg
index b446d6372a2f74085b54f14783acdacd2bbc5bc9..6e364f9cafb8527fd02b3a9fa6d62ba8c1103588 100644 (file)
@@ -405,3 +405,6 @@ ${THIS_SH} ./exp6.sub
 ${THIS_SH} ./exp7.sub
 ${THIS_SH} ./exp8.sub
 ${THIS_SH} ./exp9.sub
+${THIS_SH} ./exp10.sub
+${THIS_SH} ./exp11.sub
+${THIS_SH} ./exp12.sub
diff --git a/tests/exp10.sub b/tests/exp10.sub
new file mode 100644 (file)
index 0000000..6592bab
--- /dev/null
@@ -0,0 +1,26 @@
+set -- ' A ' ' B '
+IFS=
+
+printf '<%s>' ${*} ${*##}
+echo
+printf '<%s>' ${*} ${*/}
+echo
+printf '<%s>' ${*} ${*,,}
+echo
+printf '<%s>' ${*} ${*:1:2}
+echo
+printf '<%s>' ${*} ${*@Q}
+echo
+
+echo -----
+
+printf '<%s>' ${@} ${@##}
+echo
+printf '<%s>' ${@} ${@/}
+echo
+printf '<%s>' ${@} ${@,,}
+echo
+printf '<%s>' ${@} ${@:1:2}
+echo
+printf '<%s>' ${@} ${@@Q}
+echo
diff --git a/tests/exp11.sub b/tests/exp11.sub
new file mode 100644 (file)
index 0000000..cae7b19
--- /dev/null
@@ -0,0 +1,92 @@
+set -- '1 2'
+
+unset var
+recho ${var-${*:1}}
+
+unset var
+recho ${var=$*}
+
+unset var
+recho ${var=${*:1}}
+recho "$var"
+
+# posix interp 221
+unset var
+recho ${var:-a\ b}
+
+recho ${var:=a\ b}
+recho "$var"
+
+set -- 1 2
+IFS=
+
+unset a b c
+recho $*
+recho ${a-$*}
+recho ${b-${*/}}
+recho ${c=${*/}}
+recho "$c"
+recho ${b-${*,,}}
+recho ${d-${*,,}}
+
+unset -v a b c
+IFS=$' \t\n'
+
+set -- ' '
+A=(' ')
+
+IFS=
+unset var
+var=${*@E}
+recho "$var"
+
+unset var
+var=${A[*]@E}
+recho "$var"
+
+unset var
+var=${@@E}
+recho "$var"
+
+unset var
+var=${A[@]@E}
+recho "$var"
+
+unset novar
+recho ${novar-${A[*]@E}}
+
+unset -v var novar
+IFS=$' \t\n'
+
+set -- 1 2
+A=( 1 2 )
+IFS=
+
+a=$* 
+recho "$a"
+b=${*@E}
+recho "$b"
+
+unset a b
+a=${A[*]}
+recho "$a"
+b=${A[*]@E}
+recho "$b"
+
+set -- $'\t'
+A=$1
+
+IFS=$1
+[[ ${A[@]} ]] && echo ok 1
+[[ ${A[*]} ]] && echo ok 2
+[[ ${A[0]} ]] && echo ok 3
+
+IFS=$' \t\n'
+[[ ${A[@]} ]] && echo ok 4
+[[ ${A[*]} ]] && echo ok 5
+[[ ${A[0]} ]] && echo ok 6
+
+IFS=
+[[ ${A[@]} ]] && echo ok 7
+[[ ${A[*]} ]] && echo ok 8
+[[ ${A[0]} ]] && echo ok 9
diff --git a/tests/exp12.sub b/tests/exp12.sub
new file mode 100644 (file)
index 0000000..0aaa2f4
--- /dev/null
@@ -0,0 +1,38 @@
+# force single-byte versions of these functions
+
+export LANG=C
+
+# remove shortest trailing match
+x=file.c
+recho ${x%.c}.o
+
+# remove longest trailing match
+x=posix/src/std
+recho ${x%%/*}
+
+# remove shortest leading pattern
+x=$HOME/src/cmd
+recho ${x#$HOME}
+
+# remove longest leading pattern
+x=/one/two/three
+recho ${x##*/}
+
+# and no match thrown in for good measure
+recho ${x#nomatch}
+
+foo=abcdefg
+
+# fail
+echo ${foo%ab}
+echo ${foo%def}
+
+echo ${foo#fg}
+echo ${foo#def}
+
+# succeed
+echo ${foo#ab}
+echo ${foo#def}
+
+echo ${foo%fg}
+echo ${foo%def}
index 9346b5792fd831ce2438de25f0e4e5e852699732..52dd4a15ea603b23e6bef7cba5b92bbba5cd0fd3 100644 (file)
@@ -1,15 +1,14 @@
 # expansions involving patterns
-
 var='[hello'
 echo "${var//[/}"
 
 red='\[\e[0;31m\]'
-echo "${red//\\[\\e/}"
+printf "%s\n" "${red//\\[\\e/}"
 
 foo="${red//\\[\\e/}"
 
 # foo == [0;31m\]
-echo "${foo//[0;31m\\/}"
+printf "%s\n" "${foo//[0;31m\\/}"
 
 echo "${var//[]/}"
 echo "${red//[]/}"
index 0a4acc3c97d5d2a0d12460678430b545ef91b680..f3f3b6bd9ddcbe14f603f2c8331f7de4b02c12e4 100644 (file)
@@ -9,3 +9,15 @@ recho $# "$1" "$2" "$3"
 
 x=$c
 recho "$x"
+
+unset c c2 x
+
+c=$'Y\1Y';
+
+v=X${c}X;
+recho X${c}X
+recho "$v"
+
+v=X$c
+recho X$c
+recho "$v"
index 99340838bee5308f487e88bd2626bcaf63734577..ff44febcfe588e78cd195f6ab328f35990eb46aa 100644 (file)
@@ -10,11 +10,11 @@ declare -p var | sed -n l
 
 recho ${var@Q}
 recho ${var@P}
-echo ${var@A}
+echo -E ${var@A}
 
 unset array
 array=( [$'x\001y\177z']=foo ) # should be error
-echo ${array[@]@A}
+echo -E ${array[@]@A}
 
 unset array
 declare -a array=([0]=$'x\001y\177z')
@@ -23,9 +23,9 @@ declare -p array
 unset array
 array=( "$var" )
 recho ${array[@]}
-echo ${array[@]@A}
+echo -E ${array[@]@A}
 
 unset array
 declare -A array
 array=( [$'x\001y\177z']=$'a\242b\002c' )
-echo ${array[@]@A}
+echo -E ${array[@]@A}
index efb7e5fbbc0e237721fe362eaa5957345a6947de..691f6879d8765936c63c8d53c2c01e4b47037c52 100644 (file)
@@ -94,14 +94,23 @@ a ab
 a
 . ..
 . .. a.log
+*(foo)
+*(foo|bar)
 a.log
 ?(foo)
 a.log
 a.log
 . ..
+. ..
+a.log
 a.log
 .x .y .z
 a b c
 .x .y .z a b c
 a b c
 a b c
+a b c
+a b c
+.x .y .z a b c
+.x .y .z a b c
+*
index a51c4db15e900f34f4908964a9136ca2361458bf..32a6569fbb9a9a0601e6cffdf1a0731591165f06 100644 (file)
@@ -374,4 +374,6 @@ ${THIS_SH} ./extglob3.sub
 
 ${THIS_SH} ./extglob4.sub
 
+${THIS_SH} ./extglob5.sub
+
 exit 0
index e029ea4911651848a76103526cb5c6e4b964e9b2..686dab74b1ce80a3432ba7ba7b362a6bcd9e97c2 100644 (file)
@@ -12,5 +12,5 @@ echo a!(x)
 echo a*?(x)
 echo a?(x)
 
-builtin cd /
+builtin cd $OLDPWD
 rm -rf $TESTDIR
index 94567ee9938b77de1ccdfa7cb26f257064edafc1..3f51c40cd28bdc840fc636e783800de1ba67946b 100644 (file)
@@ -1,5 +1,5 @@
 shopt -s extglob
-DIR=/tmp/extglob-$$
+DIR=$TMPDIR/extglob-$$
 mkdir $DIR
 cd $DIR
 
@@ -7,15 +7,18 @@ touch a.log
 
 echo *(.)
 echo *(.)*
+echo *(foo)
+echo *(foo|bar)
 echo ?(foo)*
 echo ?(foo)
 echo *(foo)*
 echo @(|foo)*
 
 echo *(foo).*
+echo *(foo|bar).*
 
 echo !(foo)*
+echo !(foo|bar)*
 
 cd $OLDPWD
 rm -rf $DIR
-
index 2ec8f3197c13b8fcd76fd2289f33751065b856af..2b4c53c9f7a1c1ec46b8b23e99078f47dcfb3eda 100644 (file)
@@ -19,7 +19,14 @@ echo @(*|.!(|.))                # wrong, adds . and ..
 echo @(*|@(f))                  # ??
 echo @(*|@(ff))
 
-cd /
+echo !(f)
+echo !(f)!(f)
+
+shopt -s dotglob
+echo @(*|@(f))
+echo @(*|@(ff))
+
+cd $OLDPWD
 rm -rf $GTDIR
 
 [[ a = a*?(/)b ]] && echo bad match 1
diff --git a/tests/extglob5.sub b/tests/extglob5.sub
new file mode 100644 (file)
index 0000000..d400f83
--- /dev/null
@@ -0,0 +1,18 @@
+# globignore extglob patterns containing colons -- problem until bash-4.2
+
+: ${TMPDIR:=/tmp}
+TESTDIR=$TMPDIR/bash-globignore-$$
+[ -d "$TESTDIR" ] || mkdir "$TESTDIR"
+
+cd "$TESTDIR" || exit 2
+
+shopt -s extglob
+GLOBIGNORE='+([^[:alnum:]]):@([-.,:; _]):[![:alnum:]]'
+
+touch ';' '++'
+echo *
+
+rm ';' '++'
+
+cd $OLDPWD
+rmdir $TESTDIR
index 30614ef92d8a41627fcad92ca2ccdafdcf83e217..874b2810768e9acb763013114a7d7dc46e0c965d 100644 (file)
@@ -2,7 +2,7 @@
 
 getop () {
 
-    local OPTIND
+    local OPTIND=1
     local OPTERR=1
 
     echo getop: OPTERR=$OPTERR    
index 04a0fd5f01899fda23a59765c49924f54a600966..1ead7b61da1d76dd083317b89dc0c09c0a7225b3 100644 (file)
@@ -1,4 +1,66 @@
 foo/bar foobar/bar
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+b
+argv[1] = <A£\B>
+argv[1] = <A>
+argv[1] = <B>
+argv[1] = <a£\b>
+0000000 141 243 134 142
+0000004
+ok 6
+ok 7
+invalid bracket expression
+== LANG=C ==
+[[:alpha:]
+ok 1
+[a
+[[:alpha:]
+ok 2
+ok 3
+== LANG=en_US.UTF-8 ==
+[[:alpha:]
+ok 1
+[a
+[[:alpha:]
+ok 2
+ok 3
+invalid character class
+== LANG=C ==
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+== LANG=en_US.UTF-8 ==
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+invalid collating symbols
+== LANG=C ==
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+== LANG=en_US.UTF-8 ==
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+argv[1] = <a\?>
+a?
+argv[1] = <a\?>
+a?
+aa
 argv[1] = <a>
 argv[2] = <abc>
 argv[3] = <abd>
@@ -13,7 +75,7 @@ argv[2] = <abc>
 argv[3] = <abd>
 argv[4] = <abe>
 tmp/l1 tmp/l2 tmp/*4 tmp/l3
-./glob.tests: line 44: no match: tmp/*4
+./glob.tests: line 47: no match: tmp/*4
 argv[1] = <bdir/>
 argv[1] = <*>
 argv[1] = <a*>
index d32988bc4d36e49fe5209f633601f25e2f4e9394..01913bbe01c96de6974a1687ba3d9e8f84a6a1a0 100644 (file)
@@ -4,15 +4,18 @@ export LC_COLLATE=C
 #
 expect()
 {
-       echo expect "$@"
+:      # if needed, change me to echo expect "$@"
 }
 
 # First, a test that bash-2.01.1 fails
 ${THIS_SH} ./glob1.sub
+${THIS_SH} ./glob2.sub
+${THIS_SH} ./glob3.sub
+${THIS_SH} ./glob4.sub
 
 MYDIR=$PWD     # save where we are
 
-TESTDIR=/tmp/glob-test
+TESTDIR=$TMPDIR/glob-test-$$
 mkdir $TESTDIR
 builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; }
 rm -rf *
index 8745cd99ad150091d43734ad01fcc252af1dee3c..6b3b8ad1ad42518cccb02cad486fb0a3f0eff8d7 100644 (file)
@@ -1,7 +1,10 @@
 # bash-2.01.1 failed this test
-FN=/tmp/bash-glob.$$
+: ${TMPDIR:=/var/tmp}
+
+FN=$TMPDIR/bash-glob.$$
 mkdir $FN
 cd $FN
+
 mkdir foo
 mkdir foobar
 touch foo/bar
@@ -10,5 +13,5 @@ chmod 311 foo foobar
 echo f*/bar
 
 chmod 777 foo foobar
-cd /
+cd $OLDPWD
 rm -rf $FN
diff --git a/tests/glob2.sub b/tests/glob2.sub
new file mode 100644 (file)
index 0000000..d33013b
--- /dev/null
@@ -0,0 +1,44 @@
+. ./test-glue-functions
+
+var='ab\'
+
+case $var in
+ab\\)  echo ok 1;;
+*)     echo bad 1;;
+esac
+
+case $var in
+$var)  echo ok 2;;
+*)     echo bad 2;;
+esac
+
+case $var in
+'ab\') echo ok 3;;
+*)     echo bad 3;;
+esac
+
+[[ $var = $var ]] && echo ok 4
+[[ $var = $'ab\134' ]] && echo ok 5
+
+LC_ALL=zh_HK.big5hkscs
+
+read a b c <<< $'\u3b1 b c\n'
+echo $b
+unset a b c
+
+export alpha=$'\u3b1'
+
+printf -v v 'A%sB' "$alpha" 
+recho "$v"
+IFS=$alpha read a b c <<<"$v"
+recho "$a"
+recho "$b"
+unset a b v
+
+recho "a${alpha}b"
+printf "%s" "a${alpha}b" | LC_ALL=C od -b | _intl_normalize_spaces
+
+a=$'\u3b1'
+[[ $a = $a ]] && echo ok 6
+
+LC_ALL=zh_HK.big5hkscs ${THIS_SH} -c $'[[ \u3b1 = \u3b1 ]]' && echo ok 7
diff --git a/tests/glob3.sub b/tests/glob3.sub
new file mode 100644 (file)
index 0000000..378234d
--- /dev/null
@@ -0,0 +1,123 @@
+: ${TMPDIR:=/var/tmp}
+cd $TMPDIR
+
+matchfunc()
+{
+       echo == LANG=$LANG ==
+
+       touch a p
+       echo [[:alpha:]
+       rm a p
+
+       case l in
+       [[:alpha:])     echo bad 1;;
+       *)              echo ok 1;;
+       esac
+
+       touch '[a' '[x'
+       echo [[:alpha:]
+       rm '[a'
+       echo [[:alpha:]
+       rm '[x'
+
+       case [a in
+       [[:alpha:])     echo ok 2;;
+       *)              echo bad 2;;
+       esac
+
+       case [x in
+       [[:alpha:])     echo bad 3;;
+       *)              echo ok 3;;
+       esac
+}
+
+echo invalid bracket expression
+export LANG=C
+matchfunc
+
+export LANG=en_US.UTF-8
+matchfunc
+
+unset -f matchfunc
+
+matchfunc()
+{
+       echo == LANG=$LANG ==
+
+       case a] in
+       [[:aleph:]])    echo bad 1;;
+       *)              echo ok 1;;
+       esac
+
+       case a in
+       [[:aleph:]])    echo bad 2;;
+       *)              echo ok 2;;
+       esac
+
+       case a] in
+       [[:"alpha":]])  echo bad 3;;
+       *)              echo ok 3;;
+       esac
+
+       case a in
+       [[:"alpha":]])  echo bad 4;;
+       *)              echo ok 4;;
+       esac
+
+       case a in
+       [abc[:foo:]])   echo ok 5;;
+       *)              echo bad 5 ;;
+       esac
+
+       case a in
+       [[:foo:]abc])   echo ok 6;;
+       *)              echo bad 6 ;;
+       esac
+}
+
+echo invalid character class
+export LANG=C
+matchfunc
+
+export LANG=en_US.UTF-8
+matchfunc
+
+unset -f matchfunc
+
+matchfunc()
+{
+       echo == LANG=$LANG ==
+
+       case h in
+       [[.hyphen.])    echo bad 1;;
+       *)              echo ok 1;;
+       esac
+
+       case - in
+       [[.hyphen.]])   echo ok 2;;
+       *)              echo bad 2;;
+       esac
+
+       case slash in
+       [[.slash.]])    echo bad 3;;
+       *)              echo ok 3;;
+       esac
+
+       case a in
+       [abc[.nonsense.]])      echo ok 4;;
+       *)              echo bad 4 ;;
+       esac
+
+       case a in
+       [[.nonsense.]abc])      echo ok 5;;
+       *)              echo bad 5 ;;
+       esac
+}
+
+echo invalid collating symbols
+
+export LANG=C
+matchfunc
+
+export LANG=en_US.UTF-8
+matchfunc
diff --git a/tests/glob4.sub b/tests/glob4.sub
new file mode 100644 (file)
index 0000000..378b5a9
--- /dev/null
@@ -0,0 +1,13 @@
+trap "rm 'a?' aa" EXIT
+touch 'a?' aa
+
+set -- a \?; IFS=\\; var=$*;
+recho "$var"
+unset IFS; printf "%s\n" ${var}
+
+var='a\?'
+recho "$var"
+printf "%s\n" ${var}
+
+var='a\a'
+printf "%s\n" ${var}
index f4bb1b1c4fd2cca38c59fdd10fa91a06d5757223..4e1a02455fa0af22d036f538bbda3b598e787bd8 100644 (file)
@@ -1,5 +1,6 @@
 olddir=$PWD
-EMPTY=/tmp/empty
+: ${TMPDIR:=/var/tmp}
+EMPTY=$TMPDIR/empty
 
 shopt -s globstar
 s()
index 137a2956d7a3a94e602a1a722b60bd66506f0fb1..f6541dcafc129bdf7d381a13d7c7b1b048efaa25 100644 (file)
@@ -20,7 +20,7 @@ jkl mno
 fff is a function
 fff () 
 { 
-    ed /tmp/foo  > /dev/null <<ENDOFINPUT
+    ed ${TMPDIR}/foo <<ENDOFINPUT > /dev/null
 /^name/d
 w
 q
@@ -31,7 +31,7 @@ ENDOFINPUT
 fff is a function
 fff () 
 { 
-    ed /tmp/foo > /dev/null  <<ENDOFINPUT
+    ed ${TMPDIR}/foo <<ENDOFINPUT > /dev/null
 /^name/d
 w
 q
@@ -43,11 +43,11 @@ foo is a function
 foo () 
 { 
     echo;
-    cat  <<END
+    cat <<END
 bar
 END
 
-    cat  <<EOF
+    cat <<EOF
 qux
 EOF
 
@@ -59,13 +59,13 @@ qux
 bar
 qux
 abc def geh
-./heredoc3.sub: line 9: warning: here-document at line 7 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 10: warning: here-document at line 8 delimited by end-of-file (wanted `EOF')
 = here is the text =
-./heredoc3.sub: line 15: warning: here-document at line 13 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 16: warning: here-document at line 14 delimited by end-of-file (wanted `EOF')
 this paren ) is not a problem
-./heredoc3.sub: line 21: warning: here-document at line 19 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 22: warning: here-document at line 20 delimited by end-of-file (wanted `EOF')
 these balanced parens ( ) are not a problem
-./heredoc3.sub: line 27: warning: here-document at line 25 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 28: warning: here-document at line 26 delimited by end-of-file (wanted `EOF')
 quoted balanced parens \( ) are not a problem either
 more text in a subshell
 some more text in a different subshell
@@ -82,8 +82,16 @@ end helloEND
 hello
 \END
 end hello<NL>\END
-./heredoc3.sub: line 78: warning: here-document at line 76 delimited by end-of-file (wanted `EOF')
-./heredoc3.sub: line 79: syntax error: unexpected end of file
+./heredoc3.sub: line 85: warning: here-document at line 83 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 86: syntax error: unexpected end of file
+heredoc1
+EOF
+Ok:0
+argv[1] = <onetwo>
+argv[2] = <threefour>
+argv[1] = <two>
+argv[2] = <threefi>
+argv[3] = <ve>
 comsub here-string
 ./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF')
 hi
index ebc770ac0dc22678c530441a92ee09cef87dede9..303949f48e659cd61af1a86c8648c51514285a6e 100644 (file)
@@ -59,22 +59,22 @@ cat <<- EOF
        EOF
 
 # check appending of text to file from here document
-rm -f /tmp/bash-zzz
-cat > /tmp/bash-zzz << EOF
+rm -f ${TMPDIR}/bash-zzz
+cat > ${TMPDIR}/bash-zzz << EOF
 abc
 EOF
-cat >> /tmp/bash-zzz << EOF
+cat >> ${TMPDIR}/bash-zzz << EOF
 def ghi
 jkl mno
 EOF
-cat /tmp/bash-zzz
-rm -f /tmp/bash-zzz
+cat ${TMPDIR}/bash-zzz
+rm -f ${TMPDIR}/bash-zzz
 
 # make sure command printing puts the here-document as the last redirection
 # on the line, and the function export code preserves syntactic correctness
 fff()
 {
-  ed /tmp/foo <<ENDOFINPUT >/dev/null
+  ed ${TMPDIR}/foo <<ENDOFINPUT >/dev/null
 /^name/d
 w
 q
@@ -90,8 +90,8 @@ ${THIS_SH} ./heredoc1.sub
 
 # test heredocs in command substitutions
 ${THIS_SH} ./heredoc2.sub
-
 ${THIS_SH} ./heredoc3.sub
+${THIS_SH} ./heredoc4.sub
 
 echo $(
        cat <<< "comsub here-string"
index baf91c1406261d7acce6b879c17c329d8448b91c..a5a2fbc02dd0c7a01bcec4d352841cc7c27b7c71 100644 (file)
@@ -1,4 +1,5 @@
 SAVEPWD=$PWD
+: ${TMPDIR:=/tmp}
 cd $TMPDIR || echo "heredoc3.sub: cannot cd to $TMPDIR" >&2
 
 text=$(cat <<EOF
@@ -69,7 +70,13 @@ cat <<END
 hello
 \END
 END
-echo end 'hello<NL>\END'
+echo -E end 'hello<NL>\END'
+
+# gprof
+if [ -n "$GMON_OUT_PREFIX" ]; then
+       mv ${GMON_OUT_PREFIX}.[0-9]* "$SAVEPWD" >/dev/null 2>&1
+fi
+cd "$SAVEPWD"
 
 # this has to be last -- results in a syntax error
 # doesn't currently parse because EOF is not on a line by itself -- should it?
diff --git a/tests/heredoc4.sub b/tests/heredoc4.sub
new file mode 100644 (file)
index 0000000..381b64a
--- /dev/null
@@ -0,0 +1,12 @@
+cat <<EO`true`F
+heredoc1
+EO`false`F
+EO`true`F
+echo Ok:$? 
+
+one=one
+four=four
+five='fi ve'
+
+recho $one`echo two three`$four
+recho `echo two three`$five
index ed6e08942e3236b3f8af89450579552de741765f..9dc592cb6db1646e512f7dc2b6a2de693e92a6f7 100644 (file)
@@ -8,7 +8,7 @@ echo $BASH_VERSION
     2  /bin/sh -c 'echo this is $0'
     3  ls
     4  echo $BASH_VERSION
-    5  HISTFILE=/tmp/newhistory
+    5  HISTFILE=$TMPDIR/newhistory
     6  echo line 2 for history
 echo line 2 for history
 echo line 2 for history
@@ -19,7 +19,7 @@ line 2 for history
     2  /bin/sh -c 'echo this is $0'
     3  ls
     4  echo $BASH_VERSION
-    5  HISTFILE=/tmp/newhistory
+    5  HISTFILE=$TMPDIR/newhistory
     6  echo line 2 for history
     7  set -H
     8  echo line 2 for history
@@ -181,6 +181,15 @@ echo g
 g
 eval echo "echo g"
 echo g
+h
+echo \!\! `echo echo h`
+!! echo h
+i
+echo echo i `echo echo i`
+echo i echo i
+j
+echo `echo j` echo j
+j echo j
 a
 cat < <(echo echo a)
 echo a
@@ -194,3 +203,40 @@ d
 e
 ! !
 ./histexp4.sub: line 20: !': event not found
+/tmp/Step1
+echo /$(echo tmp)/Step1
+/tmp/Step1
+echo /<(echo tmp)/Step1 > /dev/null
+/tmp/Step1
+echo $(echo /tmp)/Step1
+/tmp/Step1
+echo <(echo /tmp)/Step1 > /dev/null
+/+(one|two|three)/Step1
+echo /+(one|two|three)/Step1
+/+(one|two|three)/Step1
+/*(tmp|dev|usr)/Step1
+echo /*(tmp|dev|usr)/Step1
+/*(tmp|dev|usr)/Step1
++(/one|/two|/three)/Step1
+echo +(/one|/two|/three)/Step1
++(/one|/two|/three)/Step1
+*(/tmp|/dev|/usr)/Step1
+echo *(/tmp|/dev|/usr)/Step1
+*(/tmp|/dev|/usr)/Step1
+one
+       echo echo one
+echo one
+echo one
+echo one
+    1  set -o histexpand
+    2  echo one
+    3  for f in a b c; do      echo echo one; done
+    4  history
+two
+       echo echo two
+echo two
+echo two
+echo two
+    1  echo two
+    2  for f in a b c; do      echo echo two; done
+    3  history
index 99c7520d195cc86bf1fc8d84fc8de8c5912fd7c3..5ae925e132b0dc63391a0ab1e28703d27599f378 100644 (file)
@@ -1,6 +1,6 @@
 LC_ALL=C
 LANG=C
-trap 'rm /tmp/newhistory' 0
+trap 'rm $TMPDIR/newhistory' 0
 
 file=bax
 histchars='!^#'        # make sure history comment char is set correctly
@@ -25,7 +25,7 @@ history -p '!!:z'
 
 history
 
-HISTFILE=/tmp/newhistory
+HISTFILE=$TMPDIR/newhistory
 history -a
 
 history -w
@@ -140,3 +140,5 @@ ${THIS_SH} ./histexp1.sub
 ${THIS_SH} ./histexp2.sub
 ${THIS_SH} ./histexp3.sub
 ${THIS_SH} ./histexp4.sub
+${THIS_SH} ./histexp5.sub
+${THIS_SH} ./histexp6.sub
index ae2b4986d1a239d5031d4e41a2de305a01cf4470..495f0952b1d715d03003809006c7a2f6dc554939 100644 (file)
@@ -31,5 +31,14 @@ echo "!!"
 echo g
 eval echo "!!"
 
+echo h
+echo \!\! `echo !!`
+
+echo i
+echo !! `echo !!`
+
+echo j
+echo `echo j` !!
+
 set +o history
 rm -f $HISTFILE                # just in case
diff --git a/tests/histexp5.sub b/tests/histexp5.sub
new file mode 100644 (file)
index 0000000..0fe62fe
--- /dev/null
@@ -0,0 +1,28 @@
+set -o history
+set -o histexpand
+
+# command and process substitutions should be tokenized as a single word
+echo /$(echo tmp)/Step1
+echo !:*
+echo /<(echo tmp)/Step1 >/dev/null
+echo !:*
+
+# same tests at the beginning of a word
+echo $(echo /tmp)/Step1
+echo !:*
+echo <(echo /tmp)/Step1 >/dev/null
+echo !:*
+
+# so should shell extended glob patterns
+shopt -s extglob
+
+echo /+(one|two|three)/Step1
+echo !:*
+echo /*(tmp|dev|usr)/Step1
+echo !:*
+
+# same tests at the beginning of a word
+echo +(/one|/two|/three)/Step1
+echo !:*
+echo *(/tmp|/dev|/usr)/Step1
+echo !:*
diff --git a/tests/histexp6.sub b/tests/histexp6.sub
new file mode 100644 (file)
index 0000000..00610b0
--- /dev/null
@@ -0,0 +1,24 @@
+unset HISTIGNORE
+HISTFILE=$TMPDIR/bashhist-$$
+
+set -o history
+set -o histexpand
+
+echo one
+
+for f in a b c; do
+       echo !!
+done
+
+history
+history -c
+
+echo two
+for f in a b c; do
+       echo !-1
+done
+
+history
+
+set +o history
+rm -f $HISTFILE
index de8e22b4690d13f1e7521266124dc09586578eeb..d83fc7180e8991d64e27ceae6e04d22242e110b6 100644 (file)
@@ -36,13 +36,13 @@ echo line for history
         echo line for history
 displaying $HISTFILE after history -a
 echo line for history
-HISTFILE=/tmp/newhistory
+HISTFILE=$TMPDIR/newhistory
     1  for i in one two three; do echo $i; done
     2  /bin/sh -c 'echo this is $0'
     3  ls
     4  echo $BASH_VERSION
     5  echo line for history
-    6  HISTFILE=/tmp/newhistory
+    6  HISTFILE=$TMPDIR/newhistory
     7  echo displaying \$HISTFILE after history -a
     8  cat $HISTFILE
 for i in one two three; do echo $i; done
@@ -50,7 +50,7 @@ for i in one two three; do echo $i; done
 ls
 echo $BASH_VERSION
 echo line for history
-HISTFILE=/tmp/newhistory
+HISTFILE=$TMPDIR/newhistory
 echo displaying \$HISTFILE after history -a
 cat $HISTFILE
     1  for i in one two three; do echo $i; done
@@ -58,7 +58,7 @@ cat $HISTFILE
     3  ls
     4  echo $BASH_VERSION
     5  echo line for history
-    6  HISTFILE=/tmp/newhistory
+    6  HISTFILE=$TMPDIR/newhistory
     7  echo displaying \$HISTFILE after history -a
     8  cat $HISTFILE
     9  echo line 2 for history
@@ -69,7 +69,7 @@ echo line 2 for history
     3  ls
     4  echo $BASH_VERSION
     5  echo line for history
-    6  HISTFILE=/tmp/newhistory
+    6  HISTFILE=$TMPDIR/newhistory
     7  echo displaying \$HISTFILE after history -a
     8  cat $HISTFILE
     9  echo line 2 for history
@@ -80,7 +80,7 @@ echo line 2 for history
 line 2 for history
 4       echo $BASH_VERSION
 5       echo line for history
-6       HISTFILE=/tmp/newhistory
+6       HISTFILE=$TMPDIR/newhistory
 7       echo displaying \$HISTFILE after history -a
 8       cat $HISTFILE
 9       echo line 2 for history
@@ -94,10 +94,10 @@ line 2 for history
 17      unset HISTFILE
 4       echo $BASH_VERSION
 5       echo line for history
-6       HISTFILE=/tmp/newhistory
+6       HISTFILE=$TMPDIR/newhistory
 7       echo displaying \$HISTFILE after history -a
 8       cat $HISTFILE
-./history.tests: line 75: fc: history specification out of range
+./history.tests: line 76: fc: history specification out of range
    14  set -H
    15  echo line 2 for history
    16  unset HISTSIZE
@@ -107,7 +107,7 @@ echo xx xb xc
 xx xb xc
 echo 44 48 4c
 44 48 4c
-./history.tests: line 90: fc: no command found
+./history.tests: line 91: fc: no command found
 aa
 bb
 cc
@@ -140,7 +140,41 @@ three
 one
 two
 three
-4.4
+5.0
 echo ${BASH_VERSION%\.*}
-4.4
+5.0
         echo ${BASH_VERSION%\.*}
+a
+b
+c
+d
+e
+    1  echo a
+    2  echo b
+    3  echo c
+    4  echo d
+    5  echo e
+
+    1  echo a
+    2  echo e
+f
+g
+h
+i
+    1  echo a
+    2  echo e
+    3  echo f
+    4  echo g
+    5  echo h
+
+./history3.sub: line 27: history: 16: history position out of range
+./history3.sub: line 28: history: 200: history position out of range
+./history3.sub: line 29: history: -20: history position out of range
+./history3.sub: line 30: history: -50: history position out of range
+./history3.sub: line 31: history: 5-0xaf: history position out of range
+    1  echo a
+    2  echo e
+    3  echo f
+    4  echo g
+    5  echo h
+
index f976fbdf7cb1bca96626b91d5b02ce751420912e..4001bd6cca8725916077acd9dee713ec889e1a02 100644 (file)
@@ -1,4 +1,4 @@
-trap 'rm /tmp/newhistory' 0
+trap 'rm $TMPDIR/newhistory' 0
 
 # bad options
 history -x
@@ -20,6 +20,7 @@ HISTFILE=history.list
 HISTCONTROL=ignoreboth
 HISTIGNORE='&:history*:fc*'
 HISTSIZE=32
+export HISTIGNORE
 
 shopt -s cmdhist
 set -o history
@@ -39,7 +40,7 @@ history -p '!!'
 
 fc -nl
 
-HISTFILE=/tmp/newhistory
+HISTFILE=$TMPDIR/newhistory
 history -a
 echo displaying \$HISTFILE after history -a
 cat $HISTFILE
@@ -112,3 +113,4 @@ ${THIS_SH} ./history1.sub
 rm -f $TMPDIR/foohist-*
 
 ${THIS_SH} ./history2.sub
+${THIS_SH} ./history3.sub
diff --git a/tests/history3.sub b/tests/history3.sub
new file mode 100644 (file)
index 0000000..8722666
--- /dev/null
@@ -0,0 +1,36 @@
+: ${TMPDIR:=/tmp}
+
+set -o history
+HISTFILE=$TMPDIR/history-$$
+
+history -c
+
+echo a
+echo b
+echo c
+echo d
+echo e
+
+history ; echo 
+
+history -d 2-4
+
+history
+
+echo f
+echo g
+echo h
+echo i
+history -d 6--1
+history ; echo
+
+history -d 16-40
+history -d 1-200
+history -d -20-50
+history -d 1--50
+history -d 5-0xaf
+
+history ; echo
+
+unset HISTFILE
+exit 0
index 512f6ee5a3d74b2f87ea1b40ca40b295c31d6ac8..465efcf0e2a1b800c04a00b4d1aabe88a3b35d34 100644 (file)
@@ -8,3 +8,5 @@ a:b:c:d:e
 a:b:c:d:e
 a b c d e
 a b c d e
+argv[1] = <file>
+argv[1] = <*>
index 763e2a001da083c055f68b298f3b198be75886cf..71769005912189b21d8f7ad971c59f1c30b6dfe4 100644 (file)
@@ -59,3 +59,5 @@ IFS=: export x
 echo $x
 
 IFS="$DEFIFS"
+
+${THIS_SH} ./ifs1.sub
diff --git a/tests/ifs1.sub b/tests/ifs1.sub
new file mode 100644 (file)
index 0000000..6ea489a
--- /dev/null
@@ -0,0 +1,14 @@
+: ${TMPDIR:=/tmp}
+dir=bashtest-$$
+
+mkdir $TMPDIR/$dir || exit 1
+touch $TMPDIR/$dir/file || exit 2
+cd $TMPDIR/$dir || exit 3
+
+IFS='?*[]'
+recho *
+
+recho "*"
+
+cd $OLDPWD
+rm -rf $TMPDIR/$dir
index 006318e59e22b9288f2a0059530f62fe63551012..7da99192dec7ee2defa09ea0487bba4821e480b3 100644 (file)
@@ -50,7 +50,8 @@ Passed all 1378 Unicode tests
 0000003
 0000000 101 040 302 243 040 305 222 012
 0000010
-./unicode3.sub: line 3: $'5\247@3\231+\306S8\237\242\352\263': command not found
-./unicode3.sub: line 5: cd: $'5\247@3\231+\306S8\237\242\352\263': No such file or directory
+./unicode3.sub: line 5: $'5\247@3\231+\306S8\237\242\352\263': command not found
+./unicode3.sub: line 7: cd: $'5\247@3\231+\306S8\237\242\352\263': No such file or directory
 $'5\247@3\231+\306S8\237\242\352\263'
 + : $'5\247@3\231+\306S8\237\242\352\263'
++ set +x
index c3ee9443a22271429081ebc916fd0094ebeb1777..0e9d1d19ee19fc51f15293716d73601a309b50bb 100644 (file)
@@ -16,31 +16,32 @@ Waiting for job 6
 job 6 returns 0
 Waiting for job 7
 job 7 returns 0
-[1]   Running                 sleep 5 &
-[2]   Running                 sleep 5 &
-[3]   Running                 sleep 5 &
-[4]-  Running                 sleep 5 &
-[5]+  Running                 ( sleep 5; exit 4 ) &
+[1]   Running                 sleep 2 &
+[2]   Running                 sleep 2 &
+[3]   Running                 sleep 2 &
+[4]-  Running                 sleep 2 &
+[5]+  Running                 ( sleep 2; exit 4 ) &
 4
 0
 i killed it
 12
 [1]-  Running                 sleep 20 &
 [3]+  Running                 sleep 20 &
+child1 exit status 0
 0
-./jobs.tests: line 22: wait: %1: no such job
-./jobs.tests: line 27: fg: no job control
+./jobs.tests: line 25: wait: %1: no such job
+./jobs.tests: line 30: fg: no job control
 wait-for-pid
 wait-errors
-./jobs.tests: line 40: wait: `1-1': not a pid or valid job spec
-./jobs.tests: line 41: wait: `-4': not a pid or valid job spec
+./jobs.tests: line 43: wait: `1-1': not a pid or valid job spec
+./jobs.tests: line 44: wait: `-4': not a pid or valid job spec
 wait-for-background-pids
 async list wait-for-background-pids
 async list wait for child
 forked
 wait-when-no-children
 wait-for-job
-./jobs.tests: line 63: wait: %2: no such job
+./jobs.tests: line 66: wait: %2: no such job
 127
 async list wait-for-job
 forked
@@ -53,19 +54,19 @@ sleep 5
 fg-bg 4
 sleep 5
 fg-bg 5
-./jobs.tests: line 90: fg: %2: no such job
-./jobs.tests: line 91: bg: job 1 already in background
+./jobs.tests: line 93: fg: %2: no such job
+./jobs.tests: line 94: bg: job 1 already in background
 fg-bg 6
-./jobs.tests: line 98: fg: -s: invalid option
+./jobs.tests: line 101: fg: -s: invalid option
 fg: usage: fg [job_spec]
-./jobs.tests: line 99: bg: -s: invalid option
+./jobs.tests: line 102: bg: -s: invalid option
 bg: usage: bg [job_spec ...]
-./jobs.tests: line 104: disown: -s: invalid option
+./jobs.tests: line 107: disown: -s: invalid option
 disown: usage: disown [-h] [-ar] [jobspec ... | pid ...]
-./jobs.tests: line 108: disown: %1: no such job
-./jobs.tests: line 111: disown: %2: no such job
+./jobs.tests: line 111: disown: %1: no such job
+./jobs.tests: line 114: disown: %2: no such job
 wait-for-non-child
-./jobs.tests: line 114: wait: pid 1 is not a child of this shell
+./jobs.tests: line 117: wait: pid 1 is not a child of this shell
 127
 3 -- 1 2 3 -- 1 - 2 - 3
 [1]   Running                 sleep 300 &
@@ -75,8 +76,8 @@ running jobs:
 [1]   Running                 sleep 300 &
 [2]-  Running                 sleep 350 &
 [3]+  Running                 sleep 400 &
-./jobs.tests: line 131: kill: %4: no such job
-./jobs.tests: line 133: jobs: %4: no such job
+./jobs.tests: line 134: kill: %4: no such job
+./jobs.tests: line 136: jobs: %4: no such job
 current job:
 [3]+  Running                 sleep 400 &
 previous job:
index c99f4f71216acde253b760d23084ae500e2fd430..3c2eef31a6a48d3f316ee55b5b9be8c3d736878d 100644 (file)
@@ -15,6 +15,9 @@ ${THIS_SH} ./jobs4.sub
 # test out wait -n framework
 ${THIS_SH} ./jobs5.sub
 
+# test out wait -f framework
+${THIS_SH} ./jobs6.sub
+
 jobs
 echo $?
 
index aa9a372614bce8fb2dc842f050ea3344957893d1..53f66cc61391edbf85a26d485b6fe6b7500ac3f8 100644 (file)
@@ -2,7 +2,7 @@
 set -m
 sleep 60 &
 
-FN=/tmp/jobs-pid.$$
+FN=$TMPDIR/jobs-pid.$$
 
 pid1=$!
 jobs -p %+ > $FN
index 2eb4197a99cd1af3cd94fe885ff25b308ec2b52f..898b449b8c1f7e429ca2a405ad449834cc489b73 100644 (file)
@@ -1,12 +1,12 @@
 # test being able to use job control notation in jobs/kill/wait without
 # job control active, as the SUS requires
 
-sleep 5 &
+sleep 2 &
 
-sleep 5 &
-sleep 5 &
-sleep 5 &
-(sleep 5 ; exit 4) &
+sleep 2 &
+sleep 2 &
+sleep 2 &
+(sleep 2 ; exit 4) &
 
 jobs
 
diff --git a/tests/jobs6.sub b/tests/jobs6.sub
new file mode 100644 (file)
index 0000000..9ed59ee
--- /dev/null
@@ -0,0 +1,14 @@
+# framework to test `wait -f' which forces wait until a job exits
+set -o monitor
+sleep 5 &
+child1=$!
+
+( sleep 1; kill -STOP $child1 ; sleep 1 ; kill -CONT $child1 )&
+
+child2=$!
+
+wait -f %1
+echo child1 exit status $?
+
+wait $child2
+exit 0
index 4a3cb7f5499b7c209734177ee234ca02780bd874..10b3a47ea231ef63606f62193b9f64c340153e48 100644 (file)
@@ -152,7 +152,7 @@ b1()
 b2()
 {      
        recho $*
-       recho $#
+       recho ${#}
 }
 
 expect '<1>'
@@ -414,7 +414,7 @@ recho ${#}
 expect '<5>'
 recho ${#?:-xyz}
 
-shift $#
+shift ${#}
 
 expect '<0>'
 recho ${#:-foo}
index 5300259527d82335b1f672b04bff008370f8f5ca..698002ec8ffa016c8fd840c3b11413daaeb97d77 100644 (file)
@@ -48,7 +48,7 @@ argv[1] = <unset>
 expect <bar>
 argv[1] = <bar>
 expect <unset>
-argv[1] = <unset>
+./nameref3.sub: line 16: foo: invalid indirect expansion
 ./nameref3.sub: line 21: unset: bar: cannot unset: readonly variable
 expect <two>
 two
@@ -226,6 +226,13 @@ declare -r RO="x"
 ./nameref11.sub: line 39: declare: RO_PID: not found
 ./nameref11.sub: line 41: RO2: readonly variable
 declare -r RO2="a"
+2
+./nameref11.sub: line 52: typeset: `2': invalid variable name for name reference
+2
+./nameref11.sub: line 57: typeset: `2': invalid variable name for name reference
+2
+./nameref11.sub: line 62: foo[2]: invalid indirect expansion
+./nameref11.sub: line 63: bar: invalid indirect expansion
 ./nameref12.sub: line 6: declare: `/': invalid variable name for name reference
 ./nameref12.sub: line 9: declare: `%': invalid variable name for name reference
 ./nameref12.sub: line 13: `^': not a valid identifier
@@ -306,30 +313,38 @@ declare -a b=([0]="0")
 ./nameref15.sub: line 19: warning: ref: circular name reference
 ./nameref15.sub: line 20: warning: ref: circular name reference
 ./nameref15.sub: line 21: warning: ref: circular name reference
-inside
+inside X
 outside X
-./nameref15.sub: line 29: typeset: ref: nameref variable self references not allowed
-./nameref15.sub: line 31: ref: nameref variable self references not allowed
+before: 7
+./nameref15.sub: line 32: typeset: warning: xxx: circular name reference
+./nameref15.sub: line 32: warning: xxx: circular name reference
+./nameref15.sub: line 33: warning: xxx: circular name reference
+declare -n xxx="xxx"
+./nameref15.sub: line 35: warning: xxx: circular name reference
+xxx_func: inside: xxx = foo
+after: foo
+./nameref15.sub: line 46: typeset: ref: nameref variable self references not allowed
+./nameref15.sub: line 48: ref: nameref variable self references not allowed
 declare -n ref="re"
 declare -n ref="re"
 declare -- re="4"
 4
 declare -n foo="var[@]"
 declare -n ref="var[@]"
-./nameref15.sub: line 48: var[@]: bad array subscript
+./nameref15.sub: line 65: var[@]: bad array subscript
 declare -n bar="var[@]"
-./nameref15.sub: line 53: var[@]: bad array subscript
+./nameref15.sub: line 70: var[@]: bad array subscript
 declare -n a="b"
 declare -n b="a[1]"
-./nameref15.sub: line 61: warning: a: removing nameref attribute
+./nameref15.sub: line 78: warning: a: removing nameref attribute
 declare -a a=([1]="foo")
 declare -n b="a[1]"
-./nameref15.sub: line 66: warning: a: removing nameref attribute
+./nameref15.sub: line 83: warning: a: removing nameref attribute
 declare -a a=([1]="foo")
 declare -n b="a[1]"
 declare -n n="v"
 declare -a v=([1]="1")
-./nameref15.sub: line 82: typeset: n: not found
+./nameref15.sub: line 99: typeset: n: not found
 declare -a v=([0]="0" [1]="1")
 declare -n n="v[1]"
 declare -a v=([0]="0")
@@ -409,3 +424,62 @@ declare -a var=([123]="")
 declare -n ref="var[123]"
 ./nameref18.sub: line 54: declare: var[123]: not found
 declare -a var=([123]="X")
+declare -n foo="bar"
+declare -- foo="bar"
+./nameref19.sub: line 9: declare: bar: not found
+declare -n foo="bar"
+declare -- foo="bar"
+declare -i bar="11"
+declare -inx foo6
+declare -ix foo6
+declare -n foo="bar"
+declare -- bar="Hello World!"
+declare -- foo="bar"
+declare -- bar="Hello World!"
+declare -n foo="bar"
+declare -- bar
+declare -- foo="bar"
+declare -- bar
+declare -a v=([0]="Y")
+r: <Y>
+v: <Y>
+declare -n ref="var"
+declare -a var=([0]="X")
+declare -n ref="var"
+declare -a var=([0]="X")
+declare -n ref="var"
+./nameref20.sub: line 23: declare: var: not found
+outside:
+declare -a foo=([0]="X")
+declare -n ref="var"
+declare -a var=([0]="X")
+outside:
+./nameref20.sub: line 38: declare: ref: not found
+./nameref20.sub: line 38: declare: var: not found
+declare -n ref="var"
+declare -- var="X"
+outside:
+./nameref20.sub: line 45: declare: ref: not found
+./nameref20.sub: line 45: declare: var: not found
+declare -n ref="var"
+declare -a var=([0]="Y")
+declare -- ref="Y"
+declare -- var="X"
+ref=Y
+declare -- ref="Y"
+./nameref20.sub: line 61: declare: var: not found
+ref=Y
+declare -n ref="var"
+declare -A var=([2]="" )
+declare -n ref="var"
+declare -A var=([2]="" )
+declare -n ref="var"
+declare -a var=([2]="")
+declare -n ref="var"
+declare -a var=([2]="")
+declare -n ref="var"
+declare -ai var=([1]="0")
+declare -n ref="var"
+declare -ai var=([1]="0")
+declare -n ref="var"
+declare -- var="1"
index 85feedfa6a717e04b139b5f5927f317133ff7aa6..402e50158ea989dfc24f2c119b48d6382554e6ac 100644 (file)
@@ -39,3 +39,25 @@ unset -n ref ; unset ref
 declare -r RO RO_PID; coproc RO { :; }; declare -p RO_PID; wait; declare -p RO RO_PID
 
 declare -r RO2=a; declare -n ref_PID=RO2; coproc ref { :; }; wait; declare -p RO2
+
+unset x y
+set -- one two three
+
+y=2
+typeset -n x=y
+echo ${x}
+
+unset -n x
+
+typeset -n y
+echo $y
+
+unset -n y
+
+typeset -n y
+y=2
+echo ${y}
+
+declare -n foo=bar
+echo ${!foo[2]}
+echo ${!bar}
index 6c9ace5ef13608e45f421cc3ff09a80d8a49f385..9fbacd4ffab8ad3f65a4843f3893712082bb5a3a 100644 (file)
@@ -26,6 +26,23 @@ add_X_echo ref
 echo outside "$ref"
 unset ref
 
+# same test, but assigning nameref variable circular reference directly
+xxx_func()
+{
+       typeset -n xxx=xxx
+       xxx=foo
+       declare -p xxx
+       echo $FUNCNAME: inside: xxx = $xxx
+}
+
+xxx=7
+echo before: $xxx
+xxx_func
+echo after: $xxx
+
+unset xxx
+unset -f xxx_func
+
 typeset -n ref=ref
 
 typeset -n ref=re ref+=f
@@ -85,4 +102,3 @@ v=(0 1)
 declare -n n=v[1]
 unset n
 declare -p n v
-
diff --git a/tests/nameref19.sub b/tests/nameref19.sub
new file mode 100644 (file)
index 0000000..d46c003
--- /dev/null
@@ -0,0 +1,51 @@
+# can we unset the nameref attribute on variables with values that reference
+# unset variables?
+
+unset bar
+declare -n foo="bar"
+declare -p foo
+
+declare +n foo
+declare -p foo bar
+
+declare -n foo
+declare -p foo
+
+# let's try removing the nameref attribute -- other attributes and assignments
+# apply to the nameref target
+
+declare +n -i foo=7+4
+declare -p foo bar
+
+unset foo bar
+
+# but if the nameref variable doesn't have a value, the attributes apply to
+# the nameref variable itself. thanks ksh93
+
+declare -n foo6
+declare -xi foo6
+declare -p foo6
+
+# and when we remove the nameref attribute, the other attributes remain
+
+declare +n foo6
+declare -p foo6
+
+unset foo6
+
+# make sure these cases continue to work
+
+# nameref referencing an existing, set variable
+declare -n foo=bar
+bar='Hello World!'
+declare -p foo bar
+declare +n foo
+declare -p foo bar
+unset foo bar
+
+# nameref referencing an existing, unset variable
+declare -n foo=bar
+declare bar
+declare -p foo bar
+declare +n foo
+declare -p foo bar
diff --git a/tests/nameref20.sub b/tests/nameref20.sub
new file mode 100644 (file)
index 0000000..1e6faec
--- /dev/null
@@ -0,0 +1,71 @@
+# a collection of cases in bug reports after bash-5.0-alpha was released
+
+declare -n r=v[0]
+v=(X); r=Y
+declare -p ${!v*}
+printf "%s: <%s>\n" "r" "$r" "v" "$v"
+
+unset -n r
+unset -v v
+
+declare -n ref=var; declare -a ref
+ref=(X)
+declare -p ref var
+
+unset -n ref
+unset -v var
+
+f() { declare -n ref=var; declare ref=(X); declare -p ref var; };
+f
+
+unset -f f
+
+f() { declare -n ref=var; declare -g ref=(X); declare -p ref var; };
+
+declare -n ref=foo
+f
+echo outside:
+declare -p foo
+
+unset -n ref
+unset -v foo
+unset -f f
+
+f() { declare -n ref=var; declare -a ref; ref=(X); declare -p ref var; }
+
+f
+echo outside:
+declare -p ref var
+unset -f f
+
+f() { declare -n ref=var; declare ref; ref=X; declare -p ref var; }
+
+f
+echo outside:
+declare -p ref var
+
+unset -f f
+
+unset -n ref; unset var
+
+f()
+{
+       declare var=X; declare -n ref=var; declare ref=(Y)
+       declare -p ref var
+}
+f
+
+unset -f f
+
+declare -n ref=var
+f() { local ref=Y; declare -p ref var; local; }
+
+var=X
+f
+
+unset -v var
+f
+
+unset -n ref
+unset -f f
+
diff --git a/tests/nameref21.sub b/tests/nameref21.sub
new file mode 100644 (file)
index 0000000..a555a08
--- /dev/null
@@ -0,0 +1,56 @@
+# issues with local variables and local namerefs post-bash-4.4
+
+f()
+{
+       local -n ref=var
+       local -A ref=([1]=)
+#      declare -p ref var
+       ref=([2]=)
+       declare -p ref var
+}
+
+unset ref  var
+f
+
+unset ref; var=0
+f
+
+unset var
+unset -f f
+
+f()
+{      
+       local -n ref=var
+       local -a ref=([1]=)
+       ref=([2]=)
+       declare -p ref var
+}
+
+unset ref var
+f
+
+unset ref; var=0
+f
+
+unset var
+unset -f f
+
+f() { local -n ref=var; local -i ref=([1]=); declare -p ref var; }
+
+unset var
+f
+
+var=0
+f
+
+unset var
+unset -f f
+
+f() { local -n ref=var; local ref=1; declare -p ref var; }
+
+var=0
+f
+
+unset var
+unset -f f
+
index 9913fbd6fe24f5a9c69e6fc8957c7053fb19274d..c0f78fbb336b596d29c9780d28121835df58ffe8 100644 (file)
@@ -3,7 +3,7 @@ argv[1] = <foo>
 argv[1] = </usr/homes/chet>
 argv[1] = </usr/homes/chet>
 argv[1] = </usr/homes/chet>
-./new-exp.tests: line 24: HOME: }: syntax error: operand expected (error token is "}")
+./new-exp.tests: line 28: HOME: }: syntax error: operand expected (error token is "}")
 unset
 argv[1] = </usr/homes/chet>
 argv[1] = </usr/homes/chet>
@@ -66,8 +66,8 @@ argv[4] = <d>
 argv[1] = <a>
 argv[2] = <b c>
 argv[3] = <d>
-./new-exp.tests: line 180: ABX: unbound variable
-./new-exp.tests: line 184: $6: cannot assign in this way
+./new-exp.tests: line 184: ABX: unbound variable
+./new-exp.tests: line 188: $6: cannot assign in this way
 argv[1] = <xxcde>
 argv[1] = <axxde>
 argv[1] = <abxyz>
@@ -169,14 +169,14 @@ lines.
 This-string-has-multiple-lines.
 this is a test of proc subst
 this is test 2
-./new-exp2.sub: line 31: /tmp/bashtmp.x*: No such file or directory
-./new-exp2.sub: line 35: /tmp/redir-notthere: No such file or directory
+a
+./new-exp2.sub: line 42: /tmp/redir-notthere: No such file or directory
 1
 
-./new-exp2.sub: line 42: 1111111111111111111111: command not found
+./new-exp2.sub: line 49: 1111111111111111111111: command not found
 
 argv[1] = <6>
-./new-exp.tests: line 285: ${#:}: bad substitution
+./new-exp.tests: line 289: ${#:}: bad substitution
 argv[1] = <'>
 argv[1] = <">
 argv[1] = <"hello">
@@ -411,13 +411,13 @@ argv[6] = <w>
 argv[7] = <x>
 argv[8] = <y>
 argv[9] = <z>
-./new-exp.tests: line 503: $9: unbound variable
-./new-exp.tests: line 504: 9: unbound variable
-./new-exp.tests: line 505: UNSET: unbound variable
-./new-exp.tests: line 506: UNSET: unbound variable
-./new-exp.tests: line 507: UNSET: unbound variable
-./new-exp.tests: line 508: UNSET: unbound variable
+./new-exp.tests: line 507: $9: unbound variable
+./new-exp.tests: line 508: 9: unbound variable
 ./new-exp.tests: line 509: UNSET: unbound variable
+./new-exp.tests: line 510: UNSET: unbound variable
+./new-exp.tests: line 511: UNSET: unbound variable
+./new-exp.tests: line 512: UNSET: unbound variable
+./new-exp.tests: line 513: UNSET: unbound variable
 argv[1] = <5>
 argv[1] = <#>
 argv[1] = <#>
@@ -464,7 +464,7 @@ Case05---3---A:B:C---
 Case06---1---A B C::---
 Case07---3---A:B:C---
 Case08---3---A:B:C---
-./new-exp.tests: line 529: ${$(($#-1))}: bad substitution
+./new-exp.tests: line 533: ${$(($#-1))}: bad substitution
 argv[1] = <a>
 argv[2] = <b>
 argv[3] = <c>
@@ -481,7 +481,7 @@ argv[1] = <a>
 argv[1] = <a>
 argv[2] = <b>
 argv[1] = <>
-./new-exp.tests: line 548: $(($# - 2)): substring expression < 0
+./new-exp.tests: line 552: $(($# - 2)): substring expression < 0
 argv[1] = <bin>
 argv[2] = <bin>
 argv[3] = <ucb>
@@ -624,7 +624,7 @@ c Sub = 0 2 4 8
 <'ab cd'> 
 <'4'> <'ab cd'> 
 <> 
-argv[1] = <host(2)[4.4]$ >
+argv[1] = <host(2)[5.0]$ >
 <      
 >
 <' \t\n'>
@@ -643,6 +643,30 @@ ir
 a b c d e
 5
 a5b
+i
+declare -i foo
+A
+declare -A foo
+abcxxxdef
+abcådef
+ḅć
+Ã¥
+prependḅć
+Ã¥append
+prependå
+ḅćappend
+Ã¥
+ḅć
+ḅć
+ḅć
+Ã¥
+Ã¥
+Ã¥
+ḅć
+Ã¥
+Ã¥
+ḅć
+ḅć
 argv[1] = </>
 argv[1] = </>
-./new-exp.tests: line 608: ABXD: parameter unset
+./new-exp.tests: line 615: ABXD: parameter unset
index c4aa9d167b5bb5440419af8f96c1c65b0f15fa25..557d6b44daa12e2850c87e8f7729ad0540917413 100644 (file)
@@ -1,3 +1,7 @@
+if (( $UID == 0 )); then
+       echo "new-exp.tests: the test suite should not be run as root" >&2
+fi
+
 # must do this because posix mode causes process substitution to be disabled
 # and flagged as a syntax error, which causes the shell to exit
 set +o posix
@@ -340,7 +344,7 @@ recho "${foo:-$@}"
 expect '<ab> <cd> <ef> <gh>'
 recho "${foo:-"$@"}"
 
-shift $#
+shift ${#}
 expect nothing
 recho $xxx"$@"
 expect nothing
@@ -498,7 +502,7 @@ recho ${*%?}
 recho ${@#?}
 recho ${*#?}
 
-shift $#
+shift ${#}
 set -u
 ( recho $9 ; echo after 1)
 ( recho ${9} ; echo after 2)
@@ -597,6 +601,9 @@ ${THIS_SH} ./new-exp9.sub
 # new parameter transformation `@' expansion operator
 ${THIS_SH} ./new-exp10.sub
 
+# parameter substring replacement and removal operators with multibyte chars
+${THIS_SH} ./new-exp11.sub
+
 # problems with stray CTLNUL in bash-4.0-alpha
 unset a
 a=/a
index c015c223988cc351b64e7c8076da1d8c69764902..2b621fcaa885aa7893ca8bc761eaf58ceac9f076 100644 (file)
@@ -1,3 +1,4 @@
+FN=${TMPDIR}/bashtest-$$
 expect()
 {
         echo expect "$@"
@@ -5,7 +6,11 @@ expect()
 
 expect this is a test of proc subst
 cat <(echo this is a test of proc subst)
-echo this is test 2 > /tmp/x
+echo this is test 2 > $FN
 expect this is test 2
-cat <(cat /tmp/x)
-rm -f /tmp/x
+cat <(cat $FN)
+rm -f $FN
+
+foo=
+expect a
+cat ${foo:-<(echo a)}
index e07e5581a28d0908bf795c54f2d70ec395523b33..9e89a701092e7e2ebf2675355860b59b2b34f51e 100644 (file)
@@ -84,3 +84,17 @@ set -- a b c d e
 echo ${@}
 echo ${#@}
 echo a${#@}b
+
+# new feature in bash-5.0: display attributes of even unset variables
+unset -v foo
+
+declare -i foo
+echo ${foo@a}
+
+declare -p foo
+
+unset foo
+declare -A foo
+echo ${foo@a}
+
+declare -p foo
diff --git a/tests/new-exp11.sub b/tests/new-exp11.sub
new file mode 100644 (file)
index 0000000..da6b4e1
--- /dev/null
@@ -0,0 +1,46 @@
+# pattern matching and replacement operators with multibyte characters
+
+LANG=en_US.UTF-8
+
+s1='abcådef'
+s2='Ã¥'
+s3='ḅć'
+
+s23=${s2}${s3}
+
+echo ${s1/$s2/xxx}
+echo ${s1/$s3/xxx}
+
+echo ${s23/#$s2/}
+echo ${s23/%$s3/}
+
+echo ${s23/#$s2/prepend}
+echo ${s23/%$s3/append}
+
+echo ${s2/#/prepend}
+echo ${s3/%/append}
+
+echo ${s2/#/}
+echo ${s3/%/}
+
+recho ${s2/$s2/}
+recho ${s3/$s3/}
+
+# posix pattern replacements
+
+echo ${s23##$s2}
+echo ${s23#$s2}
+
+echo ${s23%%$s3}
+echo ${s23%$s3}
+
+# fail
+
+echo ${s2/#ab/xx}
+echo ${s3/%ab/xx}
+
+echo ${s2#ab}
+echo ${s2##ab}
+
+echo ${s3%ab}
+echo ${s3%%ab}
index e83777993401e7bb6cd592ab8fba33a601bab1a6..ea52b3ce4e8a2fd8c7c30f70f388f9268b19c78a 100644 (file)
@@ -4,7 +4,7 @@ export LANG=C
 # test out the new $(< filename) code
 # it should be exactly equivalent to $(cat filename)
 
-FILENAME=/tmp/bashtmp.x$$
+FILENAME=$TMPDIR/bashtmp.x$$
 
 trap 'rm -f $FILENAME' 0
 
@@ -21,17 +21,24 @@ if [[ $LINES1 != $LINES2 ]]; then
        echo 'whoops: $(< filename) failed'
 fi
 
-LINES2=$(< /tmp/bashtmp.x*)
+LINES2=$(< $TMPDIR/bashtmp.x*)
 if [[ $LINES1 != $LINES2 ]]; then
        echo 'whoops: $(< filename) with glob expansion failed'
 fi
 
 # but the glob expansion in the redirection should fail in posix mode
 set -o posix
-LINES2=$(< /tmp/bashtmp.x*)
+exec 3>&2
+exec 2>/dev/null
+LINES2=$(< $TMPDIR/bashtmp.x*)
+exec 2>&3
+if [[ $LINES2 -gt 0 ]]; then
+       echo "whoops: redirection glob expansion should be disabled in posix mode" >&2
+fi
 set +o posix
 
 # now see what happens when we try it with a non-existant file
+rm -f /tmp/redir-notthere
 LINES3=$(< /tmp/redir-notthere)
 echo $?
 
index 26e16b9183d42d19a953da6a619c95419c1a19fa..45389ef39c39f4105ebe334820ed00705c6ab9b5 100644 (file)
@@ -119,3 +119,13 @@ argv[3] = <uv^Aw^Axy>
 argv[1] = <@2>
 argv[2] = <uv^Aw^Axy>
 argv[3] = <uv^Aw^Axy>
+argv[1] = <aa1>
+argv[2] = <uv^A^A>
+argv[1] = <aa2>
+argv[2] = <uv^A^A>
+argv[1] = <aa3>
+argv[2] = <uv^A^Awx>
+argv[3] = <uv^A^Awx>
+argv[1] = <aa4>
+argv[2] = <uv^A^Awx>
+argv[3] = <uv^A^Awx>
index 0970e77c1a03e1d343c5fa9ccc4198a1de4d8171..f47ab54eb9de9816d4d838d2d3d4c2d8effb80ab 100644 (file)
@@ -95,3 +95,12 @@ recho d2 "${1:2:2}"
 
 recho @1 ${@:1:2}
 recho @2 "${@:1:2}"
+
+declare -A assoc
+assoc=( [0]=$e [1]=$e )
+
+recho aa1 ${assoc:0:4}
+recho aa2 "${assoc:0:4}"
+
+recho aa3 ${assoc[@]:0:2}
+recho aa4 "${assoc[@]:0:2}"
index 43d5a8ed6ef6c00ff775008633f95787d088285d..cecbb2223c23f4f410f5b77dcefbcfaacfdc9303 100644 (file)
@@ -1 +1,16 @@
 AAA
+bash5: `invalid-name': not a valid identifier
+in
+in
+in
+in
+bash5: -c: line 0: syntax error near unexpected token `)'
+bash5: -c: line 0: `case x in esac) echo done; esac'
+in
+bash5: -c: line 0: syntax error near unexpected token `do'
+bash5: -c: line 0: `case in do do) echo in; esac'
+bash5: -c: line 0: syntax error near unexpected token `('
+bash5: -c: line 0: `for()'
+in
+done
+ok 1
index 12ff88c2998e7e279bffd1b4e215b28635f88e8e..6e020a4ba64236829090a8f5714d2306fc471462 100644 (file)
@@ -2,3 +2,5 @@
 
 # this has to be in a separate file to get desired EOF behavior
 ${THIS_SH} ./parser1.sub
+
+${THIS_SH} ./posix2syntax.sub
diff --git a/tests/posix2syntax.sub b/tests/posix2syntax.sub
new file mode 100644 (file)
index 0000000..e7dda58
--- /dev/null
@@ -0,0 +1,53 @@
+: ${THIS_SH:=./bash}
+bashname=bash${BASH_VERSION%%.*}
+
+# tests for Posix grammar special cases
+
+# Posix grammar rule 5
+${THIS_SH} -c 'for invalid-name in a b c; do echo error; done' $bashname
+
+# Posix grammar rule 6: third word in FOR or SELECT
+for i; do echo; done; echo in
+for i; do echo in; done
+for i do echo in; done
+
+select i; do echo; done; echo in
+select i; do echo in; done; echo in
+select i do echo in; done; echo in
+
+# Posix grammar rule 4: when PATTERN == ESAC, return ESAC
+${THIS_SH} -c 'case x in esac) echo done; esac' $bashname
+
+# Posix grammar rule 6: third word in CASE
+${THIS_SH} -c 'case in in in) echo in; esac;' $bashname
+${THIS_SH} -c 'case in do do) echo in; esac' $bashname
+
+# Posix grammar rule 8: function NAME
+${THIS_SH} -o posix -c 'for()
+{
+echo function for;
+}' $bashname
+
+for for in for; do echo in; echo done; done
+
+${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) do : ; done' $bashname
+${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) { : ; }' $bashname
+
+# bug report: IN turning on unwanted alias expansion
+${THIS_SH} -o posix -c '
+alias foo='two words'
+foo_word='foo'
+case "$foo_word"
+in
+       foo) echo "bad 1";;
+esac' $bashname
+
+${THIS_SH} -o posix -c '
+alias foo='oneword'
+foo_word='foo'
+case "$foo_word"
+in
+       foo) echo "ok 1";;
+esac' $bashname
+
+
index 0ba6555aa3202642d8b7184c747103a2022fc639..53a08e3b698f427d1f9ca0ff89a723b79dd99adb 100644 (file)
@@ -37,5 +37,247 @@ argv[1] = <'bar>
 argv[1] = <foo 'bar baz>
 argv[1] = <}z>
 argv[1] = <''z}>
-./posixexp.tests: line 77: unexpected EOF while looking for matching `}'
-./posixexp.tests: line 78: syntax error: unexpected end of file
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1 2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <1>
+argv[2] = <2>
+argv[1] = <12>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <12>
+argv[1] = <1 2>
+argv[1] = <1 2>
+argv[1] = <12>
+argv[1] = <12>
+normal IFS
+argv[1] = <abc>
+argv[2] = <def>
+argv[3] = <ghi>
+argv[4] = <jkl>
+argv[1] = <abc>
+argv[2] = <def>
+argv[3] = <ghi>
+argv[4] = <jkl>
+argv[1] = <abc>
+argv[2] = <def>
+argv[3] = <ghi>
+argv[4] = <jkl>
+null IFS
+argv[1] = < abc>
+argv[2] = <def ghi>
+argv[3] = <jkl >
+argv[1] = < abc def ghi jkl >
+argv[1] = < abc>
+argv[2] = <def ghi>
+argv[3] = <jkl >
+non-standard IFS
+argv[1] = < abc>
+argv[2] = <def ghi>
+argv[3] = <jkl >
+argv[1] = < abc def ghi jkl >
+argv[1] = < abc def ghi jkl >
+unset IFS
+argv[1] = < abc>
+argv[2] = <def ghi>
+argv[3] = <jkl >
+argv[1] = < abc def ghi jkl >
+argv[1] = < abc def ghi jkl >
+
+001: IFS = (unset): unset -v foo; set -- ${foo=$*}
+soh stx etx del   / soh stx etx del
+
+002: IFS = (unset): unset -v foo; set -- ${foo="$*"}
+soh stx etx del   / soh stx etx del
+
+003: IFS = (unset): unset -v foo; set -- "${foo=$*}"
+soh stx etx del   / soh stx etx del
+
+004: IFS = (unset): foo=; set -- ${foo:=$*}
+soh stx etx del   / soh stx etx del
+
+005: IFS = (unset): foo=; set -- ${foo:="$*"}
+soh stx etx del   / soh stx etx del
+
+006: IFS = (unset): foo=; set -- "${foo:=$*}"
+soh stx etx del   / soh stx etx del
+
+007: IFS = (unset): unset -v foo; set -- ${foo=$@}
+soh stx etx del   / soh stx etx del
+
+008: IFS = (unset): unset -v foo; set -- ${foo="$@"}
+soh stx etx del   / soh stx etx del
+
+009: IFS = (unset): unset -v foo; set -- "${foo=$@}"
+soh stx etx del   / soh stx etx del
+
+010: IFS = (unset): foo=; set -- ${foo:=$@}
+soh stx etx del   / soh stx etx del
+
+011: IFS = (unset): foo=; set -- ${foo:="$@"}
+soh stx etx del   / soh stx etx del
+
+012: IFS = (unset): foo=; set -- "${foo:=$@}"
+soh stx etx del   / soh stx etx del
+
+013: IFS = (null): unset -v foo; set -- ${foo=$*}
+soh stx etx del   / soh stx etx del
+
+014: IFS = (null): unset -v foo; set -- ${foo="$*"}
+soh stx etx del   / soh stx etx del
+
+015: IFS = (null): unset -v foo; set -- "${foo=$*}"
+soh stx etx del   / soh stx etx del
+
+016: IFS = (null): foo=; set -- ${foo:=$*}
+soh stx etx del   / soh stx etx del
+
+017: IFS = (null): foo=; set -- ${foo:="$*"}
+soh stx etx del   / soh stx etx del
+
+018: IFS = (null): foo=; set -- "${foo:=$*}"
+soh stx etx del   / soh stx etx del
+
+019: IFS = (null): unset -v foo; set -- ${foo=$@}
+soh stx etx del   / soh stx etx del
+
+020: IFS = (null): unset -v foo; set -- ${foo="$@"}
+soh stx etx del   / soh stx etx del
+
+021: IFS = (null): unset -v foo; set -- "${foo=$@}"
+soh stx etx del   / soh stx etx del
+
+022: IFS = (null): foo=; set -- ${foo:=$@}
+soh stx etx del   / soh stx etx del
+
+023: IFS = (null): foo=; set -- ${foo:="$@"}
+soh stx etx del   / soh stx etx del
+
+024: IFS = (null): foo=; set -- "${foo:=$@}"
+soh stx etx del   / soh stx etx del
+
+025: IFS = x: unset -v foo; set -- ${foo=$*}
+soh stx etx del   / soh stx etx del
+
+026: IFS = x: unset -v foo; set -- ${foo="$*"}
+soh stx etx del   / soh stx etx del
+
+027: IFS = x: unset -v foo; set -- "${foo=$*}"
+soh stx etx del   / soh stx etx del
+
+028: IFS = x: foo=; set -- ${foo:=$*}
+soh stx etx del   / soh stx etx del
+
+029: IFS = x: foo=; set -- ${foo:="$*"}
+soh stx etx del   / soh stx etx del
+
+030: IFS = x: foo=; set -- "${foo:=$*}"
+soh stx etx del   / soh stx etx del
+
+031: IFS = x: unset -v foo; set -- ${foo=$@}
+soh stx etx del   / soh stx etx del
+
+032: IFS = x: unset -v foo; set -- ${foo="$@"}
+soh stx etx del   / soh stx etx del
+
+033: IFS = x: unset -v foo; set -- "${foo=$@}"
+soh stx etx del   / soh stx etx del
+
+034: IFS = x: foo=; set -- ${foo:=$@}
+soh stx etx del   / soh stx etx del
+
+035: IFS = x: foo=; set -- ${foo:="$@"}
+soh stx etx del   / soh stx etx del
+
+036: IFS = x: foo=; set -- "${foo:=$@}"
+soh stx etx del   / soh stx etx del
+
+037: IFS = sp  ht  nl: unset -v foo; set -- ${foo=$*}
+soh stx etx del   / soh stx etx del
+
+038: IFS = sp  ht  nl: unset -v foo; set -- ${foo="$*"}
+soh stx etx del   / soh stx etx del
+
+039: IFS = sp  ht  nl: unset -v foo; set -- "${foo=$*}"
+soh stx etx del   / soh stx etx del
+
+040: IFS = sp  ht  nl: foo=; set -- ${foo:=$*}
+soh stx etx del   / soh stx etx del
+
+041: IFS = sp  ht  nl: foo=; set -- ${foo:="$*"}
+soh stx etx del   / soh stx etx del
+
+042: IFS = sp  ht  nl: foo=; set -- "${foo:=$*}"
+soh stx etx del   / soh stx etx del
+
+043: IFS = sp  ht  nl: unset -v foo; set -- ${foo=$@}
+soh stx etx del   / soh stx etx del
+
+044: IFS = sp  ht  nl: unset -v foo; set -- ${foo="$@"}
+soh stx etx del   / soh stx etx del
+
+045: IFS = sp  ht  nl: unset -v foo; set -- "${foo=$@}"
+soh stx etx del   / soh stx etx del
+
+046: IFS = sp  ht  nl: foo=; set -- ${foo:=$@}
+soh stx etx del   / soh stx etx del
+
+047: IFS = sp  ht  nl: foo=; set -- ${foo:="$@"}
+soh stx etx del   / soh stx etx del
+
+048: IFS = sp  ht  nl: foo=; set -- "${foo:=$@}"
+soh stx etx del   / soh stx etx del
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <^A^B^C^?>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+[  abc    def  ghi  jkl /  abc    def  ghi  jkl ]
+[  abc    def  ghi  jkl ]
+[  abc    def  ghi  jkl /  abc    def  ghi  jkl /  abc    def  ghi  jkl ]
+5: notOK
+OK
+OK
+5: $'not\ttoo\nbad'
+./posixexp.tests: line 83: unexpected EOF while looking for matching `}'
+./posixexp.tests: line 84: syntax error: unexpected end of file
index 60be1c741d50cc96f323282c01c3dcde7f2ede0a..3368711fb9c6cfd4ba632194117f349509d13ecb 100644 (file)
@@ -72,6 +72,12 @@ ${THIS_SH} ./posixexp1.sub || echo "bash posixexp1.sub: test $? failed"
 THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp2.sub || echo "sh posixexp2.sub: test $? failed"
 rm -f $TMPDIR/sh
 
+${THIS_SH} ./posixexp3.sub
+${THIS_SH} ./posixexp4.sub
+${THIS_SH} ./posixexp5.sub
+${THIS_SH} ./posixexp6.sub
+${THIS_SH} ./posixexp7.sub
+
 # this will be an error
 foo=bar
 echo "${foo:-"a}"
index ce0b29dcf7166d67de68e7205026a3f5204381db..91718e3d36fe5a9cdce7cf46fa37b2e22f5e4877 100644 (file)
@@ -27,4 +27,12 @@ ${THIS_SH} -uc 'echo $1' 2>/dev/null && exit 20
 ${THIS_SH} -uc 'echo $1' ${THIS_SH} xnotthere >/dev/null || exit 21
 ${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere 2>/dev/null && exit 22
 ${THIS_SH} -uc 'echo $2' ${THIS_SH} xnotthere ynotthere >/dev/null || exit 23
+
+${THIS_SH} -uc 'echo $! ; exit 24' 2>/dev/null
+${THIS_SH} -uc 'echo ${!} ; exit 25' 2>/dev/null
+${THIS_SH} -uc 'echo ${!,} ; exit 26' 2>/dev/null
+
+${THIS_SH} -uc 'echo ${!-ok 27} >/dev/null || exit 27'
+${THIS_SH} -uc 'echo ${2-ok 28} >/dev/null || exit 28'
+
 exit 0
index f48d0887bde9f465def6b368f52e86431fa6071a..397769da0df2dfbcaaad74ec89f463dce86de241 100644 (file)
@@ -18,4 +18,7 @@ ${THIS_SH} -c 'echo ${1?}' 2>/dev/null && exit 11
 ${THIS_SH} -c 'echo ${1?}' ${THIS_SH} x >/dev/null || exit 12
 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x 2>/dev/null && exit 13
 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x y >/dev/null || exit 14
+
+${THIS_SH} -c $'echo $(( x+ )) \n exit 0' ${THIS_SH} 2>/dev/null && exit 15
+
 exit 0
index 57dd767d19cc52b984cf5e1ec4d6a136a662d427..2bec58e031e95eea22d66b42417f1259b65268b6 100644 (file)
@@ -1,6 +1,6 @@
 # From mksh
 
-set -o posix
+set -o posix ; shopt -u xpg_echo
 
 (echo 1 ${IFS+'}'z}) 2>&- || echo failed in 1
 (echo 2 "${IFS+'}'z}") 2>&- || echo failed in 2
diff --git a/tests/posixexp3.sub b/tests/posixexp3.sub
new file mode 100644 (file)
index 0000000..c40afa9
--- /dev/null
@@ -0,0 +1,52 @@
+set -- 1 2
+
+unset var
+recho ${var-$@}
+recho ${var-"$@"}
+recho ${var-$*}
+recho ${var-"$*"}
+
+unset -v a b c d
+recho ${a=$@}
+recho "$a"
+recho ${b="$@"}
+recho "$b"
+recho ${c=$*}
+recho "$c"
+recho ${d="$*"}
+recho "$d"
+
+IFS=
+unset var
+recho ${var-$@}
+recho ${var-"$@"}
+recho ${var-$*}
+recho ${var-"$*"}
+
+unset -v a b c d
+# Posix interp 221
+# there should never be any word splitting because IFS is null
+recho ${a=$@}
+recho "$a"
+recho $a
+recho ${b="$@"}
+recho "$b"
+recho $b
+recho ${c=$*}
+recho "$c"
+recho $c
+recho ${d="$*"}
+recho "$d"
+recho $d
+
+unset -v a b c d
+a=$@
+recho $a
+b="$@"
+recho $b
+c=$*
+recho $c
+d="$*"
+recho $d
+
+unset -v parameter a b c d
diff --git a/tests/posixexp4.sub b/tests/posixexp4.sub
new file mode 100644 (file)
index 0000000..22bfeca
--- /dev/null
@@ -0,0 +1,31 @@
+set -- ' abc' 'def ghi' 'jkl '
+
+echo normal IFS
+recho $@
+: ${var=$@}
+recho $var
+unset -v var
+recho ${var-$@}
+
+echo null IFS
+IFS=
+recho $@
+: ${var=$@}
+recho $var
+unset -v var
+recho ${var-$@}
+
+echo non-standard IFS
+IFS=:
+recho $@
+: ${var=$@}
+recho $var
+unset -v var
+recho ${var-$@}        # this is inconsistent
+
+echo unset IFS
+recho $@
+: ${var=$@}
+recho $var
+unset -v var
+recho ${var-$@}
diff --git a/tests/posixexp5.sub b/tests/posixexp5.sub
new file mode 100644 (file)
index 0000000..e477bbb
--- /dev/null
@@ -0,0 +1,51 @@
+# test suite contribution from Martijn Dekker
+
+defaultIFS=$IFS
+set -o errexit -o noglob
+(set -o pipefail) 2>/dev/null && set -o pipefail
+teststring=$(printf '\1\2\3\177')
+n=0
+
+trim_od() {
+       od -t a | sed -n '1 { s/^0*[[:blank:]]*//; s/[[:blank:]]*$//; p; }'
+}
+
+doTest() {
+       set -- "$teststring"
+       eval "$testcmd"
+       case ${IFS+s}${IFS:+n} in
+       ( sn )  i=$(printf %s "$IFS" | trim_od) ;;
+       ( s )   i='(null)' ;;
+       ( '' )  i='(unset)' ;;
+       ( * )   echo 'internal error!' >&2; exit 125 ;;
+       esac
+       printf '\n%03d: IFS = %s: %s\n' "$((n+=1))" "$i" "$testcmd"
+       printf %s "$*${foo+/}${foo-}" | trim_od
+}
+
+doAllTests() {
+       for testcmd in \
+               'unset -v foo; set -- ${foo=$*}' \
+               'unset -v foo; set -- ${foo="$*"}' \
+               'unset -v foo; set -- "${foo=$*}"' \
+               \
+               'foo=; set -- ${foo:=$*}' \
+               'foo=; set -- ${foo:="$*"}' \
+               'foo=; set -- "${foo:=$*}"' \
+               \
+               'unset -v foo; set -- ${foo=$@}' \
+               'unset -v foo; set -- ${foo="$@"}' \
+               'unset -v foo; set -- "${foo=$@}"' \
+               \
+               'foo=; set -- ${foo:=$@}' \
+               'foo=; set -- ${foo:="$@"}' \
+               'foo=; set -- "${foo:=$@}"'
+       do
+               doTest "$testcmd"
+       done
+}
+
+unset -v IFS; doAllTests
+IFS=''; doAllTests
+IFS='x'; doAllTests
+IFS=$defaultIFS; doAllTests
diff --git a/tests/posixexp6.sub b/tests/posixexp6.sub
new file mode 100644 (file)
index 0000000..ed38d53
--- /dev/null
@@ -0,0 +1,57 @@
+var=$'\01\02\03\177'
+
+bar=${unset:-$var}
+recho "$bar"
+unset -v bar
+bar=${unset:-"$var"}
+recho "$bar"
+
+foo=${parameter:=$var}
+
+recho "$foo"
+recho "$parameter"
+
+unset -v foo parameter
+
+foo=${parameter:="$var"}
+
+recho "$foo"
+recho "$parameter"
+
+unset -v foo parameter
+
+foo="${parameter:=$var}"
+
+recho "$foo"
+recho "$parameter"
+
+unset -v foo parameter
+
+recho ${parameter:=a\ b}
+unset -v parameter
+
+recho ${parameter:="a b"}
+unset -v parameter
+
+v='a b'
+
+recho ${parameter:=$v}
+unset -v parameter
+
+recho ${parameter:="$v"}
+unset -v parameter
+
+# unsetting IFS here
+
+set "  abc  " " def  ghi " "jkl "
+unset -v IFS var
+var=${var-$*}/${var-$*}
+printf '[%s]\n' "$var"
+
+unset -v var
+: ${var=$*}
+printf '[%s]\n' "$var"
+
+unset -v var
+: ${var:=$*/$*/${var-$*}}
+printf '[%s]\n' "$var"
diff --git a/tests/posixexp7.sub b/tests/posixexp7.sub
new file mode 100644 (file)
index 0000000..2e230cf
--- /dev/null
@@ -0,0 +1,13 @@
+# test the effect of quotes on the WORD in the posix pattern removal operators
+# a here document does not behave the same as double quotes
+x=notOK
+cat <<EOF
+5: ${x#$'not'}
+EOF
+
+echo "${x#'not'}"
+echo "${x#$'not'}"
+
+cat <<EOF
+5: $'not\ttoo\nbad'
+EOF
index 91fac3b871d99a26f5f5db5ba4addd468c4ee563..65c557a371afe3b14b1bcf513f4556bb5a35cf00 100644 (file)
@@ -20,13 +20,15 @@ case 9 in
 [![:alpha:]])  echo ok 4;;
 esac
 
-# invalid character class expressions are just characters to be matched
 case a in
 [:al:])                echo ok 5;;
 esac
 
+# invalid character class expressions are no longer just characters to be
+# matched
 case a in
-[[:al:])       echo ok 6;;
+[[:al:])       echo bad 6;;
+*)             echo ok 6;;
 esac
 
 case '!' in
@@ -230,4 +232,3 @@ case a in
 [[=b=])                echo oops;;     # an incomplete equiv class is just a string
 *)             echo ok 3;;
 esac
-
index ae34a89090dc56d3d5ca04dbee2644751c04fc92..593f084b2df62cfc30a973b58e7d270473cb1c09 100644 (file)
@@ -148,6 +148,7 @@ b
 
 xx
 xx
+<   ><   >
        one
 one\ctwo
 4\.2
index e72f5c8bb29702de7c58ace09a793cea8e067015..9dbac6f0bac97fdc13b87d34f4c5708ca2dffd65 100644 (file)
@@ -308,6 +308,9 @@ shopt -s nullglob extglob
 echo "x$(printf "%b" @(hugo))x"
 printf -v var "%b" @(hugo); echo "x${var}x"
 
+# make sure that missing arguments are always handled like the empty string
+printf "<%3s><%3b>\n"
+
 # tests variable assignment with -v
 ${THIS_SH} ./printf1.sub
 
@@ -316,4 +319,3 @@ ${THIS_SH} ./printf2.sub
 ${THIS_SH} ./printf3.sub
 
 ${THIS_SH} ./printf4.sub
-
index ec14fa34dff1b00754ff48b49dbdb7d436e02216..d45e101cb79595eeb11163bf0c2450f1270ed667 100644 (file)
@@ -6,7 +6,7 @@ SECS=1275250155
 export TZ=EST5EDT
 
 case $SHELLSTART in
-*s*)   SHELLSTART=$(perl -e 'print time') ; DATESECS=false ;;  # take a shot
+*s*)   SHELLSTART=$EPOCHSECONDS ; DATESECS=false ;;    # take a shot
 *)     DATESECS=true ;;
 esac
 
@@ -15,7 +15,7 @@ printf "%(abde)Z\n" -1
 
 printf "%(%e-%b-%Y %T)T\n" $SECS
 
-printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || perl -e 'print time')
+printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || echo $EPOCHSECONDS )
 printf -v v2 "%(%e-%b-%Y %T)T\n" -1
 
 case $v1 in
diff --git a/tests/procsub.right b/tests/procsub.right
new file mode 100644 (file)
index 0000000..cf1dbb1
--- /dev/null
@@ -0,0 +1,29 @@
+test1
+foo
+test2
+test3
+test4
+8
+test5
+test6
+test7
+test8
+test8a
+test9
+hi
+bye
+l8r
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+intern
+1
+0
+0
+0
+0
+extern
+1
+0
+0
+0
+0
+123
diff --git a/tests/procsub.tests b/tests/procsub.tests
new file mode 100644 (file)
index 0000000..01ba46a
--- /dev/null
@@ -0,0 +1,105 @@
+# process substitution constructs that have caused problems in the past
+. ./test-glue-functions
+
+eval cat <(echo test1)
+eval "echo foo;cat" <(echo test2)
+
+unset f
+f=<(echo test3); cat "$f"
+
+unset f
+eval f=<(echo test4) "; cat \$f"
+
+unset f
+
+FN=$TMPDIR/bashtest-procsub-$$
+cat >"$FN" <<EOF
+echo "test 12" | wc -c | _cut_leading_spaces
+cat "\$1"
+EOF
+
+source "$FN" <(echo test5)
+rm -f "$FN"
+unset FN
+
+cat <( echo test6 ) <( echo test7 )
+cat <( echo test8 ; sleep 2; echo test8a ) <( echo test9 )
+
+# Zev Weiss 11/7/2012
+fn() { cat | cat "$1"; }
+fn <(:) < /dev/null
+
+unset -f fn
+
+f1(){
+  cat $1
+  date >/dev/null
+}
+f2(){
+  date >/dev/null
+  cat $1
+}
+cat <(echo hi)
+f1 <(echo bye)
+f2 <(echo l8r)
+
+unset -f f1 f2
+
+# set up conditions for test
+ulimit -n 256
+
+bug()
+{
+c=$(ulimit -n)
+let c+=100
+while let c--
+do
+       while read -ru3 x
+       do
+               echo -n :
+       done 3< <(echo x)
+done
+echo
+}
+
+bug
+unset -f bug
+
+count_lines()
+{
+    wc -l < $1
+
+#    case "$1" in
+#    *sh-np*)  [ -e "$1" ] || { echo 0; echo 0; echo 0; echo 0; return; } ;;
+#    *) ;;
+#    esac
+
+    wc -l < $1
+    wc -l < $1
+    true | wc -l < $1
+    wc -l < $1
+}
+
+echo intern
+count_lines <(date) | _cut_leading_spaces
+unset -f count_lines
+
+echo extern
+FN=$TMPDIR/bashtest-$$
+cat >$FN << \EOF
+wc -l < $1
+wc -l < $1
+wc -l < $1
+true | wc -l < $1
+wc -l < $1
+EOF
+
+${THIS_SH} -c "source $FN <(date)" | _cut_leading_spaces
+rm -f $FN
+
+moo() { ls -l "$1" >/dev/null; ls -l "$1" >/dev/null; }; moo >(true)
+moo() { ls -al "$1" >/dev/null; (true); ls -al "$1" >/dev/null; }; moo >(true)
+
+unset -f moo
+
+${THIS_SH} ./procsub1.sub
diff --git a/tests/procsub1.sub b/tests/procsub1.sub
new file mode 100644 (file)
index 0000000..0e68f3b
--- /dev/null
@@ -0,0 +1,5 @@
+# make sure we can wait for the last process substitution, since it sets $!
+cat <(exit 123) >/dev/null
+
+wait "$!"
+echo $?
index 00b55c623d7719a9a5a10c6ddbcc8cdc7b4f9f76..e4eb9bb95c288481eac43e9526c62624b79022c7 100644 (file)
@@ -66,6 +66,12 @@ argv[2] = <ab>
 ${
 argv[1] = <(")>
 argv[1] = <(")>
+string \
+string \
+string \
+string \
+string \
+string \}
 'weferfds'\''dsfsdf' 
 'weferfdsdsfsdf'
 'weferfds'\''dsfsdf'
@@ -80,3 +86,37 @@ test'string
 a'b'c
 foo b   c baz
 foo 'bar baz
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+=====
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+=====
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+=====
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
index 0c55293bb05aebf821e30bfafa966f0a2bce516a..d7f13cd0c3005462724667e12a02c6a1d356f32f 100644 (file)
@@ -109,4 +109,16 @@ recho `echo "(\\")"`
 # ultimate workaround
 recho `echo "(\")"`
 
+# various strings ending in backslashes
+
+echo 'string \'
+echo "string \\"
+
+echo string\ \\
+
+echo ${foo:-'string \'}
+echo "${foo:-string \\}"
+echo ${foo:-string \\\}}
+
 ${THIS_SH} ./quote1.sub
+${THIS_SH} ./quote2.sub
index c83e64ac39b0b68eea139d808625f0ad493a278a..a9a1ef1552b972521d9a9fa1dd1f58dc32900965 100644 (file)
@@ -14,7 +14,7 @@ echo "'${test//"'"/}'"
 
 echo "'${test//"'"/"'\\''"}'"
 
-echo "'${test//"'"/\'\\'\'}'"
+printf "%s\n" "'${test//"'"/\'\\'\'}'"
 
 #echo "'${test//'/}'"   # hangs waiting for '
 #echo "'${test//"'"/'\\''}'" # hangs waiting for '
diff --git a/tests/quote2.sub b/tests/quote2.sub
new file mode 100644 (file)
index 0000000..7deb4cf
--- /dev/null
@@ -0,0 +1,42 @@
+x=x
+e=
+
+recho ${x:+""}
+recho ${x:+ ""}
+recho ${x:+"" }
+recho ${x:+"$e"}
+recho ${x:+ "$e"}
+recho ${x:+"$e""$e"""}
+recho ${x:+"$e""$e"""}
+recho ${x:+"$e" "$e"""}
+recho ${x:+"$e""$e" ""}
+recho ${x:+ "$e""$e"""}
+
+echo =====
+recho ${x:+''}
+recho ${x:+ ''}
+recho ${x:+'' }
+recho ${x:+'' ''}
+
+recho ${x:+$e''}
+recho ${x:+''$e}
+
+recho ${x:+''$e $e''}
+
+echo =====
+recho ${x:+"$(:)"}
+recho ${x:+ "$(:)"}
+recho ${x:+"$(:)""$(:)"""}
+recho ${x:+"$(:)""$(:)"""}
+recho ${x:+"$(:)" "$(:)"""}
+recho ${x:+"$(:)""$(:)" ""}
+recho ${x:+ "$(:)""$(:)"""}
+
+echo =====
+recho ${x:+"`:`"}
+recho ${x:+ "`:`"}
+recho ${x:+"`:`""`:`"""}
+recho ${x:+"`:`""`:`"""}
+recho ${x:+"`:`" "`:`"""}
+recho ${x:+"`:`""`:`" ""}
+recho ${x:+ "`:`""`:`"""}
index fe27dae3ef0b7fd1cba7ebfae1c638977d3db700..f67cd00e77e118e81a1a21ad6a1ecfc958254cfc 100644 (file)
@@ -25,43 +25,43 @@ echo $'\177' | ( read ; recho "$REPLY" )
 # the input stream
 echo $'ab\\\ncd' | ( read ; recho "$REPLY" )
 
-echo "A B " > /tmp/IN
+echo "A B " > $TMPDIR/IN
 unset x y z
-read x y z < /tmp/IN
+read x y z < $TMPDIR/IN
 echo 1: "x[$x] y[$y] z[$z]"
 echo 1a: ${z-z not set}
-read x < /tmp/IN
+read x < $TMPDIR/IN
 echo 2: "x[$x]"
-rm /tmp/IN
+rm $TMPDIR/IN
 
 # this is where the bash `read' behavior with respect to $REPLY differs
 # from ksh93
-echo "A B " > /tmp/IN
+echo "A B " > $TMPDIR/IN
 
-read < /tmp/IN
+read < $TMPDIR/IN
 echo "[$REPLY]"
 
-rm /tmp/IN
+rm $TMPDIR/IN
 
-echo " A B " > /tmp/IN
+echo " A B " > $TMPDIR/IN
 
-read < /tmp/IN
+read < $TMPDIR/IN
 echo "[$REPLY]"
 
-rm /tmp/IN
+rm $TMPDIR/IN
 
 # make sure that read with more variables than words sets the extra
 # variables to the empty string
 
 bvar=bvar
 cvar=cvar
-echo aa > /tmp/IN
-read avar bvar cvar < /tmp/IN
+echo aa > $TMPDIR/IN
+read avar bvar cvar < $TMPDIR/IN
 echo =="$avar"==
 echo =="$bvar"==
 echo =="$cvar"==
 
-rm /tmp/IN
+rm $TMPDIR/IN
 
 # test behavior of read with various settings of IFS
 
index c158e251884c01c206e190c738151b001ae5424d..d4ab60d52da1dcb783dbbe5350289779bfa57eee 100644 (file)
@@ -26,10 +26,10 @@ from stdin: aa
 to stdout
 ./redir4.sub: line 32: $fd: ambiguous redirect
 ./redir4.sub: line 33: $fd: ambiguous redirect
-/tmp/err-and-out:
+err-and-out:
 to stdout
 to stderr
-/tmp/err-and-out:
+err-and-out:
 to stdout
 to stderr
 0 -- 3 0
@@ -44,7 +44,7 @@ kl
 ab
 cd
 cd
-./redir.tests: line 154: redir1.*: No such file or directory
+./redir.tests: line 157: redir1.*: No such file or directory
 # tests of ksh93-like dup-and-close redirection operators
 exec 9<$0
 
@@ -64,14 +64,14 @@ f
 typeset -f f
 
 # make sure it was closed
-read -u 5 foo
+read -u 5 foo 2>&1 | grep -q 'invalid file descriptor'
 echo after read
 
 exec 5<&0
 
 exec <&-
 
-read abcde
+read abcde 2>&1 | grep -q 'read error'
 
 exec 0<&9-
 read line
@@ -84,9 +84,7 @@ f ()
         echo "$line";
     done
 }
-./redir5.sub: line 20: read: 5: invalid file descriptor: Bad file descriptor
 after read
-./redir5.sub: line 27: read: read error: 0: Bad file descriptor
 # tests of ksh93-like dup-and-close redirection operators
 /
 /
@@ -141,20 +139,10 @@ bix ()
 foo
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 1
-./redir11.sub: line 8: $a: Bad file descriptor
-./redir11.sub: line 9: $(echo $a): Bad file descriptor
 7
 after: 42
-./redir11.sub: line 24: echo: write error: Bad file descriptor
-./redir11.sub: line 25: echo: write error: Bad file descriptor
-./redir11.sub: line 26: $(a=4 foo): Bad file descriptor
-./redir11.sub: line 27: $(a=4 foo): Bad file descriptor
-./redir11.sub: line 30: $a: Bad file descriptor
-./redir11.sub: line 31: $(echo $a): Bad file descriptor
-./redir11.sub: line 39: $(ss= declare -i ss): ambiguous redirect
+./redir11.sub: line 40: $(ss= declare -i ss): ambiguous redirect
 after: 42
 a+=3
 foo
 foo
-./redir11.sub: line 53: $(echo $a): Bad file descriptor
-123
index 24e3cd1a55f870b4f6d492bf5bee48733f0e2743..6af021948c9eeb4befb487e01dbd6dbd2ae1688e 100644 (file)
@@ -57,6 +57,9 @@ echo to c 1>&6
 cat $TMPDIR/bash-c
 echo "Point 5"
 
+# clean up before running scripts
+exec 4>&- 5>&- 6<&-
+
 rm -f $TMPDIR/bash-a $TMPDIR/bash-b $TMPDIR/bash-c
 
 #
@@ -191,4 +194,3 @@ ${THIS_SH} ./redir9.sub
 ${THIS_SH} ./redir10.sub
 
 ${THIS_SH} ./redir11.sub
-${THIS_SH} ./redir12.sub
index 59ed493a3cee30a64f89279ec6fb6747d4f926dd..a919602c744b03478e3ef796e29a1654c97b59ee 100644 (file)
@@ -4,9 +4,10 @@
 a=1
 a=4 b=7 ss=4 echo $a
 
+# use grep to avoid differences due to different system error messages
 a=42
-a=2 echo foo >&$a
-a=2 echo foo >&$(echo $a)
+a=2 echo foo 2>&1 >&$a | { grep -q '\$a: Bad file' || echo 'redir11 bad 1'; }
+a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 2'; }
 
 foo()
 {
@@ -21,14 +22,14 @@ a=4 b=7 foo
 echo after: $a
 
 unset a
-a=4 echo foo >&$(foo)
-a=1 echo foo >&$(foo)
-a=1 echo foo >&$(a=4 foo)
-echo foo >&$(a=4 foo)
+a=4 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 3'; }
+a=1 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 4'; }
+a=1 echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 5'; }
+echo foo 2>&1 >&$(a=4 foo) | { grep -q 'Bad file' || echo 'redir11 bad 6'; }
 
 a=42
-a=2 echo foo >&$a
-a=2 echo foo >&$(echo $a)
+a=2 echo foo 2>&1 >&$a | { grep -q 'Bad file' || echo 'redir11 bad 7'; }
+a=2 echo foo 2>&1 >&$(echo $a) | { grep -q 'Bad file' || echo 'redir11 bad 8'; }
 
 unset -f foo
 foo()
@@ -50,4 +51,4 @@ a=9 echo foo >&$(echo $a)
 a=2
 a=9 eval echo foo >&$(echo $a)
 a=2
-a=9 eval echo foo '>&$(echo $a)'
+a=9 eval echo foo '2>&1 >&$(echo $a)' | { grep -q 'Bad file' || echo 'redir11 bad 9'; }
index 47344554e5d5aee991f38628841d227e46af9b5d..14406d011a6f61c61242a6941c13036a785a7241 100644 (file)
@@ -34,23 +34,23 @@ exec 4>&$fd
 
 exec 3>&1 4>&2
 
-exec >&/tmp/err-and-out
+exec >&${TMPDIR}/err-and-out
 echo to stdout
 echo to stderr >&2
 
 exec 1>&3 2>&4
-echo /tmp/err-and-out:
-cat /tmp/err-and-out
+echo err-and-out:
+cat ${TMPDIR}/err-and-out
 
-rm /tmp/err-and-out
+rm ${TMPDIR}/err-and-out
 
-fd=/tmp/err-and-out
+fd=${TMPDIR}/err-and-out
 exec >&$fd
 echo to stdout
 echo to stderr >&2
 
 exec 1>&3 2>&4
-echo /tmp/err-and-out:
-cat /tmp/err-and-out
+echo err-and-out:
+cat ${TMPDIR}/err-and-out
 
-rm /tmp/err-and-out
+rm ${TMPDIR}/err-and-out
index 5d59d39c522bcced7e37160096ca09dc0a9e04d9..ee7b045af819bd17938c5417eba27d244c8ee8bb 100644 (file)
@@ -17,14 +17,14 @@ f
 typeset -f f
 
 # make sure it was closed
-read -u 5 foo
+read -u 5 foo 2>&1 | grep -q 'invalid file descriptor' 
 echo after read
 
 exec 5<&0
 
 exec <&-
 
-read abcde
+read abcde 2>&1 | grep -q 'read error'
 
 exec 0<&9-
 read line
index 60cc68b0a1034f2dfe5a5960ea264f330d4007ef..c735e5233c4a55e382682d1c0876dec5b7f67210 100644 (file)
@@ -6,3 +6,5 @@ pwd
 echo $?
 echo $?
 echo $?
+
+cd $OLDPWD
index 5f972a14d922da50fda99b4cea826342ecab1914..88753f2f27c511b310dd3851f0662238b4eeb9c2 100644 (file)
@@ -56,4 +56,6 @@ exec 0<&7
 exec 7<&-
 
 rm -f infile
+
+cd $OLDPWD
 exit 0
index 022b2ca1f1bdf28cbbae309914c5cb83eb266418..a728f13793443a0d0f4bab3b164db05c97fe7927 100644 (file)
@@ -1,13 +1,19 @@
-./rsh.tests: line 9: cd: restricted
-./rsh.tests: line 10: PATH: readonly variable
-./rsh.tests: line 11: SHELL: readonly variable
-./rsh.tests: line 12: /bin/sh: restricted: cannot specify `/' in command names
-./rsh.tests: line 14: .: ./source.sub3: restricted
-./rsh.tests: line 17: /tmp/restricted: restricted: cannot redirect output
-./rsh.tests: line 21: /tmp/restricted: restricted: cannot redirect output
-./rsh.tests: line 26: command: -p: restricted
-./rsh.tests: line 28: set: +r: invalid option
+./rsh1.sub: line 9: /bin/sh: restricted
+./rsh1.sub: line 11: sh: not found
+./rsh1.sub: line 12: a: command not found
+./rsh2.sub: line 10: hash: /bin/sh: restricted
+./rsh2.sub: line 12: hash: sh: not found
+./rsh2.sub: line 13: a: command not found
+./rsh.tests: line 12: cd: restricted
+./rsh.tests: line 13: PATH: readonly variable
+./rsh.tests: line 14: SHELL: readonly variable
+./rsh.tests: line 15: /bin/sh: restricted: cannot specify `/' in command names
+./rsh.tests: line 17: .: ./source.sub3: restricted
+./rsh.tests: line 20: /tmp/restricted: restricted: cannot redirect output
+./rsh.tests: line 24: /tmp/restricted: restricted: cannot redirect output
+./rsh.tests: line 29: command: -p: restricted
+./rsh.tests: line 31: set: +r: invalid option
 set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
-./rsh.tests: line 29: set: restricted: invalid option name
-./rsh.tests: line 31: exec: restricted
+./rsh.tests: line 32: set: restricted: invalid option name
+./rsh.tests: line 34: exec: restricted
 ./rsh.tests: after exec
index ffdf6e55396bf0d6e0c5fad64d6761ed0e89804a..d1d777846a50bc0bd1d55f03631098206bb9c310 100644 (file)
@@ -4,6 +4,9 @@
 #      adding builtins dynamically with enable -f
 #      importing function definitions from environment
 
+${THIS_SH} ./rsh1.sub
+${THIS_SH} ./rsh2.sub
+
 set -r
 
 cd /
diff --git a/tests/rsh1.sub b/tests/rsh1.sub
new file mode 100644 (file)
index 0000000..fdd4ddd
--- /dev/null
@@ -0,0 +1,16 @@
+cd ${TMPDIR:-/tmp}
+cp /bin/sh .
+
+PATH=/rbin:/usr/local/rbin
+hash -p /bin/rm rm
+
+set -r
+
+BASH_CMDS[x]=/bin/sh
+
+BASH_CMDS[a]="sh"
+a -c 'echo hello'
+
+rm -f sh a
+
+exit 0
diff --git a/tests/rsh2.sub b/tests/rsh2.sub
new file mode 100644 (file)
index 0000000..8c82c68
--- /dev/null
@@ -0,0 +1,17 @@
+cd ${TMPDIR:-/tmp}
+cp /bin/sh .
+ln sh a
+
+PATH=/rbin:/usr/local/rbin
+hash -p /bin/rm rm
+
+set -r
+
+hash -p /bin/sh sh
+
+hash -p sh a
+a -c 'echo hello'
+
+rm -f sh a
+
+exit 0
index 2882fe079b7c4669c0b059df73e61318a6cf4b46..34d3e4c8ebbe645f92acb40a2f4a019855db67ce 100644 (file)
@@ -9,15 +9,21 @@ SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'`
 BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX  # for now
 export BASH_TSTOUT
 
-trap 'rm -f $BASH_TSTOUT' 0
+trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15
 
 PATH=.:$PATH   # just to get recho/zecho/printenv if not run via `make tests'
 export PATH
 
 # unset BASH_ENV only if it is set
 [ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
-# ditto for SHELLOPTS
-#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS
+# can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash
+if [ "${BASH_VERSION+set}" = "set" ]; then
+       export -n SHELLOPTS     # just make sure its not exported
+       set +o posix
+       typeset -p SHELLOPTS
+else
+       [ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS 2>/dev/null
+fi
 
 : ${THIS_SH:=../bash}
 export THIS_SH
diff --git a/tests/run-dynvar b/tests/run-dynvar
new file mode 100644 (file)
index 0000000..26c5434
--- /dev/null
@@ -0,0 +1,2 @@
+${THIS_SH} ./dynvar.tests > ${BASH_TSTOUT} 2>&1
+diff ${BASH_TSTOUT} dynvar.right && rm -f ${BASH_TSTOUT}
index 43aa276fd1de078e033e78fec4c2612fec844755..246501ccf6b08c548662417cc55b5fd152ec16f6 100644 (file)
@@ -1,4 +1,7 @@
 PATH=$PATH:`pwd`
 export PATH
-${THIS_SH} ./glob.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT}
-diff ${BASH_TSTOUT} glob.right && rm -f ${BASH_TSTOUT}
+
+( diff -a glob.right glob.right >/dev/null 2>&1 ) && AFLAG=-a
+
+${THIS_SH} ./glob.tests > ${BASH_TSTOUT} 2>&1
+diff ${AFLAG} ${BASH_TSTOUT} glob.right && rm -f ${BASH_TSTOUT}
index c7fba73e6b87dfd53db5add6e426103289fd3753..bbb9da189c21252b9568f795ad526e54815cf173 100644 (file)
@@ -41,6 +41,8 @@ do
        run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;;
        run-ifs-posix|run-posix2|run-posixpat|run-posixpipe) echo $x ; sh $x ;;
        run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;;
+       run-dynvar) echo $x ; sh $x ;;
+       ;;
        *)      ;;
        esac
        rm -f "$BASH_TSTOUT"
index 44baac4cbce23857140e00305bfce8215486fbce..985c31113385f9cdb54fc55891847f94da4dd173 100644 (file)
@@ -1,4 +1,8 @@
+# See whether or not we can use `diff -a'
+( diff -a ./nquote4.right ./nquote4.right >/dev/null 2>&1 ) && AFLAG=-a
+
 echo warning: some of these tests will fail if you do not have UTF-8 >&2
 echo warning: locales installed on your system >&2
-${THIS_SH} ./nquote4.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT}
-diff ${BASH_TSTOUT} nquote4.right && rm -f ${BASH_TSTOUT}
+
+${THIS_SH} ./nquote4.tests > ${BASH_TSTOUT} 2>&1
+diff ${AFLAG} ${BASH_TSTOUT} nquote4.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/run-procsub b/tests/run-procsub
new file mode 100644 (file)
index 0000000..796faaa
--- /dev/null
@@ -0,0 +1,7 @@
+echo "warning: all of these tests will fail if process substitution has not" >&2
+echo "warning: been compiled into the shell or if the OS does not provide" >&2
+echo "warning: FIFOs or /dev/fd. Some tests may fail if the OS does not" >&2
+echo "warning: provide FIFOs." >&2
+
+${THIS_SH} ./procsub.tests > ${BASH_TSTOUT} 2>&1
+diff ${BASH_TSTOUT} procsub.right && rm -f ${BASH_TSTOUT}
index 5987a7f3e116d336d80001da45ff58b115a92a25..f147d70bf648898d190bf3f455ccd271cb5e8c4c 100644 (file)
@@ -1,2 +1,2 @@
-${THIS_SH} ./varenv.sh 2>&1 | grep -v '^expect' > ${BASH_TSTOUT}
+${THIS_SH} ./varenv.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT}
 diff ${BASH_TSTOUT} varenv.right && rm -f ${BASH_TSTOUT}
index a41a382a30a6ad1e4c3bb858ab81f9298baea660..259602e5ec35f741a4b07dab75b5aeda231a0a23 100644 (file)
 + x=i
 + case x in
 + x=i
++ foo=one
++ foo+=two
++ echo onetwo
+onetwo
 + set +x
 1
 2
index 648f0a9ebab64ef901ddd36a60d5c49f35db609c..531c53f6ac2126bff08a33406a437a22f73788c8 100755 (executable)
@@ -14,6 +14,11 @@ case x in
  0) x=i ;;
  *) x=i ;;
 esac
+
+foo=one
+foo+=two
+echo $foo
+
 set +x
 
 # test BASH_XTRACEFD
index 86d9ed6b3c7bfce9e48729004733393b5dd1d1ca..08db75f1724128959230e1dc3645ad2147d3f11a 100644 (file)
@@ -2,6 +2,7 @@
 shopt: usage: shopt [-pqsu] [-o] [optname ...]
 --
 shopt -u autocd
+shopt -u assoc_expand_once
 shopt -u cdable_vars
 shopt -s cdspell
 shopt -u checkhash
@@ -14,6 +15,7 @@ shopt -u compat40
 shopt -u compat41
 shopt -u compat42
 shopt -u compat43
+shopt -u compat44
 shopt -s complete_fullquote
 shopt -u direxpand
 shopt -u dirspell
@@ -25,7 +27,7 @@ shopt -u extglob
 shopt -s extquote
 shopt -u failglob
 shopt -s force_fignore
-shopt -u globasciiranges
+shopt -s globasciiranges
 shopt -u globstar
 shopt -u gnu_errfmt
 shopt -u histappend
@@ -37,6 +39,8 @@ shopt -u inherit_errexit
 shopt -s interactive_comments
 shopt -u lastpipe
 shopt -u lithist
+shopt -u localvar_inherit
+shopt -u localvar_unset
 shopt -u login_shell
 shopt -u mailwarn
 shopt -u no_empty_cmd_completion
@@ -44,6 +48,7 @@ shopt -u nocaseglob
 shopt -u nocasematch
 shopt -u nullglob
 shopt -s progcomp
+shopt -u progcomp_alias
 shopt -s promptvars
 shopt -u restricted_shell
 shopt -u shift_verbose
@@ -60,6 +65,7 @@ shopt -s complete_fullquote
 shopt -s expand_aliases
 shopt -s extquote
 shopt -s force_fignore
+shopt -s globasciiranges
 shopt -s hostcomplete
 shopt -s interactive_comments
 shopt -s progcomp
@@ -67,6 +73,7 @@ shopt -s promptvars
 shopt -s sourcepath
 --
 shopt -u autocd
+shopt -u assoc_expand_once
 shopt -u cdable_vars
 shopt -u checkhash
 shopt -u checkjobs
@@ -77,6 +84,7 @@ shopt -u compat40
 shopt -u compat41
 shopt -u compat42
 shopt -u compat43
+shopt -u compat44
 shopt -u direxpand
 shopt -u dirspell
 shopt -u dotglob
@@ -84,7 +92,6 @@ shopt -u execfail
 shopt -u extdebug
 shopt -u extglob
 shopt -u failglob
-shopt -u globasciiranges
 shopt -u globstar
 shopt -u gnu_errfmt
 shopt -u histappend
@@ -94,17 +101,21 @@ shopt -u huponexit
 shopt -u inherit_errexit
 shopt -u lastpipe
 shopt -u lithist
+shopt -u localvar_inherit
+shopt -u localvar_unset
 shopt -u login_shell
 shopt -u mailwarn
 shopt -u no_empty_cmd_completion
 shopt -u nocaseglob
 shopt -u nocasematch
 shopt -u nullglob
+shopt -u progcomp_alias
 shopt -u restricted_shell
 shopt -u shift_verbose
 shopt -u xpg_echo
 --
 autocd                 off
+assoc_expand_once      off
 cdable_vars            off
 checkhash              off
 checkjobs              off
@@ -115,6 +126,7 @@ compat40            off
 compat41               off
 compat42               off
 compat43               off
+compat44               off
 direxpand              off
 dirspell               off
 dotglob                off
@@ -122,7 +134,6 @@ execfail            off
 extdebug               off
 extglob                off
 failglob               off
-globasciiranges        off
 globstar               off
 gnu_errfmt             off
 histappend             off
@@ -132,12 +143,15 @@ huponexit         off
 inherit_errexit        off
 lastpipe               off
 lithist                off
+localvar_inherit       off
+localvar_unset         off
 login_shell            off
 mailwarn               off
 no_empty_cmd_completion        off
 nocaseglob             off
 nocasematch            off
 nullglob               off
+progcomp_alias         off
 restricted_shell       off
 shift_verbose          off
 xpg_echo               off
index 2b2f61d0b09e4e4c7c03ab081a17e12f06517225..07ad8215fc5639ec175a8c00d0344fbf96d294d3 100644 (file)
@@ -6,4 +6,8 @@ _intl_normalize_spaces()
        sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/[[:space:]]*$//'
 }
 
-
+# avoid whitespace differences in wc implementations
+_cut_leading_spaces()
+{
+       sed -e 's/^[    ]*//g'
+}
index 7fcd996409b015780f0d18b32b4e2618c8c8ab73..9832bd6d3dabab22c50e036e85650bab2e1ee414 100644 (file)
@@ -289,3 +289,7 @@ t -t /dev/tty4
 t -t /dev/tty4444444...
 1
 1
+t -p /dev/fd/6
+1
+t -p /dev/fd/6
+0
index 47eef3546eb013fb87fa21a2a361f470445b323a..07a87a0b2a6034544de46d616f14e999c4980b62 100644 (file)
@@ -436,3 +436,5 @@ t -t /dev/tty4444444...
 
 # fixed in bash-4.0-beta
 t -t ' '
+
+${THIS_SH} ./test1.sub
diff --git a/tests/test1.sub b/tests/test1.sub
new file mode 100644 (file)
index 0000000..a1c5817
--- /dev/null
@@ -0,0 +1,21 @@
+# some systems, like old SunOS, have stat on /dev/fd/N and fstat(N, ...)
+# return different results
+: ${TMPDIR:=/tmp}
+
+trap 'rm -f ${TMPDIR}/pipe' 0 1 2 3 6 15
+
+exec 6>&-
+echo "t -p /dev/fd/6"
+test -p /dev/fd/6
+echo $?
+
+rm -f ${TMPDIR}/pipe 2>/dev/null
+mkfifo ${TMPDIR}/pipe
+cat < ${TMPDIR}/pipe &
+exec 6>&-
+exec 6>${TMPDIR}/pipe
+echo "t -p /dev/fd/6"
+test -p /dev/fd/6
+echo $?
+exec 2>/dev/null       # disable process termination message
+kill $! 2>/dev/null 
index 50f19e98a7240555299e5200ce3bffce971ed72f..8a9f13691d716ca6ba3266e40406a36b6b2343f1 100644 (file)
@@ -1,3 +1,4 @@
+wdir=$PWD
 # this is needed because posix mode restricts tilde expansion to assignment
 # statements preceding a command, instead of the default of expanding all
 # assignment statements on the line (e.g., after `export').  Without this,
@@ -69,3 +70,6 @@ esac
 
 USER=root              # should exist just about everywhere
 echo ~$USER
+
+cd "$wdir"
+exit 0
index 1f68d3318543581249c6bcc7b2efbc8031bda844..41658293135a9a0fc81a396018fb98b8fa45caf5 100644 (file)
@@ -64,6 +64,14 @@ after while
 before false in trap2a.sub
 after false in trap2a.sub
 command substitution
+ERRTRAP
+ERRTRAP
+bar
+ERRTRAP
+ERRTRAP
+ERRTRAP
+ERRTRAP
+ERRTRAP
 +[6] echo 1
 1
 +[7] echo 2
@@ -93,6 +101,10 @@ sleep 2
 wait $!
 exit
 in trap EXIT
+fn
+after 1
+fn
+after 2
 caught a child death
 caught a child death
 caught a child death
index 4176df08510db9debcee0ff92f2537ccfdaabb0e..637bfd282a955476b1126cb7aae34f342be667ac 100644 (file)
@@ -74,6 +74,9 @@ ${THIS_SH} ./trap4.sub
 # This doesn't work right on all Unix versions
 #${THIS_SH} ./trap5.sub
 
+# Return trap issues
+${THIS_SH} ./trap6.sub
+
 #
 # show that setting a trap on SIGCHLD is not disastrous.
 #
index 73357df2a25dfd8c11adab8a78abadc2ac668ffd..0f1f2d96288bd895ebb3fbebfa794de26ac1210c 100755 (executable)
@@ -23,3 +23,27 @@ echo after while
 ./trap2a.sub
 
 echo $(false ; echo command substitution)
+
+# test behavior of failed commands following `command' builtin
+command false
+
+(command false)
+command false | echo bar
+
+(false)
+
+exit 42 | command false
+
+command command command false
+
+unset FALSE
+if [ -x /bin/false ]; then
+        FALSE=/bin/false
+elif [ -x /usr/bin/false ]; then
+        FALSE=/usr/bin/false
+else
+        FALSE='command false'
+fi
+
+command $FALSE
+command command command $FALSE
diff --git a/tests/trap6.sub b/tests/trap6.sub
new file mode 100644 (file)
index 0000000..332a177
--- /dev/null
@@ -0,0 +1,15 @@
+set -o functrace
+fn() { return; }
+
+trap "echo fn ; fn" RETURN
+
+fn
+echo after 1
+
+unset -f fn
+
+fn() { eval return; }
+fn
+echo after 2
+
+unset -f fn
index 3f7d26e2d0e1c9b9a250d357d14f4cbdc6015343..7ec6bfba596d360050de669fb02d1cdbc614fcba 100644 (file)
@@ -65,11 +65,11 @@ foo is a function
 foo () 
 { 
     echo;
-    cat  <<END
+    cat <<END
 bar
 END
 
-    cat  <<EOF
+    cat <<EOF
 qux
 EOF
 
@@ -86,7 +86,7 @@ foo ()
     rm -f a b c;
     for f in a b c;
     do
-        cat  >> ${f} <<-EOF
+        cat <<-EOF >> ${f}
 file
 EOF
 
@@ -99,7 +99,7 @@ c:file
 bb is a function
 bb () 
 { 
-    ( cat  <<EOF
+    ( cat <<EOF
 foo
 bar
 EOF
@@ -110,13 +110,13 @@ mkcoprocs is a function
 mkcoprocs () 
 { 
     coproc a { 
-        cat  <<EOF1
+        cat <<EOF1
 producer 1
 EOF1
 
     }
     coproc b { 
-        cat  <<EOF2
+        cat <<EOF2
 producer 2
 EOF2
 
@@ -126,7 +126,7 @@ EOF2
 mkcoprocs is a function
 mkcoprocs () 
 { 
-    coproc COPROC ( b cat  <<EOF
+    coproc COPROC ( b cat <<EOF
 heredoc
 body
 EOF
index a90afef0ce3ac45406516ef7004c3d57ce37968d..442f22e4f4a19c1bcf6eab75523c2eb746660041 100644 (file)
@@ -16,3 +16,6 @@ eval "$(type foo | sed 1d)"
 foo
 
 rm -f a b c
+
+cd $OLDPWD
+exit 0
index b39f1d3ca58c48cffa5c3ef3c97ca5fd58e80ce7..cb1b8732880ae76e4cf2886add410e94c38aa695 100644 (file)
@@ -1,4 +1,6 @@
 export LANG=en_US.UTF-8        # make sure
+
+cd $TMPDIR     # try to avoid NFS artifacts
 payload=$'\065\247\100\063\231\053\306\123\070\237\242\352\263'
 "$payload"
 
@@ -6,4 +8,5 @@ cd "$payload"
 printf %q "$payload"
 echo
 
-set -x ; : "$payload"
+set -x ; : "$payload" ; set +x
+cd $OLDPWD
index 38d1ce7ddc949b9cca5d43b4cac6ec625f75dc84..159a87737dd3276a36ecc77684bea061ddfe4c8e 100644 (file)
@@ -91,6 +91,122 @@ global:2
 after: --global--
 after: ----
 x = :1:2
+in o1 (readonly modifying local scalars):
+declare -r i1="a b c"
+declare -r j1="1 2 3"
+after o1:
+./varenv9.sub: line 15: declare: i1: not found
+./varenv9.sub: line 15: declare: j1: not found
+in o2 (readonly setting global scalars):
+declare -r i2="a b c"
+declare -r j2="1 2 3"
+after o2:
+declare -r i2="a b c"
+declare -r j2="1 2 3"
+./varenv9.sub: line 33: unset: i2: cannot unset: readonly variable
+./varenv9.sub: line 33: unset: j2: cannot unset: readonly variable
+in o3 (readonly modifying locals, converting to arrays):
+declare -ar i3=([0]="a" [1]="b" [2]="c")
+declare -ar j3=([0]="1" [1]="2" [2]="3")
+after o3:
+./varenv9.sub: line 48: declare: i3: not found
+./varenv9.sub: line 48: declare: j3: not found
+in o4 (readonly setting global array variables):
+declare -ar i4=([0]="a" [1]="b" [2]="c")
+declare -ar j4=([0]="1" [1]="2" [2]="3")
+after o4:
+declare -ar i4=([0]="a" [1]="b" [2]="c")
+declare -ar j4=([0]="1" [1]="2" [2]="3")
+./varenv9.sub: line 66: unset: i4: cannot unset: readonly variable
+./varenv9.sub: line 66: unset: j4: cannot unset: readonly variable
+main: unset
+inner: res unset
+outer: res: X Y
+main: after first call: X
+inner: X
+outer: res: X Y
+main: after second call: X
+func: null or unset
+after func: x = outside
+./varenv11.sub: line 4: local: qux: readonly variable
+./varenv11.sub: line 5: qux: readonly variable
+declare -A foo=([zero]="zero" [one]="one" )
+declare -a bar=([0]="zero" [1]="one")
+declare -A foo=([zero]="zero" [one]="one" )
+declare -a bar=([0]="zero" [1]="one")
+./varenv11.sub: line 29: a: readonly variable
+foo=abc
+func1: var =
+
+func1: var =
+
+inside: declare -- foo
+outside:
+declare -x foo="abc"
+inside: declare -x var="value"
+outside: declare -- var="one"
+inside: declare -x var="value"
+outside: declare -x var="value"
+inside: declare -- var="local"
+outside: declare -x var="global"
+foo=<unset> environment foo=
+foo=foo environment foo=foo
+foo=foo environment foo=foo
+./varenv13.sub: line 3: `var[0]': not a valid identifier
+./varenv13.sub: line 3: `var[@]': not a valid identifier
+./varenv13.sub: line 1: declare: var: not found
+./varenv13.sub: line 12: var[@]: bad array subscript
+declare -A var=([0]="X" )
+help
+./varenv13.sub: line 21: `var[0]': not a valid identifier
+1
+./varenv14.sub: line 6: warning: var: cannot inherit value from incompatible type
+declare -a var=([0]="X")
+./varenv14.sub: line 9: warning: var: cannot inherit value from incompatible type
+declare -a var=([0]="Y")
+./varenv14.sub: line 10: warning: var: cannot inherit value from incompatible type
+declare -a var=([0]="Y")
+./varenv14.sub: line 11: warning: var: cannot inherit value from incompatible type
+declare -a var=()
+./varenv14.sub: line 12: warning: var: cannot inherit value from incompatible type
+declare -a var=()
+./varenv14.sub: line 18: f: var: cannot convert indexed to associative array
+declare -a a=([0]="X")
+declare -a s=([0]="X")
+declare -a a=([0]="X" [1]="Y")
+declare -a s=([0]="X" [1]="Y")
+declare -a a=([0]="XY")
+declare -a s=([0]="XY")
+f: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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 46 47 48 49 50
+f1: after: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+done: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
+f3:1
+f3:2
+f3:3
+f3:4
+f3:5
+f3:6
+f3:7
+f3:8
+f3:9
+f3:10
+f3:11
+f3:12
+f3:13
+f3:14
+f3:15
+f3:16
+f3:17
+f3:18
+f3:19
+f3:20
+before source: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+varenv15.in: before set: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+varenv15.in: after set: 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
+after source 1: 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
+varenv15.in: before set: one two three four five six seven eight nine ten
+varenv15.in: after set: 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
+after source 2: 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
 a=z
 a=b
 a=z
diff --git a/tests/varenv.tests b/tests/varenv.tests
new file mode 100644 (file)
index 0000000..34b8559
--- /dev/null
@@ -0,0 +1,246 @@
+#
+# varenv.sh
+#
+# Test the behavior of the shell with respect to variable and environment
+# assignments
+#
+expect()
+{
+       echo expect "$@"
+}
+
+a=1
+b=2
+c=3
+d=4
+e=5
+f=6 g=7 h=8
+
+a=3 b=4 $CHMOD $MODE $FN
+
+# This should echo "3 4" according to Posix.2
+expect "3 4"
+echo $a $b
+
+set -k
+
+# Assignment statements made when no words are left affect the shell's
+# environment
+a=5 b=6 $CHMOD c=7 $MODE d=8 $FN e=9
+
+expect "5 6 7 8 9"
+echo $a $b $c $d $e
+
+$CHMOD f=7 $MODE g=8 $FN h=9
+expect "7 8 9"
+echo $f $g $h
+
+set +k
+
+# The temporary environment does not affect variable expansion, only the
+# environment given to the command
+
+export HOME=/usr/chet
+expect $HOME
+echo $HOME
+
+expect $HOME
+HOME=/a/b/c /bin/echo $HOME
+
+expect $HOME
+echo $HOME
+
+# This should echo /a/b/c
+expect /a/b/c
+HOME=/a/b/c printenv HOME
+
+set -k
+
+# This should echo $HOME 9, NOT /a/b/c 9
+
+expect "$HOME"
+HOME=/a/b/c /bin/echo $HOME c=9
+expect "$HOME 7"
+echo $HOME $c
+
+# I claim the next two echo calls should give identical output.
+# ksh agrees, the System V.3 sh does not
+
+expect "/a/b/c 9 /a/b/c"
+HOME=/a/b/c $ECHO a=$HOME c=9
+echo $HOME $c $a
+
+expect "/a/b/c 9 /a/b/c"
+HOME=/a/b/c a=$HOME c=9
+echo $HOME $c $a
+set +k
+
+# How do assignment statements affect subsequent assignments on the same
+# line?
+expect "/a/b/c /a/b/c"
+HOME=/a/b/c a=$HOME
+echo $HOME $a
+
+# The system V.3 sh does this wrong; the last echo should output "1 1",
+# but the system V.3 sh has it output "2 2".  Posix.2 says the assignment
+# statements are processed left-to-right.  bash and ksh output the right
+# thing
+c=1
+d=2
+expect "1 2"
+echo $c $d
+d=$c c=$d
+expect "1 1"
+echo $c $d
+
+# just for completeness
+unset d c
+expect unset
+echo ${d-unset}
+
+# no output
+export a
+a=bcde
+export a
+/bin/true 2>/dev/null
+
+func()
+{
+       local YYZ
+
+       YYZ="song by rush"
+       echo $YYZ
+       echo $A
+}
+
+YYZ="toronto airport"
+A="AVAR"
+echo $YYZ
+echo $A
+A=BVAR func
+echo $YYZ
+echo $A
+
+export A
+# Make sure expansion doesn't use assignment statements preceding a builtin
+A=ZVAR echo $A
+
+XPATH=/bin:/usr/bin:/usr/local/bin:.
+func2()
+{
+       local z=yy
+       local -a avar=( ${XPATH//: } )
+       echo ${avar[@]}
+       local
+}
+
+avar=42
+echo $avar
+func2
+echo $avar
+
+# try to set an attribute for an unset variable; make sure it persists
+# when the variable is assigned a value
+declare -i ivar
+
+ivar=10
+
+declare -p ivar
+unset ivar
+
+# export an unset variable, make sure it is not suddenly set, but make
+# sure the export attribute persists when the variable is assigned a
+# value
+export ivar
+echo ${ivar-unset}
+
+ivar=42
+declare -p ivar
+
+# make sure set [-+]o ignoreeof and $IGNOREEOF are reflected
+unset IGNOREEOF
+set +o ignoreeof
+set -o ignoreeof
+if [ "$IGNOREEOF" -ne 10 ]; then
+       echo "./varenv.sh: set -o ignoreeof is not reflected in IGNOREEOF" >&2
+fi
+unset IGNOREEOF
+set +o ignoreeof
+
+# older versions of bash used to not reset RANDOM in subshells correctly
+[[ $RANDOM -eq $(echo $RANDOM) ]] && echo "RANDOM: problem with subshells"
+
+# make sure that shopt -o is reflected in $SHELLOPTS
+# first, get rid of things that might be set automatically via shell
+# variables
+set +o posix
+set +o ignoreeof
+set +o monitor
+echo $-
+echo ${SHELLOPTS}
+shopt -so physical
+echo $-
+echo ${SHELLOPTS}
+
+# and make sure it is readonly
+readonly -p | grep SHELLOPTS
+
+# This was an error in bash versions prior to bash-2.04.  The `set -a'
+# should cause the assignment statement that's an argument to typeset
+# to create an exported variable
+unset FOOFOO
+FOOFOO=bar
+set -a
+typeset FOOFOO=abcde
+
+printenv FOOFOO
+
+# test out export behavior of variable assignments preceding builtins and
+# functions
+$THIS_SH ./varenv1.sub
+
+# more tests; bugs in bash up to version 2.05a
+$THIS_SH ./varenv2.sub
+
+# more tests; bugs in bash IFS scoping up through version 4.2
+$THIS_SH ./varenv3.sub
+
+# scoping problems with declare -g through bash-4.2
+${THIS_SH} ./varenv4.sub
+
+# more scoping and declaration problems with -g and arrays through bash-4.2
+${THIS_SH} ./varenv5.sub
+
+# variable scoping in the presence of nameref
+${THIS_SH} ./varenv6.sub
+
+# variable declaration problems with arrays and readonly local variables
+${THIS_SH} ./varenv7.sub
+
+# variable visibility problems with process substitution subshells in
+# redirections
+${THIS_SH} ./varenv8.sub
+
+# make sure that builtins like readonly and export modify local array variables
+# if executed in shell functions, like they modify local scalar variables
+${THIS_SH} ./varenv9.sub
+
+# more tests of unset and local variables with dynamic scoping
+${THIS_SH} ./varenv10.sub
+
+# tests of compound assignments in function scope
+${THIS_SH} ./varenv11.sub
+
+# temporary environment variable propagation and scoping in posix mode
+${THIS_SH} ./varenv12.sub
+
+# temporary environment and invalid shell indentifier names
+${THIS_SH} ./varenv13.sub
+
+# localvar_inherit
+${THIS_SH} ./varenv14.sub
+
+${THIS_SH} ./varenv15.sub
+
+# make sure variable scoping is done right
+tt() { typeset a=b;echo a=$a; };a=z;echo a=$a;tt;echo a=$a
diff --git a/tests/varenv10.sub b/tests/varenv10.sub
new file mode 100644 (file)
index 0000000..887cfd2
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# various tests of unset when applied to variables at different local scopes
+
+# function unsetting variable at previous local scope, uncovering global
+
+inner()
+{
+    unset res
+    echo ${FUNCNAME}: ${res-res unset}
+    if [[ $1 == "set" ]]; then
+        res[0]="X"
+        res[1]="Y"
+    fi
+}
+
+outer()
+{
+    local res=
+    inner "$1"
+    echo ${FUNCNAME}: "res: ${res[@]}"
+}
+
+echo main: ${res-unset}
+outer set
+echo main: after first call: ${res-unset}
+outer dontset 
+echo main: after second call: ${res-unset}
+
+unset -f outer inner
+unset res
+
+# local scope, unset variable at the same scope as local declaration
+func()
+{
+       typeset x=4
+
+       unset x
+       echo ${FUNCNAME}: ${x:-null or unset}
+}
+
+x=outside
+func
+echo after func: x = $x
+
+unset -f func
+unset x
diff --git a/tests/varenv11.sub b/tests/varenv11.sub
new file mode 100644 (file)
index 0000000..d438498
--- /dev/null
@@ -0,0 +1,30 @@
+# couple of errors here
+func()
+{
+       local qux=7
+       local qux=(one two)
+       local what=(zero one two)
+}
+
+readonly qux=42
+func
+
+func2()
+{
+       declare -gA foo=([zero]=zero [one]=one)
+       declare -ga bar=(zero one)
+}
+
+foo=help
+bar=me
+
+func2
+
+declare -p foo bar
+unset foo bar
+func2
+declare -p foo bar
+
+readonly a=7
+a=(1 2 3)
+
diff --git a/tests/varenv12.sub b/tests/varenv12.sub
new file mode 100644 (file)
index 0000000..edba3c9
--- /dev/null
@@ -0,0 +1,100 @@
+set -o posix
+
+fn() { foo=abc : ; typeset +x foo; printenv|grep ^foo=; }
+
+fn
+unset -v foo
+unset -f fn
+
+func1() {
+  var=1
+  var=2 :       # or 'var=2 return', or another special builtin
+  unset -v var
+  echo $FUNCNAME: var = $var
+}
+func2() {
+  func1
+  unset -v var  # bug: fails silently
+}
+func1
+echo ${var+"BUG: still set 1"}
+
+unset var
+func2
+echo ${var+"BUG: still set 2"}
+
+unset -v var
+unset -f func1 func2
+
+fn() { foo=abc : ; typeset +x foo; echo -n 'inside: ' ; declare -p foo; }
+fn
+echo outside:
+declare -p foo
+
+unset -v foo
+unset -f fn
+
+func()
+{
+       var=value declare -x var
+       echo -n 'inside: ' ; declare -p var
+}
+
+var=one
+func
+echo -n 'outside: ' ; declare -p var
+
+unset -v var
+unset -f func
+
+# this will probably change behavior; export shouldn't behave like this when
+# not in posix mode and the sequencing is probably wrong in posix mode. since
+# export is a special builtin, the variable assignment should modify the
+# global variable, leaving the local variable unchanged. all shells, including
+# bash, modify the local variable; bash is the only one that propagates the
+# value out to the calling environment. bash does that only when in posix
+# mode.
+
+func()
+{
+       local var=inside
+       var=value export var
+       echo -n 'inside: ' ; declare -p var
+}
+
+var=outside
+func
+echo -n 'outside: ' ; declare -p var
+
+unset -v var
+unset -f func
+
+func()
+{
+       local var=local
+       var=global :
+       echo -n 'inside: ' ; declare -p var
+}
+
+var=outside
+func
+echo -n 'outside: ' ; declare -p var
+
+unset -v var
+unset -f func
+
+# test whether or not temporary environment assignments are exported
+# in posix mode
+showfoo()
+{
+       printf %s "foo=${foo-<unset>}"
+       echo -n ' environment foo='
+       printenv foo || echo 
+}
+unset foo
+showfoo
+foo=foo showfoo
+showfoo
+
+unset -v foo
+unset -f showfoo
diff --git a/tests/varenv13.sub b/tests/varenv13.sub
new file mode 100644 (file)
index 0000000..0e6a42c
--- /dev/null
@@ -0,0 +1,23 @@
+f() { declare -p ${!var*} | grep ^var; declare -p var ; }
+
+var[0]=X var[@]=Y f
+
+unset -f f
+unset -v var
+
+typeset -A var
+
+f() { declare -p ${!var*}; }
+
+var[0]=X var[@]=Y
+f
+
+: ${THIS_SH:=./bash}
+env 'v[0]=help' ${THIS_SH} -c 'printenv "v[0]"'
+
+unset -v var
+
+f() { test -v 'var[0]'; echo $?; }
+var[0]=X f
+
+unset -v var
diff --git a/tests/varenv14.sub b/tests/varenv14.sub
new file mode 100644 (file)
index 0000000..52b20d8
--- /dev/null
@@ -0,0 +1,33 @@
+# testing framework for local variable inheritence
+
+shopt -s localvar_inherit
+declare -A var
+
+f() { declare var+=([0]=X); declare -p var; }
+f
+
+f() { declare var=([Y]=Y); declare -p var; }; f
+f() { declare var+=([Y]=Y); declare -p var; }; f
+f() { declare var+=(); declare -p var; }; f
+f() { declare var=(); declare -p var; }; f
+
+unset -f f
+unset -v var
+
+declare -a var=( [0]=12 )
+f() { declare -A var+=([0]=X); declare -p var; }
+f
+
+unset -f f
+unset a s
+
+a=(X) s=X
+
+f() { local -a a s; declare -p a s; }
+f
+
+f() { local a+=(Y) s+=(Y); declare -p a s; }
+f
+
+f() { local -a a+=Y s+=Y; declare -p a s; }
+f
diff --git a/tests/varenv15.in b/tests/varenv15.in
new file mode 100644 (file)
index 0000000..e635b12
--- /dev/null
@@ -0,0 +1,3 @@
+echo varenv15.in: before set: "$@"
+set -- 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
+echo varenv15.in: after set: "$@"
diff --git a/tests/varenv15.sub b/tests/varenv15.sub
new file mode 100644 (file)
index 0000000..52c8a94
--- /dev/null
@@ -0,0 +1,38 @@
+# check saving and restoring positional parameters around function calls
+
+f()
+{
+       echo $FUNCNAME: "$@"
+}
+
+f1()
+{
+       f {1..50}
+       echo $FUNCNAME: after: $@
+}
+
+set -- {1..100}
+
+f1 {1..20}
+echo done: $@
+
+f3()
+{
+       echo $FUNCNAME:$1
+       shift
+       if [ $# -le 0 ]; then
+               return
+       fi
+       f3 "$@"
+}
+
+f3 {1..20}
+
+# now let's try source with and without positional parameters
+
+set -- {1..20}
+echo before source: "$@"
+. ./varenv15.in
+echo after source 1: "$@"
+. ./varenv15.in one two three four five six seven eight nine ten
+echo after source 2: "$@"
diff --git a/tests/varenv9.sub b/tests/varenv9.sub
new file mode 100644 (file)
index 0000000..eda1be3
--- /dev/null
@@ -0,0 +1,66 @@
+# case 1: readonly modifying local scalar variables
+o1() {
+    local i1 j1
+    readonly i1=$1
+    readonly j1="1 2 3"
+
+    echo "in o1 (readonly modifying local scalars):"
+    declare -p i1
+    declare -p j1
+}
+
+o1 "a b c"
+
+echo after o1:
+declare -p i1 j1
+
+unset i1 j1
+
+# case 2: readonly setting global scalar variables
+o2() {
+    readonly i2=$1
+    readonly j2="1 2 3"
+
+    echo "in o2 (readonly setting global scalars):"
+    declare -p i2
+    declare -p j2
+}
+
+o2 "a b c"
+echo after o2:
+declare -p i2 j2
+
+unset i2 j2
+
+# case 3: readonly modifying local variables, converting to arrays
+o3() {
+    local i3 j3
+    readonly i3=($1)
+    readonly j3=(1 2 3)
+
+    echo "in o3 (readonly modifying locals, converting to arrays):"
+    declare -p i3
+    declare -p j3
+}
+
+o3 "a b c"
+echo after o3:
+declare -p i3 j3
+
+unset i3 j3
+
+# case 4: readonly setting global array variables
+o4() {
+    readonly i4=($1)
+    readonly j4=(1 2 3)
+
+    echo "in o4 (readonly setting global array variables):"
+    declare -p i4
+    declare -p j4
+}
+
+o4 "a b c"
+echo after o4:
+declare -p i4 j4
+
+unset i4 j4
index bd740205326dfc3ef43f47af7871eb6cdb74028c..9ad08f7d4a5ce9e8e708f2d271725f697e26e5f8 100644 (file)
@@ -1,3 +1,8 @@
+if (( $UID == 0 )); then
+        echo "${THIS_SH}: the test suite should not be run as root" >&2
+       echo
+fi
+
 echo Testing ${THIS_SH}
 
 echo version: $BASH_VERSION
index 72e4bf9638168310fc45828e7a670bf631130ec9..637565ea920a040dca9f3ebe0ff6ab76eba0f4f7 100644 (file)
@@ -1,3 +1,8 @@
+if (( $UID == 0 )); then
+        echo "${THIS_SH}: the test suite should not be run as root" >&2
+       echo
+fi
+
 echo Testing ${THIS_SH}
 
 echo version: $BASH_VERSION
index 3985f22dfaed0de48acf80d20896e2b7223a38a6..f4fe0db83475ca51ce559ecd3bdaece91aebb0a9 100644 (file)
@@ -11,9 +11,6 @@ bar ()
 ./vredir.tests: line 6: v: readonly variable
 ./vredir.tests: line 6: v: cannot assign fd to variable
 42
-./vredir.tests: line 25: $v: Bad file descriptor
-./vredir.tests: line 26: $v: Bad file descriptor
-./vredir.tests: line 27: $v: Bad file descriptor
 bar is a function
 bar () 
 { 
@@ -27,7 +24,7 @@ line 3
 bar is a function
 bar () 
 { 
-    exec  {v}<<EOF
+    exec {v}<<EOF
 line 1
 line 2
 line 3
index b81c671c2eff06e95b4cf481ecbb7e99305cb589..ce77deb7541d00ef58e5ab16c8ad77f44d4e3870 100644 (file)
@@ -22,9 +22,9 @@ exec {v}>&-
 readonly v=42
 bar
 
-echo foo 1 >&$v
-echo foo 2 >&$v
-echo foo 3 >&$v
+echo foo 1 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 1'; }
+echo foo 2 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 2'; }
+echo foo 3 2>&1 >&$v | { grep -q '\$v: Bad' || echo 'bad foo 3'; }
 
 cat $TMPFILE
 rm -f $TMPFILE
diff --git a/trap.c b/trap.c
index eb8ecf3a1900024a528a79cf4408bda2d0a99af7..3cb67cdf04024fab640de98189478085e338f5b9 100644 (file)
--- a/trap.c
+++ b/trap.c
@@ -1,7 +1,7 @@
 /* trap.c -- Not the trap command, but useful functions for manipulating
    those objects.  The trap command is in builtins/trap.def. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -38,7 +38,9 @@
 #include "trap.h"
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "flags.h"
+#include "parser.h"
 #include "input.h"     /* for save_token_state, restore_token_state */
 #include "jobs.h"
 #include "signames.h"
@@ -85,20 +87,10 @@ static void reset_or_restore_signal_handlers (sh_resetsig_func_t *);
 static void trap_if_untrapped (int, char *);
 
 /* Variables used here but defined in other files. */
-extern int last_command_exit_value;
-extern int line_number;
-
-extern int sigalrm_seen;
 extern procenv_t alrmbuf;
 
 extern volatile int from_return_trap;
 
-extern char *this_command_name;
-extern sh_builtin_func_t *this_shell_builtin;
-extern procenv_t wait_intr_buf;
-extern int wait_intr_flag;
-extern int return_catch_flag, return_catch_value;
-extern int subshell_level;
 extern WORD_LIST *subst_assign_varlist;
 
 /* The list of things to do originally, before we started trapping. */
@@ -242,6 +234,23 @@ decode_signal (string, flags)
   if (legal_number (string, &sig))
     return ((sig >= 0 && sig < NSIG) ? (int)sig : NO_SIG);
 
+#if defined (SIGRTMIN) && defined (SIGRTMAX)
+  if (STREQN (string, "SIGRTMIN+", 9) || ((flags & DSIG_NOCASE) && strncasecmp (string, "SIGRTMIN+", 9) == 0))
+    {
+      if (legal_number (string+9, &sig) && sig >= 0 && sig <= SIGRTMAX - SIGRTMIN)
+       return (SIGRTMIN + sig);
+      else
+       return NO_SIG;
+    }
+  else if (STREQN (string, "RTMIN+", 6) || ((flags & DSIG_NOCASE) && strncasecmp (string, "RTMIN+", 6) == 0))
+    {
+      if (legal_number (string+6, &sig) && sig >= 0 && sig <= SIGRTMAX - SIGRTMIN)
+       return (SIGRTMIN + sig);
+      else
+       return NO_SIG;
+    }
+#endif /* SIGRTMIN && SIGRTMAX */
+
   /* A leading `SIG' may be omitted. */
   for (sig = 0; sig < BASH_NSIG; sig++)
     {
@@ -303,9 +312,15 @@ run_pending_traps ()
 #if defined (SIGWINCH)
       if (running_trap == SIGWINCH+1 && pending_traps[SIGWINCH])
        return;                 /* no recursive SIGWINCH trap invocations */
-#else
-      ;
 #endif
+      /* could check for running the trap handler for the same signal here
+        (running_trap == sig+1) */
+      if (evalnest_max > 0 && evalnest > evalnest_max)
+       {
+         internal_error (_("trap handler: maximum trap handler level exceeded (%d)"), evalnest_max);
+         evalnest = 0;
+         jump_to_top_level (DISCARD);
+       }
     }
 
   catch_flag = trapped_signal_received = 0;
@@ -330,8 +345,10 @@ run_pending_traps ()
          if (sig == SIGINT)
            {
              pending_traps[sig] = 0;   /* XXX */
+             /* We don't modify evalnest here, since run_interrupt_trap() calls
+                _run_trap_internal, which does. */
              run_interrupt_trap (0);
-             CLRINTERRUPT;
+             CLRINTERRUPT;     /* interrupts don't stack */
            }
 #if defined (JOB_CONTROL) && defined (SIGCHLD)
          else if (sig == SIGCHLD &&
@@ -339,10 +356,14 @@ run_pending_traps ()
                   (sigmodes[SIGCHLD] & SIG_INPROGRESS) == 0)
            {
              sigmodes[SIGCHLD] |= SIG_INPROGRESS;
+             /* We modify evalnest here even though run_sigchld_trap can run
+                the trap action more than once */
+             evalnest++;
              x = pending_traps[sig];
              pending_traps[sig] = 0;
              run_sigchld_trap (x);     /* use as counter */
              running_trap = 0;
+             evalnest--;
              sigmodes[SIGCHLD] &= ~SIG_INPROGRESS;
              /* continue here rather than reset pending_traps[SIGCHLD] below in
                 case there are recursive calls to run_pending_traps and children
@@ -406,7 +427,9 @@ run_pending_traps ()
 #endif
              /* XXX - set pending_traps[sig] = 0 here? */
              pending_traps[sig] = 0;
+             evalnest++;
              evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
+             evalnest--;
 #if defined (JOB_CONTROL)
              restore_pipeline (1);
 #endif
@@ -479,7 +502,7 @@ trap_handler (sig)
 
       errno = oerrno;
     }
-
+  
   SIGRETURN (0);
 }
 
@@ -494,6 +517,8 @@ first_pending_trap ()
   return -1;
 }
 
+/* Return > 0 if any of the "real" signals (not fake signals like EXIT) are
+   trapped. */
 int
 any_signals_trapped ()
 {
@@ -940,8 +965,8 @@ _run_trap_internal (sig, tag)
      char *tag;
 {
   char *trap_command, *old_trap;
-  int trap_exit_value, *token_state;
-  volatile int save_return_catch_flag, function_code, top_level_code, old_int;
+  int trap_exit_value;
+  volatile int save_return_catch_flag, function_code, old_int;
   int flags;
   procenv_t save_return_catch;
   WORD_LIST *save_subst_varlist;
@@ -1001,6 +1026,7 @@ _run_trap_internal (sig, tag)
       flags = SEVAL_NONINT|SEVAL_NOHIST;
       if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
        flags |= SEVAL_RESETLINE;
+      evalnest++;
       if (function_code == 0)
         {
          parse_and_execute (trap_command, tag, flags);
@@ -1008,6 +1034,7 @@ _run_trap_internal (sig, tag)
         }
       else
         trap_exit_value = return_catch_value;
+      evalnest--;
 
 #if defined (JOB_CONTROL)
       if (sig != DEBUG_TRAP)   /* run_debug_trap does this */
@@ -1037,6 +1064,8 @@ _run_trap_internal (sig, tag)
 #endif
            free (old_trap);
          sigmodes[sig] &= ~SIG_CHANGED;
+
+         CHECK_TERMSIG;        /* some pathological conditions lead here */
        }
 
       if (save_return_catch_flag)
@@ -1060,9 +1089,11 @@ _run_trap_internal (sig, tag)
 int
 run_debug_trap ()
 {
-  int trap_exit_value;
+  int trap_exit_value, old_verbose;
   pid_t save_pgrp;
+#if defined (PGRP_PIPE)
   int save_pipe[2];
+#endif
 
   /* XXX - question:  should the DEBUG trap inherit the RETURN trap? */
   trap_exit_value = 0;
@@ -1078,8 +1109,15 @@ run_debug_trap ()
       stop_making_children ();
 #endif
 
+      old_verbose = echo_input_at_read;
+#if 0  /* not yet */
+      echo_input_at_read = 0;
+#endif
+
       trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap");
 
+      echo_input_at_read = old_verbose;
+
 #if defined (JOB_CONTROL)
       pipeline_pgrp = save_pgrp;
       restore_pipeline (1);
@@ -1087,8 +1125,9 @@ run_debug_trap ()
       close_pgrp_pipe ();
       restore_pgrp_pipe (save_pipe);
 #  endif
-      if (pipeline_pgrp > 0)
+      if (pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0))
        give_terminal_to (pipeline_pgrp, 1);
+
       notify_and_cleanup ();
 #endif
       
@@ -1176,7 +1215,7 @@ free_trap_string (sig)
      int sig;
 {
   change_signal (sig, (char *)DEFAULT_SIG);
-  sigmodes[sig] &= ~SIG_TRAPPED;
+  sigmodes[sig] &= ~SIG_TRAPPED;               /* XXX - SIG_INPROGRESS? */
 }
 
 /* Reset the handler for SIG to the original value but leave the trap string
@@ -1186,7 +1225,7 @@ reset_signal (sig)
      int sig;
 {
   set_signal_handler (sig, original_signals[sig]);
-  sigmodes[sig] &= ~SIG_TRAPPED;
+  sigmodes[sig] &= ~SIG_TRAPPED;               /* XXX - SIG_INPROGRESS? */
 }
 
 /* Set the handler signal SIG to the original and free any trap
@@ -1209,7 +1248,7 @@ reset_or_restore_signal_handlers (reset)
   /* Take care of the exit trap first */
   if (sigmodes[EXIT_TRAP] & SIG_TRAPPED)
     {
-      sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED;
+      sigmodes[EXIT_TRAP] &= ~SIG_TRAPPED;     /* XXX - SIG_INPROGRESS? */
       if (reset != reset_signal)
        {
          free_trap_command (EXIT_TRAP);
diff --git a/trap.h b/trap.h
index 41f185f7d8382e1ea9d48ebf8094951ad8461a90..91cec2d86041b3f2a3b6470cbd3a1617802de545 100644 (file)
--- a/trap.h
+++ b/trap.h
 
 extern char *trap_list[];
 
+extern int trapped_signal_received;
+extern int wait_signal_received;
+extern int running_trap;
+extern int trap_saved_exit_value;
+
 /* Externally-visible functions declared in trap.c. */
 extern void initialize_traps __P((void));
 
@@ -112,6 +117,7 @@ extern int signal_in_progress __P((int));
 
 extern int first_pending_trap __P((void));
 extern int any_signals_trapped __P((void));
+extern void check_signals __P((void));
 extern void check_signals_and_traps __P((void));
 
 #endif /* _TRAP_H_ */
index be2446e038a1f10481cca620aa087d3d57c9888b..610629abbaf8116e49a606f42629cdbff66ef6a4 100644 (file)
@@ -1,6 +1,6 @@
 /* variables.c -- Functions for hacking shell variables. */
 
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -47,6 +47,7 @@
 #define NEED_XTRACE_SET_DECL
 
 #include "shell.h"
+#include "parser.h"
 #include "flags.h"
 #include "execute_cmd.h"
 #include "findcmd.h"
 extern char **environ;
 
 /* Variables used here and defined in other files. */
-extern int posixly_correct;
-extern int line_number, line_number_base;
-extern int subshell_environment, indirection_level, subshell_level;
-extern int build_version, patch_level;
-extern int expanding_redir;
-extern int last_command_exit_value;
-extern char *dist_version, *release_status;
-extern char *shell_name;
-extern char *primary_prompt, *secondary_prompt;
-extern char *current_host_name;
-extern sh_builtin_func_t *this_shell_builtin;
-extern SHELL_VAR *this_shell_function;
-extern char *the_printed_command_except_trap;
-extern char *this_command_name;
-extern char *command_execution_string;
 extern time_t shell_start_time;
-extern int assigning_in_environment;
-extern int executing_builtin;
-extern int funcnest_max;
-
-#if defined (READLINE)
-extern int no_line_editing;
-extern int perform_hostname_completion;
-#endif
 
 /* The list of shell variables that the user has created at the global
    scope, or that came from the environment. */
@@ -132,6 +110,8 @@ VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;
    the environment. */
 HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
 
+HASH_TABLE *invalid_env = (HASH_TABLE *)NULL;
+
 #if defined (DEBUGGER)
 /* The table of shell function definitions that the user defined or that
    came from the environment. */
@@ -142,6 +122,15 @@ HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;
    executing functions we are. */
 int variable_context = 0;
 
+/* If non-zero, local variables inherit values and attributes from a variable
+   with the same name at a previous scope. */
+int localvar_inherit = 0;
+
+/* If non-zero, calling `unset' on local variables in previous scopes marks
+   them as invisible so lookups find them unset. This is the same behavior
+   as local variables in the current local scope. */
+int localvar_unset = 0;
+
 /* The set of shell assignments which are made only in the environment
    for a single command. */
 HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;
@@ -180,6 +169,7 @@ SHELL_VAR nameref_invalid_value;
 static SHELL_VAR nameref_maxloop_value;
 
 static HASH_TABLE *last_table_searched;        /* hash_lookup sets this */
+static VAR_CONTEXT *last_context_searched;
 
 /* Some forward declarations. */
 static void create_variable_tables __P((void));
@@ -221,6 +211,9 @@ static SHELL_VAR *get_lineno __P((SHELL_VAR *));
 static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
 static SHELL_VAR *get_subshell __P((SHELL_VAR *));
 
+static SHELL_VAR *get_epochseconds __P((SHELL_VAR *));
+static SHELL_VAR *get_epochrealtime __P((SHELL_VAR *));
+
 static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
 
 #if defined (HISTORY)
@@ -239,7 +232,9 @@ static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
 
 #if defined (ARRAY_VARS)
 static SHELL_VAR *get_groupset __P((SHELL_VAR *));
-
+#  if defined (DEBUGGER)
+static SHELL_VAR *get_bashargcv __P((SHELL_VAR *));
+#  endif
 static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
 static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
 static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *,  char *, arrayind_t, char *));
@@ -255,6 +250,10 @@ static SHELL_VAR *init_funcname_var __P((void));
 
 static void initialize_dynamic_variables __P((void));
 
+static SHELL_VAR *bind_invalid_envvar __P((const char *, char *, int));
+
+static int var_sametype __P((SHELL_VAR *, SHELL_VAR *));
+
 static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
 static SHELL_VAR *new_shell_variable __P((const char *));
 static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
@@ -290,6 +289,7 @@ static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *,
 static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
 
 static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
+static void push_posix_temp_var __P((PTR_T));
 static void push_temp_var __P((PTR_T));
 static void propagate_temp_var __P((PTR_T));
 static void dispose_temporary_env __P((sh_free_func_t *));     
@@ -304,8 +304,11 @@ static int n_shell_variables __P((void));
 static int set_context __P((SHELL_VAR *));
 
 static void push_func_var __P((PTR_T));
+static void push_builtin_var __P((PTR_T));
 static void push_exported_var __P((PTR_T));
 
+static inline void push_posix_tempvar_internal __P((SHELL_VAR *, int));
+
 static inline int find_special_var __P((const char *));
 
 static void
@@ -400,7 +403,7 @@ initialize_shell_variables (env, privmode)
            }
          else
            {
-             if (temp_var = bind_variable (name, string, 0))
+             if (temp_var = bind_invalid_envvar (name, string, 0))
                {
                  VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
                  array_needs_making = 1;
@@ -431,24 +434,34 @@ initialize_shell_variables (env, privmode)
 #endif
        {
          ro = 0;
-         if (posixly_correct && STREQ (name, "SHELLOPTS"))
+         /* If we processed a command-line option that caused SHELLOPTS to be
+            set, it may already be set (and read-only) by the time we process
+            the shell's environment. */
+         if (/* posixly_correct &&*/ STREQ (name, "SHELLOPTS"))
            {
              temp_var = find_variable ("SHELLOPTS");
              ro = temp_var && readonly_p (temp_var);
              if (temp_var)
                VUNSETATTR (temp_var, att_readonly);
            }
-         temp_var = bind_variable (name, string, 0);
-         if (temp_var)
+         if (legal_identifier (name))
            {
-             if (legal_identifier (name))
-               VSETATTR (temp_var, (att_exported | att_imported));
-             else
+             temp_var = bind_variable (name, string, 0);
+             if (temp_var)
+               {
+                 VSETATTR (temp_var, (att_exported | att_imported));
+                 if (ro)
+                   VSETATTR (temp_var, att_readonly);
+               }
+           }
+         else
+           {
+             temp_var = bind_invalid_envvar (name, string, 0);
+             if (temp_var)
                VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
-             if (ro)
-               VSETATTR (temp_var, att_readonly);
-             array_needs_making = 1;
            }
+         if (temp_var)
+           array_needs_making = 1;
        }
 
       name[char_index] = '=';
@@ -471,14 +484,7 @@ initialize_shell_variables (env, privmode)
   /* Now make our own defaults in case the vars that we think are
      important are missing. */
   temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE);
-#if 0
-  set_auto_export (temp_var);  /* XXX */
-#endif
-
   temp_var = set_if_not ("TERM", "dumb");
-#if 0
-  set_auto_export (temp_var);  /* XXX */
-#endif
 
 #if defined (__QNX__)
   /* set node id -- don't import it from the environment */
@@ -611,8 +617,9 @@ initialize_shell_variables (env, privmode)
 #endif /* HISTORY */
 
 #if defined (READLINE) && defined (STRICT_POSIX)
-  /* POSIXLY_CORRECT will only be 1 here if the shell was compiled
-     -DSTRICT_POSIX */
+  /* POSIXLY_CORRECT will be 1 here if the shell was compiled
+     -DSTRICT_POSIX or if POSIXLY_CORRECT was supplied in the shell's
+     environment */
   if (interactive_shell && posixly_correct && no_line_editing == 0)
     rl_prefer_env_winsize = 1;
 #endif /* READLINE && STRICT_POSIX */
@@ -872,8 +879,13 @@ set_pwd ()
       current_dir = sh_canonpath (temp_string, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
       if (current_dir == 0)
        current_dir = get_working_directory ("shell_init");
-      else 
+      else
        set_working_directory (current_dir);
+      if (posixly_correct && current_dir)
+       {
+         temp_var = bind_variable ("PWD", current_dir, 0);
+         set_auto_export (temp_var);
+       }  
       free (current_dir);
     }
   else if (home_string && interactive_shell && login_shell &&
@@ -899,7 +911,11 @@ set_pwd ()
      don't find OLDPWD in the environment, or it doesn't name a directory,
      make a dummy invisible variable for OLDPWD, and mark it as exported. */
   temp_var = find_variable ("OLDPWD");
+#if defined (OLDPWD_CHECK_DIRECTORY)
   if (temp_var == 0 || value_cell (temp_var) == 0 || file_isdir (value_cell (temp_var)) == 0)
+#else
+  if (temp_var == 0 || value_cell (temp_var) == 0)
+#endif
     {
       temp_var = bind_variable ("OLDPWD", (char *)NULL, 0);
       VSETATTR (temp_var, (att_exported | att_invisible));
@@ -1296,34 +1312,48 @@ init_seconds_var ()
 }
      
 /* The random number seed.  You can change this by setting RANDOM. */
-static unsigned long rseed = 1;
+static u_bits32_t rseed = 1;
 static int last_random_value;
 static int seeded_subshell = 0;
 
-/* A linear congruential random number generator based on the example
-   one in the ANSI C standard.  This one isn't very good, but a more
-   complicated one is overkill. */
+#define BASH_RANDOM_16 1
+
+#if BASH_RANDOM_16
+#  define BASH_RAND_MAX        32767           /* 0x7fff - 16 bits */
+#else
+#  define BASH_RAND_MAX        0x7fffffff      /* 32 bits */
+#endif
 
 /* Returns a pseudo-random number between 0 and 32767. */
 static int
 brand ()
 {
-  /* From "Random number generators: good ones are hard to find",
+  /* Minimal Standard generator from
+     "Random number generators: good ones are hard to find",
      Park and Miller, Communications of the ACM, vol. 31, no. 10,
-     October 1988, p. 1195. filtered through FreeBSD */
-  long h, l;
+     October 1988, p. 1195. filtered through FreeBSD.
+
+     x(n+1) = 16807 * x(n) mod (2**31 - 1).
+
+     We split up the calculations to avoid overflow.
+
+     h = rseed / q; l = x - h * q; t = a * l - h * r
+     m = 2147483647, a = 16807, q = 127773, r = 2836
+
+     There are lots of other combinations of constants to use; look at
+     https://www.gnu.org/software/gsl/manual/html_node/Other-random-number-generators.html#Other-random-number-generators */
+
+  bits32_t h, l, t;
 
   /* Can't seed with 0. */
   if (rseed == 0)
     rseed = 123459876;
   h = rseed / 127773;
-  l = rseed % 127773;
-  rseed = 16807 * l - 2836 * h;
-#if 0
-  if (rseed < 0)
-    rseed += 0x7fffffff;
-#endif
-  return ((unsigned int)(rseed & 32767));      /* was % 32768 */
+  l = rseed - (127773 * h);
+  t = 16807 * l - 2836 * h;
+  rseed = (t < 0) ? t + 0x7fffffff : t;
+
+  return ((unsigned int)(rseed & BASH_RAND_MAX));      /* was % BASH_RAND_MAX+1 */
 }
 
 /* Set the random number generator seed to SEED. */
@@ -1339,9 +1369,15 @@ static void
 seedrand ()
 {
   struct timeval tv;
+  SHELL_VAR *v;
 
   gettimeofday (&tv, NULL);
+#if 0
+  v = find_variable ("BASH_VERSION");
+  sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid () ^ ((u_bits32_t)&v & 0x7fffffff));
+#else
   sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
+#endif
 }
 
 static SHELL_VAR *
@@ -1451,6 +1487,40 @@ get_subshell (var)
   return (var);
 }
 
+static SHELL_VAR *
+get_epochseconds (var)
+     SHELL_VAR *var;
+{
+  intmax_t now;
+  char *p;
+
+  now = NOW;
+  p = itos (now);
+
+  FREE (value_cell (var));
+  var_setvalue (var, p);
+  return (var);
+}
+
+static SHELL_VAR *
+get_epochrealtime (var)
+     SHELL_VAR *var;
+{
+  char buf[32];
+  char *p;
+  struct timeval tv;
+
+  gettimeofday (&tv, NULL);
+  snprintf (buf, sizeof (buf), "%u%c%06u", (unsigned)tv.tv_sec,
+                                          locale_decpoint (),
+                                          (unsigned)tv.tv_usec);
+
+  p = savestring (buf);
+  FREE (value_cell (var));
+  var_setvalue (var, p);
+  return (var);
+}
+
 static SHELL_VAR *
 get_bashpid (var)
      SHELL_VAR *var;
@@ -1462,11 +1532,49 @@ get_bashpid (var)
   p = itos (pid);
 
   FREE (value_cell (var));
-  VSETATTR (var, att_integer|att_readonly);
+  VSETATTR (var, att_integer); /* XXX - was also att_readonly */
   var_setvalue (var, p);
   return (var);
 }
 
+static SHELL_VAR *
+get_bash_argv0 (var)
+     SHELL_VAR *var;
+{
+  char *p;
+
+  p = savestring (dollar_vars[0]);
+  FREE (value_cell (var));
+  var_setvalue (var, p);
+  return var;
+}
+
+static char *static_shell_name = 0;
+
+static SHELL_VAR *
+assign_bash_argv0 (var, value, unused, key)
+     SHELL_VAR *var;
+     char *value;
+     arrayind_t unused;
+     char *key;
+{
+  size_t vlen;
+
+  if (value == 0)
+    return var;
+
+  FREE (dollar_vars[0]);
+  dollar_vars[0] = savestring (value);
+
+  /* Need these gyrations because shell_name isn't dynamically allocated */
+  vlen = STRLEN (value);
+  static_shell_name = xrealloc (static_shell_name, vlen + 1);
+  strcpy (static_shell_name, value);
+  
+  shell_name = static_shell_name;
+  return var;
+}
+  
 static SHELL_VAR *
 get_bash_command (var)
      SHELL_VAR *var;
@@ -1583,6 +1691,27 @@ get_groupset (self)
   return (self);
 }
 
+#  if defined (DEBUGGER)
+static SHELL_VAR *
+get_bashargcv (self)
+     SHELL_VAR *self;
+{
+  static int self_semaphore = 0;
+
+  /* Backwards compatibility: if we refer to BASH_ARGV or BASH_ARGC at the
+     top level without enabling debug mode, and we don't have an instance
+     of the variable set, initialize the arg arrays.
+     This will already have been done if debugging_mode != 0. */
+  if (self_semaphore == 0 && variable_context == 0 && debugging_mode == 0)     /* don't do it for shell functions */
+    {
+      self_semaphore = 1;
+      init_bash_argv ();
+      self_semaphore = 0;
+    }
+  return self;
+}
+#  endif
+
 static SHELL_VAR *
 build_hashcmd (self)
      SHELL_VAR *self;
@@ -1633,10 +1762,25 @@ assign_hashcmd (self, value, ind, key)
      char *key;
 {
 #if defined (RESTRICTED_SHELL)
-  if (restricted && strchr (value, '/'))
+  char *full_path;
+
+  if (restricted)
     {
-      sh_restricted (value);
-      return (SHELL_VAR *)NULL;
+      if (strchr (value, '/'))
+       {
+         sh_restricted (value);
+         return (SHELL_VAR *)NULL;
+       }
+      /* If we are changing the hash table in a restricted shell, make sure the
+        target pathname can be found using a $PATH search. */
+      full_path = find_user_command (value);
+      if (full_path == 0 || *full_path == 0 || executable_file (full_path) == 0)
+       {
+         sh_notfound (value);
+         free (full_path);
+         return ((SHELL_VAR *)NULL);
+       }
+      free (full_path);
     }
 #endif
   phash_insert (key, value, 0, 0);
@@ -1693,6 +1837,11 @@ assign_aliasvar (self, value, ind, key)
      arrayind_t ind;
      char *key;
 {
+  if (legal_alias_name (key, 0) == 0)
+    {
+       report_error (_("`%s': invalid alias name"), key);
+       return (self);
+    }
   add_alias (key, value);
   return (build_aliasvar (self));
 }
@@ -1758,16 +1907,23 @@ initialize_dynamic_variables ()
 
   v = init_seconds_var ();
 
+  INIT_DYNAMIC_VAR ("BASH_ARGV0", (char *)NULL, get_bash_argv0, assign_bash_argv0);
+
   INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL);
   INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell);
 
   INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
   VSETATTR (v, att_integer);
   INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
-  VSETATTR (v, att_integer);
+  VSETATTR (v, att_integer|att_regenerate);
 
   INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
-  VSETATTR (v, att_integer|att_readonly);
+  VSETATTR (v, att_integer);
+
+  INIT_DYNAMIC_VAR ("EPOCHSECONDS", (char *)NULL, get_epochseconds, null_assign);
+  VSETATTR (v, att_regenerate);
+  INIT_DYNAMIC_VAR ("EPOCHREALTIME", (char *)NULL, get_epochrealtime, null_assign);
+  VSETATTR (v, att_regenerate);
 
 #if defined (HISTORY)
   INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL);
@@ -1786,8 +1942,8 @@ initialize_dynamic_variables ()
   v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
 
 #  if defined (DEBUGGER)
-  v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
-  v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
+  v = init_dynamic_array_var ("BASH_ARGC", get_bashargcv, null_array_assign, att_noassign|att_nounset);
+  v = init_dynamic_array_var ("BASH_ARGV", get_bashargcv, null_array_assign, att_noassign|att_nounset);
 #  endif /* DEBUGGER */
   v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
   v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);
@@ -1904,7 +2060,7 @@ find_variable_nameref (v)
      SHELL_VAR *v;
 {
   int level, flags;
-  char *newname, *t;
+  char *newname;
   SHELL_VAR *orig, *oldv;
 
   level = 0;
@@ -1926,6 +2082,13 @@ find_variable_nameref (v)
       if (v == orig || v == oldv)
        {
          internal_warning (_("%s: circular name reference"), orig->name);
+#if 1
+         /* XXX - provisional change - circular refs go to
+            global scope for resolution, without namerefs. */
+         if (variable_context && v->context)
+           return (find_global_variable_noref (v->name));
+         else
+#endif
          return ((SHELL_VAR *)0);
        }
     }
@@ -1995,7 +2158,6 @@ find_nameref_at_context (v, vc)
      VAR_CONTEXT *vc;
 {
   SHELL_VAR *nv, *nv2;
-  VAR_CONTEXT *nvc;
   char *newname;
   int level;
 
@@ -2129,6 +2291,36 @@ find_variable_nameref_for_assignment (name, flags)
   return (var);
 }
 
+/* If find_variable (name) returns NULL, check that it's not a nameref
+   referencing a variable that doesn't exist. If it is, return the new
+   name. If not, return the original name. Kind of like the previous
+   function, but dealing strictly with names. This takes assignment flags
+   so it can deal with the various assignment modes used by `declare'. */
+char *
+nameref_transform_name (name, flags)
+     char *name;
+     int flags;
+{
+  SHELL_VAR *v;
+  char *newname;
+
+  v = 0;
+  if (flags & ASS_MKLOCAL)
+    {
+      v = find_variable_last_nameref (name, 1);
+      /* If we're making local variables, only follow namerefs that point to
+        non-existant variables at the same variable context. */
+      if (v && v->context != variable_context)
+       v = 0;
+    }
+  else if (flags & ASS_MKGLOBAL)
+    v = (flags & ASS_CHKLOCAL) ? find_variable_last_nameref (name, 1)
+                              : find_global_variable_last_nameref (name, 1);
+  if (v && nameref_p (v) && valid_nameref_value (nameref_cell (v), 1))
+    return nameref_cell (v);
+  return name;
+}
+
 /* Find a variable, forcing a search of the temporary environment first */
 SHELL_VAR *
 find_variable_tempenv (name)
@@ -2341,6 +2533,42 @@ sh_get_env_value (v)
 /*                                                                 */
 /* **************************************************************** */
 
+static int
+var_sametype (v1, v2)
+     SHELL_VAR *v1;
+     SHELL_VAR *v2;
+{
+  if (v1 == 0 || v2 == 0)
+    return 0;
+#if defined (ARRAY_VARS)
+  else if (assoc_p (v1) && assoc_p (v2))
+    return 1;
+  else if (array_p (v1) && array_p (v2))
+    return 1;
+  else if (array_p (v1) || array_p (v2))
+    return 0;
+  else if (assoc_p (v1) || assoc_p (v2))
+    return 0;
+#endif
+  else
+    return 1;
+}
+
+int
+validate_inherited_value (var, type)
+     SHELL_VAR *var;
+     int type;
+{
+#if defined (ARRAY_VARS)
+  if (type == att_array && assoc_p (var))
+    return 0;
+  else if (type == att_assoc && array_p (var))
+    return 0;
+  else
+#endif
+  return 1;    /* should we run convert_var_to_array here or let the caller? */
+}
+
 /* Set NAME to VALUE if NAME has no value. */
 SHELL_VAR *
 set_if_not (name, value)
@@ -2359,13 +2587,14 @@ set_if_not (name, value)
 
 /* Create a local variable referenced by NAME. */
 SHELL_VAR *
-make_local_variable (name)
+make_local_variable (name, flags)
      const char *name;
+     int flags;
 {
   SHELL_VAR *new_var, *old_var, *old_ref;
   VAR_CONTEXT *vc;
   int was_tmpvar;
-  char *tmp_value;
+  char *old_value;
 
   /* We don't want to follow the nameref chain when making local variables; we
      just want to create them. */
@@ -2399,10 +2628,23 @@ make_local_variable (name)
   if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
     {
       VUNSETATTR (old_var, att_invisible);     /* XXX */
+#if 0  /* TAG:bash-5.1 */
+      /* We still want to flag this variable as local, though, and set things
+         up so that it gets treated as a local variable. */
+      new_var = old_var;
+      /* Since we found the variable in a temporary environment, this will
+        succeed. */
+      for (vc = shell_variables; vc; vc = vc->down)
+       if (vc_isfuncenv (vc) && vc->scope == variable_context)
+         break;
+      goto set_local_var_flags;
+#endif
       return (old_var);
     }
-  if (was_tmpvar)
-    tmp_value = value_cell (old_var);
+
+  /* If we want to change to "inherit the old variable's value" semantics,
+     here is where to save the old value. */
+  old_value = was_tmpvar ? value_cell (old_var) : (char *)NULL;
 
   for (vc = shell_variables; vc; vc = vc->down)
     if (vc_isfuncenv (vc) && vc->scope == variable_context)
@@ -2448,12 +2690,43 @@ make_local_variable (name)
         things like `x=4 local x'. XXX - see above for temporary env
         variables with the same context level as variable_context */
       /* XXX - we should only do this if the variable is not an array. */
+      /* If we want to change the local variable semantics to "inherit
+        the old variable's value" here is where to set it.  And we would
+        need to use copy_variable (currently unused) to do it for all
+        possible variable values. */
       if (was_tmpvar)
-       var_setvalue (new_var, savestring (tmp_value));
+       var_setvalue (new_var, savestring (old_value));
+      else if (localvar_inherit || (flags & MKLOC_INHERIT))
+       {
+         /* This may not make sense for nameref variables that are shadowing
+            variables with the same name, but we don't know that yet. */
+#if defined (ARRAY_VARS)
+         if (assoc_p (old_var))
+           var_setassoc (new_var, assoc_copy (assoc_cell (old_var)));
+         else if (array_p (old_var))
+           var_setarray (new_var, array_copy (array_cell (old_var)));
+         else if (value_cell (old_var))
+#else
+         if (value_cell (old_var))
+#endif
+           var_setvalue (new_var, savestring (value_cell (old_var)));
+         else
+           var_setvalue (new_var, (char *)NULL);
+       }
 
-      new_var->attributes = exported_p (old_var) ? att_exported : 0;
+      if (localvar_inherit || (flags & MKLOC_INHERIT))
+       {
+         /* It doesn't make sense to inherit the nameref attribute */
+         new_var->attributes = old_var->attributes & ~att_nameref;
+         new_var->dynamic_value = old_var->dynamic_value;
+         new_var->assign_func = old_var->assign_func;
+       }
+      else
+       /* We inherit the export attribute, but no others. */
+       new_var->attributes = exported_p (old_var) ? att_exported : 0;
     }
 
+set_local_var_flags:
   vc->flags |= VC_HASLOCAL;
 
   new_var->context = variable_context;
@@ -2462,7 +2735,9 @@ make_local_variable (name)
   if (ifsname (name))
     setifs (new_var);
 
-  if (was_tmpvar == 0 && no_invisible_vars == 0)
+  /* value_cell will be 0 if localvar_inherit == 0 or there was no old variable
+     with the same name or the old variable was invisible */
+  if (was_tmpvar == 0 && no_invisible_vars == 0 && value_cell (new_var) == 0)
     VSETATTR (new_var, att_invisible); /* XXX */
   return (new_var);
 }
@@ -2539,14 +2814,32 @@ make_local_array_variable (name, assoc_ok)
   SHELL_VAR *var;
   ARRAY *array;
 
-  var = make_local_variable (name);
+  var = make_local_variable (name, 0); /* XXX for now */
+  /* If ASSOC_OK is non-zero, assume that we are ok with letting an assoc
+     variable return to the caller without converting it. The caller will
+     either flag an error or do the conversion itself. */
   if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var)))
     return var;
 
-  array = array_create ();
+  /* Validate any value we inherited from a variable instance at a previous
+     scope and disard anything that's invalid. */
+  if (localvar_inherit && assoc_p (var))
+    {
+      internal_warning ("%s: cannot inherit value from incompatible type", name);
+      VUNSETATTR (var, att_assoc);
+      dispose_variable_value (var);
+      array = array_create ();
+      var_setarray (var, array);
+    }
+  else if (localvar_inherit)
+    var = convert_var_to_array (var);          /* XXX */
+  else
+    {
+      dispose_variable_value (var);
+      array = array_create ();
+      var_setarray (var, array);
+    }
 
-  dispose_variable_value (var);
-  var_setarray (var, array);
   VSETATTR (var, att_array);
   return var;
 }
@@ -2567,20 +2860,39 @@ make_new_assoc_variable (name)
 }
 
 SHELL_VAR *
-make_local_assoc_variable (name)
+make_local_assoc_variable (name, array_ok)
      char *name;
+     int array_ok;
 {
   SHELL_VAR *var;
   HASH_TABLE *hash;
 
-  var = make_local_variable (name);
-  if (var == 0 || assoc_p (var))
+  var = make_local_variable (name, 0); /* XXX for now */
+  /* If ARRAY_OK is non-zero, assume that we are ok with letting an array
+     variable return to the caller without converting it. The caller will
+     either flag an error or do the conversion itself. */
+  if (var == 0 || assoc_p (var) || (array_ok && array_p (var)))
     return var;
 
-  dispose_variable_value (var);
-  hash = assoc_create (0);
+  /* Validate any value we inherited from a variable instance at a previous
+     scope and disard anything that's invalid. */
+  if (localvar_inherit && array_p (var))
+    {
+      internal_warning ("%s: cannot inherit value from incompatible type", name);
+      VUNSETATTR (var, att_array);
+      dispose_variable_value (var);
+      hash = assoc_create (0);
+      var_setassoc (var, hash);
+    }
+  else if (localvar_inherit)
+    var = convert_var_to_assoc (var);          /* XXX */
+  else
+    {
+      dispose_variable_value (var);
+      hash = assoc_create (0);
+      var_setassoc (var, hash);
+    }
 
-  var_setassoc (var, hash);
   VSETATTR (var, att_assoc);
   return var;
 }
@@ -2600,24 +2912,37 @@ make_variable_value (var, value, flags)
      then do expression evaluation on it and store the result.  The
      functions in expr.c (evalexp()) and bind_int_variable() are responsible
      for turning off the integer flag if they don't want further
-     evaluation done. */
-  if (integer_p (var))
+     evaluation done.  Callers that find it inconvenient to do this can set
+     the ASS_NOEVAL flag.  For the special case of arithmetic expression
+     evaluation, the caller can set ASS_NOLONGJMP to avoid jumping out to
+     top_level. */
+  if ((flags & ASS_NOEVAL) == 0 && integer_p (var))
     {
       if (flags & ASS_APPEND)
        {
          oval = value_cell (var);
-         lval = evalexp (oval, &expok);        /* ksh93 seems to do this */
+         lval = evalexp (oval, 0, &expok);     /* ksh93 seems to do this */
          if (expok == 0)
            {
-             top_level_cleanup ();
-             jump_to_top_level (DISCARD);
+             if (flags & ASS_NOLONGJMP)
+               goto make_value;
+             else
+               {
+                 top_level_cleanup ();
+                 jump_to_top_level (DISCARD);
+               }
            }
        }
-      rval = evalexp (value, &expok);
+      rval = evalexp (value, 0, &expok);
       if (expok == 0)
        {
-         top_level_cleanup ();
-         jump_to_top_level (DISCARD);
+         if (flags & ASS_NOLONGJMP)
+           goto make_value;
+         else
+           {
+             top_level_cleanup ();
+             jump_to_top_level (DISCARD);
+           }
        }
       /* This can be fooled if the variable's value changes while evaluating
         `rval'.  We can change it if we move the evaluation of lval to here. */
@@ -2626,7 +2951,7 @@ make_variable_value (var, value, flags)
       retval = itos (rval);
     }
 #if defined (CASEMOD_ATTRS)
-  else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
+  else if ((flags & ASS_NOEVAL) == 0 && (capcase_p (var) || uppercase_p (var) || lowercase_p (var)))
     {
       if (flags & ASS_APPEND)
        {
@@ -2655,6 +2980,7 @@ make_variable_value (var, value, flags)
 #endif /* CASEMOD_ATTRS */
   else if (value)
     {
+make_value:
       if (flags & ASS_APPEND)
        {
          oval = get_variable_value (var);
@@ -2680,8 +3006,55 @@ make_variable_value (var, value, flags)
   return retval;
 }
 
+/* If we can optimize appending to string variables, say so */
+static int
+can_optimize_assignment (entry, value, aflags)
+     SHELL_VAR *entry;
+     char *value;
+     int aflags;
+{
+  if ((aflags & ASS_APPEND) == 0)
+    return 0;
+#if defined (ARRAY_VARS)
+  if (array_p (entry) || assoc_p (entry))
+    return 0;
+#endif
+  if (integer_p (entry) || uppercase_p (entry) || lowercase_p (entry) || capcase_p (entry))
+    return 0;
+  if (readonly_p (entry) || noassign_p (entry))
+    return 0;
+  return 1;
+}
+
+/* right now we optimize appends to string variables */
+static SHELL_VAR *
+optimized_assignment (entry, value, aflags)
+     SHELL_VAR *entry;
+     char *value;
+     int aflags;
+{
+  size_t len, vlen;
+  char *v, *new;
+
+  v = value_cell (entry);
+  len = STRLEN (v);
+  vlen = STRLEN (value);
+
+  new = (char *)xrealloc (v, len + vlen + 8);  /* for now */
+  if (vlen == 1)
+    {
+      new[len] = *value;
+      new[len+1] = '\0';
+    }
+  else
+    strcpy (new + len, value);
+  var_setvalue (entry, new);
+  return entry;
+}
+
 /* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
-   temporary environment (but usually is not). */
+   temporary environment (but usually is not).  HFLAGS controls how NAME
+   is looked up in TABLE; AFLAGS controls how VALUE is assigned */
 static SHELL_VAR *
 bind_variable_internal (name, value, table, hflags, aflags)
      const char *name;
@@ -2718,12 +3091,17 @@ bind_variable_internal (name, value, table, hflags, aflags)
     }
   else if (entry && nameref_p (entry))
     {
-      newval = nameref_cell (entry);
+      newval = nameref_cell (entry);   /* XXX - newval can't be NULL here */
+      if (valid_nameref_value (newval, 0) == 0)
+       {
+         sh_invalidid (newval);
+         return ((SHELL_VAR *)NULL);
+       }
 #if defined (ARRAY_VARS)
       /* declare -n foo=x[2] ; foo=bar */
       if (valid_array_reference (newval, 0))
        {
-         tname = array_variable_name (newval, (char **)0, (int *)0);
+         tname = array_variable_name (newval, 0, (char **)0, (int *)0);
          if (tname && (tentry = find_variable_noref (tname)) && nameref_p (tentry))
            {
              /* nameref variables can't be arrays */
@@ -2734,21 +3112,21 @@ bind_variable_internal (name, value, table, hflags, aflags)
            }
          free (tname);
           /* XXX - should it be aflags? */
-         entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags|ASS_NAMEREF);
+         entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF);
          if (entry == 0)
            return entry;
        }
       else
 #endif
-      {
-      entry = make_new_variable (newval, table);
-      var_setvalue (entry, make_variable_value (entry, value, 0));
-      }
+       {
+         entry = make_new_variable (newval, table);
+         var_setvalue (entry, make_variable_value (entry, value, aflags));
+       }
     }
   else if (entry == 0)
     {
       entry = make_new_variable (name, table);
-      var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
+      var_setvalue (entry, make_variable_value (entry, value, aflags)); /* XXX */
     }
   else if (entry->assign_func) /* array vars have assign functions now */
     {
@@ -2777,12 +3155,27 @@ assign_value:
       /* Variables which are bound are visible. */
       VUNSETATTR (entry, att_invisible);
 
+      /* If we can optimize the assignment, do so and return.  Right now, we
+        optimize appends to string variables. */
+      if (can_optimize_assignment (entry, value, aflags))
+       {
+         INVALIDATE_EXPORTSTR (entry);
+         optimized_assignment (entry, value, aflags);
+
+         if (mark_modified_vars)
+           VSETATTR (entry, att_exported);
+
+         if (exported_p (entry))
+           array_needs_making = 1;
+
+         return (entry);
+       }
+
 #if defined (ARRAY_VARS)
       if (assoc_p (entry) || array_p (entry))
         newval = make_array_variable_value (entry, 0, "0", value, aflags);
       else
 #endif
-
       newval = make_variable_value (entry, value, aflags);     /* XXX */
 
       /* Invalidate any cached export string */
@@ -2832,7 +3225,6 @@ bind_variable (name, value, flags)
 {
   SHELL_VAR *v, *nv;
   VAR_CONTEXT *vc, *nvc;
-  int level;
 
   if (shell_variables == 0)
     create_variable_tables ();
@@ -2854,6 +3246,9 @@ bind_variable (name, value, flags)
          nvc = vc;
          if (v && nameref_p (v))
            {
+             /* This starts at the context where we found the nameref. If we
+                want to start the name resolution over again at the original
+                context, this is where we need to change it */
              nv = find_variable_nameref_context (v, vc, &nvc);
              if (nv == 0)
                {
@@ -2875,8 +3270,9 @@ bind_variable (name, value, flags)
                  else if (nv == &nameref_maxloop_value)
                    {
                      internal_warning (_("%s: circular name reference"), v->name);
-#if 0
-                     return (bind_variable_value (v, value, flags|ASS_NAMEREF));
+#if 1
+                     /* TAG:bash-5.1 */
+                     return (bind_global_variable (v->name, value, flags));
 #else
                      v = 0;    /* backwards compat */
 #endif
@@ -2887,8 +3283,9 @@ bind_variable (name, value, flags)
              else if (nv == &nameref_maxloop_value)
                {
                  internal_warning (_("%s: circular name reference"), v->name);
-#if 0
-                 return (bind_variable_value (v, value, flags|ASS_NAMEREF));
+#if 1
+                 /* TAG:bash-5.1 */
+                 return (bind_global_variable (v->name, value, flags));
 #else
                  v = 0;        /* backwards compat */
 #endif
@@ -2910,10 +3307,6 @@ bind_global_variable (name, value, flags)
      char *value;
      int flags;
 {
-  SHELL_VAR *v, *nv;
-  VAR_CONTEXT *vc, *nvc;
-  int level;
-
   if (shell_variables == 0)
     create_variable_tables ();
 
@@ -2921,6 +3314,17 @@ bind_global_variable (name, value, flags)
   return (bind_variable_internal (name, value, global_variables->table, 0, flags));
 }
 
+static SHELL_VAR *
+bind_invalid_envvar (name, value, flags)
+     const char *name;
+     char *value;
+     int flags;
+{
+  if (invalid_env == 0)
+    invalid_env = hash_create (64);    /* XXX */
+  return (bind_variable_internal (name, value, invalid_env, HASH_NOSRCH, flags));
+}
+
 /* Make VAR, a simple shell variable, have value VALUE.  Once assigned a
    value, variables are no longer invisible.  This is a duplicate of part
    of the internals of bind_variable.  If the variable is exported, or
@@ -2996,18 +3400,24 @@ bind_variable_value (var, value, aflags)
    variable we set here, then turn it back on after binding as necessary. */
 
 SHELL_VAR *
-bind_int_variable (lhs, rhs)
+bind_int_variable (lhs, rhs, flags)
      char *lhs, *rhs;
+     int flags;
 {
   register SHELL_VAR *v;
   int isint, isarr, implicitarray;
 
   isint = isarr = implicitarray = 0;
 #if defined (ARRAY_VARS)
-  if (valid_array_reference (lhs, 0))
+  if (valid_array_reference (lhs, (flags & ASS_NOEXPAND) != 0))
     {
       isarr = 1;
-      v = array_variable_part (lhs, (char **)0, (int *)0);
+      v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0);
+    }
+  else if (legal_identifier (lhs) == 0)
+    {
+      sh_invalidid (lhs);
+      return ((SHELL_VAR *)NULL);      
     }
   else
 #endif
@@ -3025,12 +3435,12 @@ bind_int_variable (lhs, rhs)
 
 #if defined (ARRAY_VARS)
   if (isarr)
-    v = assign_array_element (lhs, rhs, 0);
+    v = assign_array_element (lhs, rhs, flags);
   else if (implicitarray)
-    v = bind_array_variable (lhs, 0, rhs, 0);
+    v = bind_array_variable (lhs, 0, rhs, 0);  /* XXX - check on flags */
   else
 #endif
-    v = bind_variable (lhs, rhs, 0);
+    v = bind_variable (lhs, rhs, 0);   /* why not use bind_variable_value? */
 
   if (v)
     {
@@ -3053,7 +3463,7 @@ bind_var_to_int (var, val)
   char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
 
   p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
-  return (bind_int_variable (var, p));
+  return (bind_int_variable (var, p, 0));
 }
 
 /* Do a function binding to a variable.  You pass the name and
@@ -3104,22 +3514,27 @@ bind_function (name, value)
 
 #if defined (DEBUGGER)
 /* Bind a function definition, which includes source file and line number
-   information in addition to the command, into the FUNCTION_DEF hash table.*/
+   information in addition to the command, into the FUNCTION_DEF hash table.
+   If (FLAGS & 1), overwrite any existing definition. If FLAGS == 0, leave
+   any existing definition alone. */
 void
-bind_function_def (name, value)
+bind_function_def (name, value, flags)
      const char *name;
      FUNCTION_DEF *value;
+     int flags;
 {
   FUNCTION_DEF *entry;
   BUCKET_CONTENTS *elt;
   COMMAND *cmd;
 
   entry = find_function_def (name);
-  if (entry)
+  if (entry && (flags & 1))
     {
       dispose_function_def_contents (entry);
       entry = copy_function_def_contents (value, entry);
     }
+  else if (entry)
+    return;
   else
     {
       cmd = value->command;
@@ -3165,6 +3580,12 @@ assign_in_env (word, flags)
          aflags |= ASS_APPEND;
        }
 
+      if (legal_identifier (name) == 0)
+       {
+         sh_invalidid (name);
+         return (0);
+       }
+  
       var = find_variable (name);
       if (var == 0)
        {
@@ -3174,7 +3595,10 @@ assign_in_env (word, flags)
             but the variable does not already exist, assign to the nameref
             target and add the target to the temporary environment.  This is
             what ksh93 does */
-         if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 1))
+         /* We use 2 in the call to valid_nameref_value because we don't want
+            to allow array references here at all (newname will be used to
+            create a variable directly below) */
+         if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 2))
            {
              newname = nameref_cell (var);
              var = 0;          /* don't use it for append */
@@ -3503,7 +3927,8 @@ makunbound (name, vc)
      must be done so that if the variable is subsequently assigned a new
      value inside the function, the `local' attribute is still present.
      We also need to add it back into the correct hash table. */
-  if (old_var && local_p (old_var) && variable_context == old_var->context)
+  if (old_var && local_p (old_var) &&
+       (old_var->context == variable_context || (localvar_unset && old_var->context < variable_context)))
     {
       if (nofree_p (old_var))
        var_setvalue (old_var, (char *)NULL);
@@ -3960,7 +4385,7 @@ static int
 visible_array_vars (var)
      SHELL_VAR *var;
 {
-  return (invisible_p (var) == 0 && array_p (var));
+  return (invisible_p (var) == 0 && (array_p (var) || assoc_p (var)));
 }
 
 SHELL_VAR **
@@ -4034,8 +4459,46 @@ find_tempenv_variable (name)
 char **tempvar_list;
 int tvlist_ind;
 
+/* Take a variable from an assignment statement preceding a posix special
+   builtin (including `return') and create a global variable from it. This
+   is called from merge_temporary_env, which is only called when in posix
+   mode. */
+static void
+push_posix_temp_var (data)
+     PTR_T data;
+{
+  SHELL_VAR *var, *v;
+  HASH_TABLE *binding_table;
+
+  var = (SHELL_VAR *)data;
+
+  binding_table = global_variables->table;
+  if (binding_table == 0)
+    binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS);
+
+  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP);
+
+  /* global variables are no longer temporary and don't need propagating. */
+  var->attributes &= ~(att_tempvar|att_propagate);
+  if (v)
+    v->attributes |= var->attributes;
+
+  if (find_special_var (var->name) >= 0)
+    tempvar_list[tvlist_ind++] = savestring (var->name);
+
+  dispose_variable (var);
+}
+
 /* Push the variable described by (SHELL_VAR *)DATA down to the next
-   variable context from the temporary environment. */
+   variable context from the temporary environment. This can be called
+   from one context:
+      1. propagate_temp_var: which is called to propagate variables in
+        assignments like `var=value declare -x var' to the surrounding
+        scope.
+
+  In this case, the variable should have the att_propagate flag set and
+  we can create variables in the current scope.
+*/
 static void
 push_temp_var (data)
      PTR_T data;
@@ -4055,10 +4518,13 @@ push_temp_var (data)
        binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
     }
 
-  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE);
+  v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP);
 
   /* XXX - should we set the context here?  It shouldn't matter because of how
-     assign_in_env works, but might want to check. */
+     assign_in_env works, but we do it anyway. */
+  if (v)
+    v->context = shell_variables->scope;
+
   if (binding_table == global_variables->table)                /* XXX */
     var->attributes &= ~(att_tempvar|att_propagate);
   else
@@ -4076,6 +4542,10 @@ push_temp_var (data)
   dispose_variable (var);
 }
 
+/* Take a variable described by DATA and push it to the surrounding scope if
+   the PROPAGATE attribute is set. That gets set by push_temp_var if we are
+   taking a variable like `var=value declare -x var' and propagating it to
+   the enclosing scope. */
 static void
 propagate_temp_var (data)
      PTR_T data;
@@ -4117,9 +4587,6 @@ dispose_temporary_env (pushf)
 
   array_needs_making = 1;
 
-#if 0
-  sv_ifs ("IFS");              /* XXX here for now -- check setifs in assign_in_env */  
-#endif
   for (i = 0; i < tvlist_ind; i++)
     stupidly_hack_special_variables (tempvar_list[i]);
 
@@ -4139,12 +4606,15 @@ dispose_used_env_vars ()
 }
 
 /* Take all of the shell variables in the temporary environment HASH_TABLE
-   and make shell variables from them at the current variable context. */
+   and make shell variables from them at the current variable context.
+   Right now, this is only called in Posix mode to implement the historical
+   accident of creating global variables from assignment statements preceding
+   special builtins, but we check in case this acquires another caller later. */
 void
 merge_temporary_env ()
 {
   if (temporary_env)
-    dispose_temporary_env (push_temp_var);
+    dispose_temporary_env (posixly_correct ? push_posix_temp_var : push_temp_var);
 }
 
 void
@@ -4170,7 +4640,7 @@ mk_env_string (name, value, isfunc)
      int isfunc;
 {
   size_t name_len, value_len;
-  char *p, *q;
+  char *p, *q, *t;
 
   name_len = strlen (name);
   value_len = STRLEN (value);
@@ -4197,7 +4667,17 @@ mk_env_string (name, value, isfunc)
 
   q[0] = '=';
   if (value && *value)
-    memcpy (q + 1, value, value_len + 1);
+    {
+      if (isfunc)
+       {
+         t = dequote_escapes (value);
+         value_len = STRLEN (t);
+         memcpy (q + 1, t, value_len + 1);
+         free (t);
+       }
+      else
+       memcpy (q + 1, value, value_len + 1);
+    }
   else
     q[1] = '\0';
 
@@ -4260,6 +4740,14 @@ make_env_array_from_var_list (vars)
       /* We don't use the exportstr stuff on Cygwin at all. */
       INVALIDATE_EXPORTSTR (var);
 #endif
+
+      /* If the value is generated dynamically, generate it here. */
+      if (regen_p (var) && var->dynamic_value)
+       {
+         var = (*(var->dynamic_value)) (var);
+         INVALIDATE_EXPORTSTR (var);
+       }
+
       if (var->exportstr)
        value = var->exportstr;
       else if (function_p (var))
@@ -4465,7 +4953,7 @@ maybe_make_export_env ()
 {
   register char **temp_array;
   int new_size;
-  VAR_CONTEXT *tcxt;
+  VAR_CONTEXT *tcxt, *icxt;
 
   if (array_needs_making)
     {
@@ -4477,7 +4965,7 @@ maybe_make_export_env ()
         variables are not (yet) exported, this will always be big enough
         for the exported variables and functions. */
       new_size = n_shell_variables () + HASH_ENTRIES (shell_functions) + 1 +
-                HASH_ENTRIES (temporary_env);
+                HASH_ENTRIES (temporary_env) + HASH_ENTRIES (invalid_env);
       if (new_size > export_env_size)
        {
          export_env_size = new_size;
@@ -4498,11 +4986,23 @@ maybe_make_export_env ()
        }
       else
        tcxt = shell_variables;
+
+      if (invalid_env)
+       {
+         icxt = new_var_context ((char *)NULL, 0);
+         icxt->table = invalid_env;
+         icxt->down = tcxt;
+       }
+      else
+       icxt = tcxt;
       
-      temp_array = make_var_export_array (tcxt);
+      temp_array = make_var_export_array (icxt);
       if (temp_array)
        add_temp_array_to_env (temp_array, 0, 0);
 
+      if (icxt != tcxt)
+       free (icxt);
+
       if (tcxt != shell_variables)
        free (tcxt);
 
@@ -4613,11 +5113,26 @@ push_var_context (name, flags, tempvars)
      HASH_TABLE *tempvars;
 {
   VAR_CONTEXT *vc;
+  int posix_func_behavior;
+
+  /* As of IEEE Std 1003.1-2017, assignment statements preceding shell
+     functions no longer behave like assignment statements preceding
+     special builtins, and do not persist in the current shell environment.
+     This is austin group interp #654, though nobody implements it yet. */
+#if 0  /* XXX - TAG: bash-5.1 */
+  posix_func_behavior = 0;
+#else
+  posix_func_behavior = posixly_correct;
+#endif
 
   vc = new_var_context (name, flags);
-  vc->table = tempvars;
-  if (tempvars)
+  /* Posix interp 1009, temporary assignments preceding function calls modify
+     the current environment *before* the command is executed. */
+  if (posix_func_behavior && (flags & VC_FUNCENV) && tempvars == temporary_env)
+    merge_temporary_env ();
+  else if (tempvars)
     {
+      vc->table = tempvars;
       /* Have to do this because the temp environment was created before
         variable_context was incremented. */
       flatten (tempvars, set_context, (VARLIST *)NULL, 0);
@@ -4629,27 +5144,51 @@ push_var_context (name, flags, tempvars)
   return (shell_variables = vc);
 }
 
-static void
-push_func_var (data)
-     PTR_T data;
-{
-  SHELL_VAR *var, *v;
+/* This can be called from one of two code paths:
+       1. pop_scope, which implements the posix rules for propagating variable
+          assignments preceding special builtins to the surrounding scope
+          (push_builtin_var);
+       2. pop_var_context, which is called from pop_context and implements the
+          posix rules for propagating variable assignments preceding function
+          calls to the surrounding scope (push_func_var).
 
-  var = (SHELL_VAR *)data;
+  It takes variables out of a temporary environment hash table. We take the
+  variable in data.
+*/
+
+static inline void
+push_posix_tempvar_internal (var, isbltin)
+     SHELL_VAR *var;
+     int isbltin;
+{
+  SHELL_VAR *v;
+  int posix_var_behavior;
+
+  /* As of IEEE Std 1003.1-2017, assignment statements preceding shell
+     functions no longer behave like assignment statements preceding
+     special builtins, and do not persist in the current shell environment.
+     This is austin group interp #654, though nobody implements it yet. */
+#if 0  /* XXX - TAG: bash-5.1 */
+  posix_var_behavior = posixly_correct && isbltin;
+#else
+  posix_var_behavior = posixly_correct;
+#endif
 
   if (local_p (var) && STREQ (var->name, "-"))
     set_current_options (value_cell (var));
-  else if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
+  else if (tempvar_p (var) && (posix_var_behavior || (var->attributes & att_propagate)))
     {
       /* Make sure we have a hash table to store the variable in while it is
         being propagated down to the global variables table.  Create one if
         we have to */
       if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
        shell_variables->table = hash_create (VARIABLES_HASH_BUCKETS);
-      /* XXX - should we set v->context here? */
       v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
+      /* XXX - should we set v->context here? */
+      if (v)
+       v->context = shell_variables->scope;
 #if defined (ARRAY_VARS)
-      if (array_p (var) || assoc_p (var))
+      if (v && (array_p (var) || assoc_p (var)))
        {
          FREE (value_cell (v));
          if (array_p (var))
@@ -4671,6 +5210,26 @@ push_func_var (data)
   dispose_variable (var);
 }
 
+static void
+push_func_var (data)
+     PTR_T data;
+{
+  SHELL_VAR *var;
+
+  var = (SHELL_VAR *)data;
+  push_posix_tempvar_internal (var, 0);
+}
+
+static void
+push_builtin_var (data)
+     PTR_T data;
+{
+  SHELL_VAR *var;
+
+  var = (SHELL_VAR *)data;
+  push_posix_tempvar_internal (var, 1);
+}
+
 /* Pop the top context off of VCXT and dispose of it, returning the rest of
    the stack. */
 void
@@ -4741,18 +5300,17 @@ push_exported_var (data)
      propagated, bind it in the previous scope before disposing it. */
   /* XXX - This isn't exactly right, because all tempenv variables have the
     export attribute set. */
-#if 0
-  if (exported_p (var) || (var->attributes & att_propagate))
-#else
   if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate))
-#endif
     {
       var->attributes &= ~att_tempvar;         /* XXX */
       v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
       if (shell_variables == global_variables)
        var->attributes &= ~att_propagate;
       if (v)
-       v->attributes |= var->attributes;
+       {
+         v->attributes |= var->attributes;
+         v->context = shell_variables->scope;
+       }
     }
   else
     stupidly_hack_special_variables (var->name);       /* XXX */
@@ -4760,11 +5318,17 @@ push_exported_var (data)
   dispose_variable (var);
 }
 
+/* This is called to propagate variables in the temporary environment of a
+   special builtin (if IS_SPECIAL != 0) or exported variables that are the
+   result of a builtin like `source' or `command' that can operate on the
+   variables in its temporary environment. In the first case, we call
+   push_builtin_var, which does the right thing. */
 void
 pop_scope (is_special)
      int is_special;
 {
   VAR_CONTEXT *vcxt, *ret;
+  int is_bltinenv;
 
   vcxt = shell_variables;
   if (vc_istempscope (vcxt) == 0)
@@ -4772,6 +5336,7 @@ pop_scope (is_special)
       internal_error (_("pop_scope: head of shell_variables not a temporary environment scope"));
       return;
     }
+  is_bltinenv = vc_isbltnenv (vcxt);   /* XXX - for later */
 
   ret = vcxt->down;
   if (ret)
@@ -4785,7 +5350,7 @@ pop_scope (is_special)
   if (vcxt->table)
     {
       if (is_special)
-       hash_flush (vcxt->table, push_func_var);
+       hash_flush (vcxt->table, push_builtin_var);
       else
        hash_flush (vcxt->table, push_exported_var);
       hash_dispose (vcxt->table);
@@ -4801,10 +5366,64 @@ pop_scope (is_special)
 /*                                                                 */
 /* **************************************************************** */
 
-static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL;
+struct saved_dollar_vars {
+  char **first_ten;
+  WORD_LIST *rest;
+};
+
+static struct saved_dollar_vars *dollar_arg_stack = (struct saved_dollar_vars *)NULL;
 static int dollar_arg_stack_slots;
 static int dollar_arg_stack_index;
 
+/* Functions to manipulate dollar_vars array. Need to keep these in sync with
+   whatever remember_args() does. */
+static char **
+save_dollar_vars ()
+{
+  char **ret;
+  int i;
+
+  ret = strvec_create (10);
+  for (i = 1; i < 10; i++)
+    {
+      ret[i] = dollar_vars[i];
+      dollar_vars[i] = (char *)NULL;
+    }
+  return ret;
+}
+
+static void
+restore_dollar_vars (args)
+     char **args;
+{
+  int i;
+
+  for (i = 1; i < 10; i++)
+    dollar_vars[i] = args[i];
+}
+
+static void
+free_dollar_vars ()
+{
+  int i;
+
+  for (i = 1; i < 10; i++)
+    {
+      FREE (dollar_vars[i]);
+      dollar_vars[i] = (char *)NULL;
+    }
+}
+
+static void
+free_saved_dollar_vars (args)
+     char **args;
+{
+  int i;
+
+  for (i = 1; i < 10; i++)
+    FREE (args[i]);
+}
+
 /* XXX - should always be followed by remember_args () */
 void
 push_context (name, is_subshell, tempvars)
@@ -4836,35 +5455,75 @@ push_dollar_vars ()
 {
   if (dollar_arg_stack_index + 2 > dollar_arg_stack_slots)
     {
-      dollar_arg_stack = (WORD_LIST **)
+      dollar_arg_stack = (struct saved_dollar_vars *)
        xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
-                 * sizeof (WORD_LIST *));
+                 * sizeof (struct saved_dollar_vars));
     }
-  dollar_arg_stack[dollar_arg_stack_index++] = list_rest_of_args ();
-  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
+  
+  dollar_arg_stack[dollar_arg_stack_index].first_ten = save_dollar_vars ();
+  dollar_arg_stack[dollar_arg_stack_index++].rest = rest_of_args;
+  rest_of_args = (WORD_LIST *)NULL;
+  
+  dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;
+  dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;  
 }
 
 /* Restore the positional parameters from our stack. */
 void
 pop_dollar_vars ()
 {
-  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
+  if (dollar_arg_stack == 0 || dollar_arg_stack_index == 0)
     return;
 
-  remember_args (dollar_arg_stack[--dollar_arg_stack_index], 1);
-  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
-  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
+  /* Do what remember_args (xxx, 1) would have done. */
+  free_dollar_vars ();
+  dispose_words (rest_of_args);
+  
+  rest_of_args = dollar_arg_stack[--dollar_arg_stack_index].rest;
+  restore_dollar_vars (dollar_arg_stack[dollar_arg_stack_index].first_ten);
+  free (dollar_arg_stack[dollar_arg_stack_index].first_ten);
+
+  dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;
+  dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;
+  
   set_dollar_vars_unchanged ();
+  invalidate_cached_quoted_dollar_at ();
 }
 
 void
 dispose_saved_dollar_vars ()
 {
-  if (!dollar_arg_stack || dollar_arg_stack_index == 0)
+  if (dollar_arg_stack == 0 || dollar_arg_stack_index == 0)
     return;
 
-  dispose_words (dollar_arg_stack[dollar_arg_stack_index]);
-  dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL;
+  dispose_words (dollar_arg_stack[--dollar_arg_stack_index].rest);    
+  free_saved_dollar_vars (dollar_arg_stack[dollar_arg_stack_index].first_ten); 
+  free (dollar_arg_stack[dollar_arg_stack_index].first_ten);
+
+  dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;  
+  dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;
+}
+
+/* Initialize BASH_ARGV and BASH_ARGC after turning on extdebug after the
+   shell is initialized */
+void
+init_bash_argv ()
+{
+  if (bash_argv_initialized == 0)
+    {
+      save_bash_argv ();
+      bash_argv_initialized = 1;
+    }
+}
+
+void
+save_bash_argv ()
+{
+  WORD_LIST *list;
+
+  list = list_rest_of_args ();
+  push_args (list);
+  dispose_words (list);
 }
 
 /* Manipulate the special BASH_ARGV and BASH_ARGC variables. */
@@ -4924,11 +5583,6 @@ pop_args ()
  *************************************************/
 
 /* Extern declarations for variables this code has to manage. */
-extern int eof_encountered, eof_encountered_limit, ignoreeof;
-
-#if defined (READLINE)
-extern int hostname_list_initialized;
-#endif
 
 /* An alist of name.function for each special variable.  Most of the
    functions don't do much, and in fact, this would be faster with a
@@ -5512,7 +6166,7 @@ set_pipestatus_array (ps, nproc)
     {
       ae = element_forw (a->head);
       free (element_value (ae));
-      ae->value = itos (ps[0]);
+      set_element_value (ae, itos (ps[0]));
     }
   else if (array_num_elements (a) <= nproc)
     {
@@ -5522,7 +6176,7 @@ set_pipestatus_array (ps, nproc)
        {
          ae = element_forw (ae);
          free (element_value (ae));
-         ae->value = itos (ps[i]);
+         set_element_value (ae, itos (ps[i]));
        }
       /* add any more */
       for ( ; i < nproc; i++)
@@ -5547,16 +6201,15 @@ ARRAY *
 save_pipestatus_array ()
 {
   SHELL_VAR *v;
-  ARRAY *a, *a2;
+  ARRAY *a;
 
   v = find_variable ("PIPESTATUS");
   if (v == 0 || array_p (v) == 0 || array_cell (v) == 0)
     return ((ARRAY *)NULL);
     
-  a = array_cell (v);
-  a2 = array_copy (array_cell (v));
+  a = array_copy (array_cell (v));
 
-  return a2;
+  return a;
 }
 
 void
index 25c9ae072a15fdffe0491d12c8d057bb5282a607..2f6e35468f7ebae890835c04d30866fab48bc021 100644 (file)
@@ -1,6 +1,6 @@
 /* variables.h -- data structures for shell variables. */
 
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -125,6 +125,7 @@ typedef struct _vlist {
 #define att_imported   0x0008000       /* came from environment */
 #define att_special    0x0010000       /* requires special handling */
 #define att_nofree     0x0020000       /* do not free value on unset */
+#define att_regenerate 0x0040000       /* regenerate when exported */
 
 #define        attmask_int     0x00ff000
 
@@ -153,8 +154,10 @@ typedef struct _vlist {
 #define imported_p(var)                ((((var)->attributes) & (att_imported)))
 #define specialvar_p(var)      ((((var)->attributes) & (att_special)))
 #define nofree_p(var)          ((((var)->attributes) & (att_nofree)))
+#define regen_p(var)           ((((var)->attributes) & (att_regenerate)))
 
 #define tempvar_p(var)         ((((var)->attributes) & (att_tempvar)))
+#define propagate_p(var)       ((((var)->attributes) & (att_propagate)))
 
 /* Variable names: lvalues */
 #define name_cell(var)         ((var)->name)
@@ -218,6 +221,9 @@ typedef struct _vlist {
 
 #define ifsname(s)     ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
 
+/* Flag values for make_local_variable */
+#define MKLOC_INHERIT          0x01
+
 /* Special value for nameref with invalid value for creation or assignment */
 extern SHELL_VAR nameref_invalid_value;
 #define INVALID_NAMEREF_VALUE  (void *)&nameref_invalid_value
@@ -236,7 +242,18 @@ extern int variable_context;
 extern char *dollar_vars[];
 extern char **export_env;
 
+extern int tempenv_assign_error;
+extern int array_needs_making;
+extern int shell_level;
+
+/* XXX */
+extern WORD_LIST *rest_of_args;
+extern pid_t dollar_dollar_pid;
+
 extern void initialize_shell_variables __P((char **, int));
+
+extern int validate_inherited_value __P((SHELL_VAR *, int));
+
 extern SHELL_VAR *set_if_not __P((char *, char *));
 
 extern void sh_set_lines_and_columns __P((int, int));
@@ -264,13 +281,14 @@ extern SHELL_VAR *find_shell_variable __P((const char *));
 extern SHELL_VAR *find_tempenv_variable __P((const char *));
 extern SHELL_VAR *find_variable_no_invisible __P((const char *));
 extern SHELL_VAR *find_variable_for_assignment __P((const char *));
+extern char *nameref_transform_name __P((char *, int));
 extern SHELL_VAR *copy_variable __P((SHELL_VAR *));
-extern SHELL_VAR *make_local_variable __P((const char *));
+extern SHELL_VAR *make_local_variable __P((const char *, int));
 extern SHELL_VAR *bind_variable __P((const char *, char *, int));
 extern SHELL_VAR *bind_global_variable __P((const char *, char *, int));
 extern SHELL_VAR *bind_function __P((const char *, COMMAND *));
 
-extern void bind_function_def __P((const char *, FUNCTION_DEF *));
+extern void bind_function_def __P((const char *, FUNCTION_DEF *, int));
 
 extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *));
 SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *));
@@ -296,7 +314,7 @@ extern char *sh_get_env_value __P((const char *));
 extern char *make_variable_value __P((SHELL_VAR *, char *, int));
 
 extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int));
-extern SHELL_VAR *bind_int_variable __P((char *, char *));
+extern SHELL_VAR *bind_int_variable __P((char *, char *, int));
 extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t));
 
 extern int assign_in_env __P((WORD_DESC *, int));
@@ -326,6 +344,8 @@ extern void push_dollar_vars __P((void));
 extern void pop_dollar_vars __P((void));
 extern void dispose_saved_dollar_vars __P((void));
 
+extern void init_bash_argv __P((void));
+extern void save_bash_argv __P((void));
 extern void push_args __P((WORD_LIST *));
 extern void pop_args __P((void));
 
@@ -364,7 +384,7 @@ extern SHELL_VAR *make_new_array_variable __P((char *));
 extern SHELL_VAR *make_local_array_variable __P((char *, int));
 
 extern SHELL_VAR *make_new_assoc_variable __P((char *));
-extern SHELL_VAR *make_local_assoc_variable __P((char *));
+extern SHELL_VAR *make_local_assoc_variable __P((char *, int));
 
 extern void set_pipestatus_array __P((int *, int));
 extern ARRAY *save_pipestatus_array __P((void));
index f241c5c78dabba7e4741da03838dc06b09aa0661..d9280f03421914e39c2beaec0e035138b663148c 100644 (file)
--- a/version.c
+++ b/version.c
@@ -1,6 +1,6 @@
 /* version.c -- distribution and version numbers. */
 
-/* Copyright (C) 1989-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2019 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -43,7 +43,7 @@ const char * const release_status = (char *)0;
 #endif
 const char * const sccs_version = SCCSVERSION;
 
-const char * const bash_copyright = N_("Copyright (C) 2016 Free Software Foundation, Inc.");
+const char * const bash_copyright = N_("Copyright (C) 2019 Free Software Foundation, Inc.");
 const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n");
 
 /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
index b32c0685fe0209fc27a4999f781bc8bfdf0b71e8..ca297dcf04c8fe724dabbaba1bb9ef6d8d342ac9 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
 extern char *sbrk();
 #endif
 
+#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC)
 static PTR_T lbreak;
 static int brkfound;
 static size_t allocated;
+#endif
 
 /* **************************************************************** */
 /*                                                                 */
diff --git a/y.tab.c b/y.tab.c
index e9a57fcc88851ad38d40c89be5f2a32418adeb40..1abe2c505c3f4572c2233756f0d04f554c8d4883 100644 (file)
--- a/y.tab.c
+++ b/y.tab.c
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.0.5.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.4"
+#define YYBISON_VERSION "3.0.5"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -90,6 +90,7 @@
 #define NEED_STRFTIME_DECL     /* used in externs.h */
 
 #include "shell.h"
+#include "execute_cmd.h"
 #include "typemax.h"           /* SIZE_MAX if needed */
 #include "trap.h"
 #include "flags.h"
@@ -139,6 +140,8 @@ typedef void *alias_t;
 #define RE_READ_TOKEN  -99
 #define NO_EXPANSION   -100
 
+#define END_ALIAS      -2
+
 #ifdef DEBUG
 #  define YYDEBUG 1
 #else
@@ -160,24 +163,12 @@ typedef void *alias_t;
 extern int extended_glob;
 #endif
 
-extern int eof_encountered;
-extern int no_line_editing, running_under_emacs;
-extern int current_command_number;
-extern int sourcelevel, parse_and_execute_level;
-extern int posixly_correct;
-extern int last_command_exit_value;
-extern pid_t last_command_subst_pid;
-extern char *shell_name, *current_host_name;
-extern char *dist_version;
-extern int patch_level;
 extern int dump_translatable_strings, dump_po_strings;
-extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-extern int here_doc_first_line;
-#if defined (BUFFERED_INPUT)
-extern int bash_input_fd_changed;
-#endif
 
+#if !defined (errno)
 extern int errno;
+#endif
+
 /* **************************************************************** */
 /*                                                                 */
 /*                 "Forward" declarations                          */
@@ -263,6 +254,7 @@ static void print_prompt __P((void));
 #if defined (HANDLE_MULTIBYTE)
 static void set_line_mbstate __P((void));
 static char *shell_input_line_property = NULL;
+static size_t shell_input_line_propsize = 0;
 #else
 #  define set_line_mbstate()
 #endif
@@ -374,7 +366,10 @@ static WORD_DESC *word_desc_to_read;
 static REDIRECTEE source;
 static REDIRECTEE redir;
 
-#line 378 "y.tab.c" /* yacc.c:339  */
+static FILE *yyoutstream;
+static FILE *yyerrstream;
+
+#line 373 "y.tab.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -512,7 +507,7 @@ extern int yydebug;
 
 union YYSTYPE
 {
-#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355  */
+#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355  */
 
   WORD_DESC *word;             /* the word that we read. */
   int number;                  /* the number that we read. */
@@ -522,7 +517,7 @@ union YYSTYPE
   ELEMENT element;
   PATTERN_LIST *pattern;
 
-#line 526 "y.tab.c" /* yacc.c:355  */
+#line 521 "y.tab.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -539,7 +534,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 543 "y.tab.c" /* yacc.c:358  */
+#line 538 "y.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -779,18 +774,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  116
+#define YYFINAL  117
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   638
+#define YYLAST   669
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  61
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  38
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  167
+#define YYNRULES  170
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  334
+#define YYNSTATES  343
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -841,23 +836,24 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   386,   386,   397,   406,   421,   431,   433,   437,   443,
-     449,   455,   461,   467,   473,   479,   485,   491,   497,   503,
-     509,   515,   521,   527,   534,   541,   548,   555,   562,   569,
-     575,   581,   587,   593,   599,   605,   611,   617,   623,   629,
-     635,   641,   647,   653,   659,   665,   671,   677,   683,   689,
-     695,   701,   709,   711,   713,   717,   721,   732,   734,   738,
-     740,   742,   758,   760,   764,   766,   768,   770,   772,   774,
-     776,   778,   780,   782,   784,   788,   793,   798,   803,   808,
-     813,   818,   823,   830,   835,   840,   845,   852,   857,   862,
-     867,   872,   877,   884,   889,   894,   901,   904,   907,   911,
-     913,   944,   951,   956,   973,   978,   995,  1002,  1004,  1006,
-    1011,  1015,  1019,  1023,  1025,  1027,  1031,  1032,  1036,  1038,
-    1040,  1042,  1046,  1048,  1050,  1052,  1054,  1056,  1060,  1062,
-    1071,  1079,  1080,  1086,  1087,  1094,  1098,  1100,  1102,  1109,
-    1111,  1113,  1117,  1118,  1121,  1123,  1125,  1129,  1130,  1139,
-    1152,  1168,  1183,  1185,  1187,  1194,  1197,  1201,  1203,  1209,
-    1215,  1234,  1256,  1258,  1281,  1285,  1287,  1289
+       0,   381,   381,   392,   401,   416,   433,   443,   445,   449,
+     455,   461,   467,   473,   479,   485,   491,   497,   503,   509,
+     515,   521,   527,   533,   539,   546,   553,   560,   567,   574,
+     581,   587,   593,   599,   605,   611,   617,   623,   629,   635,
+     641,   647,   653,   659,   665,   671,   677,   683,   689,   695,
+     701,   707,   713,   721,   723,   725,   729,   733,   744,   746,
+     750,   752,   754,   770,   772,   776,   778,   780,   782,   784,
+     786,   788,   790,   792,   794,   796,   800,   805,   810,   815,
+     820,   825,   830,   835,   842,   848,   854,   860,   868,   873,
+     878,   883,   888,   893,   898,   903,   910,   915,   920,   927,
+     930,   933,   937,   939,   970,   977,   982,   999,  1004,  1021,
+    1028,  1030,  1032,  1037,  1041,  1045,  1049,  1051,  1053,  1057,
+    1058,  1062,  1064,  1066,  1068,  1072,  1074,  1076,  1078,  1080,
+    1082,  1086,  1088,  1097,  1105,  1106,  1112,  1113,  1120,  1124,
+    1126,  1128,  1135,  1137,  1139,  1143,  1144,  1147,  1149,  1151,
+    1155,  1156,  1165,  1178,  1194,  1209,  1211,  1213,  1220,  1223,
+    1227,  1229,  1235,  1241,  1261,  1284,  1286,  1309,  1313,  1315,
+    1317
 };
 #endif
 
@@ -904,10 +900,10 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -205
+#define YYPACT_NINF -204
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-205)))
+  (!!((Yystate) == (-204)))
 
 #define YYTABLE_NINF -1
 
@@ -918,40 +914,41 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     308,   -28,  -205,     6,    -1,    37,  -205,  -205,    57,   558,
-      18,   358,    54,    45,  -205,   251,   583,  -205,   102,   104,
-      35,   107,    80,   112,   127,   140,   146,   147,  -205,  -205,
-     153,   154,  -205,  -205,   188,  -205,  -205,   196,  -205,   219,
-    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
-    -205,    17,    23,  -205,   -19,   358,  -205,  -205,   185,   408,
-    -205,   144,    51,   166,   189,   207,   133,    28,   196,   219,
-     211,  -205,  -205,  -205,  -205,  -205,   201,   184,   220,   226,
-      81,   227,   126,   233,   234,   241,   242,   245,   246,   249,
-     142,   255,   148,   256,   257,   259,   266,   267,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
-    -205,  -205,  -205,  -205,   243,   240,  -205,  -205,  -205,  -205,
-     219,  -205,  -205,  -205,  -205,  -205,   458,   458,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,   299,  -205,    68,  -205,    61,
-    -205,  -205,  -205,  -205,    72,  -205,  -205,   244,    41,   219,
-     219,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,   408,   408,    63,    63,   508,
-     508,   179,  -205,  -205,  -205,  -205,  -205,  -205,    60,  -205,
-     155,  -205,   287,   252,    74,   108,  -205,   286,  -205,   300,
-     302,  -205,   219,  -205,   219,    41,  -205,  -205,   -19,   -19,
-    -205,  -205,  -205,   307,   408,   408,   408,   408,   408,   313,
-     159,  -205,    -4,  -205,  -205,   312,  -205,   161,  -205,   265,
-    -205,  -205,  -205,  -205,  -205,  -205,   314,   408,   161,   270,
-    -205,  -205,    41,   219,  -205,   332,   336,  -205,  -205,  -205,
-      87,    87,    87,  -205,  -205,  -205,  -205,   178,    11,  -205,
-    -205,   315,   -43,   327,   298,  -205,  -205,  -205,   110,  -205,
-     342,   306,   343,   319,  -205,   299,  -205,  -205,  -205,  -205,
-    -205,  -205,  -205,  -205,  -205,   -32,   346,  -205,  -205,  -205,
-     113,  -205,  -205,  -205,  -205,  -205,  -205,   118,   137,  -205,
-    -205,  -205,   408,  -205,  -205,   363,   321,  -205,  -205,  -205,
-    -205,  -205,   408,   367,   325,  -205,  -205,   374,   333,  -205,
-    -205,  -205,  -205,  -205
+     306,   -13,  -204,   -14,    68,     5,  -204,  -204,    22,   556,
+     -12,   356,    21,     4,  -204,   601,   614,  -204,    43,    58,
+     139,    60,   143,    79,    90,    98,   100,   102,  -204,  -204,
+     104,   111,  -204,  -204,   154,  -204,  -204,   234,  -204,   588,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,    70,   192,  -204,    65,   356,  -204,  -204,  -204,   135,
+     406,  -204,    93,    23,   107,   153,   162,   124,    99,   234,
+     588,   167,  -204,  -204,  -204,  -204,  -204,   165,   133,   178,
+     206,   144,   210,   145,   213,   225,   229,   232,   233,   238,
+     239,   149,   241,   156,   242,   250,   256,   257,   258,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,   169,   170,  -204,  -204,  -204,
+    -204,   588,  -204,  -204,  -204,  -204,  -204,   456,   456,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,   184,  -204,   -10,  -204,
+       7,  -204,  -204,  -204,  -204,    19,  -204,  -204,   226,    41,
+     588,   588,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,   406,   406,   147,   147,
+     506,   506,   201,  -204,  -204,  -204,  -204,  -204,  -204,    11,
+    -204,    82,  -204,   270,   235,    32,    36,  -204,    82,  -204,
+     275,   276,  -204,   588,  -204,   588,    41,  -204,  -204,    65,
+      65,  -204,  -204,  -204,   285,   406,   406,   406,   406,   406,
+     286,   204,  -204,    -4,  -204,  -204,   281,  -204,   137,  -204,
+     243,  -204,  -204,  -204,  -204,  -204,  -204,   282,   406,   137,
+    -204,   244,  -204,  -204,    41,   588,  -204,   293,   299,  -204,
+    -204,  -204,   180,   180,   180,  -204,  -204,  -204,  -204,   208,
+       6,  -204,  -204,   278,   -30,   295,   253,  -204,  -204,  -204,
+      46,  -204,   300,   263,   310,   268,  -204,   184,  -204,    74,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,   -24,   301,
+    -204,  -204,  -204,    87,  -204,  -204,  -204,  -204,  -204,  -204,
+     109,  -204,  -204,   248,  -204,  -204,  -204,   406,  -204,  -204,
+     315,   273,  -204,  -204,   322,   280,  -204,  -204,  -204,   406,
+     324,   288,  -204,  -204,   325,   289,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -959,58 +956,59 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,   147,     0,     0,     0,   147,   147,     0,     0,
-       0,     0,   165,    52,    53,     0,     0,   111,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     3,     5,
-       0,     0,   147,   147,     0,    54,    57,    59,   164,    60,
-      64,    74,    68,    65,    62,    70,    63,    69,    71,    72,
-      73,     0,   149,   156,   157,     0,     4,   131,     0,     0,
-     147,   147,     0,   147,     0,     0,   147,    52,   106,   102,
-       0,   145,   144,   146,   161,   158,   166,     0,     0,     0,
+       0,     0,   150,     0,     0,     0,   150,   150,     0,     0,
+       0,     0,   168,    53,    54,     0,     0,   114,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     3,     6,
+       0,     0,   150,   150,     0,    55,    58,    60,   167,    61,
+      65,    75,    69,    66,    63,    71,    64,    70,    72,    73,
+      74,     0,   152,   159,   160,     0,     4,     5,   134,     0,
+       0,   150,   150,     0,   150,     0,     0,   150,    53,   109,
+     105,     0,   148,   147,   149,   164,   161,   169,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    14,    23,
-      38,    32,    47,    29,    41,    35,    44,    26,    50,    51,
-      20,    17,     8,     9,     0,     0,     1,    52,    58,    55,
-      61,   142,   143,     2,   147,   147,   150,   151,   147,   147,
-     160,   159,   147,   148,   130,   132,   141,     0,   147,     0,
-     147,   147,   147,   147,     0,   147,   147,     0,     0,   104,
-     103,   112,   167,   147,    16,    25,    40,    34,    49,    31,
-      43,    37,    46,    28,    22,    19,    12,    13,    15,    24,
-      39,    33,    48,    30,    42,    36,    45,    27,    21,    18,
-      10,    11,   110,   101,    56,     0,     0,   154,   155,     0,
-       0,     0,   147,   147,   147,   147,   147,   147,     0,   147,
-       0,   147,     0,     0,     0,     0,   147,     0,   147,     0,
-       0,   147,    99,    98,   105,     0,   152,   153,   163,   162,
-     147,   147,   107,     0,     0,     0,   134,   135,   133,     0,
-     116,   147,     0,   147,   147,     0,     6,     0,   147,     0,
-      85,    86,   147,   147,   147,   147,     0,     0,     0,     0,
-      66,    67,     0,   100,    96,     0,     0,   109,   136,   137,
-     138,   139,   140,    95,   122,   124,   126,   117,     0,    93,
-     128,     0,     0,     0,     0,    75,     7,   147,     0,    76,
-       0,     0,     0,     0,    87,     0,   147,    88,    97,   108,
-     147,   123,   125,   127,    94,     0,     0,   147,    77,    78,
-       0,   147,   147,    83,    84,    89,    90,     0,   113,   147,
-     129,   118,   119,   147,   147,     0,     0,   147,   147,   147,
-     115,   120,   121,     0,     0,    81,    82,     0,     0,   114,
-      79,    80,    91,    92
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
+      24,    39,    33,    48,    30,    42,    36,    45,    27,    51,
+      52,    21,    18,     9,    10,     0,     0,     1,    53,    59,
+      56,    62,   145,   146,     2,   150,   150,   153,   154,   150,
+     150,   163,   162,   150,   151,   133,   135,   144,     0,   150,
+       0,   150,   150,   150,   150,     0,   150,   150,     0,     0,
+     107,   106,   115,   170,   150,    17,    26,    41,    35,    50,
+      32,    44,    38,    47,    29,    23,    20,    13,    14,    16,
+      25,    40,    34,    49,    31,    43,    37,    46,    28,    22,
+      19,    11,    12,   113,   104,    57,     0,     0,   157,   158,
+       0,     0,     0,   150,   150,   150,   150,   150,   150,     0,
+     150,     0,   150,     0,     0,     0,     0,   150,     0,   150,
+       0,     0,   150,   102,   101,   108,     0,   155,   156,   166,
+     165,   150,   150,   110,     0,     0,     0,   137,   138,   136,
+       0,   119,   150,     0,   150,   150,     0,     7,     0,   150,
+       0,    86,    87,   150,   150,   150,   150,     0,     0,     0,
+     150,     0,    67,    68,     0,   103,    99,     0,     0,   112,
+     139,   140,   141,   142,   143,    98,   125,   127,   129,   120,
+       0,    96,   131,     0,     0,     0,     0,    76,     8,   150,
+       0,    77,     0,     0,     0,     0,    88,     0,   150,     0,
+      89,   100,   111,   150,   126,   128,   130,    97,     0,     0,
+     150,    78,    79,     0,   150,   150,    84,    85,    90,    91,
+       0,   150,   150,   116,   150,   132,   121,   122,   150,   150,
+       0,     0,   150,   150,     0,     0,   150,   118,   123,   124,
+       0,     0,    82,    83,     0,     0,    94,    95,   117,    80,
+      81,    92,    93
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -205,  -205,   183,   -36,   -23,   -50,   364,  -205,    -7,  -205,
-    -205,  -205,  -205,  -205,  -204,  -205,  -205,  -205,  -205,  -205,
-    -205,    84,  -205,   167,  -205,   128,  -202,    -6,  -205,    52,
-    -205,   -46,   -48,  -205,  -119,    24,   -33,  -205
+    -204,  -204,   140,   -36,    35,   -60,   345,  -204,    -7,  -204,
+    -204,  -204,  -204,  -204,  -198,  -204,  -204,  -204,  -204,  -204,
+    -204,    42,  -204,   130,  -204,    83,  -203,    -6,  -204,    -5,
+    -204,   -46,   -48,  -204,  -120,    24,    66,  -204
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    34,   237,    35,    36,   120,    37,    38,    39,    40,
-      41,    42,    43,    44,   213,    45,    46,    47,    48,    49,
-      50,   223,   229,   230,   231,   272,    57,    58,   134,   135,
-     123,    74,    59,    51,    52,   136,    54,    55
+      -1,    34,   238,    35,    36,   121,    37,    38,    39,    40,
+      41,    42,    43,    44,   214,    45,    46,    47,    48,    49,
+      50,   224,   230,   231,   232,   274,    58,    59,   135,   136,
+     124,    75,    60,    51,    52,   137,    54,    55
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1018,138 +1016,144 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-      64,    65,    69,   119,   246,   269,   249,   187,   188,   130,
-     296,   254,   137,   139,   118,   144,   142,   297,   148,   150,
-     294,   296,   270,    56,    53,    61,   114,   115,   309,   128,
-      62,     2,    60,   119,   129,    75,     3,   270,     4,     5,
-       6,     7,   282,   283,     2,   118,    10,   133,   288,     3,
-      70,     4,     5,     6,     7,   271,   124,   125,    17,    10,
-     149,   100,   133,    63,   101,   140,   216,   217,   121,   122,
-     271,    17,   126,   127,   233,   199,   185,   186,    76,   131,
-     189,   190,   200,    66,   184,    32,   206,    33,   242,   197,
-     198,   102,   133,   207,   204,   205,   124,   125,    32,   214,
-      33,    71,    72,    73,    77,   215,   104,   156,   141,   105,
-     157,   133,   133,   119,   184,   327,   328,   234,   201,   133,
-     192,   193,   244,   133,   301,   133,   191,   313,    98,   208,
-      99,   243,   317,   103,   202,   203,   106,   158,   107,   209,
-     210,   212,   319,   221,   224,   225,   226,   227,   228,   232,
-      53,    53,   160,   108,   238,   161,   218,   219,   247,   133,
-     247,   133,   253,   252,   133,   245,   109,   302,   170,   133,
-     314,   171,   110,   111,   174,   318,   119,   175,   184,   112,
-     113,   236,   162,   268,   220,   221,   222,   276,   116,   132,
-     278,   277,   147,   235,   138,   239,   247,   247,   172,   264,
-     265,   266,   286,   145,   176,    71,    72,    73,   212,    53,
-      53,    71,    72,    73,   255,   256,   143,   184,   291,   292,
-     293,   146,   117,    14,    15,    16,   152,   273,   274,   300,
-     151,    18,    19,    20,    21,    22,   280,   281,   307,    23,
-      24,    25,    26,    27,   153,   212,   154,    15,    16,   312,
-      30,    31,   155,   159,    18,    19,    20,    21,    22,   163,
-     164,   322,    23,    24,    25,    26,    27,   165,   166,   247,
-     247,   167,   168,    30,    31,   169,   258,   259,   260,   261,
-     262,   173,   177,   178,   308,   179,    78,    79,    80,    81,
-      82,   311,   180,   181,    83,   315,   316,    84,    85,   285,
-     183,   182,   240,   321,   211,    86,    87,   323,   324,     1,
-     241,     2,   236,   329,   257,   250,     3,   251,     4,     5,
-       6,     7,   263,   279,     8,     9,    10,   275,   287,   284,
-      11,    12,   192,   193,    13,    14,    15,    16,    17,   289,
-     290,   270,   298,    18,    19,    20,    21,    22,   194,   195,
-     196,    23,    24,    25,    26,    27,   299,   303,   305,    28,
-      29,     2,    30,    31,   304,    32,     3,    33,     4,     5,
-       6,     7,   310,    68,     8,     9,    10,   306,   325,   326,
-      11,    12,   330,   331,    13,    14,    15,    16,    17,   332,
-     248,   333,   320,    18,    19,    20,    21,    22,   267,   295,
-       0,    23,    24,    25,    26,    27,     0,     0,    71,    72,
-      73,     2,    30,    31,     0,    32,     3,    33,     4,     5,
-       6,     7,     0,     0,     8,     9,    10,     0,     0,     0,
-      11,    12,     0,     0,    13,    14,    15,    16,    17,     0,
-       0,     0,     0,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,    27,     0,     0,     0,   133,
-       0,     2,    30,    31,     0,    32,     3,    33,     4,     5,
-       6,     7,     0,     0,     8,     9,    10,     0,     0,     0,
-      11,    12,     0,     0,    13,    14,    15,    16,    17,     0,
+      65,    66,    70,   120,   247,   271,   251,   188,   189,   131,
+     151,   198,    61,   138,   140,   297,   145,   143,   256,   149,
+      71,   200,   272,   299,    53,   234,   115,   116,   201,   299,
+     300,    64,   272,   207,   120,    76,   314,   141,    56,    57,
+     208,   134,   284,   285,     2,    77,   243,   134,    67,     3,
+     245,     4,     5,     6,     7,   273,   291,   134,   134,    10,
+     304,   150,   134,    78,   202,   273,   217,   218,   235,    99,
+     134,    17,   119,    72,    73,    74,   209,   186,   187,   132,
+     142,   190,   191,   134,   100,   185,   104,   134,   311,   244,
+     215,   199,   134,   246,    62,   205,   206,   134,    32,    63,
+      33,   318,     2,   305,   119,   108,   216,     3,   237,     4,
+       5,     6,     7,   129,   120,   185,   109,    10,   130,   334,
+     335,   122,   123,   322,   110,   134,   111,   192,   112,    17,
+     113,   312,    72,    73,    74,   203,   204,   114,   134,   133,
+     210,   211,   213,   139,   319,   225,   226,   227,   228,   229,
+     233,    53,    53,   255,   117,   239,    32,   144,    33,   248,
+     134,   248,   250,   278,   254,   101,   323,   146,   102,   105,
+     157,   161,   106,   158,   162,   171,   147,   120,   172,   185,
+     125,   126,   175,   148,   270,   176,   152,    72,    73,    74,
+     153,   280,   279,   154,   236,   103,   240,   248,   248,   107,
+     159,   163,   289,   288,   155,   173,   221,   222,   223,   213,
+      53,    53,   177,   193,   194,   257,   258,   193,   194,   185,
+     260,   261,   262,   263,   264,   125,   126,   183,   275,   276,
+     184,   303,   156,   195,   196,   197,   160,   282,   283,   164,
+     310,   127,   128,   287,   266,   267,   268,   213,   294,   295,
+     296,   165,   317,   326,   222,   166,   219,   220,   167,   168,
+     118,    14,    15,    16,   169,   170,   329,   174,   178,    18,
+      19,    20,    21,    22,   248,   248,   179,    23,    24,    25,
+      26,    27,   180,   181,   182,   241,   212,   313,    30,    31,
+     252,   253,   259,   242,   316,   265,   277,   286,   320,   321,
+     292,   281,   290,   293,   272,   324,   325,     1,   328,     2,
+     301,   302,   330,   331,     3,   306,     4,     5,     6,     7,
+     338,   307,     8,     9,    10,   308,   309,   315,    11,    12,
+     332,   333,    13,    14,    15,    16,    17,   336,   337,   339,
+     341,    18,    19,    20,    21,    22,   340,   342,   249,    23,
+      24,    25,    26,    27,    69,   327,   298,    28,    29,     2,
+      30,    31,   269,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,    72,    73,    74,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,   134,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,   134,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     0,     0,    10,     0,     0,     0,     0,     0,
+       0,     0,    68,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,     0,
+      30,    31,     0,    32,     0,    33,    15,    16,     0,     0,
        0,     0,     0,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,    27,     0,     0,     0,     0,
-       0,     2,    30,    31,     0,    32,     3,    33,     4,     5,
-       6,     7,     0,     0,     8,     9,    10,     0,     0,     0,
-       0,     0,     0,     0,    13,    14,    15,    16,    17,     0,
-       0,     0,     0,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,    27,     0,     0,     0,   133,
-       0,     2,    30,    31,     0,    32,     3,    33,     4,     5,
-       6,     7,     0,     0,     0,     0,    10,     0,     0,     0,
-       0,     0,     0,     0,    67,    14,    15,    16,    17,     0,
-       0,     0,     0,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,    27,     0,     0,     0,     0,
-       0,     0,    30,    31,     0,    32,     0,    33,    88,    89,
-      90,    91,    92,     0,     0,     0,    93,     0,     0,    94,
-      95,     0,     0,     0,     0,     0,     0,    96,    97
+       0,    23,    24,    25,    26,    27,    79,    80,    81,    82,
+      83,     0,    30,    31,    84,     0,     0,    85,    86,    89,
+      90,    91,    92,    93,     0,    87,    88,    94,     0,     0,
+      95,    96,     0,     0,     0,     0,     0,     0,    97,    98
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,     9,    39,   206,     9,   208,   126,   127,    55,
-      53,   215,    60,    61,    37,    63,    62,    60,    66,    69,
-       9,    53,    26,    51,     0,    26,    32,    33,    60,    48,
-      31,     3,    26,    69,    53,    11,     8,    26,    10,    11,
-      12,    13,   244,   245,     3,    68,    18,    51,   252,     8,
-      32,    10,    11,    12,    13,    59,    33,    34,    30,    18,
-      67,    26,    51,    26,    29,    14,   185,   186,    51,    52,
-      59,    30,    49,    50,    14,    14,   124,   125,    24,    55,
-     128,   129,    21,    26,   120,    57,    14,    59,    14,    21,
-     138,    56,    51,    21,   142,   143,    33,    34,    57,   149,
-      59,    50,    51,    52,    59,   153,    26,    26,    57,    29,
-      29,    51,    51,   149,   150,   317,   318,    57,    57,    51,
-      33,    34,    14,    51,    14,    51,   132,    14,    26,    57,
-      26,    57,    14,    26,   140,   141,    56,    56,    26,   145,
-     146,   148,     5,     6,   192,   193,   194,   195,   196,   197,
-     126,   127,    26,    26,   200,    29,   189,   190,   206,    51,
-     208,    51,   212,   211,    51,    57,    26,    57,    26,    51,
-      57,    29,    26,    26,    26,    57,   212,    29,   214,    26,
-      26,    26,    56,   231,     5,     6,     7,    26,     0,     4,
-     238,   237,    59,   199,    50,   201,   244,   245,    56,    40,
-      41,    42,   248,    14,    56,    50,    51,    52,   215,   185,
-     186,    50,    51,    52,   220,   221,    50,   253,    40,    41,
-      42,    14,    26,    27,    28,    29,    25,   233,   234,   277,
-      19,    35,    36,    37,    38,    39,   242,   243,   286,    43,
-      44,    45,    46,    47,    60,   252,    26,    28,    29,   297,
-      54,    55,    26,    26,    35,    36,    37,    38,    39,    26,
-      26,   309,    43,    44,    45,    46,    47,    26,    26,   317,
-     318,    26,    26,    54,    55,    26,   224,   225,   226,   227,
-     228,    26,    26,    26,   290,    26,    35,    36,    37,    38,
-      39,   297,    26,    26,    43,   301,   302,    46,    47,   247,
-      60,    58,    15,   309,    60,    54,    55,   313,   314,     1,
-      58,     3,    26,   319,     7,    15,     8,    15,    10,    11,
-      12,    13,     9,    58,    16,    17,    18,    15,    58,    15,
-      22,    23,    33,    34,    26,    27,    28,    29,    30,     7,
-       4,    26,    15,    35,    36,    37,    38,    39,    49,    50,
-      51,    43,    44,    45,    46,    47,    58,    15,    15,    51,
-      52,     3,    54,    55,    58,    57,     8,    59,    10,    11,
-      12,    13,    26,     9,    16,    17,    18,    58,    15,    58,
-      22,    23,    15,    58,    26,    27,    28,    29,    30,    15,
-     207,    58,   308,    35,    36,    37,    38,    39,   231,   271,
-      -1,    43,    44,    45,    46,    47,    -1,    -1,    50,    51,
-      52,     3,    54,    55,    -1,    57,     8,    59,    10,    11,
-      12,    13,    -1,    -1,    16,    17,    18,    -1,    -1,    -1,
-      22,    23,    -1,    -1,    26,    27,    28,    29,    30,    -1,
-      -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,
-      -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,    51,
-      -1,     3,    54,    55,    -1,    57,     8,    59,    10,    11,
-      12,    13,    -1,    -1,    16,    17,    18,    -1,    -1,    -1,
-      22,    23,    -1,    -1,    26,    27,    28,    29,    30,    -1,
-      -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,
-      -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
-      -1,     3,    54,    55,    -1,    57,     8,    59,    10,    11,
-      12,    13,    -1,    -1,    16,    17,    18,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    -1,
+       6,     7,     9,    39,   207,     9,   209,   127,   128,    55,
+      70,    21,    26,    61,    62,     9,    64,    63,   216,    67,
+      32,    14,    26,    53,     0,    14,    32,    33,    21,    53,
+      60,    26,    26,    14,    70,    11,    60,    14,    51,    52,
+      21,    51,   245,   246,     3,    24,    14,    51,    26,     8,
+      14,    10,    11,    12,    13,    59,   254,    51,    51,    18,
+      14,    68,    51,    59,    57,    59,   186,   187,    57,    26,
+      51,    30,    37,    50,    51,    52,    57,   125,   126,    55,
+      57,   129,   130,    51,    26,   121,    26,    51,    14,    57,
+     150,   139,    51,    57,    26,   143,   144,    51,    57,    31,
+      59,    14,     3,    57,    69,    26,   154,     8,    26,    10,
+      11,    12,    13,    48,   150,   151,    26,    18,    53,   322,
+     323,    51,    52,    14,    26,    51,    26,   133,    26,    30,
+      26,    57,    50,    51,    52,   141,   142,    26,    51,     4,
+     146,   147,   149,    50,    57,   193,   194,   195,   196,   197,
+     198,   127,   128,   213,     0,   201,    57,    50,    59,   207,
+      51,   209,   208,    26,   212,    26,    57,    14,    29,    26,
+      26,    26,    29,    29,    29,    26,    14,   213,    29,   215,
+      33,    34,    26,    59,   232,    29,    19,    50,    51,    52,
+      25,   239,   238,    60,   200,    56,   202,   245,   246,    56,
+      56,    56,   250,   249,    26,    56,     5,     6,     7,   216,
+     186,   187,    56,    33,    34,   221,   222,    33,    34,   255,
+     225,   226,   227,   228,   229,    33,    34,    58,   234,   235,
+      60,   279,    26,    49,    50,    51,    26,   243,   244,    26,
+     288,    49,    50,   248,    40,    41,    42,   254,    40,    41,
+      42,    26,   300,     5,     6,    26,   190,   191,    26,    26,
+      26,    27,    28,    29,    26,    26,   314,    26,    26,    35,
+      36,    37,    38,    39,   322,   323,    26,    43,    44,    45,
+      46,    47,    26,    26,    26,    15,    60,   293,    54,    55,
+      15,    15,     7,    58,   300,     9,    15,    15,   304,   305,
+       7,    58,    58,     4,    26,   311,   312,     1,   314,     3,
+      15,    58,   318,   319,     8,    15,    10,    11,    12,    13,
+     326,    58,    16,    17,    18,    15,    58,    26,    22,    23,
+      15,    58,    26,    27,    28,    29,    30,    15,    58,    15,
+      15,    35,    36,    37,    38,    39,    58,    58,   208,    43,
+      44,    45,    46,    47,     9,   313,   273,    51,    52,     3,
+      54,    55,   232,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    50,    51,    52,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    51,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    51,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    55,    -1,    57,    -1,    59,    28,    29,    -1,    -1,
       -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,
-      -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,    51,
-      -1,     3,    54,    55,    -1,    57,     8,    59,    10,    11,
-      12,    13,    -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,    -1,
-      -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,
-      -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    54,    55,    -1,    57,    -1,    59,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55
+      -1,    43,    44,    45,    46,    47,    35,    36,    37,    38,
+      39,    -1,    54,    55,    43,    -1,    -1,    46,    47,    35,
+      36,    37,    38,    39,    -1,    54,    55,    43,    -1,    -1,
+      46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1161,79 +1165,82 @@ static const yytype_uint8 yystos[] =
       37,    38,    39,    43,    44,    45,    46,    47,    51,    52,
       54,    55,    57,    59,    62,    64,    65,    67,    68,    69,
       70,    71,    72,    73,    74,    76,    77,    78,    79,    80,
-      81,    94,    95,    96,    97,    98,    51,    87,    88,    93,
-      26,    26,    31,    26,    88,    88,    26,    26,    67,    69,
-      32,    50,    51,    52,    92,    96,    24,    59,    35,    36,
-      37,    38,    39,    43,    46,    47,    54,    55,    35,    36,
-      37,    38,    39,    43,    46,    47,    54,    55,    26,    26,
-      26,    29,    56,    26,    26,    29,    56,    26,    26,    26,
-      26,    26,    26,    26,    88,    88,     0,    26,    65,    64,
-      66,    51,    52,    91,    33,    34,    49,    50,    48,    53,
-      92,    96,     4,    51,    89,    90,    96,    93,    50,    93,
-      14,    57,    92,    50,    93,    14,    14,    59,    93,    69,
-      66,    19,    25,    60,    26,    26,    26,    29,    56,    26,
-      26,    29,    56,    26,    26,    26,    26,    26,    26,    26,
-      26,    29,    56,    26,    26,    29,    56,    26,    26,    26,
-      26,    26,    58,    60,    64,    93,    93,    95,    95,    93,
-      93,    88,    33,    34,    49,    50,    51,    21,    93,    14,
-      21,    57,    88,    88,    93,    93,    14,    21,    57,    88,
-      88,    60,    69,    75,    66,    93,    95,    95,    97,    97,
-       5,     6,     7,    82,    93,    93,    93,    93,    93,    83,
-      84,    85,    93,    14,    57,    88,    26,    63,    92,    88,
-      15,    58,    14,    57,    14,    57,    87,    93,    63,    87,
-      15,    15,    93,    66,    75,    88,    88,     7,    90,    90,
-      90,    90,    90,     9,    40,    41,    42,    84,    93,     9,
-      26,    59,    86,    88,    88,    15,    26,    92,    93,    58,
-      88,    88,    87,    87,    15,    90,    92,    58,    75,     7,
-       4,    40,    41,    42,     9,    86,    53,    60,    15,    58,
-      93,    14,    57,    15,    58,    15,    58,    93,    88,    60,
-      26,    88,    93,    14,    57,    88,    88,    14,    57,     5,
-      82,    88,    93,    88,    88,    15,    58,    87,    87,    88,
-      15,    58,    15,    58
+      81,    94,    95,    96,    97,    98,    51,    52,    87,    88,
+      93,    26,    26,    31,    26,    88,    88,    26,    26,    67,
+      69,    32,    50,    51,    52,    92,    96,    24,    59,    35,
+      36,    37,    38,    39,    43,    46,    47,    54,    55,    35,
+      36,    37,    38,    39,    43,    46,    47,    54,    55,    26,
+      26,    26,    29,    56,    26,    26,    29,    56,    26,    26,
+      26,    26,    26,    26,    26,    88,    88,     0,    26,    65,
+      64,    66,    51,    52,    91,    33,    34,    49,    50,    48,
+      53,    92,    96,     4,    51,    89,    90,    96,    93,    50,
+      93,    14,    57,    92,    50,    93,    14,    14,    59,    93,
+      69,    66,    19,    25,    60,    26,    26,    26,    29,    56,
+      26,    26,    29,    56,    26,    26,    26,    26,    26,    26,
+      26,    26,    29,    56,    26,    26,    29,    56,    26,    26,
+      26,    26,    26,    58,    60,    64,    93,    93,    95,    95,
+      93,    93,    88,    33,    34,    49,    50,    51,    21,    93,
+      14,    21,    57,    88,    88,    93,    93,    14,    21,    57,
+      88,    88,    60,    69,    75,    66,    93,    95,    95,    97,
+      97,     5,     6,     7,    82,    93,    93,    93,    93,    93,
+      83,    84,    85,    93,    14,    57,    88,    26,    63,    92,
+      88,    15,    58,    14,    57,    14,    57,    87,    93,    63,
+      92,    87,    15,    15,    93,    66,    75,    88,    88,     7,
+      90,    90,    90,    90,    90,     9,    40,    41,    42,    84,
+      93,     9,    26,    59,    86,    88,    88,    15,    26,    92,
+      93,    58,    88,    88,    87,    87,    15,    90,    92,    93,
+      58,    75,     7,     4,    40,    41,    42,     9,    86,    53,
+      60,    15,    58,    93,    14,    57,    15,    58,    15,    58,
+      93,    14,    57,    88,    60,    26,    88,    93,    14,    57,
+      88,    88,    14,    57,    88,    88,     5,    82,    88,    93,
+      88,    88,    15,    58,    87,    87,    15,    58,    88,    15,
+      58,    15,    58
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    61,    62,    62,    62,    62,    63,    63,    64,    64,
+       0,    61,    62,    62,    62,    62,    62,    63,    63,    64,
       64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
       64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
       64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
       64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
-      64,    64,    65,    65,    65,    66,    66,    67,    67,    68,
-      68,    68,    68,    68,    69,    69,    69,    69,    69,    69,
-      69,    69,    69,    69,    69,    70,    70,    70,    70,    70,
-      70,    70,    70,    71,    71,    71,    71,    72,    72,    72,
-      72,    72,    72,    73,    73,    73,    74,    74,    74,    75,
-      75,    76,    77,    77,    77,    77,    77,    78,    78,    78,
-      79,    80,    81,    82,    82,    82,    83,    83,    84,    84,
-      84,    84,    85,    85,    85,    85,    85,    85,    86,    86,
-      87,    88,    88,    89,    89,    89,    90,    90,    90,    90,
-      90,    90,    91,    91,    92,    92,    92,    93,    93,    94,
-      94,    94,    95,    95,    95,    95,    95,    96,    96,    96,
-      96,    96,    97,    97,    97,    98,    98,    98
+      64,    64,    64,    65,    65,    65,    66,    66,    67,    67,
+      68,    68,    68,    68,    68,    69,    69,    69,    69,    69,
+      69,    69,    69,    69,    69,    69,    70,    70,    70,    70,
+      70,    70,    70,    70,    71,    71,    71,    71,    72,    72,
+      72,    72,    72,    72,    72,    72,    73,    73,    73,    74,
+      74,    74,    75,    75,    76,    77,    77,    77,    77,    77,
+      78,    78,    78,    79,    80,    81,    82,    82,    82,    83,
+      83,    84,    84,    84,    84,    85,    85,    85,    85,    85,
+      85,    86,    86,    87,    88,    88,    89,    89,    89,    90,
+      90,    90,    90,    90,    90,    91,    91,    92,    92,    92,
+      93,    93,    94,    94,    94,    95,    95,    95,    95,    95,
+      96,    96,    96,    96,    96,    97,    97,    97,    98,    98,
+      98
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     2,     1,     2,     1,     1,     2,     2,     2,
-       3,     3,     3,     3,     2,     3,     3,     2,     3,     3,
+       0,     2,     2,     1,     2,     2,     1,     1,     2,     2,
+       2,     3,     3,     3,     3,     2,     3,     3,     2,     3,
+       3,     2,     3,     3,     2,     3,     3,     2,     3,     3,
        2,     3,     3,     2,     3,     3,     2,     3,     3,     2,
        3,     3,     2,     3,     3,     2,     3,     3,     2,     3,
-       3,     2,     3,     3,     2,     3,     3,     2,     3,     3,
-       2,     2,     1,     1,     1,     1,     2,     1,     2,     1,
-       1,     2,     1,     1,     1,     1,     5,     5,     1,     1,
-       1,     1,     1,     1,     1,     6,     6,     7,     7,    10,
-      10,     9,     9,     7,     7,     5,     5,     6,     6,     7,
-       7,    10,    10,     6,     7,     6,     5,     6,     4,     1,
-       2,     3,     2,     3,     3,     4,     2,     5,     7,     6,
-       3,     1,     3,     4,     6,     5,     1,     2,     4,     4,
-       5,     5,     2,     3,     2,     3,     2,     3,     1,     3,
-       2,     1,     2,     3,     3,     3,     4,     4,     4,     4,
-       4,     1,     1,     1,     1,     1,     1,     0,     2,     1,
-       2,     2,     4,     4,     3,     3,     1,     1,     2,     2,
-       2,     2,     4,     4,     1,     1,     2,     3
+       3,     2,     2,     1,     1,     1,     1,     2,     1,     2,
+       1,     1,     2,     1,     1,     1,     1,     5,     5,     1,
+       1,     1,     1,     1,     1,     1,     6,     6,     7,     7,
+      10,    10,     9,     9,     7,     7,     5,     5,     6,     6,
+       7,     7,    10,    10,     9,     9,     6,     7,     6,     5,
+       6,     4,     1,     2,     3,     2,     3,     3,     4,     2,
+       5,     7,     6,     3,     1,     3,     4,     6,     5,     1,
+       2,     4,     4,     5,     5,     2,     3,     2,     3,     2,
+       3,     1,     3,     2,     1,     2,     3,     3,     3,     4,
+       4,     4,     4,     4,     1,     1,     1,     1,     1,     1,
+       0,     2,     1,     2,     2,     4,     4,     3,     3,     1,
+       1,     2,     2,     2,     2,     4,     4,     1,     1,     2,
+       3
 };
 
 
@@ -1594,6 +1601,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1910,7 +1918,7 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 387 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 382 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Case of regular command.  Discard the error
                             safety net,and return the command just parsed. */
@@ -1921,11 +1929,11 @@ yyreduce:
                            parser_state |= PST_EOFTOKEN;
                          YYACCEPT;
                        }
-#line 1925 "y.tab.c" /* yacc.c:1646  */
+#line 1933 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 3:
-#line 398 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 393 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Case of regular command, but not a very
                             interesting one.  Return a NULL command. */
@@ -1934,11 +1942,11 @@ yyreduce:
                            parser_state |= PST_EOFTOKEN;
                          YYACCEPT;
                        }
-#line 1938 "y.tab.c" /* yacc.c:1646  */
+#line 1946 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 4:
-#line 407 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 402 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Error during parsing.  Return NULL command. */
                          global_command = (COMMAND *)NULL;
@@ -1953,11 +1961,32 @@ yyreduce:
                              YYABORT;
                            }
                        }
-#line 1957 "y.tab.c" /* yacc.c:1646  */
+#line 1965 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 5:
-#line 422 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 417 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         /* EOF after an error.  Do ignoreeof or not.  Really
+                            only interesting in non-interactive shells */
+                         global_command = (COMMAND *)NULL;
+                         if (last_command_exit_value == 0)
+                           last_command_exit_value = EX_BADUSAGE;      /* force error return */
+                         handle_eof_input_unit ();
+                         if (interactive && parse_and_execute_level == 0)
+                           {
+                             YYACCEPT;
+                           }
+                         else
+                           {
+                             YYABORT;
+                           }
+                       }
+#line 1986 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 6:
+#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Case of EOF seen by itself.  Do ignoreeof or
                             not. */
@@ -1965,495 +1994,495 @@ yyreduce:
                          handle_eof_input_unit ();
                          YYACCEPT;
                        }
-#line 1969 "y.tab.c" /* yacc.c:1646  */
+#line 1998 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 6:
-#line 432 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 7:
+#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 1975 "y.tab.c" /* yacc.c:1646  */
+#line 2004 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 7:
-#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 8:
+#line 446 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-#line 1981 "y.tab.c" /* yacc.c:1646  */
+#line 2010 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 8:
-#line 438 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 9:
+#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 1991 "y.tab.c" /* yacc.c:1646  */
+#line 2020 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 9:
-#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 10:
+#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2001 "y.tab.c" /* yacc.c:1646  */
+#line 2030 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 10:
-#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 11:
+#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 2011 "y.tab.c" /* yacc.c:1646  */
+#line 2040 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 11:
-#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 12:
+#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2021 "y.tab.c" /* yacc.c:1646  */
+#line 2050 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 12:
-#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 13:
+#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2031 "y.tab.c" /* yacc.c:1646  */
+#line 2060 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 13:
-#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 14:
+#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2041 "y.tab.c" /* yacc.c:1646  */
+#line 2070 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 14:
-#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 15:
+#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2051 "y.tab.c" /* yacc.c:1646  */
+#line 2080 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 15:
-#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 16:
+#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2061 "y.tab.c" /* yacc.c:1646  */
+#line 2090 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 16:
-#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 17:
+#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
                        }
-#line 2071 "y.tab.c" /* yacc.c:1646  */
+#line 2100 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 17:
-#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 18:
+#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2081 "y.tab.c" /* yacc.c:1646  */
+#line 2110 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 18:
-#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 19:
+#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2091 "y.tab.c" /* yacc.c:1646  */
+#line 2120 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 19:
-#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 20:
+#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
                        }
-#line 2101 "y.tab.c" /* yacc.c:1646  */
+#line 2130 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 20:
-#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 21:
+#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2111 "y.tab.c" /* yacc.c:1646  */
+#line 2140 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 21:
-#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 22:
+#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2121 "y.tab.c" /* yacc.c:1646  */
+#line 2150 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 22:
-#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 23:
+#line 534 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
                        }
-#line 2131 "y.tab.c" /* yacc.c:1646  */
+#line 2160 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 23:
-#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 24:
+#line 540 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2142 "y.tab.c" /* yacc.c:1646  */
+#line 2171 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 24:
-#line 535 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 25:
+#line 547 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2153 "y.tab.c" /* yacc.c:1646  */
+#line 2182 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 25:
-#line 542 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 26:
+#line 554 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2164 "y.tab.c" /* yacc.c:1646  */
+#line 2193 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 26:
-#line 549 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 27:
+#line 561 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2175 "y.tab.c" /* yacc.c:1646  */
+#line 2204 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 27:
-#line 556 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 28:
+#line 568 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2186 "y.tab.c" /* yacc.c:1646  */
+#line 2215 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 28:
-#line 563 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 29:
+#line 575 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2197 "y.tab.c" /* yacc.c:1646  */
+#line 2226 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 29:
-#line 570 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 30:
+#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2207 "y.tab.c" /* yacc.c:1646  */
+#line 2236 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 30:
-#line 576 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 31:
+#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2217 "y.tab.c" /* yacc.c:1646  */
+#line 2246 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 31:
-#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 32:
+#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
                        }
-#line 2227 "y.tab.c" /* yacc.c:1646  */
+#line 2256 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 32:
-#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 33:
+#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2237 "y.tab.c" /* yacc.c:1646  */
+#line 2266 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 33:
-#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 34:
+#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2247 "y.tab.c" /* yacc.c:1646  */
+#line 2276 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 34:
-#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 35:
+#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
                        }
-#line 2257 "y.tab.c" /* yacc.c:1646  */
+#line 2286 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 35:
-#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 36:
+#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2267 "y.tab.c" /* yacc.c:1646  */
+#line 2296 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 36:
-#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 37:
+#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2277 "y.tab.c" /* yacc.c:1646  */
+#line 2306 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 37:
-#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 38:
+#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
                        }
-#line 2287 "y.tab.c" /* yacc.c:1646  */
+#line 2316 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 38:
-#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 39:
+#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2297 "y.tab.c" /* yacc.c:1646  */
+#line 2326 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 39:
-#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 40:
+#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2307 "y.tab.c" /* yacc.c:1646  */
+#line 2336 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 40:
-#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 41:
+#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
                        }
-#line 2317 "y.tab.c" /* yacc.c:1646  */
+#line 2346 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 41:
-#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 42:
+#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2327 "y.tab.c" /* yacc.c:1646  */
+#line 2356 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 42:
-#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 43:
+#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2337 "y.tab.c" /* yacc.c:1646  */
+#line 2366 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 43:
-#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 44:
+#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
                        }
-#line 2347 "y.tab.c" /* yacc.c:1646  */
+#line 2376 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 44:
-#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 45:
+#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2357 "y.tab.c" /* yacc.c:1646  */
+#line 2386 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 45:
-#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 46:
+#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2367 "y.tab.c" /* yacc.c:1646  */
+#line 2396 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 46:
-#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 47:
+#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2377 "y.tab.c" /* yacc.c:1646  */
+#line 2406 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 47:
-#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 48:
+#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2387 "y.tab.c" /* yacc.c:1646  */
+#line 2416 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 48:
-#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 49:
+#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2397 "y.tab.c" /* yacc.c:1646  */
+#line 2426 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 49:
-#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 50:
+#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2407 "y.tab.c" /* yacc.c:1646  */
+#line 2436 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 50:
-#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 51:
+#line 708 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
                        }
-#line 2417 "y.tab.c" /* yacc.c:1646  */
+#line 2446 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 51:
-#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 52:
+#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
                        }
-#line 2427 "y.tab.c" /* yacc.c:1646  */
+#line 2456 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 52:
-#line 710 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 53:
+#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2433 "y.tab.c" /* yacc.c:1646  */
+#line 2462 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 53:
-#line 712 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 54:
+#line 724 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2439 "y.tab.c" /* yacc.c:1646  */
+#line 2468 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 54:
-#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 55:
+#line 726 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-#line 2445 "y.tab.c" /* yacc.c:1646  */
+#line 2474 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 55:
-#line 718 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 56:
+#line 730 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.redirect) = (yyvsp[0].redirect);
                        }
-#line 2453 "y.tab.c" /* yacc.c:1646  */
+#line 2482 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 56:
-#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 57:
+#line 734 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          register REDIRECT *t;
 
@@ -2462,346 +2491,368 @@ yyreduce:
                          t->next = (yyvsp[0].redirect);
                          (yyval.redirect) = (yyvsp[-1].redirect);
                        }
-#line 2466 "y.tab.c" /* yacc.c:1646  */
+#line 2495 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 57:
-#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 58:
+#line 745 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-#line 2472 "y.tab.c" /* yacc.c:1646  */
+#line 2501 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 58:
-#line 735 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 59:
+#line 747 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-#line 2478 "y.tab.c" /* yacc.c:1646  */
+#line 2507 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 59:
-#line 739 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 60:
+#line 751 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-#line 2484 "y.tab.c" /* yacc.c:1646  */
+#line 2513 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 60:
-#line 741 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 61:
+#line 753 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2490 "y.tab.c" /* yacc.c:1646  */
+#line 2519 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 61:
-#line 743 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 62:
+#line 755 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
                          tc = (yyvsp[-1].command);
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = (yyvsp[0].redirect);
                            }
-                         else
+                         else if (tc)
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2510 "y.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 62:
-#line 759 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = (yyvsp[0].command); }
-#line 2516 "y.tab.c" /* yacc.c:1646  */
+#line 2539 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 63:
-#line 761 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2522 "y.tab.c" /* yacc.c:1646  */
+#line 2545 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 64:
-#line 765 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2528 "y.tab.c" /* yacc.c:1646  */
+#line 2551 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 65:
-#line 767 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2534 "y.tab.c" /* yacc.c:1646  */
+#line 2557 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 66:
-#line 769 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2540 "y.tab.c" /* yacc.c:1646  */
+#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = (yyvsp[0].command); }
+#line 2563 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 67:
-#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2546 "y.tab.c" /* yacc.c:1646  */
+#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+#line 2569 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 68:
-#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = (yyvsp[0].command); }
-#line 2552 "y.tab.c" /* yacc.c:1646  */
+#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+#line 2575 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 69:
-#line 775 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2558 "y.tab.c" /* yacc.c:1646  */
+#line 2581 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 70:
-#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 787 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2564 "y.tab.c" /* yacc.c:1646  */
+#line 2587 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 71:
-#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2570 "y.tab.c" /* yacc.c:1646  */
+#line 2593 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 72:
-#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 791 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2576 "y.tab.c" /* yacc.c:1646  */
+#line 2599 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 73:
-#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 793 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2582 "y.tab.c" /* yacc.c:1646  */
+#line 2605 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 74:
-#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 795 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2588 "y.tab.c" /* yacc.c:1646  */
+#line 2611 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 75:
-#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    {
-                         (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-                       }
-#line 2597 "y.tab.c" /* yacc.c:1646  */
+#line 797 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = (yyvsp[0].command); }
+#line 2617 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 76:
-#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 801 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2606 "y.tab.c" /* yacc.c:1646  */
+#line 2626 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 77:
-#line 799 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 806 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+                         (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2615 "y.tab.c" /* yacc.c:1646  */
+#line 2635 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 78:
-#line 804 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 811 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2624 "y.tab.c" /* yacc.c:1646  */
+#line 2644 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 79:
-#line 809 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 816 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+                         (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2633 "y.tab.c" /* yacc.c:1646  */
+#line 2653 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 80:
-#line 814 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 821 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2642 "y.tab.c" /* yacc.c:1646  */
+#line 2662 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 81:
-#line 819 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 826 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+                         (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2651 "y.tab.c" /* yacc.c:1646  */
+#line 2671 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 82:
-#line 824 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2660 "y.tab.c" /* yacc.c:1646  */
+#line 2680 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 83:
-#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-                               }
-#line 2669 "y.tab.c" /* yacc.c:1646  */
+                         (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2689 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 843 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+                                 if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2678 "y.tab.c" /* yacc.c:1646  */
+#line 2699 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 841 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 849 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+                                 (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
+                                 if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2687 "y.tab.c" /* yacc.c:1646  */
+#line 2709 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 86:
-#line 846 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 855 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+                                 if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2696 "y.tab.c" /* yacc.c:1646  */
+#line 2719 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 853 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 861 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-                       }
-#line 2705 "y.tab.c" /* yacc.c:1646  */
+                                 (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
+                                 if ((yyval.command) == 0) YYERROR;
+                                 if (word_top > 0) word_top--;
+                               }
+#line 2729 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 858 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 869 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2714 "y.tab.c" /* yacc.c:1646  */
+#line 2738 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 863 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 874 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2723 "y.tab.c" /* yacc.c:1646  */
+#line 2747 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 879 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2732 "y.tab.c" /* yacc.c:1646  */
+#line 2756 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 884 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2741 "y.tab.c" /* yacc.c:1646  */
+#line 2765 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 889 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2750 "y.tab.c" /* yacc.c:1646  */
+#line 2774 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 885 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 894 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2759 "y.tab.c" /* yacc.c:1646  */
+#line 2783 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 890 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 899 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2768 "y.tab.c" /* yacc.c:1646  */
+#line 2792 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 895 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 904 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2777 "y.tab.c" /* yacc.c:1646  */
+#line 2801 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 902 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2783 "y.tab.c" /* yacc.c:1646  */
+#line 911 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2810 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 97:
-#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2789 "y.tab.c" /* yacc.c:1646  */
+#line 916 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2819 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 908 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2795 "y.tab.c" /* yacc.c:1646  */
+#line 921 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2828 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 912 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
-    { (yyval.command) = (yyvsp[0].command); }
-#line 2801 "y.tab.c" /* yacc.c:1646  */
+#line 928 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2834 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 914 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+#line 931 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2840 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 101:
+#line 934 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2846 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 102:
+#line 938 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = (yyvsp[0].command); }
+#line 2852 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 103:
+#line 940 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
@@ -2819,320 +2870,320 @@ yyreduce:
                             redirection.  The two are semantically equivalent,
                             though -- the only difference is in how the
                             command printing code displays the redirections. */
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = (yyvsp[0].redirect);
                            }
-                         else
+                         else if (tc)
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2834 "y.tab.c" /* yacc.c:1646  */
+#line 2885 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 101:
-#line 945 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 104:
+#line 971 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_subshell_command ((yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL;
                        }
-#line 2843 "y.tab.c" /* yacc.c:1646  */
+#line 2894 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 102:
-#line 952 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 105:
+#line 978 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2852 "y.tab.c" /* yacc.c:1646  */
+#line 2903 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 103:
-#line 957 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 106:
+#line 983 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
                          tc = (yyvsp[-1].command);
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = (yyvsp[0].redirect);
                            }
-                         else
+                         else if (tc)
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2873 "y.tab.c" /* yacc.c:1646  */
+#line 2924 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 104:
-#line 974 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 107:
+#line 1000 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2882 "y.tab.c" /* yacc.c:1646  */
+#line 2933 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 105:
-#line 979 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 108:
+#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
                          tc = (yyvsp[-1].command);
-                         if (tc->redirects)
+                         if (tc && tc->redirects)
                            {
                              register REDIRECT *t;
                              for (t = tc->redirects; t->next; t = t->next)
                                ;
                              t->next = (yyvsp[0].redirect);
                            }
-                         else
+                         else if (tc)
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2903 "y.tab.c" /* yacc.c:1646  */
+#line 2954 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 106:
-#line 996 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 109:
+#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2912 "y.tab.c" /* yacc.c:1646  */
+#line 2963 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 107:
-#line 1003 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 110:
+#line 1029 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-#line 2918 "y.tab.c" /* yacc.c:1646  */
+#line 2969 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 108:
-#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 111:
+#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2924 "y.tab.c" /* yacc.c:1646  */
+#line 2975 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 109:
-#line 1007 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 112:
+#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-#line 2930 "y.tab.c" /* yacc.c:1646  */
+#line 2981 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 110:
-#line 1012 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 113:
+#line 1038 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-#line 2936 "y.tab.c" /* yacc.c:1646  */
+#line 2987 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 111:
-#line 1016 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 114:
+#line 1042 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-#line 2942 "y.tab.c" /* yacc.c:1646  */
+#line 2993 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 112:
-#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 115:
+#line 1046 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[-1].command); }
-#line 2948 "y.tab.c" /* yacc.c:1646  */
+#line 2999 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 113:
-#line 1024 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 116:
+#line 1050 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-#line 2954 "y.tab.c" /* yacc.c:1646  */
+#line 3005 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 114:
-#line 1026 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 117:
+#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-#line 2960 "y.tab.c" /* yacc.c:1646  */
+#line 3011 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 115:
-#line 1028 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 118:
+#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-#line 2966 "y.tab.c" /* yacc.c:1646  */
+#line 3017 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 117:
-#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 120:
+#line 1059 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-#line 2972 "y.tab.c" /* yacc.c:1646  */
+#line 3023 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 118:
-#line 1037 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 121:
+#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 2978 "y.tab.c" /* yacc.c:1646  */
+#line 3029 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 119:
-#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 122:
+#line 1065 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 2984 "y.tab.c" /* yacc.c:1646  */
+#line 3035 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 120:
-#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 123:
+#line 1067 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 2990 "y.tab.c" /* yacc.c:1646  */
+#line 3041 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 121:
-#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 124:
+#line 1069 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 2996 "y.tab.c" /* yacc.c:1646  */
+#line 3047 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 122:
-#line 1047 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 125:
+#line 1073 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3002 "y.tab.c" /* yacc.c:1646  */
+#line 3053 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 123:
-#line 1049 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 126:
+#line 1075 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3008 "y.tab.c" /* yacc.c:1646  */
+#line 3059 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 124:
-#line 1051 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 127:
+#line 1077 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3014 "y.tab.c" /* yacc.c:1646  */
+#line 3065 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 125:
-#line 1053 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 128:
+#line 1079 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3020 "y.tab.c" /* yacc.c:1646  */
+#line 3071 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 126:
-#line 1055 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 129:
+#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3026 "y.tab.c" /* yacc.c:1646  */
+#line 3077 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 127:
-#line 1057 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 130:
+#line 1083 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3032 "y.tab.c" /* yacc.c:1646  */
+#line 3083 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 128:
-#line 1061 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 131:
+#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 3038 "y.tab.c" /* yacc.c:1646  */
+#line 3089 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 129:
-#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 132:
+#line 1089 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-#line 3044 "y.tab.c" /* yacc.c:1646  */
+#line 3095 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 130:
-#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 133:
+#line 1098 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc)
                            gather_here_documents ();
                         }
-#line 3054 "y.tab.c" /* yacc.c:1646  */
+#line 3105 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 132:
-#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 135:
+#line 1107 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3062 "y.tab.c" /* yacc.c:1646  */
+#line 3113 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 134:
-#line 1088 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 137:
+#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                        }
-#line 3073 "y.tab.c" /* yacc.c:1646  */
+#line 3124 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 136:
-#line 1099 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 139:
+#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3079 "y.tab.c" /* yacc.c:1646  */
+#line 3130 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 137:
-#line 1101 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 140:
+#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3085 "y.tab.c" /* yacc.c:1646  */
+#line 3136 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 138:
-#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 141:
+#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-3].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
                        }
-#line 3096 "y.tab.c" /* yacc.c:1646  */
+#line 3147 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 139:
-#line 1110 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 142:
+#line 1136 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3102 "y.tab.c" /* yacc.c:1646  */
+#line 3153 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 140:
-#line 1112 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 143:
+#line 1138 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3108 "y.tab.c" /* yacc.c:1646  */
+#line 3159 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 141:
-#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 144:
+#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3114 "y.tab.c" /* yacc.c:1646  */
+#line 3165 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 144:
-#line 1122 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 147:
+#line 1148 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = '\n'; }
-#line 3120 "y.tab.c" /* yacc.c:1646  */
+#line 3171 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 145:
-#line 1124 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 148:
+#line 1150 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = ';'; }
-#line 3126 "y.tab.c" /* yacc.c:1646  */
+#line 3177 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 146:
-#line 1126 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 149:
+#line 1152 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = yacc_EOF; }
-#line 3132 "y.tab.c" /* yacc.c:1646  */
+#line 3183 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 149:
-#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 152:
+#line 1166 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc)
@@ -3145,11 +3196,11 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3149 "y.tab.c" /* yacc.c:1646  */
+#line 3200 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 150:
-#line 1153 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 153:
+#line 1179 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-1].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&');
@@ -3165,11 +3216,11 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3169 "y.tab.c" /* yacc.c:1646  */
+#line 3220 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 151:
-#line 1169 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 154:
+#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[-1].command);
                          if (need_here_doc)
@@ -3182,72 +3233,72 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3186 "y.tab.c" /* yacc.c:1646  */
+#line 3237 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 152:
-#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 155:
+#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3192 "y.tab.c" /* yacc.c:1646  */
+#line 3243 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 153:
-#line 1186 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 156:
+#line 1212 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3198 "y.tab.c" /* yacc.c:1646  */
+#line 3249 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 154:
-#line 1188 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 157:
+#line 1214 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
                        }
-#line 3209 "y.tab.c" /* yacc.c:1646  */
+#line 3260 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 155:
-#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 158:
+#line 1221 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-#line 3215 "y.tab.c" /* yacc.c:1646  */
+#line 3266 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 156:
-#line 1198 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 159:
+#line 1224 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3221 "y.tab.c" /* yacc.c:1646  */
+#line 3272 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 157:
-#line 1202 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 160:
+#line 1228 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3227 "y.tab.c" /* yacc.c:1646  */
+#line 3278 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 158:
-#line 1204 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 161:
+#line 1230 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3237 "y.tab.c" /* yacc.c:1646  */
+#line 3288 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 159:
-#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 162:
+#line 1236 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags |= (yyvsp[-1].number);
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3247 "y.tab.c" /* yacc.c:1646  */
+#line 3298 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 160:
-#line 1216 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 163:
+#line 1242 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          ELEMENT x;
 
@@ -3265,12 +3316,13 @@ yyreduce:
                            token_to_read = '\n';
                          else if ((yyvsp[0].number) == ';')
                            token_to_read = ';';
+                         parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3270 "y.tab.c" /* yacc.c:1646  */
+#line 3322 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 161:
-#line 1235 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 164:
+#line 1262 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          ELEMENT x;
 
@@ -3289,18 +3341,19 @@ yyreduce:
                            token_to_read = '\n';
                          if ((yyvsp[0].number) == ';')
                            token_to_read = ';';
+                         parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3294 "y.tab.c" /* yacc.c:1646  */
+#line 3347 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 162:
-#line 1257 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 165:
+#line 1285 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-#line 3300 "y.tab.c" /* yacc.c:1646  */
+#line 3353 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 163:
-#line 1259 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 166:
+#line 1287 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
                          COMMAND *tc;
@@ -3323,35 +3376,35 @@ yyreduce:
 
                          (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
                        }
-#line 3327 "y.tab.c" /* yacc.c:1646  */
+#line 3380 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 164:
-#line 1282 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 167:
+#line 1310 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3333 "y.tab.c" /* yacc.c:1646  */
+#line 3386 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 165:
-#line 1286 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 168:
+#line 1314 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE; }
-#line 3339 "y.tab.c" /* yacc.c:1646  */
+#line 3392 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 166:
-#line 1288 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 169:
+#line 1316 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3345 "y.tab.c" /* yacc.c:1646  */
+#line 3398 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 167:
-#line 1290 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646  */
+  case 170:
+#line 1318 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3351 "y.tab.c" /* yacc.c:1646  */
+#line 3404 "y.tab.c" /* yacc.c:1648  */
     break;
 
 
-#line 3355 "y.tab.c" /* yacc.c:1646  */
+#line 3408 "y.tab.c" /* yacc.c:1648  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3579,7 +3632,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1292 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1906  */
+#line 1320 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1907  */
 
 
 /* Initial size to allocate for tokens, and the
@@ -3607,6 +3660,8 @@ debug_parser (i)
 {
 #if YYDEBUG != 0
   yydebug = i;
+  yyoutstream = stdout;
+  yyerrstream = stderr;
 #endif
 }
 #endif
@@ -3744,6 +3799,7 @@ yy_readline_get ()
          old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
        }
 
+      sh_unset_nodelay_mode (fileno (rl_instream));    /* just in case */
       current_readline_line = readline (current_readline_prompt ?
                                          current_readline_prompt : "");
 
@@ -3906,19 +3962,9 @@ yy_stream_get ()
   result = EOF;
   if (bash_input.location.file)
     {
-#if 0
-      if (interactive)
-       interrupt_immediately++;
-#endif
-
       /* XXX - don't need terminate_immediately; getc_with_restart checks
         for terminating signals itself if read returns < 0 */
       result = getc_with_restart (bash_input.location.file);
-
-#if 0
-      if (interactive)
-       interrupt_immediately--;
-#endif
     }
   return (result);
 }
@@ -4252,6 +4298,23 @@ parser_restore_alias ()
 #endif
 }
 
+#if defined (ALIAS)
+/* Before freeing AP, make sure that there aren't any cases of pointer
+   aliasing that could cause us to reference freed memory later on. */
+void
+clear_string_list_expander (ap)
+     alias_t *ap;
+{
+  register STRING_SAVER *t;
+
+  for (t = pushed_string_list; t; t = t->next)
+    {
+      if (t->expander && t->expander == ap)
+       t->expander = 0;
+    }
+}
+#endif
+
 void
 clear_shell_input_line ()
 {
@@ -4305,7 +4368,8 @@ read_a_line (remove_quoted_newline)
          c = '\n';
        }
 
-      /* `+2' in case the final character in the buffer is a newline. */
+      /* `+2' in case the final character in the buffer is a newline or we
+        have to handle CTLESC or CTLNUL. */
       RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128);
 
       /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a
@@ -4336,7 +4400,14 @@ read_a_line (remove_quoted_newline)
            }
        }
       else
-       line_buffer[indx++] = c;
+       {
+         /* remove_quoted_newline is non-zero if the here-document delimiter
+            is unquoted. In this case, we will be expanding the lines and
+            need to make sure CTLESC and CTLNUL in the input are quoted. */
+         if (remove_quoted_newline && (c == CTLESC || c == CTLNUL))
+           line_buffer[indx++] = CTLESC;
+         line_buffer[indx++] = c;
+       }
 
       if (c == '\n')
        {
@@ -4597,6 +4668,16 @@ shell_getc (remove_quoted_newline)
 #if 0
              internal_warning ("shell_getc: ignored null byte in input");
 #endif
+             /* If we get EOS while parsing a string, treat it as EOF so we
+                don't just keep looping. Happens very rarely */
+             if (bash_input.type == st_string)
+               {
+                 if (i == 0)
+                   shell_input_line_terminator = EOF;
+                 shell_input_line[i] = '\0';
+                 c = EOF;
+                 break;
+               }
              continue;
            }
 
@@ -4660,20 +4741,21 @@ shell_getc (remove_quoted_newline)
        {
          char *expansions;
 #  if defined (BANG_HISTORY)
-         int old_hist;
-
          /* If the current delimiter is a single quote, we should not be
             performing history expansion, even if we're on a different
             line from the original single quote. */
-         old_hist = history_expansion_inhibited;
          if (current_delimiter (dstack) == '\'')
-           history_expansion_inhibited = 1;
+           history_quoting_state = '\'';
+         else if (current_delimiter (dstack) == '"')
+           history_quoting_state = '"';
+         else
+           history_quoting_state = 0;
 #  endif
          /* Calling with a third argument of 1 allows remember_on_history to
             determine whether or not the line is saved to the history list */
          expansions = pre_process_line (shell_input_line, 1, 1);
 #  if defined (BANG_HISTORY)
-         history_expansion_inhibited = old_hist;
+         history_quoting_state = 0;
 #  endif
          if (expansions != shell_input_line)
            {
@@ -4775,7 +4857,34 @@ next_alias_char:
      parsing an alias, we have just saved one (push_string, when called by
      the parse_dparen code) In this case, just go on as well.  The PSH_SOURCE
      case is handled below. */
+
+  /* If we're at the end of an alias expansion add a space to make sure that
+     the alias remains marked as being in use while we expand its last word.
+     This makes sure that pop_string doesn't mark the alias as not in use
+     before the string resulting from the alias expansion is tokenized and
+     checked for alias expansion, preventing recursion.  At this point, the
+     last character in shell_input_line is the last character of the alias
+     expansion.  We test that last character to determine whether or not to
+     return the space that will delimit the token and postpone the pop_string.
+     This set of conditions duplicates what used to be in mk_alexpansion ()
+     below, with the addition that we don't add a space if we're currently
+     reading a quoted string or in a shell comment. */
+#ifndef OLD_ALIAS_HACK
+  if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE &&
+      pushed_string_list->flags != PSH_DPAREN &&
+      (parser_state & PST_COMMENT) == 0 &&
+      shell_input_line_index > 0 &&
+      shell_input_line[shell_input_line_index-1] != ' ' &&
+      shell_input_line[shell_input_line_index-1] != '\n' &&
+      shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
+      (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
+    {
+      return ' ';      /* END_ALIAS */
+    }
+#endif
+
 pop_alias:
+  /* This case works for PSH_DPAREN as well */
   if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
     {
       pop_string ();
@@ -4793,10 +4902,9 @@ pop_alias:
        /* What do we do here if we're expanding an alias whose definition
           includes an escaped newline?  If that's the last character in the
           alias expansion, we just pop the pushed string list (recall that
-          we inhibit the appending of a space in mk_alexpansion() if newline
-          is the last character).  If it's not the last character, we need
-          to consume the quoted newline and move to the next character in
-          the expansion. */
+          we inhibit the appending of a space if newline is the last
+          character).  If it's not the last character, we need to consume the
+          quoted newline and move to the next character in the expansion. */
 #if defined (ALIAS)
        if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0')
          {
@@ -4861,7 +4969,7 @@ parser_remaining_input ()
 {
   if (shell_input_line == 0)
     return 0;
-  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
+  if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
     return ""; /* XXX */
   return (shell_input_line + shell_input_line_index);
 }
@@ -4971,7 +5079,7 @@ yylex ()
       if (bash_input.type == st_string)
        rewind_input_string ();
     }
-  parser_state &= ~PST_EOFTOKEN;
+  parser_state &= ~PST_EOFTOKEN;       /* ??? */
 
   return (current_token);
 }
@@ -4980,6 +5088,10 @@ yylex ()
    which allow ESAC to be the next one read. */
 static int esacs_needed_count;
 
+/* When non-zero, we can read IN as an acceptable token, regardless of how
+   many newlines we read. */
+static int expecting_in_token;
+
 static void
 push_heredoc (r)
      REDIRECT *r;
@@ -5100,10 +5212,15 @@ mk_alexpansion (s)
   l = strlen (s);
   r = xmalloc (l + 2);
   strcpy (r, s);
+#ifdef OLD_ALIAS_HACK
   /* If the last character in the alias is a newline, don't add a trailing
      space to the expansion.  Works with shell_getc above. */
-  if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0)
+  /* Need to do something about the case where the alias expansion contains
+     an unmatched quoted string, since appending this space affects the
+     subsequent output. */
+  if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0)
     r[l++] = ' ';
+#endif
   r[l] = '\0';
   return r;
 }
@@ -5124,10 +5241,14 @@ alias_expand_token (tokstr)
       if (ap && (ap->flags & AL_BEINGEXPANDED))
        return (NO_EXPANSION);
 
+#ifdef OLD_ALIAS_HACK
       /* mk_alexpansion puts an extra space on the end of the alias expansion,
-         so the lookahead by the parser works right.  If this gets changed,
-         make sure the code in shell_getc that deals with reaching the end of
-         an expanded alias is changed with it. */
+        so the lookahead by the parser works right (the alias needs to remain
+        `in use' while parsing its last word to avoid alias recursion for
+        something like "alias echo=echo").  If this gets changed, make sure
+        the code in shell_getc that deals with reaching the end of an
+        expanded alias is changed with it. */
+#endif
       expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL;
 
       if (expanded)
@@ -5225,6 +5346,7 @@ static int
 special_case_tokens (tokstr)
      char *tokstr;
 {
+  /* Posix grammar rule 6 */
   if ((last_read_token == WORD) &&
 #if defined (SELECT_COMMAND)
       ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) &&
@@ -5238,9 +5360,34 @@ special_case_tokens (tokstr)
          parser_state |= PST_CASEPAT;
          esacs_needed_count++;
        }
+      if (expecting_in_token)
+       expecting_in_token--;
       return (IN);
     }
 
+  /* XXX - leaving above code intact for now, but it should eventually be
+     removed in favor of this clause. */
+  /* Posix grammar rule 6 */
+  if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') &&
+      (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0))
+    {
+      if (parser_state & PST_CASESTMT)
+       {
+         parser_state |= PST_CASEPAT;
+         esacs_needed_count++;
+       }
+      expecting_in_token--;
+      return (IN);
+    }
+  /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */
+  else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') &&
+    (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0'))
+    {
+      expecting_in_token--;
+      return (DO);
+    }
+
+  /* for i do; command-list; done */
   if (last_read_token == WORD &&
 #if defined (SELECT_COMMAND)
       (token_before_that == FOR || token_before_that == SELECT) &&
@@ -5248,7 +5395,11 @@ special_case_tokens (tokstr)
       (token_before_that == FOR) &&
 #endif
       (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0'))
-    return (DO);
+    {
+      if (expecting_in_token)
+       expecting_in_token--;
+      return (DO);
+    }
 
   /* Ditto for ESAC in the CASE case.
      Specifically, this handles "case word in esac", which is a legal
@@ -5258,9 +5409,9 @@ special_case_tokens (tokstr)
      the designers disagree. */
   if (esacs_needed_count)
     {
-      esacs_needed_count--;
-      if (STREQ (tokstr, "esac"))
+      if (last_read_token == IN && STREQ (tokstr, "esac"))
        {
+         esacs_needed_count--;
          parser_state &= ~PST_CASEPAT;
          return (ESAC);
        }
@@ -5351,6 +5502,13 @@ reset_parser ()
   token_to_read = '\n';
 }
 
+void
+reset_readahead_token ()
+{
+  if (token_to_read == '\n')
+    token_to_read = 0;
+}
+
 /* Read the next token.  Command can be READ (normal operation) or
    RESET (to normalize state). */
 static int
@@ -5412,11 +5570,24 @@ read_token (command)
       return (yacc_EOF);
     }
 
+  /* If we hit the end of the string and we're not expanding an alias (e.g.,
+     we are eval'ing a string that is an incomplete command), return EOF */
+  if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0)
+    {
+#if defined (DEBUG)
+itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string);
+#endif
+      EOF_Reached = 1;
+      return (yacc_EOF);
+    }
+
   if MBTEST(character == '#' && (!interactive || interactive_comments))
     {
       /* A comment.  Discard until EOL or EOF, and then return a newline. */
+      parser_state |= PST_COMMENT;
       discard_until ('\n');
       shell_getc (0);
+      parser_state &= ~PST_COMMENT;
       character = '\n';        /* this will take the next if statement and return. */
     }
 
@@ -5607,18 +5778,19 @@ tokword:
 #define P_DOLBRACE     0x0040  /* parsing a ${...} construct */
 
 /* Lexical state while parsing a grouping construct or $(...). */
-#define LEX_WASDOL     0x001
-#define LEX_CKCOMMENT  0x002
-#define LEX_INCOMMENT  0x004
-#define LEX_PASSNEXT   0x008
-#define LEX_RESWDOK    0x010
-#define LEX_CKCASE     0x020
-#define LEX_INCASE     0x040
-#define LEX_INHEREDOC  0x080
-#define LEX_HEREDELIM  0x100           /* reading here-doc delimiter */
-#define LEX_STRIPDOC   0x200           /* <<- strip tabs from here doc delim */
-#define LEX_QUOTEDDOC  0x400           /* here doc with quoted delim */
-#define LEX_INWORD     0x800
+#define LEX_WASDOL     0x0001
+#define LEX_CKCOMMENT  0x0002
+#define LEX_INCOMMENT  0x0004
+#define LEX_PASSNEXT   0x0008
+#define LEX_RESWDOK    0x0010
+#define LEX_CKCASE     0x0020
+#define LEX_INCASE     0x0040
+#define LEX_INHEREDOC  0x0080
+#define LEX_HEREDELIM  0x0100          /* reading here-doc delimiter */
+#define LEX_STRIPDOC   0x0200          /* <<- strip tabs from here doc delim */
+#define LEX_QUOTEDDOC  0x0400          /* here doc with quoted delim */
+#define LEX_INWORD     0x0800
+#define LEX_GTLT       0x1000
 
 #define COMSUB_META(ch)                ((ch) == ';' || (ch) == '&' || (ch) == '|')
 
@@ -5649,7 +5821,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
      int open, close;
      int *lenp, flags;
 {
-  int count, ch, tflags;
+  int count, ch, prevch, tflags;
   int nestlen, ttranslen, start_lineno;
   char *ret, *nestret, *ttrans;
   int retind, retsize, rflags;
@@ -5671,8 +5843,10 @@ parse_matched_pair (qc, open, close, lenp, flags)
   retind = 0;
 
   start_lineno = line_number;
+  ch = EOF;            /* just in case */
   while (count)
     {
+      prevch = ch;
       ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0);
 
       if (ch == EOF)
@@ -5823,7 +5997,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
                {
                  /* Translate $'...' here. */
                  ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
-                 xfree (nestret);
+                 free (nestret);
 
                  /* If we're parsing a double-quoted brace expansion and we are
                     not in a place where single quotes are treated specially,
@@ -5853,7 +6027,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
                {
                  /* Locale expand $"..." here. */
                  ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
-                 xfree (nestret);
+                 free (nestret);
 
                  nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
                  free (ttrans);
@@ -5866,6 +6040,12 @@ parse_matched_pair (qc, open, close, lenp, flags)
            }
          else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
            goto parse_dollar_word;
+#if defined (PROCESS_SUBSTITUTION)
+         /* XXX - technically this should only be recognized at the start of
+            a word */
+         else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '('))     /* ) */
+           goto parse_dollar_word;
+#endif
        }
       /* Parse an old-style command substitution within double quotes as a
         single word. */
@@ -5897,7 +6077,13 @@ parse_dollar_word:
 
          FREE (nestret);
        }
-      if MBTEST(ch == '$')
+#if defined (PROCESS_SUBSTITUTION)
+      if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0)
+       tflags |= LEX_GTLT;
+      else
+       tflags &= ~LEX_GTLT;
+#endif
+      if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
        tflags |= LEX_WASDOL;
       else
        tflags &= ~LEX_WASDOL;
@@ -6029,7 +6215,7 @@ parse_comsub (qc, open, close, lenp, flags)
   while (count)
     {
 comsub_readchar:
-      ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0);
+      ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0);
 
       if (ch == EOF)
        {
@@ -6060,7 +6246,7 @@ eof_error:
              tind = lex_firstind;
              while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
                tind++;
-             if (STREQN (ret + tind, heredelim, hdlen))
+             if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
                {
                  tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
 /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/
@@ -6301,11 +6487,13 @@ eof_error:
                  tflags |= LEX_RESWDOK;
                  lex_rwlen = 0;
                }
-              else
+              else if (shellmeta (ch) == 0)
                {
                  tflags &= ~LEX_RESWDOK;
 /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
                }
+             else      /* can't be in a reserved word any more */
+               lex_rwlen = 0;
            }
          else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
            ;   /* don't modify LEX_RESWDOK if we're starting a comment */
@@ -6378,7 +6566,10 @@ eof_error:
              continue;
            }
          else
-           ch = peekc;         /* fall through and continue XXX */
+           {
+             shell_ungetc (peekc);     /* not a here-doc, start over */
+             continue;
+           }
        }
       else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
        {
@@ -6434,7 +6625,7 @@ eof_error:
            {
              /* Translate $'...' here. */
              ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
-             xfree (nestret);
+             free (nestret);
 
              if ((rflags & P_DQUOTE) == 0)
                {
@@ -6453,7 +6644,7 @@ eof_error:
            {
              /* Locale expand $"..." here. */
              ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
-             xfree (nestret);
+             free (nestret);
 
              nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
              free (ttrans);
@@ -6481,7 +6672,7 @@ eof_error:
 
          FREE (nestret);
        }
-      if MBTEST(ch == '$')
+      if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
        tflags |= LEX_WASDOL;
       else
        tflags &= ~LEX_WASDOL;
@@ -6506,12 +6697,25 @@ xparse_dolparen (base, string, indp, flags)
   sh_parser_state_t ps;
   sh_input_line_state_t ls;
   int orig_ind, nc, sflags, orig_eof_token;
-  char *ret, *s, *ep, *ostring;
+  char *ret, *ep, *ostring;
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  STRING_SAVER *saved_pushed_strings;
+#endif
 
-  /*yydebug = 1;*/
+/*debug_parser(1);*/
   orig_ind = *indp;
   ostring = string;
 
+  if (*string == 0)
+    {
+      if (flags & SX_NOALLOC) 
+       return (char *)NULL;
+
+      ret = xmalloc (1);
+      ret[0] = '\0';
+      return ret;
+    }
+
 /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
   sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
   if (flags & SX_NOLONGJMP)
@@ -6519,29 +6723,47 @@ xparse_dolparen (base, string, indp, flags)
   save_parser_state (&ps);
   save_input_line_state (&ls);
   orig_eof_token = shell_eof_token;
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  saved_pushed_strings = pushed_string_list;   /* separate parsing context */
+  pushed_string_list = (STRING_SAVER *)NULL;
+#endif
 
   /*(*/
   parser_state |= PST_CMDSUBST|PST_EOFTOKEN;   /* allow instant ')' */ /*(*/
   shell_eof_token = ')';
 
+  /* Should we save and restore the bison/yacc lookahead token (yychar) here?
+     Or only if it's not YYEMPTY? */
+
   nc = parse_string (string, "command substitution", sflags, &ep);
 
+  if (current_token == shell_eof_token)
+    yyclearin;         /* might want to clear lookahead token unconditionally */
+
   shell_eof_token = orig_eof_token;
   restore_parser_state (&ps);
   reset_parser ();
   /* reset_parser clears shell_input_line and associated variables */
   restore_input_line_state (&ls);
 
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+  pushed_string_list = saved_pushed_strings;
+#endif
+
   token_to_read = 0;
 
   /* If parse_string returns < 0, we need to jump to top level with the
-     negative of the return value */
+     negative of the return value. We abandon the rest of this input line
+     first */
   if (nc < 0)
-    jump_to_top_level (-nc);   /* XXX */
+    {
+      clear_shell_input_line ();       /* XXX */
+      jump_to_top_level (-nc); /* XXX */
+    }
 
   /* Need to find how many characters parse_and_execute consumed, update
      *indp, if flags != 0, copy the portion of the string parsed into RET
-     and return it.  If flags & 1 (EX_NOALLOC) we can return NULL. */
+     and return it.  If flags & 1 (SX_NOALLOC) we can return NULL. */
 
   /*(*/
   if (ep[-1] != ')')
@@ -6560,6 +6782,8 @@ xparse_dolparen (base, string, indp, flags)
 #if DEBUG
   if (base[*indp] != ')')
     itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
+  if (*indp < orig_ind)
+    itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
 #endif
 
   if (flags & SX_NOALLOC) 
@@ -6803,7 +7027,7 @@ cond_term ()
       if (term)
        term->flags |= CMD_INVERT_RETURN;
     }
-  else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+  else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
     {
       op = yylval.word;
       tok = read_token (READ);
@@ -6936,20 +7160,30 @@ parse_cond_command ()
 
 #if defined (ARRAY_VARS)
 /* When this is called, it's guaranteed that we don't care about anything
-   in t beyond i.  We do save and restore the chars, though. */
+   in t beyond i.  We use a buffer with room for the characters we add just
+   in case assignment() ends up doing something like parsing a command
+   substitution that will reallocate atoken.  We don't want to write beyond
+   the end of an allocated buffer. */
 static int
 token_is_assignment (t, i)
      char *t;
      int i;
 {
-  unsigned char c, c1;
   int r;
+  char *atoken;
 
-  c = t[i]; c1 = t[i+1];
-  t[i] = '='; t[i+1] = '\0';
-  r = assignment (t, (parser_state & PST_COMPASSIGN) != 0);
-  t[i] = c; t[i+1] = c1;
-  return r;
+  atoken = xmalloc (i + 3);
+  memcpy (atoken, t, i);
+  atoken[i] = '=';
+  atoken[i+1] = '\0';
+
+  r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0);
+
+  free (atoken);
+
+  /* XXX - check that r == i to avoid returning false positive for
+     t containing `=' before t[i]. */
+  return (r > 0 && r == i);
 }
 
 /* XXX - possible changes here for `+=' */
@@ -7064,7 +7298,8 @@ read_token_word (character)
          strcpy (token + token_index, ttok);
          token_index += ttoklen;
          all_digit_token = 0;
-         quoted = 1;
+         if (character != '`')
+           quoted = 1;
          dollar_present |= (character == '"' && strchr (ttok, '$') != 0);
          FREE (ttok);
          goto next_character;
@@ -7404,6 +7639,7 @@ got_token:
 
   yylval.word = the_word;
 
+  /* should we check that quoted == 0 as well? */
   if (token[0] == '{' && token[token_index-1] == '}' &&
       (character == '<' || character == '>'))
     {
@@ -7416,9 +7652,15 @@ got_token:
 #endif
        {
          strcpy (the_word->word, token+1);
-/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/
+/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */
+         yylval.word = the_word;       /* accommodate recursive call */
          return (REDIR_WORD);
        }
+      else
+        /* valid_array_reference can call the parser recursively; need to
+          make sure that yylval.word doesn't change if we are going to
+          return WORD or ASSIGNMENT_WORD */
+        yylval.word = the_word;
     }
 
   result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT))
@@ -7436,6 +7678,7 @@ got_token:
       if (word_top < MAX_CASE_NEST)
        word_top++;
       word_lineno[word_top] = line_number;
+      expecting_in_token++;
       break;
     }
 
@@ -7639,6 +7882,9 @@ history_delimiting_chars (line)
        return (" ");
     }
 
+  if (line_isblank (line))
+    return ("");
+
   return ("; ");
 }
 #endif /* HISTORY */
@@ -7709,6 +7955,31 @@ print_prompt ()
   fflush (stderr);
 }
 
+#if defined (HISTORY)
+  /* The history library increments the history offset as soon as it stores
+     the first line of a potentially multi-line command, so we compensate
+     here by returning one fewer when appropriate. */
+static int
+prompt_history_number (pmt)
+     char *pmt;
+{
+  int ret;
+
+  ret = history_number ();
+  if (ret == 1)
+    return ret;
+
+  if (pmt == ps1_prompt)       /* are we expanding $PS1? */
+    return ret;
+  else if (pmt == ps2_prompt && command_oriented_history == 0)
+    return ret;                        /* not command oriented history */
+  else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved)
+    return ret - 1;
+  else
+    return ret - 1;            /* PS0, PS4, ${var@P}, PS2 other cases */
+}
+#endif
+
 /* Return a string which will be printed as a prompt.  The string
    may contain special characters which are decoded as follows:
 
@@ -7746,7 +8017,7 @@ decode_prompt_string (string)
      char *string;
 {
   WORD_LIST *list;
-  char *result, *t;
+  char *result, *t, *orig_string;
   struct dstack save_dstack;
   int last_exit_value, last_comsub_pid;
 #if defined (PROMPT_STRING_DECODE)
@@ -7762,6 +8033,7 @@ decode_prompt_string (string)
   result = (char *)xmalloc (result_size = PROMPT_GROWTH);
   result[result_index = 0] = 0;
   temp = (char *)NULL;
+  orig_string = string;
 
   while (c = *string++)
     {
@@ -7777,7 +8049,7 @@ decode_prompt_string (string)
 #if !defined (HISTORY)
                temp = savestring ("1");
 #else /* HISTORY */
-               temp = itos (history_number ());
+               temp = itos (prompt_history_number (orig_string));
 #endif /* HISTORY */
                string--;       /* add_string increments string again. */
                goto add_string;
@@ -8009,14 +8281,19 @@ decode_prompt_string (string)
              goto add_string;
 
            case '#':
-             temp = itos (current_command_number);
+             n = current_command_number;
+             /* If we have already incremented current_command_number (PS4,
+                ${var@P}), compensate */
+             if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt)
+               n--;
+             temp = itos (n);
              goto add_string;
 
            case '!':
 #if !defined (HISTORY)
              temp = savestring ("1");
 #else /* HISTORY */
-             temp = itos (history_number ());
+             temp = itos (prompt_history_number (orig_string));
 #endif /* HISTORY */
              goto add_string;
 
@@ -8593,8 +8870,6 @@ sh_parser_state_t *
 save_parser_state (ps)
      sh_parser_state_t *ps;
 {
-  int i;
-
   if (ps == 0)
     ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t));
   if (ps == 0)
@@ -8630,15 +8905,10 @@ save_parser_state (ps)
   ps->need_here_doc = need_here_doc;
   ps->here_doc_first_line = here_doc_first_line;
 
-#if 0
-  for (i = 0; i < HEREDOC_MAX; i++)
-    ps->redir_stack[i] = redir_stack[i];
-#else
   if (need_here_doc == 0)
     ps->redir_stack[0] = 0;
   else
     memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
-#endif
 
   ps->token = token;
   ps->token_buffer_size = token_buffer_size;
@@ -8748,6 +9018,10 @@ restore_input_line_state (ls)
  ************************************************/
 
 #if defined (HANDLE_MULTIBYTE)
+
+/* We don't let the property buffer get larger than this unless the line is */
+#define MAX_PROPSIZE 32768
+
 static void
 set_line_mbstate ()
 {
@@ -8759,8 +9033,22 @@ set_line_mbstate ()
   if (shell_input_line == NULL)
     return;
   len = strlen (shell_input_line);     /* XXX - shell_input_line_len ? */
-  shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1);
+  if (len == 0)
+    return;
+  if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1)
+    {
+      free (shell_input_line_property);
+      shell_input_line_property = 0;
+      shell_input_line_propsize = 0;
+    }
+  if (len+1 > shell_input_line_propsize)
+    {
+      shell_input_line_propsize = len + 1;
+      shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize);
+    }
 
+  /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to
+     mbrlen */
   memset (&prevs, '\0', sizeof (mbstate_t));
   for (i = previ = 0; i < len; i++)
     {
@@ -8775,6 +9063,9 @@ set_line_mbstate ()
          break;
        }
 
+      /* I'd love to take more advantage of UTF-8's properties in a UTF-8
+         locale, but mbrlen changes the mbstate_t on every call even when
+         presented with single-byte characters. */
       mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
       if (mbclen == 1 || mbclen == (size_t)-1)
        {
diff --git a/y.tab.h b/y.tab.h
index b367eb20566ee2b37b1d21e27754e09e51b941ca..86c8e505dfbfdb2f79193db2b977d06b7ece2461 100644 (file)
--- a/y.tab.h
+++ b/y.tab.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.4.  */
+/* A Bison parser, made by GNU Bison 3.0.5.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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
@@ -148,7 +148,7 @@ extern int yydebug;
 
 union YYSTYPE
 {
-#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909  */
+#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910  */
 
   WORD_DESC *word;             /* the word that we read. */
   int number;                  /* the number that we read. */
@@ -158,7 +158,7 @@ union YYSTYPE
   ELEMENT element;
   PATTERN_LIST *pattern;
 
-#line 162 "y.tab.h" /* yacc.c:1909  */
+#line 162 "y.tab.h" /* yacc.c:1910  */
 };
 
 typedef union YYSTYPE YYSTYPE;